/* ── Themes ── */
:root[data-theme="dark"] {
  --bg:       #0f1117;
  --bg2:      #181c27;
  --bg3:      #1f2436;
  --border:   #2e3347;
  --border2:  #3d4461;
  --text:     #f0f2f8;
  --text2:    #9ba3bb;
  --text3:    #6b7494;
  --blue:     #5b9cf6;
  --blue-bg:  rgba(91,156,246,.1);
  --green:    #3ecf8e;
  --green-bg: rgba(62,207,142,.08);
  --green-bd: #1f7a55;
  --amber:    #f5a623;
  --amber-bg: rgba(245,166,35,.08);
  --amber-bd: #b87a1a;
  --red:      #f06060;
  --red-bg:   rgba(240,96,96,.08);
  --red-bd:   #a03030;
  --shadow:   0 4px 24px rgba(0,0,0,.4);
  /* accent */
  --accent:      #5b9cf6;
  --accent-bg:   rgba(91,156,246,.1);
  --accent-bd:   rgba(91,156,246,.4);
}
:root[data-theme="light"] {
  --bg:       #f5f6fa;
  --bg2:      #ffffff;
  --bg3:      #eef0f7;
  --border:   #d0d5e8;
  --border2:  #b0b8d4;
  --text:     #1a1e2e;
  --text2:    #4a5070;
  --text3:    #8a93b0;
  --blue:     #2563eb;
  --blue-bg:  rgba(37,99,235,.07);
  --green:    #15803d;
  --green-bg: rgba(21,128,61,.07);
  --green-bd: #15803d;
  --amber:    #b45309;
  --amber-bg: rgba(180,83,9,.07);
  --amber-bd: #b45309;
  --red:      #dc2626;
  --red-bg:   rgba(220,38,38,.07);
  --red-bd:   #dc2626;
  --shadow:   0 4px 24px rgba(0,0,0,.1);
  /* accent */
  --accent:      #2563eb;
  --accent-bg:   rgba(37,99,235,.07);
  --accent-bd:   rgba(37,99,235,.3);
}

*{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Inter',system-ui,sans-serif;
  min-height:100vh;
  line-height:1.5;
  transition:background .25s,color .25s;
}

/* ── Grid bg ── */
body::before{
  content:'';position:fixed;inset:0;
  background-image:
    linear-gradient(var(--border) 1px,transparent 1px),
    linear-gradient(90deg,var(--border) 1px,transparent 1px);
  background-size:48px 48px;
  opacity:.35;
  pointer-events:none;z-index:0;
  transition:opacity .25s;
}
[data-theme="light"] body::before{opacity:.55}

.page{position:relative;z-index:1;max-width:1200px;margin:0 auto;padding:32px 24px 80px}

/* ── Fixed controls (top-right) ── */
.fixed-controls{
  position:fixed;top:20px;right:24px;z-index:100;
  display:flex;flex-direction:column;gap:8px;
  align-items:center;
}
.theme-btn{
  width:44px;height:44px;
  background:var(--bg2);
  border:1px solid var(--border);
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  font-size:20px;
  box-shadow:var(--shadow);
  transition:background .2s,border-color .2s,transform .15s;
  border-radius:8px;
}
.theme-btn:hover{transform:scale(1.1)}

/* color picker popup */
.color-btn{
  width:44px;height:44px;
  background:var(--bg2);
  border:1px solid var(--border);
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  font-size:18px;
  box-shadow:var(--shadow);
  transition:background .2s,border-color .2s,transform .15s;
  border-radius:8px;
  position:relative;
}
.color-btn:hover{transform:scale(1.1)}
.color-popup{
  position:absolute;
  top:0;right:52px;
  background:var(--bg2);
  border:1px solid var(--border);
  border-radius:10px;
  padding:12px;
  box-shadow:var(--shadow);
  display:none;
  flex-direction:column;
  gap:8px;
  min-width:140px;
}
.color-popup.open{display:flex}
.color-popup-title{
  font-size:10px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--text3);
  padding-bottom:6px;border-bottom:1px solid var(--border);
  margin-bottom:2px;
}
.color-swatch{
  display:flex;align-items:center;gap:10px;
  padding:7px 10px;border-radius:6px;cursor:pointer;
  border:1.5px solid transparent;
  transition:border-color .15s,background .15s;
  font-size:13px;font-weight:500;color:var(--text2);
}
.color-swatch:hover{background:var(--bg3);color:var(--text)}
.color-swatch.active{border-color:var(--text2);color:var(--text);background:var(--bg3)}
.color-swatch .sw-dot{
  width:18px;height:18px;border-radius:50%;flex-shrink:0;
}

