/* Codex 28: one flat system. Sections are separated by space and one full-width rule. A card frames only a tool you use or a summary you compare; nothing bordered or filled sits inside it, apart from the form controls it holds. */
:root{--kind-win:#a6c991;--kind-problem:#f4a340;--kind-idea:#a4b8e4;--kind-mixed:#8a7f77;--gap:48px;--measure:72ch}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body.campaign{padding:0 32px 24px;background:var(--ground);font-size:15px;line-height:1.6}
.campaign-app{max-width:1080px;margin:0 auto}

/* Header */
.campaign-nav{min-height:64px;display:flex;align-items:center;gap:12px 28px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.campaign-nav .mark{font:600 17px var(--mono);letter-spacing:.25em;text-decoration:none}
.campaign-nav .nav-label{font:500 13px var(--body);color:var(--muted);text-decoration:none;padding-left:20px;border-left:1px solid var(--line-2)}
.nav-links{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px;font-size:13px}
.nav-links a{color:var(--muted);text-decoration:none;min-height:40px;display:inline-flex;align-items:center}
.nav-links a:hover,.campaign-nav .nav-label:hover{color:var(--ink)}
.nav-links .nav-lang{font:600 12px var(--mono);letter-spacing:.08em;padding-left:18px;border-left:1px solid var(--line-2)}
.preview-label{color:var(--amber);font:11px var(--mono);margin:12px 0}

/* Type scale: h1, h2, h3, eyebrow, body, meta */
.campaign h1{font:700 clamp(34px,4.2vw,48px)/1.05 var(--display);letter-spacing:-.04em;margin:0 0 14px;overflow-wrap:anywhere}
.campaign h2{font:650 26px/1.2 var(--display);letter-spacing:-.025em;margin:0 0 8px}
.campaign h3{font:600 18px/1.3 var(--display);letter-spacing:-.015em;margin:0 0 6px}
.eyebrow{font:500 12px/1.5 var(--mono);letter-spacing:.04em;color:var(--muted);margin:0 0 10px;display:flex;align-items:center;gap:8px}
.lede{color:var(--muted);font-size:15px;line-height:1.6;max-width:var(--measure);margin:0}
.meta-line,.cite,.status-line{font-size:13px;line-height:1.5;color:var(--muted);margin:6px 0 0}
.status-line:empty{display:none}
.empty-line{color:var(--muted);margin:0;max-width:var(--measure)}
.campaign-error{color:var(--amber);margin:0}
.n{font:600 1em var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);letter-spacing:-.02em}
.counts{margin:10px 0 0;color:var(--muted)}
.counts .n{margin-right:2px}
.live-dot{width:7px;height:7px;background:var(--amber);border-radius:50%;flex:0 0 7px;animation:breathe 3s ease-in-out infinite}

/* Sections */
.campaign-section{padding:var(--gap) 0;border-top:1px solid var(--line);scroll-margin-top:16px}
.section-head{margin:0 0 24px}
.section-head .lede{margin-top:6px}
.page-head{padding:40px 0 var(--gap)}
.page-head .lede{margin-top:4px}
.rich-text p{margin:0 0 10px;max-width:var(--measure);color:var(--muted);white-space:pre-line}
.rich-text p:last-child{margin-bottom:0}
.prose p{max-width:var(--measure);color:var(--muted)}
.prose h3{margin-top:24px}

/* Parts: buttons, links, tabs, disclosures */
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin:18px 0 0}
.campaign-button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border:1px solid var(--line-2);border-radius:6px;background:transparent;color:var(--ink);text-decoration:none;font:600 14px/1.2 var(--body);cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.campaign-button:hover{border-color:var(--ink)}
.campaign-button.primary{background:var(--amber);border-color:var(--amber);color:var(--ground)}
.campaign-button.primary:hover{background:#ffb85b;border-color:#ffb85b}
.campaign-button:disabled{opacity:.55;cursor:not-allowed}
.campaign-button:focus-visible,.kind-tab:focus-visible,.answer-quiet:focus-visible,.text-link:focus-visible,.source-link:focus-visible,.cite a:focus-visible,summary:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.source-link,.text-link{display:inline-flex;align-items:center;min-height:32px;color:var(--ink);text-decoration:underline;text-decoration-color:var(--muted);text-decoration-thickness:1px;text-underline-offset:3px;font:500 14px var(--body);background:none;border:0;padding:0;cursor:pointer}
.source-link:hover,.text-link:hover{text-decoration-color:currentColor}
.rich-text .source-link{display:inline;min-height:0}
.source-links{margin:10px 0 0;display:flex;flex-wrap:wrap;gap:4px 18px}
.kind-tabs{display:flex;flex-wrap:wrap;gap:4px 22px;margin:0 0 16px;border-bottom:1px solid var(--line)}
.kind-tab{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0;margin-bottom:-1px;background:none;border:0;border-bottom:2px solid transparent;color:var(--muted);font:500 14px var(--body);text-decoration:none;cursor:pointer}
.kind-tab:hover{color:var(--ink)}
.kind-tab[aria-pressed=true],.kind-tab[aria-current]{color:var(--ink);border-bottom-color:var(--ink)}
.kind-tab.kind-win:before,.kind-tab.kind-problem:before,.kind-tab.kind-idea:before{content:'';width:8px;height:8px;border-radius:50%}
.kind-tab.kind-win:before{background:var(--kind-win)}.kind-tab.kind-problem:before{background:var(--kind-problem)}.kind-tab.kind-idea:before{background:var(--kind-idea)}
.campaign-card,.sponsor-ad-preview{padding:20px;border:1px solid var(--line-2);border-radius:8px}
.disclosure{margin:14px 0 0}
.disclosure>summary{cursor:pointer;color:var(--ink);font:500 14px var(--body);min-height:32px;display:flex;align-items:center;list-style:none}
.disclosure>summary:hover{text-decoration:underline;text-underline-offset:3px}
.disclosure>summary::-webkit-details-marker{display:none}
.disclosure>summary:before{content:'+';font:600 14px var(--mono);width:16px}
.disclosure[open]>summary:before{content:'−'}
.disclosure[open]>summary{margin-bottom:8px}

/* Lists: every row the same width, one rule between rows */
.rows{list-style:none;margin:0;padding:0}
.row{padding:20px 0;border-top:1px solid var(--line)}
.row:first-child{border-top:0;padding-top:0}
.quote{margin:4px 0 0;font:400 16px/1.6 var(--body);color:var(--ink);overflow-wrap:anywhere;white-space:pre-line;max-width:var(--measure)}
.quote:before{content:'“'}.quote:after{content:'”'}
.cite a{color:var(--muted);text-decoration:underline;text-decoration-color:var(--faint);text-decoration-thickness:1px;text-underline-offset:3px}.cite a:hover{color:var(--ink);text-decoration-color:currentColor}
.quote-mine{color:var(--amber)}
.kind-dot{display:inline-flex;align-items:center;gap:7px;font:500 12px var(--mono);letter-spacing:.04em;color:var(--muted)}
.kind-dot:before{content:'';width:8px;height:8px;border-radius:50%;background:var(--kind-mixed)}
.kind-dot.kind-win:before,.kind-dot.tone-win:before{background:var(--kind-win)}
.kind-dot.kind-problem:before,.kind-dot.tone-friction:before{background:var(--kind-problem)}
.kind-dot.kind-idea:before,.kind-dot.tone-idea:before{background:var(--kind-idea)}

/* Answer control: update vote, release check and "Same here" */
.answer-question{font:600 16px/1.35 var(--display);color:var(--ink);margin:0}
.answer-hint{font-size:13px;color:var(--muted);margin:2px 0 12px}
.answer-options{display:flex;flex-wrap:wrap;gap:8px}
.answer-option[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--ground)}
.answer-option[aria-pressed=true]:after{content:'✓'}
.answer-secondary{margin:8px 0 0;font-size:13px;color:var(--muted)}
.answer-quiet{background:none;border:0;padding:6px 0;min-height:36px;color:var(--ink);font:500 13px var(--body);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:4px;cursor:pointer}
.answer-quiet:hover{text-decoration-color:var(--ink)}
.answer-quiet[aria-pressed=true]{color:var(--amber);text-decoration-color:var(--amber)}
.answer-quiet[aria-pressed=true]:after{content:' ✓'}
.vote-button:disabled{cursor:wait;opacity:.7}.vote-button.casting{animation:casting .6s ease-in-out infinite}
.vote-results{margin:14px 0 0}
.result-bar{display:flex;height:4px;max-width:320px;background:var(--line);border-radius:2px;overflow:hidden;margin:0 0 8px}
.result-bar span{transition:width .6s cubic-bezier(.2,.8,.2,1)}
.useful-bar{background:var(--kind-win)}.notenough-bar{background:var(--amber)}
.result-summary{margin:0;font-size:13px;color:var(--muted)}
.vote-verdict{margin:10px 0 0;font-size:14px}.vote-verdict strong{color:var(--ink)}
.vote-message.is-error{color:var(--amber);display:block}
.share-verdict{margin-top:12px}
.vote-button.landed,.vote-verdict.landed{animation:land .5s cubic-bezier(.2,1.4,.4,1)}.share-verdict.arrive{animation:reveal .4s ease .1s both}

