:root {
  --bg:#111210; --panel:#171816; --card:#1d1e1b; --card2:#23241f; --ink:#f2f0e9; --muted:#a5a69f;
  --line:#34352f; --accent:#ee8b54; --accent2:#ffc39e; --green:#4ea37f; --yellow:#d8aa4a;
  --red:#d75f50; --teal:#3c8986; --shadow:0 16px 44px rgba(0,0,0,.35);
  --clay:#bf875d; --sand:#d9bd6d; --silt:#a99b79; --gravel:#8e8977; --cobble:#d0984f;
  --rock:#68666a; --fill:#9b715f; --organic:#65764f; --unknown:#434540;
}
body.light {
  --bg:#eef0eb; --panel:#f7f7f3; --card:#fff; --card2:#f2f2ed; --ink:#20221f; --muted:#686b64;
  --line:#d9dcd4; --shadow:0 12px 34px rgba(30,35,30,.13);
}
*{box-sizing:border-box} [hidden]{display:none!important} html,body{height:100%;margin:0} body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink);font-size:13px}
button,input,select{font:inherit} button{cursor:pointer} button:disabled{cursor:not-allowed;opacity:.45}
.access-gate{position:fixed;inset:0;z-index:5000;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 30%,rgba(238,139,84,.16),transparent 42%),rgba(12,13,11,.94);backdrop-filter:blur(18px)}.access-card{width:min(390px,100%);border:1px solid #41433d;border-radius:16px;background:#191a17;padding:28px;box-shadow:0 30px 90px rgba(0,0,0,.55);color:#f2f0e9}.access-mark{width:46px;height:46px;border-radius:11px;display:grid;place-items:center;background:var(--accent);color:#25150d;font-weight:950;transform:skew(-8deg)}.access-kicker{margin:18px 0 5px!important;color:var(--accent2)!important;font-size:9px!important;font-weight:850;letter-spacing:.14em}.access-card h1{margin:0 0 7px;font-size:23px}.access-card p{margin:0 0 20px;color:#aaa;font-size:11px;line-height:1.5}.access-card label{display:block;margin-bottom:5px;color:#aaa;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.access-card input{width:100%;border:1px solid #454740;border-radius:8px;background:#10110f;color:#fff;padding:11px;outline:0}.access-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(238,139,84,.12)}.access-card small{display:block;min-height:19px;padding-top:5px;color:#e47b6e}.access-card button{width:100%;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#25150d;padding:10px;font-weight:850}.locked{overflow:hidden}.locked>.topbar,.locked>.app-shell{filter:blur(10px);pointer-events:none;user-select:none}.access-granted .access-gate{display:none}
.topbar{height:50px;background:#0e0f0d;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:relative;z-index:1000}
.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:28px;height:28px;border-radius:7px;display:grid;place-items:center;background:var(--accent);color:#1b130e;font-weight:900;font-size:11px;transform:skew(-8deg)}
.brand strong{font-size:14px}.product{color:var(--muted);padding-left:10px;border-left:1px solid var(--line)}
.top-actions{display:flex;align-items:center;gap:7px}.top-actions button,.head-actions button{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:7px;padding:6px 10px}
.data-status{color:var(--muted);font-size:10px;margin-right:8px}
.app-shell{height:calc(100% - 50px);display:grid;grid-template-columns:minmax(430px,1.08fr) minmax(410px,.92fr);overflow:hidden}
.map-pane{position:relative;min-width:0;background:#1c2823;border-right:1px solid var(--line)}#map{position:absolute;inset:0}
.map-toolbar{position:absolute;z-index:520;left:12px;top:12px;display:flex;border:1px solid rgba(255,255,255,.18);border-radius:9px;overflow:hidden;box-shadow:var(--shadow)}
.map-toolbar button,.layers-trigger{border:0;border-right:1px solid rgba(255,255,255,.1);background:rgba(21,23,20,.94);color:#eee;padding:9px 11px;font-size:11px;font-weight:750}.map-toolbar button:last-child{border:0}.map-toolbar button.active{background:var(--accent);color:#21140e}
.layers-trigger{position:absolute;z-index:520;right:12px;top:12px;border:1px solid rgba(255,255,255,.18);border-radius:8px;box-shadow:var(--shadow)}
.layers-panel{position:absolute;z-index:800;right:12px;top:54px;width:245px;background:rgba(21,22,20,.98);border:1px solid #44453f;border-radius:10px;color:#eee;padding:13px;box-shadow:var(--shadow)}
.layers-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.layers-head button{border:0;background:none;color:#ddd;font-size:20px}
.layers-panel fieldset{border:0;border-top:1px solid #373832;margin:8px 0 0;padding:10px 0 0}.layers-panel legend{color:#979990;font-size:9px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:0 8px 0 0}
.layers-panel label{display:flex;align-items:center;gap:7px;margin:7px 0;font-size:11px}.layers-panel input{accent-color:var(--accent)}
.map-legend{position:absolute;z-index:500;left:12px;bottom:44px;padding:10px;background:rgba(17,18,16,.92);border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#ddd;display:grid;grid-template-columns:repeat(3,auto);gap:6px 11px;font-size:9px;box-shadow:var(--shadow)}
.map-legend strong{grid-column:1/-1;color:#9ea097;letter-spacing:.12em}.map-legend span{display:flex;align-items:center;gap:5px}.map-legend i,.material-labels i{width:8px;height:8px;border-radius:50%;display:inline-block}
.clay{background:var(--clay)!important}.sand{background:var(--sand)!important}.silt{background:var(--silt)!important}.gravel{background:var(--gravel)!important}.cobble{background:var(--cobble)!important}.rock{background:var(--rock)!important}.fill{background:var(--fill)!important}.organic{background:var(--organic)!important}.unknown{background:var(--unknown)!important}
.map-help{position:absolute;z-index:510;bottom:12px;left:50%;transform:translateX(-50%);white-space:nowrap;color:#ddd;background:rgba(17,18,16,.9);border:1px solid rgba(255,255,255,.12);padding:7px 11px;border-radius:999px;font-size:10px}
.busy{position:absolute;z-index:900;inset:0;background:rgba(13,15,13,.67);backdrop-filter:blur(3px);display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;color:white}.busy span{width:35px;height:35px;border:3px solid rgba(255,255,255,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.inspector{overflow:auto;background:var(--panel);scrollbar-color:var(--line) transparent}.inspector-head{height:56px;position:sticky;top:0;z-index:200;background:color-mix(in srgb,var(--panel) 92%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:7px 14px}
.inspector-head>div:first-child{min-width:0}.inspector-head label{display:block;color:var(--muted);font-size:8px;letter-spacing:.12em;font-weight:800}.inspector-head input{width:260px;max-width:100%;border:0;background:transparent;color:var(--ink);font-weight:750;padding:3px 0;outline:0}
.head-actions{display:flex;gap:5px}.disclaimer{padding:9px 14px;background:#3b2e19;color:#f2c98d;border-bottom:1px solid #5a4323;display:flex;gap:8px;align-items:center;font-size:10px}.disclaimer strong{text-transform:uppercase;font-size:9px}.disclaimer span{color:#cdb98f}
.empty-state{min-height:calc(100vh - 145px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px}.empty-mark{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:var(--card2);color:var(--accent);font-size:32px}
.empty-state h1{font-size:25px;margin:18px 0 7px}.empty-state p{color:var(--muted);max-width:420px;line-height:1.55}.empty-state>button{width:250px;margin-top:8px}.dataset-card{margin-top:25px;border:1px solid var(--line);background:var(--card);border-radius:9px;padding:11px 14px;display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:10px}.dataset-card strong{color:var(--ink)}
.primary,.secondary,.export-row button,.playback button,.obstacle-bar button{border-radius:7px;padding:8px 11px;font-weight:800;font-size:11px}.primary{border:1px solid var(--accent);background:var(--accent);color:#25150d}.secondary,.export-row button,.playback button,.obstacle-bar button{border:1px solid var(--line);background:var(--card2);color:var(--ink)}.wide{width:100%}
#analysisContent{padding:12px}.executive,.card,.details-card{border:1px solid var(--line);border-radius:10px;background:var(--card);padding:14px;margin-bottom:10px}
.executive{background:linear-gradient(145deg,color-mix(in srgb,var(--red) 14%,var(--card)),var(--card));border-color:color-mix(in srgb,var(--red) 38%,var(--line))}
.section-kicker,.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.section-kicker{font-size:9px;color:var(--muted);letter-spacing:.1em;font-weight:800}.section-kicker>span:last-child{text-transform:none;letter-spacing:0;font-weight:600}.risk-pill,.coverage-pill{border-radius:999px;padding:4px 8px;background:var(--red);color:white;font-size:9px;font-weight:850;letter-spacing:.03em}.risk-pill.low{background:var(--green)}.risk-pill.caution{background:var(--yellow);color:#281e08}.risk-pill.thin{background:#62635e}.coverage-pill{background:color-mix(in srgb,var(--green) 20%,var(--card));color:#78c4a3;border:1px solid color-mix(in srgb,var(--green) 40%,var(--line))}
.executive h1{font-size:21px;margin:13px 0 8px}.executive ul,.recommendation ul,.warnings{margin:0;padding-left:18px;color:var(--ink);line-height:1.7;font-size:11px}.executive p{color:var(--muted);font-style:italic;font-size:11px;margin:10px 0 0}
.card h2{font-size:14px;margin:0}.card-head>div>span,.card-head>span{color:var(--muted);font-size:10px}.corridor-card>.card-head{margin-bottom:12px}
.planner{margin-top:12px;border-top:1px solid var(--line);padding-top:12px}.planner-note{font-size:10px;color:var(--muted);margin-bottom:9px}.planner-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.planner-grid label{font-size:9px;color:var(--muted);font-weight:800;text-transform:uppercase}
.planner-grid input,.planner-grid select,.playback select{width:100%;margin-top:4px;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;padding:7px}
.readiness-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);background:var(--card2);border-radius:8px;padding:9px 11px;margin:0 0 9px}.readiness-banner div{display:flex;align-items:center;gap:8px}.readiness-banner span{font-size:8px;color:var(--muted);font-weight:850;letter-spacing:.1em}.readiness-banner strong{font-size:11px}.readiness-banner small{font-size:9px;color:var(--muted);text-align:right}.readiness-banner.screening{border-left:4px solid var(--yellow)}.readiness-banner.verified{border-left:4px solid var(--teal)}.readiness-banner.ready{border-left:4px solid var(--green)}.readiness-banner.blocked{border-left:4px solid var(--red)}
.workflow-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:10px 0}.workflow-tabs button{border:1px solid var(--line);background:var(--card2);color:var(--muted);border-radius:6px;padding:7px 5px;font-size:9px;font-weight:800}.workflow-tabs button.active{background:var(--accent);border-color:var(--accent);color:#25150d}.workflow-panel{display:none}.workflow-panel.active{display:block}
.import-card{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card2);border-radius:8px;padding:9px;margin:7px 0}.import-card div{min-width:0}.import-card strong,.import-card span{display:block}.import-card strong{font-size:10px}.import-card span{font-size:9px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.import-card button{border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;padding:6px 8px;font-size:9px;font-weight:750}
.wide-field,.review-grid label{display:block;font-size:9px;color:var(--muted);font-weight:800;text-transform:uppercase;margin:8px 0}.wide-field input,.review-grid input{display:block;width:100%;margin-top:4px;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;padding:7px}.field-help{font-size:9px;color:var(--muted);line-height:1.55;margin:9px 0}.field-table-wrap{max-height:210px;overflow:auto;border:1px solid var(--line);border-radius:7px}.review-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 8px}.review-grid label:last-child{grid-column:1/-1}.attest{display:flex;gap:8px;align-items:flex-start;border-top:1px solid var(--line);padding:9px 0;font-size:10px;line-height:1.45;color:var(--ink)}.attest input{margin-top:2px;accent-color:var(--green)}
.gate-list{display:grid;gap:5px;margin:9px 0}.gate{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:var(--card2);font-size:9px}.gate b{font-size:9px}.gate.pass b{color:#78c4a3}.gate.fail b{color:#e47b6e}.calculation-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin-top:10px}.calculation-grid .property{min-width:0}
.warnings{color:#e4b56a;background:#332916;border:1px solid #59421e;border-radius:7px;padding:8px 8px 8px 24px;margin:9px 0}.warnings:empty{display:none}
.planner-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:10px 0}.planner-metrics div,.two-metrics>div{border:1px solid var(--line);border-radius:7px;padding:9px;background:var(--card2)}.planner-metrics span,.two-metrics span{display:block;color:var(--muted);font-size:8px;font-weight:800;letter-spacing:.08em}.planner-metrics strong,.two-metrics strong{display:block;margin-top:4px;font-size:16px}
.playback{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:8px 0}.playback label{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:9px}.playback select{width:auto;margin:0;padding:6px}
.profile-wrap{position:relative;background:#121310;border:1px solid #373832;border-radius:8px;overflow:hidden;perspective:900px}.profile-axis{position:absolute;left:5px;top:5px;z-index:3;color:#85877f;font-size:8px}.profile-chart{height:230px;position:relative;display:flex;padding-left:32px;transform-origin:center;transition:.45s}.profile-wrap.is-3d .profile-chart{transform:rotateX(48deg) rotateZ(-2deg) scale(.95);box-shadow:0 30px 50px rgba(0,0,0,.4)}
.profile-column{height:100%;flex:1;position:relative;border-left:1px solid rgba(255,255,255,.035)}.profile-interval{position:absolute;left:0;right:0;opacity:.92}.profile-terrain{position:absolute;left:0;right:0;top:0;height:2px;background:#e4e0d4;z-index:4}.profile-svg{position:absolute;left:32px;right:0;top:0;width:calc(100% - 32px);height:100%;z-index:6;pointer-events:none}.terrain-line{fill:none;stroke:#e4e0d4;stroke-width:1.2}.bore-line{fill:none;stroke:#ff9b63;stroke-width:2.4;filter:drop-shadow(0 0 3px #000)}.bore-progress{fill:none;stroke:#fff4c9;stroke-width:3;stroke-linecap:round}.obstacle-shape{fill:#e14f51;stroke:#fff;stroke-width:.7}
.obstacle-bar{display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin-top:8px}.obstacle-bar strong{font-size:8px;color:var(--muted);letter-spacing:.1em}.obstacle-bar button{padding:6px 8px;font-size:9px}
.rod-details{margin-top:9px;border-top:1px solid var(--line);padding-top:8px}.rod-details summary{cursor:pointer;font-weight:800;font-size:10px}.rod-table-wrap{max-height:220px;overflow:auto;margin-top:7px}table{width:100%;border-collapse:collapse;font-size:9px}th,td{padding:6px;border-bottom:1px solid var(--line);text-align:right}th:first-child,td:first-child{text-align:left}th{position:sticky;top:0;background:var(--card);color:var(--muted)}
.material-bar{height:9px;border-radius:99px;overflow:hidden;display:flex;background:var(--unknown);margin:11px 0 7px}.material-bar span{height:100%}.material-labels{display:flex;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:9px}.material-labels span{display:flex;align-items:center;gap:4px}.two-metrics{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}.two-metrics small{display:block;color:var(--muted);font-size:9px;margin-top:2px}
.recommend-title{display:flex;align-items:center;justify-content:space-between;margin-top:10px}.recommend-title strong{font-size:19px;color:var(--accent)}.recommend-title span{border:1px solid var(--line);border-radius:99px;padding:4px 8px;color:var(--muted);font-size:9px}.recommendation p{color:var(--muted);font-size:11px}.export-row{display:flex;gap:7px;margin-top:11px}.export-row button{flex:1}
.station-strip{display:flex;gap:3px;overflow:auto;padding:12px 2px}.station-strip button{flex:0 0 18px;height:18px;border:2px solid var(--card);box-shadow:0 0 0 1px var(--line);padding:0;border-radius:50%}.station-strip button.active{transform:scale(1.25);box-shadow:0 0 0 2px var(--accent2)}
.station-nav{display:grid;grid-template-columns:35px 1fr 35px;align-items:center;text-align:center;border-top:1px solid var(--line);padding-top:9px}.station-nav button{border:1px solid var(--line);background:var(--card2);color:var(--ink);border-radius:6px;padding:5px}.station-nav strong{font-size:11px}.station-coords{text-align:center;color:var(--muted);font-size:9px;margin-top:4px}
.interval-list{margin-top:10px}.interval-row{display:grid;grid-template-columns:70px 1fr auto;gap:8px;align-items:center;border-top:1px solid var(--line);padding:8px 0}.interval-row:first-child{border-top:0}.interval-row strong{font-size:10px}.material-chip{display:flex;align-items:center;gap:7px;text-transform:capitalize;font-size:11px}.material-chip i{width:12px;height:12px;border-radius:3px}.interval-row small{color:var(--muted);font-size:8px;text-align:right}
.along-card h3{font-size:9px;color:var(--muted);letter-spacing:.1em;margin:14px 0 7px}.well-row{border-top:1px solid var(--line);padding:8px 0}.well-row:first-child{border-top:0}.well-head{display:flex;justify-content:space-between;gap:8px}.well-head strong{font-size:10px}.well-head span{color:var(--muted);font-size:9px}.well-intervals{font-size:9px;color:var(--muted);line-height:1.5;margin-top:3px}.well-row a{color:var(--accent2);font-size:9px;text-decoration:none}
.property-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.property{padding:9px;background:var(--card2);border:1px solid var(--line);border-radius:7px}.property span,.property strong,.property small{display:block}.property span{color:var(--muted);font-size:8px;letter-spacing:.08em;font-weight:800}.property strong{margin-top:4px;font-size:13px}.property small{color:var(--muted);font-size:8px;margin-top:3px;line-height:1.4}
.utility-card p{font-size:11px;line-height:1.5}.utility-card small{color:var(--muted);line-height:1.4}.details-card{padding:0}.details-card summary{cursor:pointer;padding:12px;font-size:10px;font-weight:800}.details-card dl{display:grid;grid-template-columns:110px 1fr;gap:6px;padding:0 12px 12px;margin:0;font-size:9px}.details-card dt{color:var(--muted)}.details-card dd{margin:0;word-break:break-word}
.toast{position:fixed;z-index:3000;bottom:22px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;padding:9px 13px;border-radius:7px;background:#f7f1dc;color:#241b12;box-shadow:var(--shadow);font-size:11px;font-weight:700;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}
.inspector-hidden .app-shell{grid-template-columns:1fr}.inspector-hidden .inspector{display:none}
.leaflet-control-zoom a{background:#191a17!important;color:#eee!important;border-color:#3d3e38!important}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#20211e;color:#eee}.leaflet-popup-content{font-size:10px;line-height:1.5}
@media(max-width:900px){.app-shell{grid-template-columns:1fr}.map-pane{height:52vh}.inspector{height:auto;overflow:visible}.topbar .data-status,.product{display:none}.map-toolbar span{display:none}.map-help{max-width:75%;white-space:normal;text-align:center}.map-legend{display:none}.workflow-tabs{grid-template-columns:repeat(2,1fr)}}
@media print{body{background:white;color:#111}.topbar,.map-toolbar,.layers-trigger,.layers-panel,.map-help,.head-actions,.disclaimer,.planner-grid,.playback,.obstacle-bar,.export-row,.secondary,.primary{display:none!important}.app-shell{display:block;height:auto}.map-pane{height:310px;break-after:page}.inspector{overflow:visible;background:white}.inspector-head{position:static;background:white}.card,.executive,.details-card{break-inside:avoid;background:white;color:#111;border-color:#bbb}.profile-wrap{background:#eee}.rod-table-wrap{max-height:none;overflow:visible}}