/* ── Header ── */
.hdr{
  border-bottom:2px solid var(--border);
  padding-bottom:28px;margin-bottom:36px;
  display:flex;justify-content:space-between;align-items:flex-start;gap:20px;
  flex-wrap:wrap;
}
.hdr-left{}
.hdr-tag{
  font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--blue);font-weight:600;margin-bottom:8px;
}
.hdr h1{
  font-size:clamp(24px,3.5vw,40px);font-weight:700;
  line-height:1.15;margin-bottom:8px;color:var(--text);
}
.hdr h1 span{color:var(--blue)}
.hdr-sub{font-size:14px;color:var(--text2);line-height:1.6;max-width:600px}
.badges{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.badge{
  font-size:11px;font-weight:500;padding:5px 12px;
  border:1.5px solid var(--border2);color:var(--text2);
  background:var(--bg2);border-radius:6px;
}
.badge.g{border-color:var(--green-bd);color:var(--green);background:var(--green-bg)}
.badge.a{border-color:var(--amber-bd);color:var(--amber);background:var(--amber-bg)}
.badge.r{border-color:var(--red-bd);color:var(--red);background:var(--red-bg)}

/* ── Section ── */
.sec{margin-bottom:32px}
.stitle{
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  font-weight:600;color:var(--text3);
  margin-bottom:16px;display:flex;align-items:center;gap:12px;
}
.stitle::after{content:'';flex:1;height:1px;background:var(--border)}

/* ── Card ── */
.card{
  background:var(--bg2);
  border:1px solid var(--border);
  border-radius:10px;
  padding:20px 24px;
  box-shadow:var(--shadow);
}

/* ── Equation builder ── */
.eq-builder{
  background:var(--bg2);border:1.5px solid var(--border);
  border-radius:10px;padding:24px 28px;margin-bottom:14px;
  box-shadow:var(--shadow);
}
.eq-builder-label{
  font-size:11px;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--text3);margin-bottom:16px;
}
.eq-line{
  display:flex;align-items:center;flex-wrap:wrap;
  gap:8px 10px;
  font-family:'JetBrains Mono',monospace;
  font-size:17px;line-height:2.2;
}
.eq-coef{display:inline-flex;flex-direction:column;align-items:center;gap:3px}
.eq-coef input{
  width:66px;height:34px;
  background:var(--bg3);
  border:1.5px solid var(--amber-bd);
  color:var(--amber);
  font-family:'JetBrains Mono',monospace;
  font-size:14px;font-weight:600;
  text-align:center;outline:none;
  border-radius:5px;
  transition:border-color .2s,box-shadow .2s;
  -moz-appearance:textfield;
}
.eq-coef input::-webkit-inner-spin-button{-webkit-appearance:none}
.eq-coef input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-bg)}
.eq-coef-label{font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text3);font-family:'Inter',sans-serif}
.eq-sym{color:var(--text2);font-size:20px;line-height:1;padding:0 2px}
.eq-term{color:var(--text);white-space:nowrap}
.eq-frac{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;line-height:1.15;margin:0 2px}
.eq-frac .num{border-bottom:1.5px solid var(--text2);padding:0 3px 2px;font-size:14px}
.eq-frac .den{padding:2px 3px 0;font-size:14px}

