:root{font-family:system-ui,'맑은 고딕',sans-serif;color:#22394b;background:#f2f5f7;font-size:16px}*{box-sizing:border-box}body{margin:0}header{background:#fff;border-bottom:1px solid #d7e1e8;padding:18px 4vw;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}header b{font-size:23px}header span{margin:0 12px}.tag,.badge{display:inline-block;padding:4px 8px;background:#e6eef4;border-radius:5px;font-size:13px}.tag{background:#fff0d7;color:#765100}main{max-width:1180px;margin:25px auto;padding:0 20px}nav,.row,.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}nav{margin-bottom:24px}button,.button{font:inherit;border:1px solid #b9c9d5;background:white;color:#22394b;border-radius:7px;padding:10px 15px;cursor:pointer;display:inline-block;text-decoration:none}button:hover{background:#e8f0f6}button.primary,.button.primary{background:#155d86;color:white;border-color:#155d86}button:disabled{opacity:.5;cursor:wait}h1{font-size:28px;line-height:1.3}h2{font-size:20px}h3{font-size:17px}.muted,small{color:#60788b}.hero,.panel,.card{background:white;border:1px solid #dce4e9;border-radius:11px;padding:20px;margin:14px 0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.split{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(290px,1fr);gap:20px}.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:15px}.kv label{font-size:13px;color:#61788a}.kv strong{display:block;color:#22394b;font-size:16px;margin-top:4px}p{white-space:pre-wrap;overflow-wrap:anywhere}label{display:block;margin:12px 0}input,select,textarea{font:inherit;width:100%;padding:10px;border:1px solid #aabcCA;border-radius:6px;background:#fff}textarea{min-height:100px;resize:vertical}input[type=checkbox]{width:auto;margin-right:8px}.checks{display:flex;gap:12px;flex-wrap:wrap}.checks label{background:#f1f5f8;padding:8px 12px;border-radius:6px}dialog{width:min(760px,96vw);max-height:92vh;border:0;border-radius:12px;padding:25px;box-shadow:0 20px 70px #172a3b55;overflow:auto}dialog::backdrop{background:#19334688}dialog h2{margin-top:0}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.wide{grid-column:1/-1}.error{color:#9a2d20}.success{color:#236642}.warning{padding:12px;background:#fff1d9;color:#80570b;border-radius:7px}#notice{position:sticky;top:0;z-index:20;background:#eef5fa;padding:0 4vw;white-space:pre-wrap}#notice:not(:empty){padding-top:12px;padding-bottom:12px;border-bottom:1px solid #cfdee9}.toolbar{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}.filecard{border-bottom:1px solid #e3e9ed;padding:13px 0}.filecard:last-child{border:0}.drop{border:2px dashed #a5b9c8;padding:22px;text-align:center;border-radius:8px}.drop.active{background:#dfedf7}.log{padding:12px 0;border-bottom:1px solid #e2e9ee}.empty{color:#688093;padding:16px 0}.preview{height:68vh;overflow:auto;background:#e4eaf0;display:flex;align-items:flex-start;justify-content:center}.preview img{max-width:100%;transform-origin:top center;image-orientation:from-image}.preview iframe{border:0;width:100%;height:100%}#viewer{width:96vw;max-width:1250px}.batch{padding:8px 0;border-bottom:1px solid #e3e9ed}.nowrap{white-space:nowrap}.money{font-variant-numeric:tabular-nums}.noticeDraft{font-size:13px;color:#60788b}.header-title{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse}td,th{border-bottom:1px solid #dce5ec;padding:9px;text-align:left}a{color:#175d88}details>summary{cursor:pointer;padding:10px 0;font-weight:600}@media(max-width:700px){.split{grid-template-columns:1fr}.formgrid{grid-template-columns:1fr}.wide{grid-column:auto}.toolbar{grid-template-columns:1fr}.hero,.panel,.card{padding:16px}main{padding:0 14px}header{padding:15px}header b{font-size:20px}header span{margin:0 7px}h1{font-size:25px}dialog{padding:20px}.actions button{flex-grow:1}button{min-height:44px}.preview{height:66vh}nav button{flex:1}input,select,textarea{font-size:16px}.kv{grid-template-columns:1fr 1fr}}

#viewer.viewer-full{width:100vw;height:100vh;max-width:none;max-height:none;margin:0;border-radius:0}#viewer.viewer-full .preview{height:calc(100vh - 140px)}.preview canvas{max-width:none;background:white}

.contact-editor,fieldset{border:1px solid #c9d8e3;border-radius:9px;padding:16px;min-width:0}.contact-card{padding:14px 0;border-bottom:1px solid #e2e9ee}.contact-card:last-child{border:0}.contact-card .actions{margin:8px 0}.contact-card p{margin:6px 0}legend{font-weight:650;padding:0 8px}

/* Shared calm palette and comfortable controls. No server or financial behavior changes. */
:root{color:#294235;background:#f6f5f1}body{background:#f6f5f1}header{border-bottom:1px solid #e0e5dc;background:#fffefc}header b{color:#345842}header #identity{font-size:14px;color:#5c7063}.hero,.panel,.card{border-color:#dfe5dc;background:#fffefc;border-radius:16px;box-shadow:0 3px 14px #344c3705}.card{padding:18px}.grid{grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr))}.split>*{min-width:0}button,.button{color:#345540;border-color:#c9d6c9;border-radius:11px;min-height:44px;background:#fffefc}button:hover,.button:hover{background:#edf3e9}button.primary,.button.primary{background:#466e54;border-color:#466e54;color:#fff}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid #426b51;outline-offset:3px}button:disabled{opacity:.6}.muted,small{color:#5c7063}small{overflow-wrap:anywhere}.tag,.badge{background:#edf3e7;color:#3c5a43;border-radius:8px}.tag{background:#f1efe2;color:#665b32}nav{gap:8px;margin-bottom:20px}nav button{background:#fcfdf9}h1{font-size:27px;letter-spacing:-.5px;color:#294a36}h1,h2,h3{overflow-wrap:anywhere}h2{color:#355641}p{line-height:1.65}input,select,textarea{border-color:#cbd7cb;border-radius:10px;color:#294235;min-height:44px;background:#fff}label{color:#536858}.kv label{color:#5c7063}.kv strong{color:#294235}.filecard{border-color:#e3e8df}.preview{background:#edf0e9}.warning{background:#f5f0e2;color:#665a32;border-radius:12px}#notice{background:#edf3e9;color:#385c43}#notice:empty{display:none}a{color:#365f48}summary{min-height:44px}.header-title{align-items:center}.demo-trial-bar+nav{margin-bottom:16px}@media(max-width:700px){h1{font-size:25px}.hero,.panel,.card{border-radius:14px}.kv{grid-template-columns:repeat(2,minmax(0,1fr))}header{padding:14px}header b{font-size:20px}}

/* Design round 2: keep navigation labels horizontal and wrap whole buttons. */
@media(max-width:700px){nav button{flex:0 0 auto;white-space:nowrap}}

/* Role and territory selectors: native semantics, bounded mobile layout. */
fieldset{min-width:0;max-width:100%;border:1px solid #cbd7cb;border-radius:10px;margin:12px 0;padding:12px}legend{max-width:100%;overflow-wrap:anywhere}input[type=radio],input[type=checkbox]{width:auto;min-height:20px;flex-shrink:0;accent-color:#466e54}.checks label{display:flex;align-items:center;gap:8px;max-width:100%;overflow-wrap:anywhere;min-height:44px}.checks input{margin:0}.formgrid>*{min-width:0}#vendorPeople fieldset{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}#attachmentStaging{border:1px solid #cbd7cb;border-radius:10px;padding:0 12px}#companyChoices .checks{max-height:260px;overflow:auto}.choice:focus-within{border-color:#466e54}select:focus-visible,textarea:focus-visible{outline:2px solid #426b51;outline-offset:3px}@media(max-width:700px){#vendorPeople fieldset{grid-template-columns:1fr}dialog{max-width:96vw}.checks label{padding:8px;min-width:0}input,select,textarea{max-width:100%}}

/* Visible throughout the detail page; modal dialogs remain in the top layer. */
.site-edit-bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));background:#fffefc;border:1px solid #c9d6c9;border-radius:12px;box-shadow:0 3px 12px #29423512}.site-edit-bar span{font-weight:600}.site-edit-bar button{flex-shrink:0}#vendorPeople fieldset{min-width:0}#vendorPeople details{margin:8px 0}#vendorPeople summary span{font-weight:400;color:#5c7063}

/* Dialog chrome stays visible; only its middle section scrolls. */
dialog[open]{display:flex;flex-direction:column;padding:0;position:fixed;top:calc(var(--visible-top,0px) + 8px);bottom:auto;left:0;right:0;margin:0 auto;max-height:92vh;max-height:min(92dvh,calc(var(--visible-height,100dvh) - 16px));overflow:hidden}
.dialog-heading{flex:none;margin:0;padding:14px 20px;background:#fffefc;border-bottom:1px solid #dce4d7;gap:12px}.dialog-heading h2{margin:0;min-width:0}.dialog-heading [data-close]{flex:none}
.dialog-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:16px 20px;scroll-padding-block:16px}.dialog-body>form{margin:0}.dialog-body form>button[type=submit]{margin-top:12px}
.dialog-actions{flex:none;display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 20px;padding-bottom:max(10px,env(safe-area-inset-bottom));border-top:1px solid #dce4d7;background:#fffefc}.dialog-actions>.actions{flex:1;gap:6px}.dialog-actions button{max-width:100%;white-space:normal}.dialog-actions .wide{grid-column:auto}
.dialog-more{position:relative}.dialog-more>summary{border:1px solid #c9d6c9;border-radius:10px;padding:10px 12px;list-style:none}.dialog-more>summary::-webkit-details-marker{display:none}.dialog-more-menu{position:absolute;bottom:100%;right:0;width:min(340px,calc(100vw - 56px));max-height:45vh;max-height:45dvh;overflow:auto;padding:10px;border:1px solid #c9d6c9;border-radius:10px;background:#fffefc;box-shadow:0 -4px 22px #29423522;display:grid;gap:8px;z-index:2}.dialog-more-menu button{text-align:left;width:100%}
.page-action-bar{position:sticky;z-index:12;display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#fffefc;border:1px solid #c9d6c9;border-radius:12px;padding:9px 12px;margin:12px 0;box-shadow:0 3px 12px #29423512}.page-action-bar>button{flex-shrink:0}.page-more{margin-left:auto;position:relative}.page-more>summary{list-style:none;border:1px solid #c9d6c9;border-radius:10px;padding:10px 13px;min-height:44px}.page-more>summary::-webkit-details-marker{display:none}.page-more>summary:after{content:' ▾'}.page-more-menu{position:absolute;right:0;top:100%;width:min(310px,calc(100vw - 56px));max-height:55vh;max-height:55dvh;overflow:auto;padding:10px;border:1px solid #c9d6c9;border-radius:10px;box-shadow:0 8px 26px #29423533;background:#fffefc;display:grid;gap:8px}.page-more-menu button{text-align:left;width:100%}.page-action-bar button{margin:0}
.calendar-monthbar{position:sticky;top:var(--page-actions-top,0px);z-index:8;background:#fffefc;padding-top:8px;padding-bottom:8px}
@media(max-width:700px){dialog[open]{max-height:94vh;max-height:min(94dvh,calc(var(--visible-height,100dvh) - 16px))}.dialog-heading{padding:10px 14px}.dialog-heading h2{font-size:18px}.dialog-body{padding:14px}.dialog-actions{padding:10px 14px;padding-bottom:max(10px,env(safe-area-inset-bottom))}.dialog-actions>button{flex:1}.page-action-bar{padding:8px;gap:6px}.page-action-bar>button{padding:9px 11px}.page-more>summary{padding:9px 10px}.page-action-bar .page-more{margin-left:auto}}

#viewer.viewer-full[open]{top:var(--visible-top,0px);height:var(--visible-height,100dvh);max-height:var(--visible-height,100dvh)}

.master-overview{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:12px}.master-overview .log{min-width:0;overflow-wrap:anywhere}.master-overview details section{border-bottom:1px solid #ddd;padding:8px 0}.master-overview summary{cursor:pointer}

/* Visible current company, scoped eligible selection and master-information route. */
.company-choice{border:1px solid var(--line,#cbd9cf);border-radius:12px;padding:14px;margin:12px 0;min-width:0;overflow-wrap:anywhere}
.company-choice h3{margin:0 0 8px}.company-current{font-size:1.08rem}.company-actions{display:flex;flex-wrap:wrap;gap:8px}.company-actions [data-company-open]{background:#477256;color:white;font-weight:700}.company-hint{line-height:1.6}.company-picker{border-top:1px solid #d6e0d9;margin-top:12px;padding-top:12px;min-width:0}.company-picker input[type=search]{width:100%;max-width:100%;box-sizing:border-box}.company-picker [hidden]{display:none!important}.company-master-list{max-height:260px;overflow:auto;overscroll-behavior:contain}.company-master-list article{border-bottom:1px solid #d6e0d9;padding:10px 0}.company-master-list p{margin:6px 0}.company-picker details{margin:12px 0}.company-picker summary{cursor:pointer;font-weight:600}.company-picker button{white-space:normal}.company-choice .checks{align-items:flex-start}.company-choice .checks label{overflow-wrap:anywhere;max-width:100%}

/* Form feedback stays with the original label/control; dialogs retain fixed actions. */
.form-errors{border:2px solid #ac3030;border-radius:10px;padding:12px;margin:10px 0;background:#fff4f3;grid-column:1/-1;color:#782020}.form-errors ul{margin:8px 0;padding-left:22px}.form-errors button{border:0;background:transparent;color:#782020;text-decoration:underline;text-align:left;padding:5px;min-height:36px}.field-error{display:block;color:#a32424;font-weight:600;margin:5px 0;line-height:1.5}[aria-invalid=true]{outline:2px solid #b92e2e!important;outline-offset:2px}input,select,textarea,.form-errors{scroll-margin-top:170px;scroll-margin-bottom:140px}.company-contact-preview{border-left:3px solid #699879;padding:0 12px;margin:12px 0}.company-contact-preview h4{margin:6px 0}.company-contact-preview article{border-bottom:1px solid #ddd;padding:6px 0}.company-contact-preview p{margin:6px 0}.layout-launch{font-size:.85rem}.dialog-heading .layout-launch{margin-left:auto}#layoutEditor{width:min(760px,calc(100vw - 24px))}#layoutEditor .dialog-heading{display:flex;gap:8px;align-items:center}#layoutEditor select{width:100%}#layoutItems{padding:0;list-style:none;display:grid;gap:8px}#layoutItems li{display:flex;gap:7px;align-items:center;border:1px solid #ccd8ce;border-radius:8px;padding:8px}#layoutItems li span{flex:1;min-width:0;overflow-wrap:anywhere}#layoutItems button{flex-shrink:0;padding:8px;min-width:48px}#layoutStatus{color:#9d2828}.layout-launch:focus-visible,#layoutItems button:focus-visible{outline:3px solid #235bb2;outline-offset:3px}
@media(max-width:700px){.dialog-heading{flex-wrap:wrap}.dialog-heading .layout-launch{padding:7px;min-height:36px;font-size:12px}#layoutEditor .dialog-actions{gap:5px}#layoutEditor .dialog-actions button{font-size:13px;padding:8px}#layoutItems li{padding:6px;gap:5px}}

#loginForm button[type=submit],#recoverForm button[type=submit]{position:sticky;bottom:0;z-index:2}

/* Native radio semantics with a check mark: one company per role. */
.company-picker{border-top:0;margin-top:0;padding-top:0}
.company-choice .choice{margin:0 0 8px}.company-choice .choice legend{font-size:.9rem;color:#506358}
.company-choice .choice .checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:8px}
.company-choice .choice .checks label{display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 12px;border:1px solid #9eb0a4;border-radius:8px;cursor:pointer;margin:0;box-sizing:border-box}
.company-choice .choice .checks label:has(input:checked){background:#e4f2e8;border-color:#28613d;font-weight:700}
.company-choice .choice input[type=radio]{appearance:none;flex:0 0 22px;width:22px;height:22px;min-height:0;margin:0;border:2px solid #61796a;border-radius:4px;background:white;display:grid;place-content:center;padding:0}
.company-choice .choice input[type=radio]:checked{background:#28613d;border-color:#28613d}
.company-choice .choice input[type=radio]:checked::after{content:'✓';color:white;font-size:17px;line-height:1;font-weight:800}
.company-choice .choice input[type=radio]:focus-visible{outline:3px solid #c47c0d;outline-offset:3px}
.company-choice .company-search{font-size:.85rem;color:#52685a}.company-choice .company-search input{min-height:40px;margin-top:4px}
.company-choice .company-hint{margin:6px 0;font-size:.85rem}.company-current{font-size:.95rem;margin:8px 0}
@media(forced-colors:active){.company-choice .choice input[type=radio]{appearance:auto}.company-choice .choice input[type=radio]::after{content:none}}

/* Drag starts only from its handle; the rest of the list scrolls normally. */
#layoutItems .layout-drag-handle{touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;min-width:44px;min-height:44px;padding:5px;font-size:24px;line-height:1}
#layoutItems.layout-drag-active{user-select:none;cursor:grabbing}
#layoutItems li.layout-dragging{background:#e0f1e6;border:2px dashed #28613d;box-shadow:0 0 0 2px #d1e8d9}
#layoutItems li.layout-dragging .layout-drag-handle{cursor:grabbing;background:#28613d;color:white}
#sitePrimaryPicker{border:1px solid #a5bcae;border-radius:10px;padding:14px;background:#f4faf6}
#sitePrimaryPicker h3{margin-top:0}#sitePrimaryPicker select{width:100%;max-width:100%}#sitePrimaryPicker button{margin-top:8px;white-space:normal}#sitePrimaryPicker p{overflow-wrap:anywhere}
@media(max-width:480px){#layoutItems li{flex-wrap:wrap}#layoutItems li>span{flex-basis:calc(100% - 60px)}#layoutItems li>[data-layout-step]{flex:1;margin-left:0}#sitePrimaryPicker{padding:10px}}

#layoutStatus{height:4.8em;overflow:auto;overflow-wrap:anywhere;margin:8px 0;flex-shrink:0}

/* Separate assignment selection from common personnel actions. */
.crew-list{display:grid;gap:.6rem}.crew-row{border:1px solid var(--line,#d1d5db);border-radius:.5rem;padding:.6rem;display:flex;align-items:center;justify-content:space-between;gap:.6rem;min-width:0}.crew-row>label{display:flex;align-items:center;gap:.5rem;min-width:0;flex:1}.crew-row>label span{overflow-wrap:anywhere}.crew-actions{display:flex;gap:.4rem;flex-wrap:wrap}.crew-actions button{min-height:44px}.dialog-actions{flex-wrap:wrap}
@media(max-width:540px){.crew-row{align-items:stretch;flex-direction:column}.crew-actions>button{flex:1}.crew-row>label{min-height:44px}}

#personTimeDialog .dialog-actions>button{min-height:44px}#personTimeDialog .dialog-actions{flex-wrap:wrap}#personTimeDialog .actions{align-items:stretch}

.dialog-actions>button{word-break:keep-all;overflow-wrap:normal;flex-shrink:0;min-width:max-content} .crew-actions>button{word-break:keep-all;min-width:max-content}
@media(max-width:480px){.dialog-actions>button{flex:1 0 auto;white-space:normal}.dialog-actions{gap:8px}}

#personTimeDialog .dialog-actions>button{min-width:0;max-width:100%;word-break:keep-all}#personTimeDialog #reloadPersonTime{flex:1 0 100%;white-space:normal}#personTimeDialog .dialog-actions [data-close]{flex-basis:100%}

.time-choice{min-width:0;margin:0;padding:10px;border:1px solid #cbd8d1}.time-parts{display:grid;grid-template-columns:1fr 1fr;gap:10px}.time-parts label{min-width:0}.time-parts select{width:100%;min-width:0}.crew-work-card{margin:10px 0;padding:12px;border:1px solid #cbd8d1;border-radius:8px}.crew-work-card>summary{cursor:pointer;font-weight:700}.crew-work-card [data-crew-work-values]{overflow-wrap:anywhere}#personForm #personWorkPanel{margin-top:18px;padding-top:12px;border-top:1px solid #cbd8d1}#personForm [data-pay-fields]{min-width:0}#personForm .formgrid{min-width:0}

/* Personnel identity and actions occupy separate full-width rows at every dialog width. */
.crew-row{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;justify-content:normal;gap:.65rem;padding:.8rem}
.crew-row>label{width:100%;margin:0;min-height:44px;align-items:flex-start;gap:.65rem}
.crew-row>label>input{flex:none;margin-top:.2rem;margin-right:0}
.crew-row>label .crew-person-text{display:block;flex:1;min-width:0;line-height:1.5}
.crew-person-name,.crew-person-meta,.crew-person-state{display:block;max-width:100%;white-space:normal;overflow-wrap:anywhere}
.crew-person-name{font-size:1rem;font-weight:650;color:#294235}
.crew-person-meta{font-size:.9rem;color:#5c7063;margin-top:.15rem}
.crew-person-state{margin-top:.25rem}
.crew-row>.crew-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,8.5rem),1fr));width:100%;min-width:0;gap:.4rem}
.crew-row>.crew-actions>button{min-width:0;max-width:100%;min-height:44px;white-space:normal;word-break:keep-all;overflow-wrap:anywhere;margin:0}
.crew-more{min-width:0;width:100%;border-top:1px solid #e3e8df}
.crew-more>summary{font-size:.875rem;line-height:1.5;white-space:normal;overflow-wrap:anywhere;padding:.5rem 0;min-height:44px}
.crew-more-actions{display:flex;flex-wrap:wrap;gap:.4rem;padding-top:.3rem;min-width:0}
.crew-more-actions>button{min-width:0;max-width:100%;white-space:normal;word-break:keep-all;overflow-wrap:anywhere}

/* Whole-app simplicity pass: compact spacing, consistent hierarchy, usable at enlarged text. */
:root{--brand:#315d48;--ink:#243e32;--muted:#627168;--line:#dce4dd;--surface:#fff;--canvas:#f4f6f3;color:var(--ink);background:var(--canvas);line-height:1.5}
body{background:var(--canvas)}header{padding:12px max(16px,calc((100vw - 1148px)/2));gap:10px;background:#fff;border-color:var(--line)}header b{font-size:1.3rem}header #identity{font-size:.85rem}
main{margin:16px auto;padding:0 16px}.hero,.panel,.card{padding:16px;margin:12px 0;border:1px solid var(--line);border-radius:12px;box-shadow:none;background:var(--surface)}.grid,.split{gap:12px}h1{font-size:1.5rem;margin:12px 0 14px}h2{font-size:1.15rem}h3{font-size:1.05rem}p{line-height:1.6;margin:8px 0}.kv{gap:12px}.kv strong{font-size:1rem}.muted,small{color:var(--muted)}
button,.button{border-radius:8px;padding:9px 12px;min-height:44px;max-width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.35;background:white;color:var(--ink)}button.primary,.button.primary{background:var(--brand);border-color:var(--brand)}button:hover,.button:hover{background:#edf3ee}button.primary:hover{background:#244c39}button:disabled{cursor:default}.danger-quiet{color:#a23b35;border-color:#dbc6c3;background:#fffafa}.danger-quiet:hover{background:#f9ecea}
button[data-ui-icon]::before,a.button[data-ui-icon]::before,summary[data-ui-icon]::before{content:'';display:inline-block;width:1em;height:1em;margin-right:.4em;vertical-align:-.12em;background:currentColor;mask-image:var(--ui-icon);mask-size:contain;mask-repeat:no-repeat;flex-shrink:0}
nav{gap:6px;margin-bottom:14px;position:relative}nav>button{font-size:.9rem}nav .nav-more{position:relative;margin:0}nav .nav-more>summary{list-style:none;border:1px solid var(--line);border-radius:8px;padding:10px 12px;min-height:44px;background:white;font-size:.9rem;cursor:pointer}nav .nav-more>summary::-webkit-details-marker{display:none}nav .nav-more>summary::after{content:'⌄';margin-left:.5em}nav .nav-more[open]>summary{background:#eaf1eb;border-color:#9eb7a6}.nav-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:min(240px,80vw);max-width:calc(100vw - 32px);padding:6px;display:grid;gap:4px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #243e3220;z-index:35}.nav-menu button{text-align:left;border-color:transparent;font-size:.9rem}.nav-more:not([open])>.nav-menu{display:none}
label{margin:9px 0}input,select,textarea{padding:9px 10px;border-radius:8px;min-width:0;max-width:100%}textarea{min-height:84px}.formgrid{gap:0 12px}.formgrid>*{min-width:0}.contact-editor,fieldset,.company-choice{padding:12px;border-radius:10px;margin:10px 0}.contact-card{padding:10px 0}.drop{padding:16px;border-radius:10px}.company-hint,.company-picker p{font-size:.9rem}.ui-help{padding:0;margin:8px 0;color:var(--muted)}.ui-help>summary{font-size:.9rem;min-height:36px;cursor:pointer;padding:6px 0}.ui-help p{font-size:.9rem}
dialog[open]{border-radius:12px}.dialog-heading{padding:12px 16px;gap:10px}.dialog-heading h2{font-size:1.15rem;min-width:0;line-height:1.4}.dialog-heading [data-close]{min-width:44px;width:44px;height:44px;padding:0;font-size:0;flex-shrink:0;border-color:transparent;background:transparent}.dialog-heading [data-close]::before{font-size:20px;margin:0}.dialog-body{padding:16px;scroll-padding-block:12px}.dialog-actions{gap:8px;padding:10px 16px}.dialog-actions:empty{display:none}.dialog-actions button.primary{margin-left:auto;min-width:112px}.dialog-actions>button{flex:0 1 auto}.page-action-bar{gap:8px;padding:8px 0;background:var(--canvas);box-shadow:none;border-bottom:1px solid var(--line)}.page-more>summary{border-radius:8px}.work-delete-status,#crewDeleteStatus{font-size:.9rem;grid-column:1/-1}.work-delete-status:empty{display:none}
.master-overview{gap:12px}.master-overview .log{padding:12px}.crew-row{padding:12px}.crew-more>summary{min-height:40px}.crew-actions button{font-size:.95rem}.crew-person-name{line-height:1.5}.crew-more-actions{gap:6px}
@media(max-width:700px){main{margin:10px auto;padding:0 10px}.hero,.panel,.card{padding:12px;border-radius:10px}header{padding:10px 12px}nav{gap:5px}nav>button,nav .nav-more>summary{font-size:.85rem;padding:9px 10px;white-space:normal}nav .nav-more:last-child .nav-menu{right:0}.dialog-body{padding:12px}.dialog-heading{padding:10px 12px}.dialog-actions{padding:9px 12px}.dialog-actions>button{flex:1 1 100px}.dialog-actions button.primary{min-width:0;margin-left:0}.formgrid{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}.kv{grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr))}.nav-menu{position:fixed;top:auto;right:10px;left:10px;min-width:0;max-width:none;max-height:60dvh;overflow:auto}.crew-actions{grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr))}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

#siteFilters{display:grid;grid-template-columns:minmax(0,2fr) minmax(220px,1fr);gap:8px 12px;align-items:start}#siteFilters>label{margin:0}.site-filter-options{min-width:0;margin:0}.site-filter-options>summary{padding:10px 12px;min-height:44px;border:1px solid var(--line);border-radius:8px;cursor:pointer;background:white}.site-filter-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));margin-top:8px}.site-filter-grid label{margin:0}.site-filter-options[open]{grid-column:1/-1}#siteFilters>.actions{grid-column:1/-1}@media(max-width:700px){#siteFilters{grid-template-columns:minmax(0,1fr)}.site-filter-options{grid-column:1/-1}}

/* One explicit project deletion confirmation; default focus remains on cancel. */
dialog.simple-purge[open]{width:min(420px,calc(100vw - 24px));top:50%;transform:translateY(-50%);max-height:calc(var(--visible-height,100dvh) - 24px)}.simple-purge .dialog-heading{display:none}.simple-purge .dialog-body{padding:20px}.simple-purge .purge-name{margin-top:0;overflow-wrap:anywhere}.simple-purge .dialog-actions{justify-content:flex-end}.simple-purge .dialog-actions button{flex:1;min-height:44px}.simple-purge #purgeState:empty{display:none}.simple-purge .form-errors{font-size:.9rem}

/* Site information only: compact contacts, with independent explicit call links. */
#siteContacts .site-contact{position:relative;padding:6px 0;min-width:0}
#siteContacts .site-contact-details{min-width:0;margin:0}
#siteContacts .site-contact-details>summary{display:flex;align-items:center;gap:8px;min-height:48px;padding:4px 0;list-style:none;box-sizing:border-box;cursor:pointer}
#siteContacts .site-contact-details>summary::-webkit-details-marker{display:none}
#siteContacts .has-call>.site-contact-details>summary{padding-right:calc(2em + 36px)}
#siteContacts .site-contact-summary{display:flex;flex-direction:column;flex:1;min-width:0;gap:2px;line-height:1.35;overflow-wrap:anywhere}
#siteContacts .site-contact-summary>span{font-size:.875em;color:#52616d}
#siteContacts .site-contact-details .badge{flex-shrink:0;margin:0}
#siteContacts .site-contact-toggle{font-size:.8em;flex-shrink:0;color:#52616d}
#siteContacts .site-contact-details[open] .site-contact-toggle span{display:inline-block;transform:rotate(180deg)}
#siteContacts .site-contact-call{position:absolute;right:0;top:10px;width:calc(2em + 24px);min-width:60px;min-height:44px;box-sizing:border-box;display:inline-flex;justify-content:center;align-items:center;padding:6px 8px}
#siteContacts .site-contact-body{padding:6px 0 8px;overflow-wrap:anywhere}
#siteContacts .site-contact-body dl{margin:0}
#siteContacts .site-contact-body dl>div{display:flex;flex-wrap:wrap;gap:2px 8px;margin:4px 0}
#siteContacts .site-contact-body dt{color:#52616d;min-width:5em}
#siteContacts .site-contact-body dd{margin:0;min-width:0;flex:1 1 9em;white-space:pre-wrap;overflow-wrap:anywhere}
#siteContacts .site-contact-body .actions{margin:6px 0;flex-wrap:wrap}
#siteContacts .site-contact-body small{display:block;line-height:1.4}
#siteContacts summary:focus-visible,.site-role-companies summary:focus-visible{outline:3px solid #176b9a;outline-offset:2px;border-radius:4px}
.site-role-companies>article{padding:6px 0;border-bottom:1px solid #e2e9ee;overflow-wrap:anywhere}
.site-role-companies>article h3{font-size:1em;margin:4px 0}
.site-role-companies>article p{margin:4px 0}
.site-role-companies .site-company-contact,.site-role-companies .site-company-help{margin:0}
.site-role-companies .site-company-contact>summary,.site-role-companies .site-company-help>summary{min-height:44px;box-sizing:border-box;padding:10px 0;overflow-wrap:anywhere}
.site-role-companies .site-company-contact>div{padding:4px 0}
@media(max-width:540px){#siteContacts .site-contact-details>summary{gap:6px}#siteContacts .site-contact-toggle{font-size:.75em}}

@media(max-width:540px){#siteContacts .site-contact-details>summary{flex-wrap:wrap;justify-content:flex-start;gap:4px 8px;padding-right:0}#siteContacts .site-contact-summary{order:3;flex-basis:100%;padding-top:4px}#siteContacts .site-contact-toggle{order:2;margin-right:calc(2em + 36px)}#siteContacts .site-contact-details .badge{order:1}}

/* Native columns use the available container width, keep independent card heights,
   and retain DOM order and saved layout keys. No fixed-height rows or JS reflow. */
#content:has(> #siteContacts){container:site-detail / inline-size;columns:22em 2;column-gap:12px;column-fill:balance}
#content:has(> #siteContacts)>:not(.site-role-companies,#siteContacts,#siteWorkCrew){column-span:all}
#content:has(> #siteContacts)>.site-role-companies,#content:has(> #siteContacts)>#siteContacts,#content:has(> #siteContacts)>#siteWorkCrew,.site-info-panels>.panel{display:block;vertical-align:top;width:100%;min-width:0;break-inside:avoid-column;margin:0 0 12px}
.calendar-popup-body{container:site-popup / inline-size}
.site-info-panels{columns:22em 2;column-gap:12px;column-fill:balance}
#siteWorkCrew .crew-work-card{margin:8px 0}
#content:has(> #siteContacts)>.hero .kv,#calendarSitePopup .calendar-popup-body>.kv{grid-template-columns:minmax(0,1fr);gap:8px 12px}
#content:has(> #siteContacts)>.hero .kv>label,#calendarSitePopup .calendar-popup-body>.kv>label{min-width:0;margin:4px 0;overflow-wrap:anywhere;font-size:.875em}
#content:has(> #siteContacts)>.hero .kv strong,#calendarSitePopup .calendar-popup-body>.kv strong{font-size:1.143em}
@container site-popup (min-width:20em){#calendarSitePopup .calendar-popup-body>.kv{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container site-popup (min-width:40em){#calendarSitePopup .calendar-popup-body>.kv{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container site-popup (min-width:76em){#calendarSitePopup .calendar-popup-body>.kv{grid-template-columns:repeat(6,minmax(0,1fr))}}
@container site-detail (min-width:20em){#content:has(> #siteContacts)>.hero .kv{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container site-detail (min-width:54em){#content:has(> #siteContacts)>.hero .kv{grid-template-columns:repeat(4,minmax(0,1fr))}}

#calendarSitePopup .site-info-panels>.panel{margin:0 0 12px}

/* Only the two remaining site cards; no inferred action icon on contact names. */
#siteContacts .site-contact-details>summary::before{display:none;content:none}
@container site-popup (min-width:45em){.site-info-panels>#siteWorkCrew{break-before:column}}
@container site-detail (min-width:45em){#content:has(> #siteContacts)>#siteWorkCrew{break-before:column}}

/* Project crew assignment and explicit common-roster search. */
#crewPicker,#crewHistory{margin-top:12px;padding:10px;border:1px solid #ccd8cf;border-radius:8px}#crewChoices{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}#crewChoices button{white-space:normal;overflow-wrap:anywhere;max-width:100%;text-align:left}#crewHistory[hidden],[data-crew-record-delete][hidden]{display:none!important}

.kv>.participation-summary{grid-column:1/-1;min-width:0;border-top:1px solid #dfe5dc;padding-top:10px}.participation-summary input{max-width:240px}.participation-summary label{max-width:240px}.participation-summary strong,.participation-summary small{display:block}.participation-summary p{margin:6px 0}

/* Pending images only; original files and upload metadata stay unchanged. */
.attachment-pending{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px;margin:10px 0}.attachment-pending-info{flex:1 1 140px;min-width:0;overflow-wrap:anywhere}.attachment-pending-info button{display:block;margin-top:8px}.attachment-preview{display:flex;align-items:center;justify-content:center;width:min(144px,32vw);max-width:100%;min-height:60px;border:1px solid #ccd8cf;border-radius:8px;background:#f5f8f5;overflow:hidden}.attachment-preview:empty{display:none}.attachment-preview img{display:block;width:auto;height:auto;max-width:100%;max-height:144px;object-fit:contain}.attachment-preview-failed{padding:8px;font-size:.85em;overflow-wrap:anywhere}

.saved-image-preview{margin:10px 0;border:1px solid #ccd8cf;border-radius:8px;padding:8px;min-width:0;max-width:100%}.saved-image-preview summary{cursor:pointer}.saved-image-preview [data-saved-image-body]{margin-top:8px;overflow-wrap:anywhere;min-width:0}.saved-image-preview img{display:block;width:auto;height:auto;max-width:100%;max-height:480px;object-fit:contain;margin:auto}.saved-image-section article{margin:12px 0;overflow-wrap:anywhere}

.site-address{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:8px 0;overflow-wrap:anywhere}.site-address>span:first-child{min-width:0;max-width:100%}.site-address-links{display:flex;flex-wrap:wrap;gap:6px}.site-address-links a{padding:6px 10px;min-height:36px;font-size:.9em}.site-detail-popup{width:min(1440px,calc(100vw - 24px));max-width:calc(100vw - 24px);height:90dvh;max-height:calc(100dvh - 24px);padding:0;overflow:hidden}.site-detail-popup[open]{display:flex;flex-direction:column}.site-detail-popup-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;flex:none;border-bottom:1px solid #ccd8cf;background:#f7f7f2}.site-detail-popup-bar h2{font-size:1.15em;margin:0}.site-detail-popup-body{overflow:auto;min-height:0;flex:1;padding:12px}.site-detail-popup #content{max-width:none;margin:0;padding:0;display:block}.site-detail-popup .page-action-bar{top:0!important;grid-column:auto;grid-row:auto}.site-detail-popup .site-edit-bar{top:0!important}.site-detail-popup::backdrop{background:rgba(20,35,25,.45)}@media(max-width:600px){.site-detail-popup{width:calc(100vw - 12px);max-width:calc(100vw - 12px);height:94dvh;max-height:calc(100dvh - 12px)}.site-detail-popup-body{padding:8px}}

.phone-inline{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;overflow-wrap:anywhere}.phone-inline>.button{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}#siteContacts .site-contact-quick{margin:4px 0 8px}#siteContacts .site-contact-call{position:static;width:auto;min-width:60px;min-height:44px}#siteContacts .has-call>.site-contact-details>summary{padding-right:0}#siteContacts .site-contact-toggle{margin-right:0}

.calendar-day-popup{width:min(640px,calc(100vw - 16px));max-width:calc(100vw - 16px);max-height:90dvh;padding:0;overflow:hidden}.calendar-day-popup[open]{display:flex;flex-direction:column}.calendar-day-popup-body{overflow:auto;min-height:0;padding:12px}.calendar-day-popup .calendar-day-panel{margin:0;border:0;padding:0}.calendar-day-popup .calendar-day-panel[hidden]{display:none}.calendar-day-popup .calendar-popup-bar{flex:none;position:sticky;top:0;background:#f7f7f2}.calendar-day-popup button{min-height:44px}.calendar-day-popup .card{overflow-wrap:anywhere}.calendar-day-popup::backdrop{background:rgba(20,35,25,.45)}

.attachment-file-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(120px,1fr) 80px auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid #dfe5dc;min-width:0}.attachment-file-row>*,.attachment-file-name{min-width:0;overflow-wrap:anywhere}.attachment-file-name small{display:block;margin-top:4px}.attachment-file-info{display:block}.attachment-file-info>span{display:block;font-size:.85em;margin-bottom:4px}.attachment-file-info input{width:100%;min-width:0}.attachment-file-row .attachment-preview{width:80px;min-height:0}.attachment-file-row .attachment-preview img{max-height:72px}.attachment-file-actions{display:flex;gap:6px;flex-wrap:wrap}.attachment-options{margin-bottom:12px}.attachment-options>summary{cursor:pointer}.saved-image-preview{display:inline-block;border:0;padding:0;margin:8px 0;vertical-align:middle}.saved-image-preview [data-saved-image-body]{margin:0}.saved-image-preview .saved-image-open{display:block;padding:4px;min-width:44px;min-height:44px}.saved-image-preview img{max-width:120px;max-height:96px;width:auto;height:auto;object-fit:contain;margin:0}.saved-image-section{display:flex;flex-wrap:wrap;gap:12px}.saved-image-section>h3{flex-basis:100%;margin-bottom:0}.saved-image-section article{max-width:180px;min-width:0;margin:0}@media(max-width:700px){.attachment-file-row{grid-template-columns:minmax(100px,1fr) minmax(95px,1fr);gap:8px}.attachment-file-row [data-attachment-preview]{grid-column:1}.attachment-file-row>button,.attachment-file-actions{grid-column:2;justify-self:end}.saved-image-preview img{max-width:100px;max-height:80px}}

/* 2026-10-29 approved visual direction; existing semantics and order remain intact. */
:root{--brand:#305e49;--ink:#242c28;--muted:#68736c;--line:#e5e9e5;--surface:#fff;--canvas:#fff;color:var(--ink);background:#fff}
body{background:#fff;color:var(--ink)}header{background:#fff;border-color:var(--line);padding:20px max(24px,calc((100vw - 1120px)/2));gap:16px}header b{color:var(--ink);font-size:21px;letter-spacing:-.6px}header #identity{color:var(--muted)}
main{max-width:1120px;padding:0 28px;margin:28px auto}h1{font-size:26px;letter-spacing:-.7px;color:var(--ink);line-height:1.4}h2{font-size:18px;color:var(--ink);font-weight:650}h3{font-size:16px;color:var(--ink)}
.hero,.panel,.card{background:#fff;box-shadow:none;border:0;border-top:1px solid var(--line);border-radius:0;padding:24px 0;margin:0}.hero{border-top:0;padding-top:12px}.card{padding:18px;border:1px solid var(--line);border-radius:8px}.grid{gap:16px}.split{gap:32px;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
button,.button{color:var(--ink);background:#fff;border-color:#dce2dc;border-radius:7px;padding:10px 14px;font-size:14px;min-height:44px}button:hover,.button:hover{background:#f5f7f4}button.primary,.button.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.primary:hover,.button.primary:hover{background:#244d39}a{color:var(--brand)}
input,select,textarea{border-color:#d9e0d9;border-radius:6px;color:var(--ink);background:#fff;padding:11px 12px}label{color:var(--muted);font-size:14px;margin:10px 0}.kv label{color:var(--muted);font-size:13px}.kv strong{color:var(--ink);font-weight:550;line-height:1.6}.kv{gap:20px 24px}.tag,.badge{background:#f5f7f4;color:#54635a;border-radius:5px}.muted,small{color:var(--muted)}
nav{gap:8px;margin:16px 0}nav>button{border-color:transparent;background:#f5f7f4;border-radius:24px;padding:10px 16px}nav .nav-more>summary{border-color:var(--line);border-radius:24px}.layout-launch{font-size:12px;color:var(--muted);border-color:transparent;background:transparent}.page-action-bar,.site-edit-bar{background:#fff;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;padding:10px 0;gap:8px}.page-more>summary,.dialog-more>summary{border-color:var(--line);background:#fff}
.site-overview h1{margin:22px 0 8px}.site-overview .header-title{margin-bottom:24px}.site-overview .kv{padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:16px 0}.site-overview>h3{margin-top:24px}.contact-card,.filecard,.log{border-color:var(--line);padding:16px 0}#siteContacts .site-contact{padding:12px 0}#siteContacts .site-contact-summary>strong{font-weight:600}.crew-row,.crew-work-card{border-color:var(--line);border-radius:7px;background:#fff}.crew-person-name{color:var(--ink)}.crew-person-meta{color:var(--muted)}
fieldset,.contact-editor{border:0;border-top:1px solid var(--line);border-radius:0;padding:20px 0;margin:16px 0}legend{padding:0 8px 0 0;color:var(--ink)}.company-choice{border:0;border-top:1px solid var(--line);border-radius:0;padding:16px 0}.company-choice .choice .checks label{border-color:var(--line);border-radius:6px;background:#fff;font-size:14px}.company-choice .choice .checks label:has(input:checked){background:#f0f5ef;border-color:#9ab19f}.checks label{background:#f5f7f4}.contact-primary h3{font-weight:600}#sitePrimaryPicker{border:1px solid var(--line);border-radius:7px;background:#f8faf7}
.formgrid{gap:6px 20px}.design-section{margin:24px 0 4px;padding-top:22px;border-top:1px solid var(--line);font-size:17px;font-weight:650}.design-section:first-child{border:0;padding-top:0;margin-top:4px}#projectForm>.wide:has(>h3){border-top:1px solid var(--line);padding-top:20px;margin-top:18px}#attachmentStaging{border:0;border-top:1px solid var(--line);border-radius:0;padding:18px 0;margin-top:22px}#attachmentStaging>summary{font-size:17px;color:var(--ink)}.drop{border:1px dashed #becbbf;border-radius:7px;padding:22px;background:#fafbf9}.drop.active{background:#eef4ee}.attachment-file-row{border-color:var(--line);gap:12px}.attachment-file-info>span{color:var(--muted)}
dialog[open]{border-radius:12px;box-shadow:0 16px 56px #172a3026}.dialog-heading{padding:18px 24px;background:#fff;border-color:var(--line)}.dialog-heading h2{font-size:19px}.dialog-body{padding:22px 24px;scroll-padding-block:20px}.dialog-actions{background:#fff;border-color:var(--line);padding:14px 24px;padding-bottom:max(14px,env(safe-area-inset-bottom))}.dialog-actions>button{min-width:0}.dialog-actions button.primary{padding-inline:24px}dialog::backdrop{background:#1d302a55}
.filecard>p{font-size:13px;margin:5px 0}.filecard>.muted{font-size:13px}.filecard>.badge{font-size:11px;justify-self:start}.filecard:has(>.saved-image-preview){display:grid;grid-template-columns:90px minmax(0,1fr);gap:6px 16px;align-items:start}.filecard:has(>.saved-image-preview)>*{grid-column:2;min-width:0}.filecard>.saved-image-preview{grid-column:1!important;grid-row:1 / span 5;margin:0;border:0;padding:0;align-self:start}.saved-image-preview .saved-image-open{padding:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#f5f7f4;min-width:44px}.saved-image-preview img{width:88px;height:74px;max-width:100%;max-height:74px;object-fit:contain}.filecard>.actions{gap:6px;margin-top:6px}.filecard>.actions button,.filecard>.actions .button{font-size:13px;padding:8px 10px}.filecard [data-file-info]{min-width:0}.filecard [data-file-title]{font-weight:600;color:var(--ink)}
.media-card{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:0 0 16px;background:#fff}.media-preview{border-color:var(--line);background:#f8faf7;border-radius:6px}.preview{background:#f3f5f1}#notice{background:#f0f5ef;color:var(--brand)}
@media(max-width:700px){header{padding:18px;gap:8px}header b{font-size:18px}header span{margin:0 6px}main{padding:0 18px;margin:20px auto}h1{font-size:23px}h2{font-size:17px}.split{grid-template-columns:minmax(0,1fr);gap:0}.hero,.panel{padding:22px 0}.card{padding:16px}.kv{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 14px}.formgrid{grid-template-columns:minmax(0,1fr);gap:4px}.formgrid>.wide{grid-column:auto}.design-section{margin-top:22px}.dialog-heading{padding:14px 18px;flex-wrap:wrap}.dialog-body{padding:18px}.dialog-actions{padding:12px 18px;padding-bottom:max(12px,env(safe-area-inset-bottom));gap:8px}.dialog-actions>button.primary{flex:1;min-width:88px}.dialog-actions>.actions{flex-basis:100%}.site-edit-bar{flex-wrap:wrap}.site-edit-bar>span{flex-basis:100%}.site-edit-bar button{flex:1;min-width:0}input,select,textarea{font-size:16px}.filecard:has(>.saved-image-preview){grid-template-columns:72px minmax(0,1fr);gap:6px 12px}.saved-image-preview img{width:70px;height:62px;max-height:62px}.attachment-file-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.attachment-file-row .attachment-preview{max-width:80px}#vendorPeople fieldset{grid-template-columns:1fr}}
@media(max-width:360px){header{padding:14px}main{padding:0 14px}.dialog-heading,.dialog-body,.dialog-actions{padding-left:14px;padding-right:14px}.kv{grid-template-columns:minmax(0,1fr)}.filecard>.actions{flex-wrap:wrap}.filecard>.actions button{flex:1}.dialog-heading h2{font-size:18px}.dialog-heading>.layout-launch{flex-basis:100%;text-align:right}}
.saved-image-preview img{width:auto;height:auto;max-width:88px;max-height:74px}.saved-image-preview .saved-image-open{display:flex;align-items:center;justify-content:center;width:90px;min-height:74px}
@media(max-width:700px){.saved-image-preview img{width:auto;height:auto;max-width:70px;max-height:62px}.saved-image-preview .saved-image-open{width:72px;min-height:62px}}
.site-detail-popup-bar{background:#fff;border-color:var(--line)}body .site-edit-bar.page-action-bar{flex-wrap:wrap;background:#fff}body .site-edit-bar.page-action-bar>button{flex:0 1 auto;min-width:max-content;word-break:keep-all;overflow-wrap:normal}body .site-edit-bar .page-more-menu button{flex:none;min-width:0;word-break:keep-all}
@media(max-width:700px){body .site-edit-bar.page-action-bar>button{flex:1 0 auto;min-width:max-content}body .site-edit-bar.page-action-bar>.page-more{flex:0 0 auto;margin-left:auto}}

.site-upload-form{border-top:1px solid var(--line,#ddd);margin-top:20px;padding-top:16px;display:grid;gap:12px;min-width:0}.site-upload-form .drop{min-width:0}.site-upload-form input[type=file]{max-width:100%}.site-upload-form>button{justify-self:start}.site-upload-form h3{margin:0}.site-upload-saved .filecard{min-width:0}

.project-attachments{border:1px solid var(--line,#ddd);border-radius:10px;padding:16px;min-width:0}.project-attachments>summary{font-weight:700}.project-file-choices{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.project-file-choices button{min-height:44px;white-space:normal}.project-file-kind{min-width:0}.project-attachments input[type=file]{max-width:100%}.project-attachments .attachment-file-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.project-attachments .attachment-file-name{grid-column:1/-1}.project-attachments .attachment-preview{grid-column:1}.project-attachments [data-remove-project-file]{justify-self:end;align-self:start}.dialog-actions #cancelProject{margin-left:auto}.dialog-actions #cancelProject+button{margin-left:0}@media(max-width:420px){.project-file-choices{display:grid;grid-template-columns:1fr}.project-attachments .attachment-file-row{grid-template-columns:minmax(0,1fr)}.project-attachments .attachment-file-name{grid-column:1}.project-attachments{padding:12px}.dialog-actions #cancelProject{min-width:68px}}

.project-attachments [data-remove-project-file]{grid-column:auto}.dialog-actions .project-save-actions{display:flex;gap:8px;align-items:stretch;margin-left:auto;min-width:224px}.dialog-actions .project-save-actions>button{flex:1;min-width:96px;min-height:44px;margin-left:0;white-space:nowrap;word-break:keep-all}.dialog-actions .project-save-actions>button.primary{margin-left:0}@media(max-width:700px){.dialog-actions .project-save-actions{flex:1 0 100%;margin-left:0}.dialog-actions .project-save-actions>button{min-width:0}}

.inline-project-editor{display:flex;flex-direction:column;min-width:0;background:var(--surface,#fff);width:100%;box-sizing:border-box}.inline-project-editor>.dialog-heading{flex:none;border-bottom:1px solid var(--line,#ddd)}.inline-project-editor>.dialog-heading h2{margin:0}.inline-project-editor>.dialog-body{min-width:0;flex:1}.inline-project-editor>.dialog-actions{flex:none;position:sticky;bottom:0;background:#fff;z-index:4;border-top:1px solid var(--line,#ddd)}.inline-project-editor .project-save-actions{min-width:224px}.inline-project-editor .inline-upload-retry{border-top:1px solid var(--line,#ddd);margin-top:24px;padding-top:16px}.inline-project-editor .project-attachments{margin:16px 0}.calendar-site-popup.project-editing,.site-detail-popup.project-editing{height:min(94dvh,1100px);max-height:calc(100dvh - 16px)}dialog.project-editing>.inline-project-editor{height:100%;max-height:calc(100dvh - 16px);min-height:0}dialog.project-editing>.inline-project-editor>.dialog-body{overflow:auto;overscroll-behavior:contain}#content>.inline-project-editor>.dialog-body{overflow:visible}#content>.inline-project-editor>.dialog-heading{position:sticky;top:var(--page-actions-top,0);z-index:3;background:#fff}@media(max-width:700px){.inline-project-editor>.dialog-body{padding:12px}.inline-project-editor>.dialog-heading{padding:12px}.inline-project-editor>.dialog-actions{padding:12px;padding-bottom:max(12px,env(safe-area-inset-bottom))}.inline-project-editor .project-save-actions{min-width:0;flex-basis:100%}.inline-project-editor .project-save-actions>button{min-width:0;white-space:normal}}

.inline-project-editor>.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}#content>.inline-project-editor>.dialog-heading{position:static}.inline-project-editor .dialog-heading [data-close]{margin-left:auto}

.inplace-editor,.inplace-form{display:contents!important}.inplace-value{position:relative;display:block;min-width:0;max-width:100%}.inplace-original{visibility:hidden;white-space:pre-wrap}.inplace-inputs{position:absolute;inset:0;display:flex;align-items:stretch;gap:2px;min-width:0}.inplace-inputs>input,.inplace-inputs>textarea,.inplace-inputs>button,.inplace-inputs>label{font:inherit!important;line-height:inherit!important;margin:0!important;padding:0 2px!important;min-width:0!important;min-height:0!important;width:100%;height:100%;border:0!important;border-radius:2px!important;box-shadow:inset 0 -1px #2366b5;background:#f1f7ff;color:#172d49;box-sizing:border-box}.inplace-inputs>textarea{resize:none;overflow:auto}.inplace-inputs>label{font-size:0!important;display:flex}.inplace-inputs>label select{font-size:14px;min-width:0;height:100%;margin:0;padding:0;width:100%}.inplace-editing .site-overview,.inplace-editing .kv,.inplace-editing #siteContacts,.inplace-editing #siteWorkCrew,.inplace-editing .participation-summary,.inplace-editing .site-upload-saved{position:relative}.inplace-options{position:absolute;top:0;right:0;z-index:7;max-width:34%;font-size:12px;margin:0!important}.inplace-options>summary{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#e7f0fa;padding:2px 5px;border-radius:4px;cursor:pointer}.inplace-options-body{position:absolute;right:0;top:100%;width:min(460px,calc(100vw - 48px));max-height:60vh;overflow:auto;padding:12px;background:#fff;border:1px solid #91a9c6;border-radius:6px;box-shadow:0 5px 18px #0003;box-sizing:border-box}.inplace-options-body label{display:block}.inplace-options-body .checks label{display:flex}.inplace-options-body input,.inplace-options-body textarea,.inplace-options-body select{max-width:100%}.inplace-actions{position:fixed;z-index:30;bottom:8px;left:50%;transform:translateX(-50%);width:min(620px,calc(100vw - 32px));display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;background:#fff;border:1px solid #a6b8cd;border-radius:8px;box-shadow:0 2px 12px #0003;box-sizing:border-box}.inplace-actions .project-save-actions{display:flex;gap:8px;flex:none}.inplace-actions button{min-width:70px;min-height:42px}.inplace-status{font-size:13px}.inplace-editing .calendar-popup-body,.inplace-editing .site-detail-popup-body{padding-bottom:90px}.inplace-editing .inplace-inputs [type=date]{font-size:12px!important}.inplace-editing [data-file-title] .inplace-value{min-width:100px}.inplace-editing .site-contact-summary .inplace-value{min-width:70px}@media(max-width:700px){.inplace-status{font-size:11px}.inplace-actions{gap:4px;padding:6px}.inplace-actions .project-save-actions{gap:4px}.inplace-actions button{min-width:56px;padding:8px}.inplace-options-body{position:fixed;left:16px;right:16px;top:20vh;width:auto;max-height:65vh}.inplace-inputs>input{font-size:max(12px,1em)!important}}

.inplace-value{display:contents!important}.inplace-original{white-space:inherit;display:contents}.inplace-editing [data-file-title] .inplace-value,.inplace-editing .site-contact-summary .inplace-value{min-width:0}.inplace-inputs{overflow:hidden}.inplace-inputs>label{border:0!important;box-shadow:none!important}.inplace-inputs select{min-height:0!important;height:100%!important;padding:0!important;border:0!important}.inplace-options:not([open]){height:24px}.inplace-options>summary{min-height:0!important;height:24px;box-sizing:border-box}.inplace-editing .kv>.inplace-options{top:-20px}

.file-delete-pending{outline:2px dashed #a23b32;outline-offset:2px}.file-delete-pending [data-file-delete-status]{display:block;color:#8c251e;font-weight:600}[data-delete-file]{min-height:44px;min-width:44px}

/* Only dialog headings capture drag gestures; content and controls keep native scrolling. */
.popup-drag-handle{cursor:grab;touch-action:none;user-select:none}.popup-drag-handle button,.popup-drag-handle input,.popup-drag-handle select,.popup-drag-handle a{touch-action:auto;cursor:pointer}.popup-dragging{cursor:grabbing}.inplace-upload-area{position:static;max-width:none;margin:16px 0;border:1px solid var(--line,#ddd);border-radius:8px;padding:8px 12px}.inplace-upload-area>summary{padding:8px 0}.inplace-upload-note{font-size:13px;color:#355f50}.inplace-upload-area .site-upload-form{margin:0;min-width:0}.inplace-upload-area .drop{max-width:100%}

/* Drawing and roadview view rows; stored metadata and editing controls stay intact. */
.filecard.compact-file-card{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;min-width:0;max-width:100%;padding:10px 0}
.filecard.compact-file-card>[data-file-info],.filecard.compact-file-card>.actions{display:contents}
.filecard.compact-file-card>[data-file-info]>:not([data-file-title]),.filecard.compact-file-card>.badge,.filecard.compact-file-card>.muted,.filecard.compact-file-card>p{display:none}
.filecard.compact-file-card [data-file-title]{min-width:0;max-width:100%;overflow-wrap:anywhere}
.filecard.compact-file-card>.saved-image-preview,.filecard.compact-file-card>.compact-file-type{order:-1;flex:none;margin:0;align-self:center}
.filecard.compact-file-card>.actions>button,.filecard.compact-file-card>.actions>.button{flex:none;max-width:100%;font-size:13px;padding:8px 10px;margin:0}
.compact-file-type{display:flex;align-items:center;justify-content:center;width:72px;min-height:62px;border:1px solid var(--line);border-radius:6px;background:#f5f7f4;color:var(--muted);font-size:13px;box-sizing:border-box}
.media-card:has(>.compact-file-card)>.media-preview{display:none}
.inplace-editing .filecard.compact-file-card>[data-file-info]{display:block;flex:1 1 100%}
.inplace-editing .filecard.compact-file-card>[data-file-info]>:not([data-file-title]){display:inline-block}
.inplace-editing .filecard.compact-file-card>.badge{display:inline-block}
.inplace-editing .filecard.compact-file-card>.muted,.inplace-editing .filecard.compact-file-card>p{display:block;flex-basis:100%}

/* Personnel assignment and work drafts remain reachable without floating over columns. */
.inplace-editing #siteWorkCrew>.inplace-crew-options{position:static;max-width:none;width:100%;margin:12px 0!important}.inplace-editing .inplace-crew-options>.inplace-options-body{position:static;width:100%;max-height:60vh;overflow:auto;box-sizing:border-box}.inplace-crew-options .checks{display:grid;grid-template-columns:1fr;gap:8px}.inplace-crew-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.inplace-crew-row>label{flex:1;min-width:140px;margin:0}.inplace-crew-row>button{flex:none;min-height:44px}.inplace-crew-options>summary{max-width:100%;height:auto!important;white-space:normal!important}

/* Keep editable personnel lists out of multicolumn fragment clipping. */
#content.inplace-editing:has(>#siteContacts),.inplace-editing .site-info-panels{column-count:1!important}.inplace-editing #siteWorkCrew{break-before:auto!important}

.inplace-crew-options .checks>[hidden]{display:none!important}

/* Keep company selection inside the editing flow, including long lists in WebKit. */
.inplace-editing .kv>.inplace-company-options{position:static;grid-column:1/-1;max-width:none;width:100%;margin:10px 0!important}.inplace-company-options>.inplace-options-body{position:static;width:100%;max-height:60vh;overflow:auto;box-sizing:border-box}.inplace-company-options>summary{height:auto!important;white-space:normal!important}

/* View cards show one title; editing keeps existing information and deletion controls. */
body:not(:has(.inplace-editing)) [data-file-info]>:not([data-file-title]){display:none!important}
.site-notes[hidden]{display:none!important}
.inplace-editing .site-notes>p{min-height:64px}
.filecard [data-file-title]{overflow-wrap:anywhere;min-width:0}
#relatedFileList .filecard{padding:8px;margin:6px 0;min-width:0;overflow-wrap:anywhere}
#relatedFileList .filecard>.muted,#relatedFileList .filecard>p,#relatedFileList .filecard>.badge{display:none}
.inplace-editing #relatedFileList .filecard>.muted,.inplace-editing #relatedFileList .filecard>p{display:block}
#relatedFileList .filecard .saved-image-preview{max-width:72px;max-height:64px}
.saved-image-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:8px 16px}
.saved-image-section>h3{grid-column:1/-1}
.saved-image-section>article{display:grid;grid-template-columns:64px minmax(0,1fr);gap:8px;align-items:center;padding:8px 0;margin:0;border-bottom:1px solid #e1e7ef;max-width:none;width:100%;box-sizing:border-box}
.saved-image-section>article>[data-file-info]{grid-column:2;grid-row:1;min-width:0;overflow-wrap:anywhere}
.saved-image-section>article>.saved-image-preview{grid-column:1;grid-row:1;width:64px;margin:0}
.saved-image-section .saved-image-open{padding:0;width:64px;height:56px;min-height:0}
.saved-image-section .saved-image-open img{width:64px;height:56px;object-fit:cover}
body:not(:has(.inplace-editing)) .saved-image-section>article>.muted{display:none}
.inplace-editing .saved-image-section>article>.muted{grid-column:2}

/* Floating editors use the browser top layer, outside ancestor clipping/stacking. */
.inplace-options[open]{z-index:20}
.inplace-options-body.inplace-floating-panel{position:fixed;inset:auto;margin:0;box-sizing:border-box;max-width:none;overflow:auto;overscroll-behavior:contain}
.inplace-floating-panel::backdrop{background:transparent}
