:root{background:#f5f0e6;color:#362643;--ink:#362643;--lime:#ffcf65;--muted:#776479}header{border-color:#dfd4c9}.brand span{color:#895bcb}.intro{padding:29px 0 24px}.intro h1{font-size:clamp(34px,3.6vw,51px);margin:14px 0 12px}.intro h1 em{color:#8252b9}.intro p{margin:0}.intro-stamp{width:126px;height:126px;background:#e6d3fc;border:2px solid #553c68;font-size:18px}.workspace{grid-template-columns:282px minmax(0,1fr);gap:22px}.setup{padding:20px;border:2px solid #e6dccd;background:#fffcf7;box-shadow:0 4px 0 #e7ddcf;border-radius:23px}.philosopher{border:2px solid #eee6dd;background:#fffcf7}.philosopher[aria-pressed=true]{border-color:#9a74bc;background:#f1e7ff}.mini-portrait{width:46px;height:56px;background:#eadcf6}.mini-portrait img{width:100%;height:100%;object-fit:cover;object-position:top;transform:scale(1.8);transform-origin:50% 13%}.primary{background:#ffd477;box-shadow:0 3px 0 #bd873e;border:1px solid #c38d43;color:#432b33;min-height:44px}.quiet{min-height:42px}.arena{border:3px solid #69517f;border-radius:24px;background:#fdf9f1;box-shadow:0 7px 0 #d4c4d8;color:#39284c}.arena-top{padding:17px 24px 9px}.arena-top .eyebrow{color:#765c87}.pill{background:#eee2fa;color:#725097;font-size:9px}.arena>h2{padding:8px 28px 17px;min-height:auto;font-size:clamp(22px,2.2vw,30px);max-width:760px;line-height:1.25;letter-spacing:-.7px}.arena-scene{height:560px;min-height:0;background:#dcbf94 url('arena-v2.png') center center/cover no-repeat;isolation:isolate;border-top:2px solid #d9c7b3;border-bottom:2px solid #b99c80}.arena-scene:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,#39264240,transparent 22%,transparent 85%,#48305f20);z-index:-1}.world-label{position:absolute;top:14px;left:16px;border:1px solid #765c87;background:#fff9e9ed;border-radius:20px;padding:8px 12px;font-size:10px;letter-spacing:.7px;font-weight:800;box-shadow:0 3px 0 #51375522}.world-label span{color:#8a7695;font-size:8px;margin-left:15px}.speech-bubble{position:absolute;z-index:5;top:68px;left:50%;transform:translateX(-50%);width:min(380px,88%);border:2px solid #5a3d73;border-radius:23px;background:#fffdf6;padding:15px 20px;box-shadow:0 5px 0 #4e31512b;text-align:left}.speech-bubble:after{content:'';position:absolute;bottom:-13px;left:var(--tail,50%);width:22px;height:22px;background:#fffdf6;border-bottom:2px solid #5a3d73;border-right:2px solid #5a3d73;transform:rotate(45deg)}.speech-bubble strong{display:block;font-size:12px;color:#8455ad}.speech-bubble p{font-size:14px;font-weight:550;line-height:1.55;margin:5px 0 0;position:relative;z-index:1}.speech-bubble[data-actor=spinoza]{border-color:#8158ad}.speech-bubble[data-actor=kant]{border-color:#397d7d}.speech-bubble[data-actor=rousseau]{border-color:#a9693b}#fighters{position:absolute;bottom:29px;left:7%;right:7%;padding:0;gap:3%;display:flex;justify-content:space-around;align-items:end;z-index:3}.fighter{position:relative;width:30%;max-width:215px;min-width:0;flex:1;transition:filter .2s,transform .2s}.fighter .portrait{height:235px;padding:0;border:0;background:transparent;width:100%;color:inherit;position:relative;cursor:pointer;display:block}.fighter .portrait:before{content:'';position:absolute;bottom:-4px;left:15%;width:70%;height:19px;border-radius:50%;background:#46315340;box-shadow:none}.fighter img{position:relative;display:block;height:100%;width:100%;object-fit:contain;filter:drop-shadow(2px 3px 0 #41264144)}.fighter h3{color:#3c2d4c;background:#fff5dd;border:2px solid #72546c;border-radius:12px;padding:6px 11px;font-size:14px;display:inline-block;margin:5px 0 0;box-shadow:0 3px 0 #51375533}.fighter small{display:none}.fighter .tag{display:block;font-size:9px;color:#fffdf0;background:#45314d;border:0;margin:5px auto 0;padding:5px 8px;max-width:155px}.fighter.is-active .portrait:before{background:#ffdb66aa;box-shadow:0 0 0 4px #fff1b370,0 0 25px 8px #fff29caa}.fighter.is-active h3{background:#ffdd87;border-color:#855b3c}.fighter.is-active{transform:none}.arena:has(.fighter:nth-child(3)) .portrait:before{width:70%;height:19px}.fighter:focus-within{outline:2px solid #8354b3;border-radius:16px}.speaking-badge{display:none;position:absolute;right:10%;top:43%;color:#fff;background:#7752a0;padding:5px 8px;border-radius:20px;font-size:12px;z-index:4}.fighter.is-speaking .speaking-badge{display:block}.game-controls{padding:17px 23px 15px}.speaker-status{font-size:11px;display:flex;gap:8px;align-items:center;min-height:22px;line-height:1.5}.sound-dot{width:7px;height:7px;flex-shrink:0;border-radius:50%;background:#a88eac}.game-controls:has(#listen[aria-pressed=true]) .sound-dot{background:#387e68}.control-buttons{display:flex;gap:8px;flex-wrap:wrap;margin:9px 0 12px}.control-buttons .primary{font-size:11px;padding:11px 14px}.control-buttons .quiet{font-size:10px;padding:9px 13px;border:1px solid #d7c9dc;background:#f6edf8}.turn-control{display:flex;align-items:center;justify-content:space-between;gap:10px}.turn-control .quiet{font-size:11px;border-color:#ad92bd}.turn-control span{font-size:10px;color:#795f86}.arena-bottom{padding:13px 23px;background:#eee5f1;color:#6f577b;border-color:#dfd1e6;font-size:9px}.arena-bottom .dot{background:#885bab}#discussion{background:#fffaf3;border-top:2px dashed #decce5}.discussion-heading span{color:#8456a6}.demo-label,#discussion>.hint{color:#786581}.message{color:#3b3040;background:#f4edf6;border-color:#e4d6e8;border-left-color:var(--accent)}.message strong{color:#624179}.message.user{background:#fff0ce}.message .replay{float:right;font-size:10px;padding:5px 9px;border:1px solid #ceb9d5;border-radius:15px;background:white;color:#654978;min-height:32px}.message p{clear:both;padding-top:5px}.actions .quiet{border-color:#bfa7cd}#intervention select{background:#fffdf7;border-color:#d7c5df;color:#44334e}textarea{background:#fffdf7;color:#44334e;border-color:#d7c5df}textarea::placeholder{color:#918096}.composer-footer span{color:#796781}.quick-actions button{background:#efe3ff;color:#69458d;border:1px solid #c5abd7;border-radius:9px;box-shadow:0 3px 0 #d9c5e8;font-size:12px;min-height:43px}.feature-strip{padding-top:30px}.feature-strip h3{color:#44334e}.feature-strip>div>span{color:#8b58b5}dialog{background:#fffaf2}dialog h3{font-size:16px}.voice-card{background:#f3eaf7;border-radius:15px;padding:15px;margin:12px 0;border:1px solid #dcc8e8}.voice-card header{padding:0;border:0;gap:14px}.voice-card header img{height:80px;width:65px;object-fit:contain}.voice-card h3{margin:0}.voice-card label{margin-top:12px}.voice-card p{margin:5px 0;font-size:11px}.voice-card .voice-test{margin-top:10px}.voice-info{font-size:12px;color:#795f86}.world-card{border:2px dashed #d8c4e5;border-radius:14px;padding:15px;margin-top:12px}.world-card span{font-size:11px;color:#86658f}.game-controls button:disabled{box-shadow:none}.empty-stage{position:absolute;top:45%;left:15%;right:15%;background:#fffdf0;padding:20px;border-radius:16px;text-align:center}@media(prefers-reduced-motion:no-preference){.fighter.is-speaking img{animation:none}.speech-bubble{animation:bubble .25s ease-out}@keyframes talk{0%,100%{transform:translateY(0) rotate(-.6deg)}50%{transform:translateY(-3px) rotate(.6deg)}}@keyframes bubble{from{opacity:0}to{opacity:1}}}@media(max-width:1000px){.workspace{grid-template-columns:250px minmax(0,1fr);gap:16px}.setup{padding:16px}.arena-scene{height:490px}.fighter .portrait{height:210px}.fighter .tag{font-size:8px}.speech-bubble{width:85%;top:64px;padding:13px 16px}.speech-bubble p{font-size:12px}.fighter h3{font-size:12px}.game-controls{padding:14px}.control-buttons{gap:6px}.turn-control{flex-wrap:wrap}}@media(max-width:680px){.workspace{grid-template-columns:1fr}.intro{padding:25px 3px 22px}.intro h1{font-size:37px}.arena{border-width:2px}.setup{padding:21px}.arena-top{padding:15px 16px 6px}.arena>h2{font-size:23px;padding:8px 17px 15px}.arena-scene{height:465px;background-size:auto 100%}.world-label{left:12px;top:12px;font-size:8px}.speech-bubble{top:58px;width:88%;padding:13px 15px}.speech-bubble p{font-size:12px;line-height:1.55}.speech-bubble strong{font-size:11px}#fighters{left:3%;right:3%;bottom:25px;gap:0}.fighter .portrait{height:190px}.fighter h3{font-size:11px;padding:5px 8px}.fighter .tag{font-size:7px;padding:5px 3px}.arena:has(.fighter:nth-child(3)) .fighter h3{font-size:11px}.control-buttons{display:grid;grid-template-columns:1fr 1fr}.control-buttons #voice-settings{grid-column:1/-1}.control-buttons .primary{justify-content:center}.game-controls{padding:14px}.turn-control{gap:7px}.turn-control span{font-size:9px}.arena-bottom{padding:12px 14px}.voice-card select{font-size:11px}footer{gap:10px}footer .quiet{margin-left:0}.feature-strip{padding-top:25px}}@media(max-width:360px){.arena-scene{height:480px}.fighter .portrait{height:175px}.fighter h3{padding:5px}.speech-bubble{width:92%}.control-buttons .primary{font-size:10px}}
/* Continuous theatre: one speaker in the light, the others listening. */
.control-buttons{flex-wrap:wrap}#continuous{flex:1 1 100%;justify-content:center;background:#7550a0;color:#fff;border-color:#58387d;box-shadow:0 3px 0 #44305b}.fighter:not(.is-active) img{filter:drop-shadow(2px 3px 0 #41264144) saturate(.74)}.fighter.is-active .portrait:before{background:#ffeab599;box-shadow:0 0 25px 12px #fff0bb55}.fighter.is-active h3{background:#ffe5a5}.speech-bubble{width:min(490px,88%)}.arena-scene{transition:min-height .25s ease}.fighter{transform-origin:bottom center}.fighter.is-active{transform:none}@media(max-width:680px){.speech-bubble{width:88%}#continuous{grid-column:1/-1}.arena-scene{height:540px}}@media(prefers-reduced-motion:reduce){.arena-scene,.fighter{transition:none}.fighter.is-active{transform:none}}

/* The speaker approaches the audience; the listeners remain upstage.
   Transform the portrait only so labels and the stage layout stay still. */
.fighter{z-index:1;transform:none;transition:none}
.fighter.is-active{z-index:2;transform:none}
.fighter .portrait{transform-origin:50% 100%;transform:translateY(-14px) scale(.82);transition:transform 850ms cubic-bezier(.22,.61,.36,1)}
.fighter.is-active .portrait{transform:translateY(2px) scale(1.16)}
.fighter img{animation:none;transition:filter 850ms ease}
.fighter:not(.is-active) img{filter:drop-shadow(2px 3px 0 #41264144) saturate(.72) brightness(.88)}
.fighter.is-active img{filter:drop-shadow(3px 6px 3px #41264155) saturate(1.08) brightness(1.03)}
@media(prefers-reduced-motion:reduce){.fighter .portrait,.fighter.is-active .portrait{transform:none;transition:none}.fighter img{transition:none}}