/* Hero */
.campaign-hero{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:48px;align-items:end;padding:40px 0 var(--gap)}
.campaign-hero h1{font-size:clamp(44px,5.4vw,64px);line-height:.98}
.campaign-hero h1 em{font-style:normal;color:var(--amber)}
.hero-kicker{font:500 15px var(--display);color:#d8cdc2;margin:0 0 12px}
.hero-promise{font:500 20px/1.45 var(--display);letter-spacing:-.01em;max-width:42ch;margin:0}
.hero-source{font-size:13px}
.hero-intro{max-width:52ch;color:var(--muted);margin:10px 0 0}
.campaign-byline{font:11px/1.6 var(--mono);color:var(--muted);margin:18px 0 0}
.promise-clock{padding-left:28px;border-left:1px solid var(--line)}
.clock-day{font:500 12px var(--mono);letter-spacing:.04em;color:var(--amber);margin:0 0 8px}
.clock-time{display:block;font:500 44px/1 var(--mono);letter-spacing:-.05em;font-variant-numeric:tabular-nums}
.clock-label{font:600 15px var(--display);margin:8px 0 12px}
.clock-note{font-size:12px;color:var(--muted);margin:0}

/* Today */
.update-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:8px 48px}
.update-row>.update-evidence{grid-column:1/-1}
.update-copy .eyebrow{color:var(--amber)}
.update-copy h3{font-size:22px}
.update-more>.rich-text{margin-top:4px}
.sample-note{font-size:13px;color:var(--muted);margin:20px 0 0;max-width:var(--measure)}
.release-notes{margin-top:40px;padding-top:28px;border-top:1px solid var(--line)}
.release-notes .lede{margin-bottom:16px;font-size:14px}
.changelog-entry{padding:14px 0}
.changelog-entry>summary{cursor:pointer;list-style:none;display:flex;flex-direction:column;gap:2px}
.changelog-entry>summary::-webkit-details-marker{display:none}
.changelog-entry>summary strong{font:600 16px/1.4 var(--display);color:var(--ink)}
.changelog-entry>summary strong:after{content:' +';color:var(--amber);font-family:var(--mono)}
.changelog-entry[open]>summary strong:after{content:' −'}
.changelog-notes{white-space:pre-line;max-width:var(--measure);color:var(--muted);font-size:14px;margin:10px 0 0}
.release-check{margin:14px 0 4px}
.changelog-recent .changelog-entry:first-of-type{border-top:0}
.day-record-link{margin-top:24px}
.evidence-content{padding-top:4px}
.evidence-content h4{font:600 15px var(--display);margin:14px 0 6px}
.evidence-status{color:var(--ink)}
.evidence-content .kind-tabs{margin-top:12px}

/* Record */
.score-label{font-size:13px;line-height:1.4;color:var(--muted)}
.crowd-score p{margin:0}
.crowd-figure .of{font-size:.6em;color:var(--muted);font-weight:500}
.crowd-score .crowd-detail{margin-top:4px;font-size:13px;color:var(--muted)}
.crowd-invite p{margin:0 0 10px;color:var(--muted)}
.day-split{position:absolute;left:6px;right:6px;bottom:20px;height:3px;border-radius:2px;background:var(--amber);overflow:hidden}
.day-split .split-useful{display:block;height:100%;width:var(--useful);background:var(--kind-win)}
.day-split .split-notenough{display:none}
.day-votes{position:absolute;left:6px;bottom:5px;font:600 9px/1.2 var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}
.day-record-links{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin:18px 0 0;font:13px var(--mono)}
.day-record-links .eyebrow{margin:0 6px 0 0}
.day-record-links a:not(.source-link){color:var(--ink);text-decoration:none;min-height:32px;display:inline-flex;align-items:center;font-variant-numeric:tabular-nums}
.day-record-links a:not(.source-link):hover{color:var(--amber)}
.day-record-links a[aria-current]{text-decoration:underline;text-underline-offset:4px}