.eq-hint{
  font-size:13px;color:var(--text2);
  margin-top:14px;line-height:1.7;
  border-top:1px solid var(--border);
  padding-top:12px;
}
.eq-hint b{color:var(--text);font-weight:600}
.eq-hint .warn{color:var(--red)}
.eq-hint .ok{color:var(--green)}

/* b<0 warning */
#b-warning{
  display:none;
  background:var(--red-bg);border:1.5px solid var(--red-bd);
  border-radius:8px;padding:12px 16px;margin-bottom:10px;
  font-size:13px;color:var(--red);line-height:1.6;
}

/* ── Live equation ── */
.eq-live{
  background:var(--bg2);
  border:1.5px solid var(--border);
  border-left:4px solid var(--blue);
  border-radius:0 8px 8px 0;
  padding:16px 20px;margin-bottom:10px;
  box-shadow:var(--shadow);
}
.eq-live.amber{border-left-color:var(--amber)}
.eq-live-label{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text3);margin-bottom:6px}
.eq-live-body{font-family:'JetBrains Mono',monospace;font-size:15px;color:var(--text);line-height:1.7}
.eq-live-body .hi{color:var(--amber);font-weight:600}

/* upwind note */
.upwind-note{
  font-size:13px;padding:12px 16px;
  border:1px solid var(--border);border-radius:8px;
  background:var(--bg3);color:var(--text2);
  margin-top:10px;line-height:1.6;
}
.upwind-note b{color:var(--text);font-weight:600}

/* ── Horizontal control strip ── */
.ctrl-horizontal{
  display:flex;gap:0;align-items:stretch;padding:0;overflow:hidden;
}
.ctrl-sliders{
  flex:2;min-width:260px;padding:22px 24px;
}
.ctrl-params{
  flex:1.6;min-width:220px;padding:22px 24px;
}
.ctrl-verdict{
  flex:1.8;min-width:220px;padding:22px 24px;
}
.ctrl-vdivider{
  width:1px;background:var(--border);flex-shrink:0;
}
@media(max-width:860px){
  .ctrl-horizontal{flex-direction:column}
  .ctrl-vdivider{width:auto;height:1px}
}

/* ── Math variable: proper stacked sup+sub via grid ── */
.mv{
  display:inline-grid;
  grid-template-columns:auto auto;
  grid-template-rows:auto auto;
  align-items:center;
  vertical-align:middle;
  line-height:1;
}
.mv-base{
  grid-column:1;
  grid-row:1/3;
  align-self:center;
  font-family:'JetBrains Mono',monospace;
  padding-right:1px;
}
.mv-sup{
  grid-column:2;
  grid-row:1;
  font-size:.58em;
  align-self:end;
  line-height:1.1;
  padding-bottom:1px;
}
.mv-sub{
  grid-column:2;
  grid-row:2;
  font-size:.58em;
  align-self:start;
  line-height:1.1;
  padding-top:1px;
}
.lshape-row{
  display:flex;align-items:center;gap:8px;
  padding:6px 10px;border-radius:6px;
  border:1px solid var(--border);
  background:var(--bg3);
  font-size:11px;
  transition:border-color .2s,background .2s;
  white-space:nowrap;
}
.lshape-row.active{
  border-color:var(--amber-bd);
  background:var(--amber-bg);
}
.lshape-icon{
  width:30px;height:16px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}
.lshape-icon svg{overflow:visible}
.lshape-cond{color:var(--text3);font-family:'JetBrains Mono',monospace;font-size:10px}
.lshape-row.active .lshape-cond{color:var(--amber)}
.lshape-name{color:var(--text2);display:none}
.lshape-row.active .lshape-name{display:inline;color:var(--text);font-weight:600}
.lshape-badge{
  font-size:9px;font-weight:700;letter-spacing:.06em;
  padding:2px 6px;border-radius:4px;flex-shrink:0;
}
.lshape-badge.now{background:var(--amber);color:#000}
.lshape-badge.other{display:none}

/* ── Controls panel ── */
.ctrl-panel{
  background:var(--bg2);border:1.5px solid var(--border);
  border-radius:10px;padding:22px 22px;
  box-shadow:var(--shadow);
}
.ctrl-panel h3{
  font-size:12px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--text3);margin-bottom:16px;
}

