.music-controls{display:flex;align-items:center;gap:8px}.music-settings{position:relative}.music-settings summary{cursor:pointer;list-style:none;padding:5px 8px;color:var(--muted);font-size:16px}.music-settings summary::-webkit-details-marker{display:none}.music-settings summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.music-popover{position:absolute;right:0;top:39px;width:265px;background:#232820;border:1px solid #4a543e;padding:21px;z-index:30;box-shadow:0 15px 45px #0008}.music-popover strong{font:17px/1.8 var(--serif)}.music-popover .eyebrow{font-size:8px;margin-bottom:8px}.music-popover p{font-size:10px;margin-bottom:14px}.music-popover p:last-child{margin:11px 0 0}.music-popover label{font-size:11px;display:flex;justify-content:space-between}.music-popover input{display:block;width:100%;margin:14px 0;accent-color:var(--accent);cursor:pointer}.music-popover output{font:11px var(--mono);color:var(--accent)}.sound-toggle[data-playing=true]>.icon{color:var(--accent);animation:beacon 3s ease-in-out infinite}.music-invitation{font-size:9px;color:#929c88;margin:15px 0 -16px}.legacy-notice{font-size:10px;color:var(--muted);margin:20px 0 0}.legacy-notice button{font-size:10px;color:var(--accent);padding:0}
.level-map{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.level-card{display:block;min-width:0;padding:24px;border:1px solid var(--rule);background:var(--surface);text-align:left;transition:border-color .2s,background .2s}.level-card:hover:not(:disabled){border-color:#808e6d;background:#242a20}.level-card.locked{opacity:1;background:#171b16;color:#828b77;cursor:not-allowed}.level-card.complete{border-color:#687b52}.level-card-top{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:10px;color:var(--muted);margin-bottom:18px}.level-card-top .mono{font-size:9px;letter-spacing:1px}.difficulty-label{border:1px solid var(--rule);padding:2px 8px;font-size:9px}.level-card h3{font:500 20px/1.7 var(--serif);margin:0 0 10px}.level-card p{font-size:11px;color:var(--muted);margin:0 0 18px}.level-card-bottom{display:flex;justify-content:space-between;border-top:1px solid var(--rule);padding-top:12px;font-size:10px;color:#a9b79b}.level-card:not(.locked) .level-card-bottom>span{color:var(--accent)}.level-card.complete .level-card-bottom>span{color:var(--green)}.chapter.locked .chapter-heading{opacity:.5}.chapter.locked .chapter-state{font-size:8px}
#workspace-title{display:inline;font:inherit;color:inherit;margin:0}.campaign-progress{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin:0 0 15px;gap:16px}.campaign-progress b{font-family:var(--mono);color:var(--fg);font-weight:400}.manuscript-heading{border-bottom:1px solid var(--rule);padding:0 0 17px;margin-bottom:17px}.manuscript-heading .eyebrow{color:var(--accent);font-size:8px}.manuscript-heading h2{font:500 24px/1.6 var(--serif);margin:6px 0 8px}.manuscript-heading p{font-size:11px;color:var(--muted);margin:0;line-height:1.9}.record-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-bottom:24px}.record-tab{border:1px solid var(--rule);padding:10px 8px;text-align:left;min-width:0}.record-tab span{display:flex;justify-content:space-between;align-items:center;font-size:11px}.record-tab span i{font-size:7px;color:var(--accent);font-style:normal}.record-tab small{display:block;color:var(--muted);font-size:9px;margin-top:5px;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-tab.active{border-color:var(--accent);background:var(--accent-soft)}.record-tab.active span{color:var(--accent)}
.evidence-pick{display:flex;align-items:flex-start;gap:11px;cursor:pointer;background:#252d21;border:1px solid #47583a;padding:14px;margin:22px 0 0;font-size:11px}.evidence-pick input{accent-color:var(--accent);width:16px;height:16px;flex:none;margin:2px 0 0;cursor:pointer}.evidence-pick small{display:block;font-size:9px;color:var(--muted);line-height:1.8;margin-top:5px}.evidence-pick>.mono{margin-left:auto;white-space:nowrap;font-size:10px;color:#b5c6a0}.editorial-decisions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.decision-button{display:flex;justify-content:center;align-items:center;gap:8px;border:1px solid var(--rule);padding:13px 8px;min-width:0}.decision-button .icon{width:17px;height:17px}.decision-button span{display:block;font-size:12px;white-space:nowrap}.decision-button small{display:block;font:8px/1.8 var(--mono);color:var(--muted)}.decision-button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.decision-button.pass[aria-pressed=true]{border-color:var(--green);background:#2b3526;color:#b4cba2}.decision-button.correction[aria-pressed=true]{border-color:#b39863;background:#302b1f;color:#d6be8b}.decision-hint{font-size:10px;color:var(--muted);line-height:1.9;margin:13px 0 0;min-height:38px}.case-submit-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--rule);margin-top:14px;padding-top:15px}.case-submit-row>.small,.case-submit-row>.text-button{font-size:10px}.case-submit-row .button{font-size:11px;gap:12px}.complaint-message{border-color:var(--accent)}.complaint-message p,.complaint-message .sender{color:#df9b85}.brief-facts b.decision-summary{font:500 14px/2.5 var(--serif)}
#case-result{max-width:1000px;margin:auto;padding:50px 35px 65px;animation:rise-in .6s ease-out}.case-feedback-hero{padding:32px 36px;border:1px solid var(--rule);background:#23291f}.case-feedback-hero.correct{border-color:#697c50}.case-feedback-hero.incorrect{border-color:#916d50;background:#2b241d}.case-feedback-hero .eyebrow{font-size:9px;color:#b2bf9d;margin-bottom:19px}.case-feedback-hero h1{font:600 34px/1.6 var(--serif);margin:0 0 15px}.case-feedback-hero>p:not(.eyebrow){font-size:13px;line-height:2;color:#b9c3ab}.author-complaint{display:flex;align-items:start;gap:13px;border:1px solid #9d5a48;background:#432b24;padding:17px 19px;margin:21px 0;color:#efb09b}.author-complaint .icon{margin-top:3px;flex:none}.author-complaint strong{font-size:12px;font-weight:500}.author-complaint p{font-size:12px;line-height:1.9;margin:5px 0 0}.decision-comparison{display:flex;align-items:center;gap:28px;border-top:1px solid #5b624c;padding-top:20px;margin-top:25px}.decision-comparison>div{min-width:0}.decision-comparison>.serious-count{margin-left:auto}.decision-comparison span{display:block;font-size:10px;color:var(--muted)}.decision-comparison strong{display:block;font:500 20px/1.9 var(--serif);color:var(--fg)}.decision-comparison small{font:10px sans-serif;color:var(--muted)}.decision-comparison .decision-arrow{color:var(--accent);font-size:20px}.level-clear{display:flex;gap:15px;align-items:center;background:#293623;border:1px solid #688452;padding:17px 22px;margin-top:20px;color:#c5d9af}.level-clear>span{font:25px var(--mono)}.level-clear strong{font-size:13px;font-weight:500}.level-clear p{font-size:11px;color:#aabf92;margin:5px 0 0}.review-title{margin:28px 0 18px}.review-title h2{font:23px var(--serif);margin-bottom:12px}.review-title p{font-size:11px;color:var(--muted)}.record-review.clean{border-left-color:var(--green)}.record-review.minor{border-left-color:#c4a567}.record-review.severe{border-left-color:var(--accent)}.record-review.clean .tag{color:var(--green)}.record-review.minor .tag{color:#c4a567}.record-review.severe .tag{color:var(--accent)}.record-review-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:9px;font-size:10px;color:var(--dim)}.record-review-foot .text-button{font-size:10px;padding:2px 0}.final-decisions{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:25px 0}.final-decisions>div{border:1px solid var(--rule);padding:24px;position:relative}.final-decisions .icon{position:absolute;right:22px;top:25px;color:var(--accent)}.final-decisions strong{display:block;font:36px/1.5 var(--mono)}.final-decisions span{display:block;font-size:12px;color:var(--muted)}
@media(max-width:900px){.level-map{grid-template-columns:repeat(2,minmax(0,1fr))}.level-card{padding:21px}.level-card h3{font-size:18px}.editorial-decisions{gap:6px}.decision-button{gap:5px;padding:12px 5px}.decision-button span{font-size:11px}.decision-button .icon{width:14px}.case-submit-row{flex-wrap:wrap}.manuscript-heading h2{font-size:22px}}
@media(max-width:680px){.music-controls{gap:0}.music-settings summary{padding:5px 0 5px 8px;font-size:14px}.music-popover{right:0;top:30px;width:245px}.music-invitation{font-size:9px;line-height:1.9;margin-bottom:-13px}.legacy-notice{font-size:10px}.level-map{gap:10px}.level-card{padding:17px 14px}.level-card-top{font-size:9px;gap:5px;margin-bottom:13px}.level-card-top .mono{font-size:8px}.difficulty-label{font-size:8px;padding:1px 6px}.level-card h3{font-size:17px;line-height:1.6;min-height:54px}.level-card p{font-size:10px;min-height:34px;margin-bottom:13px}.level-card-bottom{font-size:9px;gap:5px}.campaign-progress{font-size:10px;gap:8px;line-height:1.9;align-items:start}.campaign-progress>span:last-child{text-align:right}.manuscript-heading h2{font-size:23px}.manuscript-heading p{font-size:11px}.record-tabs{gap:5px;margin-bottom:20px}.record-tab{padding:10px 7px}.record-tab span{font-size:12px}.record-tab small{font-size:9px}.editorial-decisions{gap:6px}.decision-button{padding:12px 4px;gap:5px}.decision-button .icon{width:14px;height:14px}.decision-button span{font-size:12px}.decision-button small{font-size:8px}.decision-hint{font-size:11px}.evidence-pick{padding:12px;gap:9px;font-size:12px}.evidence-pick small{font-size:10px}.case-submit-row>.small,.case-submit-row>.text-button{font-size:10px}.case-submit-row .button{font-size:12px;min-height:40px}.block-navigation>.mono{font-size:7px;letter-spacing:-.3px}#case-result{padding:27px 20px 40px}.case-feedback-hero{padding:25px 22px}.case-feedback-hero h1{font-size:27px}.case-feedback-hero>p:not(.eyebrow){font-size:12px}.decision-comparison{gap:12px;flex-wrap:wrap}.decision-comparison strong{font-size:17px}.decision-comparison>.serious-count{margin-left:0;border-top:1px solid var(--rule);width:100%;padding-top:13px}.decision-comparison>.serious-count span,.decision-comparison>.serious-count strong{display:inline;margin-right:12px}.author-complaint{padding:14px;gap:10px}.author-complaint p{font-size:11px}.level-clear{padding:15px;gap:12px}.level-clear strong{font-size:12px}.review-title p{font-size:11px}.review .record-review h3{font:12px/1.6 var(--mono)}.record-review-foot{font-size:9px}.final-decisions{gap:8px}.final-decisions>div{padding:17px 12px}.final-decisions .icon{position:static;margin-bottom:10px;width:16px;height:16px}.final-decisions strong{font-size:29px}.final-decisions span{font-size:10px}.music-controls .sound-toggle{padding-left:8px}}
@media(prefers-reduced-motion:reduce){.sound-toggle[data-playing=true]>.icon,.level-card,#case-result{animation:none!important;transition:none!important}}
.manuscript-heading .tip{border-left:2px solid var(--accent);background:var(--accent-soft);padding:10px 14px;margin-top:12px;font-size:13px;line-height:1.8;color:var(--fg)}.record-note{font-size:12px;line-height:1.7;color:#d9c896;margin:-6px 0 16px}
.phone-only{display:none}.chapter-brief summary{cursor:pointer;list-style:none;display:flex;flex-direction:column;position:relative;padding-right:22px}.chapter-brief summary::-webkit-details-marker{display:none}.chapter-brief summary::after{content:"▾";position:absolute;right:0;bottom:6px;color:var(--muted)}.chapter-brief:not([open]) summary::after{content:"▸"}.chapter-brief:not([open]) h2{margin:0}
tfoot td{border-top:1px solid #5b624c;color:var(--fg);font-weight:600}
.probe{background:#df645238;color:#ffb8a3;box-shadow:inset 0 0 0 1px var(--accent)}#data-view td:not(:first-child){cursor:pointer}
/* Phone playability pass. Goals: text you can read (13px body, 16px form fields so iOS does not zoom), 44px tap targets,
   less chrome above the data, the whole table on screen at once, and record tabs / tool tabs / evidence toggle that stay
   on screen while reading. Sticky offsets are coupled: the record bar is 64px tall, so .tabs sticks at 64px, and the
   scroll-margin-top values (also read by settle() in campaign.js) are the points where each bar starts to stick:
   .blockhead 64+12 gap, #data-view 64+45 tool bar+12 gap. */
@media(max-width:680px){
html{scroll-padding-top:0}#panel{scroll-margin-top:8px}.phone-only{display:inline}.case-sidebar{order:2}.investigation-rail{order:3}#chapter-list{margin-top:4px}
.site-header{height:60px;padding:0 12px}.nav-link{font-size:13px;min-height:44px}.sound-toggle,.music-controls .sound-toggle,.music-settings summary{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0}.icon-button{min-width:44px;min-height:44px;align-items:center;justify-content:center}
.case-status,.music-invitation,.case-facts span,.live-label,.dossier-bottom,.legacy-notice,.legacy-notice button,.site-footer>span:nth-child(2),.footer-brand,.footer-link,.level-card p,.level-card-bottom{font-size:12px}.hero-description{font-size:14px}.hero-actions .text-button{font-size:13px;min-height:44px}.dispatch-strip p{font-size:13px}.level-card-top,.level-card-top .mono,.difficulty-label{font-size:11px}.footer-link{min-height:44px}
#game{padding:14px 12px 32px}.workspace-top{margin-bottom:8px}.workspace-top .eyebrow,.workspace-actions,.investigation-progress,.manuscript-heading .eyebrow,.manuscript-heading h2,.verdict-label,.decision-hint,.case-submit-row>.small,.decision-button .icon,.decision-button small,[data-action=submit-case] .icon,.blockhead .eyebrow,.blockhead h2,.chapter-brief .eyebrow,.block-navigation>.mono,.evidence-pick small,.tab-button .icon{display:none}
.campaign-progress{font-size:12px;margin-bottom:10px}.chapter-heading{font-size:13px;min-height:44px}.chapter-heading>span:first-child,.chapter-heading>.chapter-state,.chapter.locked .chapter-state{font-size:11px}.chapter-brief{padding:12px 14px;margin-bottom:12px}.chapter-brief p:last-child{font-size:13px}
.data-panel{padding:12px}.manuscript-heading{border:0;padding:0;margin:0 0 10px}.manuscript-heading .tip{margin-top:0}.record-note{font-size:13px;margin:-2px 0 10px}.mobile-file-selector,.compare-controls select,.notes-section textarea{font-size:16px}.mobile-file-selector{min-height:44px;margin-bottom:8px}
.record-tabs{position:sticky;top:0;z-index:6;margin:0 -12px 12px;padding:8px 12px;background:var(--surface);box-shadow:0 1px 0 var(--rule)}.record-tab{height:48px;padding:5px 8px}.record-tab span{font-size:13px}.record-tab span i{font-size:10px}.record-tab small{font-size:11px;margin-top:1px}
.blockhead{scroll-margin-top:76px;align-items:center;margin-bottom:10px}.blockhead .block-meta{font-size:12px}.sample-tag{font-size:11px}.stats{margin-bottom:10px}.stat{font-size:11px;padding:6px 10px}.stat b{font-size:14px}.stat .stat-unit{display:none}.stats::after{content:"均值 ± 标准差";flex-basis:100%;font-size:11px;line-height:1.2;color:var(--dim)}
.tabs{position:sticky;top:64px;z-index:5;background:var(--surface);gap:0;margin:0 0 12px}.tab-button{flex:1;justify-content:center;min-height:44px;padding:0 3px;font-size:13px}#data-view{scroll-margin-top:121px}.data-panel:not(:has(.record-tabs)) .tabs{top:0}.data-panel:not(:has(.record-tabs)) #data-view{scroll-margin-top:57px}.view-hint{font-size:13px;line-height:1.7;margin-bottom:10px}
.scroll{max-height:none}.scroll td{font-size:13px;line-height:1.55;padding:4px 7px}.scroll th{font-size:11px;padding:6px 7px}.legend{font-size:12px}.chart{max-height:none}.digit-card h3{font-size:12px}.digit-card p{font-size:11px}.digit-card svg text{font-size:19px}.compare-controls label,.compare-note{font-size:12px}.compare-controls select{min-height:44px}
.action-dock{position:sticky;bottom:0;z-index:5;margin:12px -12px -12px;padding:10px 12px max(10px,env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--rule);box-shadow:0 -12px 16px -6px #151717}.evidence-pick{align-items:center;margin:0 0 8px;padding:9px 12px;font-size:14px}.evidence-pick input{width:22px;height:22px;margin:0}.evidence-pick>.mono{font-size:13px}
.verdict{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin:0;padding:0;border:0}.editorial-decisions{grid-area:1/1}.case-submit-row{display:contents}.case-submit-row .button{grid-area:1/2;min-height:48px;padding:0 14px;font-size:14px;gap:0}.case-submit-row>.text-button{grid-area:2/1/3/3;justify-self:end;font-size:12px;padding:2px 0}.decision-button{min-height:48px;padding:0 4px}.decision-button span{font-size:14px}.toast{top:12px;bottom:auto}
.block-navigation .text-button{font-size:13px;min-height:44px;padding:0 6px}.investigation-rail{grid-template-columns:1fr}.task-list li,.story-message p,.story-message .sender{font-size:13px}.task-list .task-detail,.notes-section .small,.rail-title .mono{font-size:12px}.story-message .sender time{font-size:11px}
#case-result{padding:16px 12px 36px}.case-feedback-hero{padding:20px 16px}.case-feedback-hero>p:not(.eyebrow){font-size:14px}.decision-comparison span,.decision-comparison small{font-size:12px}.author-complaint strong,.author-complaint p{font-size:13px}.level-clear strong{font-size:14px}.level-clear p{font-size:12px}.result-actions .button{flex:1;min-height:48px;font-size:13px}
.review-title p,.review article p{font-size:13px}.review .record-review h3{font-size:14px}.review .tag{font-size:11px}.record-review-foot{font-size:12px}.record-review-foot .text-button{font-size:13px;min-height:44px;padding:0 0 0 12px}.final-decisions span{font-size:12px}
.dialog-actions .button{font-size:13px;min-height:46px}.brief-facts>div{font-size:11px}.guide-list p,.case-notice{font-size:13px}
}
