:root{--ok:#7d9871;--bad:var(--accent);--plate:rgba(255,245,235,.82);--plate-line:rgba(255,249,237,.7);--ease:cubic-bezier(.23,1,.32,1);--tint:rgba(185,99,77,.12)}
.mono{font-family:ui-monospace,monospace;font-size:11px;letter-spacing:0}

/* Race HUD: every text over the scenery sits on a plate. */
.hud{background:var(--plate);backdrop-filter:blur(14px);border:1px solid var(--plate-line);border-radius:12px;box-shadow:0 4px 20px #8d553608}
.race-heading.hud{padding:13px 18px 14px;top:118px}
.race-stats.hud{padding:13px 20px 14px;top:118px;gap:26px;align-items:flex-start}
.race-stats .stat>div{display:flex;align-items:baseline;font-size:26px;margin-top:7px;white-space:nowrap}
.race-stats .timer{padding-left:24px}
.race-stats .unit{margin-left:5px}
.race-stats .stat{position:relative}
.race-stats #pot,.race-stats #nextPot{display:inline-block;min-width:6ch;text-align:right}
.race-stats #timer{min-width:5ch}
.stat small{display:block;margin-top:4px;font-size:10px;color:var(--muted)}
.stat em{position:absolute;top:0;right:0;font-style:normal;font-size:11px;letter-spacing:0;color:var(--accent);opacity:0;pointer-events:none}
.stat em.is-on{animation:delta 1.6s var(--ease)}
#nextPot.bump{animation:bump 1s var(--ease)}
@keyframes delta{0%{opacity:0;transform:translateY(5px)}18%{opacity:1;transform:none}70%{opacity:1}100%{opacity:0}}
@keyframes bump{0%{color:var(--accent)}100%{color:inherit}}
.issued{margin-top:10px;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.issued i{display:block;height:3px;border-radius:2px;background:var(--line);margin-top:6px;overflow:hidden}
.issued b{display:block;height:100%;background:var(--accent);width:0;transition:width .7s var(--ease)}
.race-progress{position:absolute;left:3.5vw;bottom:142px;width:262px;padding:12px 14px 13px}
.rp-bar{display:flex;height:6px;border-radius:3px;background:rgba(91,59,54,.12);overflow:hidden}
.rp-bar i{display:block;height:100%;width:0;transition:width .5s var(--ease)}
.rp-bar .ok,.rc-bar .ok{background:var(--ok)}.rp-bar .bad,.rc-bar .bad{background:var(--bad)}
.rp-text{display:flex;justify-content:space-between;margin-top:9px;font-size:11px;color:var(--muted)}
.rp-text b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.race-footnote .hud{padding:6px 11px;font-size:10px;color:#6f5651;animation:hint-fade .6s var(--ease) 12s forwards}
@keyframes hint-fade{to{opacity:0}}
.race-footnote{justify-content:flex-start}
body[data-page=race] .race-page .race-heading,body[data-page=race] .race-page .race-stats{pointer-events:none}

/* "On your marks" and the split */
.split{position:absolute;left:50%;bottom:142px;width:min(420px,calc(100% - 32px));transform:translateX(-50%);padding:20px 24px 22px;background:rgba(255,243,232,.93);backdrop-filter:blur(18px);border:1px solid var(--plate-line);border-radius:16px;text-align:center;box-shadow:0 14px 44px rgba(103,61,40,.13);transition:opacity .5s var(--ease),transform .5s var(--ease)}
@starting-style{.split{opacity:0;transform:translateX(-50%) translateY(14px)}}
.split.leaving{opacity:0;transform:translateX(-50%) translateY(6px);transition-duration:.3s}
.split-kicker{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:600}
.split-row{display:flex;justify-content:center;align-items:baseline;gap:4px;margin-top:8px}
.split-amount{font-size:46px;font-weight:550;letter-spacing:-.045em;line-height:1.05;font-variant-numeric:tabular-nums}
.split-unit{font-size:14px;color:var(--muted)}
.split-sub{margin-top:8px;font-size:12px;line-height:1.5;color:var(--muted)}
.split-note{margin-top:10px;font-size:12px;color:var(--muted)}
.split-you{margin-top:14px;padding:11px 16px;border-radius:12px;background:var(--accent);color:#fff6ee;display:flex;justify-content:space-between;align-items:baseline;animation:rise .6s var(--ease) .1s both}
.split-you span{font-size:12px;font-weight:550}
.split-you b{font-size:22px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.split-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;list-style:none;margin:14px 0 0;padding:0}
.split-chip{display:flex;gap:7px;align-items:baseline;padding:6px 11px;border-radius:999px;background:#fbeee3;border:1px solid var(--line);font-size:11px;animation:rise .55s var(--ease) calc(.3s + var(--i)*70ms) both}
.split-chip b{font-weight:600;font-variant-numeric:tabular-nums;color:var(--accent)}
.split-chip.is-you{background:var(--tint);border-color:rgba(185,99,77,.4)}
.split-chip.is-more{color:var(--muted)}
.split-bank{margin-top:12px;font-size:12px;font-weight:550;color:var(--accent);animation:rise .55s var(--ease) .7s both}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* CA pill */
.ca{position:relative;min-width:98px;text-align:center}
.ca>span{transition:opacity .18s,transform .18s var(--ease)}
.ca .ca-done{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--accent);opacity:0;transform:translateY(4px)}
.ca.copied #caText{opacity:0;transform:translateY(-4px)}
.ca.copied .ca-done{opacity:1;transform:none}

/* Pages: View Transition between tabs, fallback for browsers without it */
main{view-transition-name:page}
.header{view-transition-name:header}
::view-transition-group(root){animation:none}
::view-transition-old(root){display:none}
::view-transition-new(root){animation:none}
::view-transition-old(page),::view-transition-new(page){mix-blend-mode:normal;animation-timing-function:var(--ease)}
::view-transition-old(page){animation:vt-out .3s cubic-bezier(.4,0,1,1) both}
::view-transition-new(page){animation:vt-in .5s var(--ease) .1s both}
@keyframes vt-out{to{opacity:0;transform:translateY(-40px);filter:blur(4px)}}
@keyframes vt-in{from{opacity:0;transform:translateY(18px);filter:blur(3px)}}
.page-enter{animation:vt-in .5s var(--ease) both}

/* Shared page chrome for Proof and Ducks */
.ducks-page{min-height:100svh;background:#f5e8df;padding:155px max(6vw,24px) 100px}
.proof-page .proof-top,.ducks-page .proof-top{margin-bottom:28px}
.ps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:22px}
.ps-tile{padding:16px 18px;border-radius:12px;background:rgba(255,245,235,.7);border:1px solid var(--line)}
.ps-tile b{display:block;margin-top:8px;font-size:21px;font-weight:550;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ps-tile small{display:block;margin-top:5px;font-size:10px;color:var(--muted)}
.proof-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:16px;margin-top:22px;align-items:start}
.text-link.is-off{opacity:.45}
.mono{overflow-wrap:anywhere}

/* Race cards */
.rcard{padding:20px 22px 18px;border-radius:16px;background:rgba(255,246,238,.85);border:1px solid var(--line);transition:border-color .3s}
.rcard.is-verified{border-color:rgba(125,152,113,.6)}
.rc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.rc-head h3{margin:0;font-size:21px;font-weight:550;letter-spacing:-.04em}
.rc-when{display:block;margin-top:4px;font-size:11px;color:var(--muted)}
.rc-badge{font-size:11px;padding:5px 10px;border-radius:999px;background:rgba(91,59,54,.07);color:var(--muted);white-space:nowrap;transition:background .3s,color .3s}
.rc-badge[data-state=ok]{background:rgba(125,152,113,.2);color:#4f6a45}
.rc-badge[data-state=fail]{background:var(--tint);color:var(--accent)}
.is-running .rc-badge{background:var(--tint);color:var(--accent)}
.rc-bar{display:flex;gap:2px;height:10px;margin-top:18px;border-radius:5px;overflow:hidden;background:rgba(91,59,54,.1)}
.rc-bar i{display:block;min-width:0}
.rc-bar-live{background:rgba(185,99,77,.28)}
.rc-bar-labels{display:flex;justify-content:space-between;margin-top:8px;font-size:11px;color:var(--muted)}
.rc-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.rc-metric b{display:block;margin-top:6px;font-size:14px;font-weight:550;font-variant-numeric:tabular-nums;white-space:nowrap}
.rc-metric small{display:block;margin-top:3px;font-size:10px;color:var(--muted)}
.rc-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:16px}
.rc-foot .text-link{margin:0;padding-bottom:3px}
.rc-actions{display:flex;gap:8px;margin-left:auto}
.rc-toggle,.rc-verify{padding:9px 14px;border-radius:9px;font-size:12px;border:1px solid var(--line)}
.rc-toggle:after{content:'';display:inline-block;width:6px;height:6px;margin:0 0 2px 9px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(45deg);transition:transform .3s var(--ease)}
.is-open .rc-toggle:after{transform:rotate(-135deg) translate(-2px,-2px)}
.rc-verify{background:var(--ink);color:#fff1e4;border-color:var(--ink);transition:background .25s,opacity .25s}
.rc-verify:hover{background:var(--accent);color:#fff1e4}
.rc-verify:disabled{opacity:.4}
.rc-verify:disabled:hover{background:var(--ink)}
.is-verified .rc-verify{background:#6c8861;border-color:#6c8861}
.rc-vwrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease)}
.rc-vwrap.is-on{grid-template-rows:1fr}
.rc-vwrap>div{overflow:hidden;min-height:0}
.rc-verify-box{margin-top:14px;padding:14px 16px;border-radius:12px;background:rgba(91,59,54,.05)}
.no-trans,.no-trans *{transition:none!important}
.proof-page,.proof-page *{overflow-anchor:none}
.rc-verify-box.is-fail{background:var(--tint)}
.vf-progress{height:3px;border-radius:2px;background:var(--line);overflow:hidden}
.vf-progress i{display:block;height:100%;background:var(--ok);transform-origin:left;transform:scaleX(0);transition:transform .35s var(--ease)}
.is-fail .vf-progress i{background:var(--bad)}
.vf-steps{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:9px;font-size:12px}
.vf-steps li{display:flex;align-items:center;gap:10px}
.vf-steps small{margin-left:auto;color:var(--muted);font-variant-numeric:tabular-nums}
.vf-mark{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--line);flex-shrink:0;position:relative;transition:background .25s,border-color .25s}
li[data-state=run] .vf-mark{border-color:var(--accent) transparent var(--accent) var(--accent);animation:spin .8s linear infinite}
li[data-state=ok] .vf-mark{background:var(--ok);border-color:var(--ok)}
li[data-state=ok] .vf-mark:after{content:'';position:absolute;left:4px;top:1px;width:3px;height:7px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
li[data-state=fail] .vf-mark{background:var(--bad);border-color:var(--bad)}
li[data-state=fail] .vf-mark:after{content:'';position:absolute;left:5px;top:2px;width:1.5px;height:8px;background:#fff;box-shadow:none;transform:rotate(45deg)}
@keyframes spin{to{transform:rotate(360deg)}}
.rc-details{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease)}
.rc-details>div{overflow:hidden;min-height:0}
.is-open .rc-details{grid-template-rows:1fr}
.rc-details .detail-row{padding:12px 0;font-size:12px}
.rc-details .detail-row:first-child{margin-top:12px}
.rc-links{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.rc-links .text-link{margin:0;padding:0;border:0;gap:6px;white-space:nowrap}
.rc-muted{color:var(--muted)}
.rc-ducks-title{display:block;margin:16px 0 10px}
.rc-ducks{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:6px;max-height:240px;overflow-y:auto;padding-bottom:2px}
.rc-ducks span{display:flex;justify-content:space-between;gap:6px;padding:6px 8px;border-radius:7px;background:rgba(91,59,54,.05);font-size:10px;font-variant-numeric:tabular-nums}
.rc-ducks .is-fell{color:var(--accent)}.rc-ducks i{font-style:normal;color:var(--muted)}.rc-ducks b{font-weight:550}

/* Ducks */
.ducks-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:22px}
.ducks-filter{display:flex;align-items:center;flex:1 1 280px;max-width:460px;height:42px;padding:0 14px;border:1px solid var(--line);border-radius:10px;background:rgba(255,245,235,.5);transition:border-color .18s}
.ducks-filter:focus-within{border-color:rgba(185,99,77,.45)}
.ducks-filter input{flex:1;min-width:0;border:0;outline:none;background:none;font-size:12px}
.ducks-filter input.is-bad{color:var(--accent)}
.ducks-filter button{font-size:20px;color:var(--muted);width:24px}
.chip-button{padding:10px 15px;border-radius:10px;border:1px solid var(--line);font-size:12px;background:rgba(255,245,235,.5)}
.chip-button.more{display:block;margin:26px auto 0}
.ducks-count{font-size:12px;color:var(--muted);margin-left:auto}
.ducks-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:14px}
.ducks-grid[aria-busy=true]{opacity:.6}
.duck-tile{display:flex;flex-direction:column;text-align:left;border-radius:14px;overflow:hidden;background:rgba(255,246,238,.85);border:1px solid var(--line);animation:rise .5s var(--ease) both;transition:border-color .2s,transform .35s var(--ease)}
.duck-tile:hover{border-color:rgba(185,99,77,.4);transform:translateY(-3px);color:inherit}
.duck-tile.is-mine{border-color:var(--accent)}
.duck-thumb{display:block;aspect-ratio:1;background:#f0dfd3;padding:14%}
.duck-thumb img,.duck-thumb svg{width:100%;height:100%;display:block;object-fit:contain}
.duck-meta{display:grid;gap:3px;padding:12px 14px 14px;font-size:12px}
.duck-meta b{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}
.duck-meta small{font-size:10px;color:var(--muted);font-family:ui-monospace,monospace}
.duck-hero{aspect-ratio:1;max-height:260px;margin:6px auto 18px;background:#f0dfd3;border-radius:16px;padding:8%;display:flex}
.duck-hero svg,.duck-hero img{width:100%;height:100%;object-fit:contain}
.duck-title h2{font-size:26px;margin-top:6px}
.duck-swatches{display:flex;gap:6px;margin-top:12px}
.duck-swatches span{width:22px;height:22px;border-radius:6px;border:1px solid var(--line)}
.duck-facts{margin-top:18px}
.duck-links-title{display:block;margin:24px 0 10px}
.duck-links{display:grid;gap:8px}
.duck-link{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:13px 15px;border-radius:10px;border:1px solid var(--line);font-size:13px;transition:border-color .2s,background .2s}
a.duck-link:hover{border-color:rgba(185,99,77,.4);background:var(--tint)}
.duck-link small{font-size:10px;color:var(--muted)}
.duck-link.is-off{opacity:.55}

/* Panels open lightly: the drawer slides in, the wallet popover shifts 5px */
dialog.drawer{transition:transform .3s var(--ease),opacity .25s,overlay .3s allow-discrete,display .3s allow-discrete}
dialog.drawer:not([open]){transform:translateX(24px);opacity:0}
dialog.drawer[open]{transform:none;opacity:1;transition-duration:.5s}
@starting-style{dialog.drawer[open]{transform:translateX(24px);opacity:0}}
dialog.drawer::backdrop{transition:opacity .4s,display .4s allow-discrete,overlay .4s allow-discrete;opacity:0}
dialog.drawer[open]::backdrop{opacity:1}
@starting-style{dialog.drawer[open]::backdrop{opacity:0}}
.wallet-popover{transition:opacity .16s,transform .16s var(--ease)}
@starting-style{.wallet-popover{opacity:0;transform:translateY(-5px)}}
.toast{transition:opacity .18s,transform .18s var(--ease)}
@starting-style{.toast{opacity:0;transform:translate(-50%,6px)}}

@media(max-width:1050px){.race-stats.hud{gap:16px}.race-stats .stat>div{font-size:22px}}
@media(max-width:650px){
  .header nav{gap:15px;font-size:11px;left:62px}
  .header-actions{gap:6px}
  .ca{min-width:0;font-size:8px}
  .race-heading.hud{top:88px;left:16px;padding:9px 12px 10px}
  .race-heading h1{font-size:22px;margin-top:6px}
  .race-stats.hud{top:88px;left:auto;right:16px;padding:9px 12px 10px;gap:10px}
  .race-stats .stat>div{font-size:15px;margin-top:5px}
  .race-stats .timer{padding-left:10px;min-width:0}
  .race-stats .unit{display:none}
  .race-stats .eyebrow{font-size:8px}
  .stat em{display:none}
  .issued{display:none}
  .race-progress{left:16px;right:16px;width:auto;bottom:128px}
  .split{bottom:188px}
  .split-amount{font-size:38px}
  .race-footnote .hud{font-size:9px;padding:5px 9px}
  .ducks-page{padding:125px 22px 70px}
  .ducks-grid{grid-template-columns:repeat(2,1fr)}
  .rc-metrics{gap:6px}.rc-metric b{font-size:12px}
  .rc-foot{flex-wrap:wrap}
  .proof-list{grid-template-columns:1fr}
}
@media(max-width:650px) and (max-height:700px){.split{bottom:176px}.split-chips{display:none}}
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important}
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
  .race-footnote .hud{animation:none}
}

/* Race HUD grid: one margin, one row height, one radius. Top row sits under the header, bottom row on one baseline. */
.race-page{--m:24px;--head:88px;--hud-h:56px;--top-h:112px;--r:14px;--gap:12px}
@media(max-width:650px){.race-page{--m:16px;--head:74px;--hud-h:52px;--top-h:88px;--gap:8px}}
.race-page .hud,.race-page .follow-panel,.race-page .camera-controls,.race-page .recenter{background:var(--plate);backdrop-filter:blur(14px);border:1px solid var(--plate-line);border-radius:var(--r);box-shadow:0 4px 20px #8d553608}
.race-page .race-heading.hud,.race-page .race-stats.hud{top:calc(var(--head) + var(--m));height:var(--top-h);display:flex;flex-direction:column;justify-content:center;padding:12px 18px}
.race-page .race-heading.hud{left:var(--m)}
.race-page .race-stats.hud{right:var(--m);left:auto;flex-direction:row;align-items:center}
.race-page .race-stats .stat>div{margin-top:6px}
.race-page .race-bottom{left:var(--m);right:var(--m);bottom:var(--m);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--gap)}
.race-page .follow-panel,.race-page .camera-controls,.race-page .recenter{height:var(--hud-h);min-width:0}
.race-page .follow-panel{justify-self:start;width:262px;padding:0 16px}
.race-page .camera-controls{padding:5px;align-items:stretch}
.race-page .camera-controls button{padding:0 16px;border-radius:calc(var(--r) - 5px)}
.race-page .recenter{justify-self:end;width:var(--hud-h);display:inline-flex;align-items:center;justify-content:center}
.race-page .race-progress{left:var(--m);bottom:calc(var(--m) + var(--hud-h) + var(--gap));width:262px;right:auto}
.race-page .race-footnote{left:auto;right:var(--m);bottom:calc(var(--m) + var(--hud-h) + var(--gap))}
.race-page .split{bottom:calc(var(--m) + var(--hud-h) + var(--gap))}
@media(max-width:650px){
  .race-page .race-bottom{grid-template-columns:1fr auto auto}
  .race-page .follow-panel{width:auto;justify-self:stretch;padding:0 12px}
  .race-page .race-heading.hud,.race-page .race-stats.hud{padding:8px 12px}
  .race-page .follow-panel button{white-space:nowrap}
  .race-page .camera-controls button{padding:0 12px}
  .race-page .race-progress{left:var(--m);right:var(--m);width:auto}
  .race-page .race-footnote{display:none}
}

/* POV camcorder overlay: REC mark and timecode; the scanlines and noise are in the lens shader. */
.lens-top{display:flex;align-items:center;gap:18px;white-space:nowrap}
.lens-rec{display:inline-flex;align-items:center;gap:7px;font-variant-numeric:tabular-nums}
.lens-rec i{width:8px;height:8px;border-radius:50%;background:#e2503f;box-shadow:0 0 6px #e2503f88;animation:rec-blink 1.6s steps(1) infinite}
@keyframes rec-blink{50%{opacity:.15}}
@media(prefers-reduced-motion:reduce){.lens-rec i{animation:none}}
#world,#world canvas{user-select:none;-webkit-user-select:none}

.duck-hover{position:fixed;top:0;left:0;z-index:5;display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 8px;max-width:220px;padding:8px 11px;background:var(--plate);backdrop-filter:blur(14px);border:1px solid var(--plate-line);border-radius:10px;box-shadow:0 4px 20px #8d553614,0 0 0 1px rgba(255,249,237,.4);font-size:12px;color:var(--ink);white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .14s,visibility 0s .14s;will-change:transform}
.duck-hover.on{opacity:1;visibility:visible;transition:opacity .14s}
.duck-hover b{font-weight:650}.duck-hover span{color:var(--muted)}.duck-hover small{flex-basis:100%;font:500 10px ui-monospace,monospace;color:var(--accent)}.duck-hover small:empty{display:none}
@media(prefers-reduced-motion:reduce){.duck-hover,.duck-hover.on{transition:none}}
