:root{
  --paper:#e8e8e4;
  --sheet:#f6f6f4;
  --card:#fcfcfb;
  --ink:#15171b;
  --ink2:#4b5058;
  --ink3:#7c828a;
  --rule:#c6c8c3;
  --rule2:#dcdcd8;
  --red:#a5312a;
  --red-soft:rgba(165,49,42,.10);
  --teal:#245f54;
  --gold:#8a6a1f;
  --serif:"Newsreader",Georgia,"Times New Roman",serif;
  --sans:"Archivo",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --step:clamp(15px,1.05vw,17px);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}

body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--serif);font-size:var(--step);line-height:1.68;
  font-variant-numeric:oldstyle-nums;
  -webkit-font-smoothing:antialiased;
}

.wrap{width:min(1120px,92vw);margin:0 auto}
.col{width:min(64ch,100%);margin:0 auto}

a{color:var(--red);text-decoration:none;border-bottom:1px solid rgba(165,49,42,.35)}
a:hover{border-bottom-color:var(--red)}
a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible{
  outline:2px solid var(--red);outline-offset:2px}

/* ---------- top bar ---------- */
.top{
  display:flex;justify-content:space-between;align-items:center;gap:16px;
  width:min(1120px,92vw);margin:0 auto;padding:18px 0 14px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;
}
.top a{color:var(--ink2);border:0}
.top a:hover{color:var(--red)}
.top .lang a.active{color:var(--ink);font-weight:600}
.top .lang{color:var(--ink3)}

/* ---------- hero ---------- */
.hero{border-top:2px solid var(--ink);padding-top:26px;margin-bottom:14px}
.hero .grid{display:grid;grid-template-columns:1.08fr .92fr;gap:clamp(24px,3.4vw,52px);align-items:start}
.eyebrow{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink3);margin:0 0 18px;font-variant-numeric:tabular-nums;
}
.eyebrow b{color:var(--red);font-weight:600}
h1{
  font-family:var(--sans);font-weight:800;font-stretch:88%;
  font-size:clamp(34px,5.6vw,66px);line-height:1.02;letter-spacing:-.022em;
  margin:0 0 20px;text-wrap:balance;
}
h1 em{font-style:normal;color:var(--red)}
.lede{font-size:clamp(17px,1.35vw,20px);line-height:1.6;color:var(--ink);margin:0 0 16px}
.lede b{font-weight:600;background:linear-gradient(transparent 62%,var(--red-soft) 62%)}
.sub{color:var(--ink2);margin:0 0 22px;font-size:16.5px}
.scrollcue{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink2);border:0;border-bottom:1px solid var(--rule)
}

/* ---------- hero staircase panel ---------- */
.stair-panel{
  background:var(--card);border:1px solid var(--rule);padding:18px 18px 14px;position:relative;
}
.stair-panel::before{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:
    linear-gradient(45deg,rgba(21,23,27,.028) 25%,transparent 25%,transparent 75%,rgba(21,23,27,.028) 75%),
    linear-gradient(45deg,rgba(21,23,27,.028) 25%,transparent 25%,transparent 75%,rgba(21,23,27,.028) 75%);
  background-size:44px 44px;background-position:0 0,22px 22px;
}
.stair-panel>*{position:relative}
.panel-head{
  display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ink3);border-bottom:1px solid var(--rule2);padding-bottom:8px;margin-bottom:12px;
}
.panel-head b{color:var(--ink);font-weight:600}
.panel-note{
  font-family:var(--mono);font-size:11px;line-height:1.5;color:var(--ink3);
  margin:12px 0 0;padding-top:10px;border-top:1px solid var(--rule2);
}

