/* "Hear from Sabina" on the faithful-v2 /evaluate. A port of Codex's app/evaluate/ScriptedVoice.module.css
   (6b78cfa): same geometry, orb and phase rules; colours from this page's own tokens, because the player
   sits inside the dark "Recommended next step" panel. */
.sv{margin:1.75rem auto 0;max-width:760px;min-width:0;text-align:left}
.sv [hidden]{display:none!important}
.sv-stage{position:relative;aspect-ratio:16/9;width:min(100%,calc((100svh - 150px)*1.777778));margin-inline:auto;overflow:hidden;background:#efe6d4;border:1px solid var(--accent2);border-radius:.5rem .5rem 0 0;scroll-margin-top:24px}
.sv-film{display:block;width:100%;height:100%;object-fit:contain;opacity:1;transition:opacity .35s ease}
.sv-idle{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;margin:0;padding:1rem;text-align:center;font-family:var(--f-cut);font-size:1.05rem;color:var(--f700)}
.sv-stage-controls{position:absolute;z-index:2;left:12px;bottom:12px;display:flex;gap:6px}
.sv-stage-controls button{min-height:44px;min-width:44px;padding:.45rem .8rem;border:1px solid #d9c3a9;background:#1e1811e8;color:#f8f2e4;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;border-radius:.35rem}
.sv-stage-controls button:focus-visible{outline:2px solid #c87f4a;outline-offset:2px}
.sv-stage[data-visual-phase=report] .sv-film,.sv-stage[data-visual-phase=form] .sv-film{opacity:0}
.sv-orb{position:fixed;left:0;top:0;width:104px;aspect-ratio:1;opacity:0;pointer-events:none;z-index:90;--voice:0}
.sv-orb img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 12px #0005);transform:scale(calc(1 + .08 * var(--voice)))}
.sv-core{position:absolute;left:50%;top:50%;width:48%;height:48%;transform:translate(-50%,-50%) scale(calc(.88 + .24 * var(--voice)));border-radius:50%;background:radial-gradient(circle,rgba(255,235,170,.95) 0,rgba(255,142,35,.58) 44%,rgba(255,60,0,0) 76%);mix-blend-mode:screen;opacity:calc(.16 + .74 * var(--voice));pointer-events:none}
.sv-body{padding:clamp(1.1rem,3vw,1.7rem);border:1px solid rgba(255,255,255,.22);border-top:0;border-radius:0 0 .5rem .5rem;background:rgba(255,255,255,.05);color:rgba(255,255,255,.85)}
.sv-body h3{font-family:var(--f-cut);font-size:1.4rem;font-weight:600;color:#fff;margin:0 0 .4rem}
.sv-lede{font-size:.95rem;line-height:1.55;margin:0 0 1rem;max-width:72ch;color:rgba(255,255,255,.75)}
.sv-controls{display:flex;flex-wrap:wrap;gap:.6rem}
.sv-controls .btn{min-height:48px}
.sv-controls .sv-stop{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.45)}
.sv-caption{box-sizing:border-box;min-height:3.2em;margin:0;padding:.65rem 1rem;background:#1e1811;font-size:1rem;line-height:1.5;color:#fff;overflow-wrap:anywhere}
.sv-error{color:#ffb4a3}
.sv-transcript summary{cursor:pointer;min-height:44px;padding-block:.6rem;font-size:.92rem;color:var(--accent)}
.sv-transcript p{font-size:.92rem;line-height:1.6;max-width:75ch;color:rgba(255,255,255,.8)}
[data-walkthrough-report],[data-walkthrough-form]{scroll-margin-top:24px}
@media(max-width:700px){.sv-controls{width:100%}.sv-controls .btn{flex:1 1 auto}}
@media(max-width:700px) and (orientation:portrait){.sv-stage{aspect-ratio:9/16;width:min(100%,calc((100svh - 150px)*.5625))}}
@media(prefers-reduced-motion:reduce){.sv-film{transition:none}.sv-orb,.sv-orb img,.sv-core{transition:none!important}}
/* Round 2: the chat anchored to the orb (orb-chat.js). Fixed, above the orb in the bottom-right corner. */
.oc{position:fixed;z-index:95;right:16px;bottom:128px;max-height:min(70vh,560px);display:flex;flex-direction:column;background:#1e1811;color:#f8f2e4;border:1px solid #c87f4a;border-radius:.9rem;box-shadow:0 12px 32px rgba(0,0,0,.35);font-family:var(--f-read);overflow:hidden}
.oc[hidden]{display:none!important}
.oc-head{display:flex;justify-content:space-between;align-items:center;padding:.6rem .9rem;border-bottom:1px solid rgba(255,255,255,.12);font-family:var(--f-cut);letter-spacing:.06em;color:#c87f4a}
.oc-min{background:transparent;border:0;color:#f8f2e4;font-size:1.3rem;line-height:1;cursor:pointer;padding:0 .3rem}
.oc-log{padding:.8rem .9rem;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem}
.oc-msg{margin:0;padding:.55rem .75rem;border-radius:.6rem;font-size:.92rem;line-height:1.5;max-width:92%}
.oc-sabina{background:rgba(255,255,255,.08);align-self:flex-start}
.oc-visitor{background:#c87f4a;color:#1e1811;align-self:flex-end;font-size:.82rem}
.oc-msg[data-top-line]{font-family:var(--f-cut);font-size:1.05rem;color:#fff}
.oc-form{display:flex;gap:.4rem;padding:.6rem .9rem;border-top:1px solid rgba(255,255,255,.12)}
.oc-form[hidden],.oc-next[hidden]{display:none!important}
.oc-form input{flex:1;min-width:0;padding:.55rem .7rem;border-radius:.5rem;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.06);color:#fff;font:inherit;font-size:.9rem}
.oc-form .btn{padding:.55rem .9rem;font-size:.85rem}
.oc-next{margin:0 .9rem .8rem;padding:.55rem;background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;border-radius:.5rem;font:inherit;font-size:.85rem;cursor:pointer}
/* Round 2: the final screen's two choices. */
.nextbox .ctab .btn{min-height:52px}
.nextbox .ctab .btn.on{box-shadow:0 0 0 3px rgba(255,255,255,.6)}
.nextbox .btn-alt{background:transparent;color:#fff;border:2px solid var(--accent);border-bottom-width:4px}
.nextbox .pf{max-width:480px;margin:1.25rem auto 0;text-align:left;color:rgba(255,255,255,.85);font-size:.95rem;line-height:1.6}
.nextbox .pf label{display:block;color:#fff;font-weight:600;font-size:.85rem;margin:.6rem 0 .25rem}
.nextbox .pf input{width:100%;padding:.6rem .8rem;border-radius:.5rem;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.07);color:#fff;font:inherit}
.nextbox .pf .btn{margin-top:1rem;width:100%}
.nextbox .pf [data-proposal-done]{color:#fff;font-weight:600}
@media(max-width:700px){.oc{left:12px;right:12px!important;width:auto!important;bottom:92px;max-height:58vh}}
/* Eval 4 (item 12): docked in the page (booking area on screen, or a small screen): part of the flow, never over a control. */
.oc[data-docked]{position:static;width:auto!important;max-height:none;margin:1.25rem auto 0;max-width:560px;left:auto;right:auto!important;bottom:auto}
.oc[data-docked] .oc-log{max-height:340px}
.oc-note{margin:0 .9rem .7rem;font-size:.72rem;color:rgba(248,242,228,.6);line-height:1.4}
/* Managed walkthrough: readable guidance, immediate press feedback and visible focus. */
.sv[data-managed-walkthrough]{padding:clamp(1.1rem,3vw,1.75rem);border:1px solid #ffffff40;background:#211c16;color:#f4eee3}
.sv[data-managed-walkthrough] h3{font-family:var(--f-cut);font-size:clamp(1.25rem,3vw,1.6rem);font-weight:600;letter-spacing:-.015em;line-height:1.2;margin:0 0 1rem}
.sv[data-managed-walkthrough] p{max-width:66ch;font-size:1rem;letter-spacing:0;line-height:1.65;margin:0 0 1rem}
.sv[data-managed-walkthrough] button{min-height:44px;touch-action:manipulation}
.sv[data-managed-walkthrough] button:active{filter:brightness(.85)}
.sv[data-managed-walkthrough] button:focus-visible{outline:3px solid #edbc80;outline-offset:4px}
@media(prefers-contrast:more){.sv[data-managed-walkthrough]{border:2px solid currentColor}}
@media(prefers-reduced-transparency:reduce){.sv[data-managed-walkthrough]{background:#211c16}}
