/* P1 presentation only. Values come from web/design tokens and component scale. */
body.design-v2290 #stage .top {top:0;left:0;right:0;height:var(--fb-control-lg)!important;padding:0 var(--fb-space-4)!important;background:var(--fb-surface-1);border-bottom:1px solid var(--fb-line);gap:var(--fb-space-3)}
body.design-v2290 #stage #flow {position:absolute!important;top:var(--fb-control-lg)!important;left:0!important;right:0!important;width:100%!important;height:var(--fb-control-lg)!important;transform:none!important;translate:none!important;border:0!important;border-bottom:1px solid var(--fb-line)!important;border-radius:0!important;background:var(--fb-surface-1)!important;overflow:visible}
body.design-v2290 #stage .sx-bar {max-width:var(--fb-page-max);margin:auto;height:var(--fb-control-lg);padding:var(--fb-space-2) var(--fb-space-4);gap:var(--fb-space-3)}
body.design-v2290 #stage .sx-steps li {height:var(--fb-control-sm);padding:0 var(--fb-space-3);align-items:center;line-height:20px;font-size:14px;transform:none}
body.design-v2290 #stage .sx-steps .current .sx-check {color:currentColor}
body.design-v2290 #stage .sx-check {font:400 12px/16px var(--font-latin);display:inline-flex;align-items:center}
body.design-v2290 #stage #cast {top:var(--fb-space-24)!important;max-width:var(--fb-page-max);margin:0 auto!important;padding-top:var(--fb-space-6)!important}
body.design-v2290 #stage #shot {left:max(0px,calc((100% - var(--fb-page-max)) / 2))!important;right:auto!important;width:min(100%,var(--fb-page-max))!important;transform:none!important;top:var(--p1-scene-top)!important;bottom:calc(var(--dock) + var(--bottom))!important}
body.design-v2290 #stage #lead {--cx:.72!important}
body.design-v2290 #stage #foil {--cx:.28!important}
body.design-v2290:not(.den) #stage #sub {left:var(--p1-caption-x)!important;top:auto!important;bottom:var(--layout-caption-bottom)!important;transform:none!important;width:var(--p1-caption-w)!important}
body.design-v2290:not(.den) #stage #think {left:var(--p1-thought-x)!important;top:var(--p1-thought-y)!important;width:var(--p1-thought-w)!important;max-width:none!important;bottom:auto!important;position:fixed!important;border-style:dashed!important;padding:var(--fb-space-3) var(--fb-space-4)!important}
body.design-v2290:not(.den) #stage #think-text {font:400 15px/25px var(--font-body)!important;max-height:var(--p1-thought-h)!important}
body.design-v2290:not(.den) #stage #think::after {content:""!important;display:block;position:absolute;left:var(--p1-tail-x);top:var(--p1-tail-y);width:var(--fb-space-3);height:var(--fb-space-3);border:1px solid var(--fb-line-strong);border-top:0;border-left:0;background:var(--fb-surface-1);transform:translate(-50%,-50%) rotate(var(--p1-tail-angle))}
body.design-v2290 #stage .bg img {inset:0;width:100%;height:100%;animation:none!important;transform:none!important;transition:opacity var(--fb-dur-hop) var(--fb-ease-out);will-change:auto}
body.design-v2290.night:not(.p1-night-ready) #bg-day {opacity:1}
body.design-v2290.night:not(.p1-night-ready) #bg-night {opacity:0}
body.design-v2290.thinking .bg::after {content:none}
body.design-v2290 #stage .dust {display:none}
body.design-v2290 #stage #howto-card,body.design-v2290 #stage #scene-log-panel {position:fixed!important;inset:var(--fb-space-24) var(--fb-space-4) auto auto!important;transform:none!important;width:min(calc(100% - var(--fb-space-8)),calc(var(--fb-page-max) / 2))!important;max-width:none!important;max-height:calc(100% - var(--fb-space-24) - var(--fb-space-4))!important;padding:var(--fb-space-6)!important;overflow:auto;font:400 15px/25px var(--font-body)!important;z-index:222}
body.design-v2290 #stage #howto-card>b,body.design-v2290 #stage #scene-log-panel header {font:400 28px/34px var(--font-display);color:var(--fb-ink);margin-bottom:var(--fb-space-4)}
body.design-v2290 #stage #howto-card .cards {gap:var(--fb-space-3);grid-template-columns:repeat(2,minmax(0,1fr));margin:var(--fb-space-4) 0}
body.design-v2290 #stage #howto-card .cards li {padding:var(--fb-space-3) var(--fb-space-3) var(--fb-space-3) 58px;font:400 13px/20px var(--font-body);border:1px solid var(--fb-line);border-radius:var(--fb-radius-md)}
body.design-v2290 #stage #howto-card .cards li b {font:700 14px/20px var(--font-body)}
body.design-v2290 #stage #howto-card .cards li i {left:var(--fb-space-3);top:var(--fb-space-3)}  /* 身份图标占左边 34px 那格（style.css 的原排法），字从 58px 起，不再压字 */
body.design-v2290 #stage #scene-log-panel section {padding:var(--fb-space-4);margin-bottom:var(--fb-space-3);background:var(--fb-surface-2);border:1px solid var(--fb-line);border-radius:var(--fb-radius-md)}
body.design-v2290 #stage #scene-log-panel p {font:400 14px/20px var(--font-body);color:var(--fb-ink-2)}
body.design-v2290 #board-panel.sx-panel {max-width:var(--fb-page-max);border-radius:var(--fb-radius-lg)}
body.design-v2290 .sx-table th,body.design-v2290 .sx-table td {font:400 13px/20px var(--font-body);padding:var(--fb-space-3);border-color:var(--fb-line)}
body.design-v2290 .sx-table th {font-weight:700;color:var(--fb-ink-3)}
body.design-v2290 .sx-metric>b {font:400 32px/36px var(--font-latin)}
body.design-v2290 .sx-summary {gap:var(--fb-space-3)}
.p1-menu-toggle,.p1-phase-toggle {display:none}
@media(max-width:899px),(max-height:600px) {
 body.design-v2290 #stage .top {padding:0 var(--fb-space-2)!important;gap:var(--fb-space-2)}
 body.design-v2290 #stage #flow .sx-bar {padding:var(--fb-space-2);justify-content:space-between}
 body.design-v2290 #stage .sx-steps {display:none}
 body.design-v2290 #stage .sx-steps.p1-open {display:flex;position:absolute;top:100%;left:var(--fb-space-2);flex-direction:column;align-items:stretch;padding:var(--fb-space-2);background:var(--fb-surface-1);border:1px solid var(--fb-line);border-radius:var(--fb-radius-md);overflow:visible;box-shadow:var(--fb-shadow-pop)}
 body.design-v2290 #stage .sx-steps.p1-open li {display:flex!important}
 body.design-v2290 #stage #program-tools.sx-actions {display:none!important}
 body.design-v2290 #stage #program-tools.sx-actions.p1-open {display:flex!important;position:absolute!important;top:100%;right:var(--fb-space-2);padding:var(--fb-space-2)!important;background:var(--fb-surface-1)!important;border:1px solid var(--fb-line)!important;box-shadow:var(--fb-shadow-pop)!important;border-radius:var(--fb-radius-md)}
 .p1-menu-toggle,.p1-phase-toggle {display:block;height:var(--fb-control-sm);padding:0 var(--fb-space-3);border:1px solid var(--fb-line);border-radius:var(--fb-radius-sm);background:var(--fb-surface-2);font:500 14px/20px var(--font-body);color:var(--fb-ink)}
 body.design-v2290 #stage #cast {padding-top:var(--fb-space-5)!important}
 body.design-v2290 #stage #howto-card,body.design-v2290 #stage #scene-log-panel {padding:var(--fb-space-4)!important;inset:var(--fb-space-24) var(--fb-space-2) auto!important;width:calc(100% - var(--fb-space-4))!important}
}
@media(max-width:599px) and (orientation:portrait) {
 body.design-v2290 #stage #lead {--cx:.62!important}
 body.design-v2290:not(.den) #stage #think {border-radius:var(--fb-radius-lg)!important}
 body.design-v2290:not(.den) #stage #think-text {font:500 17px/28px var(--font-body)!important}
 body.design-v2290:not(.den) #stage #think::after {content:none!important}
 body.design-v2290:not(.den) #stage #think small {font:500 14px/20px var(--font-body);color:var(--fb-gold)}
}
@media(prefers-reduced-motion:reduce) {body.design-v2290 #stage .bg img{transition:none}}
/* Board.html component geometry, shared by the existing read-only data renderer. */
body.design-v2290 .sx-header {padding:var(--fb-space-4) var(--fb-space-6);border-color:var(--fb-line)}
body.design-v2290 .sx-body {padding:var(--fb-space-6)}
body.design-v2290 .sx-workspace {gap:var(--fb-space-6)}
body.design-v2290 .sx-metric {min-height:var(--fb-space-16);padding:var(--fb-space-3) var(--fb-space-5)}
body.design-v2290 .sx-metric>span {font:400 13px/20px var(--font-body)}
@media(max-width:599px),(max-height:600px){body.design-v2290 .sx-header,body.design-v2290 .sx-body {padding:var(--fb-space-3)}body.design-v2290 .sx-workspace {gap:var(--fb-space-4)}}
/* During the existing thought beat, Speech's thought card owns the text space.
   The spoken sentence returns unchanged on the next say beat. */
body.design-v2290.thinking:not(.den) #stage #sub {visibility:hidden}

@media(min-height:601px){body.design-v2290 #stage #lead{position:absolute!important;left:0!important;top:0!important;width:100%!important;height:100%!important;transform:none!important}}
body.design-v2290 #stage #flow {pointer-events:auto}
body.design-v2290 #stage .bg {pointer-events:none}
body.design-v2290 .sx-metric>b.is-name {font:400 28px/34px var(--font-display)}
@media(max-width:599px){body.design-v2290 .sx-metric {min-width:0;padding:var(--fb-space-3)}body.design-v2290 .sx-metric>b.is-name {font:400 20px/26px var(--font-display)}}

/* Beat controls keep an explicit, keyboard-accessible person shortcut. */
body.design-v2290 .dock #next-person {flex:none;min-height:var(--fb-touch);padding-inline:var(--fb-space-2)}
body.design-v2290 .dock #play {flex:none;min-width:var(--fb-touch);min-height:var(--fb-touch)}
