:root{
  color-scheme:light;
  --paper:#f4f7ff;
  --ink:#0b2a57;
  --body:#526781;
  --surface:#dce7ff;
  --surface-strong:#c8d8ff;
  --white:#ffffff;
  --cobalt:#1559d6;
  --cobalt-bright:#236cff;
  --signal:#ff5a1f;
  --signal-warm:#ffbd2e;
  --line:rgba(11,42,87,.22);
  --deep:#071c3d;
  --deep-text:#f5f8ff;
  --muted:#526781;
  --red:var(--signal);
  --blue:var(--cobalt-bright);
  --rule:var(--ink);
  --ivory:var(--paper);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
.site-header{width:min(1120px,calc(100% - 40px));min-height:76px;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}
.back-link{font-weight:800;text-decoration:none;letter-spacing:-.04em}
main{width:min(1120px,calc(100% - 40px));min-height:100vh;margin:auto;padding:0}
.masthead{height:42px;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;padding-bottom:9px;color:var(--cobalt);font-size:.66rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.masthead span:last-child{text-align:right}.crosshair{color:var(--signal);font-size:1.2rem;font-weight:400}
.hero{display:block;padding:78px 0 50px}
.hero-copy{align-self:center}
h1{max-width:760px;margin:0 0 18px;font-size:clamp(2.4rem,4.4vw,4rem);font-weight:500;line-height:.96;letter-spacing:-.055em}
.hero p{max-width:650px;margin:0;color:var(--body);font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.5}
.upload-panel{position:relative;padding:14px;background:var(--white);border:1px solid var(--ink);display:grid;gap:12px}
.upload-panel:before,.input-method-side:before,.controls:before,.results-section:before{content:"";position:absolute;inset:-1px -1px auto;height:4px;background:linear-gradient(90deg,var(--cobalt),var(--signal-warm),var(--signal))}
.upload{min-height:82px;border:0;background:var(--cobalt);color:white;display:flex;gap:14px;align-items:center;text-align:left;padding:14px 16px;transition:transform .16s,background .16s}
.upload:hover{background:var(--cobalt-bright);transform:translate(-2px,-2px)}
.upload-icon{font-size:2.45rem;font-weight:300;line-height:1}.upload b{display:block;font-size:1rem}.upload small{display:block;margin-top:7px;font-size:.62rem;font-weight:750;letter-spacing:.08em}
.upload-panel>label{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:16px;color:var(--body);font-size:.68rem;font-weight:800;letter-spacing:.1em}
.upload-panel select{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;padding:7px 2px}
.sample-download{justify-self:start;color:var(--cobalt);font-size:.65rem;font-weight:800;letter-spacing:.07em;text-underline-offset:4px}
.manual-callout{display:flex;justify-content:flex-start;align-items:center;min-height:29px;color:var(--body);font-size:.67rem;font-weight:800;letter-spacing:.07em}
.modebar{display:flex;align-items:center;align-content:center;flex:1;flex-wrap:wrap;gap:12px;margin:0;padding:12px 14px;background:var(--white);border:1px solid var(--line);font-size:.72rem;font-weight:750}
.segmented{display:flex;border:1px solid var(--line)}.segmented button,.demo{border:0;background:transparent;padding:9px 14px;font-weight:800}.segmented button+button{border-left:1px solid var(--line)}
.segmented .active{background:var(--cobalt);color:#fff}.segmented button:disabled{opacity:.38;cursor:not-allowed}.status{flex:1;color:var(--body)}.demo{color:var(--signal);text-decoration:underline;text-underline-offset:4px}
.workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;margin-top:28px;background:var(--white);border:1px solid var(--ink)}
.visual-column{min-width:0;padding:26px 28px 18px}.plot-wrap{border-bottom:1px solid var(--line)}
.plot-topline{height:36px;display:flex;justify-content:space-between;align-items:center;font-size:.7rem;font-weight:800;letter-spacing:.08em}.legend{font-weight:600;display:flex;align-items:center;gap:7px;color:var(--body)}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot.red{background:var(--signal)}.dot.blue{background:var(--cobalt-bright)}
svg{width:100%;height:auto;display:block}.plot-bg{fill:var(--paper)}.grid{stroke:var(--line);stroke-width:.9;stroke-dasharray:4 5}.trace{fill:none;stroke:var(--cobalt);stroke-width:2.2;vector-effect:non-scaling-stroke}.peak-line{stroke-width:1;stroke-dasharray:3 4;opacity:.7}.peak-line.o{stroke:var(--signal)}.peak-line.e{stroke:var(--cobalt-bright)}.peak.o{fill:var(--signal);stroke:var(--white);stroke-width:2}.peak.e{fill:var(--cobalt-bright);stroke:var(--white);stroke-width:2}svg text{font:600 14px ui-monospace,monospace;fill:var(--ink)}.axis-label{font-weight:850;letter-spacing:.06em}
.plot-foot{display:flex;justify-content:space-between;padding:13px 0 0;color:var(--body);font-size:.68rem;font-weight:700;letter-spacing:.04em}
.results{padding:20px;background:var(--deep);color:var(--deep-text)}.result{min-height:118px;padding:13px 8px 12px 14px;border-top:1px solid rgba(255,255,255,.2);display:flex;flex-direction:column}.result>span{opacity:.72;font-size:.7rem;font-weight:750;letter-spacing:.08em}.result strong{margin:auto 0 7px;text-align:right;font-size:clamp(2rem,3vw,2.8rem);font-weight:650;letter-spacing:-.045em;white-space:nowrap}.result small{opacity:.72;text-align:right;font-size:.68rem;line-height:1.35}.result.red{border-left:4px solid var(--signal)}.result.blue{border-left:4px solid var(--cobalt-bright)}
.export{width:100%;margin-top:8px;border:1px solid rgba(255,255,255,.24);border-top:3px solid var(--signal-warm);background:transparent;color:var(--deep-text);padding:16px 12px;text-align:left;font-size:.75rem;font-weight:800}.export span{float:right;font-size:1.1rem}
.controls,.results-section{position:relative;margin:0 0 36px;padding:32px;background:var(--white);border:1px solid var(--ink)}.results-section .workspace{margin-top:0}
.control-title{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:26px}.control-title span:first-child{font:400 clamp(1.7rem,3vw,2.5rem)/1.1 Georgia,serif;letter-spacing:-.03em}.control-title span:last-child{max-width:480px;color:var(--body);font-size:.75rem;line-height:1.45;text-align:right}
.goal-toolbar{display:grid;grid-template-columns:120px 1fr;align-items:center;gap:18px;margin-bottom:24px;padding:14px;border:1px solid var(--line);background:var(--paper)}.goal-toolbar>span,.mode-label{color:var(--body);font-size:.68rem;font-weight:800;letter-spacing:.1em}.goal-segmented{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line)}.goal-segmented button{min-height:48px;border:0;background:var(--white);font-size:.78rem;font-weight:800;letter-spacing:.04em}.goal-segmented button+button{border-left:1px solid var(--line)}.goal-segmented button.active{background:var(--cobalt);color:#fff}
.input-methods{display:grid;grid-template-columns:minmax(280px,.82fr) minmax(0,1.18fr);gap:22px;align-items:stretch;margin:24px 0 20px}.input-method-side{position:relative;display:flex;flex-direction:column;gap:8px;padding:14px;background:var(--white);border:1px solid var(--ink)}.input-method-side .peak-entry{flex:1;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:0}.input-method-side .peak-entry label{display:flex;flex-direction:column}.input-method-side .peak-entry textarea{flex:1;min-height:108px}.input-method-side .peak-entry label>span{min-height:29px}
.control-grid{display:grid;grid-template-columns:repeat(4,minmax(155px,1fr));gap:1px;margin-top:20px;background:var(--line);border:1px solid var(--line)}
.field{min-width:0;padding:17px;background:var(--white)}.field>span,.peak-entry label>span{display:block;min-height:31px;color:var(--body);font-size:.67rem;font-weight:800;line-height:1.35;letter-spacing:.07em}.field>div{min-height:46px;display:flex;align-items:center;border-bottom:1px solid var(--line)}.field input,.field select{width:100%;min-width:0;height:46px;border:0;outline:0;background:transparent;padding:0;font-size:1.1rem;font-weight:650}.field input[type=range]{accent-color:var(--cobalt)}.field em{padding-left:8px;font-size:.72rem;font-weight:750;font-style:normal}
.peak-entry{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:24px}.peak-entry textarea{width:100%;min-height:104px;resize:vertical;border:1px solid var(--line);border-left:5px solid var(--signal);background:var(--paper);padding:12px;font:550 .72rem/1.5 ui-monospace,monospace}.peak-entry label+label textarea{border-left-color:var(--cobalt-bright)}
.formula-strip{display:grid;grid-template-columns:110px minmax(180px,1fr) minmax(175px,.85fr);align-items:center;gap:18px;margin:0 0 24px;padding:14px;border:1px solid var(--line);background:var(--paper)}.formula-strip>span{color:var(--body);font-size:.68rem;font-weight:800;letter-spacing:.1em}.formula-strip strong{min-width:0;font:600 clamp(.9rem,1.8vw,1.05rem) Georgia,serif;text-align:right;white-space:nowrap}.cavity-switch{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line)}.cavity-switch button{min-height:48px;padding:7px;border:0;background:var(--white);font-size:.68rem;font-weight:800;letter-spacing:.04em}.cavity-switch button+button{border-left:1px solid var(--line)}.cavity-switch button.active{background:var(--cobalt);color:#fff}.method-note{margin:18px 0 0;color:var(--body);font-size:.72rem;line-height:1.65}.method-note b{color:var(--signal)}
.dip-results{margin-top:24px;border:1px solid var(--line);background:var(--paper)}.dip-results-heading{display:flex;justify-content:space-between;gap:24px;padding:16px 18px;border-bottom:1px solid var(--line)}.dip-results-heading span:first-child{font-size:.72rem;font-weight:850;letter-spacing:.09em}.dip-results-heading span:last-child{color:var(--body);font-size:.72rem}.dip-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line)}.dip-panel{min-width:0;padding:18px;background:var(--white)}.dip-panel h3{margin:0 0 14px;font-size:.72rem;letter-spacing:.08em}.dip-panel table{width:100%;border-collapse:collapse;font-size:.72rem}.dip-panel th,.dip-panel td{padding:9px 7px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.dip-panel th:first-child,.dip-panel td:first-child{text-align:left}.dip-panel th{color:var(--body);font-size:.62rem;letter-spacing:.06em}.dip-panel td:last-child{font-weight:800;color:var(--cobalt)}
footer{display:flex;justify-content:space-between;gap:20px;margin-top:0;padding:28px max(0px,calc((100vw - 1120px)/2));border-top:1px solid var(--line);color:var(--body);font-size:.7rem;line-height:1.45}footer a{color:var(--cobalt);font-weight:700}
[hidden]{display:none!important}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid var(--signal);outline-offset:3px}
@media(max-width:950px){.workspace{grid-template-columns:1fr}.results{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.export{grid-column:1/-1}.control-grid{grid-template-columns:repeat(2,1fr)}.dip-grid{grid-template-columns:1fr}}
@media(max-width:660px){.formula-strip{grid-template-columns:1fr;gap:9px}.formula-strip strong{text-align:left}.cavity-switch{grid-template-columns:1fr}.cavity-switch button+button{border-left:0;border-top:1px solid var(--line)}}
@media(max-width:620px){.site-header{min-height:68px}.theme-toggle>span:first-child{display:none}.hero{padding:58px 0 44px}.hero h1{font-size:clamp(2.2rem,9vw,3rem)}.goal-toolbar,.input-methods,.input-method-side .peak-entry,.results,.control-grid,.peak-entry{grid-template-columns:1fr}.goal-segmented,.cavity-switch{grid-template-columns:1fr}.goal-segmented button+button,.cavity-switch button+button{border-left:0;border-top:1px solid var(--line)}.controls,.results-section{padding:20px}.control-title,.dip-results-heading{align-items:start;flex-direction:column}.control-title span:last-child{text-align:left}.visual-column{padding:18px 14px}.dip-panel{padding:12px}.dip-panel th,.dip-panel td{padding:8px 4px;font-size:.65rem}.plot-foot,footer{display:block}.plot-foot span,footer span,footer a{display:block;margin:6px 0}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