/* ---------- sections ---------- */
article{padding-bottom:40px}
section{padding:clamp(38px,5vw,72px) 0;border-top:1px solid var(--rule)}
.marker{
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--red);margin:0 0 12px;
}
h2{
  font-family:var(--sans);font-weight:700;font-stretch:90%;
  font-size:clamp(24px,2.9vw,38px);line-height:1.12;letter-spacing:-.016em;
  margin:0 0 18px;text-wrap:balance;
}
h3{
  font-family:var(--sans);font-weight:600;font-size:clamp(18px,1.6vw,21px);
  line-height:1.25;margin:30px 0 10px;letter-spacing:-.008em;
}
p{margin:0 0 16px}
.col p:last-child{margin-bottom:0}
em{font-style:italic}
strong,b{font-weight:600}
.dropcap::first-letter{
  font-family:var(--sans);font-weight:800;font-size:3.15em;line-height:.82;
  float:left;margin:.06em .1em 0 0;color:var(--ink);
}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}

/* ---------- figures ---------- */
figure{margin:28px 0 0}
figcaption{
  font-family:var(--mono);font-size:11.5px;line-height:1.55;color:var(--ink3);
  margin-top:12px;max-width:78ch;
}
.after-fig{margin-top:30px}

/* ---------- controls ---------- */
.controls{
  display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;
  padding:12px 0;margin:0 0 4px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink3);
}
.controls label{display:inline-flex;align-items:center;gap:8px}
select,input[type=number]{
  font-family:var(--mono);font-size:12.5px;letter-spacing:0;text-transform:none;
  color:var(--ink);background:var(--card);border:1px solid var(--rule);
  padding:6px 8px;border-radius:0;
}
input[type=range]{accent-color:var(--red);width:100%;max-width:340px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips button{
  font-family:var(--mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;
  background:var(--card);color:var(--ink2);border:1px solid var(--rule);
  padding:6px 10px;cursor:pointer;
}
.chips button[aria-pressed=true]{background:var(--ink);color:var(--sheet);border-color:var(--ink)}
.chips button:hover{border-color:var(--ink)}

/* ---------- staircase chart ---------- */
.stair{width:100%;display:block}
.stair text{font-family:var(--mono);font-size:9.5px;fill:var(--ink3)}
.stair .glabel{font-size:10.5px;fill:var(--ink2)}
.stair .hi{fill:var(--red)}
.legend{
  display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;
  font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--ink2);margin-top:12px;
}
.legend i{display:inline-block;width:22px;height:10px;margin-right:7px;vertical-align:-1px}
.legend .sw-ro{background:var(--ink)}
.legend .sw-cmp{border-top:1.8px solid var(--red);height:0;margin-bottom:4px}

/* ---------- retention ranking ---------- */
.rank{border-top:1px solid var(--rule);margin-top:6px}
.rank-row{
  display:grid;grid-template-columns:104px 1fr 132px;gap:12px;align-items:center;
  border-bottom:1px solid var(--rule2);padding:7px 0;
}
.rank-row .who{font-family:var(--sans);font-size:14px;font-weight:500}
.rank-row .bar{height:14px;background:rgba(21,23,27,.07);position:relative}
.rank-row .bar span{position:absolute;inset:0 auto 0 0;background:var(--ink2)}
.rank-row .val{
  font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;
  color:var(--ink2);text-align:right;white-space:nowrap;
}
.rank-row.me .who{font-weight:700;color:var(--red)}
.rank-row.me .bar span{background:var(--red)}
.rank-row.me .val{color:var(--red)}
.rank-row.thin{opacity:.5}
.rank-gap{border-bottom:1px solid var(--rule2);padding:8px 0;text-align:center}
.rank-gap button{
  font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  background:none;border:0;color:var(--ink3);cursor:pointer;padding:2px 6px;
}
.rank-gap button:hover{color:var(--red)}

/* ---------- crosstable ---------- */
.tablewrap{overflow-x:auto;border:1px solid var(--rule);background:var(--card)}
table{border-collapse:collapse;width:100%;min-width:560px}
caption{
  font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink3);text-align:left;padding:12px 14px 0;
}
th,td{
  font-family:var(--mono);font-size:12.5px;font-variant-numeric:tabular-nums;
  padding:8px 12px;text-align:right;border-bottom:1px solid var(--rule2);white-space:nowrap;
}
thead th{
  font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink3);
  border-bottom:1px solid var(--rule);font-weight:500;
}
tbody th{
  text-align:left;font-family:var(--sans);font-size:13.5px;font-weight:500;letter-spacing:0;
  text-transform:none;color:var(--ink);
}
tbody tr.me th,tbody tr.me td{color:var(--red);font-weight:600;background:var(--red-soft)}
tbody tr:last-child th,tbody tr:last-child td{border-bottom:0}
td .pc{color:var(--ink);font-weight:500}
td .raw{color:var(--ink3);font-size:11px;margin-left:6px}
tbody tr.me td .pc,tbody tr.me td .raw{color:var(--red)}

