:root{--paper: #f2eee4;--card: #fffdf7;--ink: #241f18;--ink-soft: #6f6656;--line: #e2dac8;--line-strong: #cfc4ac;--accent: #1f567f;--accent-soft: #eaf1f6;--warn: #a8342a;--warn-soft: #fbeeeb;--ok: #2c6f4f;--radius: 12px;--radius-sm: 8px;color:var(--ink);background:var(--paper);font-family:Songti SC,STSong,SimSun,"Noto Serif SC",serif;font-size:17px;line-height:1.68;-webkit-text-size-adjust:100%;text-size-adjust:100%}*{box-sizing:border-box}body{margin:0;background:radial-gradient(1200px 500px at 50% -220px,#fbf8ef,#fbf8ef00 70%),var(--paper);color:var(--ink)}button,input{font:inherit;font-size:17px}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:transparent;border:0;color:inherit;padding:0;font:inherit}#app{min-height:100dvh}.shell{width:min(480px,100%);margin:0 auto;min-height:100dvh;padding:10px 12px calc(26px + env(safe-area-inset-bottom))}.top{display:flex;align-items:center;justify-content:space-between;margin:2px 2px 10px;padding-bottom:8px;border-bottom:1px solid var(--line)}h1,h2,p{margin:0}h1{font-size:19px;font-weight:600;letter-spacing:.08em;color:var(--accent)}h2{font-size:17px;font-weight:600}.page,.stack{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin-bottom:12px;box-shadow:0 1px 2px #3c2d140a}.page p,.stack p,.stack div{margin:3px 0}.stack>div{margin:6px 0}.stack>div+div{border-top:1px dashed var(--line);padding-top:8px}.link,.tab,.choice,.exit,.person,.primary,.ghost{display:inline;border:0;background:transparent;color:var(--accent);border-radius:5px;min-height:0;padding:1px 3px;text-decoration:underline;text-decoration-color:#1f567f42;text-decoration-thickness:1px;text-underline-offset:3px;text-align:left;transition:background-color .12s ease,color .12s ease}.link:hover,.tab:hover,.choice:hover,.exit:hover,.person:hover,.ghost:hover{background:var(--accent-soft);text-decoration-color:#1f567f8c}.link:active,.tab:active,.choice:active,.person:active{background:#dde9f2}.link[disabled],.tab[disabled],.choice[disabled]{opacity:.45;cursor:default}.tab.active,.choice.active{background:var(--accent-soft);color:var(--accent);border-bottom-color:transparent;font-weight:600}.primary{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:var(--radius-sm);padding:6px 14px;font-weight:600}.primary:hover{background:#1a4a6d}.person,.exit{display:inline;width:auto}.person b,.exit b{font-weight:600;color:var(--accent)}.person span,.exit span,.linkish{color:var(--ink-soft)}.monster b{color:var(--warn)}.muted{color:var(--ink-soft)}.small{font-size:15px}.warn{color:var(--warn)}.error{color:var(--warn);min-height:0}.error:not(:empty){background:var(--warn-soft);border-left:3px solid var(--warn);border-radius:6px;padding:4px 8px;margin:6px 0}.warn:empty,.error:empty{display:none}.vip-pic{height:17px;vertical-align:-3px}.rule{border:0;border-top:1px dashed var(--line-strong);margin:10px 0}.rule.soft{border-top-style:solid;border-top-color:var(--line)}.section-title{display:block;font-size:14px;font-weight:600;letter-spacing:.12em;color:var(--ink-soft);margin:12px 0 4px}.section-title:first-child{margin-top:0}.field{display:block;margin:8px 0}.field span{display:block;color:var(--ink-soft);font-size:15px;margin-bottom:3px}.field input{border:1px solid var(--line-strong);border-radius:var(--radius-sm);min-height:38px;padding:6px 10px;background:#fff;color:var(--ink);width:min(240px,100%)}.field input:focus{outline:2px solid rgba(31,86,127,.18);border-color:var(--accent)}.field input.wide{width:100%}.story img,.sect-card img,.map-pic{width:min(100%,280px);height:auto;display:block;margin:8px 0;border-radius:var(--radius-sm)}.map-graph{margin:8px 0 10px;padding:8px 8px 6px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);overflow:auto;max-height:62vh}.map-graph-title{margin:0 0 6px;font-size:.86em;color:var(--ink-soft)}.map-graph-hint{color:var(--accent)}.map-graph svg{display:block;flex:none}.map-graph .map-links line{stroke:var(--line-strong);stroke-width:2.5;opacity:.9}.map-graph rect{fill:#f7f2e6;stroke:var(--line-strong);stroke-width:1}.map-graph rect.cur{fill:var(--warn-soft);stroke:var(--warn);stroke-width:2}.map-graph text{fill:var(--ink);font-family:inherit;font-size:13px}.map-graph text.cur{fill:var(--warn);font-weight:700}.sect-card{display:block;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;margin:6px 0;text-align:left;background:#fff;color:var(--accent);text-decoration:none}.sect-card:hover{background:var(--accent-soft)}.note,.footer-note{margin:0;padding:0;background:transparent}.tabs,.row,.exits,.people,.choices{display:block}.tabs{margin:6px 0;display:flex;flex-wrap:wrap;gap:4px 6px}.tabs .tab{border:1px solid var(--line-strong);border-radius:999px;padding:2px 10px;background:#fff;border-bottom-width:1px;text-decoration:none}.tabs .tab:hover{background:var(--accent-soft)}.menu-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:6px 0 2px}.menu-grid .link,.menu-grid .warn{display:block;text-align:center;border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:7px 2px;background:#fff;text-decoration:none;border-bottom-width:1px;font-size:16px}.menu-grid .link:hover{background:var(--accent-soft)}.chip-row{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.chip-row .link{border:1px solid var(--line-strong);border-radius:999px;padding:2px 10px;text-decoration:none;background:#fff}.chip-row .link:hover{background:var(--accent-soft)}.sep{color:var(--line-strong)}.stack p .link{vertical-align:baseline}.stack input{min-height:32px}.page p{font-variant-numeric:tabular-nums}@media(max-width:360px){:root{font-size:16px}.menu-grid{grid-template-columns:repeat(4,1fr);gap:5px}.menu-grid .link{font-size:15px;padding:6px 0}}.item-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line)}.item-row:last-child{border-bottom:0}.item-row .item-name{flex:1;text-align:left;border-bottom:0;padding:0}.item-row .qty{color:var(--ink-soft);font-size:15px;font-variant-numeric:tabular-nums}.mini{border:1px solid var(--line-strong);border-radius:999px;padding:1px 10px;font-size:14px;color:var(--accent);background:#fff;text-decoration:none;line-height:1.5}.mini:hover{background:var(--accent-soft)}.mini.warn{color:var(--warn);border-color:#a8342a59}.back{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line-strong);border-radius:999px;padding:3px 14px 3px 10px;color:var(--accent);background:#fff;text-decoration:none;font-size:15px;margin-bottom:8px}.back:hover{background:var(--accent-soft)}.chat-send{display:flex;align-items:center;gap:8px;margin:8px 0 4px}.chat-send input{flex:1;min-width:0;min-height:38px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:6px 10px;background:#fff;color:var(--ink)}.chat-send input:focus{outline:2px solid rgba(31,86,127,.18);border-color:var(--accent)}.tabs .tab.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.menu-grid .warn{color:var(--warn);background:var(--warn-soft);border-color:#a8342a4d}.exit-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin:4px 0 8px}.exit-pill{display:flex;align-items:center;gap:6px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;padding:7px 10px;color:var(--ink);font-size:16px;text-align:left}.exit-pill:hover{background:var(--accent-soft);border-color:var(--accent)}.exit-pill:disabled{opacity:.5}.exit-pill .dir{flex:none;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:13px}@media(max-width:360px){.exit-grid{grid-template-columns:1fr}}.board-row{display:flex;align-items:baseline;gap:8px;padding:4px 0;border-bottom:1px dashed var(--line)}.board-row:last-child{border-bottom:0}.board-row .no{flex:none;width:20px;color:var(--ink-soft);font-size:14px;font-variant-numeric:tabular-nums}.board-row .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-row .val{flex:none;color:var(--ink-soft);font-variant-numeric:tabular-nums}.mini.attack{border-color:var(--accent);background:var(--accent);color:#fff;padding:4px 16px;font-size:15px}.mini.attack:hover{background:#1a4a6d}.auth-slogan{color:var(--ink-soft);font-size:15px;margin:4px 2px 10px}.auth .field input{width:100%}.wide-btn{display:block;width:100%;text-align:center;margin-top:12px;padding:10px 14px;font-size:17px}
