:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}#root{width:100%;margin:0 auto}.container{padding:20px 10px;background-color:#f8fafc;min-height:100vh;font-family:Pretendard,-apple-system,BlinkMacSystemFont,system-ui,Roboto,sans-serif}.quotation-card{max-width:1000px;background:#fff;padding:30px 20px;border-radius:16px;box-shadow:0 10px 30px #0000000d}@media(min-width:768px){.container{padding:40px 20px}.quotation-card{padding:50px}}.main-layout{display:flex;flex-direction:column;gap:30px;max-width:1600px;margin:0 auto;align-items:flex-start;width:100%}@media(min-width:1024px){.main-layout{flex-direction:row}.quotation-card{flex:1;min-width:0}}.dashboard-container{width:100%}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;gap:20px;flex-wrap:wrap}.header-left{display:flex;align-items:center;gap:30px;flex-wrap:wrap}.dashboard-tabs{display:flex;background:#f1f5f9;padding:4px;border-radius:8px;gap:4px}.dashboard-tabs button{padding:8px 16px;border:none;background:transparent;color:#64748b;font-weight:700;font-size:14px;cursor:pointer;border-radius:6px;transition:all .2s}.dashboard-tabs button.active{background:#fff;color:#3b82f6;box-shadow:0 2px 4px #0000000d}.calendar-card{background:#fff;border-radius:16px;padding:24px;box-shadow:0 4px 20px #0000000d;overflow-x:auto}.calendar-header{display:flex;justify-content:center;align-items:center;gap:30px;margin-bottom:25px}.calendar-header h2{margin:0;font-size:1.5rem;color:#1e293b;white-space:nowrap}.calendar-header button{background:#f1f5f9;border:none;width:36px;height:36px;border-radius:50%;cursor:pointer;font-weight:700}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#e2e8f0;border:1px solid #e2e8f0;min-width:700px}.calendar-day-label{background:#f8fafc;padding:10px;text-align:center;font-weight:800;font-size:12px;color:#64748b}.calendar-day{background:#fff;min-height:100px;padding:8px;display:flex;flex-direction:column;gap:5px}.calendar-day.empty{background:#fcfcfd}.day-number{font-size:12px;font-weight:700;color:#94a3b8}.day-events{display:flex;flex-direction:column;gap:2px}.calendar-event-group{display:flex;flex-direction:column;gap:1px;border-bottom:1px solid #f1f5f9;padding-bottom:2px}.event{font-size:10px;padding:2px 4px;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700}.event.measure{background:#dbeafe;color:#1e40af}.event.install{background:#fef9c3;color:#854d0e}.event.invoice{background:#dcfce7;color:#166534}.event.payment{background:#fee2e2;color:#991b1b}.btn-add-project{padding:10px 20px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-weight:700;cursor:pointer;transition:all .2s}.btn-add-project:hover{background:#2563eb;transform:translateY(-2px)}.invoice-container{background:#fff;border-radius:16px;padding:24px;box-shadow:0 4px 20px #0000000d}.invoice-filter-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;background:#f8fafc;padding:15px 20px;border-radius:12px;gap:20px;flex-wrap:wrap}.filter-group{display:flex;gap:8px}.filter-group button{padding:6px 14px;border:1px solid #e2e8f0;background:#fff;border-radius:20px;font-size:13px;font-weight:600;color:#64748b;cursor:pointer;transition:all .2s}.filter-group button.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.invoice-summary{font-size:14px;font-weight:700;color:#475569}.invoice-summary .highlight{color:#ef4444;font-size:1.1rem;margin-left:5px}.invoice-list-table{overflow-x:auto}.invoice-list-table table{width:100%;border-collapse:collapse}.invoice-list-table th{text-align:left;padding:12px 15px;background:#f1f5f9;font-size:13px;color:#475569;border-bottom:2px solid #e2e8f0}.invoice-list-table td{padding:15px;border-bottom:1px solid #f1f5f9;font-size:14px;color:#1e293b}.invoice-list-table tr:hover{background:#fcfcfd}.invoice-list-table td.bold{font-weight:700}.invoice-list-table td.right{text-align:right;font-family:monospace;font-weight:600}.invoice-badge{padding:4px 8px;font-size:12px;font-weight:700;border-radius:4px;border:none}.invoice-badge.대기{background:#f1f5f9;color:#64748b}.invoice-badge.요청{background:#dbeafe;color:#1e40af}.invoice-badge.완료{background:#dcfce7;color:#166534}.project-grid{display:flex;flex-direction:column;gap:20px}.biz-info-section{margin-top:20px;padding-top:20px;border-top:1px dashed #e2e8f0}.biz-info-section .section-title{font-size:.85rem;font-weight:800;color:#1e40af;margin-bottom:15px;display:flex;align-items:center;gap:8px}.biz-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:15px}.biz-info-grid input{padding:8px 12px;font-size:.85rem;background:#f8fafc;border:1px solid #e2e8f0}.biz-info-grid .full-width{grid-column:1 / -1}.btn-excel-export-list{padding:10px 20px;background:#10b981;color:#fff;border:none;border-radius:8px;font-weight:700;font-size:14px;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:8px;white-space:nowrap}.btn-excel-export-list:hover{background:#059669;transform:translateY(-1px)}.project-card{background:#fff;border-radius:16px;padding:24px;box-shadow:0 4px 20px #0000000d;border-left:6px solid #e2e8f0;transition:all .2s}.project-card:hover{border-left-color:#3b82f6;box-shadow:0 8px 30px #00000014}.project-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.project-title h3{margin:0;padding:0;border:none;font-size:1.3rem;color:#1e293b}.project-title h3:before{display:none}.customer-input{border:none;background:#f1f5f9;padding:4px 8px;font-size:.9rem;border-radius:4px;margin-top:5px;width:auto;min-width:200px}.btn-delete-project{background:#fee2e2;color:#ef4444;border:none;width:28px;height:28px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px}.status-timeline{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;background:#f8fafc;padding:20px;border-radius:12px;margin-bottom:20px}.status-node{display:flex;flex-direction:column;gap:8px}.node-label{font-size:.8rem;font-weight:800;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.status-select{padding:6px 10px;font-size:.85rem;font-weight:700;border-radius:6px;border:1px solid transparent}.status-select.대기{background:#f1f5f9;color:#64748b}.status-select.진행중{background:#fef9c3;color:#854d0e}.status-select.완료{background:#dcfce7;color:#166534}.status-select.요청{background:#dbeafe;color:#1e40af}.status-select.일부수금{background:#ffedd5;color:#9a3412}.status-select.미수금{background:#fee2e2;color:#991b1b}.status-node input[type=date]{padding:4px 8px;font-size:.8rem;border:1px solid #e2e8f0}.project-info-row{display:flex;gap:20px;align-items:center}.amount-field{display:flex;align-items:center;gap:10px;font-weight:700;color:#334155;white-space:nowrap}.amount-field input{width:140px;font-weight:800;color:#1e3a8a;text-align:right;padding:6px 10px}.project-notes{flex:1;background:#fff;border:1px solid #e2e8f0;padding:8px 12px;font-size:.9rem;min-height:40px}.empty-state{text-align:center;padding:100px 20px;background:#fff;border-radius:16px;color:#94a3b8;border:2px dashed #e2e8f0}.extra-items-section{margin-top:20px;background:#f1f5f9;padding:15px;border-radius:10px}.section-label{display:block;font-size:14px;font-weight:700;color:#475569;margin-bottom:10px}.extra-item-row{display:flex;gap:10px;margin-bottom:8px;align-items:center}.extra-item-inputs{flex:1;display:flex;gap:0;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;background:#fff}.extra-title{flex:0 0 130px!important;border:none!important;border-right:1px solid #e2e8f0!important;border-radius:0!important;background:#f8fafc!important;font-weight:600;font-size:14px!important}.extra-desc{flex:1!important;border:none!important;border-radius:0!important;font-size:14px!important}.extra-item-row .btn-remove-extra{margin-left:5px}.btn-remove-extra{background:#fee2e2;color:#ef4444;border:none;width:28px;height:28px;border-radius:6px;cursor:pointer}.btn-add-extra{margin-top:5px;background:#fff;border:1px dashed #cbd5e1;padding:8px;width:100%;border-radius:6px;cursor:pointer;font-size:13px;color:#64748b;font-weight:600}.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f8fafc,#e2e8f0);padding:20px}.auth-card{background:#fff;padding:40px;border-radius:20px;box-shadow:0 20px 40px #0000001a;width:100%;max-width:400px}.auth-header{text-align:center;margin-bottom:30px}.auth-header h2{color:#1e3a8a;margin-bottom:8px;font-weight:900}.auth-header p{color:#64748b;font-size:14px}.auth-group{margin-bottom:20px}.auth-group label{display:block;margin-bottom:8px;font-size:14px;font-weight:600;color:#475569}.btn-auth{width:100%;padding:14px;background:#3b82f6;color:#fff;border:none;border-radius:10px;font-weight:700;cursor:pointer;transition:all .2s}.btn-auth:hover{background:#2563eb}.auth-footer{text-align:center;margin-top:20px;font-size:14px;color:#64748b}.auth-footer span{color:#3b82f6;font-weight:700;cursor:pointer;margin-left:5px;text-decoration:underline}.main-header{max-width:1600px;margin:0 auto 20px;display:flex;justify-content:flex-end;padding:0 10px}.user-info{font-size:14px;color:#475569;display:flex;align-items:center;gap:15px}.user-info button{padding:6px 12px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;font-size:12px;cursor:pointer}.main-nav{display:flex;justify-content:center;gap:10px;margin-bottom:20px;max-width:1600px;margin-left:auto;margin-right:auto}.main-nav button{padding:12px 24px;border:none;border-radius:10px;background:#fff;color:#64748b;font-weight:700;cursor:pointer;transition:all .2s;box-shadow:0 4px 6px #0000000d}.main-nav button.active{background:#3b82f6;color:#fff;box-shadow:0 4px 12px #3b82f64d}h1{color:#1e293b;margin-bottom:30px;text-align:center;font-weight:800;font-size:1.8rem}h3{color:#334155;padding-bottom:12px;margin-top:30px;font-weight:700;display:flex;align-items:center;font-size:1.1rem;border-bottom:1px solid #edf2f7}h3:before{content:"";display:inline-block;width:4px;height:18px;background:#3b82f6;margin-right:10px;border-radius:2px}.form-section .grid{display:grid;grid-template-columns:1fr;gap:15px;margin-top:20px}@media(min-width:640px){.form-section .grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.form-section .grid{grid-template-columns:repeat(3,1fr)}}input,textarea,select{width:100%;padding:12px 16px;border:1px solid #e2e8f0;border-radius:10px;font-size:16px;color:#1e293b;background:#fcfcfd;box-sizing:border-box}input:focus,textarea:focus{outline:none;border-color:#3b82f6;background:#fff;box-shadow:0 0 0 4px #3b82f61a}.remarks-input{width:100%;resize:vertical;margin-top:15px;line-height:1.6}.items-section{overflow-x:auto;margin-top:20px}.items-section table{width:100%;min-width:850px;border-collapse:separate;border-spacing:0;border-radius:12px;overflow:hidden;border:1px solid #e2e8f0}.items-section th{background:#f1f5f9;padding:14px;text-align:left;font-size:13px;color:#475569;font-weight:600}.items-section td{padding:8px;border-bottom:1px solid #f1f5f9;color:#1e293b}.items-section input{border:none;background:transparent;padding:8px;width:100%}.btn-add{margin-top:15px;background:#f0f7ff;color:#2563eb;border:2px dashed #bfdbfe;padding:12px;width:100%;border-radius:10px;cursor:pointer;font-weight:700}.door-input-box{background:#fcfcfd;border:1px solid #e2e8f0;border-radius:12px;padding:20px;margin-top:20px}.door-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;border-bottom:1px solid #edf2f7;padding-bottom:10px}.door-header h4{margin:0;color:#1e3a8a}.btn-remove-door{padding:4px 10px;background:#fee2e2;color:#ef4444;border:none;border-radius:6px;font-size:12px;cursor:pointer}.btn-add-door{margin-top:15px;background:#f0f7ff;color:#2563eb;border:1px solid #bfdbfe;padding:10px;width:100%;border-radius:8px;cursor:pointer;font-weight:700}.door-photo-section{margin-top:20px;padding-top:15px;border-top:1px dashed #e2e8f0}.door-photo-section label{display:block;font-size:13px;font-weight:600;color:#64748b;margin-bottom:10px}.option-input-row{display:flex;gap:10px;margin-top:10px;align-items:center}.option-input-row select{width:150px}.option-input-row input{flex:1}.option-input-row button{background:#fee2e2;color:#ef4444;border:none;width:32px;height:32px;border-radius:8px;cursor:pointer}.btn-add-option{margin-top:10px;background:#f8fafc;border:1px solid #e2e8f0;padding:8px;width:100%;border-radius:8px;cursor:pointer;font-size:13px;color:#64748b}.summary-section{margin-top:30px;padding:20px;background:#f8fafc;border-radius:16px;text-align:right}.summary-section .total{font-size:24px;font-weight:900;color:#0f172a}.btn-group-main{display:grid;grid-template-columns:1fr;gap:15px;margin-top:30px}@media(min-width:640px){.btn-group-main{grid-template-columns:repeat(2,1fr)}}.btn-save,.btn-print{padding:16px;border:none;border-radius:14px;font-weight:800;cursor:pointer;color:#fff;transition:all .2s}.btn-save{background:linear-gradient(135deg,#10b981,#059669)}.btn-print{background:linear-gradient(135deg,#2563eb,#1d4ed8)}.btn-save:hover,.btn-print:hover{transform:translateY(-2px);filter:brightness(1.1)}.saved-list-panel{background:#fff;padding:25px;border-radius:16px;box-shadow:0 10px 30px #0000000d;width:100%;max-width:340px;box-sizing:border-box;align-self:flex-start}@media(max-width:1199px){.saved-list-panel{max-width:100%;margin-top:20px}}.saved-list-panel h3{margin-top:0;margin-bottom:20px;font-size:1.1rem;border-bottom:2px solid #f1f5f9;padding-bottom:10px}.saved-items{display:flex;flex-direction:column;gap:10px;max-height:80vh;overflow-y:auto}.saved-item{display:flex;align-items:center;justify-content:space-between;padding:12px;background:#f8fafc;border-radius:10px;border:1px solid #e2e8f0;transition:all .2s}.saved-item:hover{border-color:#3b82f6;background:#f0f7ff;transform:translate(-4px)}.item-info{flex:1;cursor:pointer}.item-name{font-weight:700;color:#1e293b;font-size:14px}.item-date{font-size:11px;color:#64748b}.btn-item-delete{background:#fee2e2;color:#ef4444;border:none;width:24px;height:24px;border-radius:6px;cursor:pointer;font-size:14px;opacity:.6}.btn-item-delete:hover{opacity:1;background:#ef4444;color:#fff}.photo-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px;margin-top:15px}.photo-preview{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;border:1px solid #e2e8f0}.photo-preview img{width:100%;height:100%;object-fit:cover}.photo-preview button{position:absolute;top:2px;right:2px;background:#ef4444cc;color:#fff;border:none;width:20px;height:20px;border-radius:50%;cursor:pointer;font-size:12px}.print-tip{margin-top:12px;text-align:center;color:#64748b;font-size:12px;line-height:1.5;word-break:keep-all}.print-tip strong{color:#3b82f6}.print-only{display:none}@media print{body *{visibility:hidden}.print-only,.print-only *{visibility:visible}.print-only{position:absolute;left:0;top:0;width:100%;display:block!important}.no-print{display:none!important}body{margin:0;padding:0;background:#fff;-webkit-print-color-adjust:exact}.quotation-sheet,.measurement-sheet{width:210mm;padding:15mm 12mm;margin:0 auto;color:#1e293b;position:relative;box-sizing:border-box;font-size:11pt;line-height:1.5;background:#fff}.sheet-border-top{height:6px;background:linear-gradient(90deg,#1e40af,#3b82f6);margin-bottom:30px}.sheet-header{margin-bottom:30px}.header-top{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #e2e8f0;padding-bottom:20px;margin-bottom:25px}.brand-name{font-size:24pt;font-weight:900;color:#1e3a8a;margin:0}.brand-tagline{font-size:9pt;color:#64748b;margin:4px 0 0;font-weight:500}.doc-title-wrapper{text-align:right}.doc-title{font-size:32pt;font-weight:900;margin:0;letter-spacing:.1em;color:#0f172a}.doc-number{font-size:10pt;color:#94a3b8;font-family:monospace}.header-bottom{display:flex;justify-content:space-between;gap:30px}.client-box{flex:1}.provider-box{width:320px}.label{font-size:8pt;font-weight:800;color:#3b82f6;letter-spacing:.1em;margin-bottom:8px}.client-name{font-size:18pt;font-weight:800;border-bottom:3px solid #0f172a;padding-bottom:5px;margin-bottom:10px}.honorific{font-size:12pt;font-weight:400;color:#475569}.client-contact{font-size:11pt;color:#475569;margin-bottom:12px}.quote-intro{font-size:9.5pt;color:#64748b;line-height:1.6}.provider-details{background:#f8fafc;padding:15px;border-radius:8px;font-size:9.5pt}.provider-details .row{display:flex;margin-bottom:4px}.p-label{width:70px;font-weight:700;color:#475569;flex-shrink:0}.total-bar{background:#0f172a;color:#fff;padding:20px 30px;border-radius:8px;display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.total-label{font-size:12pt;font-weight:700}.total-value{font-size:24pt;font-weight:900}.currency{font-size:12pt;margin-right:10px;font-weight:400;opacity:.8}.issue-date{font-size:10pt;opacity:.8}.sheet-table{width:100%;border-collapse:collapse;margin-bottom:30px;table-layout:auto}.sheet-table th{background:#f1f5f9;border-top:2px solid #0f172a;border-bottom:1px solid #cbd5e1;padding:12px 8px;font-size:10pt;font-weight:800}.sheet-table td{padding:10px 8px;border-bottom:1px solid #e2e8f0;font-size:10pt;line-height:1.2}.center{text-align:center}.right{text-align:right}.desc-text{font-weight:600}.dim{color:#64748b;font-weight:400;font-size:8.5pt}.w-no{width:40px}.w-desc{width:auto}.w-unit-name,.w-qty{width:50px}.w-unit{width:100px}.w-amount{width:120px}.w-remarks{width:100px}.empty-row td{height:35px}.sheet-footer{display:flex;gap:30px;margin-top:10px}.footer-left{flex:1}.footer-right{width:300px}.remarks-box{border:1.5px solid #e2e8f0;border-radius:8px;padding:15px;min-height:120px}.remarks-content{font-size:9.5pt;color:#475569}.remarks-content p{margin:2px 0}.calc-row{display:flex;justify-content:space-between;padding:6px 0;font-size:10pt;border-bottom:1px solid #f1f5f9}.calc-total{display:flex;justify-content:space-between;padding:12px 0;margin-top:5px;border-top:2px solid #0f172a;font-weight:900;font-size:12pt;color:#1e3a8a}.sheet-final{margin-top:40px;text-align:center;border-top:1px solid #e2e8f0;padding-top:30px}.sheet-final p{font-size:10pt;color:#64748b;margin-bottom:25px}.signature-area{display:flex;flex-direction:column;align-items:center}.sign-box{margin-top:15px;font-size:14pt;font-weight:700;letter-spacing:2px}.sheet-strengths-page{page-break-before:always;padding-top:20px}.strengths-image-top{width:100%;max-height:240px;overflow:hidden;border-radius:12px;margin-bottom:25px;box-shadow:0 4px 15px #0000001a}.strengths-image-top img{width:100%;height:auto;display:block;object-fit:cover}.strengths-header{margin-bottom:25px;text-align:center}.strengths-header h3{font-size:20pt;font-weight:900;color:#1e3a8a;margin-bottom:10px}.strengths-header .header-line{width:50px;height:3px;background:#3b82f6;margin:0 auto}.strengths-list{list-style:none;padding:0;margin:0}.strengths-list li{display:flex;align-items:flex-start;margin-bottom:10px;background:#f8fafc;padding:10px 15px;border-radius:8px;border-left:4px solid #3b82f6;word-break:keep-all}.strengths-list .bullet{font-size:11pt;font-weight:900;color:#3b82f6;margin-right:15px;font-family:monospace;line-height:1;flex-shrink:0}.strengths-list p{margin:0;font-size:9.5pt;color:#334155;line-height:1.4;font-weight:500;text-align:justify}.strengths-footer{margin-top:30px;text-align:right;border-top:1px solid #e2e8f0;padding-top:15px}.strengths-footer p{font-size:13pt;font-weight:800;color:#1e3a8a}.m-header{text-align:center;margin-bottom:30px}.m-header h1{font-size:28pt;border-bottom:2px solid #0f172a;padding-bottom:10px;margin:0}.m-meta{display:flex;justify-content:space-between;margin-top:10px;font-size:11pt;color:#475569}.m-table{width:100%;border-collapse:collapse;margin-bottom:30px}.m-table th,.m-table td{border:1px solid #cbd5e1;padding:12px;font-size:11pt}.m-table th{background:#f8fafc;color:#475569;width:120px;text-align:center}.m-door-row th{text-align:left!important;padding-left:15px!important}.m-notes{height:80px;vertical-align:top}.m-photos h3{border-left:4px solid #3b82f6;padding-left:10px;margin-bottom:15px;font-size:14pt;margin-top:30px}.m-door-photo-group h4{font-size:12pt;color:#1e3a8a;margin-bottom:10px;margin-top:20px}.m-photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.m-photo-item{border:1px solid #e2e8f0;border-radius:4px;overflow:hidden;page-break-inside:avoid}.m-photo-item img{width:100%;display:block;height:200px;object-fit:cover}.m-footer{margin-top:40px;text-align:center;border-top:1px solid #e2e8f0;padding-top:20px}.m-company{font-size:16pt;font-weight:900;color:#1e3a8a;margin-top:10px}}