/* Your experience */
.live-composer.campaign-card{padding:0;overflow:hidden}
.voice-writing{display:flex;flex-direction:column;gap:8px;min-width:0;padding:20px}
.voice-writing-label{font:600 15px var(--display);color:var(--ink)}
.voice-editor{position:relative;min-height:190px;isolation:isolate;border:1px solid var(--line-2);border-radius:6px;background:var(--ground)}
.voice-editor:focus-within{border-color:var(--amber)}
.voice-editor #voice-text,.voice-editor #voice-highlights{box-sizing:border-box;margin:0;border:0;border-radius:6px;padding:14px 16px;font:400 17px/1.65 var(--body);white-space:pre-wrap;overflow-wrap:break-word;text-align:left}
.voice-editor #voice-text{position:relative;z-index:1;width:100%;height:100%;min-height:190px;resize:none;background:transparent;color:var(--ink);caret-color:var(--amber);outline:none;display:block}
.voice-editor #voice-text::placeholder{color:#71675f}
.voice-editor #voice-highlights{position:absolute;inset:0;z-index:0;overflow:hidden;color:transparent;pointer-events:none}
.voice-editor mark,.voice-example-text mark{color:inherit;background:none;border-bottom:2px solid transparent;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.voice-editor mark{color:transparent}
mark.signal-win{border-color:var(--kind-win)}mark.signal-friction{border-color:var(--kind-problem)}mark.signal-idea{border-color:var(--kind-idea)}
#voice-count{font:11px var(--mono);color:var(--faint)}
.live-read-state{font:11px var(--mono);color:var(--muted);white-space:nowrap}
.live-read-state.is-reading{animation:live-listening .8s ease-in-out infinite}
.voice-parts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.voice-part{display:flex;gap:10px;align-items:baseline;font-size:13px;color:var(--muted);transition:opacity .3s}
.voice-part:before{content:'';flex:0 0 7px;width:7px;height:7px;border-radius:50%;background:var(--kind-mixed)}
.voice-part.signal-win:before{background:var(--kind-win)}.voice-part.signal-friction:before{background:var(--kind-problem)}.voice-part.signal-idea:before{background:var(--kind-idea)}
.voice-part-kind{font:500 12px var(--mono);letter-spacing:.04em;min-width:64px}
.voice-part-text{color:var(--ink);overflow-wrap:anywhere}
.voice-part.is-pending,.voice-example-match.is-pending{opacity:0}
.voice-match-dot{display:none}
.voice-reading h3{font-size:16px}
.voice-reading>p{font-size:13px;color:var(--muted);margin:0 0 10px}
.voice-related{margin-top:16px}
.voice-related-label{font:500 12px var(--mono);letter-spacing:.04em;color:var(--muted);margin:0 0 4px}
.voice-related-item{padding:12px 0 0}
.voice-related-item blockquote{margin:0;font-size:14px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.theme-position{margin:16px 0 0;font-size:14px}
.theme-position-line{margin:0;color:var(--ink);font-weight:600}
.theme-position.is-joins .theme-position-line,.theme-position.is-joined .theme-position-line{color:var(--amber)}
.theme-position-name{margin:2px 0 0;color:var(--muted)}
.voice-publish-reason{flex-basis:100%;margin:0;font-size:12px;color:var(--muted);text-align:right}
.voice-day-label{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.voice-day-label select{min-height:40px;padding:4px 8px;border:1px solid var(--line-2);border-radius:6px;background:var(--ground);color:var(--ink);font:13px var(--body)}
#voice-publish:disabled,#voice-publish:disabled:hover{opacity:1;background:transparent;border-color:var(--line-2);color:var(--muted);cursor:not-allowed}
.voice-privacy{font-size:12px;color:var(--muted)}
.voice-community{margin-top:40px}
.voice-community>h3{display:flex;align-items:baseline;gap:10px}
#voice-community-count{font:600 14px var(--mono);color:var(--muted)}
#voice-board-count{font-size:13px;color:var(--muted);margin:0 0 8px}
.voice-thread{border-top:1px solid var(--line)}
.voice-thread:first-child{border-top:0}
.voice-thread-toggle{display:block;width:100%;padding:16px 0;text-align:left;background:none;border:0;color:var(--ink);cursor:pointer}
.voice-thread-title{display:block;font:500 16px/1.5 var(--body);margin:6px 0;max-width:var(--measure);overflow-wrap:anywhere}
.voice-thread-toggle:hover .voice-thread-title{color:var(--amber)}
.voice-trail{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font:11px var(--mono);color:var(--muted)}
.trail-line{width:18px;height:1px;background:var(--line-2)}
.voice-thread-meta{font-size:12px;color:var(--muted)}
.voice-thread-details{margin:0 0 16px;padding-left:16px;border-left:1px solid var(--line-2)}
.voice-item{padding:8px 0 14px}
.voice-item-meta{font:11px var(--mono);color:var(--muted);margin:0 0 6px}
.voice-item blockquote{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;max-width:var(--measure)}
.voice-item-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px}
.voice-more{margin:12px 12px 0 0}
#voice-refresh{margin-top:12px}
.voice-link-label{font-size:12px;color:var(--faint)}
.voice-action-error{color:var(--amber);font-size:13px}
.voice-demo-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin:0 0 16px}
.voice-demo-bar button{min-height:36px;padding:6px 12px;border:1px solid var(--line-2);border-radius:6px;background:none;color:var(--ink);cursor:pointer}
.voice-permalink{max-width:720px;margin:48px auto}
.voice-permalink blockquote{margin:28px 0;font:22px/1.55 var(--display);white-space:pre-wrap;overflow-wrap:anywhere}
.voice-permalink>p:not(.eyebrow){font-size:13px;color:var(--muted)}
.campaign .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Sponsor */
.sponsor-ad-content{display:flex;gap:16px;align-items:flex-start}
.sponsor-ad-content h2,.sponsor-ad-content h3{margin:0 0 4px}
.sponsor-ad-content p{margin:0;color:var(--muted);max-width:60ch;overflow-wrap:anywhere}
.sponsor-ad-content .actions{margin-top:12px}
.sponsor-logo-preview{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;border-radius:10px;background:var(--amber);color:var(--ground);font:800 22px var(--display);object-fit:cover}
.sponsor-price{font-size:15px;color:var(--muted);margin:0 0 12px}.sponsor-price .n{font-size:32px;margin-right:4px}
.sponsor-deliverables{margin:0;padding-left:20px;color:var(--muted);max-width:var(--measure)}
.sponsor-deliverables li{margin:4px 0}
.sponsor-preview-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 48px;align-items:start}
.form-fields{display:flex;flex-direction:column;gap:6px}
.form-fields label{font-size:13px;color:var(--muted);margin-top:8px}
.form-fields label:first-child{margin-top:0}
.form-fields input,.form-fields textarea,.inline-form input{box-sizing:border-box;width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line-2);border-radius:6px;background:var(--ground);color:var(--ink);font:15px var(--body)}
.form-fields input:focus,.form-fields textarea:focus,.inline-form input:focus{outline:none;border-color:var(--amber)}
.inline-form{display:flex;flex-wrap:wrap;gap:10px;max-width:560px}
.inline-form input{flex:1 1 240px;width:auto}
.sponsor-steps h3{font-size:16px}
.sponsor-steps p{margin:0;color:var(--muted)}

/* Method, about, footer */
.campaign-about .disclosure{margin:0}
.campaign-method p{max-width:var(--measure);color:var(--muted)}
.method-caveats{margin-top:16px}
.method-caveats strong{color:var(--ink);font-weight:600}
.about-line{margin:20px 0 0;color:var(--muted);max-width:var(--measure)}
.about-line strong{color:var(--ink)}
.about-line .source-link{display:inline;min-height:0}
.campaign-footer{border-top:1px solid var(--line);padding:28px 0 8px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 28px}
.footer-links{display:flex;flex-wrap:wrap;gap:4px 20px;font-size:13px;flex:1 1 100%}
.footer-links a{color:var(--muted);text-decoration:none;min-height:36px;display:inline-flex;align-items:center}
.footer-links a:hover{color:var(--ink)}
.campaign-footer p{font-size:12px;color:var(--muted);margin:0;flex:1;max-width:var(--measure)}
.campaign-footer .mark{font:600 14px var(--mono);letter-spacing:.25em;color:var(--muted);text-decoration:none}

