:root{--bg:#171528;--panel:#221c3c;--panel2:#2c2450;--muted:#b8acd2;--gold:#ffcf4a;--silver:#d6dceb;--bronze:#e39b63;--lilac:#b9a2ff;--sky:#8fd3ff;--font:Inter,"Avenir Next",Avenir,"Segoe UI",system-ui,sans-serif}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}
/* header: the nation chip and the sound button sit with the hub's account menu */
.ol-nation{display:flex;align-items:center;gap:10px;padding:6px 12px 6px 6px;border-radius:999px;border:1px solid var(--line);background:var(--panel)}
.ol-nation:hover{border-color:var(--gold)}
.ol-flag{display:inline-block;width:36px;height:27px;border-radius:5px;background:#ffffff22 center/cover no-repeat;box-shadow:0 0 0 1px #0004}
.ol-nation-text{display:flex;flex-direction:column;text-align:left;line-height:1.1}
.ol-nation-text small{color:var(--muted);font-size:11px}
.ol-nation-text b{max-width:16ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ol-change{font-size:12px;color:var(--gold);font-weight:800}
.ol-icon{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--panel)}
.ol-icon[aria-pressed="false"]{opacity:.5;text-decoration:line-through}
.site-header .ol-nation{padding:4px 10px 4px 4px;gap:8px;font-size:13px}
.site-header .ol-flag{width:30px;height:22px}
.ol-sound[aria-pressed="false"]{opacity:.5;text-decoration:line-through}
.world-toolbar .toolbar-text{font-weight:700}
.destination.stadium .destination-symbol{color:#ffb3d9;background:#ff8fc81c}
.destination.aquatics .destination-symbol{color:#a9dcff;background:#8fd3ff1c}
.destination.arena .destination-symbol{color:#cdbcff;background:#b9a2ff1c}
.destination.range .destination-symbol{color:#a6f7e3;background:#7ff0d41c}
.destination.alley .destination-symbol{color:#ffe08a;background:#ffcf4a1c}
.destination.medals .destination-symbol{color:#ffe8a0;background:#ffcf4a24}
.destination .ol-open-venue{border:1px solid #ffffff2a;background:#ffffff08;color:#ffe08a;font-weight:700}
/* scoreboards live in a dialog opened from the toolbar or the medal plaza kiosk */
.ol-boards-dialog{width:min(640px,calc(100% - 24px));max-height:min(800px,calc(100dvh - 24px));padding:0;border:1px solid #ffffff1f;border-radius:24px;background:var(--panel);color:#fff8ef}
.ol-boards-dialog::backdrop{background:#0a0814aa;backdrop-filter:blur(3px)}
.ol-boards{display:flex;flex-direction:column;gap:10px;padding:18px 18px 16px;max-height:min(800px,calc(100dvh - 24px))}
.ol-boards .dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.ol-boards .dialog-heading h2{margin:2px 0 0;font-size:22px}
.ol-boards .dialog-heading .eyebrow{margin:0;color:var(--gold);font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:800}
.ol-tabs{display:flex;gap:4px;padding:4px;border-radius:14px;background:var(--panel)}
.ol-tabs button{flex:1;padding:9px 6px;border:0;border-radius:10px;background:none;color:var(--muted);font-weight:800;font-size:13px}
.ol-tabs button[aria-selected="true"]{background:var(--panel2);color:var(--ink);box-shadow:inset 0 -2px 0 var(--gold)}
.ol-board{flex:1;border-radius:18px;background:var(--panel2);padding:12px;overflow:auto;max-height:min(520px,calc(100dvh - 220px))}
.ol-table{width:100%;border-collapse:collapse;font-size:14px}
.ol-table th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;text-align:right;padding:4px 6px;font-weight:700}
.ol-table th:nth-child(-n+2){text-align:left}
.ol-table td{padding:7px 6px;border-top:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums}
.ol-table td:nth-child(2){text-align:left;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ol-table td:first-child{text-align:left;color:var(--muted);width:28px}
.ol-table tr.is-me td{background:#ffcf4a1c}
.ol-table .mini-flag{display:inline-block;width:20px;height:15px;border-radius:3px;vertical-align:-3px;margin-right:6px;background:center/cover}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:3px;vertical-align:0}
.dot.g{background:var(--gold)}.dot.s{background:var(--silver)}.dot.b{background:var(--bronze)}
.ol-empty{color:var(--muted);text-align:center;padding:24px 8px}
.ol-me-head{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.ol-me-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px}
.ol-me-stats div{background:var(--panel2);border-radius:12px;padding:8px;text-align:center}
.ol-me-stats b{display:block;font-size:20px}
.ol-me-stats small{color:var(--muted);font-size:11px}
.ol-practice{margin:0;padding:10px 12px;border-radius:14px;background:#ffcf4a18;color:#ffe9a8;font-size:13px}
.ol-link{border:0;background:none;color:var(--gold);font-weight:800;text-decoration:underline;padding:0}

.ol-sheet{position:fixed;inset:0;z-index:30;display:grid;place-items:end center;background:#0a081488;backdrop-filter:blur(3px)}
.ol-sheet-card{position:relative;width:min(720px,100%);max-height:85dvh;overflow:auto;margin:0 auto;padding:22px 18px calc(18px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:var(--panel);box-shadow:0 -20px 60px #0008}
@media (min-width:760px){.ol-sheet{place-items:center}.ol-sheet-card{border-radius:24px}}
.ol-sheet h2{margin:0 0 12px}
.ol-close{position:absolute;right:12px;top:10px;width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--panel2);font-size:20px;line-height:1}
.ol-events{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.ol-ev{display:flex;flex-direction:column;gap:4px;text-align:left;padding:14px;border-radius:16px;border:1px solid var(--line);background:var(--panel2)}
.ol-ev:hover,.ol-ev:focus-visible{border-color:var(--gold);outline:none;transform:translateY(-1px)}
.ol-ev strong{font-size:17px}
.ol-ev .ev-icon{font-size:26px}
.ol-ev small{color:var(--muted)}
.ol-ev .ev-medals{display:flex;gap:8px;font-size:12px;color:var(--muted)}

.ol-event{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;background:#0d0b19}
.ol-stage-wrap{position:relative;flex:1;min-height:0;display:grid;place-items:center}
#stage{display:block;max-width:100%;max-height:100%;touch-action:none;border-radius:4px}
.ol-stage-top{position:absolute;top:calc(8px + env(safe-area-inset-top));left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));display:flex;gap:8px;pointer-events:none}
.ol-pill{pointer-events:auto;border:1px solid #ffffff33;background:#171528cc;border-radius:999px;padding:7px 12px;font-weight:800;font-size:13px}
.ol-event-name{pointer-events:none;margin-left:auto}
.ol-rotate{position:absolute;bottom:8px;left:0;right:0;margin:0;text-align:center;color:var(--muted);font-size:12px}
@media (orientation:landscape),(min-width:700px){.ol-rotate{display:none}}
.ol-controls{display:flex;gap:12px;justify-content:center;padding:12px max(12px,env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:#171528}
.ol-ctl{flex:1;max-width:300px;min-height:84px;border-radius:22px;border:0;background:linear-gradient(180deg,#ff9fd0,#ff6fb5);color:#2a1030;font-weight:900;font-size:20px;letter-spacing:.02em;box-shadow:0 6px 0 #b43c80,0 10px 24px #0007;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.ol-ctl:nth-child(2){background:linear-gradient(180deg,#9ff6df,#5fe0c0);box-shadow:0 6px 0 #2a9c84,0 10px 24px #0007;color:#08302a}
.ol-ctl:nth-child(3){background:linear-gradient(180deg,#ffe08a,#ffc53a);box-shadow:0 6px 0 #b8861c,0 10px 24px #0007;color:#3a2600}
.ol-ctl.is-down{transform:translateY(5px);box-shadow:0 1px 0 #0006}
.ol-ctl kbd{display:block;font:600 11px var(--font);opacity:.7}
@media (orientation:landscape) and (max-height:520px){.ol-event{flex-direction:row}.ol-controls{flex-direction:column;width:150px;padding:8px}.ol-ctl{min-height:0;flex:1}}

.ol-overlay{position:absolute;inset:0;z-index:5;display:grid;place-items:center;padding:16px;background:#0d0b19b8;backdrop-filter:blur(4px);overflow:auto}
.ol-intro-card,.ol-result-card{width:min(680px,100%);max-height:100%;overflow:auto;padding:20px;border-radius:24px;background:var(--panel);box-shadow:0 30px 80px #000a;border:1px solid var(--line)}
.ol-kicker{margin:0;color:var(--gold);font-weight:800;font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.ol-intro-card h2{margin:4px 0 6px;font-size:28px}
.ol-intro-card h3{margin:14px 0 8px;font-size:14px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.ol-how{margin:0;color:#e9e0ff}
.ol-lineup{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ol-lineup li{display:grid;grid-template-columns:52px 34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;background:var(--panel2);animation:slide .4s both}
.ol-lineup li.is-me{background:linear-gradient(90deg,#ffcf4a33,var(--panel2));box-shadow:inset 0 0 0 1px #ffcf4a66}
.ol-lineup .lane{color:var(--muted);font-size:12px;font-weight:800}
.ol-lineup .who{min-width:0}.ol-lineup .who b{display:block;overflow-wrap:anywhere}
.ol-name-edit{display:inline-flex;align-items:center;gap:4px;margin:2px 0;padding:6px 10px;min-height:32px;border-radius:999px;border:1px solid var(--line);background:var(--panel2);color:var(--gold);font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.ol-name-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:2px 0}
.ol-name-form input{flex:1 1 9em;min-width:0;min-height:40px;padding:6px 10px;border-radius:10px;border:1px solid var(--gold);background:#0f0d1c;color:#fff;font:inherit;font-size:16px}
.ol-name-form button{min-height:40px;padding:6px 14px;border-radius:10px;border:0;background:var(--gold);color:#2a1030;font:inherit;font-weight:900;cursor:pointer}
.ol-name-form small{flex-basis:100%;color:var(--muted);font-size:11px}
/* narrow phones: golds / PB move under the name instead of pushing past the card's right edge */
@media (max-width:420px){.ol-lineup li{grid-template-columns:44px 30px minmax(0,1fr);gap:8px}.ol-lineup .gold{grid-column:3;text-align:left;white-space:normal}.ol-lineup .gold small{display:inline;margin-left:6px}}
.ol-lineup .who small{color:var(--muted)}
.ol-lineup .tag{font-size:11px;padding:2px 7px;border-radius:999px;background:#ffffff14;color:var(--muted);margin-left:6px;font-weight:700}
.ol-lineup .tag.real{background:#7ff0d433;color:#7ff0d4}
.ol-lineup .gold{font-weight:800;color:var(--gold);white-space:nowrap;text-align:right}
.ol-lineup .gold small{display:block;color:var(--muted);font-weight:600}
@keyframes slide{from{opacity:0;transform:translateX(-14px)}}
.ol-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
/* competition format (intro) and the real-world benchmark — compact, wraps on 320 px phones */
.ol-format{margin:10px 0 0}.ol-format-title{margin:0 0 6px;font-size:13px;color:var(--muted);font-weight:800}
.ol-format-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}
.ol-format-btn{display:grid;gap:2px;text-align:left;padding:10px 12px;min-height:48px;border-radius:12px;border:1px solid var(--line);background:var(--panel2);color:inherit;font:inherit;cursor:pointer}
.ol-format-btn b{font-size:15px}.ol-format-btn small{font-size:12px;color:var(--muted);line-height:1.3}
.ol-format-btn.is-on{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);background:linear-gradient(135deg,#ffcf4a26,var(--panel2))}
.ol-format-note{margin:8px 0 0;font-size:13px;color:var(--muted)}.ol-format-note b{color:var(--gold)}
.ol-record{margin:10px 0 0;font-size:13px;line-height:1.4}.ol-record p{margin:0}.ol-record-label{color:#7ff0d4;font-weight:800}
.ol-record details{margin-top:2px;font-size:12px;color:var(--muted)}.ol-record a{color:#7ff0d4;overflow-wrap:anywhere}
.ol-record-game{color:var(--muted)}.ol-record-result{margin:6px 0 0;font-size:14px;font-weight:700;color:#7ff0d4}
.ol-result-card h2.qualified{color:#7ff0d4}.ol-standings li.is-through{box-shadow:inset 3px 0 0 #7ff0d4}
/* Start / Retry stay reachable while the card scrolls (the card opens at its title) */
.ol-intro-card>.ol-row:not(.ol-tutorial-row),.ol-result-card>.ol-row{position:sticky;bottom:-20px;margin:16px -20px -20px;padding:12px 20px 20px;background:linear-gradient(0deg,var(--panel) 70%,#0000)}
.ol-tutorial-row{margin-top:14px}.ol-tutorial-row>button{flex:1 1 10em;min-height:44px}
.ol-help{min-width:36px;justify-content:center;font-weight:900;cursor:pointer}
.ol-coach-inline{margin:0;padding:8px 12px;background:#171528;color:#fff;font-size:14px;border-top:1px solid #ffffff22}
#intro .ol-intro-card>.ol-row{background:linear-gradient(0deg,#221c3c 70%,#221c3c00)}
.ol-primary,.ol-secondary{flex:1;min-width:160px;padding:14px 18px;border-radius:16px;font-weight:900;font-size:16px;border:0}
.ol-primary{background:linear-gradient(180deg,#ffe08a,#ffc53a);color:#3a2600;box-shadow:0 5px 0 #b8861c}
.ol-secondary{background:var(--panel2);border:1px solid var(--line)}
.ol-result-card{text-align:center}
.ol-podium{display:flex;justify-content:center;align-items:flex-end;gap:8px;height:150px;margin-bottom:6px}
.ol-podium .step{width:96px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px}
.ol-podium .block{width:100%;border-radius:10px 10px 0 0;display:grid;place-items:center;font-weight:900;font-size:22px;color:#2a2140}
.ol-podium .p1 .block{height:76px;background:var(--gold)}.ol-podium .p2 .block{height:54px;background:var(--silver)}.ol-podium .p3 .block{height:40px;background:var(--bronze)}
.ol-podium .step.is-me .flagbig{box-shadow:0 0 0 3px var(--gold),0 0 22px var(--gold)}
.ol-podium .flagbig{width:46px;height:34px;border-radius:5px;background:center/cover}
.ol-podium .name{max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.ol-result-card h2{margin:6px 0 0;font-size:30px}
.ol-result-card h2.gold{color:var(--gold)}.ol-result-card h2.silver{color:var(--silver)}.ol-result-card h2.bronze{color:var(--bronze)}
.ol-mark{margin:2px 0;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}
.ol-badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:6px 0}
.ol-badges span{padding:4px 10px;border-radius:999px;background:var(--panel2);font-weight:800;font-size:13px}
.ol-badges .pb{background:#ff8fc833;color:#ffc2e2}.ol-badges .up{background:#7ff0d433;color:#7ff0d4}.ol-badges .pts{background:#ffcf4a2a;color:#ffe08a}
.ol-standings{list-style:none;margin:10px 0 0;padding:0;text-align:left;display:grid;gap:4px;font-size:14px}
.ol-standings li{display:grid;grid-template-columns:28px 24px 1fr auto;gap:8px;align-items:center;padding:6px 10px;border-radius:10px;background:var(--panel2)}
.ol-standings li.is-me{box-shadow:inset 0 0 0 1px var(--gold)}
.ol-standings .mini-flag{width:22px;height:16px;border-radius:3px;background:center/cover}
.ol-standings .m{font-variant-numeric:tabular-nums;font-weight:800}
.ol-save{min-height:1.4em;margin:8px 0 0;color:var(--muted);font-size:13px}

.ol-dialog{width:min(640px,calc(100% - 24px));max-height:min(760px,calc(100dvh - 24px));padding:0;border:1px solid var(--line);border-radius:24px;background:var(--panel);color:var(--ink)}
.ol-dialog::backdrop{background:#0a0814aa;backdrop-filter:blur(3px)}
.ol-nation-card{position:relative;display:flex;flex-direction:column;gap:10px;padding:20px;max-height:min(760px,calc(100dvh - 24px))}
.ol-nation-card h2{margin:0}.ol-nation-card p{margin:0;color:var(--muted)}
#nation-search{width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--panel2);color:var(--ink);font:inherit}
.ol-nation-recent{display:flex;gap:6px;flex-wrap:wrap}
.ol-nation-recent:empty{display:none}
.ol-nation-list{overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px;padding:2px;min-height:200px}
.ol-nat{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:12px;border:1px solid transparent;background:var(--panel2);text-align:left;font-size:14px}
.ol-nat:hover,.ol-nat:focus-visible{border-color:var(--gold);outline:none}
.ol-nat[aria-selected="true"]{border-color:var(--gold);background:#ffcf4a22}
.ol-nat .ol-flag{width:28px;height:21px;flex:0 0 auto}
.ol-nat span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ol-chip{display:flex;align-items:center;gap:6px;padding:5px 10px 5px 5px;border-radius:999px;border:1px solid var(--line);background:var(--panel2);font-size:13px;font-weight:700}
.ol-chip .ol-flag{width:24px;height:18px}

.ol-board{max-height:none}.ol-map{min-height:min(70dvh,560px)}}
@media (max-width:620px){.ol-nation-text,.ol-change{display:none}.site-header .ol-nation{padding:4px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---- 3D stage, HUD overlay, button cues, controls guide, ceremony ---- */
.ol-stage-wrap{overflow:hidden}
#stage3d{position:absolute;inset:0;width:100%;height:100%;display:block}
#stage3d:not([hidden])+#stage{position:absolute;inset:0;border-radius:0;pointer-events:auto}
.ol-ctl{position:relative;transition:transform .08s,box-shadow .2s}
.ol-ctl.k0{background:linear-gradient(180deg,#ff9fd0,#ff6fb5);box-shadow:0 6px 0 #b43c80,0 10px 24px #0007;color:#2a1030}
.ol-ctl.k1{background:linear-gradient(180deg,#9ff6df,#5fe0c0);box-shadow:0 6px 0 #2a9c84,0 10px 24px #0007;color:#08302a}
.ol-ctl.k2{background:linear-gradient(180deg,#ffe08a,#ffc53a);box-shadow:0 6px 0 #b8861c,0 10px 24px #0007;color:#3a2600}
.ol-ctl.k3{background:linear-gradient(180deg,#d6c8ff,#a88cff);box-shadow:0 6px 0 #6a4fc0,0 10px 24px #0007;color:#1e1240}
.ol-cue-tag{position:absolute;left:50%;top:-14px;transform:translate(-50%,-6px);padding:3px 10px;border-radius:999px;background:#fff;color:#2a1030;font-size:12px;font-weight:900;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;white-space:nowrap}
.ol-ctl.is-cue{animation:cue 0.7s ease-in-out infinite;outline:3px solid #fff;outline-offset:3px}
.ol-ctl.is-cue .ol-cue-tag{opacity:1;transform:translate(-50%,0)}
.ol-ctl.is-down{animation:none}
@keyframes cue{50%{transform:translateY(-4px) scale(1.03);filter:brightness(1.12)}}
.ol-controls-guide{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ol-controls-guide li{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:10px;padding:6px 8px;border-radius:12px;background:#ffffff0d}
.ol-key{min-width:72px;padding:6px 12px;border-radius:11px;font-weight:900;text-align:center;color:#2a1030}
.ol-key.k0{background:#ff8fc8}.ol-key.k1{background:#7ff0d4}.ol-key.k2{background:#ffcf4a}.ol-key.k3{background:#b9a2ff}
.ol-controls-guide kbd{font:700 12px "SFMono-Regular",Menlo,monospace;padding:4px 8px;border-radius:7px;background:#ffffff1a;border:1px solid #ffffff33;border-bottom-width:3px}
@media (pointer:coarse){.ol-controls-guide kbd,.ol-ctl kbd{display:none}}
.ol-controls-guide li span:last-child{color:#e9e0ff;font-size:14px}
#intro .ol-intro-card{background:#221c3cee;backdrop-filter:blur(8px)}
#intro{background:linear-gradient(90deg,#0d0b19d9,#0d0b1966 70%,#0d0b1933)}
.is-ceremony #result{place-items:center end;background:linear-gradient(270deg,#0d0b19cc,#0d0b1900 60%);backdrop-filter:none}
.is-ceremony .ol-controls{visibility:hidden}
.is-ceremony .ol-result-card{width:min(440px,100%);background:#221c3cee;backdrop-filter:blur(8px)}
@media (max-width:760px){.is-ceremony #result{place-items:end center;background:linear-gradient(0deg,#0d0b19ee,#0d0b1900 70%)}.is-ceremony .ol-result-card{max-height:62%}}

/* the venue directory: symbol · text · walk · open (the hub's three-column card gets a fourth action) */
.olympic-page .destination{display:grid;grid-template-columns:50px minmax(0,1fr) auto auto;align-items:center;gap:12px}
.olympic-page .destination .ol-open-venue{white-space:nowrap;padding:9px 12px;border-radius:12px}
@media (max-width:620px){.olympic-page .destination{grid-template-columns:50px minmax(0,1fr) auto}.olympic-page .destination .ol-open-venue{grid-column:2/4;justify-self:start}.site-header .ol-nation-text,.site-header .ol-change{display:none}.site-header .ol-nation{padding:3px}}
/* while an event runs the park is covered and must not catch focus or taps */
html[data-olympic="event"] .world-shell,html[data-olympic="event"] .site-header{visibility:hidden}

/* Astra round: prepare state on buttons, collapsed lineup, result tip */
.ol-ctl.is-choice{outline:2px solid #ffffffaa;outline-offset:3px}
.ol-ctl.is-prep{outline:2px dashed #ffffff88;outline-offset:3px}
.ol-lineup.collapsed li.is-more{display:none}
.ol-lineup .fav{font-style:normal;color:var(--gold);margin-left:4px}
.ol-lineup-toggle{display:block;margin:6px auto 0;font-size:13px}
.ol-vsbest{margin:0;color:#7ff0d4;font-weight:800;font-size:14px}
.ol-tip{margin:6px auto 0;max-width:40ch;padding:8px 12px;border-radius:12px;background:#ffcf4a1a;color:#ffe9a8;font-size:14px;text-align:left}
.ol-tip b{color:var(--gold);margin-right:6px}

/* ---- Astra round (10-25): effects rank below the action, phone chrome declutter ---- */
/* the sky show dims while any dialog or the venue sheet is open; the countdown card is a background detail here */
body:has(dialog[open]) #world-fireworks,body:has(#venue-sheet:not([hidden])) #world-fireworks{opacity:.28;transition:opacity .3s}
body:has(dialog[open]) .world-backdrop,body:has(#venue-sheet:not([hidden])) .world-backdrop{filter:brightness(.78);transition:filter .3s}
.olympic-page .fireworks-ticket{transform:scale(.82);transform-origin:top right;opacity:.72}
.olympic-page .fireworks-ticket:hover,.olympic-page .fireworks-ticket:focus-visible{opacity:1}
/* touch: the hint goes away after the first move; big targets in the venue sheet */
@media (pointer:coarse){#world-canvas[data-moved]~.world-status{opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s}
 .ol-ev{min-height:56px}.ol-close{width:44px;height:44px}.ol-sheet-card{gap:12px}}
/* phones: keep find-event · medal table (icon) · recentre; the rest folds into the finder or the header menu */
@media (max-width:620px){.olympic-page .fireworks-ticket{display:none}.olympic-page .world-location{display:none}
 .olympic-page #overview,.olympic-page #motion-toggle{display:none}.olympic-page #boards-button .toolbar-text{display:none}
 .olympic-page .world-toolbar{gap:6px}.olympic-page .zoom-controls{bottom:150px}}
/* phones: the result card scrolls inside the overlay; the standings list is capped so the tip and actions stay reachable */
@media (max-width:760px){.is-ceremony .ol-result-card{max-height:min(62dvh,100%);overflow:auto;-webkit-overflow-scrolling:touch}.ol-result-card .ol-standings{max-height:30dvh;overflow:auto}.ol-tip{order:-1}}
/* result reveal: the card rises, the medal title stamps in with a sweep of light, the mark lands, the table fills row by row */
#result:not([hidden]) .ol-result-card{animation:card-rise .42s cubic-bezier(.2,.9,.3,1.2) both}
#result:not([hidden]) .ol-result-card h2{animation:title-stamp .55s .18s cubic-bezier(.2,1.4,.4,1) both}
#result:not([hidden]) .ol-result-card h2:is(.gold,.silver,.bronze){background:linear-gradient(100deg,currentColor 40%,#fff 50%,currentColor 60%) 200% 0/250% 100% no-repeat text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:title-stamp .55s .18s cubic-bezier(.2,1.4,.4,1) both,title-shine 1.6s .8s ease-in-out 2}
#result:not([hidden]) #result-mark{animation:mark-land .5s .36s cubic-bezier(.2,1.3,.4,1) both}
#result:not([hidden]) #standings li{animation:slide .32s both}
#result:not([hidden]) #standings li:nth-child(1){animation-delay:.5s}#result:not([hidden]) #standings li:nth-child(2){animation-delay:.56s}#result:not([hidden]) #standings li:nth-child(3){animation-delay:.62s}#result:not([hidden]) #standings li:nth-child(4){animation-delay:.68s}#result:not([hidden]) #standings li:nth-child(n+5){animation-delay:.74s}
@keyframes card-rise{from{opacity:0;transform:translateY(26px) scale(.97)}}
@keyframes title-stamp{from{opacity:0;transform:scale(1.7);letter-spacing:.12em}}
@keyframes title-shine{from{background-position:200% 0}to{background-position:-100% 0}}
@keyframes mark-land{from{opacity:0;transform:translateY(-10px) scale(1.25)}}

/* the finder: every event of a venue as a one-tap chip under its card */
.olympic-page .destination .ol-ev-chips{grid-column:2/-1;display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.olympic-page .ol-ev-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid #ffffff22;background:#ffffff0c;color:var(--ink,#f6f0ff);border-radius:999px;padding:7px 12px;font:700 13px/1.1 inherit;cursor:pointer}
.olympic-page .ol-ev-chip:hover,.olympic-page .ol-ev-chip:focus-visible{background:#ffcf4a26;border-color:#ffcf4a88;color:#ffe08a}
@media (max-width:620px){.olympic-page .destination .ol-ev-chips{grid-column:1/-1}.olympic-page .ol-ev-chip{padding:10px 13px;font-size:14px}}
/* the event chips replace the venue's "choose an event" button in the finder (the medal plaza keeps its button) */
.olympic-page #game-menu .destination:not(.medals) .ol-open-venue{display:none}

/* the way out to the Honeygames park: first in the toolbar (icon only on phones), last card in the finder */
.olympic-page #hub-button{color:#7ff0d4;font-weight:800}.olympic-page #hub-button>span[aria-hidden]{font-size:1.35em;line-height:1}
.destination.hub .destination-symbol{color:#7ff0d4;background:#7ff0d41c}
@media (max-width:620px){.olympic-page #hub-button .toolbar-text{display:none}}