/* slider + number row */
.slider-row{margin-bottom:20px}
.sl-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.sl-name{font-size:14px;font-weight:500;color:var(--text)}
.sl-input-row{display:flex;align-items:center;gap:10px;margin-bottom:5px}
.sl-input-row input[type=range]{
  flex:1;-webkit-appearance:none;
  height:4px;background:var(--border2);
  outline:none;cursor:pointer;border-radius:2px;
}
.sl-input-row input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;
  width:18px;height:18px;
  background:var(--blue);
  cursor:pointer;border-radius:50%;
  box-shadow:0 0 0 3px var(--blue-bg);
  transition:transform .15s;
}
.sl-input-row input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2)}
.sl-input-row input[type=range]::-moz-range-thumb{
  width:18px;height:18px;background:var(--blue);
  cursor:pointer;border-radius:50%;border:none;
}
.sl-num{
  width:72px;height:34px;
  background:var(--bg3);
  border:1.5px solid var(--border2);
  color:var(--text);
  font-family:'JetBrains Mono',monospace;
  font-size:13px;font-weight:600;
  text-align:center;outline:none;
  border-radius:6px;
  transition:border-color .2s,box-shadow .2s;
  flex-shrink:0;
  -moz-appearance:textfield;
}
.sl-num::-webkit-inner-spin-button{-webkit-appearance:none}
.sl-num:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-bg)}
.sl-range{display:flex;justify-content:space-between;font-size:11px;color:var(--text3)}

.divider{height:1px;background:var(--border);margin:18px 0}

/* ── Results table ── */
.res-table{width:100%;border-collapse:collapse;font-size:13px}
.res-table tr{border-bottom:1px solid var(--border)}
.res-table tr:last-child{border-bottom:none}
.res-table td{padding:9px 4px}
.res-table td:first-child{color:var(--text2);width:70%}
.res-table td:first-child small{color:var(--text3)}
.res-table td:last-child{
  font-family:'JetBrains Mono',monospace;
  font-size:14px;font-weight:600;
  color:var(--text);text-align:right;
}

/* ── Verdict ── */
.verdict{
  padding:14px 18px;margin-top:16px;
  display:flex;align-items:flex-start;gap:12px;
  border:1.5px solid;border-radius:10px;
}
.verdict.ok{border-color:var(--green-bd);background:var(--green-bg)}
.verdict.bad{border-color:var(--red-bd);background:var(--red-bg)}
.v-icon{font-size:22px;flex-shrink:0;line-height:1;padding-top:1px}
.v-main{font-size:15px;font-weight:700;line-height:1.3}
.verdict.ok .v-main{color:var(--green)}
.verdict.bad .v-main{color:var(--red)}
.v-sub{font-size:12px;color:var(--text2);margin-top:4px;line-height:1.5;font-family:'JetBrains Mono',monospace}

/* ── Canvas ── */
.canvas-wrap{
  background:var(--bg2);border:1.5px solid var(--border);
  border-radius:10px;padding:16px;
  box-shadow:var(--shadow);
}
canvas{display:block;width:100%;height:auto;border-radius:6px}
.clegend{display:flex;gap:18px;margin-top:12px;flex-wrap:wrap;padding:0 4px}
.cl{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text2)}
.cl-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}
.cl-dash{width:22px;height:0;border-top:2.5px dashed;flex-shrink:0}

/* ── Recurrence box ── */
.rec-box{
  background:var(--bg2);
  border:1.5px solid var(--green-bd);
  border-radius:10px;
  padding:20px 24px;
  box-shadow:var(--shadow);
}
.rec-label{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text3);margin-bottom:12px}
.rec-body{font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--text);line-height:1.8}
.rec-body .hi{color:var(--green);font-weight:600}