/* Share dialog: above the cookie banner */
.share-backdrop{position:fixed;inset:0;z-index:10000;background:#000c;display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto}
.share-dialog{position:relative;width:100%;max-width:520px;max-height:calc(100dvh - 32px);overflow:auto;padding:28px;background:var(--surface);border:1px solid var(--line-2);border-radius:10px;animation:reveal .25s ease}
.close-share{position:absolute;right:10px;top:8px;width:44px;height:44px;background:none;border:0;color:var(--muted);font:26px var(--body);cursor:pointer}
.share-preview{margin:18px 0;padding:16px 0;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.share-preview h3{font-size:24px;margin:4px 0 8px}
.share-preview p:not(.eyebrow){margin:0;color:var(--muted)}
#share-detail{white-space:pre-wrap;overflow-wrap:anywhere;max-height:160px;overflow:auto}
.share-channels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
#share-url,#share-copy-text{box-sizing:border-box;width:100%;margin-top:12px;padding:10px 12px;border:1px solid var(--line-2);border-radius:6px;background:var(--ground);color:var(--muted);font:12px var(--mono)}
#share-copy-text{min-height:120px;color:var(--ink);font:13px/1.5 var(--body)}
.share-controls{margin-top:12px}

/* Day record */
.day-status p{margin:0 0 4px;max-width:var(--measure)}
.day-countdown{color:var(--amber)}
.change-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0 32px}
.change-list li{display:flex;align-items:baseline;gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.change-label{flex:1;color:var(--muted);font-size:14px}
.change-delta{font:12px var(--mono);color:var(--muted);min-width:64px;text-align:right}
.day-update h3{font-size:22px}

/* Open data and corrections */
.data-files .actions{margin:0}
.data-table{overflow-x:auto}
.data-table table{border-collapse:collapse;width:100%;font-size:14px}
.data-table th,.data-table td{text-align:left;vertical-align:top;padding:8px 12px 8px 0;border-bottom:1px solid var(--line)}
.data-table th{font:500 12px var(--mono);letter-spacing:.04em;color:var(--muted)}
.data-table code,.campaign h3 code{font:13px var(--mono);color:var(--amber);white-space:nowrap}
.correction-entry h3{margin:4px 0 8px}
.correction-text{margin:4px 0 0;color:var(--muted)}
.correction-change{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 16px;margin:0;max-width:var(--measure)}
.correction-change dt{font:500 12px/1.9 var(--mono);letter-spacing:.04em;color:var(--muted)}
.correction-change dd{margin:0;white-space:pre-line;overflow-wrap:anywhere}

/* Admin pages keep simple form panels */
.campaign-admin main{max-width:760px;margin:40px auto}
.campaign-admin form{padding:24px;background:var(--surface);margin:24px 0;border:1px solid var(--line-2);border-radius:8px}
.campaign-admin label{display:block;font-size:13px;margin-bottom:16px}
.campaign-admin input:not([type=hidden]),.campaign-admin textarea,.campaign-admin select{display:block;width:100%;padding:12px;margin-top:6px;color:var(--ink);background:var(--ground);border:1px solid var(--line-2);font:14px var(--body);border-radius:4px}
.campaign-admin p{color:var(--muted)}
.campaign-counts main{max-width:none;padding:0 24px}
.campaign-counts .count-table{overflow-x:auto;border:1px solid var(--line-2);border-radius:8px;background:var(--surface)}
.campaign-counts table{border-collapse:collapse;font-size:13px;white-space:nowrap}
.campaign-counts th,.campaign-counts td{padding:8px 12px;border-bottom:1px solid var(--line-2);text-align:right}
.campaign-counts thead th{font-weight:600;vertical-align:bottom;white-space:normal;min-width:72px}
.campaign-counts tbody th{text-align:left}
.campaign-counts td small{color:var(--muted)}

@keyframes breathe{50%{opacity:.35}}
@keyframes reveal{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes casting{50%{opacity:.6}}
@keyframes land{0%{transform:scale(1.08)}100%{transform:scale(1)}}
@keyframes bump{0%{color:var(--amber)}100%{color:inherit}}
@keyframes cell-fill{0%{box-shadow:0 0 0 0 #a6c991a0}100%{box-shadow:0 0 0 10px #a6c99100}}
@keyframes live-listening{50%{opacity:.4}}
@keyframes caret{50%{opacity:0}}

@media(max-width:900px){
  .campaign-hero,.update-row,.sponsor-preview-grid{grid-template-columns:minmax(0,1fr)}
  .campaign-hero{gap:28px;align-items:start}
  .promise-clock{padding:16px 0 0;border-left:0;border-top:1px solid var(--line)}
  .update-row{gap:16px}
}
@media(max-width:600px){
  :root{--gap:36px}
  body.campaign{padding:0 18px 20px;font-size:15px}
  .campaign-nav{padding:10px 0;gap:4px 16px}
  .campaign-nav .nav-label{padding-left:14px}
  .nav-links{margin-left:0;flex-basis:100%;gap:0 16px}
  .nav-links .nav-lang{margin-left:auto}
  .campaign h2{font-size:22px}
  .campaign-hero{padding-top:28px}
  .campaign-hero h1{font-size:46px}
  .hero-promise{font-size:18px}
  .clock-time{font-size:34px}
  .page-head{padding:28px 0 var(--gap)}
  .update-copy h3,.day-update h3{font-size:19px}
  .answer-options .campaign-button{flex:1 1 0}
  .day-split{left:4px;right:4px;bottom:16px}.day-votes{left:4px;bottom:3px;font-size:8.5px}
  .voice-editor,.voice-editor #voice-text{min-height:130px}
  .voice-editor #voice-text,.voice-editor #voice-highlights{font-size:16px;padding:12px}
  .voice-publish-reason{text-align:left}
  #voice-publish{width:100%}
  .share-dialog{padding:22px 18px}
  .share-controls .campaign-button{flex:1 1 auto}
  .correction-change{grid-template-columns:1fr;gap:0}
  .correction-change dd{margin-bottom:8px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

/* Participation first: compose, sponsor, community, then the supporting record. */
.campaign-hero{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:24px;padding:28px 0 20px}
.campaign-hero h1{font-size:clamp(32px,3.8vw,44px);line-height:1.08;margin-bottom:8px}
.hero-intro{max-width:65ch;margin:0}
.hero-context{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 20px;margin-top:8px}
.hero-background{margin:0;max-width:65ch}
.hero-background p{color:var(--muted);margin:8px 0}
.hero-context .share-campaign{font-size:13px;color:var(--muted)}
.promise-clock{padding:4px 0 0 24px;min-width:180px}
.clock-time{font-size:28px}
.clock-label{font:13px var(--body);color:var(--muted);margin:6px 0 0}
.campaign-voices{border-top:0;padding:12px 0 24px}
.campaign-voices .section-head{margin-bottom:16px}
.campaign-voices .section-head>.eyebrow{display:none}
.campaign-voices .lede{max-width:80ch}
.campaign-sponsor{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 24px;padding:22px 0}
.campaign-sponsor .section-head{margin:0;grid-column:1;grid-row:1}
.campaign-sponsor h2{font-size:20px}
.campaign-sponsor .eyebrow{font-size:11px;margin-bottom:4px}
.campaign-sponsor .lede{font-size:14px}
.campaign-sponsor>.campaign-button{grid-column:2;grid-row:1/3}
.campaign-sponsor .sponsor-dates{grid-column:1;margin:0}
.campaign-sponsor>.sponsor-ad-content{grid-column:1/-1}
.campaign-community .voice-community{margin-top:0}
.campaign-vote .section-head{margin-bottom:8px}
.campaign-detail{margin:0}
.campaign-detail>summary{padding:8px 0;min-height:44px;font-size:16px}
.campaign-detail[open]>summary{margin-bottom:20px}
.campaign-sources{padding:24px 0}
.campaign-sources .release-notes{margin:0;padding:0;border:0}
.campaign-sources .release-notes>summary{font-size:16px}
@media(max-width:600px){
  .campaign-hero{display:block;padding:24px 0 12px}
  .campaign-hero h1{font-size:34px}
  .promise-clock{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin-top:14px;padding:10px 0 0;border-left:0;border-top:1px solid var(--line)}
  .clock-day,.clock-label{margin:0;font-size:11px}
  .clock-time{font-size:18px}
  .campaign-voices{padding-top:12px}
  .campaign-sponsor{grid-template-columns:1fr;gap:8px}
  .campaign-sponsor>.campaign-button{grid-column:1;grid-row:3;justify-self:start}
  .campaign-sponsor .sponsor-dates{grid-row:2}
}

@media(max-width:600px){
  .campaign-nav .nav-links{gap:0 14px;font-size:12px}
  .campaign-nav .nav-links .nav-lang{padding-left:10px}
}

/* One contribution: the day's context beside a single writing surface. */
.experience-flow{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,1.5fr);gap:40px;align-items:start;padding:20px 0 28px;border-top:1px solid var(--line)}
.experience-flow>.campaign-section{padding:0;border:0;min-width:0}
.campaign-brief .section-head{margin:0 0 8px;position:relative}
.campaign-brief h2{font-size:22px;margin:6px 0}
.campaign-brief .day-record-link{font-size:12px}
.experience-flow .voice-publish-reason{flex-basis:100%;text-align:left}
.experience-flow .voice-day-label{font-size:12px}
.experience-flow .voice-editor,.experience-flow #voice-text{min-height:154px}
.voice-writing-help{font-size:12px;margin:6px 0 0}
.voice-writing-help>summary{min-height:36px;color:var(--muted)}
.voice-writing-help p{max-width:60ch;margin:0 0 8px;color:var(--muted)}
.experience-flow .voice-writing-label{font-size:13px}
.experience-flow #voice-response-title{font-size:18px}
.experience-flow #voice-response-detail{font-size:13px}
.experience-flow .voice-parts{gap:5px}
.experience-flow .voice-part{font-size:13px}
.experience-flow .section-head .lede{font-size:15px}
@media(max-width:800px){
 .experience-flow{grid-template-columns:1fr;gap:24px;padding-top:16px}
 .campaign-brief .section-head{padding-right:128px;min-height:54px}
 .campaign-brief .day-record-link{margin-top:8px}
 .experience-flow #voice-publish{width:auto;flex:1}
 .campaign-hero h1{font-size:32px}
}

@media(max-width:800px){.campaign-brief .day-record-link{display:none}.experience-flow{gap:20px}.campaign-brief .section-head{margin-bottom:0}.campaign-hero{padding-top:20px}}

/* The daily loop: the visitor's four steps are the spine; Tibo's log is the status column. */
.campaign-hero{grid-template-columns:minmax(0,1.25fr) minmax(300px,.8fr);gap:56px;align-items:start;padding:40px 0 28px}
.campaign-hero h1{font-size:clamp(38px,4.8vw,58px);line-height:1.02;letter-spacing:-.04em;margin-bottom:14px}
.hero-intro{max-width:56ch;font-size:17px;line-height:1.55;color:#d8cdc2;margin:0}
.hero-context{display:flex;flex-wrap:wrap;align-items:center;gap:8px 22px;margin-top:20px}
.hero-cta{min-height:48px;padding:0 22px;font-size:15px}
.hero-background{flex-basis:100%;margin:8px 0 0;max-width:65ch}
.hero-background>summary{color:var(--muted)}
.hero-context .share-campaign{font-size:13px;color:var(--muted)}
@media(prefers-reduced-motion:no-preference){
  .hero-copy>*{animation:reveal .5s cubic-bezier(.2,.8,.2,1) both}
  .hero-copy>:nth-child(2){animation-delay:.05s}.hero-copy>:nth-child(3){animation-delay:.12s}.hero-copy>:nth-child(4){animation-delay:.18s}
}

/* Loop steps: a rail that fills as the visitor reaches each step */
@keyframes loop-pulse{0%{box-shadow:0 0 0 0 #f4a34066}100%{box-shadow:0 0 0 12px #f4a34000}}

/* Today strip: the day, the clock, what Tibo shipped. Context, not headline. */
.today-clock{margin:0;display:flex;align-items:baseline;gap:10px;font-size:13px;color:var(--muted)}
.today-clock .clock-day{font:500 12px var(--mono);letter-spacing:.04em;color:var(--amber)}
.today-clock .clock-time{font-size:17px;letter-spacing:-.02em}

/* Composer: step one. Writing left, the live reading right; the landing shows who had it and where it stands. */
.campaign-voices{padding:28px 0 24px;border-top:1px solid var(--line)}
.campaign-voices .section-head>.eyebrow{display:flex;color:var(--amber)}
.campaign-voices .section-head{margin-bottom:18px}
.voice-editor mark{--sig:transparent;border-bottom:0;background:linear-gradient(var(--sig),var(--sig)) 0 100%/100% 2px no-repeat}
mark.signal-win{--sig:var(--kind-win)}mark.signal-friction{--sig:var(--kind-problem)}mark.signal-idea{--sig:var(--kind-idea)}
@media(prefers-reduced-motion:no-preference){.voice-editor mark{animation:draw .45s cubic-bezier(.2,.8,.2,1) both}}
@keyframes draw{from{background-size:0 2px}to{background-size:100% 2px}}
.voice-landing{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.voice-landing[hidden]{display:none}
.voice-landing-eyebrow{font:500 11px var(--mono);letter-spacing:.05em;color:var(--muted);margin:0 0 8px;text-transform:uppercase}
.voice-landing-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.voice-landing-name{font:600 17px/1.3 var(--display);letter-spacing:-.015em;color:var(--ink);text-decoration:none}
.voice-landing-name:hover{color:var(--amber)}
.voice-landing-count{font-size:13px;color:var(--muted)}
.voice-landing-count .n{font-size:15px;margin-right:2px}
.voice-landing .theme-advice{margin-top:10px}
.voice-landing .theme-status{margin-left:auto}
@media(prefers-reduced-motion:no-preference){.voice-landing:not([hidden]){animation:theme-arrive .4s cubic-bezier(.2,.8,.2,1) both}.voice-landing.is-new .theme-status{animation:chip-in .4s ease .15s both}}
@keyframes chip-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

/* Status chip: shipped, reset, or not addressed yet. Same chip everywhere. */
.theme-status{display:inline-flex;align-items:center;gap:7px;font:500 11px/1 var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding:6px 9px 5px;border:1px solid var(--line-2);border-radius:999px;white-space:nowrap}
.theme-status:before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex:0 0 6px}
.theme-status.is-addressed{color:var(--kind-win);border-color:#3c5a44}
.theme-status.is-reset{color:#b9b6f0;border-color:#4b4e74}
.theme-status.is-open{color:var(--muted);border-style:dashed}
.theme-advice{margin:10px 0 0;font-size:14px;line-height:1.5;color:var(--ink);max-width:var(--measure);padding-left:12px;border-left:2px solid var(--amber)}
.theme-advice-label{font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--amber);margin-right:4px}
.theme-address .row-title{font:600 16px/1.4 var(--display);color:var(--ink);text-decoration:none;display:block;margin:8px 0 0}
.theme-address .row-title:hover{color:var(--amber)}
.theme-hero-status{margin-top:12px}

/* Record demoted: calendar and scoreboard support the themes above */
.campaign-record .section-head .lede{max-width:var(--measure)}

@media(max-width:900px){
  .campaign-hero{grid-template-columns:minmax(0,1fr);gap:24px;padding:28px 0 20px}
  .campaign-hero h1{font-size:clamp(34px,8vw,44px)}
  .hero-intro{font-size:16px}
}
@media(max-width:600px){
  .campaign-hero{padding-top:22px}
  .hero-cta{width:100%}
  .hero-context{gap:8px 16px}
  .voice-landing .theme-status{margin-left:0}
}
@media(max-width:800px){
}

.stage-ticker{margin:0 0 26px;color:var(--muted);gap:10px}
.stage-ticker .clock-day{font:500 12px var(--mono);letter-spacing:.05em;color:var(--amber)}
.stage-ticker .clock-time{font-size:13px;color:var(--ink);letter-spacing:0}
.stage-ticker .clock-label{font-size:12px}
.stage-sep{color:var(--faint)}
.stage-title{font:700 clamp(42px,6.6vw,88px)/.96 var(--display);letter-spacing:-.045em;margin:0 0 16px;max-width:13ch}
.stage-title em{font-style:normal;color:var(--amber)}
.stage-lede{margin:0 0 40px;max-width:54ch;color:var(--muted);font-size:16px;line-height:1.55}
@keyframes glow-breathe{50%{transform:scale(1.05) translateY(-6px)}}
.voice-baseline{height:1px;background:var(--line-2);position:relative;overflow:visible;transition:background .4s}
.voice-baseline-fill{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--amber);transition:width .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s;box-shadow:0 0 14px #f4a34066}
.voice-baseline-fill.is-ready{box-shadow:0 0 22px #f4a340aa}
.signal-slots{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}
.signal-slot{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px;align-items:baseline;font-size:15px;line-height:1.5;color:var(--ink);position:relative;padding-left:18px}
.signal-slot:before{content:'';position:absolute;left:0;top:.5em;width:7px;height:7px;border-radius:50%;background:var(--line-2);transition:background .4s,box-shadow .4s}
.signal-slot.signal-win:before{background:var(--kind-win)}.signal-slot.signal-friction:before{background:var(--kind-problem)}.signal-slot.signal-idea:before{background:var(--kind-idea)}
.is-ghost .signal-slot:before{background:var(--line-2)}
.signal-kind{font:500 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.signal-text{overflow-wrap:anywhere}
.signal-ghost{display:block;height:1px;margin-top:.55em;width:72%;background:repeating-linear-gradient(90deg,var(--line-2) 0 6px,transparent 6px 10px)}
.is-ghost .signal-slot:nth-child(2) .signal-ghost{width:56%}.is-ghost .signal-slot:nth-child(3) .signal-ghost{width:42%}
.signal-slot.is-lit{animation:slot-lit .5s cubic-bezier(.2,.8,.2,1) both}
.signal-slot.is-lit:nth-child(2){animation-delay:.08s}.signal-slot.is-lit:nth-child(3){animation-delay:.16s}
.signal-slot.is-lit:before{box-shadow:0 0 0 4px #ffffff0c}
@keyframes slot-lit{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}
@media(max-width:600px){.campaign-nav{position:relative;padding-right:52px}.campaign-nav .nav-links .nav-lang{position:absolute;right:0;top:14px;margin:0;padding:0;border-left:0}}
.stage-lede{margin-bottom:34px;color:var(--faint);font-size:15px}

/* One column, one object: the question, the box with its own bar, then the reply it grows. */
.stage{position:relative;display:block;padding:clamp(32px,8vh,96px) 0 40px}
.stage-ticker{margin:0 0 26px;color:var(--muted);gap:10px}
.stage-ticker .clock-day{font:500 12px var(--mono);letter-spacing:.05em;color:var(--amber)}
.stage-lede{margin:0 0 36px;max-width:54ch;color:var(--muted);font-size:16px;line-height:1.55}
.stage .voice-demo-bar{margin-bottom:18px}
.live-composer.campaign-card{max-width:760px;padding:0;border:0;border-radius:0;overflow:visible;position:relative;isolation:isolate}
.stage .live-composer:before{content:'';position:absolute;inset:-140px -200px auto -160px;height:420px;background:radial-gradient(50% 55% at 40% 45%,#f4a34014,transparent 70%);pointer-events:none;opacity:.6;transition:opacity 1s;z-index:-1}
/* Keep the decorative glow inside the composer when the page has narrow gutters. */
@media(max-width:1000px){.stage .live-composer:before{left:0;right:0}}
.stage .live-composer:focus-within:before{opacity:1;animation:glow-breathe 6s ease-in-out infinite}
.composer-card{position:relative;border:1px solid var(--line-2);border-radius:14px;background:#17130f;transition:border-color .3s,box-shadow .4s}
.composer-card:focus-within{border-color:#5a4a35;box-shadow:0 0 0 4px #f4a3400a,0 30px 70px -40px #f4a34055}
.composer-card .voice-writing{padding:22px 24px 14px;gap:0}
.composer-card .voice-writing-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.composer-card .voice-editor,.composer-card .voice-editor:focus-within{border:0;border-radius:0;background:transparent;min-height:0}
.composer-card .voice-editor #voice-text,.composer-card .voice-editor #voice-highlights{padding:0;border-radius:0;font:400 clamp(20px,2.3vw,26px)/1.45 var(--body);letter-spacing:-.01em}
.composer-card .voice-editor #voice-text{min-height:76px;height:auto;overflow:hidden}
.composer-card .voice-editor #voice-text::placeholder{color:#5c534c}
.composer-card .voice-baseline{margin:0 24px}
.composer-card:focus-within .voice-baseline{background:#3d342c}
.composer-bar{display:flex;align-items:center;gap:10px 14px;padding:12px 12px 12px 24px}
.composer-bar .voice-day-label select{min-height:32px;padding:0 26px 0 12px;border:0;border-radius:999px;background:#262019;color:var(--ink);font:500 12px var(--mono);letter-spacing:.03em;cursor:pointer}
.composer-bar .voice-count{font:11px var(--mono);color:var(--faint)}
.composer-bar .voice-publish-reason{flex:1;margin:0;text-align:right;font-size:12px;line-height:1.4;color:var(--faint)}
.composer-bar .voice-publish-reason[hidden]{display:block;visibility:hidden}
.composer-bar #voice-publish{margin-left:auto;min-height:44px;padding:0 20px;border-radius:10px;font-size:15px;transition:transform .35s cubic-bezier(.2,.8,.2,1),background .2s,border-color .2s,color .2s,box-shadow .3s}
.composer-bar #voice-publish:not(:disabled){box-shadow:0 10px 30px -8px #f4a34066}
.composer-foot{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;padding:12px 4px 0;font-size:12px;color:var(--faint)}
.composer-foot p{margin:0}
.composer-foot .voice-status{font-size:13px;color:var(--muted)}
.composer-foot .voice-privacy a{color:var(--muted)}
.composer-foot .voice-writing-help{margin:0}
.composer-foot .voice-writing-help>summary{min-height:0;font-size:12px;color:var(--muted)}
.composer-foot .voice-writing-help[open]{flex-basis:100%}
.composer-foot .voice-writing-help p{margin:6px 0 0;max-width:60ch;font-size:13px;color:var(--muted)}

.reply-rows{list-style:none;max-width:760px;margin:36px 0 0;padding:0}
.reply-row{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr);padding:18px 0;border-top:1px solid var(--line)}
.reply-row:before{content:'';position:absolute;left:0;top:-1px;height:1px;width:0;background:var(--amber);transition:width .6s cubic-bezier(.2,.8,.2,1)}
.reply-num{font:500 11px/1.9 var(--mono);color:var(--faint);transition:color .4s}
.reply-label{margin:0;font:600 15px/1.35 var(--display);letter-spacing:-.01em;color:#8a8079;transition:color .4s}
.reply-hint{margin:3px 0 0;max-width:62ch;font-size:13px;line-height:1.5;color:var(--faint)}
.reply-slot{min-width:0}
.reply-slot>[hidden]{display:none}
.reply-row .live-read-state{position:absolute;right:0;top:20px}
.reply-row:has(.reply-slot>[id]:not([hidden]):not(.live-read-state)):before{width:44px}
.reply-row:has(.reply-slot>[id]:not([hidden]):not(.live-read-state)) .reply-num{color:var(--amber)}
.reply-row:has(.reply-slot>[id]:not([hidden]):not(.live-read-state)) .reply-label{color:var(--ink)}
.reply-row:has(.reply-slot>[id]:not([hidden]):not(.live-read-state)) .reply-hint{display:none}
.reply-slot>[id]:not([hidden]):not(.live-read-state){margin-top:8px;animation:reply-in .45s cubic-bezier(.2,.8,.2,1) both}
@keyframes reply-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.reply-slot #voice-reading{display:flex;flex-direction:column;gap:4px}
.reply-slot #voice-reading h3{margin:0;font:600 18px/1.3 var(--display);letter-spacing:-.015em}
.reply-slot #voice-reading>p{margin:0;font-size:14px;color:var(--muted);max-width:60ch}
.reply-slot #voice-reading>p:empty{display:none}
.reply-slot .signal-slots{flex-direction:row;flex-wrap:wrap;gap:6px;margin-top:6px}
.reply-slot .signal-slot{display:inline-flex;align-items:center;gap:8px;padding:5px 10px 5px 8px;border:1px solid var(--line-2);border-radius:999px;font-size:13px;line-height:1.3}
.reply-slot .signal-slot:before{position:static;transform:none}
.reply-slot .signal-slot.is-dim{display:none}
.reply-slot .signal-slot .signal-kind{font-size:10px}
.reply-slot .signal-slot .signal-text{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;max-width:34ch}
.reply-slot .voice-landing{margin-top:8px;padding:0;border:0}
.reply-slot .voice-landing-eyebrow{display:none}
.reply-slot .voice-landing-name{font-size:20px}
.reply-slot .voice-landing-count{margin:4px 0 0;font-size:15px;color:var(--ink)}
.reply-slot .voice-landing-count .n{font-size:20px;color:var(--amber)}
.reply-slot .voice-landing-line{margin:6px 0 0;font-size:13px;color:var(--muted)}
.reply-slot .theme-position{margin-top:8px}
.reply-slot .voice-related{margin-top:14px}
.reply-status{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.reply-status-line{margin:0;font-size:14px;color:var(--muted)}
.reply-status-line a{color:var(--ink)}
.reply-advice .theme-advice-text{margin:0;max-width:60ch;font-size:16px;line-height:1.5;color:var(--ink)}
.stage .hero-context{margin-top:28px;font-size:13px;max-width:760px}
.stage .hero-background{flex-basis:auto;margin:0}

@media(max-width:600px){
  .stage{padding-top:24px}
  .stage-title{font-size:clamp(36px,11vw,46px)}
  .stage-lede{margin-bottom:24px;font-size:15px}
  .composer-card .voice-writing{padding:18px 16px 12px}
  .composer-card .voice-baseline{margin:0 16px}
  .composer-card .voice-editor #voice-text,.composer-card .voice-editor #voice-highlights{font-size:20px}
  .composer-bar{flex-wrap:wrap;padding:12px 12px 12px 16px}
  .composer-bar .voice-publish-reason{order:3;flex-basis:100%;text-align:left}
  .composer-bar #voice-publish{order:4;flex:1 1 100%}
  .reply-row{grid-template-columns:34px minmax(0,1fr)}
  .reply-row .live-read-state{position:static;display:block;margin-top:4px}
}

/* What Tibo shipped: a header with the day arrows, the announcements always in view, one footer line. */
.today-strip{padding:56px 0 48px}
.today-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:0 0 18px}
.today-eyebrow{margin:0}
.today-title{margin:6px 0 0;font:650 clamp(24px,2.6vw,32px)/1.15 var(--display);letter-spacing:-.025em}
.day-stepper{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line-2);border-radius:999px;flex:none}
.day-step{width:34px;height:34px;border:0;border-radius:50%;background:none;color:var(--ink);font:400 20px/1 var(--body);cursor:pointer;transition:background .2s,color .2s}
.day-step:hover:not(:disabled){background:#262019;color:var(--amber)}
.day-step:disabled{color:var(--line-2);cursor:default}
.day-step:focus-visible,.day-stepper select:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.day-stepper select{appearance:none;-webkit-appearance:none;border:0;background:transparent;color:var(--ink);font:500 13px var(--mono);letter-spacing:.03em;padding:0 8px;min-height:34px;text-align:center;cursor:pointer}
#campaign-updates{border-top:1px solid var(--line)}
.brief-update{margin:0;border-bottom:1px solid var(--line)}
.brief-update>summary{display:grid;grid-template-columns:52px minmax(0,1fr) auto 18px;align-items:center;gap:14px;min-height:0;padding:16px 0;margin:0}
.brief-update>summary:before{display:none}
.brief-update>summary:after{content:'';width:8px;height:8px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:rotate(45deg) translate(-2px,-2px);transition:transform .25s}
.brief-update[open]>summary:after{transform:rotate(-135deg) translate(-2px,-2px)}
.brief-update>summary:hover{text-decoration:none}
.brief-update>summary:hover .brief-title,.brief-update[open]>summary .brief-title{color:var(--amber)}
.brief-update[open]>summary{margin:0}
.brief-num{font:500 12px var(--mono);color:var(--faint)}
.brief-title{font:500 16px/1.4 var(--display);letter-spacing:-.01em;color:var(--ink);transition:color .2s}
.brief-kind{font:500 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:4px 9px;border:1px solid currentColor;border-radius:999px;color:var(--kind-win);white-space:nowrap}
.brief-kind.reset{color:#b9b6f0}
.brief-update .update-copy{padding:0 0 14px 66px;max-width:76ch}
.brief-update .update-description{font-size:14px;line-height:1.65;color:var(--muted)}
.brief-update .update-description p{margin:0 0 8px}
.brief-update .source-links{margin:0;font-size:13px}
.brief-update .update-evidence{margin:0 0 16px 66px;font-size:13px}
.brief-update[open]{animation:reply-in .35s cubic-bezier(.2,.8,.2,1)}
.empty-day{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 24px;margin:16px 0 0;padding:20px 22px;border:1px dashed var(--line-2);border-radius:12px}
.empty-day p{margin:0;max-width:62ch;font-size:15px;line-height:1.55;color:var(--muted)}
.empty-day strong{color:var(--ink)}
.empty-day .actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:0}
#campaign-updates:has(.empty-day){border-top:0}
.today-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 24px;margin-top:16px}
.today-foot .brief-note{margin:0;font-size:13px;line-height:1.5;color:var(--faint)}
.today-links{margin:0;font-size:13px}
@media(max-width:600px){
  .today-strip{padding:40px 0 36px}
  .today-head{flex-wrap:wrap;align-items:flex-end}
  .brief-update>summary{grid-template-columns:36px minmax(0,1fr) 14px;gap:4px 10px;align-items:start}
  .brief-update>summary:after{grid-column:3;grid-row:1;margin-top:6px}
  .brief-kind{grid-column:2;grid-row:2;justify-self:start}
  .brief-num{padding-top:3px}
  .brief-update .update-copy,.brief-update .update-evidence{padding-left:0;margin-left:0}
}

/* The ticker: one pill, one baseline. */
.stage-ticker{display:inline-flex;align-items:center;gap:10px;margin:0 0 26px;padding:7px 14px 7px 12px;border:1px solid var(--line-2);border-radius:999px;background:#17130f;font:500 12px/1 var(--mono);letter-spacing:.03em;color:var(--muted)}
.stage-ticker .live-dot{width:6px;height:6px;flex:0 0 6px}
.stage-ticker .clock-day{display:inline;margin:0;font:inherit;color:var(--amber)}
.stage-ticker .stage-sep{width:1px;height:12px;background:var(--line-2)}
.stage-ticker .clock-time{display:inline;margin:0;font:600 12px/1 var(--mono);letter-spacing:.02em;color:var(--ink);font-variant-numeric:tabular-nums}
.stage-ticker .clock-label{margin:0;font:inherit;color:var(--muted)}

/* Phone: the footer under the box is two quiet lines, the empty reply is compact, the ticker fits. */
@media(max-width:600px){
  .stage-ticker{gap:8px;padding:6px 12px 6px 10px;font-size:11px;letter-spacing:.01em}
  .stage-ticker .clock-time{font-size:11px}
  .composer-foot{display:block;padding:10px 2px 0}
  .composer-foot .voice-status{font-size:12px}
  .composer-foot .voice-privacy{display:inline;font-size:11px}
  .composer-foot .voice-writing-help{display:inline-block;margin:6px 0 0}
  .reply-rows{margin-top:26px}
  .reply-row{padding:13px 0}
  .reply-row .live-read-state{position:absolute;right:0;top:15px;display:inline;margin:0;font-size:10px}
  .reply-label{padding-right:110px;font-size:14px}
  .reply-hint{font-size:12px;line-height:1.45}
}

/* The 28 days live in What Tibo shipped: each cell says what the day brought and what it answered. */
.record-line{margin:0;font:500 12px var(--mono);letter-spacing:.03em;color:var(--muted);text-align:right}
.day-strip{display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:6px;margin:0 0 10px}
.calendar-day{position:relative;display:grid;grid-template-rows:auto 1fr auto;gap:4px;min-height:66px;padding:7px 8px 6px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--faint);font:12px var(--mono);text-align:left;cursor:default;overflow:hidden;transition:border-color .2s,background .2s,color .2s,box-shadow .2s}
.calendar-day .day-num{font-weight:600;line-height:1}
.day-marks{display:flex;flex-wrap:wrap;align-items:center;gap:3px;min-height:12px}
.mark-ship{width:6px;height:6px;border-radius:50%;background:var(--kind-win);display:inline-block}
.mark-reset{font:600 12px/1 var(--body);color:#b9b6f0}
.mark-more{font:500 9px/1 var(--mono);color:var(--kind-win)}
.calendar-day .day-tag{font:600 8px/1.1 var(--mono);letter-spacing:.06em;text-transform:uppercase}
.calendar-day .day-tag:empty{display:none}
.day-answered:empty{display:none}
.day-answered,.legend-answered{position:absolute;right:6px;top:6px;min-width:16px;padding:2px 5px;border-radius:999px;background:#3a2a17;color:var(--amber);font:600 9px/1 var(--mono);text-align:center}
.calendar-day.kept,.calendar-day.missed,.calendar-day.pending{cursor:pointer;color:var(--ink);border-color:var(--line-2);background:#17130f}
.calendar-day.kept:hover,.calendar-day.missed:hover,.calendar-day.pending:hover{border-color:var(--muted)}
.calendar-day.missed{border-style:dashed;border-color:#9a5546;color:#f4b0a2;background:transparent}
.calendar-day.is-today{border-color:var(--amber)}
.calendar-day.is-today .day-tag{color:var(--amber)}
.calendar-day.selected{box-shadow:0 0 0 2px var(--ground),0 0 0 3px var(--ink)}
.calendar-day.filled{animation:cell-fill .9s ease}
.calendar-day:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.strip-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 22px;font-size:12px;color:var(--faint)}
.strip-legend>span{display:inline-flex;align-items:center;gap:6px}
.strip-legend .legend-answered{position:static}
@media(max-width:900px){
  .day-strip{display:flex;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;margin:0 -16px 10px;padding:3px 16px}
  .day-strip::-webkit-scrollbar{display:none}
  .calendar-day{flex:0 0 62px;scroll-snap-align:center}
}
@media(max-width:600px){
  .record-line{text-align:left;flex-basis:100%}
}

/* The hero names the promise; the box stays the first thing to do. */
.stage .stage-lede{margin:0 0 8px;max-width:52ch;font-size:17px;line-height:1.5;color:#c9beb4}
.stage .stage-note{margin:0 0 32px;font:500 12px var(--mono);letter-spacing:.03em;color:var(--faint)}
@media(max-width:600px){.stage .stage-lede{font-size:15px}.stage .stage-note{margin-bottom:22px}}

/* The example preview: a real reply's result shown faintly in the rows until the visitor starts writing. */
.reply-rows.is-preview .reply-slot>[id]:not([hidden]):not(.live-read-state){opacity:.62;filter:saturate(.8);transition:opacity .4s}
.reply-rows.is-preview .reply-row:before{background:#7a5a2c}
.reply-rows.is-preview .live-read-state{color:var(--amber)}
