:root{color-scheme:dark;--bg:#0e120f;--card:#182019;--line:#344238;--text:#edf3ed;--muted:#9cab9f;--accent:#b8d49b;--red:#d06a6a}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top,#1c261e,#0d110e 45%);color:var(--text);font:16px/1.6 system-ui,-apple-system,"Microsoft YaHei",sans-serif;min-height:100vh}button,input,textarea,select{font:inherit;color:inherit}button{background:#243127;border:1px solid #405144;border-radius:12px;padding:.65rem .9rem}button:disabled{opacity:.45}.primary{background:#b8d49b;color:#122014;border:0;font-weight:700}.danger{background:#5b272a;border-color:#9e4d52}.top{position:sticky;top:0;z-index:20;height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#0f1511e8;backdrop-filter:blur(12px);border-bottom:1px solid #2c392f}.top b{display:block;font-size:1.2rem}.top small{display:block;color:var(--muted)}.top-actions{display:flex;align-items:center;gap:8px}.dot{width:10px;height:10px;border-radius:50%;background:#738273;display:inline-block}.dot.on{background:#7edd89;box-shadow:0 0 10px #7edd89}.dot.off{background:#b85d5d}main{max-width:880px;margin:auto;padding:16px 16px 90px}.view{display:none}.view.active{display:block}.hero{padding:42px 8px 26px}.hero h1{font-size:2rem;margin:0 0 8px}.hero p,.note,small{color:var(--muted)}h1{margin:.5rem 0 1rem}h2{font-size:1.1rem;margin:1.4rem 0 .7rem}label{display:block;margin:12px 0;color:#c9d5cb}input,textarea,select{width:100%;background:#111713;border:1px solid #3a493d;border-radius:12px;padding:12px;margin-top:5px}textarea{resize:vertical}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.cards{display:grid;gap:10px}.card,.status-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}.card h3{margin:0}.card small{display:block}.card-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.checks{display:grid;grid-template-columns:1fr 1fr;gap:8px}.check{display:flex;gap:10px;align-items:flex-start;background:var(--card);border:1px solid var(--line);padding:10px;border-radius:12px}.check input{width:auto;margin-top:5px}.story-head{display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:72px;z-index:10;background:#0e120fe8;padding:8px 0}.story-head div{min-width:0}.story-head b,.story-head small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#record{background:#141b16;border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin:8px 0}#feed{padding:8px 0 150px}.msg{background:#151c17;border:1px solid #2f3b32;border-radius:14px;padding:14px;margin:10px 0;white-space:pre-wrap}.msg.player{margin-left:12%;background:#263127}.msg .meta{display:flex;justify-content:space-between;color:var(--muted);font-size:.8rem;margin-bottom:6px}.node-tools{display:flex;gap:6px;justify-content:flex-end;margin-top:10px}.node-tools button{padding:.35rem .55rem}.composer{position:fixed;bottom:58px;left:0;right:0;z-index:15;display:flex;gap:8px;padding:10px max(12px,calc((100vw - 880px)/2));background:#0e120ff0;border-top:1px solid var(--line)}.composer textarea{margin:0;min-height:52px}.composer button{width:82px}.progress{position:fixed;right:12px;bottom:128px;z-index:30;max-width:330px;background:#1a231c;border:1px solid #536559;border-radius:14px;padding:12px;display:flex;gap:10px;box-shadow:0 10px 40px #0008}.progress.hidden{display:none}.progress>span{width:12px;height:12px;background:#b8d49b;border-radius:50%;animation:pulse 1s infinite}.progress b,.progress small{display:block}@keyframes pulse{50%{opacity:.25;transform:scale(.7)}}.bottom{position:fixed;bottom:0;left:0;right:0;z-index:25;height:58px;background:#0c100de8;border-top:1px solid #2d392f;display:grid;grid-template-columns:repeat(4,1fr);backdrop-filter:blur(12px)}.bottom button{border:0;border-radius:0;background:transparent;color:var(--muted)}.bottom button.active{color:var(--text);background:#1a221c}.status-card{display:flex;align-items:center;gap:12px}.two-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.tabs{display:flex;gap:8px;overflow:auto}.tabs button.active{background:#b8d49b;color:#122014}.filebtn{display:block;border:1px solid #405144;border-radius:12px;padding:.65rem .9rem;text-align:center}.filebtn input{display:none}.lib-item{display:flex;justify-content:space-between;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px;margin:8px 0}.lib-item div{min-width:0}.lib-item b,.lib-item small{display:block}.hidden{display:none!important}dialog{width:min(92vw,650px);background:#151c17;color:var(--text);border:1px solid var(--line);border-radius:16px}dialog::backdrop{background:#000a}dialog menu{display:flex;justify-content:flex-end;gap:8px}#fxCanvas,#fxOverlay{position:fixed;inset:0;pointer-events:none;z-index:60}.blood-flash{background:#7a001c55}.shake{animation:shake .08s linear 8}@keyframes shake{50%{transform:translate(5px,-3px)}}@media(max-width:600px){main{padding:10px 10px 90px}.two,.checks,.two-buttons{grid-template-columns:1fr}.hero{padding-top:28px}.hero h1{font-size:1.6rem}.story-head{top:64px}.composer{padding:8px 10px}.msg.player{margin-left:6%}}

/* v14：全景账本、故事卷与职责模型 */
.story-tools{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.story-tools button{padding:8px 10px}
.phone-model-routing{display:grid;gap:12px}.phone-role-card{padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.03)}.phone-role-card>div b,.phone-role-card>div small{display:block}.phone-role-card>div small{opacity:.68;margin:4px 0 10px;line-height:1.45}
.panorama-mobile{text-align:left;max-height:58vh;overflow:auto}.panorama-mobile p{line-height:1.6}.panorama-pre{white-space:pre-wrap;overflow-wrap:anywhere;padding:12px;border-radius:12px;background:rgba(0,0,0,.24);line-height:1.65;font-family:inherit}.book-entry{padding:12px 0;border-bottom:1px solid var(--line)}.book-entry small{opacity:.62}.book-entry p{line-height:1.75}.usage-mobile{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.usage-mobile>div{padding:14px;border:1px solid var(--line);border-radius:12px}.usage-mobile b,.usage-mobile small{display:block}.usage-mobile b{font-size:1.25rem}.usage-mobile small{opacity:.65;margin-top:4px}

/* V15：明确的按键反馈、同步状态和轻量提示 */
button,.filebtn{position:relative;overflow:hidden;touch-action:manipulation;transition:transform .12s ease,filter .12s ease,box-shadow .16s ease,border-color .16s ease;background-clip:padding-box;-webkit-tap-highlight-color:transparent}
button:hover,.filebtn:hover{filter:brightness(1.07);border-color:#5b7160}
button:active,button.pressed,.filebtn:active,.filebtn.pressed{transform:scale(.965);filter:brightness(1.18)}
button:focus-visible,.filebtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
button.working::after{content:"";display:inline-block;width:.75em;height:.75em;margin-left:.55em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-.08em;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.toasts{position:fixed;left:50%;bottom:78px;z-index:100;display:grid;gap:8px;width:min(92vw,520px);transform:translateX(-50%);pointer-events:none}
.toast{opacity:0;transform:translateY(12px) scale(.98);padding:12px 14px;border-radius:13px;background:#202a22;border:1px solid #536659;box-shadow:0 12px 38px #000a;color:var(--text);transition:.2s ease;overflow-wrap:anywhere}
.toast.show{opacity:1;transform:none}.toast.error{background:#4c2225;border-color:#a8585e}.toast.success{background:#213b28;border-color:#68a875}
#sync .status-card{box-shadow:inset 0 0 0 1px #ffffff08}.dot.on{animation:onlinePulse 1.8s ease-in-out infinite}@keyframes onlinePulse{50%{box-shadow:0 0 18px #7edd89}}
@media(max-width:600px){button{min-height:46px}.top-actions button{min-width:54px}.node-tools button{min-height:38px}.toasts{bottom:70px}}
