:root{--background:#f6f7f8;--foreground:#182026;--muted:#66737f;--line:#d8dee4;--panel:#ffffff;--panel-soft:#eef2f3;--accent:#0b7a75;--accent-dark:#075d59;--danger:#b42318;--warning:#9a6700;--ok:#16803c}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{background:var(--background);color:var(--foreground);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{background:#16242b;color:#f6fafb;gap:24px;height:100vh;left:0;overflow-y:auto;padding:24px 18px;position:-webkit-sticky;position:sticky;top:0}.brand,.sidebar{display:flex;flex-direction:column}.brand{gap:4px;padding:0 6px}.brand strong{font-size:18px}.brand span{color:#aebdc5;font-size:13px}.nav{display:grid;grid-gap:6px;gap:6px}.nav a{align-items:center;border-radius:8px;color:#dbe5e8;display:flex;gap:10px;min-height:40px;padding:9px 10px}.nav a:hover{background:rgba(255,255,255,.08)}.main{min-width:0;padding:28px}.topbar{align-items:center;display:flex;justify-content:space-between;gap:16px;margin-bottom:24px}.eyebrow{color:var(--muted);font-size:13px;font-weight:600;margin:0 0 4px;text-transform:uppercase}h1,h2,h3,p{margin-top:0}h1{font-size:30px;line-height:1.15;margin-bottom:8px}h2{font-size:20px}.muted{color:var(--muted)}.grid{display:grid;grid-gap:16px;gap:16px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:18px}.metric{display:grid;grid-gap:4px;gap:4px}.metric strong{font-size:28px}.table{border-collapse:collapse;width:100%}.table td,.table th{border-bottom:1px solid var(--line);padding:12px 10px;text-align:left;vertical-align:top}.table th{color:var(--muted);font-size:13px;font-weight:700}.status{border-radius:999px;display:inline-flex;font-size:12px;font-weight:700;padding:4px 8px}.status-with-icon{align-items:center;gap:5px}.status.published{background:#e7f6ed;color:var(--ok)}.status.review{background:#fff4d6;color:var(--warning)}.status.failed{background:#fde7e5;color:var(--danger)}.status.draft{background:#eef2f3;color:var(--muted)}.actions{display:flex;flex-wrap:wrap}.actions,.button{align-items:center;gap:8px}.button{background:var(--accent);border:0;border-radius:8px;color:white;cursor:pointer;display:inline-flex;font-weight:700;min-height:40px;padding:9px 14px}.button.compact{min-height:34px;padding:7px 10px}.button:disabled{cursor:not-allowed;opacity:.55}.button:hover{background:var(--accent-dark)}.button.secondary{background:var(--panel);border:1px solid var(--line);color:var(--foreground)}.button.danger{border-color:#f3b5ae;color:var(--danger)}.button.danger:hover{background:#fde7e5}.form{display:grid;grid-gap:14px;gap:14px;max-width:420px}.field{display:grid;grid-gap:6px;gap:6px}.field label{color:var(--muted);font-size:13px;font-weight:700}.field input,.field select{border:1px solid var(--line);border-radius:8px;min-height:42px;padding:10px 12px}.field select{background:var(--panel)}.table-input{border:1px solid var(--line);border-radius:8px;min-height:38px;padding:8px 10px;width:100%}.table-edit-fields{display:grid;grid-gap:8px;gap:8px;min-width:220px}.table-edit-fields label{display:grid;grid-gap:4px;gap:4px}.table-edit-fields span{color:var(--muted);font-size:12px;font-weight:700}.wide-form{align-items:end;grid-template-columns:repeat(4,minmax(0,1fr)) auto;max-width:none}.user-create-form{align-items:start;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:18px}.user-create-form>.button{justify-self:start}.client-create-form{align-items:end;grid-template-columns:minmax(180px,1fr) minmax(220px,2fr) auto;margin-bottom:12px}.full-span{grid-column:1/-1}.project-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.project-form{align-items:end;grid-template-columns:repeat(5,minmax(0,1fr))}.new-project-form,.project-form{max-width:none}.new-project-form>.field:not(.new-project-map-field){max-width:520px;width:100%}.new-project-map-field{width:100%}.new-project-form>.button{justify-self:start}.project-map{aspect-ratio:4/3;min-width:180px}.detail-map,.project-map{border:1px solid var(--line);border-radius:8px;display:block;width:100%}.detail-map{aspect-ratio:16/9}.inspection-latest{align-items:center;display:grid;grid-gap:12px;gap:12px;grid-template-columns:minmax(160px,240px) minmax(0,1fr)}.inspection-latest p{margin-bottom:8px}.inspection-preview-image,.inspection-preview-placeholder{aspect-ratio:16/9;border:1px solid var(--line);border-radius:8px;display:block;max-width:240px;min-width:140px;overflow:hidden;width:100%}.inspection-preview-image{background:var(--panel-soft);background-position:50%;background-size:cover}.inspection-preview-placeholder{align-items:center;background:linear-gradient(135deg,rgba(11,122,117,.16),transparent),repeating-linear-gradient(90deg,#dfe6ea 0 1px,transparent 1px 22px),repeating-linear-gradient(0deg,#dfe6ea 0 1px,transparent 1px 22px);color:var(--muted);display:flex;flex-direction:column;font-size:12px;font-weight:700;gap:6px;justify-content:center;padding:10px;text-align:center}.inspection-fullscreen{background:rgba(12,20,24,.94);display:grid;grid-template-rows:auto minmax(0,1fr);inset:0;padding:18px;position:fixed;z-index:20}.inspection-fullscreen-toolbar{align-items:center;color:white;display:flex;gap:16px;justify-content:space-between;margin-bottom:12px}.inspection-fullscreen-toolbar div{display:grid;grid-gap:4px;gap:4px;min-width:0}.inspection-fullscreen-toolbar span{color:#c9d5da;font-size:13px}.inspection-fullscreen-image{background-position:50%;background-repeat:no-repeat;background-size:contain;min-height:0;width:100%}.temporal-inspection{background:var(--panel);margin-top:16px;padding:18px}.temporal-inspection,.temporal-viewer{border:1px solid var(--line);border-radius:8px}.temporal-viewer{aspect-ratio:16/9;background:linear-gradient(135deg,rgba(11,122,117,.2),transparent),repeating-linear-gradient(90deg,#dfe6ea 0 1px,transparent 1px 34px),repeating-linear-gradient(0deg,#dfe6ea 0 1px,transparent 1px 34px);background-position:50%;background-size:cover;min-height:360px;overflow:hidden;position:relative}.temporal-viewer.has-image{background-color:#101820}.temporal-empty{color:var(--muted);display:grid;font-weight:700;grid-gap:8px;gap:8px;inset:0;justify-items:center;margin-bottom:118px}.temporal-empty,.temporal-overlay{align-items:center;position:absolute}.temporal-overlay{background:linear-gradient(180deg,rgba(10,18,22,.78),rgba(10,18,22,0));color:white;display:flex;justify-content:space-between;gap:16px;left:0;padding:18px;right:0;top:0}.temporal-overlay div{display:grid;grid-gap:4px;gap:4px;min-width:0}.temporal-overlay span,.temporal-overlay strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.temporal-counter{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.26);border-radius:999px;flex:0 0 auto;font-size:12px;font-weight:800;padding:5px 9px}.temporal-bar{background:rgba(246,247,248,.96);border-top:1px solid var(--line);bottom:0;display:grid;grid-gap:8px;gap:8px;left:0;padding:12px 16px 14px;position:absolute;right:0}.temporal-range-labels{color:var(--muted);display:flex;font-size:12px;font-weight:700;justify-content:space-between;gap:12px}.temporal-range-controls{display:grid;grid-gap:2px;gap:2px}.temporal-range-controls input{accent-color:var(--accent);width:100%}.temporal-ticks{display:grid;grid-gap:4px;gap:4px;grid-auto-columns:1fr;grid-auto-flow:column}.temporal-ticks button{background:var(--accent);border:0;border-radius:999px;cursor:pointer;height:8px;opacity:.45;padding:0}.temporal-ticks button.active{opacity:1}.temporal-ticks button:disabled{background:var(--muted);cursor:not-allowed;opacity:.25}.interactive-map{aspect-ratio:2/1;cursor:crosshair}.interactive-map,.overview-map{background:#d8e2e5;border:1px solid var(--line);border-radius:8px;overflow:hidden;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.overview-map{aspect-ratio:21/9;cursor:-webkit-grab;cursor:grab;min-height:320px}.overview-map:active{cursor:-webkit-grabbing;cursor:grabbing}.overview-map-empty{align-items:center;aspect-ratio:21/9;background:linear-gradient(135deg,rgba(11,122,117,.12),transparent),repeating-linear-gradient(90deg,#dfe6ea 0 1px,transparent 1px 34px),repeating-linear-gradient(0deg,#dfe6ea 0 1px,transparent 1px 34px);border:1px solid var(--line);border-radius:8px;display:flex;gap:8px;justify-content:center;min-height:220px;padding:24px;text-align:center}.interactive-map:active{cursor:-webkit-grabbing;cursor:grabbing}.map-tile{background-position:50%;background-size:cover;height:256px;position:absolute;width:256px}.map-marker{background:var(--danger);box-shadow:0 2px 8px rgba(0,0,0,.35);height:18px;width:18px}.map-marker,.overview-map-marker{border:3px solid white;border-radius:999px;position:absolute;transform:translate(-50%,-50%);z-index:2}.overview-map-marker{align-items:center;background:var(--accent);box-shadow:0 2px 10px rgba(0,0,0,.35);color:white;display:flex;font-size:12px;font-weight:800;gap:6px;max-width:190px;min-height:30px;padding:4px 10px 4px 8px}.overview-map-marker:before{background:white;border-radius:999px;content:"";flex:0 0 auto;height:8px;width:8px}.overview-map-marker:hover{background:var(--accent-dark);z-index:4}.overview-map-marker span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-controls{display:grid;grid-gap:6px;gap:6px;position:absolute;right:10px;top:10px;z-index:3}.map-controls button{background:var(--panel);border:1px solid var(--line);border-radius:8px;cursor:pointer;font-size:18px;font-weight:800;height:34px;line-height:1;width:34px}.mono-cell{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px;max-width:220px;overflow-wrap:anywhere}.technical-variable-list{display:flex;flex-wrap:wrap;gap:8px}.technical-variable{align-items:center;background:var(--panel-soft);border:1px solid var(--line);border-radius:999px;display:inline-flex;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px;gap:6px;padding:5px 8px}.technical-dot{border-radius:999px;height:8px;width:8px}.technical-dot.ok{background:var(--ok)}.technical-dot.missing{background:var(--warning)}.spaced-table,.table-toolbar{margin-top:18px}.table-toolbar{align-items:end;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}.search-field{max-width:420px;width:min(100%,420px)}.compact-table{margin-bottom:18px}.notice{background:var(--panel-soft);border:1px solid var(--line);border-radius:8px;margin:0 0 16px;padding:12px 14px}.notice.error{background:#fde7e5;border-color:#f3b5ae;color:var(--danger)}.loading-page,.login-page{align-items:center;display:grid;min-height:100vh;padding:24px}.login-card{background:var(--panel);margin:0 auto;max-width:460px;padding:28px;width:100%}.login-card,.preview{border:1px solid var(--line);border-radius:8px}.preview{aspect-ratio:16/9;background:linear-gradient(135deg,rgba(11,122,117,.18),transparent),repeating-linear-gradient(90deg,#dfe6ea 0 1px,transparent 1px 34px),repeating-linear-gradient(0deg,#dfe6ea 0 1px,transparent 1px 34px);display:grid;place-items:center}.section-title{align-items:center;display:flex;justify-content:space-between;gap:12px;margin-bottom:12px}.checklist{display:grid;grid-gap:8px;gap:8px}.checkline{align-items:center;display:flex;gap:8px}.checkline input{height:16px;width:16px}@media (max-width:860px){.shell{grid-template-columns:1fr}.sidebar{height:auto;position:static}.grid.three,.grid.two,.inspection-latest,.project-form,.wide-form{grid-template-columns:1fr}.main{padding:20px}.temporal-viewer{min-height:300px}.temporal-overlay{align-items:start;flex-direction:column}}