.where-box{
  margin:12px 0;padding:12px 16px;
  background:var(--bg3);
  border:1px solid var(--border);
  border-radius:8px;
  font-size:13px;line-height:2;color:var(--text2);
}
.where-box .wh-title{
  font-size:10px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--text3);
  margin-bottom:6px;display:block;
}
.where-box b{color:var(--text);font-weight:600;font-family:'JetBrains Mono',monospace}

.recdir{font-size:13px;color:var(--text2);margin-top:12px;line-height:1.7;padding:12px 16px;background:var(--bg3);border-radius:8px;border:1px solid var(--border)}
.recdir b{color:var(--text)}

/* ── Random button ── */
.rand-btn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:10px 14px;
  background:var(--bg3);
  border:1.5px solid var(--border2);
  border-radius:8px;
  color:var(--text2);
  font-family:'Inter',sans-serif;
  font-size:11px;font-weight:600;
  letter-spacing:.06em;
  cursor:pointer;
  transition:background .2s,border-color .2s,color .2s,transform .15s;
  white-space:nowrap;
  flex-shrink:0;
  align-self:center;
  min-width:80px;
}
.rand-btn:hover{
  background:var(--blue-bg);
  border-color:var(--blue);
  color:var(--blue);
  transform:scale(1.05);
}
.rand-btn:active{transform:scale(0.97)}
.rand-btn svg{transition:transform .4s}
.rand-btn:hover svg{transform:rotate(180deg)}

/* ── Accordion ── */
.acc{
  background:var(--bg2);border:1.5px solid var(--border);
  border-radius:10px;margin-bottom:8px;overflow:hidden;
  box-shadow:var(--shadow);
}
.acc-hdr{
  padding:15px 20px;cursor:pointer;
  display:flex;justify-content:space-between;align-items:center;
  font-size:14px;font-weight:500;color:var(--text2);
  user-select:none;transition:color .2s,background .2s;
}
.acc-hdr:hover{color:var(--text);background:var(--bg3)}
.acc-arrow{transition:transform .25s;font-size:12px;color:var(--text3)}
.acc-hdr.open .acc-arrow{transform:rotate(180deg)}
.acc-hdr.open{color:var(--text)}
.acc-body{max-height:0;overflow:hidden;transition:max-height .35s ease}
.acc-body.open{max-height:900px}
.acc-inner{
  padding:0 20px 20px;
  border-top:1px solid var(--border);
  font-size:13px;color:var(--text2);line-height:1.8;
}
.acc-inner .math{
  font-family:'JetBrains Mono',monospace;
  font-size:14px;color:var(--text);
  margin:12px 0;padding:12px 16px;
  background:var(--bg3);border-left:3px solid var(--blue);
  border-radius:0 6px 6px 0;
}
.acc-inner p{margin-bottom:10px}
.acc-inner code{
  background:var(--bg3);border:1px solid var(--border);
  padding:2px 6px;font-size:12px;color:var(--blue);
  border-radius:4px;font-family:'JetBrains Mono',monospace;
}

/* derivation rows */
.dl-row{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:7px 0;border-bottom:1px solid var(--border);gap:14px;
}
.dl-row:last-child{border-bottom:none}
.dl-eq{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--text)}
.dl-comment{font-size:11px;color:var(--text3);flex-shrink:0;text-align:right}

/* steps */
.steps{counter-reset:s}
.step{counter-increment:s;display:flex;gap:12px;margin-bottom:12px}
.step::before{
  content:counter(s,decimal-leading-zero);
  font-size:11px;font-weight:700;color:var(--blue);
  letter-spacing:.08em;padding-top:1px;flex-shrink:0;min-width:22px;
}
.step-t{font-size:13px;color:var(--text2);line-height:1.7}
.step-t strong{color:var(--text);font-weight:600}

