:root{--bg:#07131f;--ink:#f1f5ee;--muted:#aebfc7;--cyan:#71e1da;--acid:#e5ef93;--line:#304652;--panel:#10212e;--pink:#e4a6b8}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:18px/1.55 'Avenir Next','PingFang SC','Microsoft YaHei',sans-serif}body:before{content:'';position:fixed;inset:0;z-index:-1;background:radial-gradient(ellipse at 85% 20%,#18444e60,transparent 60%)}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:6px;padding:10px 17px;cursor:pointer}button:hover{border-color:var(--cyan);background:#71e1da15}button:disabled{opacity:.35;cursor:default}.primary{background:var(--cyan);border-color:var(--cyan);color:var(--bg);font-weight:700}.primary:hover{background:#adf5e9;color:var(--bg)}a{color:var(--cyan);text-underline-offset:5px}header{display:flex;align-items:center;gap:20px;padding:22px 4vw;border-bottom:1px solid var(--line);min-height:83px}.brand{color:var(--ink);font-size:22px;font-weight:800;letter-spacing:.14em;text-decoration:none;line-height:1.2}.brand span{display:block;color:var(--muted);font:10px/1.8 'Avenir Next',sans-serif;letter-spacing:.12em}#status{margin-left:auto;font-size:14px;color:var(--cyan)}main{max-width:1600px;margin:0 auto;padding:38px 5vw 100px;min-height:calc(100vh - 165px)}h1{font-size:clamp(38px,4.5vw,78px);letter-spacing:-.045em;line-height:1.13;font-weight:650;margin:16px 0 24px}h2{font-size:clamp(25px,2.5vw,38px);line-height:1.3;margin:12px 0 18px}h3{font-size:22px;margin:8px 0 12px}p{margin:12px 0;color:var(--muted)}.eyebrow{color:var(--cyan);font:600 13px/1.5 'Avenir Next',sans-serif;letter-spacing:.14em;text-transform:uppercase}.lead{font-size:clamp(20px,2vw,28px);max-width:900px;line-height:1.65}.split{display:grid;grid-template-columns:1.5fr 1fr;gap:5vw;align-items:center}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.card{border:1px solid var(--line);border-radius:10px;padding:24px;background:var(--panel)}.card strong{color:var(--ink)}.step{font-size:50px;color:var(--cyan);line-height:1.2;font-weight:500}.card p{font-size:18px}.accent{color:var(--cyan)}.acid{color:var(--acid)}.bigline{border-left:3px solid var(--acid);padding:10px 0 10px 24px;font-size:26px;margin:24px 0}.pill{font-size:13px;color:var(--acid);border:1px solid #738253;padding:5px 10px;border-radius:20px;display:inline-block}.qrbox{background:var(--ink);color:var(--bg);padding:24px;border-radius:10px;max-width:350px;margin:auto;transform:rotate(1deg)}.qrbox p{color:#384953;font-size:14px;overflow-wrap:anywhere}.qrbox canvas{display:block;width:100%!important;height:auto!important}.joincode{font-size:24px;letter-spacing:.14em}.scene{border:1px solid var(--line);border-radius:12px;overflow:hidden;position:relative;background:#10212e}.scene svg{width:100%;height:240px;display:block}.scene small{display:block;color:var(--muted);padding:8px 20px;font-size:12px}.scene .moving{transform-origin:center;animation:float 6s ease-in-out infinite}.scene .pulse{animation:pulse 3s ease-in-out infinite}.evidence{counter-reset:evidence}.evidence p{padding:13px 0 13px 38px;border-bottom:1px solid var(--line);position:relative;color:var(--ink);font-size:18px}.evidence p:before{counter-increment:evidence;content:'0' counter(evidence);position:absolute;left:0;color:var(--cyan);font:15px 'Avenir Next',sans-serif}.limit{color:var(--acid);font-size:16px;margin-top:20px}.hint{font-size:14px;color:var(--muted)}.live{display:flex;align-items:center;gap:20px;margin:25px 0}.live strong{color:var(--cyan);font-size:36px;line-height:1}.live p{margin:0}.timer{margin-left:auto;display:flex;gap:8px;align-items:center;font-variant-numeric:tabular-nums}.timer b{font-size:26px;min-width:75px}.stats{display:grid;gap:13px}.stat{display:grid;grid-template-columns:100px 1fr 100px;gap:12px;align-items:center;font-size:14px}.track{background:#243b46;height:10px;border-radius:10px;overflow:hidden}.fill{height:100%;background:var(--cyan);transition:width .6s ease;border-radius:10px}.fill.first{background:#8995ae}.stat small{text-align:right;color:var(--muted)}.legend{font-size:13px;color:var(--muted)}.reason{font-size:16px;padding:10px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.winner{border-top:3px solid var(--acid)}.winner .award{color:var(--acid);font-size:20px}.winner h3{font-size:27px}.winner small{font-size:13px;overflow-wrap:anywhere;color:var(--muted)}footer{position:fixed;bottom:0;width:100%;display:flex;gap:16px;align-items:center;background:#07131ff5;border-top:1px solid var(--line);padding:12px 4vw;z-index:5}#progress{color:var(--muted);margin-right:auto;font-variant-numeric:tabular-nums;font-size:14px}#notes{position:fixed;right:4vw;bottom:85px;z-index:6;background:#e5ef93;color:#142326;max-width:600px;padding:22px;border-radius:10px;box-shadow:0 15px 50px #0008}#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:90px;background:#e5ef93;color:#142326;padding:12px 20px;border-radius:8px;display:none;z-index:10;max-width:90vw}.slide{animation:enter .45s ease both}label{display:block}fieldset{border:0;padding:0;margin:22px 0}legend{font-weight:600;margin-bottom:10px}.options{display:flex;gap:6px;flex-wrap:wrap}.options label{position:relative;flex:1;min-width:39px;text-align:center}.options input{position:absolute;opacity:0}.options span{display:block;border:1px solid var(--line);padding:12px 5px;border-radius:6px;color:var(--muted)}.options input:checked+span{background:var(--cyan);color:var(--bg);border-color:var(--cyan)}.options input:focus-visible+span,button:focus-visible,a:focus-visible{outline:3px solid var(--acid);outline-offset:3px}.options label:last-child{min-width:68px}textarea,input[type=text]{width:100%;background:#07131f;border:1px solid var(--line);color:var(--ink);padding:14px;border-radius:6px;resize:vertical;margin:8px 0}textarea{min-height:110px}.votechoice{display:flex;align-items:center;gap:15px;border:1px solid var(--line);padding:18px;border-radius:8px;margin:12px 0}.votechoice:has(input:checked){border-color:var(--cyan);background:#71e1da15}input[type=radio]{accent-color:var(--cyan)}.success{color:var(--cyan);margin:15px 0}.wide{width:100%}details{margin-top:22px}summary{cursor:pointer;color:var(--cyan)}.privateform{margin:28px 0}body[data-mode=student] header{padding:20px}body[data-mode=student] main{max-width:720px;padding:26px 20px 70px}body[data-mode=student] h1{font-size:34px}body[data-mode=student] .lead{font-size:19px}body[data-mode=student] .grid{grid-template-columns:1fr}body[data-mode=student] .card{padding:20px}body[data-mode=student] .scene svg{height:180px}body[data-mode=student] .bigline{font-size:21px}body[data-mode=student] #toast{bottom:20px}.flow{display:flex;gap:14px;align-items:center;margin:28px 0;flex-wrap:wrap}.flow span{border-bottom:2px solid var(--cyan);padding:14px 5px;font-size:24px}.flow i{color:var(--muted)}@keyframes enter{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes float{50%{transform:translateY(-10px) rotate(3deg)}}@keyframes pulse{50%{opacity:.35}}@media(max-width:900px){header{gap:10px;padding:16px 20px}header button{font-size:13px;padding:8px}.split{grid-template-columns:1fr;gap:24px}.grid,.grid.two{grid-template-columns:1fr}main{padding:28px 24px 110px}.qrbox{max-width:240px}.scene svg{height:190px}footer{gap:8px;padding:10px 16px}footer button{padding:8px;font-size:13px}.brand span{font-size:8px}.live{flex-wrap:wrap}.timer{margin-left:0}.stat{grid-template-columns:95px 1fr 90px}.card{padding:20px}h1{font-size:42px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media print{header,footer,#notes,#toast{display:none}body{background:white;color:black}main{padding:20px}.card{break-inside:avoid;background:white}p{color:#333}}
/* Projector typography follows the main commercial lecture: body copy stays large. */
.evidence-tabs{display:flex;gap:9px;flex-wrap:wrap;margin:20px 0}.evidence-focus{border-left:3px solid var(--cyan);padding:20px 26px;min-height:240px;background:#10212e}.evidence-focus p{font-size:30px;line-height:1.7;color:var(--ink)}.result-split{align-items:start}.result-split .card{max-height:500px;overflow:auto}
@media(min-width:901px){body[data-mode=teacher]{font-size:26px}body[data-mode=teacher] h1{font-size:clamp(46px,4vw,76px)}body[data-mode=teacher] .card p{font-size:26px}body[data-mode=teacher] h3{font-size:28px}body[data-mode=teacher] .hint,body[data-mode=teacher] .limit{font-size:20px}body[data-mode=teacher] .eyebrow{font-size:16px}body[data-mode=teacher] button{font-size:22px}body[data-mode=teacher] .stat{font-size:20px;grid-template-columns:112px 1fr 110px}body[data-mode=teacher] .reason{font-size:24px}body[data-mode=teacher] .result-split .hint{font-size:17px;margin:6px 0}body[data-mode=teacher] .stats{gap:8px}body[data-mode=teacher] .live .hint{font-size:16px}body[data-mode=teacher] .winner .award{font-size:25px}body[data-mode=teacher] .winner small{font-size:18px}body[data-mode=teacher] .qrbox p{font-size:16px}body[data-mode=teacher] .evidence-tabs button{font-size:20px}}
.rotor{transform-origin:230px 135px;animation:rotor-turn 8s linear infinite}@keyframes rotor-turn{to{transform:rotate(360deg)}}
/* Keep a quiet zone around the code for reliable phone-camera scanning. */
.qrbox{transform:none}#qrcode{padding:18px;background:#f1f5ee}#qrcode img{display:block;width:100%;height:auto}
.original-intro{align-items:start}.original-intro figure{margin:0;background:#f1f5ee;padding:15px;border-radius:8px}.original-intro figure button{display:block;border:0;padding:0;width:100%}.original-intro figure img{display:block;width:100%;height:430px;object-fit:contain}.original-intro figcaption{font-size:14px;color:#314a54;text-align:center;margin-top:8px}.original-summary{margin:24px 0;padding:20px;border:1px solid #304652}#originalViewer{width:95vw;height:94vh;max-width:1400px;max-height:96vh;padding:15px;background:#f1f5ee;border:0;border-radius:8px;color:#142d37}#originalViewer::backdrop{background:#000c}.original-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:20px;padding:8px 0 15px}.original-toolbar button,.original-toolbar a{color:#142d37}.original-toolbar label{display:flex;gap:10px;align-items:center;font-size:18px}.original-scroll{height:calc(100% - 80px);overflow:auto;background:#b8c4c4}#originalFullImage{display:block;width:100%;max-width:none;height:auto}.original-summary summary{font-size:24px}@media(max-width:900px){.original-intro figure img{height:340px}.original-toolbar{gap:8px}.original-toolbar input{max-width:100px}.original-scroll{height:calc(100% - 125px)}}

#joinDialog{background:#f1f5ee;color:#07131f;border:0;border-radius:12px;padding:24px;width:370px;max-width:90vw}#joinDialog::backdrop{background:#000a}#joinDialog p{color:#334d57;font-size:16px}#joinDialog button{color:#07131f;float:right}#persistentQR{padding:18px}#persistentQR img,#persistentQR canvas{width:100%;height:auto}header{flex-wrap:wrap}
