:root{--paper:#f7f4ec;--ink:#17212b;--muted:#607080;--line:#d9d2c5;--teal:#0f766e;--teal-deep:#084c49;--coral:#e85d4f;--gold:#e7a923;--mint:#d9f2e8;--sky:#dceeff;--white:#fffefa;--shadow:0 18px 48px #17212b1f}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:var(--ink);background:linear-gradient(135deg, #0f766e14, transparent 34%), linear-gradient(45deg, #e85d4f14, transparent 42%), var(--paper);font-family:Trebuchet MS,Microsoft YaHei,PingFang SC,sans-serif}button,input{font:inherit}button{border:0}.app-shell{width:min(100%,1120px);min-height:100dvh;margin:0 auto;padding:20px}.topbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:22px;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand-mark{width:42px;height:42px;color:var(--white);background:var(--teal);border:2px solid var(--ink);box-shadow:5px 5px 0 var(--gold);border-radius:8px;flex:none;place-items:center;display:grid}.brand-title{letter-spacing:0;margin:0;font-size:22px;line-height:1.05}.brand-subtitle{color:var(--muted);margin:2px 0 0;font-size:13px}.student-pill{max-width:48%;color:var(--teal-deep);background:var(--mint);white-space:nowrap;text-overflow:ellipsis;border:1px solid #0f766e3d;border-radius:999px;align-items:center;gap:6px;padding:8px 10px;font-size:13px;display:inline-flex;overflow:hidden}.login-grid{grid-template-columns:minmax(0,1.05fr) minmax(280px,.95fr);align-items:stretch;gap:26px;padding:24px 0 12px;display:grid}.stage-board{min-height:410px;color:var(--white);border:2px solid var(--ink);box-shadow:var(--shadow);background:linear-gradient(145deg,#084c49f0,#17212bf5),repeating-linear-gradient(90deg,#0000 0 20px,#ffffff0a 20px 21px);border-radius:8px;padding:28px}.stage-board h1{letter-spacing:0;max-width:600px;margin:0;font-size:clamp(36px,7vw,76px);line-height:.96}.stage-board p{color:#ffffffc7;max-width:560px;margin:18px 0 0;font-size:17px;line-height:1.7}.level-ribbon{flex-wrap:wrap;gap:9px;margin-top:34px;display:flex}.level-chip{color:var(--ink);background:var(--gold);border:1px solid #0000003d;border-radius:999px;padding:7px 10px;font-size:13px;font-weight:700}.login-panel,.challenge-panel{border:2px solid var(--ink);box-shadow:var(--shadow);background:#fffefaeb;border-radius:8px;padding:22px}.panel-title{align-items:center;gap:8px;margin:0 0 16px;font-size:20px;display:flex}.field-stack{gap:14px;display:grid}.field-label{color:var(--muted);gap:7px;font-size:13px;font-weight:700;display:grid}.text-input{width:100%;height:48px;color:var(--ink);background:var(--white);border:1px solid var(--line);border-radius:8px;outline:0;padding:0 14px}.text-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #0f766e29}.primary-button,.secondary-button,.danger-button,.icon-button{cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 14px;transition:transform .16s,box-shadow .16s,opacity .16s;display:inline-flex}.primary-button{color:var(--white);background:var(--teal);box-shadow:4px 4px 0 var(--ink);font-weight:800}.secondary-button{color:var(--ink);background:var(--sky);border:1px solid #aacbea;font-weight:700}.danger-button{color:var(--white);background:var(--coral);box-shadow:4px 4px 0 var(--ink);font-weight:800}.icon-button{width:44px;color:var(--ink);background:var(--white);border:1px solid var(--line);padding:0}.primary-button:hover,.danger-button:hover,.secondary-button:hover,.icon-button:hover{transform:translateY(-1px)}.primary-button:disabled,.danger-button:disabled,.secondary-button:disabled,.icon-button:disabled{cursor:not-allowed;opacity:.56;box-shadow:none;transform:none}.status-line{min-height:20px;color:var(--coral);font-size:13px;line-height:1.5}.levels-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:20px;display:grid}.level-card{text-align:left;min-height:190px;color:var(--ink);border:2px solid var(--ink);cursor:pointer;background:#fffefaf2;border-radius:8px;padding:18px;display:grid;box-shadow:5px 5px #17212b2e}.level-card:focus-visible,.primary-button:focus-visible,.secondary-button:focus-visible,.danger-button:focus-visible,.icon-button:focus-visible{outline-offset:3px;outline:3px solid #e85d4f73}.level-card-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.level-number{width:44px;height:44px;color:var(--white);background:var(--ink);border-radius:8px;place-items:center;font-weight:900;display:grid}.pass-badge{color:var(--teal-deep);background:var(--mint);border-radius:999px;align-items:center;gap:5px;padding:6px 8px;font-size:12px;font-weight:800;display:inline-flex}.level-card h2{margin:15px 0 6px;font-size:19px}.level-card p{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.score-strip{color:var(--ink);justify-content:space-between;align-items:center;gap:10px;margin-top:16px;font-size:13px;font-weight:800;display:flex}.challenge-header{justify-content:space-between;align-items:center;gap:12px;margin:8px 0 18px;display:flex}.challenge-title{margin:0;font-size:26px;line-height:1.2}.question-layout{grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:16px;display:grid}.prompt-board{min-height:320px;color:var(--white);background:var(--teal-deep);border:2px solid var(--ink);box-shadow:6px 6px 0 var(--gold);border-radius:8px;padding:24px}.prompt-meta{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.prompt-tag{color:var(--ink);background:var(--gold);border-radius:999px;padding:6px 8px;font-size:12px;font-weight:900}.prompt-text{letter-spacing:0;overflow-wrap:anywhere;margin:0;font-size:clamp(30px,8vw,58px);line-height:1.16}.prompt-text.sentence{font-size:clamp(23px,5vw,38px);line-height:1.28}.control-stack{gap:12px;display:grid}.record-button{width:100%;min-height:74px;font-size:18px}.meter{border:1px solid var(--line);background:#eee4d1;border-radius:999px;height:10px;overflow:hidden}.meter>span{background:linear-gradient(90deg, var(--coral), var(--gold), var(--teal));height:100%;display:block}.result-box{background:var(--white);border:1px solid var(--line);border-radius:8px;min-height:150px;padding:14px}.result-score{align-items:baseline;gap:8px;margin:0 0 8px;font-size:34px;font-weight:900;display:flex}.result-score small{color:var(--muted);font-size:13px;font-weight:700}.dimension-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0;display:grid}.dimension-item{background:#f2efe7;border-radius:8px;padding:9px;font-size:12px}.dimension-item strong{margin-top:2px;font-size:17px;display:block}.suggestion{color:var(--muted);margin:10px 0 0;font-size:13px;line-height:1.55}.score-meta-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.score-badge,.score-link{min-height:28px;color:var(--ink);background:var(--mint);border:1px solid var(--line);border-radius:999px;align-items:center;padding:5px 9px;font-size:12px;font-weight:900;text-decoration:none;display:inline-flex}.score-link{background:var(--gold)}.score-detail-panel{border-top:1px dashed var(--line);margin-top:12px;padding-top:12px}.detail-panel-head{gap:3px;margin-bottom:10px;display:grid}.detail-panel-head strong{color:var(--ink);font-size:13px}.detail-panel-head span{color:var(--muted);font-size:12px;line-height:1.45}.detail-chip-grid{flex-wrap:wrap;gap:7px;max-height:160px;padding-right:2px;display:flex;overflow:auto}.detail-chip{max-width:100%;min-height:30px;color:var(--ink);border:1px solid var(--line);background:#f2efe7;border-radius:8px;align-items:center;gap:7px;padding:5px 8px;font-size:12px;line-height:1.2;display:inline-flex}.detail-chip span{overflow-wrap:anywhere}.detail-chip strong{flex:none;font-size:13px}.detail-chip.excellent{background:#ddf5da}.detail-chip.good{background:#fff0b8}.detail-chip.fair{background:#f2efe7}.detail-chip.weak{background:#ffe0d6}.raw-json-panel{border-top:1px dashed var(--line);color:var(--muted);margin-top:12px;font-size:12px}.raw-json-panel summary{cursor:pointer;color:var(--ink);padding-top:10px;font-weight:900}.raw-json-panel pre{color:#f7f3ea;white-space:pre-wrap;overflow-wrap:anywhere;background:#182624;border-radius:8px;max-height:220px;margin:8px 0 0;padding:10px;font-size:11px;line-height:1.45;overflow:auto}.question-dots{flex-wrap:wrap;gap:8px;margin:12px 0 0;display:flex}.question-dot{width:30px;height:30px;color:var(--muted);background:var(--white);border:1px solid var(--line);border-radius:999px;place-items:center;font-size:12px;font-weight:900;display:grid}.question-dot.active{color:var(--white);background:var(--ink)}.question-dot.passed{color:var(--teal-deep);background:var(--mint)}@media (max-width:860px){.app-shell{padding:16px}.login-grid,.question-layout,.levels-grid{grid-template-columns:1fr}.stage-board{min-height:330px;padding:22px}.topbar{align-items:flex-start}.student-pill{max-width:42%}}@media (max-width:520px){.app-shell{padding:12px}.brand-title{font-size:18px}.brand-subtitle{display:none}.student-pill{max-width:52%;font-size:12px}.stage-board h1{font-size:42px}.stage-board p{font-size:15px}.prompt-board{min-height:280px;padding:18px}.login-panel,.challenge-panel{padding:16px}}
