*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;background:#f5f5f7;color:#111827}button,input,select,textarea{font:inherit}button{cursor:pointer}.app{min-height:100vh;padding:16px}.layout{max-width:1500px;margin:auto;display:grid;grid-template-columns:340px 1fr;grid-gap:16px;gap:16px}.card,.sidebar,.topbar{background:white;border:1px solid #e5e7eb;border-radius:28px;box-shadow:0 8px 20px rgba(15,23,42,.04)}.sidebar{padding:16px;height:calc(100vh - 32px);position:-webkit-sticky;position:sticky;top:16px;overflow:auto}.brand{gap:12px;padding-bottom:16px;border-bottom:1px solid #f1f5f9;margin-bottom:16px}.brand,.logoBox{display:flex;align-items:center}.logoBox{width:56px;height:56px;border-radius:16px;border:1px solid #e5e7eb;background:white;justify-content:center;overflow:hidden}.logoBox img{width:100%;height:100%;object-fit:contain;padding:4px}.brandName{font-size:20px;font-weight:900;letter-spacing:.18em}.brandName span,.brandSub{color:#6d28d9}.brandSub{font-size:11px;letter-spacing:.35em}.searchRow{display:flex;gap:8px;margin-bottom:16px}.search{position:relative;flex:1 1}.search svg{position:absolute;left:12px;top:11px;color:#94a3b8}.search input{width:100%;height:40px;border:1px solid #e5e7eb;border-radius:14px;padding-left:36px;outline:none}.violetBtn{height:40px;width:44px;border:0;border-radius:14px;background:#6d28d9;color:white;display:flex;align-items:center;justify-content:center}.jobList{display:flex;flex-direction:column;gap:8px}.jobItem{width:100%;border:1px solid #e5e7eb;background:white;border-radius:18px;padding:12px;text-align:left}.jobItem.selected{background:#f5f3ff;border-color:#c4b5fd}.jobItem div{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.jobItem small,.jobItem strong{display:block}.jobItem small{color:#64748b;margin-top:3px}.badge{display:inline-flex;border-radius:999px;border:1px solid;padding:4px 10px;font-size:12px;font-weight:800}.badge.good{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.badge.active{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}.badge.neutral{background:#f8fafc;color:#475569;border-color:#e2e8f0}.main{display:flex;flex-direction:column;gap:16px}.topbar{padding:20px;justify-content:space-between}.titleRow,.topbar{display:flex;align-items:center}.titleRow{gap:12px}.topbar h1{margin:0;font-size:30px;letter-spacing:-.03em}.topbar p{margin:4px 0 0;color:#64748b}.actions{display:flex;gap:8px}.actions button,.card button{border:1px solid #e5e7eb;background:white;border-radius:14px;padding:10px 12px;display:inline-flex;align-items:center;gap:8px}.actions .danger{color:#dc2626}.grid3{grid-template-columns:repeat(3,1fr);grid-gap:16px}.grid2,.grid3{display:grid;gap:16px}.grid2{grid-template-columns:1.1fr .9fr;grid-gap:16px}.gridBottom{display:grid;grid-template-columns:1fr 1fr .8fr;grid-gap:16px;gap:16px}.card{padding:16px}.sectionTitle{display:flex;align-items:center;gap:10px;border-bottom:1px solid #f1f5f9;padding-bottom:12px;margin-bottom:16px}.sectionTitle .icon{background:#f5f3ff;color:#6d28d9;border-radius:12px;padding:8px;display:flex}.sectionTitle h2{margin:0;font-size:14px;text-transform:uppercase;letter-spacing:.05em}.formGrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.wide{grid-column:span 2}.fieldLabel{display:block;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin-bottom:5px}input,select,textarea{border:1px solid #e5e7eb;border-radius:12px;background:white;padding:9px 10px;outline:none;width:100%}input:focus,select:focus,textarea:focus{border-color:#7c3aed;box-shadow:0 0 0 3px #ede9fe}textarea{min-height:96px;resize:vertical}.statusGrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin-top:12px}.statusGrid button{font-size:12px;font-weight:800;padding:9px;text-align:left}.statusGrid .chosen{background:#f5f3ff;border-color:#a78bfa;color:#6d28d9}.checkGrid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.checkGrid label{background:#f8fafc;border:1px solid #f1f5f9;border-radius:12px;padding:10px;font-size:14px}.checkGrid input{width:auto;accent-color:#6d28d9}table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid #e5e7eb;border-radius:16px;overflow:hidden}th{background:#f8fafc;color:#64748b;text-transform:uppercase;font-size:12px;text-align:left;padding:12px}td{border-top:1px solid #f1f5f9;padding:7px}td input{padding:7px;border-radius:9px}.parts{display:flex;flex-direction:column;gap:8px}.parts div{display:grid;grid-template-columns:1fr 60px 100px;grid-gap:8px;gap:8px}.sum h3,.sum p{display:flex;justify-content:space-between;align-items:center;background:#f8fafc;border-radius:12px;margin:0 0 8px;padding:10px 12px}.sum h3{background:white;border-top:1px solid #ddd6fe;border-radius:0;color:#6d28d9;font-size:20px}.signatures{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.signatures div{height:80px;border:1px dashed #cbd5e1;background:#f8fafc;border-radius:18px;color:#94a3b8;padding:12px;font-size:13px}@media(max-width:1100px){.layout{grid-template-columns:1fr}.sidebar{position:static;height:auto}.grid2,.grid3,.gridBottom{grid-template-columns:1fr}}@media print{.app{padding:0;background:white}.layout{display:block}.actions,.sidebar{display:none}.card,.topbar{box-shadow:none;border-radius:0;page-break-inside:avoid;break-inside:avoid}.main{gap:8px}.grid2,.grid3,.gridBottom{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:8px;gap:8px}.topbar h1{font-size:22px}button{display:none!important}input,select,textarea{border:0;border-bottom:1px solid #ddd;border-radius:0}.checkGrid{grid-template-columns:repeat(2,1fr)}}.printSheet{display:none}@page{size:A4;margin:10mm}@media print{body{background:#fff!important;color:#111!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.app{padding:0!important}.layout{display:block!important}.main>.card,.main>.grid2,.main>.grid3,.main>.gridBottom,.sidebar,.topbar{display:none!important}.main,.printSheet{display:block!important}.printSheet{font-family:Arial,sans-serif;font-size:9.5pt;line-height:1.3;color:#111}.printHead{display:grid;grid-template-columns:22mm 1fr 48mm;grid-gap:4mm;gap:4mm;align-items:center;border-bottom:2px solid #6d28d9;padding-bottom:4mm;margin-bottom:4mm}.printHead img{width:20mm;height:20mm;object-fit:contain}.printHead h1{font-size:20pt;letter-spacing:.08em;margin:0}.printHead h1:first-letter{color:#111}.printHead p{margin:1mm 0 0;color:#6d28d9;font-size:7.5pt;letter-spacing:.18em;font-weight:700}.printNo{text-align:right}.printNo small,.printNo span,.printNo strong{display:block}.printNo small{font-size:7.5pt;color:#666}.printNo strong{font-size:15pt;margin:1mm 0}.printNo span{color:#6d28d9;font-weight:700}.printMeta{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:3mm;gap:3mm;margin-bottom:3mm}.printMeta div{border:1px solid #ddd;padding:2.5mm 3mm}.printMeta b,.printMeta span{display:block}.printMeta b{font-size:7pt;color:#666;text-transform:uppercase}.printMeta span{font-weight:700;margin-top:1mm}.printCols{display:grid;grid-template-columns:1fr 1fr;grid-gap:3mm;gap:3mm}.printCols.lower{grid-template-columns:1.4fr .8fr;align-items:start}.printBox{border:1px solid #d8d8de;padding:3mm;margin-bottom:3mm;page-break-inside:avoid;break-inside:avoid}.printBox h2{margin:-3mm -3mm 2.5mm;padding:2mm 3mm;background:#f3f1f8;border-bottom:1px solid #ddd;font-size:8pt;letter-spacing:.08em;color:#4c1d95}.printBox p{margin:1mm 0}.pre{white-space:pre-wrap;min-height:6mm}.checkLine{font-size:8pt;color:#555;margin-top:2mm!important}.printTable{width:100%;border-collapse:collapse;border:0!important;border-radius:0!important}.printTable th{background:#f7f7f9!important;color:#555!important;font-size:7pt;padding:1.7mm!important;border:1px solid #ddd;text-transform:uppercase}.printTable td{padding:1.7mm!important;border:1px solid #ddd!important;font-size:8pt;vertical-align:top}.totals p{display:flex;justify-content:space-between;border-bottom:1px solid #eee;padding:1.5mm 0;margin:0}.totals .grand{font-size:12pt;color:#6d28d9;border-top:2px solid #6d28d9;border-bottom:0;margin-top:2mm;padding-top:2mm}.printSign{display:grid;grid-template-columns:1fr 1fr;grid-gap:18mm;gap:18mm;margin-top:12mm}.printSign div{height:18mm;border-top:1px solid #777;text-align:center;padding-top:2mm;color:#666;font-size:8pt}.printSheet footer{text-align:center;border-top:1px solid #ddd;margin-top:5mm;padding-top:2mm;color:#777;font-size:7pt;letter-spacing:.08em}}.addRowBtn{margin-top:12px!important;background:#f5f3ff!important;border-color:#ddd6fe!important;color:#6d28d9;font-weight:800}.rowDel{padding:7px!important;color:#dc2626!important;border:0!important;background:transparent!important}.parts div{grid-template-columns:1fr 60px 110px 38px!important}.photoBtn{margin-top:10px;border:1px solid #e5e7eb;background:white;border-radius:14px;padding:10px 12px;display:inline-flex;align-items:center;gap:8px;cursor:pointer}.photoBtn input{display:none}.photoGrid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;margin-top:12px}.photoThumb{aspect-ratio:4/3;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc}.photoThumb img{width:100%;height:100%;object-fit:cover}.photoThumb button{position:absolute;right:5px;top:5px;padding:6px!important;background:white!important;color:#dc2626;border-radius:9px!important}.hint{display:block;color:#64748b;margin-top:8px}.printPhotos>div{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:2mm;gap:2mm}.printPhotos img{width:100%;height:34mm;object-fit:cover;border:1px solid #ddd}@media print{.printPhotos>div{display:grid!important;grid-template-columns:repeat(4,1fr)!important}.printPhotos img{width:100%!important;height:32mm!important;object-fit:cover!important}}.mailBtn{background:#6d28d9!important;color:white!important;border-color:#6d28d9!important;font-weight:800}.modalBack{position:fixed;inset:0;background:rgba(15,23,42,.48);display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000}.emailModal{width:min(680px,100%);background:white;border-radius:24px;padding:20px;box-shadow:0 24px 80px rgba(15,23,42,.25)}.modalHead{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.modalHead small{font-weight:900;letter-spacing:.12em;color:#6d28d9}.modalHead h2{margin:4px 0 0;font-size:24px}.modalHead button{width:38px;height:38px;border:1px solid #e5e7eb;background:white;border-radius:12px;display:flex;align-items:center;justify-content:center}.emailModal label{display:block;margin-bottom:12px}.emailText{min-height:180px}.emailNotice{background:#f8fafc;border:1px solid #e5e7eb;border-radius:14px;padding:12px;color:#475569;font-size:13px;line-height:1.45}.modalActions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.modalActions button{border:1px solid #e5e7eb;background:white;border-radius:14px;padding:10px 14px;display:inline-flex;align-items:center;gap:8px}.modalActions .sendBtn{background:#6d28d9;color:white;border-color:#6d28d9;font-weight:800}@media(max-width:900px){.topbar{align-items:flex-start;gap:14px;flex-direction:column}.actions{flex-wrap:wrap}}@media print{.modalBack{display:none!important}}.importBtn{display:inline-flex;align-items:center;gap:7px;cursor:pointer;padding:10px 12px;border:1px solid #d9dce5;border-radius:10px;background:#fff;color:#2c3140;font-weight:700;font-size:13px;white-space:nowrap}.importBtn:hover{background:#f7f7fb}.importBtn input{display:none}.authScreen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f5f5f7;padding:24px}.loginCard{width:min(420px,100%);background:#fff;border:1px solid #e5e7eb;border-radius:30px;padding:32px;box-shadow:0 20px 60px rgba(15,23,42,.1)}.loginCard>img{width:92px;height:92px;object-fit:contain;display:block;margin:0 auto 12px}.loginCard h1{text-align:center;margin:0;font-size:27px;letter-spacing:.14em}.loginCard>p{text-align:center;color:#6d28d9;font-weight:800;letter-spacing:.22em;font-size:11px;margin:7px 0 26px}.loginCard label{display:block;margin:12px 0}.loginBtn{width:100%;border:0;border-radius:14px;padding:12px 16px;background:#6d28d9;color:#fff;font-weight:900;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:18px}.authError{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;border-radius:12px;padding:10px;font-size:13px}.spin{animation:tmspin 1s linear infinite}@keyframes tmspin{to{transform:rotate(1turn)}}button{transition:transform .08s ease,box-shadow .16s ease,background-color .16s ease,border-color .16s ease,opacity .16s ease}.importBtn:active,.photoBtn:active,button:active{transform:scale(.97)}.saveIndicator{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900;border:1px solid;white-space:nowrap}.saveIndicator.saved{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.saveIndicator.saving{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}.saveIndicator.dirty{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.saveIndicator.error{background:#fef2f2;color:#b91c1c;border-color:#fecaca}.saveDot{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}.centralSaveBtn.saved{background:#ecfdf5!important;color:#047857!important;border-color:#a7f3d0!important}.centralSaveBtn.saving{background:#f5f3ff!important;color:#6d28d9!important;border-color:#c4b5fd!important}.centralSaveBtn.error{background:#fef2f2!important;color:#b91c1c!important;border-color:#fecaca!important}.centralSaveBtn:disabled{cursor:wait;opacity:.8}.jobNo{gap:7px}.jobNo,.miniSave{display:inline-flex;align-items:center}.miniSave{width:18px;height:18px;border-radius:50%;justify-content:center;font-size:11px;font-weight:900;border:1px solid}.miniSave.saved{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.miniSave.dirty{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.miniSave.saving{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}.miniSave.error{background:#fef2f2;color:#b91c1c;border-color:#fecaca}.photoBtn.disabled{opacity:.65;pointer-events:none}.photoThumb{position:relative;overflow:hidden}.photoThumb img,.photoThumb video{width:100%;height:145px;object-fit:cover;display:block;border-radius:10px;background:#111}.photoThumb a{display:block}.photoDelete{position:absolute;top:7px;right:7px;z-index:2}.attachmentName{display:flex;align-items:center;gap:5px;padding:7px 8px;font-size:11px;min-width:0}.attachmentName span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.printModal{width:min(620px,100%);background:#fff;border-radius:24px;padding:20px;box-shadow:0 24px 80px rgba(15,23,42,.25)}.printChoice{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid #ddd6fe;background:#f5f3ff;border-radius:16px;padding:14px;color:#4c1d95}.printChoice div{display:flex;flex-direction:column;gap:4px}.printChoice span{font-size:13px;color:#64748b}.printToggle{display:flex!important;align-items:flex-start;gap:12px;margin:14px 0!important;border:1px solid #e5e7eb;border-radius:16px;padding:14px;cursor:pointer}.printToggle input{width:auto;margin-top:3px;accent-color:#6d28d9}.printToggle span{display:flex;flex-direction:column;gap:4px}.printToggle small{color:#64748b;line-height:1.4}.printTip{background:#f8fafc;border:1px solid #e5e7eb;border-radius:14px;padding:12px;color:#475569;font-size:13px}@media print{.printModal{display:none!important}.printPhotos{page-break-before:always;break-before:page}.printPhotos>div{grid-template-columns:repeat(2,1fr)!important;gap:4mm!important}.printPhotos figure{margin:0;page-break-inside:avoid;break-inside:avoid}.printPhotos img{height:72mm!important;border-radius:2mm}.printPhotos figcaption{font-size:7pt;color:#666;margin-top:1mm;word-break:break-all}.printBox,.printTable tr{page-break-inside:avoid}}.printModes{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin:12px 0}.printModes button{border:1px solid #e5e7eb;background:#fff;border-radius:16px;padding:14px;text-align:left;display:flex;flex-direction:column;gap:5px;color:#111827}.printModes button span{font-size:12px;line-height:1.4;color:#64748b}.printModes button.selected{border-color:#8b5cf6;background:#f5f3ff;box-shadow:0 0 0 2px #ede9fe}.printModes button.selected b{color:#5b21b6}@media(max-width:620px){.printModes{grid-template-columns:1fr}}@media print{.printSheet{font-size:9.2pt!important;line-height:1.36!important}.printHead{grid-template-columns:27mm 1fr 50mm!important;padding-bottom:5mm!important;margin-bottom:4.5mm!important}.printHead img{width:25mm!important;height:25mm!important}.printHead h1{font-size:21pt!important}.printHead p{font-size:7.8pt!important}.printMeta{margin-bottom:4mm!important}.printMeta div{padding:3mm!important}.printBox{padding:3.5mm!important;margin-bottom:3.5mm!important}.printBox h2{margin:-3.5mm -3.5mm 3mm!important;padding:2.2mm 3.5mm!important}.printBox>.pre{min-height:12mm!important}.printHandover>.pre{min-height:14mm!important}.totals .grand{font-size:13pt!important;font-weight:900!important;background:#f5f3ff!important;margin-left:-2mm!important;margin-right:-2mm!important;padding:2.5mm 2mm!important}.printSign{margin-top:16mm!important;gap:20mm!important}.printSign div{height:24mm!important;padding-top:2.5mm!important}.printPhotos{page-break-before:always!important;break-before:page!important}}.printSheet.pdfCapture{display:block!important;position:fixed!important;left:-10000px!important;top:0!important;width:794px!important;background:#fff!important;padding:30px!important;z-index:-1!important;font-family:Arial,sans-serif!important;font-size:12px!important;line-height:1.3!important;color:#111!important}.printSheet.pdfCapture .printHead{display:grid;grid-template-columns:102px 1fr 190px;grid-gap:15px;gap:15px;align-items:center;border-bottom:2px solid #6d28d9;padding-bottom:15px;margin-bottom:15px}.printSheet.pdfCapture .printHead img{width:94px;height:94px;object-fit:contain}.printSheet.pdfCapture .printHead h1{font-size:28px;letter-spacing:.08em;margin:0}.printSheet.pdfCapture .printHead p{margin:4px 0 0;color:#6d28d9;font-size:10px;letter-spacing:.18em;font-weight:700}.printSheet.pdfCapture .printNo{text-align:right}.printSheet.pdfCapture .printNo small,.printSheet.pdfCapture .printNo span,.printSheet.pdfCapture .printNo strong{display:block}.printSheet.pdfCapture .printNo small{font-size:10px;color:#666}.printSheet.pdfCapture .printNo strong{font-size:20px;margin:4px 0}.printSheet.pdfCapture .printNo span{color:#6d28d9;font-weight:700}.printSheet.pdfCapture .printMeta{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px;margin-bottom:10px}.printSheet.pdfCapture .printMeta div{border:1px solid #ddd;padding:10px}.printSheet.pdfCapture .printMeta b,.printSheet.pdfCapture .printMeta span{display:block}.printSheet.pdfCapture .printMeta b{font-size:9px;color:#666;text-transform:uppercase}.printSheet.pdfCapture .printMeta span{font-weight:700;margin-top:3px}.printSheet.pdfCapture .printCols{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.printSheet.pdfCapture .printCols.lower{grid-template-columns:1.4fr .8fr;align-items:start}.printSheet.pdfCapture .printBox{border:1px solid #d8d8de;padding:11px;margin-bottom:10px;page-break-inside:avoid;break-inside:avoid}.printSheet.pdfCapture .printBox h2{margin:-11px -11px 9px;padding:8px 11px;background:#f3f1f8;border-bottom:1px solid #ddd;font-size:10px;letter-spacing:.08em;color:#4c1d95}.printSheet.pdfCapture .printBox p{margin:4px 0}.printSheet.pdfCapture .pre{white-space:pre-wrap;min-height:22px}.printSheet.pdfCapture .checkLine{font-size:10px;color:#555;margin-top:7px!important}.printSheet.pdfCapture .printTable{width:100%;border-collapse:collapse;border:0!important;border-radius:0!important}.printSheet.pdfCapture .printTable th{background:#f7f7f9!important;color:#555!important;font-size:9px;padding:6px!important;border:1px solid #ddd;text-transform:uppercase}.printSheet.pdfCapture .printTable td{padding:6px!important;border:1px solid #ddd!important;font-size:10px;vertical-align:top}.printSheet.pdfCapture .totals p{display:flex;justify-content:space-between;border-bottom:1px solid #eee;padding:5px 0;margin:0}.printSheet.pdfCapture .totals .grand{font-size:16px;color:#6d28d9;border-top:2px solid #6d28d9;border-bottom:0;margin-top:7px;padding-top:7px}.printSheet.pdfCapture .printHandover>.pre{min-height:34px}.printSheet.pdfCapture .printSign{display:grid;grid-template-columns:1fr 1fr;grid-gap:70px;gap:70px;margin-top:34px}.printSheet.pdfCapture .printSign div{height:55px;border-top:1px solid #777;text-align:center;padding-top:7px;color:#666;font-size:10px}.printSheet.pdfCapture footer{text-align:center;border-top:1px solid #ddd;margin-top:14px;padding-top:7px;color:#777;font-size:9px;letter-spacing:.08em}.printSheet.pdfCapture .printPhotos{margin-top:20px}.printSheet.pdfCapture .printPhotos>div{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:12px;gap:12px}.printSheet.pdfCapture .printPhotos figure{margin:0}.printSheet.pdfCapture .printPhotos img{width:100%;height:250px;object-fit:cover;border:1px solid #ddd}.printSheet.pdfCapture .printPhotos figcaption{font-size:9px;color:#666;margin-top:4px}.modalActions button:disabled{opacity:.6;cursor:wait}