:root{--bg:#eef1ed;--surface:#fff;--surface2:#f6f7f4;--ink:#18221d;--muted:#68736c;--line:#d9dfda;--accent:#176b51;--accent2:#d9efe7;--danger:#a33c32;--shadow:0 12px 32px rgba(24,34,29,.08)}
[data-theme=dark]{--bg:#111814;--surface:#19231e;--surface2:#202d26;--ink:#eef5f0;--muted:#9eaaa2;--line:#34443b;--accent:#6fd0ac;--accent2:#214638;--danger:#ff8f83;--shadow:0 12px 32px rgba(0,0,0,.22)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 Inter,Segoe UI,Arial,sans-serif}.topbar{height:68px;padding:0 24px;display:flex;align-items:center;gap:28px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px;min-width:245px}.brand-mark{font-size:30px;color:var(--accent)}.brand strong{display:block;letter-spacing:.12em}.brand small{display:block;color:var(--muted);font-size:11px}.topbar nav{display:flex;align-self:stretch}.nav-btn{border:0;border-radius:0;background:none;padding:0 18px;border-bottom:3px solid transparent;color:var(--muted);font-weight:600}.nav-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.header-actions{margin-left:auto;display:flex;gap:8px}.app-shell{max-width:1600px;margin:auto;padding:20px;display:grid;grid-template-columns:360px minmax(0,1fr);gap:20px}.sidebar{display:flex;flex-direction:column;gap:14px}.panel,.canvas-card,.data-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.panel{padding:18px}.panel.compact{padding:15px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel h2,.data-card h2{font-size:15px;margin:0 0 13px;letter-spacing:.02em}.panel-title h2{margin:0}.badge{background:var(--accent2);color:var(--accent);padding:3px 8px;border-radius:99px;font-size:12px;font-weight:700}button,.button{font:inherit;border:1px solid var(--line);border-radius:8px;padding:8px 11px;background:var(--surface2);color:var(--ink);cursor:pointer;font-weight:600}button:hover,.button:hover{border-color:var(--accent)}button.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.ghost{background:transparent}.danger{color:var(--danger)}.icon-btn{font-size:18px;padding:6px 10px}.full{width:100%;margin-top:12px}.button-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.file-label input{display:none}.hint{font-size:12px;color:var(--muted);margin:9px 0 0}.segmented{display:flex;background:var(--surface2);border-radius:9px;padding:3px;margin:14px 0}.segmented button{flex:1;border:0;background:transparent;padding:7px}.segmented button.active{background:var(--surface);color:var(--accent);box-shadow:0 1px 4px #0002}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid label,.control-list>label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:12px}input,select{width:100%;border:1px solid var(--line);border-radius:7px;padding:8px;background:var(--surface);color:var(--ink);font:inherit}input[type=color]{padding:3px;height:37px}.control-list{display:flex;flex-direction:column;gap:9px;margin-top:12px}.control-list .check,.check{flex-direction:row;align-items:center;color:var(--ink);font-size:13px}.check input{width:auto}details{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}summary{font-weight:700;cursor:pointer;margin-bottom:11px}.result{background:var(--accent2);color:var(--ink);padding:9px;border-radius:7px;font-size:12px}.workspace{min-width:0;display:flex;flex-direction:column;gap:18px}.canvas-card{overflow:hidden}.canvas-toolbar{height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--line)}.canvas-toolbar strong{display:block}.canvas-toolbar span{display:block;font-size:12px;color:var(--muted)}canvas{display:block;width:min(100%,800px);height:auto;aspect-ratio:1;margin:0 auto;background:#fff;touch-action:none}.data-card{padding:16px}.table-wrap{overflow:auto;margin-top:13px;max-height:320px}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:left;border-bottom:1px solid var(--line);padding:9px 7px;font-size:12px}th{color:var(--muted);position:sticky;top:0;background:var(--surface)}td input:not([type=checkbox]){padding:5px;min-width:70px}.color-dot{width:15px;height:15px;border-radius:50%;display:inline-block}.empty{text-align:center;padding:35px;color:var(--muted)}.empty span{font-size:38px;color:var(--accent)}.empty strong{display:block;color:var(--ink)}.empty p{margin:4px}.hidden{display:none!important}dialog{max-width:520px;border:0;border-radius:14px;padding:28px;background:var(--surface);color:var(--ink);box-shadow:0 20px 80px #0005}dialog::backdrop{background:#10171399}.dialog-close{float:right;border:0;font-size:23px;background:none}#toast{position:fixed;right:20px;bottom:20px;background:#17251f;color:#fff;border-radius:8px;padding:11px 15px;opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none}#toast.show{opacity:1;transform:none}
.subcontrols{margin:2px 0 2px 22px;padding:11px;border-left:3px solid var(--accent2);background:var(--surface2);border-radius:0 8px 8px 0;display:grid;grid-template-columns:1fr 1fr;gap:9px}.subcontrols label{display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:11px}.subcontrols output{float:right;color:var(--accent);font-weight:700}.subcontrols input[type=range]{padding:0;accent-color:var(--accent)}.cluster-results{margin-top:10px;display:grid;gap:5px}.cluster-item{display:flex;align-items:center;gap:7px;padding:5px 7px;background:var(--surface2);border-radius:6px}.cluster-item i{width:10px;height:10px;border-radius:50%}
.subheading{font-size:12px;margin:14px 0 7px}.measure-grid{display:grid;grid-template-columns:52px 1fr 1fr;gap:6px;align-items:center}.measure-grid span{font-size:11px;color:var(--muted)}.measure-grid input{min-width:0}.selection-tools{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:12px 0;padding:10px;background:var(--surface2);border-radius:9px}.selection-tools label{display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:11px}.selection-tools input{width:95px}.badge.neutral{background:var(--surface2);color:var(--muted)}#lassoBtn.active{background:var(--accent);border-color:var(--accent);color:#fff}canvas.lasso-active{cursor:crosshair}
.axis-checks{display:flex;gap:12px;flex-wrap:wrap}.axis-color{width:9px;height:9px;border-radius:50%;display:inline-block}.axis-color.p{background:#168aad}.axis-color.t{background:#e63946}.axis-color.b{background:#2a9d8f}.shortcut-hint{color:var(--accent);font-size:11px;font-weight:600}.option-note,.field-note{color:var(--muted);font-size:10px}.stress-controls{margin:12px 0;padding:11px;background:var(--surface2);border-radius:8px;display:grid;gap:9px}.stress-controls>label:not(.check){display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:11px}.stress-scale{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10px}.stress-scale i{height:8px;flex:1;border-radius:9px;background:linear-gradient(90deg,#243b79,#1ba6a6,#f4d35e,#d62828)}
.permeability-controls{margin:10px 0;padding:10px;border:1px solid var(--line);border-radius:8px}.permeability-controls p{margin:6px 0 0}
.wide-dialog{max-width:720px;width:min(720px,calc(100vw - 32px));max-height:85vh;overflow:auto}.help-definitions{display:grid;grid-template-columns:minmax(170px,.8fr) minmax(260px,1.7fr);gap:10px 18px}.help-definitions dt{font-weight:700;color:var(--ink)}.help-definitions dd{margin:0;color:var(--muted);line-height:1.45}.dialog-actions{justify-content:flex-end;margin-top:18px}@media(max-width:600px){.help-definitions{grid-template-columns:1fr}.help-definitions dd{margin-bottom:8px}}
.language-picker{display:flex;align-items:center;gap:6px;font-size:12px}.language-picker select{width:auto;min-width:92px;padding:7px 26px 7px 9px}
.header-link{text-decoration:none;white-space:nowrap}.citation-text{line-height:1.65;padding:14px;background:var(--surface2);border:1px solid var(--line);border-radius:9px;user-select:text}
.termination-controls{margin:12px 0;padding:11px;background:var(--surface2);border-radius:8px;display:grid;gap:9px}.termination-controls label{display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:11px}.termination-controls input[type=range]{padding:0;accent-color:var(--accent)}.termination-controls output{color:var(--accent);font-weight:700}
@media(max-width:900px){.topbar{padding:0 12px;gap:8px}.brand{min-width:0}.brand small{display:none}.topbar nav{margin-left:auto}.nav-btn{padding:0 10px}.header-actions .ghost{display:none}.app-shell{grid-template-columns:1fr;padding:10px}.sidebar{order:2}.workspace{order:1}.canvas-card{position:relative}.form-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.brand strong{font-size:11px}.brand-mark{display:none}.topbar{height:58px}.nav-btn{font-size:12px;padding:0 7px}.app-shell{padding:6px;gap:10px}.panel,.data-card{border-radius:10px}.canvas-toolbar{height:auto;padding:9px}.canvas-toolbar .button-row{gap:3px}.form-grid{grid-template-columns:1fr}}
