:root{--bg:#243b32;--text:#f3ecdc;--muted:#afbeb0;--gold:#ddbd7f;--line:#ffffff26;--ink:#384b3f;--paper:#f4edda;--serif:"Noto Serif TC","PMingLiU",serif}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 20% 0,#425c44 0,transparent 60%),radial-gradient(ellipse at 90% 90%,#384d3a,transparent 70%),var(--bg);color:var(--text);font-family:"Microsoft JhengHei",system-ui,sans-serif;min-height:100vh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;background:transparent;border:1px solid var(--line);border-radius:5px;padding:9px 12px;transition:background .2s,border-color .2s}button:hover{border-color:var(--gold);background:#ddbd7f18}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button:disabled{opacity:.5;cursor:default}[hidden]{display:none!important}.topbar{max-width:1600px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:28px 38px;border-bottom:1px solid var(--line)}.brand{color:var(--text);text-decoration:none;display:flex;align-items:center;gap:15px;font-family:var(--serif);font-size:31px;letter-spacing:5px;font-weight:700}.brand-icon{width:48px;height:48px;border:1px solid var(--gold);display:grid;place-items:center;color:var(--gold);font-size:30px;transform:rotate(-5deg);border-radius:50% 50% 4px 4px}.brand small{display:block;font-family:system-ui;font-size:9px;letter-spacing:3px;font-weight:400;color:var(--gold);margin-top:5px}.edition{font-family:var(--serif);font-size:16px;color:var(--gold);letter-spacing:2px}.edition span{display:block;font-family:system-ui;font-size:10px;letter-spacing:1px;margin-top:7px;color:var(--muted)}nav{display:flex;gap:8px}nav button{font-size:12px;padding:10px 14px}.quiet{color:var(--muted)}.layout{max-width:1600px;margin:auto;padding:27px 38px;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:27px}.play-column{min-width:0}.chapter{display:flex;justify-content:space-between;gap:15px;color:var(--muted);margin:0 0 14px;font-size:11px;letter-spacing:1px}.chapter span:first-child{color:var(--gold)}.game-frame{position:relative;border:1px solid #dfc790;border-radius:8px;overflow:hidden;background:#718666;box-shadow:0 0 0 5px #192d2655,0 18px 50px #091c2355}#world{display:block;width:100%;aspect-ratio:3/2;touch-action:none}.location{position:absolute;top:20px;left:20px;background:#f8f0dcf2;color:var(--ink);border:1px solid #d3be92;box-shadow:0 3px 15px #21342222;display:flex;align-items:center;gap:9px;border-radius:3px;padding:11px 15px;font-size:14px;font-family:var(--serif);font-weight:700;pointer-events:none}.location small{font-family:system-ui;font-weight:400;color:#73806a;border-left:1px solid #c6ba99;padding-left:10px;font-size:10px}.location-dot{width:6px;height:6px;transform:rotate(45deg);background:#78844e}.map-tag{position:absolute;top:21px;right:20px;color:#fff;font-size:10px;text-shadow:0 1px 6px #000}.map-tag span{color:var(--gold)}.map-tag button{background:#294638e8;border-color:#ead7af99;font-size:11px;padding:10px}.context{position:absolute;bottom:16px;left:16px;right:16px;background:#f7f0dfef;color:var(--ink);display:flex;gap:13px;align-items:center;padding:12px 15px;border:1px solid #d6bf91;border-radius:4px;font-size:13px;box-shadow:0 4px 20px #25382533}.context-icon{font-size:25px;color:#ad8545}.context-copy{flex:1;min-width:0}.context-copy small{display:block;font-size:9px;letter-spacing:2px;color:#8b8c71;margin-bottom:4px}.context button{background:#49634d;color:#fff5dc;border-color:#49634d;flex-shrink:0;font-weight:700;min-width:86px;padding:11px 15px}kbd{font-size:10px;background:#ffffff0e;border:1px solid #9fa79055;border-radius:3px;padding:2px 5px}.context kbd{margin-left:6px}.below-map{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:11px;margin:18px 0 25px}.footnote{border-top:1px solid var(--line);padding-top:18px;font-size:11px;line-height:1.9;color:var(--muted)}.footnote button{padding:0;border:none;color:var(--gold);font-size:11px}.sidebar{display:flex;flex-direction:column;gap:18px}.character-card{border:1px solid #d9c18b;border-radius:7px;background:#1e342b;overflow:hidden;box-shadow:0 6px 20px #11251f44}.portrait-wrap{height:214px;position:relative;overflow:hidden}.hero-portrait{width:100%;height:100%;object-fit:cover;object-position:50% 27%}.portrait-wrap:after{content:"";position:absolute;inset:30% 0 0;background:linear-gradient(transparent,#19352aed)}.portrait-caption{position:absolute;z-index:1;bottom:17px;left:20px;right:20px}.overline{font-size:10px;letter-spacing:3px;color:#eee1b8}h1{font-family:var(--serif);font-size:23px;letter-spacing:2px;margin:7px 0}.character-card #level{font-size:10px;color:var(--gold);letter-spacing:1px}.character-stats{padding:15px 20px 17px}.sanity-row{display:flex;justify-content:space-between;font-size:11px;margin-bottom:9px}.meter{height:7px;background:#12271f;border-radius:8px;overflow:hidden}.meter div{height:100%;background:#8cbaa2;transition:width .4s}.character-card p{margin:10px 0 0;color:var(--muted);font-size:10px}.quest-panel{border:1px solid #cab789;border-radius:6px;background:linear-gradient(100deg,#e7dcc2 0,#f6efde 6%,#f1e9d5 100%);color:var(--ink);padding:21px;position:relative;box-shadow:0 5px 20px #12271f44}.quest-panel:before{content:"";position:absolute;right:23px;top:-5px;width:15px;height:27px;background:#8f584a;clip-path:polygon(0 0,100% 0,100% 100%,50% 78%,0 100%)}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:8px}.panel-heading h2{font-family:var(--serif);font-size:20px;margin:0;letter-spacing:2px}.panel-heading>span{font-size:11px;color:#7a704f;margin-right:24px}.panel-heading small{font-size:10px;color:var(--muted)}.panel-hint{font-size:10px;color:#85836c;margin:10px 0 14px}.quest-item{display:flex;width:100%;gap:11px;align-items:center;text-align:left;border:none;border-top:1px solid #c7b9946b;border-radius:0;padding:12px 0;color:var(--ink)}.quest-item:hover{background:#9c9f7220;border-color:#c7b9946b}.quest-item .number{color:#978a64;font:12px Georgia,serif;border:1px solid #b6ac8c;border-radius:50%;width:26px;height:26px;display:grid;place-items:center;flex-shrink:0}.quest-item strong{display:block;font-size:13px;font-weight:600}.quest-item small{display:block;font-size:10px;color:#82816a;margin-top:5px;line-height:1.6}.quest-item.selected{background:#b1b28b26}.quest-item.selected strong{color:#416545}.quest-item.selected .number{background:#587358;border-color:#587358;color:#f9f0d6}.quest-item.done .number{color:#446d4f;background:#a6b69b33}.final-track{margin-top:13px;width:100%;text-align:left;border-color:#a9956999;color:#665936;background:#d5c39326;font-family:var(--serif);font-size:14px;padding:12px}.final-track span{display:block;font-family:system-ui;font-size:10px;margin:6px 0 0 17px;color:#8a7e60}.mini-panel{border:1px solid #d2c18d50;border-radius:6px;background:#1d352a;padding:16px}.mini-panel .panel-heading h2{font-size:15px}#minimap{width:100%;height:auto;display:block;margin-top:12px;border:1px solid #d3c395;border-radius:3px}.player-dot{color:var(--gold)}.legend{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);margin-top:10px}.bag{padding:0 5px;display:flex;justify-content:space-between;align-items:center;font-size:12px}.bag b{color:var(--gold);padding:1px 6px;margin-left:5px}.bag button{border:none;color:var(--gold);font-size:11px}.touch-controls{display:none}.toast{position:absolute;top:78px;left:50%;transform:translateX(-50%);background:#294337f5;color:#f5e3b7;border:1px solid #dbc699;border-radius:5px;padding:12px 20px;text-align:center;font-size:12px;max-width:85%;width:max-content;pointer-events:none;box-shadow:0 5px 18px #0003}.art-loading{position:absolute;inset:0;z-index:4;background:radial-gradient(ellipse,#546c48,#253d31);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#eddfb5}.art-loading>span{font-family:var(--serif);font-size:40px;letter-spacing:8px}.art-loading p{font-size:12px;margin-top:20px;letter-spacing:2px}.art-loading button{border-color:var(--gold)}
dialog{background:linear-gradient(110deg,#f8f2e4,#efe4ce);color:var(--ink);border:1px solid #c8b183;border-radius:8px;padding:24px 28px;width:min(860px,calc(100% - 28px));max-height:88dvh;box-shadow:0 20px 100px #0007;scrollbar-color:#b8b197 #ece4cf}dialog::backdrop{background:#0b241bd9;backdrop-filter:blur(5px)}.dialog-top{display:flex;justify-content:space-between;align-items:center;color:#8b754a;font-size:11px;letter-spacing:2px;border-bottom:1px solid #c8b8917a;padding-bottom:8px}.dialog-top button{border:none;padding:5px 9px;font-size:17px;color:#68785b}.dialog-layout{display:flex;gap:25px;align-items:flex-start}.dialog-copy{flex:1;min-width:0}#dialogPortrait{width:170px;flex-shrink:0;position:sticky;top:10px;margin-top:30px;text-align:center;background:radial-gradient(ellipse,#d9dfc3,transparent 68%)}#dialogCast{width:100%;height:auto;display:block}#speakerName{display:inline-block;padding:6px 14px;border-top:1px solid #b7a77c;border-bottom:1px solid #b7a77c;font-family:var(--serif);font-size:16px;letter-spacing:2px}dialog h2{font-family:var(--serif);font-size:27px;letter-spacing:1px;margin:19px 0;line-height:1.5;color:#3b5140}#dialogBody{font-size:14px;line-height:1.85;color:#5a6351}#dialogBody p{margin:10px 0}#dialogBody .speech{border-left:3px solid #9ca471;padding:12px 15px;background:#a9b09212;color:#415440;font-size:15px}.source-note{font-size:12px;margin-top:16px;padding:14px;background:#e4dbc344;border:1px solid #bbae893b;border-radius:4px}.source-note b{color:#6c7850;display:block;margin-bottom:6px}.source-note a,dialog a{color:#8a6636;text-underline-offset:3px}.source-note .fiction{margin-top:8px;color:#83836d;font-size:11px}#dialogActions{display:grid;gap:9px;margin-top:23px}#dialogActions button{text-align:left;line-height:1.6;padding:12px 15px;min-height:44px;border-color:#b3aa8b;background:#fff9ed4d;color:#485c44}#dialogActions button:hover{background:#d6dec372;border-color:#788562}#dialogActions button.primary{background:#506d51;color:#fff4d7;border-color:#506d51;font-weight:700}.source-entry{border-top:1px solid #baa77a66;padding:14px 0}.source-entry h3{font-family:var(--serif);font-size:18px;color:#516347;margin:6px 0}.source-entry p{font-size:12px}.source-entry small{color:#928364}.ending-stamp{color:#777b4c;font-family:var(--serif);font-size:40px;letter-spacing:6px;text-align:center;border:2px solid #9b9b69;border-radius:6px;padding:14px;transform:rotate(-3deg);margin:25px}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:12px}.help-grid div{padding:12px;border:1px solid #b5ad8b66;border-radius:5px}.overview{position:relative;border:1px solid #b9ad8b;margin:15px 0}.overview img{display:block;width:100%;height:auto}.overview span{position:absolute;transform:translate(-50%,-50%);padding:4px 7px;background:#2e493eed;border:1px solid #e6d4a5;color:#fff0ca;font-size:10px;white-space:nowrap;border-radius:3px}.overview .you{background:#f5e2ac;color:#35563d}
@media(min-width:1400px){.layout{grid-template-columns:minmax(0,1fr) 340px}}@media(max-width:1100px){.topbar{padding:22px}.edition{display:none}.layout{padding:22px;grid-template-columns:minmax(0,1fr) 285px;gap:20px}.location small{display:none}.quest-panel{padding:16px}.map-tag{right:12px}.portrait-wrap{height:195px}}@media(max-width:780px){.topbar{padding:17px 16px;flex-wrap:wrap;gap:15px}.brand{font-size:25px;letter-spacing:4px}.brand-icon{width:39px;height:39px;font-size:24px}.brand small{font-size:8px}.topbar nav{margin-left:auto;gap:5px}.topbar nav button{font-size:11px;padding:8px 10px}.layout{padding:17px 12px;display:flex;flex-direction:column;gap:19px}.chapter{font-size:9px;letter-spacing:0}.chapter span:last-child{font-size:8px}#world{aspect-ratio:4/3}.location{top:10px;left:10px;padding:7px 9px;font-size:12px}.map-tag{top:10px;right:10px;font-size:0}.map-tag span{display:none}.map-tag button{font-size:10px;padding:8px}.context{bottom:9px;left:9px;right:9px;padding:8px;gap:8px;font-size:11px}.context-icon{font-size:19px}.context-copy small{font-size:8px;letter-spacing:1px}.context button{font-size:11px;min-width:60px;padding:10px}.context kbd{display:none}.below-map{display:none}.touch-controls{display:flex;align-items:center;justify-content:space-between;padding:18px 3px;gap:10px}.touch-controls p{font-size:10px;line-height:1.9;color:var(--muted)}.touch-controls p b{color:var(--gold)}.touch-controls>button{background:#e0c995;color:#304834;font-size:12px;padding:17px 10px;font-weight:700;border-color:#e0c995}.dpad{display:grid;grid-template-columns:42px 42px 42px;grid-template-rows:38px 38px;gap:4px;touch-action:none;user-select:none}.dpad button{background:#172e2555;border-color:#b6b68b66;padding:0;color:#edd9a9;touch-action:none}.dpad [data-dir=up]{grid-column:2}.dpad [data-dir=left]{grid-column:1;grid-row:2}.dpad [data-dir=down]{grid-column:2;grid-row:2}.dpad [data-dir=right]{grid-column:3;grid-row:2}.footnote{padding-top:12px;font-size:10px}.footnote button{font-size:10px}.sidebar{display:grid;grid-template-columns:1fr;gap:17px}.character-card{display:flex}.portrait-wrap{width:49%;height:190px;flex-shrink:0}.hero-portrait{object-position:50% 30%}.portrait-caption{bottom:12px;left:12px;right:6px}.portrait-caption h1{font-size:17px;letter-spacing:0}.overline{font-size:9px}.character-card #level{font-size:9px}.character-stats{flex:1;align-self:center;padding:15px}.character-card p{font-size:10px;line-height:1.8}.sanity-row{font-size:10px}.quest-panel{padding:20px}.quest-panel #questList{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.quest-item{padding:12px 0;gap:8px}.quest-item strong{font-size:11px}.quest-item small{font-size:9px}.quest-item .number{width:24px;height:24px;font-size:11px}.mini-panel{display:none}.toast{font-size:11px;top:54px;padding:9px 13px}dialog{padding:15px 19px;max-height:90dvh}.dialog-layout{gap:10px;flex-direction:column}#dialogPortrait{position:static;align-self:center;display:flex;align-items:center;justify-content:center;width:100%;height:110px;margin:6px 0 -8px;background:radial-gradient(ellipse,#d9dfc355,transparent 70%)}#dialogCast{width:100px;height:123px}#speakerName{font-size:15px;max-width:180px}dialog h2{font-size:22px;margin:15px 0}#dialogBody{font-size:13px}#dialogBody .speech{font-size:14px}.source-note{font-size:11px}.source-note .fiction{font-size:10px}.ending-stamp{font-size:28px;letter-spacing:3px;margin:20px 0}.art-loading>span{font-size:30px}.overview span{font-size:8px;padding:2px 3px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
