:root{--bg:#f2f4f7;--panel:#fff;--panel-soft:#fafcff;--line:#1f2937;--line-soft:#d9dde5;--line-mid:#c8cfda;--text:#1f2937;--muted:#6b7280;--accent:#2563eb;--accent-soft:#e8f0ff;--primary:#2563eb;--primary-ink:#1f3551;--danger:#b91c1c;--radius:10px;--shadow:0 4px 14px #0f172a0f;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0}body{color:var(--text);background:radial-gradient(circle at 10% 10%,#fff 0%,#e6ebf3 75%);height:100vh;overflow:hidden}button,input,select,textarea{font:inherit}#root{height:100%}.app{grid-template-rows:auto minmax(0,1fr);height:100dvh;min-height:0;display:grid}.topbar{border-bottom:1px solid var(--line-soft);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffd9;flex:none;padding:1rem 1.25rem}.topbar-inner{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem 1.5rem;display:flex}.topbar-brand,.brand{align-items:center;gap:.85rem;display:flex}.brand-copy,.topbar-copy{min-width:0}.brand-mark{width:52px;height:52px;color:var(--primary-ink);letter-spacing:.08em;background:linear-gradient(#f4f8ff 0%,#e8f0ff 100%);border:1px solid #8fb0e8;border-radius:14px;flex:none;place-items:center;font-size:.92rem;font-weight:800;display:grid;box-shadow:0 4px 10px #0f172a14}.brand-mark-image{flex:none;width:52px;height:52px;display:block}h1{color:var(--line);margin:0;font-size:1.3rem}.subtitle{color:var(--muted);margin:.2rem 0 0;font-size:1rem}.topbar-menu,.sidebar-tabs{flex-wrap:wrap;justify-content:flex-end;align-self:center;gap:8px;display:flex}.topbar-menu-button{border:1px solid var(--line-mid);width:auto;min-width:128px;color:var(--line);background:#fff;border-radius:6px;justify-content:center;align-items:center;margin-bottom:0;padding:8px 14px;font-size:1rem;font-weight:600;line-height:1.2;display:inline-flex}.topbar-menu-button.is-active{background:var(--accent-soft);color:var(--primary-ink);border-color:#8fb0e8}.layout,.app-body{flex:auto;grid-template-columns:320px 1fr;gap:12px;min-height:0;padding:12px;display:grid;overflow:hidden}.panel{background:var(--panel);border:1px solid var(--line-soft);border-radius:var(--radius);box-shadow:var(--shadow)}.control-panel{flex-direction:column;min-height:0;padding:12px;display:flex;overflow-y:auto}.section-block{background:#fff;border:1px solid #e3e6ec;border-radius:8px;padding:10px}.section-block+.section-block{margin-top:10px}.section-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:.78rem;font-weight:700}.section-block h2,.section-block h3,.results-panel h3,.viewer-header h2{color:var(--line);margin:0 0 8px;font-size:.95rem}.section-intro,.metric-detail,.set-meta,.breakdown-value,.plot-meta,.scene-loading{color:var(--muted);font-size:.84rem;line-height:1.35}.field-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.calibration-field-grid,.single-column-field-grid{grid-template-columns:1fr}.field{color:var(--muted);margin-bottom:6px;font-size:.82rem;display:block}.checkbox-field{min-height:38px;color:var(--line);align-items:center;gap:10px;font-size:.82rem;display:flex}.checkbox-field input{width:16px;height:16px;margin:0}.field>span{display:block}.input-wrap{position:relative}.number-input{border:1px solid var(--line-mid);width:100%;color:var(--text);background:#fff;border-radius:6px;margin-top:4px;padding:6px 32px 6px 8px}.number-input:disabled,.text-input:disabled,.select-input:disabled{color:#64748b;cursor:not-allowed;background:#f5f7fb}.number-input:focus{border-color:#9db9ee;outline:2px solid #2563eb29}.text-input,.select-input,.viewer-seed-input{border:1px solid var(--line-mid);width:100%;color:var(--text);background:#fff;border-radius:6px;padding:8px 10px}.text-input:focus,.select-input:focus,.viewer-seed-input:focus,.color-input:focus{border-color:#9db9ee;outline:2px solid #2563eb29}.color-input{border:1px solid var(--line-mid);background:#fff;border-radius:6px;width:100%;min-height:38px;margin-top:4px;padding:4px}.input-unit{color:var(--muted);pointer-events:none;font-size:.76rem;position:absolute;top:calc(50% + 2px);right:10px;transform:translateY(-50%)}button{border:1px solid var(--line-mid);width:100%;font:inherit;cursor:pointer;text-align:center;color:var(--line);background:#fff;border-radius:6px;margin-top:0;padding:8px 10px;font-size:1rem;font-weight:600;line-height:1.2;transition:border-color .12s,background-color .12s,box-shadow .12s;display:block}button:hover{border-color:#9ca3af}button:disabled{cursor:not-allowed;opacity:.5}button.ghost{color:var(--line);border:1px solid var(--line-mid);background:#fff}.primary-action{color:var(--primary-ink);background:linear-gradient(#f4f8ff 0%,#e8f0ff 100%);border-color:#8fb0e8}.panel-actions,.actions{gap:8px;margin-top:8px;display:flex}.file-actions{gap:8px;display:grid}.hidden-file-input{display:none}.set-stack{gap:10px;display:grid}.set-card{background:#fff;border:1px solid #e3e6ec;border-radius:8px;padding:10px}.field-note,.field-subtitle{color:var(--muted);margin:8px 0 0;font-size:.82rem;line-height:1.35}.field-subtitle{color:var(--line);grid-column:1/-1;font-weight:700}.warning-note{color:#9a3412}.set-header,.panel-header{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.set-header-actions{align-items:center;gap:8px;display:flex}.breakdown-title{color:var(--line);align-items:center;gap:10px;font-weight:700;display:flex}.set-chip{border:1px solid #94a3b8;border-radius:3px;flex:none;width:.85rem;height:.85rem}.chip,.metric-label{border:1px solid var(--line-mid);min-height:24px;color:var(--muted);background:#fafcff;border-radius:999px;align-items:center;padding:0 8px;font-size:.76rem;font-weight:700;display:inline-flex}.viewer{border:1px solid var(--line-soft);border-radius:var(--radius);min-width:0;height:100%;min-height:0;box-shadow:var(--shadow);background:#fff;flex-direction:column;padding:12px;display:flex;overflow:hidden}.viewer-header{justify-content:space-between;align-items:flex-end;gap:10px;margin-bottom:10px;display:flex}.viewer-actions{align-items:flex-end;margin-top:0}.viewer-actions button{width:auto}.viewer-seed-control{min-width:104px;color:var(--muted);flex-direction:column;gap:4px;font-size:.82rem;display:flex}.viewer-seed-control span{font-weight:600}.small-button{width:auto;padding:6px 10px;font-size:.84rem}.metric-grid{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px;display:grid}.sidebar-metric-grid{grid-template-columns:1fr}.metric-card{background:#fff;border:1px solid #e3e6ec;border-radius:8px;min-width:0;padding:10px}.metric-value{color:var(--line);margin-top:8px;font-size:1.2rem;font-weight:700;display:block}.viewer-layout{flex:1;grid-template-columns:minmax(0,1fr) minmax(270px,360px);gap:12px;min-height:0;display:grid}.plot-pane{border:1px solid var(--line-soft);border-radius:var(--radius);background:#e5e7eb;justify-content:center;align-items:stretch;min-width:0;min-height:0;display:flex;overflow:hidden}.scene-stage{position:relative}.scene-canvas-shell{background:#e5e7eb;width:100%;height:100%;position:relative}.scene-stage canvas{touch-action:none;width:100%;height:100%;display:block}.screen-axis-indicator{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);width:92px;height:92px;box-shadow:var(--shadow);pointer-events:none;background:#ffffffd1;border:1px solid #e3e6ec;border-radius:10px;padding:6px;position:absolute;bottom:14px;left:14px}.screen-axis-svg{width:100%;height:100%}.screen-axis-svg text{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:700}.scene-loading{text-align:center;place-items:center;height:100%;padding:24px;display:grid}.results-panel{background:#fff;border:1px solid #e3e6ec;border-radius:8px;min-height:0;padding:10px 12px;overflow-y:auto}.insights-panel{box-shadow:none;background:0 0;border:0;padding:0}.insights-panel .section-block{margin-bottom:10px}.stereonet-card{justify-items:center;gap:10px;display:grid}.cdf-card{gap:10px;display:grid}.cdf-plot{width:100%;height:auto}.cdf-plot-area{fill:#f8fbff}.cdf-grid-line{stroke:#d7e0e8;stroke-width:1px}.cdf-axis-line{stroke:#355a74;stroke-width:1.2px}.cdf-line{fill:none;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}.cdf-axis-label,.cdf-axis-title{fill:var(--muted);font-size:11px;font-weight:600}.stereonet-plot{width:100%;max-width:220px;height:auto;overflow:visible}.stereonet-rim{fill:#f8fbff;stroke:#355a74;stroke-width:1.5px}.stereonet-grid-circle,.stereonet-grid-axis{fill:none;stroke:#ccd8e3;stroke-width:1px}.stereonet-pole{stroke:#09131d47;stroke-width:.75px}.stereonet-cardinal{fill:var(--muted);font-size:12px;font-weight:700}.stereonet-caption{text-align:center;color:var(--muted);margin:0;font-size:.82rem;line-height:1.35}.stack-list,.roadmap-list{gap:8px;margin:0;padding:0;display:grid}.stack-list{list-style:none}.roadmap-list{padding-left:18px}.stack-list li,.roadmap-list li{background:var(--panel-soft);border:1px solid #e3e6ec;border-radius:8px;padding:8px}.breakdown-item+.breakdown-item{margin-top:10px}.breakdown-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.breakdown-track{background:#edf2f8;border-radius:999px;width:100%;height:8px;overflow:hidden}.breakdown-fill{border-radius:inherit;height:100%}.pill-row{flex-wrap:wrap;gap:8px;display:flex}@media (width<=1080px){.topbar-inner{align-items:stretch}.topbar-menu,.sidebar-tabs{justify-content:flex-start}.topbar-menu-button{flex:140px;min-width:0}.layout,.app-body{grid-template-columns:1fr}.viewer-layout{grid-template-rows:minmax(360px,1fr) minmax(170px,36dvh);grid-template-columns:1fr}.metric-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.field-grid,.metric-grid{grid-template-columns:1fr}.viewer-header,.set-header,.panel-header{flex-direction:column;align-items:stretch}.viewer-actions{flex-direction:column}.viewer-actions button{width:100%}}
