:root{--ink:#172033;--muted:#687189;--line:#dfe4ed;--panel:#fff;--bg:#f3f6fa;--nav:#101a2d;--brand:#2256d9;--brand-dark:#183ea0;--danger:#b42318;--success:#16794a;--warning:#9a6700;--radius:16px;--shadow:0 12px 30px rgba(18,32,59,.08)}*{box-sizing:border-box}html{font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--bg)}body{margin:0;min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.topbar{height:72px;padding:0 clamp(18px,4vw,48px);background:var(--nav);color:#fff;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:1000;box-shadow:0 5px 20px rgba(5,12,25,.22)}.brand{display:flex;align-items:center;gap:12px;font-weight:800;font-size:1.05rem}.brand-mark{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#4d7cff,#153fb0);display:inline-grid;place-items:center;color:#fff;font-weight:900;letter-spacing:-1px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}.brand-large{font-size:1.3rem}.brand-large .brand-mark{width:58px;height:58px}.top-actions{display:flex;gap:10px}.page-shell{width:min(1500px,calc(100% - 36px));margin:0 auto;padding:36px 0 60px}.page-heading,.survey-titlebar{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:24px}.page-heading h1,.survey-titlebar h1{font-size:clamp(2rem,4vw,3.25rem);line-height:1;margin:5px 0 10px;letter-spacing:-.04em}.page-heading p,.survey-titlebar p{margin:0;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-weight:800;font-size:.72rem;color:var(--brand);margin:0}.button{border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);padding:10px 15px;font-weight:750;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.18s ease}.button:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(26,42,74,.1)}.button.primary{background:var(--brand);color:#fff;border-color:var(--brand)}.button.primary:hover{background:var(--brand-dark)}.button.ghost{background:transparent}.button.ghost-light{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2);color:#fff}.button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.button.wide{width:100%}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-bottom:24px}.kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 6px 18px rgba(18,32,59,.05)}.kpi span{display:block;color:var(--muted);font-size:.82rem;font-weight:700}.kpi strong{display:block;font-size:2rem;margin-top:6px;letter-spacing:-.04em}.filter-panel{padding:16px;margin-bottom:24px}.filter-form{display:grid;grid-template-columns:minmax(240px,1fr) 220px auto auto;gap:12px;align-items:end}label>span{display:block;font-size:.78rem;font-weight:800;color:#4a546b;margin-bottom:7px}input,select,textarea{width:100%;border:1px solid #cfd6e2;border-radius:10px;padding:11px 12px;background:#fff;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:#6690f4;box-shadow:0 0 0 3px rgba(34,86,217,.12)}textarea{resize:vertical}.survey-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.survey-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:21px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px}.card-head{display:flex;justify-content:space-between;gap:14px}.card-head h2{margin:10px 0 0;font-size:1.35rem}.updated{font-size:.72rem;color:var(--muted);text-align:right}.card-address{margin:0;font-weight:700;min-height:42px}.status-pill{display:inline-flex;border-radius:999px;padding:6px 10px;font-size:.72rem;font-weight:850;line-height:1;white-space:nowrap}.status-pill.large{font-size:.82rem;padding:9px 14px}.status-pill.draft{background:#e9edf5;color:#465066}.status-pill.survey-complete{background:#def7ec;color:#0f6841}.status-pill.review{background:#fff1c6;color:#7a5200}.status-pill.approved{background:#dce8ff;color:#164aa9}.status-pill.rejected{background:#fee2e2;color:#a51919}.status-pill.completed{background:#d8f4e5;color:#11653d}.card-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0}.card-meta div{min-width:0}.card-meta dt,.adjustment-meta dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800}.card-meta dd,.adjustment-meta dd{margin:4px 0 0;font-weight:700;overflow-wrap:anywhere}.mini-stats{display:flex;gap:8px;flex-wrap:wrap}.mini-stats span{background:#f3f6fb;border-radius:8px;padding:7px 9px;font-size:.78rem;color:var(--muted)}.mini-stats strong{color:var(--ink)}.card-actions{display:flex;gap:9px;margin-top:auto}.footer{text-align:center;color:var(--muted);font-size:.78rem;padding:0 20px 30px}.empty-state{background:#fff;border:1px dashed #bac4d4;border-radius:var(--radius);padding:70px 24px;text-align:center}.empty-state.small{padding:35px 20px}.empty-state h2,.empty-state h3{margin-bottom:8px}.empty-state p{color:var(--muted)}.empty-icon{width:72px;height:72px;margin:0 auto 18px;display:grid;place-items:center;border-radius:20px;background:#e6edff;color:var(--brand);font-weight:900;font-size:1.3rem}.alert{padding:14px 16px;border-radius:11px;margin-bottom:18px;font-weight:700}.alert.success{background:#dcf7e9;color:#12643f;border:1px solid #a8e3c4}.alert.danger{background:#fee8e7;color:#8e1f18;border:1px solid #f4b8b3}.survey-page{padding-top:27px}.survey-titlebar{align-items:center}.tabs{background:#fff;border:1px solid var(--line);padding:7px;border-radius:14px;display:flex;gap:6px;margin-bottom:18px;box-shadow:0 6px 16px rgba(18,32,59,.05);position:sticky;top:82px;z-index:900}.tabs button{border:0;background:transparent;border-radius:9px;padding:12px 16px;font-weight:800;color:var(--muted);cursor:pointer}.tabs button span{background:#e8edf6;padding:2px 7px;border-radius:999px;font-size:.7rem;margin-left:5px}.tabs button.active{background:var(--nav);color:#fff}.tabs button.active span{background:rgba(255,255,255,.18)}.tabs button:disabled{opacity:.4;cursor:not-allowed}.tab-panel{display:none}.tab-panel.active{display:block}.form-panel{padding:24px}.form-panel.compact{padding:21px}.form-grid{display:grid;gap:16px}.form-grid.two{grid-template-columns:1fr 1fr}.form-grid.three{grid-template-columns:repeat(3,1fr)}.span-two{grid-column:span 2}.form-actions{display:flex;justify-content:flex-end;margin-top:20px}.form-subtitle{font-size:.93rem;margin:22px 0 12px}.check-row{display:flex;align-items:flex-start;gap:10px;margin:18px 0}.check-row input,.check-field input{width:auto}.check-field{display:flex;align-items:center;gap:9px;min-height:44px;margin-top:21px}.check-field span{margin:0}.danger-zone{margin-top:18px;border:1px solid #f2b5b0;background:#fff6f5;border-radius:14px;padding:17px 19px;display:flex;justify-content:space-between;align-items:center}.danger-zone div{display:flex;flex-direction:column;gap:4px}.danger-zone span{color:var(--muted);font-size:.83rem}.map-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:18px}.map-tools{padding:20px;align-self:start}.map-tools h2{margin:0 0 7px}.muted{color:var(--muted)}.small{font-size:.8rem}.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:17px 0}.map-tool{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px;display:flex;align-items:center;gap:8px;font-size:.78rem;font-weight:800;cursor:pointer;text-align:left}.map-tool.active,#draw-route.active{outline:3px solid rgba(34,86,217,.2);border-color:var(--brand)}.map-symbol{width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;background:#24324a;color:#fff;font-size:.68rem;font-weight:900;border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.25)}.map-symbol.chamber{background:#2256d9;border-radius:8px;min-width:34px;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-symbol.pole{background:#7c4a22}.map-symbol.blockage{background:#c62828}.map-symbol.excavation{background:#e57b00;transform:rotate(45deg);border-radius:6px}.map-symbol.excavation::first-line{transform:rotate(-45deg)}.map-symbol.joint{background:#0d7c66}.map-symbol.other{background:#596579}.a55-div-icon{background:transparent;border:0}.address-search{display:grid;grid-template-columns:1fr auto;gap:7px;margin-top:10px}.address-search input{min-width:0}.map-help{background:#f2f5fa;border-radius:10px;padding:13px;margin-top:14px;font-size:.78rem}.map-help strong{display:block;margin-bottom:5px}.map-help ol{margin:0;padding-left:20px}.map-message{margin-top:12px;font-size:.77rem;background:#eef3ff;color:#244a9b;border-radius:8px;padding:10px}.map-message.error{background:#fee8e7;color:#8e1f18}.map-panel{overflow:hidden}.map-panel #survey-map{height:670px;width:100%}.adding-point{cursor:crosshair}.map-footer{height:46px;padding:0 15px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:.78rem}.map-popup{display:flex;flex-direction:column;gap:7px;min-width:110px}.map-popup span{color:var(--muted);text-transform:capitalize}.data-table-panel{margin-top:18px;padding:21px}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.section-head h2{margin:4px 0 0}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%}th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:10px;border-bottom:1px solid var(--line)}td{padding:12px 10px;border-bottom:1px solid #edf0f5;font-size:.88rem}.empty-inline{color:var(--muted)}.text-button{border:0;background:transparent;padding:0;font-weight:800;cursor:pointer}.danger-text{color:var(--danger)}.split-layout{display:grid;grid-template-columns:minmax(420px,.85fr) minmax(500px,1.15fr);gap:18px;align-items:start}.adjustment-list{display:flex;flex-direction:column;gap:13px}.adjustment-list>.section-head{margin-bottom:0}.adjustment-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;display:grid;grid-template-columns:42px 1fr;gap:14px;box-shadow:0 8px 20px rgba(18,32,59,.06)}.adjustment-number{width:38px;height:38px;border-radius:11px;background:var(--nav);color:#fff;display:grid;place-items:center;font-weight:900}.adjustment-head{display:flex;justify-content:space-between;gap:10px}.adjustment-head h3{margin:0}.adjustment-head p{color:var(--muted);margin:4px 0 0}.adjustment-meta{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:16px 0}.adjustment-description{line-height:1.55}.note-box{background:#fff8db;border:1px solid #f2dc84;border-radius:9px;padding:12px;display:flex;flex-direction:column;gap:5px;font-size:.85rem}.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-top:18px}.photo-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}.photo-card img{width:100%;height:210px;object-fit:cover;display:block}.photo-card>div{padding:14px}.photo-card p{margin:8px 0}.photo-category{font-size:.7rem;text-transform:uppercase;letter-spacing:.07em;color:var(--brand);font-weight:900}.install-body{display:grid;place-items:center;padding:30px;background:radial-gradient(circle at top,#eaf0ff,#f5f7fa 55%);min-height:100vh}.install-card{width:min(600px,100%);background:#fff;border:1px solid var(--line);box-shadow:0 25px 60px rgba(25,45,90,.14);border-radius:22px;padding:35px}.install-card h1{font-size:2.4rem;margin:25px 0 8px}.setup-summary{background:#f4f6fa;border-radius:12px;padding:8px 15px;margin:20px 0}.setup-summary div{display:flex;justify-content:space-between;border-bottom:1px solid #e3e7ee;padding:10px 0}.setup-summary div:last-child{border-bottom:0}.setup-summary span{color:var(--muted)}code{background:#eef1f6;padding:2px 6px;border-radius:5px}.print-body{background:#e7ebf1}.print-toolbar{position:sticky;top:0;z-index:1000;display:flex;justify-content:center;gap:10px;background:#152039;padding:12px}.print-sheet{width:210mm;min-height:297mm;margin:20px auto;background:#fff;padding:16mm;box-shadow:0 15px 45px rgba(0,0,0,.18)}.print-header{display:flex;justify-content:space-between;align-items:center;border-bottom:3px solid var(--nav);padding-bottom:12px}.print-ref{text-align:right;display:flex;flex-direction:column;gap:4px}.print-ref strong{font-size:1.35rem}.print-ref span{color:var(--muted);font-size:.78rem}.print-title{display:flex;justify-content:space-between;align-items:center;margin:20px 0}.print-title h1{font-size:1.7rem;margin:0}.print-details th{width:16%;background:#f1f3f7}.print-details td{width:34%}.print-section{margin-top:25px}.print-section h2{font-size:1.15rem;border-bottom:1px solid var(--line);padding-bottom:7px}.print-section p{line-height:1.5}.print-section #print-map{height:420px;border:1px solid var(--line)}.map-attribution-note{font-size:.65rem;color:var(--muted);margin-top:3px!important}.print-table th,.print-table td{border:1px solid #cfd5df;padding:7px;font-size:.73rem}.print-table th{background:#f2f4f7;color:var(--ink)}.print-table.compact th{width:16%}.print-adjustment{border:1px solid #d7dce5;border-radius:8px;padding:12px;margin:12px 0}.print-adjustment h3{margin:0 0 10px}.print-photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.print-photo-grid figure{margin:0;border:1px solid #d6dce5;padding:7px}.print-photo-grid img{width:100%;height:220px;object-fit:contain;background:#f4f5f7}.print-photo-grid figcaption{font-size:.72rem;padding:6px 2px}.print-signoff{display:grid;grid-template-columns:2fr 1fr 2fr;gap:18px;margin-top:45px}.print-signoff div{border-top:1px solid #333;padding-top:7px;font-size:.72rem}.page-break-avoid{break-inside:avoid}@media print{body{background:#fff}.print-toolbar{display:none}.print-sheet{width:auto;min-height:0;margin:0;padding:0;box-shadow:none}.print-section #print-map{height:360px}@page{size:A4;margin:12mm}}@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(3,1fr)}.survey-grid{grid-template-columns:repeat(2,1fr)}.map-layout{grid-template-columns:1fr}.map-tools{order:2}.map-panel #survey-map{height:560px}.split-layout{grid-template-columns:1fr}.photo-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:720px){.topbar{height:auto;min-height:66px;padding:10px 14px}.brand span:last-child{display:none}.page-shell{width:min(100% - 20px,1500px);padding-top:20px}.page-heading,.survey-titlebar{align-items:flex-start;flex-direction:column}.kpi-grid{grid-template-columns:repeat(2,1fr)}.filter-form{grid-template-columns:1fr}.survey-grid{grid-template-columns:1fr}.tabs{overflow-x:auto;top:76px}.tabs button{white-space:nowrap}.form-grid.two,.form-grid.three{grid-template-columns:1fr}.span-two{grid-column:auto}.map-panel #survey-map{height:470px}.split-layout{display:block}.split-layout>.panel{margin-bottom:18px}.adjustment-meta{grid-template-columns:1fr 1fr}.photo-grid{grid-template-columns:1fr 1fr}.danger-zone{align-items:flex-start;flex-direction:column;gap:14px}.card-actions{flex-wrap:wrap}}@media(max-width:460px){.photo-grid{grid-template-columns:1fr}.tool-grid{grid-template-columns:1fr}.top-actions .ghost-light:first-child{display:none}.kpi{padding:14px}.kpi strong{font-size:1.6rem}}

/* Version 1.2 — mobile duct route adjustment */
.hidden{display:none!important}
#adjust-route.active{outline:3px solid rgba(34,86,217,.2);border-color:var(--brand);background:#eef3ff;color:var(--brand-dark)}
.route-help{border:1px solid #cddcff;background:#f5f8ff}
.route-help span{display:block;margin-top:7px;color:var(--muted)}
.route-adjusting .leaflet-interactive{cursor:pointer}
.a55-route-handle-wrap{background:transparent!important;border:0!important}
.route-edit-handle,.route-midpoint-handle{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;box-shadow:0 2px 10px rgba(10,31,78,.35);touch-action:none;user-select:none;-webkit-user-select:none}
.route-edit-handle{background:#fff;border:5px solid #2256d9}
.route-midpoint-handle{width:34px;height:34px;background:#2256d9;color:#fff;border:4px solid #fff;font-size:1.25rem;font-weight:900;line-height:1}
.table-actions{display:flex;align-items:center;gap:13px;white-space:nowrap}
.route-adjust-link{color:var(--brand)}
@media(max-width:720px){.route-edit-handle{width:32px;height:32px}.route-midpoint-handle{width:38px;height:38px}.a55-route-handle-wrap{margin-left:-2px!important;margin-top:-2px!important}.map-tools .button{min-height:46px}.table-actions{gap:16px}}

/* A55 branding update */
.topbar{background:linear-gradient(180deg,#081325,#0f1d36)}
.brand{display:flex;align-items:center;gap:12px;min-width:0}
.brand-logo{display:block;height:44px;width:auto;max-width:min(68vw,370px);object-fit:contain}
.brand-large .brand-logo{height:72px;max-width:min(100%,440px)}
.print-header .brand-logo,.brand-print .brand-logo{height:46px;max-width:320px}
.install-card{width:min(680px,100%)}
@media(max-width:900px){.brand-logo{height:40px;max-width:min(62vw,300px)}.print-header .brand-logo,.brand-print .brand-logo{height:40px;max-width:250px}}
@media(max-width:720px){.brand-logo{height:34px;max-width:56vw}.brand-large .brand-logo{height:58px;max-width:100%}.topbar{padding:10px 14px}.tabs{top:84px}}
