.grid-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.grid-cards>[data-wrap]{display:flex}
.wave-card {
  position:relative;
  display:flex;
  flex-direction:column;
  min-width:0;
  width:100%;
  background:var(--bg-2);
  border:1px solid var(--line);
  border-radius:24px;
  padding:26px;
  transition:border-color .2s,box-shadow .2s;
}
.wave-card:hover{border-color:var(--line-2);box-shadow:var(--shadow)}
.card-top{display:flex;align-items:center;gap:12px;margin-bottom:22px;min-width:0}
.card-product{font-size:15px;font-weight:700}
.card-kind{margin-left:auto;font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);text-align:right}
.card-verdict{margin:0 0 14px}
.card-verdict .level-word{font-size:28px}
.card-title{font:600 22px/1.25 var(--sans);letter-spacing:-.01em;margin-bottom:10px}
.card-title a{text-decoration:none}
.card-title a::after{content:'';position:absolute;inset:0;border-radius:24px}
.card-title a:focus-visible{outline:none}
.wave-card:has(.card-title a:focus-visible){outline:3px solid var(--accent);outline-offset:3px}
.card-summary {
  font-size:15px;
  line-height:1.55;
  color:var(--ink-3);
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
  margin-bottom:22px;
}
.card-time {
  display:flex;
  flex-wrap:wrap;
  gap:4px 16px;
  margin-top:auto;
  padding-top:16px;
  border-top:1px solid var(--line);
  font:500 12px var(--mono);
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--ink-2);
}
.card-src{margin-left:auto;color:var(--ink-3)}
/* Labels are quiet mono text, never boxed chips. */
.pill,.tag {
  display:inline-flex;
  align-items:center;
  gap:6px;
  font:500 12px/1.3 var(--mono);
  letter-spacing:.04em;
  white-space:nowrap;
  color:var(--ink-3);
  text-decoration:none;
}
.pill-dot{width:6px;height:6px;background:var(--band);border-radius:50%}
.band-flat{--band:var(--flat)}
.band-ripple{--band:var(--ripple)}
.band-swell{--band:var(--swell)}
.band-surge{--band:var(--surge)}
.tag-ok{color:var(--ok)}
.tag-ok::before{content:'✓'}
a.tag:hover{text-decoration:underline}
.tag-demo{color:var(--amber)}
.reasons{margin:12px 0;padding-left:18px;color:var(--ink-2);font-size:13px}
.reasons li{margin-bottom:7px}
.empty{text-align:center;margin:24px 0;padding:48px}
.empty p{margin-bottom:20px}
/* Filters and sort links: plain text with an underline for the current one. */
.chips{display:flex;gap:4px 22px;flex-wrap:wrap}
.chip {
  display:inline-flex;
  align-items:center;
  min-height:44px;
  padding:0;
  border:0;
  background:none;
  color:var(--ink-3);
  font-size:15px;
  font-weight:600;
  text-decoration:none;
  border-bottom:2px solid transparent;
}
.chip:hover{color:var(--ink)}
.chip[aria-current]{color:var(--ink);border-bottom-color:var(--accent)}
.subscribe{display:grid;grid-template-columns:1fr 1fr;gap:32px;background:var(--bg-2);border:1px solid var(--line);padding:40px;border-radius:28px}
.subscribe-copy h2{font:700 30px/1.1 var(--display);letter-spacing:-.03em;margin-bottom:12px}
.subscribe-copy p{font-size:16px;color:var(--ink-2);max-width:420px}
.subscribe-form{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:center}
.subscribe-form input[type=email]{grid-column:1/-1}
.subscribe .notice{grid-column:1/-1}
.subscribe:has(.notice) .subscribe-form{grid-column:2}
.copy {
  background:transparent;
  color:var(--ink-2);
  border:1px solid var(--line-2);
  border-radius:10px;
  font-size:13px;
  font-weight:600;
  min-height:40px;
  padding:7px 12px;
}
.copy:hover,.copy.is-done{color:var(--ink);border-color:var(--accent)}
@media(max-width:820px) {
  .grid-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid-cards>.wave-card:last-child:nth-child(odd){grid-column:1/-1}
  .subscribe{grid-template-columns:1fr;gap:24px;padding:28px}
  .subscribe:has(.notice) .subscribe-form{grid-column:auto}
}
@media(max-width:560px) {
  .grid-cards{grid-template-columns:1fr}
  .wave-card{padding:22px}
  .subscribe-form{grid-template-columns:1fr}
  .subscribe-form input[type=email]{grid-column:auto}
  .subscribe-copy h2{font-size:26px}
  .panel{padding:22px}
}
html:not(.js) .copy{display:none}
/* Bail scale: Stay (steel) · Get ready (amber) · Bail (ember) · Gone (steel). A big word and a 3-segment bar, never a pill. */
.tone-stay,.level-stay{--tone:var(--steel);--tone-fill:var(--steel-fill)}
.tone-ready,.level-ready{--tone:var(--amber);--tone-fill:var(--amber-fill)}
.tone-bail,.level-bail{--tone:var(--ember);--tone-fill:var(--ember-fill)}
.tone-gone,.level-gone{--tone:var(--steel);--tone-fill:var(--steel-fill)}
.level-mark{display:inline-flex;flex-direction:column;gap:10px}
.level-word{font:800 34px/1 var(--display);letter-spacing:-.02em;color:var(--tone)}
.level{display:inline-flex;flex-direction:column;gap:8px}
.level-bar{display:flex;gap:4px}
.level-bar i{width:44px;height:6px;border-radius:3px;background:var(--seg-off)}
.level-lg .level-bar i{width:68px;height:8px;border-radius:4px}
.level[data-level="1"] i:nth-child(-n+1),
.level[data-level="2"] i:nth-child(-n+2),
.level[data-level="3"] i{background:var(--tone-fill)}
.level-labels{display:flex;gap:4px;font:500 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap}
.level-labels span{width:68px}
.level-stay .level-labels span:nth-child(1),
.level-ready .level-labels span:nth-child(2),
.level-bail .level-labels span:nth-child(3),
.level-gone .level-labels span:nth-child(3){color:var(--tone)}
/* Countdown and closed labels: mono text, no box. */
.when{font:500 13px var(--mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;color:var(--ink-2)}
.when-closed{color:var(--steel)}
.hero-cta{display:flex;align-items:center;flex-wrap:wrap;gap:26px}
.filters{margin-bottom:22px}
.crumbs{display:flex;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--ink-2);padding:28px 0}
.crumbs a{text-decoration:none}
.section-nav {
  display:flex;
  gap:28px;
  position:sticky;
  top:87px;
  z-index:25;
  padding:18px 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:var(--bg);
  overflow-x:auto;
  white-space:nowrap;
  scrollbar-width:thin;
  font-size:12px;
}
.section-nav>a{text-decoration:none;font-weight:700}
.section-nav>a:last-child{margin-left:auto}
.block{padding-bottom:40px;margin-bottom:40px;border-bottom:1px solid var(--line)}
.block:last-child{margin-bottom:0}
.block .h2{font-size:34px}
.playbook{list-style:none;padding:0;margin:24px 0 0;display:grid;gap:12px;counter-reset:step}
.step{display:flex;align-items:flex-start;gap:16px;border:1px solid var(--line);border-radius:12px;padding:22px;background:var(--bg-2)}
.step-n {
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  flex:none;
  border:1px solid var(--line-2);
  border-radius:50%;
  font-size:12px;
  color:var(--ink);
}
.step-body{min-width:0;flex:1}
.step h3{font-size:16px;line-height:1.4;margin-bottom:8px;font-weight:700}
.step p{font-size:13px;color:var(--ink-2);line-height:1.8}
.step-check{display:flex;align-items:center;gap:8px;font-size:11px;margin-top:14px;color:var(--ink-2);cursor:pointer}
.step:has(input:checked){background:var(--bg-3)}
.step:has(input:checked) .step-n{background:var(--ink);color:var(--bg)}
.step .copy{flex:none}
.facts{width:100%;border-collapse:collapse;margin:24px 0 0;font-size:14px}
.facts th,.facts td{padding:18px 0;border-bottom:1px solid var(--line);vertical-align:top;text-align:left}
.facts th{width:36%;font-size:12px;font-weight:500;color:var(--ink-2);padding-right:24px}
.facts td{overflow-wrap:anywhere}
.facts sup a{color:var(--swell);font:11px var(--mono);padding-left:6px}
.alt{padding:24px;border:1px solid var(--line);border-radius:12px;background:var(--bg-2)}
.alt p{font-size:13px;color:var(--ink-2)}
.sources{padding-left:22px;font-size:14px}
.sources li{padding:0 0 20px 6px;scroll-margin-top:160px}
.sources a{font-weight:600;overflow-wrap:anywhere}
.src-meta{display:block;color:var(--ink-2);font:11px/1.7 var(--mono);margin-top:7px}
.prose{font-size:15px;line-height:1.85;overflow-wrap:anywhere}
.prose h1,.prose h2,.prose h3{line-height:1.3;margin:28px 0 16px;letter-spacing:-.04em}
.prose h2{font-size:25px}
.prose h3{font-size:20px}
.prose ul,.prose ol{margin:16px 0}
.prose p{margin:16px 0}
.prose table,.compare{width:100%;border-collapse:collapse}
.prose td,.prose th,.compare td,.compare th{padding:12px;border-bottom:1px solid var(--line);text-align:left}
.bars{display:flex;align-items:end;gap:12px;height:110px;margin-top:24px}
.bar{display:flex;flex:1;height:100%;flex-direction:column;align-items:center;gap:4px}
.bar-col{display:flex;align-items:end;height:65px;width:100%;max-width:28px;background:var(--bg-3);border-radius:4px;overflow:hidden}
.bar-col .meter{display:block;width:100%;height:100%}
.bar-col rect{fill:var(--accent)}
.bar-k,.bar-v{font-size:11px;color:var(--ink-2)}
.plans{display:grid;grid-template-columns:1fr 1fr;gap:24px;max-width:1080px;margin-inline:auto}
.plan{padding:38px;display:flex;flex-direction:column;border-radius:20px}
.plan h2{font-size:24px;letter-spacing:-.6px;font-weight:600}
.price{font-size:68px;letter-spacing:-4px;font-weight:600;line-height:1}
.plan>p:not(.plan-price){font-size:14px;color:var(--ink-2);max-width:360px;min-height:50px}
.plan .btn{margin-top:auto}
.plan .more{align-self:center;font-size:12px}
@media(max-width:820px) {
  .section-nav{top:75px;gap:24px;font-size:11px}
  .plan{padding:26px}
}
@media(max-width:560px) {
  .chips{gap:6px}
  .chip{font-size:11px;min-height:37px;padding:8px 12px}
  .section-nav{top:71px;margin-inline:-18px;padding-inline:18px;gap:23px}
  .block{margin-bottom:30px;padding-bottom:30px}
  .block .h2{font-size:30px}
  .step{flex-wrap:wrap;padding:17px;gap:12px}
  .step-body{flex-basis:calc(100% - 45px)}
  .step h3{font-size:15px}
  .step p{font-size:12px}
  .step .copy{margin-left:42px;min-height:34px}
  .facts{font-size:12px}
  .facts th{font-size:11px;width:35%;padding-right:16px}
  .alt{padding:20px}
  .alt .tag{font-size:11px}
  .sources{font-size:13px}
  .plans{grid-template-columns:1fr;gap:20px}
  .plan{padding:28px}
}
.consent{grid-column:1/-1;margin-top:10px;font-size:12px}
.subscribe-form-pro .subscribe-line{grid-column:1/-1}
.studio{font-size:15px;line-height:1.5}
.st-src {
  font:500 11px/1 var(--mono);
  text-transform:uppercase;
  letter-spacing:.08em;
  padding:4px 6px;
  border-radius:5px;
  background:var(--bg-3);
  color:var(--ink-2);
}
.st-src-hn{background:color-mix(in oklab, var(--swell) 22%, transparent);color:var(--ink)}
.st-src-reddit{background:color-mix(in oklab, var(--surge) 20%, transparent);color:var(--ink)}
.st-gen select,.ap-builder input,.ap-check input{accent-color:var(--foam)}
.st-gen select,.ap-builder input {
  width:100%;
  min-height:40px;
  padding:0 10px;
  border-radius:10px;
  border:1px solid var(--line-2);
  background:var(--bg);
  color:var(--ink);
  font:15px var(--sans);
}
.st-gen select:focus,.ap-builder input:focus{outline:2px solid var(--foam);outline-offset:1px}
.ap-head .display{max-width:none}
@media(max-width:560px) {
  .ap-head .display{font-size:43px}
}
.ops-form{display:grid;gap:1rem;max-width:760px;margin:2rem 0}
.ops-form label{display:grid;gap:.4rem}
.ops-form textarea{min-height:150px}
/* R2: evidence first; compact service identities and a date-driven tide. */
.service-icon {
  display:inline-grid;
  place-items:center;
  flex:none;
  width:46px;
  height:46px;
  border:1px solid var(--line);
  border-radius:13px;
  background:#fff;
  overflow:hidden;
  vertical-align:middle;
}
.service-icon img{width:70%;height:70%;object-fit:contain}
.service-icon>span{color:#4a443b;font-size:22px;font-weight:700}
.btn{border-radius:9px;gap:10px;box-shadow:none}
.step-index{font:12px var(--mono);color:var(--ink-2);padding-top:3px}
.calendar-head .display,.ap-head .display{font-size:clamp(36px,4vw,54px);line-height:1.12;max-width:900px;margin-bottom:18px}
.calendar-head .lead,.ap-head .lead{font-size:15px;max-width:620px}
@media(max-width:480px) {
  .calendar-head .display,.ap-head .display{font-size:36px}
  .calendar-head .lead,.ap-head .lead{font-size:13px}
}
.impact-panel {
  padding:26px;
  margin-bottom:30px;
  border:1px solid var(--line);
  border-top:3px solid var(--accent);
  border-radius:12px;
  background:var(--bg-2);
}
.impact-panel h2{font-size:26px;line-height:1.3;letter-spacing:-.7px}
.impact-panel dl{margin:20px 0}
.impact-panel dl>div{display:grid;grid-template-columns:1fr 1.5fr;gap:20px;padding:14px 0;border-top:1px solid var(--line);font-size:13px}
.impact-panel dt{color:var(--ink-2)}
.impact-panel dd{margin:0}
.impact-panel dd a{color:var(--swell)}
.impact-panel>p:last-child{font-size:12px;color:var(--ink-2)}
.impact-editor{border:1px solid var(--line-2);border-radius:12px;padding:24px;display:grid;gap:16px}
.impact-editor>p{font-size:13px;color:var(--ink-2)}
.impact-editor textarea{min-height:72px}
.impact-editor legend{font-weight:700}
@media(max-width:560px) {
  .impact-panel{padding:20px}
  .impact-panel dl>div{grid-template-columns:1fr;gap:5px}
  .impact-editor{padding:16px}
}
/* R3: compact right-pointing navigation, independent of heading/button type size. */
.arrow-right{display:inline-block;width:14px;height:14px;min-width:14px;flex:0 0 14px;vertical-align:-2px;margin-left:5px}
.btn .arrow-right{margin-left:0}
.tile-arrow .arrow-right,
.ap-open .arrow-right,
.card-bottom .arrow-right,
.tide-events .arrow-right,
.related-grid>a>span>.arrow-right {
  margin-left:0;
}
/* Event type: quiet mono text. Shutdowns read in ember, other changes in amber; no background, no dot. */
.event-status{display:inline-flex;align-items:center;font:500 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.event-status{color:var(--ink-3)}
.event-status i{display:none}
.status-critical{color:var(--ember)}
.status-warm{color:var(--amber)}
/* 404 and empty states: a sticker next to a short, kind message. */
.lost{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);align-items:center;gap:56px;padding-block:72px 40px}
.lost-art{width:100%;max-width:300px;justify-self:center}
.lost-copy{display:flex;flex-direction:column;gap:18px}
.lost-copy .eyebrow{margin:0}
.lost-title{font:800 clamp(44px,6vw,80px)/.95 var(--display);letter-spacing:-.04em}
.lost-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}
.empty-state{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);align-items:center;gap:40px;padding:40px 0}
.empty-art{width:100%;max-width:300px}
.empty-state h2{font:800 clamp(32px,4vw,48px)/1 var(--display);letter-spacing:-.04em;margin-bottom:12px}
.empty-state p{color:var(--ink-2);margin-bottom:20px;max-width:46ch}
@media(max-width:700px) {
  .lost,.empty-state{grid-template-columns:1fr;gap:24px;padding-top:32px}
  .lost-art{max-width:200px;justify-self:start}
  .empty-art{max-width:220px}
}
/* Legal pages: readable measure, display heading. */
.legal{max-width:780px}
.legal>h1{font:800 clamp(44px,6vw,72px)/.95 var(--display);letter-spacing:-.04em;margin:24px 0 12px}
