/* Public shell and shared controls. Page-specific layouts live with their page. */
*{box-sizing:border-box}[hidden]{display:none!important}
body{margin:0;background:radial-gradient(ellipse at 5% 0,#e0edf0,transparent 45%),var(--lp-canvas);color:var(--lp-ink);font-family:system-ui,-apple-system,"PingFang SC",sans-serif;font-size:16px;line-height:1.6}
a{color:var(--lp-primary);text-underline-offset:4px}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button,input:not([type=radio]):not([type=checkbox]),select,summary,.outline-button,.solid-button,.text-button,.subtle-button,.icon-button{min-height:44px}button{min-width:44px;cursor:pointer}button,input,select{border-radius:var(--lp-control-radius)}input,select{max-width:100%;padding:10px 12px;border:1px solid var(--lp-border);background:var(--lp-surface);color:var(--lp-ink)}button:disabled{cursor:not-allowed;opacity:.55;box-shadow:none}button:not(:disabled):active{transform:translateY(1px)}:focus-visible{outline:3px solid var(--lp-primary);outline-offset:3px}.solid-button,.mode-card.primary{background:var(--lp-primary);color:#fff}.fire-button{background:var(--lp-orange);color:#fff}.outline-button{background:var(--lp-surface);color:var(--lp-primary);border:1px solid var(--lp-border)}.eyebrow,.fine-print,.muted,.roster-note,.player-pick small,.home-note,.replay-note,.rule-strip p{font-size:14px;line-height:1.6}.local-badge,.match-state{font-size:12px}.lp-nav{max-width:1180px;margin:0 auto;padding:16px 12px;display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--lp-border)}.lp-brand{font-weight:850;white-space:nowrap;text-decoration:none}.lp-nav-links{display:flex;gap:8px;flex-wrap:wrap}.lp-nav-links a{display:flex;align-items:center;min-height:44px;padding:8px 16px;border-radius:10px;text-decoration:none;font-weight:650}.lp-nav a[aria-current=page]{background:var(--lp-primary);color:#fff}.lp-avatar{width:110px;height:70px;flex:none}.lp-nav .lp-avatar{width:70px;height:44px}.lp-nav-brand{display:flex;align-items:center;gap:8px}.lp-copy{display:inline-flex;gap:8px;align-items:center;max-width:100%;flex-wrap:wrap}.lp-copy code{overflow-wrap:anywhere;font-size:13px}.lp-copy button{background:transparent;border:1px solid var(--lp-border);padding:6px 12px;color:inherit}.lp-page-identity{display:flex;align-items:center;gap:16px;margin:0 0 16px}.lp-page-identity span{font-size:14px;color:var(--lp-muted)}
.home-view{margin:24px auto;max-width:1180px;border-radius:var(--lp-card-radius)}.home-view h1{font-size:40px;letter-spacing:-.04em}.home-view .lede{font-size:16px}.home-view>nav,.workbench-header>.back-link,.workbench-header>.tour-link,.tournament-header>.back-link,.rehearsal-shell>nav{display:none}.start-options{margin-bottom:20px}.mode-card .card-icon{display:none}.mode-card{min-height:100px}.player-pick .lp-avatar{grid-row:1/3;width:100px;height:64px}.player-pick{grid-template-columns:100px auto minmax(0,1fr)}.player-pick small{grid-column:3}.power-row{gap:6px}.power-row button{height:44px;color:var(--lp-ink);font-size:14px;background:var(--lp-blue-soft)}.power-row button.selected,.choice-row button.selected{background:var(--lp-primary);color:#fff}.turn-pill,.battle-hud span{font-size:14px}.hud-chip,.wind-station-kicker,.wind-station span:last-child{font-size:12px}.wind-station{max-width:220px}.replay-playback{margin:12px 18px;padding:16px;border:1px solid var(--lp-instrument-border);border-radius:18px;background:var(--lp-instrument);color:var(--lp-instrument-text)}.replay-playback .replay-verification{color:var(--lp-instrument-muted)}.replay-playback-heading{display:flex;justify-content:space-between;gap:12px}.replay-playback-actions{display:flex;flex-wrap:wrap;gap:8px}.replay-scrubber input{flex:1;min-width:70px}.topbar #replay-state{font-size:12px;white-space:nowrap}.controls{scroll-margin-top:20px}.controls h2{font-size:14px}#tutorial-dialog{position:relative;inset:auto;width:calc(100% - 36px);max-width:none;margin:12px 18px;padding:20px;border:2px solid var(--lp-gold);border-radius:18px;background:var(--lp-soft);box-shadow:var(--lp-shadow)}#tutorial-dialog h2{font-size:20px}#tutorial-dialog .dialog-close{position:absolute;right:12px;top:12px}#tutorial-dialog p{margin:4px 48px 12px 0}.rule-strip summary{font-size:14px}.memory-panel[data-completed=true]{border:2px solid var(--lp-success)}
.tournament-header>div{min-width:0;flex:1 1 260px}.tournament-header{flex-wrap:wrap}.tournament-header h1{font-size:40px}.season,.board-grid,.board-card,.match,.season-heading>div{min-width:0}.matches{grid-template-columns:repeat(auto-fill,minmax(min(100%,310px),1fr))}.artifact-actions{flex-wrap:wrap}.artifact-actions a{display:inline-flex;align-items:center;padding:8px 12px;border-radius:10px;background:var(--lp-primary);color:white;text-decoration:none}.protocol .hash,.roster span{font-size:13px}.match-head span{font-size:14px}.match-players{font-size:16px;font-weight:700}.roster li{position:relative}.roster li .lp-avatar{float:left}.tournament-shell,.workbench-shell,.rehearsal-shell{width:min(1180px,calc(100% - 32px))}.tournament-intro,.empty-card,.board-card,.protocol{background:var(--lp-surface);border-color:var(--lp-border);border-radius:18px}.match-head .match-state{font-size:12px!important}
@media(max-width:760px){.lp-nav{align-items:flex-start;gap:8px;flex-direction:column}.lp-nav-links{width:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.lp-nav-links a{justify-content:center;padding:6px 4px;font-size:14px}.home-view{margin:12px auto;padding:24px 16px}.home-view h1,.tournament-header h1{font-size:30px}.mode-cards{display:grid;grid-template-columns:1fr;gap:10px}.mode-card{min-height:76px;padding:12px 16px;display:grid;grid-template-columns:1fr;text-align:left}.mode-card strong{font-size:18px}.mode-card small{font-size:14px}.player-pick{grid-template-columns:70px auto minmax(0,1fr);padding:10px}.player-pick .lp-avatar{width:70px}.player-pick small{grid-column:2/4}.topbar{flex-wrap:wrap;gap:8px}.turn-pill{order:5;width:100%;justify-content:center;white-space:normal;font-size:14px}.battle-hud span{font-size:14px}.hud-chip{font-size:12px}.wind-station{top:100px}.controls{padding:14px;gap:12px;grid-template-columns:1fr}.choice-row button{flex:1;min-height:44px}.power-row{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:3px}.power-row button{min-width:0;min-height:44px}.status-banner{font-size:14px}.season-picker{width:100%}.season-picker select{width:100%;max-width:none}.season-heading h2{font-size:24px}.tournament-header>div{flex-basis:100%}.replay-playback{margin:12px;padding:12px}#tutorial-dialog{width:calc(100% - 24px);margin:12px}.battle-panel{min-height:420px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important}}
/* The dashboard is a sibling of the stage, never a battlefield sidebar. */
.play-deck{display:block}.battle-stage{width:100%;min-width:0}.topbar{display:flex;flex-wrap:wrap}.topbar .subtle-button{white-space:nowrap}.replay-playback-heading strong,.replay-playback-heading span{color:var(--lp-instrument-text)}
@media(max-width:760px){.topbar .brand{flex:1}.topbar .turn-pill{flex-basis:100%}.power-row button{padding:0}.battle-hud{max-width:44%}}
@media(max-width:760px){.power-row{grid-template-columns:repeat(4,minmax(44px,1fr));gap:8px}.power-row button{width:100%;min-width:44px}}
.game-view{overflow:clip}.dashboard-timeline{flex-wrap:nowrap;overflow-x:auto}.dashboard-timeline>*{flex-shrink:0}.dashboard-timeline strong{position:sticky;left:0;background:var(--lp-instrument);padding:8px 4px}
/* Demo scope is driven by the server config, never by a user URL parameter. */
[data-demo-only]{display:none}
html[data-demo="true"] [data-demo-only]{display:block}
html[data-demo="true"] a:is([href="/workbench.html"],[href="/rehearsal.html"],[href="/tournament.html"]),html[data-demo="true"] .home-view>nav,html[data-demo="true"] [data-start-mode="memory"]{display:none!important}
html[data-demo="true"] .home-note:has(.home-tournament-link){display:none}
html[data-demo="true"] .mode-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
.language-switcher{display:flex;align-items:center;gap:8px;font-size:14px;flex-shrink:0}
.language-switcher select{min-height:44px;max-width:145px;padding:6px 10px}
.lp-nav{flex-wrap:wrap}.lp-nav-links{flex-wrap:wrap}.lp-nav-brand{white-space:nowrap}
.demo-disclosure{padding:16px 20px;border-left:4px solid var(--lp-gold);background:var(--lp-soft);border-radius:8px;font-size:15px;line-height:1.6}
.demo-rules{color:var(--lp-muted);font-size:14px}
.replay-gallery{text-align:left;margin-top:32px;border-top:1px solid var(--lp-border);padding-top:24px}
.replay-gallery h2{margin:0}.replay-gallery>p{max-width:76ch}
.replay-gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:14px}
.gallery-card{min-width:0;padding:18px;background:var(--lp-surface);border:1px solid var(--lp-border);border-radius:16px}
.gallery-card h3{font-size:17px;margin:0 0 8px}.gallery-card p{font-size:14px;margin:0 0 12px}
.gallery-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.gallery-actions a{min-height:44px;display:inline-flex;align-items:center}
.home-view,.mode-card,.player-pick,.dashboard-heading,.cockpit-heading{overflow-wrap:anywhere}
html:not([lang="zh-CN"]) .mode-card strong{font-size:23px}
@media(max-width:760px){html[data-demo="true"] .mode-cards{grid-template-columns:1fr}.language-switcher{align-self:flex-end}.lp-nav-links{display:flex}.replay-gallery-grid{grid-template-columns:1fr}html:not([lang="zh-CN"]) .mode-card strong{font-size:19px}}
