:root{--ink:#2b2118;--paper:#f3e7cf;--paper-2:#e8d6b4;--gold:#d9a441;--ember:#e0762f;--shade:#100c08b8;--serif:"Gowun Batang", "Noto Serif KR", serif;--sans:"Noto Sans KR", system-ui, sans-serif}*{box-sizing:border-box}html,body{height:100%;font-family:var(--sans);color:var(--paper);-webkit-user-select:none;user-select:none;background:#0d0b09;margin:0;overflow:hidden}#view{width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}.fade{opacity:0;background:#000;transition:opacity .9s;position:fixed;inset:0;pointer-events:none!important}.card{text-align:center;opacity:0;place-items:center;transition:opacity 1.2s;display:grid;position:fixed;inset:0;pointer-events:none!important}.card.show{opacity:1}.card .kicker{font-family:var(--sans);letter-spacing:.4em;color:var(--gold);margin-bottom:14px;font-size:13px}.card .title{font-family:var(--serif);text-shadow:0 2px 18px #0009;font-size:clamp(28px,4vw,46px);font-weight:700}.card .line{font-family:var(--serif);opacity:.9;text-shadow:0 2px 12px #000c;max-width:720px;margin-top:18px;font-size:clamp(17px,1.8vw,22px);line-height:1.8}.title-screen{text-align:center;background:radial-gradient(at 50% 60%,#46280a40,#000000bf);flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.title-screen .lamp{background:radial-gradient(circle,#fff3c4 0%,#f2b84b 45%,#f2b84b00 70%);border-radius:50%;width:18px;height:18px;margin-bottom:36px;animation:3.2s ease-in-out infinite flicker;box-shadow:0 0 60px 30px #f2b84b59}@keyframes flicker{0%,to{opacity:.85;transform:scale(1)}45%{opacity:1;transform:scale(1.08)}60%{opacity:.75}}.title-screen h1{font-family:var(--serif);letter-spacing:.08em;text-shadow:0 4px 30px #000000b3;margin:0;font-size:clamp(40px,6vw,76px)}.title-screen h2{font-family:var(--serif);color:var(--paper-2);margin:12px 0 44px;font-size:clamp(18px,2vw,24px);font-weight:400}.title-screen .menu{flex-direction:column;gap:10px;min-width:240px;display:flex}.btn{font-family:var(--sans);color:var(--paper);cursor:pointer;background:#1e140a99;border:1px solid #d9a44199;border-radius:6px;padding:12px 22px;font-size:16px;transition:background .15s,transform .15s}.btn:hover,.btn:focus-visible{background:#d9a44140;outline:none;transform:translateY(-1px)}.btn[disabled]{opacity:.4;cursor:default}.title-screen .hint{color:#f3e7cf99;margin-top:40px;font-size:13px;line-height:1.8}.loading{color:#f3e7cfb3;min-height:1.4em;margin-top:24px;font-size:13px}.dialogue{width:min(880px,100vw - 32px);color:var(--ink);font-family:var(--serif);background:linear-gradient(#f3e7cff7,#e8d6b4f7);border-radius:10px;padding:20px 26px 18px;display:none;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 12px 40px #00000073,inset 0 0 0 1px #5a3c1e40}.dialogue.show{animation:.25s rise;display:block}@keyframes rise{0%{opacity:0;transform:translate(-50%,10px)}}.dialogue .who{color:var(--paper);font-family:var(--sans);background:#5a3a1e;border-radius:5px;padding:5px 14px;font-size:14px;font-weight:600;position:absolute;top:-15px;left:22px;box-shadow:0 3px 10px #0000004d}.dialogue .who:empty{display:none}.dialogue .text{white-space:pre-wrap;min-height:3.5em;font-size:19px;line-height:1.75}.dialogue.narration .text{color:#4a3a2a;font-style:normal}.dialogue.thought .text{color:#5d4a6e}.dialogue .more{font-size:12px;font-family:var(--sans);color:#2b21188c;animation:1.2s steps(2,end) infinite blink;position:absolute;bottom:10px;right:18px}@keyframes blink{50%{opacity:0}}.choices{flex-direction:column;gap:8px;margin-top:12px;display:flex}.choice{text-align:left;font-family:var(--serif);color:var(--ink);cursor:pointer;background:#ffffff73;border:1px solid #5a3c1e4d;border-radius:6px;padding:9px 14px;font-size:17px;transition:background .12s}.choice:hover,.choice.sel{background:#d9a44159}.choice .key{width:22px;font-family:var(--sans);color:#2b211899;font-size:12px;display:inline-block}.choice .tag{font-family:var(--sans);color:var(--paper);vertical-align:2px;background:#5a3a1e;border-radius:4px;margin-left:8px;padding:2px 6px;font-size:11px}.hud-objective{background:var(--shade);border-left:3px solid var(--gold);border-radius:4px;max-width:340px;padding:10px 14px;font-size:14px;line-height:1.6;transition:opacity .4s;position:fixed;top:18px;left:18px}.hud-objective .label{letter-spacing:.2em;color:var(--gold);font-size:11px}.hud-objective ul{margin:4px 0 0;padding-left:18px}.hud-objective li.done{opacity:.5;text-decoration:line-through}.hud-time{background:var(--shade);text-align:right;border-radius:4px;padding:8px 14px;font-size:13px;line-height:1.6;position:fixed;top:18px;right:18px}.hud-time b{font-family:var(--serif);color:var(--paper);font-size:15px}.hud-keys{color:#f3e7cfa6;text-align:right;font-size:12px;line-height:1.8;position:fixed;bottom:18px;right:18px}kbd{min-width:20px;font-family:var(--sans);text-align:center;background:#f3e7cf26;border:1px solid #f3e7cf4d;border-radius:4px;padding:1px 6px;font-size:11px;display:inline-block}.prompt{color:var(--paper);white-space:nowrap;background:#140e08d1;border:1px solid #d9a44199;border-radius:5px;padding:5px 11px;font-size:14px;display:none;position:fixed;transform:translate(-50%,-100%);pointer-events:none!important}.prompt.show{display:block}.nameplate{color:#f3e7cfe6;text-shadow:0 1px 4px #000000e6;white-space:nowrap;font-size:12px;position:fixed;transform:translate(-50%,-100%);pointer-events:none!important}.toast-wrap{flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;top:76px;left:50%;transform:translate(-50%);pointer-events:none!important}.toast{background:#1e140ae0;border:1px solid #d9a441b3;border-radius:20px;padding:8px 18px;font-size:14px;animation:3.6s forwards toast}.toast .k{color:var(--gold);margin-right:8px;font-weight:600}@keyframes toast{0%{opacity:0;transform:translateY(-8px)}10%,80%{opacity:1;transform:none}to{opacity:0}}.journal{background:#0000008c;place-items:center;display:none;position:fixed;inset:0}.journal.show{display:grid}.journal .book{width:min(920px,100vw - 32px);max-height:calc(100vh - 60px);color:var(--ink);font-family:var(--serif);background:linear-gradient(90deg,#efe1c4 0%,#f6ecd6 49.6%,#d9c7a2 50%,#f6ecd6 50.4%,#efe1c4 100%);border-radius:8px;grid-template-columns:1fr 1fr;gap:40px;padding:28px 34px;display:grid;overflow:auto;box-shadow:0 20px 60px #0009}.journal h3{margin:0 0 6px;font-size:20px}.journal .sub{font-family:var(--sans);color:#2b211899;margin-bottom:16px;font-size:12px}.journal dl{margin:0}.journal dt{margin-top:12px;font-weight:700}.journal dd{color:#4a3a2a;margin:2px 0 0;font-size:15px;line-height:1.65}.journal dd.new:after{content:"새로";font-family:var(--sans);background:var(--ember);color:#fff;vertical-align:2px;border-radius:3px;margin-left:6px;padding:1px 5px;font-size:10px}.journal .close{text-align:center;font-family:var(--sans);color:#2b21188c;grid-column:1/-1;font-size:12px}.dice{background:#00000073;place-items:center;display:none;position:fixed;inset:0}.dice.show{display:grid}.dice .panel{text-align:center;background:#18100af0;border:1px solid #d9a44199;border-radius:12px;min-width:340px;padding:26px 40px 22px;box-shadow:0 20px 60px #0009}.dice .what{letter-spacing:.12em;color:var(--gold);font-size:13px}.dice .label{font-family:var(--serif);margin:6px 0 18px;font-size:22px}.dice .d20{width:110px;height:110px;font-family:var(--serif);color:var(--ink);background:var(--paper);clip-path:polygon(50% 0,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%);place-items:center;margin:0 auto;font-size:46px;font-weight:700;display:grid}.dice .d20.rolling{animation:.12s linear infinite spin}@keyframes spin{50%{transform:rotate(14deg)scale(.95)}}.dice .d20.crit{background:var(--gold)}.dice .d20.fumble{background:#8a8a8a}.dice .math{min-height:1.5em;margin-top:16px;font-size:15px}.dice .result{font-family:var(--serif);min-height:1.4em;margin-top:6px;font-size:26px}.dice .result.ok{color:#9fd38a}.dice .result.no{color:#e48f7a}.dice .vs{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;font-size:13px;display:grid}.dice .vs div{background:#f3e7cf14;border-radius:6px;padding:6px}.dice .vs b{font-family:var(--serif);font-size:22px;display:block}.dice .go{margin-top:16px}.meter{background:var(--shade);text-align:center;border-radius:10px;width:min(520px,100vw - 40px);padding:14px 18px;position:fixed;bottom:120px;left:50%;transform:translate(-50%)}.meter .bar{background:#f3e7cf1f;border-radius:9px;height:18px;margin:10px 0 6px;position:relative;overflow:hidden}.meter .fill{background:linear-gradient(90deg,#c88a3a,#f2c66d);width:0;transition:width .1s;position:absolute;inset:0 auto 0 0}.meter .zone{background:#9fd38a59;border-left:2px solid #9fd38a;border-right:2px solid #9fd38a;position:absolute;top:0;bottom:0}.meter .needle{background:#fff;border-radius:2px;width:4px;margin-left:-2px;position:absolute;top:-3px;bottom:-3px;box-shadow:0 0 8px #fff}.meter .info{color:#f3e7cfcc;font-size:13px}.race-hud{background:var(--shade);border-radius:10px;width:min(620px,100vw - 40px);padding:10px 16px;font-size:13px;position:fixed;top:18px;left:50%;transform:translate(-50%)}.race-hud .lane{grid-template-columns:70px 1fr;align-items:center;gap:10px;margin:4px 0;display:grid}.race-hud .track{background:#f3e7cf1f;border-radius:5px;height:10px;position:relative}.race-hud .boat{background:var(--paper-2);border-radius:50%;width:18px;height:18px;margin-left:-9px;position:absolute;top:-4px}.race-hud .lane.me .boat{background:var(--gold);box-shadow:0 0 10px var(--gold)}.race-hud .heat{text-align:center;font-family:var(--serif);margin-bottom:4px;font-size:16px}.summary{background:#080604d1;place-items:center;animation:1.5s fadein;display:grid;position:fixed;inset:0}@keyframes fadein{0%{opacity:0}}.summary .sheet{width:min(760px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--ink);font-family:var(--serif);background:linear-gradient(#f3e7cf,#e6d3ad);border-radius:10px;padding:30px 38px;overflow:auto}.summary h2{margin:0;font-size:28px}.summary .sub{font-family:var(--sans);letter-spacing:.2em;color:#8a6a3a;margin-bottom:18px;font-size:12px}.summary h4{font-family:var(--sans);letter-spacing:.1em;color:#6b4a22;margin:20px 0 6px;font-size:13px}.summary ul{margin:0;padding-left:20px;line-height:1.8}.summary .check li::marker{content:"✓  ";color:#4c7a3a}.summary .check li.miss::marker{content:"·  ";color:#999}.summary .check li.miss{color:#8a7a6a}.summary .row{justify-content:center;gap:10px;margin-top:26px;display:flex}.summary .btn{color:var(--ink);background:#ffffff80;border-color:#5a3c1e66}html,body{touch-action:none;overscroll-behavior:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.t-only{display:none}body.touch .t-only{display:inline}body.touch .k-only,body.touch .hud-keys,body.touch .prompt kbd,body.touch .dice kbd,body.touch .title-screen .hint kbd{display:none}.dice,.journal,.summary{z-index:20}.touch-pad,.touch-bar,.oars{display:none}body.touch .touch-pad.show{display:block}body.touch .touch-bar.show{display:flex}body.touch .oars{display:block}.stick{left:calc(28px + env(safe-area-inset-left));bottom:calc(28px + env(safe-area-inset-bottom));touch-action:none;background:radial-gradient(circle,#f3e7cf14,#f3e7cf29);border:2px solid #f3e7cf59;border-radius:50%;width:136px;height:136px;position:fixed}.stick.on{border-color:#d9a441cc}.stick .knob{pointer-events:none;background:#f3e7cfbf;border-radius:50%;width:60px;height:60px;margin:-30px 0 0 -30px;position:absolute;top:50%;left:50%;box-shadow:0 4px 14px #0006}.act{right:calc(30px + env(safe-area-inset-right));bottom:calc(40px + env(safe-area-inset-bottom));width:96px;height:96px;color:var(--paper);font-family:var(--sans);opacity:.45;touch-action:none;background:#1e140a73;border:2px solid #f3e7cf4d;border-radius:50%;padding:8px;font-size:13px;line-height:1.3;transition:opacity .15s,transform .1s;position:fixed}.act:before{content:"E";font-size:22px;font-weight:600;display:block}.act.ready{opacity:1;border-color:var(--gold);background:#d9a44159;box-shadow:0 0 22px #d9a44173}.act.ready:before{content:"";display:none}.act:active{transform:scale(.94)}.touch-bar{right:calc(14px + env(safe-area-inset-right));top:calc(84px + env(safe-area-inset-top));flex-direction:column;gap:8px;position:fixed}.tbtn{min-width:52px;height:44px;color:var(--paper);font-family:var(--sans);touch-action:none;background:#140e0899;border:1px solid #f3e7cf4d;border-radius:8px;font-size:13px}.oar{bottom:calc(24px + env(safe-area-inset-bottom));width:min(38vw,220px);height:120px;color:var(--paper);font-family:var(--sans);touch-action:none;background:#1e140a8c;border:2px solid #d9a44199;border-radius:18px;font-size:16px;position:fixed}.oar:active{background:#d9a44166}.oar.l{left:calc(20px + env(safe-area-inset-left))}.oar.r{right:calc(20px + env(safe-area-inset-right))}body.touch .prompt{padding:6px 12px;font-size:15px}body.touch .choice{padding:12px 14px;font-size:17px}body.touch .choice .key{display:none}@media (max-width:900px),(max-height:520px){.dialogue{bottom:calc(12px + env(safe-area-inset-bottom));padding:16px 18px 14px}.dialogue .text{min-height:2.6em;font-size:16px;line-height:1.65}.choices{max-height:46vh;overflow-y:auto}.choice{font-size:15px}.hud-objective{top:calc(10px + env(safe-area-inset-top));left:calc(10px + env(safe-area-inset-left));max-width:min(300px,60vw);padding:7px 10px;font-size:12px}.hud-objective ul{display:none}.hud-objective.open ul{display:block}.hud-objective .label:after{content:" ▾"}.hud-time{top:calc(10px + env(safe-area-inset-top));right:calc(10px + env(safe-area-inset-right));padding:6px 10px;font-size:11px}.hud-time b{font-size:13px}.touch-bar{top:calc(62px + env(safe-area-inset-top))}.toast-wrap{top:calc(54px + env(safe-area-inset-top));width:90vw}.toast{text-align:center;font-size:12px}.journal .book{background:#f3e7cf;grid-template-columns:1fr;gap:18px;padding:20px}.dice .panel{width:min(340px,90vw);min-width:0;padding:18px 20px}.race-hud{top:calc(8px + env(safe-area-inset-top));padding:6px 12px;font-size:11px}.meter{bottom:40%}.summary .sheet{padding:22px 20px}.card .line{padding:0 20px}}@media (max-height:420px){.stick{width:116px;height:116px;left:calc(18px + env(safe-area-inset-left));bottom:calc(14px + env(safe-area-inset-bottom))}.act{width:84px;height:84px;bottom:calc(20px + env(safe-area-inset-bottom))}.race-hud .lane{margin:1px 0}.oar{height:90px}}