/* ── Scheme toggle ── */
.scheme-toggle{
  display:flex;gap:0;
  border:1.5px solid var(--border2);border-radius:8px;overflow:hidden;
}
.scheme-btn{
  flex:1;padding:11px 12px;
  background:transparent;border:none;cursor:pointer;
  font-family:'Inter',sans-serif;font-size:14px;font-weight:500;
  color:var(--text2);transition:background .2s,color .2s;
  text-align:center;user-select:none;
  border-right:1px solid var(--border2);
}
.scheme-btn:last-child{border-right:none}
.scheme-btn.active{
  background:var(--blue);color:#fff;font-weight:700;
}
.scheme-btn:not(.active):hover{background:var(--bg3);color:var(--text)}

/* ── Lambda shape info ── */
.lshape-row{
  display:flex;align-items:center;gap:10px;
  padding:7px 10px;border-radius:6px;
  border:1px solid var(--border);
  background:var(--bg3);
  font-size:12px;
  transition:border-color .2s, background .2s;
}
.lshape-row.active{
  border-color:var(--amber-bd);
  background:var(--amber-bg);
}
.lshape-icon{
  width:36px;height:18px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}
.lshape-icon svg{overflow:visible}
.lshape-cond{color:var(--text3);min-width:130px;font-family:'JetBrains Mono',monospace;font-size:11px}
.lshape-row.active .lshape-cond{color:var(--amber)}
.lshape-name{color:var(--text2);flex:1}
.lshape-row.active .lshape-name{color:var(--text);font-weight:600}
.lshape-badge{
  font-size:10px;font-weight:600;letter-spacing:.06em;
  padding:2px 8px;border-radius:4px;flex-shrink:0;
}
.lshape-badge.now{background:var(--amber);color:#000}
.lshape-badge.other{background:var(--bg2);color:var(--text3);border:1px solid var(--border)}

/* ── Stability type card ── */
.stab-type{
  margin-top:14px;border:1.5px solid var(--border);border-radius:10px;overflow:hidden;
}
.stab-type-header{
  display:flex;align-items:center;gap:12px;padding:13px 16px;
  font-size:14px;font-weight:700;
}
.stab-type-header .st-icon{font-size:20px;flex-shrink:0}
.stab-type-body{
  padding:10px 16px 14px;font-size:13px;color:var(--text2);
  line-height:1.7;border-top:1px solid var(--border);
}
.stab-type-body b{color:var(--text);font-weight:600}
.stab-type-body .cond-box{
  display:inline-block;margin-top:8px;padding:7px 14px;
  background:var(--bg3);border:1px solid var(--border2);border-radius:6px;
  font-family:'JetBrains Mono',monospace;font-size:13px;
  color:var(--amber);font-weight:600;
}
.stab-type.abs-ok{border-color:var(--green-bd);background:var(--green-bg)}
.stab-type.abs-ok .stab-type-header{color:var(--green)}
.stab-type.cond-stab{border-color:var(--amber-bd);background:var(--amber-bg)}
.stab-type.cond-stab .stab-type-header{color:var(--amber)}
.stab-type.abs-bad{border-color:var(--red-bd);background:var(--red-bg)}
.stab-type.abs-bad .stab-type-header{color:var(--red)}

/* ── Footer ── */
.footer{
  margin-top:60px;padding-top:20px;
  border-top:1px solid var(--border);
  font-size:11px;color:var(--text3);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;
/* ── Tab navigation ── */
.tab-nav{
  position:sticky;top:0;z-index:90;
  background:var(--bg, #0f1117);
  border-bottom:1.5px solid var(--border, #2e3347);
  display:flex;align-items:stretch;
  padding:0 24px;
  box-shadow:0 2px 12px rgba(0,0,0,.25);
}
[data-theme="light"] .tab-nav{box-shadow:0 2px 12px rgba(0,0,0,.07)}
.tab-btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:0 24px;height:52px;
  background:transparent;
  font-family:'Inter',sans-serif;font-size:13px;font-weight:500;
  color:var(--text3);letter-spacing:.04em;
  border-bottom:2.5px solid transparent;
  margin-bottom:-1.5px;
  cursor:pointer;
  transition:color .2s,border-color .2s;
  white-space:nowrap;
  user-select:none;
}
.tab-btn:hover{color:var(--text2)}
.tab-btn.active{color:var(--blue);border-bottom-color:var(--blue);font-weight:700}
.tab-num{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;min-width:22px;border-radius:50%;
  font-size:11px;font-weight:700;
  background:var(--bg3);color:var(--text3);
  border:1px solid var(--border2);
  transition:background .2s,color .2s,border-color .2s;
}
.tab-btn.active .tab-num{
  background:var(--blue);color:#fff;border-color:var(--blue);
}

.page-content{display:none}
.page-content.active{display:block}

/* ── Taylor page specific ── */
.diff-selector{
  display:flex;gap:0;
  border:1.5px solid var(--border2);border-radius:8px;overflow:hidden;
}
.diff-btn{
  flex:1;padding:11px 10px;
  background:transparent;
  font-family:'Inter',sans-serif;font-size:13px;font-weight:500;
  color:var(--text2);
  cursor:pointer;
  transition:background .2s,color .2s;
  white-space:nowrap;
  text-align:center;
  user-select:none;
  border-right:1px solid var(--border2);
}
.diff-btn:last-child{border-right:none}
.diff-btn:not(.active):hover{background:var(--bg3);color:var(--text)}
.diff-btn.active{background:var(--blue);color:#fff;font-weight:700}

.taylor-step{
  background:var(--bg2);
  border:1.5px solid var(--border);
  border-radius:10px;
  margin-bottom:14px;
  overflow:hidden;
  box-shadow:var(--shadow);
}
.taylor-step-hdr{
  display:flex;align-items:center;gap:14px;
  padding:15px 20px;
  border-bottom:1px solid var(--border);
  background:var(--bg3);
}
.taylor-step-num{
  width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--blue);color:#fff;
  font-size:12px;font-weight:700;flex-shrink:0;
}
.taylor-step-title{font-size:14px;font-weight:600;color:var(--text)}
.taylor-step-badge{
  margin-left:auto;font-size:11px;font-weight:700;
  padding:3px 10px;border-radius:4px;
  background:var(--amber-bg);border:1px solid var(--amber-bd);
  color:var(--amber);font-family:'JetBrains Mono',monospace;
}
.taylor-step-body{padding:18px 22px;font-size:13px;color:var(--text2);line-height:1.9}

.trow{
  display:flex;flex-wrap:wrap;align-items:baseline;
  gap:4px 8px;
  padding:6px 0;border-bottom:1px solid var(--border);
  font-family:'JetBrains Mono',monospace;font-size:14px;
}
.trow:last-child{border-bottom:none}
.trow-label{font-family:'Inter',sans-serif;font-size:11px;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;color:var(--text3);
  min-width:160px;flex-shrink:0;padding-top:2px;}
.trow-expr{color:var(--text);flex:1;min-width:200px}
.tex-exact{color:var(--blue)}
.tex-trunc{color:var(--amber);font-weight:600}
.tex-higher{color:var(--text3)}
.tex-eq{color:var(--text2);padding:0 6px}

.psi-box{
  background:var(--bg3);border:1.5px solid var(--amber-bd);
  border-radius:8px;padding:14px 18px;margin-top:12px;
  font-family:'JetBrains Mono',monospace;font-size:14px;
  line-height:1.9;
}
.psi-label{font-family:'Inter',sans-serif;font-size:10px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:var(--text3);margin-bottom:8px}

.order-verdict{
  background:var(--bg2);border:2px solid var(--green-bd);
  border-radius:12px;padding:24px 28px;
  display:flex;align-items:center;gap:20px;
  box-shadow:var(--shadow);
}
.order-verdict.warn{border-color:var(--amber-bd)}
.order-big{
  font-family:'JetBrains Mono',monospace;
  font-size:32px;font-weight:700;color:var(--green);
  flex-shrink:0;
}
.order-verdict.warn .order-big{color:var(--amber)}
.order-explain{font-size:13px;color:var(--text2);line-height:1.7}
.order-explain strong{color:var(--text)}