:root{color-scheme:dark;--bg:#0B1832;--panel:#152F57;--panel-deep:#102340;--line:#405471;--gold:#D6B875;--cream:#F4EDD9;--muted:#9EB8D4;--signal:#C3D5E8;--ink:#24354B;--blue:#2C5B97;--blue-hover:#3569A6;--disabled:#405471;--disabled-text:#899BB0;--ink-muted:#586B81;font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 0,#122747 0,var(--bg) 72%);color:var(--cream);min-height:100vh}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button{min-height:44px;border:1px solid var(--line);border-radius:5px;background:var(--panel-deep);color:var(--cream);padding:11px 15px;cursor:pointer;text-align:left;line-height:1.5}button:hover:not(:disabled){border-color:var(--gold);background:var(--panel)}button.primary{background:var(--blue);border-color:var(--gold);color:var(--cream);font-weight:700}button.primary:hover:not(:disabled){background:var(--blue-hover);border-color:#E4C98C}button.quiet{background:var(--panel-deep)}a{color:var(--gold)}:focus-visible{outline:3px solid var(--gold);outline-offset:4px}[hidden]{display:none!important}.shell{max-width:1450px;margin:0 auto;padding:0 38px}.skip-link{position:absolute;top:-100px;left:20px;padding:16px;background:var(--bg);z-index:10}.skip-link:focus{top:12px}.masthead{display:flex;justify-content:space-between;align-items:center;gap:24px;min-height:100px;background:var(--panel-deep);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:14px;text-decoration:none;font-weight:650;letter-spacing:.12em;color:var(--cream);font-size:16px}.brand small{display:block;font-size:10px;letter-spacing:.2em;font-weight:400;margin-top:8px;color:var(--muted)}.crest{color:var(--gold);font-size:38px;line-height:1}.masthead nav{display:flex;gap:8px}.masthead nav button{border:0;background:none;font-size:13px;color:var(--muted)}.page-heading{display:flex;justify-content:space-between;gap:20px;align-items:end;padding:32px 0 25px}.eyebrow{font-size:11px;letter-spacing:.2em;color:var(--gold);margin:0 0 12px}h1{font-family:"Hiragino Mincho ProN","Yu Mincho",serif;font-size:40px;letter-spacing:.12em;margin:0;font-weight:600}h1 span{font-size:14px;font-weight:400;color:var(--muted);margin-left:25px;letter-spacing:.12em}.night-label{font-size:12px;color:var(--muted);margin:0 0 7px}.broadcast-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}.studio-column{min-width:0}.studio-card{border:1px solid var(--gold);box-shadow:0 12px 35px #0003;background:var(--panel-deep)}.signal-strip{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:12px 17px;font-size:11px;letter-spacing:.08em;min-height:44px;background:var(--panel);color:var(--muted)}#air-label{color:var(--muted);display:flex;align-items:center;gap:9px}#air-label i{width:7px;height:7px;background:var(--muted);border-radius:50%;display:inline-block}.signal-dots{display:flex;align-items:flex-end;gap:3px;height:21px;flex:none}.scene{aspect-ratio:1672/941;position:relative;overflow:hidden;isolation:isolate;background:var(--panel-deep)}.layer-slot{position:absolute;inset:0}.scene-layer{display:block;width:100%;height:100%;image-rendering:pixelated;object-fit:contain}.scene-loading{position:absolute;inset:0;display:grid;place-items:center;background:var(--panel-deep);color:var(--muted);font-size:14px;padding:25px;text-align:center;z-index:5}.scene:not(.loading) .scene-loading{display:none}.emotion{position:absolute;top:25%;font-size:clamp(16px,2.5vw,32px);font-weight:800;color:#fff4c9;background:#183b41e8;border:1px solid var(--gold);padding:2px 12px;border-radius:50%;z-index:4}.emotion[data-character="link"]{left:35%}.emotion[data-character="zelda"]{right:7%}.studio-caption{display:flex;justify-content:space-between;gap:10px;padding:12px 17px;font-size:12px;color:var(--cream)}.studio-caption small{font-size:9px;margin-left:7px;color:var(--muted)}.studio-tag{font-size:9px;color:var(--muted);letter-spacing:.1em}.dialogue-panel{background:var(--cream);color:var(--ink);padding:24px 28px;border:1px solid var(--gold);border-top:3px solid var(--gold);margin-top:18px;min-height:192px;border-radius:4px}.dialogue-meta{display:flex;justify-content:space-between;gap:15px;align-items:center;color:var(--ink-muted);font-size:11px;margin-bottom:14px}.speaker{font-weight:700;font-size:15px;color:var(--ink);letter-spacing:.08em}.dialogue-text{font-family:"Hiragino Mincho ProN","Yu Mincho",serif;font-size:18px;line-height:1.95;margin:0 0 18px;white-space:pre-wrap;overflow-wrap:anywhere}.dialogue-panel .muted{color:var(--ink-muted)}.dialogue-panel button{background:transparent;border-color:var(--ink-muted);color:var(--ink);font-size:13px}.dialogue-panel button:hover:not(:disabled){background:#E5E2D8}.dialogue-panel button.primary{background:var(--blue);color:var(--cream);border-color:var(--gold)}.dialogue-panel button.primary:hover:not(:disabled){background:var(--blue-hover);border-color:#E4C98C}.dialogue-panel :focus-visible{outline-color:var(--blue)}button:disabled,button.primary:disabled,.dialogue-panel button:disabled,.masthead nav button:disabled{background:var(--disabled);color:var(--disabled-text);border-color:var(--disabled);opacity:1;cursor:default}button:disabled small{color:inherit}.actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;margin-top:18px}.actions.choices{display:grid;grid-template-columns:1fr;justify-content:stretch}.desk{min-width:0;background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--gold);border-radius:4px;padding:24px}.desk h2{color:var(--gold);font-family:"Hiragino Mincho ProN","Yu Mincho",serif;font-size:23px;font-weight:500;letter-spacing:.08em;margin:0 0 17px}.desk h3{font-size:14px;margin:22px 0 9px;color:var(--gold);font-weight:500}.desk p{font-size:13px;line-height:1.9;margin:10px 0 18px}.muted{color:var(--muted);font-size:12px;line-height:1.8}.stack{display:grid;gap:10px}.menu-mark{font-size:35px;color:var(--gold);letter-spacing:12px;margin:5px 0 20px}.section-rule{border:0;border-top:1px solid var(--line);margin:23px 0}.item-button{width:100%;display:flex;flex-direction:column;gap:6px}.item-button small{font-size:10px;color:var(--muted)}.item-button strong{font-size:14px;font-weight:500}.tag{display:inline-block;border:1px solid var(--line);border-radius:3px;padding:3px 7px;color:var(--signal);font-size:10px;margin-bottom:9px}body[data-view="live"] #air-label{color:var(--gold)}body[data-broadcasting="true"] #air-label i{background:#FF3535;box-shadow:0 0 4px #FF353580}body[data-mode="oneway"] .signal-strip{background:var(--panel);color:var(--signal)}body[data-mode="duplex"] .signal-strip{background:#1C3D69;color:var(--signal)}body[data-mode="phone"] .signal-strip{background:var(--panel-deep);color:var(--gold)}.notice{border:1px solid var(--gold);background:var(--panel-deep);padding:12px 16px;font-size:13px;line-height:1.8}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:17px 0;font-size:14px}.settings-row input{accent-color:var(--blue);width:20px;height:20px}textarea{width:100%;min-height:95px;resize:vertical;background:var(--panel-deep);color:var(--cream);border:1px solid var(--line);border-radius:4px;font-size:11px;padding:10px}input[type=file]{width:100%;font-size:11px;color:var(--muted)}label.file-label{display:block;font-size:12px;margin:12px 0}.archive-list{display:grid;gap:10px;max-height:520px;overflow:auto;padding:4px}.archive-night{border-bottom:1px solid var(--line);padding-bottom:18px}.archive-night h3{margin-top:8px}.progress{font-size:11px;letter-spacing:.12em;color:var(--muted)}footer{display:flex;justify-content:space-between;gap:15px;font-size:10px;color:var(--muted);padding:28px 0 24px;letter-spacing:.09em}.large-text .dialogue-text{font-size:22px}.no-motion *{animation:none!important;transition:none!important}.error-page{max-width:640px;margin:15vh auto;padding:30px}.error-page h1{font-size:32px}.error-page p{line-height:1.9}.error-page a{display:inline-block;margin-top:20px;padding:12px;border:1px solid var(--gold)}
/* 固定高のヘッダー内で、整数ピクセルの段階的な動きにする。 */
.signal-dots{--floor:4px;--middle:5px;--peak:6px;--cycle:2.8s;--wave:radio-wave}
.signal-dots>span{--trim:0px;--offset:0s;--delay:-.3s;--rest:6px;width:7px;height:var(--rest);background:#B6DCF4;animation:var(--wave) calc(var(--cycle) + var(--offset)) steps(1,end) var(--delay) infinite;animation-play-state:paused}
body[data-signal-active="true"] .signal-dots>span{animation-play-state:running}
body[data-signal-animation="normal"] .signal-dots{--middle:10px;--peak:16px;--cycle:1.45s}
body[data-signal-animation="lively"] .signal-dots{--middle:12px;--peak:20px;--cycle:1.05s}
body[data-signal-animation="calm"] .signal-dots{--middle:8px;--peak:12px;--cycle:2.5s}
body[data-signal-animation="weakSignal"] .signal-dots{--middle:6px;--peak:12px;--cycle:2.3s;--wave:radio-interference}
body[data-signal-animation="twoWay"] .signal-dots{--middle:12px;--peak:18px;--cycle:1.25s}
body[data-signal-animation="interference"] .signal-dots{--middle:6px;--peak:16px;--cycle:1.9s;--wave:radio-interference}
body[data-signal-mood="calm"][data-signal-animation="weakSignal"] .signal-dots{--peak:10px;--cycle:2.8s}
body[data-signal-animation="calm"][data-signal-emphasis="true"] .signal-dots{--peak:16px}
/* 各棒の周期・位相・頂点を分け、静かな状態でも速度差の比率を保つ。 */
.signal-dots>span:nth-child(2){--trim:2px;--offset:.17s;--delay:-.91s;--rest:8px}
.signal-dots>span:nth-child(3){--trim:0px;--offset:.31s;--delay:-1.47s;--rest:10px}
.signal-dots>span:nth-child(4){--trim:4px;--offset:.09s;--delay:-.61s;--rest:6px}
.signal-dots>span:nth-child(5){--trim:0px;--offset:.23s;--delay:-1.13s;--rest:12px}
.signal-dots>span:nth-child(6){--trim:2px;--offset:.39s;--delay:-.43s;--rest:8px}
.signal-dots>span:nth-child(7){--trim:4px;--offset:.13s;--delay:-1.79s;--rest:6px}
.signal-dots>span:nth-child(8){--trim:2px;--offset:.29s;--delay:-1.31s;--rest:10px}
.signal-dots>span:nth-child(9){--trim:0px;--offset:.43s;--delay:-.73s;--rest:4px}
@keyframes radio-wave{0%,100%{height:var(--floor)}15%,64%{height:max(var(--floor),calc(var(--peak) - var(--trim)))}30%,78%{height:var(--middle)}45%{height:var(--floor)}54%,89%{height:max(var(--floor),calc(var(--middle) - 2px))}}
@keyframes radio-interference{0%,14%,38%,58%,74%,100%{height:var(--floor)}23%,67%,86%{height:var(--middle)}29%,91%{height:max(var(--floor),calc(var(--peak) - var(--trim)))}}
@media(min-width:1550px){.shell{padding-top:16px}}
@media(max-width:1050px){.shell{padding:0 24px}.broadcast-layout{grid-template-columns:minmax(0,1fr) 260px;gap:18px}.desk{padding:20px}.studio-tag{display:none}h1 span{display:block;margin:10px 0 0}.dialogue-panel{padding:20px}.studio-caption small{display:block;margin:4px 0 0}}
@media(max-width:760px){.shell{padding:0 16px}.masthead{min-height:90px;flex-wrap:wrap;gap:12px;padding:18px 0 10px}.brand{font-size:14px}.brand small{font-size:9px}.crest{font-size:30px}.masthead nav{width:100%;justify-content:flex-end;gap:0}.masthead nav button{font-size:12px;padding:8px 11px;min-height:40px}.page-heading{padding:22px 0 18px;align-items:start}.eyebrow{font-size:9px}h1{font-size:31px}h1 span{font-size:12px}.night-label{font-size:10px;max-width:115px;line-height:1.7}.broadcast-layout{grid-template-columns:1fr;gap:18px}.desk{padding:22px}.studio-caption{padding:10px 12px}.studio-caption small{display:inline;margin-left:5px}.signal-strip{padding:10px 12px;font-size:10px}.signal-dots{gap:3px}.signal-dots>span{width:7px}.dialogue-panel{min-height:180px;padding:20px;margin-top:12px}.dialogue-text{font-size:17px;line-height:1.9}.large-text .dialogue-text{font-size:21px}body[data-view="menu"] .desk,body[data-view="intro"] .desk,body[data-view="spoiler"] .desk,body[data-view="settings"] .desk,body[data-view="archive"] .desk{order:-1}.menu-mark{display:none}.archive-list{max-height:400px}footer{flex-direction:column;gap:8px}.emotion{font-size:16px;padding:1px 7px}.actions button{flex-grow:1;text-align:center}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
.story-screen{min-height:420px;padding:clamp(24px,5vw,56px);border:1px solid var(--gold);box-shadow:0 12px 35px #0003;background:linear-gradient(180deg,var(--panel),var(--bg));display:flex;flex-direction:column;gap:24px}
.story-screen h2{margin:0;text-align:center;color:var(--gold);font-family:"Hiragino Mincho ProN","Yu Mincho",serif;font-size:clamp(23px,3vw,32px);letter-spacing:.12em}
.story-body{width:100%;max-width:38em;margin:auto;overflow-wrap:anywhere}
.story-body h3{font-size:17px;font-weight:500;color:var(--gold);margin:12px 0 24px}
.story-screen .dialogue-text{line-height:2.15;margin:0}
.story-screen .actions{margin-top:auto;flex-shrink:0;padding-top:16px;justify-content:center}.story-screen .actions button{text-align:center}
.story-screen .eyebrow{text-align:center}
.archive-list h3{overflow-wrap:anywhere}.archive-list summary{cursor:pointer;padding:12px 0;line-height:1.8;font-size:13px;color:var(--gold)}
.desk>button.reset-button{display:block;margin-top:20px;border-color:#a68b70;font-size:12px}.reset-confirm{border:1px solid #a68b70;background:var(--panel-deep);padding:16px}.reset-confirm h3{margin-top:0}.reset-confirm button+button{margin:8px 0 0 8px}.reset-confirm .reset-button{border-color:#a68b70}
.archive-list .archive-night p{margin:8px 0}.desk>button+.stack{margin-top:12px}
@media(max-width:760px){body[data-view="intro"] .desk{order:0}.story-screen{min-height:360px;padding:28px 22px;gap:24px}.story-body h3{font-size:16px}.story-screen .actions{margin-top:8px}}

.story-confirm-actions{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:auto;padding-top:16px}.story-confirm-actions button{max-width:100%;text-align:center;overflow-wrap:anywhere}.story-confirm-actions .quiet{font-size:12px}
@media(max-width:760px){body[data-view="spoiler"] .desk{order:0}.story-confirm-actions{margin-top:0;padding-top:0}}

.story-list{max-height:520px;overflow-y:auto;padding:4px}.story-list:focus-within{scroll-behavior:auto}
@media(max-width:760px){.story-list{max-height:400px}}

.production-notice{width:100%;margin:0;color:var(--muted);font-size:10px;line-height:1.9;letter-spacing:normal;text-align:center;overflow-wrap:anywhere}