/* ---------- "treapta ta" ---------- */
.tool{
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.4vw,34px);
  border:1px solid var(--rule);background:var(--card);padding:clamp(16px,2vw,26px);margin-top:26px;
}
.tool .knobs{display:flex;flex-direction:column;gap:20px}
.knob label{
  display:block;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink3);margin-bottom:8px;
}
.knob .readout{
  font-family:var(--sans);font-weight:700;font-size:clamp(26px,3.1vw,36px);line-height:1;
  font-variant-numeric:tabular-nums;margin-bottom:10px;
}
.knob .readout small{font-family:var(--mono);font-size:12px;font-weight:400;color:var(--ink3);margin-left:8px}
.verdict{border-top:1px solid var(--rule2);padding-top:16px;margin-top:2px}
.verdict p{font-size:16px;margin:0 0 10px}
.verdict p:last-child{margin:0}
.verdict .big{
  font-family:var(--sans);font-weight:700;font-size:clamp(20px,2.2vw,27px);line-height:1.16;
  letter-spacing:-.01em;margin-bottom:12px;
}
.verdict .big span{color:var(--red);font-variant-numeric:tabular-nums}
.rungs{width:100%;display:block}
.rungs text{font-family:var(--mono);font-size:9px;fill:var(--ink3)}
.rungs .you{font-size:10.5px;fill:var(--red);font-weight:600}
.rungs .you.on{fill:var(--sheet)}
.rung-note{
  font-family:var(--mono);font-size:11px;line-height:1.5;color:var(--ink3);
  margin:10px 0 0;padding-top:10px;border-top:1px solid var(--rule2);
}

/* ---------- pull ---------- */
.pull{
  border-left:3px solid var(--red);padding:4px 0 4px 18px;margin:26px 0;
  font-family:var(--sans);font-weight:500;font-size:clamp(18px,2vw,23px);line-height:1.32;
  letter-spacing:-.01em;
}
.stats{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule);margin:26px 0 0;
}
.stats div{background:var(--card);padding:16px 16px 14px}
.stats .k{
  font-family:var(--sans);font-weight:700;font-size:clamp(26px,3vw,34px);line-height:1;
  font-variant-numeric:tabular-nums;margin-bottom:8px;
}
.stats .v{font-family:var(--mono);font-size:11px;line-height:1.5;color:var(--ink3)}

/* ---------- method ---------- */
.method{background:var(--sheet);border-top:1px solid var(--rule)}
.method h2{font-size:clamp(20px,2.2vw,26px)}
.method p{font-size:15px;color:var(--ink2)}
.method a{color:var(--red)}

/* ---------- footer ---------- */
footer{
  border-top:2px solid var(--ink);padding:26px 0 60px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;color:var(--ink3);
}
footer .row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px}
footer a{color:var(--ink2);border:0}
footer a:hover{color:var(--red)}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .hero .grid{grid-template-columns:1fr}
  .tool{grid-template-columns:1fr}
}
@media (max-width:640px){
  :root{--step:16px}
  .top{font-size:10.5px}
  .rank-row{grid-template-columns:84px 1fr;row-gap:2px}
  .rank-row .val{grid-column:1/-1;text-align:left;font-size:11px}
  .stats{grid-template-columns:1fr 1fr}
  .dropcap::first-letter{font-size:2.7em}
  .controls{font-size:10.5px;gap:8px 12px}
}
@media (max-width:400px){
  .stats{grid-template-columns:1fr}
}
