:root{--navy:#123762;--blue:#1769c2;--green:#159447;--bg:#f4f7fb;--line:#dce4ee;--text:#172536;--muted:#68778a;--red:#bd2f2f}
*{box-sizing:border-box}body{margin:0;font-family:"Noto Sans JP","Yu Gothic UI",sans-serif;background:var(--bg);color:var(--text)}a{color:var(--blue)}button,input,select,textarea{font:inherit}.app{min-height:100vh;display:grid;grid-template-columns:230px 1fr}aside{background:#fff;border-right:1px solid var(--line);padding:22px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{text-decoration:none;color:var(--navy);font-size:20px;font-weight:900;padding:5px 10px 24px}.brand small,.account small{display:block;color:var(--muted);font-size:11px;margin-top:5px}nav{display:grid;gap:6px}nav a{padding:12px 14px;border-radius:8px;text-decoration:none;color:#415064}nav a:hover{background:#eaf3ff;color:var(--blue)}.account{margin-top:auto;border-top:1px solid var(--line);padding:16px 10px 0}.account button{margin-top:10px;border:0;background:none;color:var(--blue);padding:0;cursor:pointer}main{padding:24px;min-width:0}.hero,.page-head{background:linear-gradient(100deg,var(--navy),#0b2e59);color:#fff;padding:22px 26px;border-radius:14px;display:flex;align-items:center;justify-content:space-between}.hero h1,.page-head h1{margin:0;font-size:24px}.hero p,.page-head p{margin:6px 0 0;opacity:.8}.page-head a{color:#dcecff}.button{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.primary{border:0;background:var(--green);color:#fff;border-radius:8px;padding:11px 20px;font-weight:800;cursor:pointer}.ghost{background:#fff;color:var(--blue);border:1px solid #bfd0e2;border-radius:8px;padding:10px 18px}.wide{width:100%}.filters{display:grid;grid-template-columns:1.4fr 1fr 1fr .7fr .6fr auto;gap:12px;background:#fff;padding:16px;border:1px solid var(--line);border-radius:12px;margin-top:15px;align-items:end}label{display:grid;gap:6px;color:#536277;font-size:12px;font-weight:700}input,select,textarea{border:1px solid #cbd6e3;border-radius:8px;background:#fff;padding:10px 12px;min-width:0}textarea{min-height:90px;resize:vertical}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:14px}.cards article,.summary-grid article{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px}.cards span,.summary-grid span{color:var(--muted);font-size:12px}.cards strong{display:inline-block;color:var(--blue);font-size:28px;margin-top:8px}.cards small{margin-left:5px}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;margin-top:15px;overflow:auto}.panel h2{margin:0 0 15px;font-size:17px}.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.bars{display:grid;gap:9px}.bar-row{display:grid;grid-template-columns:100px 1fr 28px;gap:8px;align-items:center;font-size:12px}.bar-row i{height:12px;background:#edf2f8;border-radius:8px;overflow:hidden}.bar-row b{display:block;height:100%;background:#2f75b5}.bar-row em{font-style:normal}.columns{height:200px;display:flex;align-items:flex-end;gap:12px;border-bottom:1px solid var(--line)}.columns>div{flex:1;display:grid;justify-items:center;gap:4px;font-size:11px}.columns i{width:24px;background:#2f75b5;border-radius:5px 5px 0 0}table{border-collapse:collapse;width:100%;min-width:760px;font-size:13px}th{background:var(--navy);color:#fff;padding:11px;text-align:left}td{padding:11px;border-bottom:1px solid #e6ebf1}tr:hover td{background:#f6faff}.pill,.required{display:inline-block;background:#e5f1ff;color:var(--blue);border-radius:18px;padding:4px 9px;font-size:11px;font-weight:800}.required{background:#fff0d1;color:#8a6100;margin-left:5px}.small-button{border:1px solid #9bbde0;border-radius:6px;color:var(--blue);background:#fff;padding:6px 11px;text-decoration:none;cursor:pointer}progress{accent-color:var(--green);width:90px}.section-head{display:flex;justify-content:space-between;align-items:center}.summary-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-top:15px}.summary-grid b{display:block;margin-top:8px}.tabs{display:flex;gap:7px;overflow:auto;margin-top:18px}.tabs button{border:0;background:#e8edf4;color:#536277;padding:11px 16px;border-radius:8px;white-space:nowrap;cursor:pointer}.tabs button.active{background:var(--navy);color:#fff}.tab-panel{display:none}.tab-panel.active{display:block}.detail-list{display:grid;grid-template-columns:150px 1fr}.detail-list dt,.detail-list dd{margin:0;padding:13px;border-bottom:1px solid var(--line)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.span-2{grid-column:1/-1}.actions,.upload,.inline-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.file-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:15px}.file-grid a{background:#f5f8fc;border:1px solid var(--line);border-radius:8px;padding:13px;text-decoration:none}.file-grid span{display:block;color:var(--muted);font-size:11px;margin-top:5px}.danger-zone{margin-top:28px;border:1px solid #efb5b5;padding:15px;border-radius:8px}.danger-zone form{display:grid;gap:10px;max-width:500px}.danger-button{background:var(--red);color:#fff;border:0;border-radius:8px;padding:10px}.flash{padding:12px 16px;border-radius:8px;margin-bottom:12px;background:#e1f3e7;color:#176e38}.flash.error{background:#fde4e4;color:#9b2525}.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(420px,100%);background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px;box-shadow:0 15px 40px #16365d18}.login-card h1{text-align:center;margin:8px}.login-card p{text-align:center;color:var(--muted);margin-bottom:25px}.login-card label{margin-top:14px}.login-mark{text-align:center;font-size:38px;color:var(--navy)}.inline{display:flex;align-items:center;gap:6px}
@media(max-width:1100px){.cards,.summary-grid{grid-template-columns:repeat(2,1fr)}.filters{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.app{grid-template-columns:1fr}aside{height:auto;position:static}.account{display:none}main{padding:12px}.charts-grid,.form-grid,.filters{grid-template-columns:1fr}.cards,.summary-grid{grid-template-columns:1fr 1fr}.file-grid{grid-template-columns:1fr}.span-2{grid-column:auto}}

/* Balanced spacing for wide screens and operational forms */
main{width:100%;max-width:1480px;margin:0 auto;padding:28px 32px 44px}
.hero,.page-head{padding:24px 30px;min-height:104px}
.panel{padding:24px}
.tabs{gap:8px;margin:20px 0 0}
.tabs button{min-height:44px;padding:10px 18px}
.inline-form{max-width:1120px;align-items:end;padding:2px 0 20px}
.inline-form>input{flex:1 1 180px;max-width:300px}
.inline-form>select{flex:0 1 180px;max-width:180px}
.inline-form>.primary{flex:0 0 auto;min-height:42px}
.section-head{gap:20px;min-height:46px}
.section-note{margin:4px 0 0;color:var(--muted);font-size:12px;font-weight:400}
.estimate-total{white-space:nowrap;color:var(--blue);font-size:18px}
.note-field{max-width:760px;margin:18px 0}
.note-field textarea{min-height:72px}
.form-actions{display:flex;justify-content:flex-end;padding-top:18px}
.compare-table th:not(:first-child),.compare-table td:not(:first-child){min-width:180px;text-align:right}
.compare-table td small{display:block;margin-top:5px;color:var(--muted);font-weight:400}
.compare-table .total-row td{background:#edf4fb;font-size:15px;font-weight:900}
.upload-box{max-width:960px;margin:18px 0 24px;padding:18px;background:#f7f9fc;border:1px solid var(--line);border-radius:10px;align-items:end}
.upload-box label{min-width:180px}
.upload-box .file-picker{flex:1;min-width:280px}
.upload-box .primary{min-height:42px}
.file-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.attachment-card{overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:10px}
.image-preview{display:block;width:100%;height:180px;padding:0;border:0;background:#e8eef5;cursor:zoom-in;overflow:hidden}
.image-preview img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .2s ease}
.image-preview:hover img{transform:scale(1.025)}
.document-preview{height:180px;display:grid;place-content:center;justify-items:center;gap:8px;background:#f1f5fa;text-decoration:none}
.document-preview>span{font-size:48px;color:var(--navy)}
.document-preview small{color:var(--blue);font-weight:700}
.attachment-meta{display:grid;gap:5px;padding:13px}
.attachment-meta b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.attachment-meta span{color:var(--muted);font-size:11px}
.attachment-meta a{font-size:12px;justify-self:start}
.image-lightbox{width:min(1100px,92vw);max-height:92vh;padding:42px 18px 14px;border:0;border-radius:14px;background:#111923;color:#fff}
.image-lightbox::backdrop{background:#07111dcc}
.image-lightbox img{display:block;max-width:100%;max-height:76vh;margin:auto;object-fit:contain}
.image-lightbox p{text-align:center;margin:10px 0 0}
.lightbox-close{position:absolute;right:12px;top:10px;width:34px;height:34px;border:0;border-radius:50%;background:#fff;color:#172536;font-size:24px;line-height:1;cursor:pointer}
.date-link{padding:3px 0;border:0;border-bottom:1px solid currentColor;background:none;color:var(--blue);font-weight:700;cursor:pointer}
.date-link:hover{color:#0b4f9b}
.checklist-modal{width:min(1180px,94vw);max-height:90vh;padding:0;border:0;border-radius:14px;box-shadow:0 24px 70px #07182d55}
.checklist-modal::backdrop{background:#10233b99}
.modal-head{display:flex;justify-content:space-between;gap:20px;padding:22px 26px;background:var(--navy);color:#fff}
.modal-head h2{margin:3px 0;font-size:21px}.modal-head p,.modal-head small{margin:0;color:#d8e5f3}
.modal-close{flex:0 0 38px;width:38px;height:38px;padding:0;border:1px solid #ffffff88;border-radius:50%;background:#fff;color:var(--navy);font-size:25px;line-height:1;cursor:pointer}
.modal-table{max-height:58vh;overflow:auto;padding:20px 24px 0}
.modal-table table{min-width:900px}.modal-table select{min-width:120px}.modal-table input{width:100%;min-width:200px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;padding:18px 24px 22px;border-top:1px solid var(--line);background:#fff}
.inactive{display:inline-block;margin-left:6px;padding:3px 7px;border-radius:12px;background:#eef0f3;color:#66717f;font-size:10px;font-weight:800}
.operations-filters{grid-template-columns:1.2fr .9fr .9fr .8fr .9fr .9fr auto}
.compact-cards{grid-template-columns:repeat(3,minmax(180px,260px));justify-content:start}
.report-card{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:18px 0;padding:18px;border:1px solid #b9d2eb;border-radius:12px;background:#f2f7fc}
.report-card>div{display:flex;align-items:center;gap:14px}.report-card p{margin:4px 0 0;color:var(--muted);font-size:12px}
.report-icon{font-size:36px;color:var(--navy)}
.attachment-filters{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}
.attachment-filters button{padding:8px 14px;border:1px solid var(--line);border-radius:18px;background:#fff;color:#536277;cursor:pointer}
.attachment-filters button.active{border-color:var(--navy);background:var(--navy);color:#fff}
.attachment-card{position:relative}.attachment-card.dragging{opacity:.4;outline:2px dashed var(--blue)}
.drag-handle{position:absolute;z-index:3;top:8px;right:8px;display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:#ffffffdd;color:var(--navy);font-size:20px;cursor:grab;box-shadow:0 2px 8px #112b4933}
.media-preview,.document-frame{display:block;width:100%;height:180px;border:0;background:#111}
.document-frame{background:#f7f8fa}
.title-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}
.title-form input{width:100%;padding:7px 8px;font-weight:700}
.master-edit{position:absolute;z-index:8;right:40px;width:min(680px,80vw);display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:16px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 15px 40px #112b4933}
.ops-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.ops-grid article{padding:16px;background:#f5f8fc;border-radius:9px}.ops-grid p{color:var(--muted);font-size:12px}
.memo-icon{position:relative;width:36px;height:34px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#8290a0;cursor:pointer}.memo-icon.has-memo{border-color:#e0ad35;background:#fff5d8;color:#8a6100}.memo-icon small{position:absolute;right:-5px;top:-7px;min-width:17px;padding:2px;border-radius:10px;background:var(--navy);color:#fff;font-size:9px}
.memo-modal{width:min(760px,94vw);max-height:90vh;padding:0;border:0;border-radius:14px}.memo-body{padding:20px}.memo-add{display:grid;gap:8px}.memo-timeline{display:grid;gap:12px;margin-top:18px}.memo-timeline article{position:relative;padding:14px;border-left:3px solid #91b8de;background:#f7f9fc}.memo-timeline article form{display:flex;gap:8px;margin-top:7px}.memo-timeline textarea{flex:1;min-height:64px}.memo-delete{border:0;background:none;color:var(--red);cursor:pointer}
.report-section{margin:18px 0;padding:18px;border:1px solid var(--line);border-radius:10px}.report-section legend{padding:0 8px;color:var(--navy);font-weight:900}.report-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.report-grid textarea{min-height:72px}
.estimate-status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;margin-top:14px}.estimate-status-grid form{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:13px;border:1px solid var(--line);border-radius:9px;background:#f7f9fc}
.lightbox-tools{position:absolute;z-index:3;right:12px;top:10px;display:flex;gap:8px}.lightbox-tools button{height:34px;border:0;border-radius:7px;background:#fff;color:#172536;padding:0 12px;cursor:pointer}.lightbox-tools .lightbox-close{position:static;width:34px;padding:0}
/* Compact operating density */
main{padding:18px 24px 30px}
.hero,.page-head{min-height:78px;padding:16px 22px;border-radius:11px}
.hero h1,.page-head h1{font-size:22px}.hero p,.page-head p{margin-top:3px}
.filters{margin-top:10px;padding:11px 13px;gap:9px}.filters input,.filters select{padding:8px 10px}
.filters{grid-template-columns:1.2fr .9fr .9fr .8fr .9fr .9fr auto}
.cards{margin-top:10px;gap:10px}.cards article,.summary-grid article{padding:13px 15px}.cards strong{font-size:24px;margin-top:4px}
.panel{margin-top:10px;padding:16px}.panel h2{margin-bottom:10px}
.charts-grid{gap:10px}.columns{height:155px}.bars{gap:6px}
.summary-grid{margin-top:10px;gap:9px}.summary-grid article{min-height:82px}.summary-grid b{margin-top:5px}
.tabs{margin-top:12px;gap:6px}.tabs button{min-height:38px;padding:8px 14px}
table{font-size:12px}th,td{padding:8px 10px}
nav{gap:2px}nav a{padding:9px 12px}
.report-section{margin:11px 0;padding:13px}.report-grid{gap:9px}.report-grid textarea{min-height:56px}
.section-head{min-height:36px}.upload-box{margin:12px 0 16px;padding:13px}.attachment-filters{margin:12px 0}
[data-sort-table] th{padding:0}[data-sort-table] th button{display:flex;align-items:center;gap:5px;width:100%;padding:8px 10px;border:0;background:transparent;color:#fff;font:inherit;font-weight:800;text-align:left;cursor:pointer}
[data-sort-table] th button::after{content:"↕";opacity:.45;font-size:10px}[data-sort-table] th button[data-sort-direction="asc"]::after{content:"▲";opacity:1}[data-sort-table] th button[data-sort-direction="desc"]::after{content:"▼";opacity:1}
.bulk-check-toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:12px 0;padding:10px 12px;border:1px solid #cbdbea;border-radius:9px;background:#f4f8fc}.bulk-check-toolbar>span:last-child{margin-left:auto;color:var(--muted);font-size:12px;font-weight:700}.modal-bulk{margin:14px 24px 0}
.bulk-status-buttons{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.bulk-status-buttons>span{color:var(--muted);font-size:12px;font-weight:700}.bulk-status-buttons button{border:1px solid #9bbde0;border-radius:16px;background:#fff;color:var(--blue);padding:6px 10px;font-size:11px;font-weight:800;cursor:pointer}
.select-column{width:38px}.status-choice{display:grid;grid-template-columns:repeat(4,max-content);gap:4px;min-width:330px}.status-choice button{border:1px solid #cbd6e3;border-radius:15px;background:#fff;color:#647386;padding:5px 8px;font-size:10px;white-space:nowrap;cursor:pointer}.status-choice button.active{font-weight:900}.status-choice .status-1.active{border-color:#8996a5;background:#edf0f3;color:#3f4b58}.status-choice .status-2.active{border-color:#62ad7b;background:#e4f5e9;color:#176e38}.status-choice .status-3.active{border-color:#df9b3c;background:#fff0d8;color:#875500}.status-choice .status-4.active{border-color:#8da9c7;background:#e7f0fa;color:#235c93}
@media(max-width:760px){main{padding:12px}.hero,.page-head,.panel{padding:18px}.section-head{align-items:flex-start;flex-direction:column}.upload-box{align-items:stretch}.upload-box .file-picker{min-width:0}.form-actions{justify-content:stretch}.form-actions .primary{width:100%}}
.mobile-nav-toggle{display:none}.master-drag{margin-right:8px;color:var(--muted);cursor:grab}.master-dragging{opacity:.45}.estimate-name-input{min-width:180px;font-weight:800}.estimate-add-form{display:flex;gap:8px;align-items:center}.estimate-add-form input{min-width:220px}
.page-head .actions .button.ghost,.page-head .actions button.ghost{border-color:#fff;background:var(--blue);color:#fff}
@media(max-width:760px){
  .app{display:block}.mobile-nav-toggle{display:block;position:fixed;z-index:40;right:12px;top:12px;width:44px;height:44px;border:0;border-radius:10px;background:var(--navy);color:#fff;font-size:22px;box-shadow:0 5px 18px #12376255}
  aside{position:fixed;z-index:35;inset:0 18% 0 0;height:100vh;transform:translateX(-105%);transition:transform .2s ease;box-shadow:12px 0 40px #10233b44}aside.mobile-open{transform:translateX(0)}aside .account{display:block}
  main{padding:64px 10px 18px}.hero,.page-head,.panel{padding:14px}.hero,.page-head{align-items:flex-start;flex-direction:column;gap:12px}.page-head .actions{width:100%}.page-head .actions>*{flex:1}.page-head .actions .button,.page-head .actions button{width:100%}
  .section-head{align-items:stretch;flex-direction:column}.estimate-add-form{align-items:stretch;flex-direction:column}.estimate-add-form input{min-width:0}.upload-box{align-items:stretch}.upload-box .file-picker{min-width:0}.form-actions{justify-content:stretch}.form-actions .primary{width:100%}
  .cards,.summary-grid{grid-template-columns:1fr 1fr}.tabs{margin-left:-10px;margin-right:-10px;padding:0 10px}table{min-width:680px}.panel{overflow-x:auto}.status-choice{grid-template-columns:repeat(2,max-content);min-width:190px}
  .estimate-status-grid{grid-template-columns:1fr}.estimate-status-grid form{align-items:stretch;display:grid}.estimate-name-input{width:100%}.modal-table{padding:12px}.modal-table table{min-width:760px}.modal-actions{padding:12px}
}
@media(max-width:420px){.cards,.summary-grid{grid-template-columns:1fr}.hero h1,.page-head h1{font-size:19px}}
.compare-subheading{margin:20px 0 10px;color:var(--navy);font-size:15px}.estimate-status-grid+.compare-subheading{border-top:1px solid var(--line);padding-top:18px}.estimate-panel input[data-estimate-amount]{text-align:right;font-variant-numeric:tabular-nums}
