:root{--ink: #f4f1ea;--dim: #b9c2c9;--sea: #7fe0f0;--gold: #ffd27a;--glass: rgba(10, 22, 30, .55)}html,body{margin:0;height:100%;overflow:hidden;background:#0a1218;color:var(--ink);font-family:Inter,system-ui,sans-serif}canvas{display:block;width:100%;height:100%}#loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:radial-gradient(ellipse at 50% 35%,#1d4f6b,#071017 72%);transition:opacity .8s;z-index:10}#loading.done{opacity:0;pointer-events:none}#loading .title{font-family:Fraunces,Georgia,serif;font-size:clamp(44px,9vw,92px);letter-spacing:.01em;text-shadow:0 4px 30px rgba(0,0,0,.4)}#loading .bar{width:min(340px,70vw);height:3px;border-radius:3px;background:#ffffff1f;overflow:hidden}#loading .bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#7fe0f0,#fff2c8);transition:width .3s}#msg{color:var(--dim);font-size:14px;letter-spacing:.02em}#hud{position:fixed;inset:0;pointer-events:none;z-index:5}.prompt{position:absolute;left:50%;bottom:16%;transform:translate(-50%,8px);padding:9px 16px;border-radius:999px;background:var(--glass);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.14);font-weight:500;font-size:15px;opacity:0;transition:opacity .2s,transform .2s;white-space:nowrap}.prompt.on{opacity:1;transform:translate(-50%)}.prompt kbd,.help kbd{font:600 12px Inter,sans-serif;padding:2px 7px;border-radius:6px;background:#ffffff29;border:1px solid rgba(255,255,255,.22);margin-right:3px}.dialog{position:absolute;left:50%;bottom:5%;width:min(720px,calc(100vw - 32px));transform:translate(-50%,16px);padding:18px 22px 16px;border-radius:18px;background:linear-gradient(180deg,#0e1e28d1,#08121ae6);border:1px solid rgba(255,255,255,.12);box-shadow:0 20px 60px #00000059;opacity:0;transition:opacity .25s,transform .25s;pointer-events:auto}.dialog.on{opacity:1;transform:translate(-50%)}.dialog .name{font-family:Fraunces,Georgia,serif;font-size:20px;color:var(--gold);margin-bottom:6px}.dialog .text{font-size:17px;line-height:1.55;min-height:52px;color:#eef3f2}.dialog .choices{display:flex;flex-direction:column;gap:6px;margin-top:10px}.dialog .choices button{text-align:left;font:500 15px Inter,sans-serif;color:var(--ink);background:#ffffff12;border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:8px 12px;cursor:pointer}.dialog .choices button:hover{background:#7fe0f029}.dialog .choices b{color:var(--sea);margin-right:6px}.dialog .more{position:absolute;right:18px;bottom:12px;font-size:12px;color:var(--dim);animation:pulse 1.4s ease-in-out infinite}.dialog.has-choices .more{display:none}@keyframes pulse{50%{opacity:.35}}.quests{position:absolute;top:18px;right:18px;width:260px;display:flex;flex-direction:column;gap:8px}.quests .q{padding:9px 12px;border-radius:12px;background:var(--glass);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1)}.quests .q b{display:block;font-family:Fraunces,Georgia,serif;font-weight:600;font-size:15px;color:var(--gold)}.quests .q span{font-size:13px;color:#d4dde2}.quests .q.done{opacity:.55}.quests .q.done b{color:#9fe0b8}.toasts{position:absolute;top:18px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px}.toast{padding:12px 22px;border-radius:14px;background:#0a1a22c7;border:1px solid rgba(255,210,122,.4);text-align:center;animation:toastIn .4s ease-out;transition:opacity .7s,transform .7s}.toast b{display:block;font-family:Fraunces,Georgia,serif;font-size:22px;font-weight:600;color:var(--gold)}.toast span{font-size:14px;color:#dbe6ea}.toast.out{opacity:0;transform:translateY(-10px)}@keyframes toastIn{0%{opacity:0;transform:translateY(-14px)}}.markers{position:absolute;inset:0;overflow:hidden}.marker{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center;gap:4px;margin-left:-60px;width:120px;transition:opacity .3s}.marker i{width:12px;height:12px;transform:rotate(45deg);background:var(--gold);box-shadow:0 0 12px #ffd27ae6;border:2px solid rgba(255,255,255,.85)}.marker.npc i{background:var(--sea);box-shadow:0 0 12px #7fe0f0e6}.marker span{font-size:12px;font-weight:600;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.7);white-space:nowrap}.marker.edge{opacity:.8}.status{position:absolute;left:18px;bottom:18px;padding:8px 12px;border-radius:10px;background:var(--glass);font-size:13px;color:#d9e3e7;opacity:0;transition:opacity .3s}.status.on{opacity:1}.help{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.98);width:min(560px,calc(100vw - 32px));padding:20px 24px;border-radius:18px;background:#08121ae0;border:1px solid rgba(255,255,255,.12);line-height:2;font-size:14px;opacity:0;transition:opacity .25s,transform .25s}.help.on{opacity:1;transform:translate(-50%,-50%)}.help h3{margin:0 0 6px;font-family:Fraunces,Georgia,serif;font-weight:600;font-size:22px;color:var(--gold)}#title{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:12vh;gap:14px;background:linear-gradient(180deg,#0000 40%,#040c12a6);z-index:6;cursor:pointer;transition:opacity .6s;text-align:center}#title.gone{opacity:0;pointer-events:none}#title h1{margin:0;font-family:Fraunces,Georgia,serif;font-weight:400;font-size:clamp(48px,10vw,110px);text-shadow:0 6px 40px rgba(0,0,0,.45)}#title p{margin:0;color:#e4ecef;font-size:17px;max-width:560px;text-shadow:0 2px 10px rgba(0,0,0,.5);padding:0 16px}#title .go{font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-size:13px;color:var(--gold);animation:pulse 1.6s ease-in-out infinite}#reticle{position:fixed;left:0;top:0;width:0;height:0;pointer-events:none;z-index:5;transition:opacity .2s}#reticle:before{content:"";position:absolute;left:-2px;top:-2px;width:4px;height:4px;border-radius:50%;background:#ffffffbf;box-shadow:0 0 4px #0009}#reticle.on:after{content:"";position:absolute;left:-11px;top:-11px;width:18px;height:18px;border-radius:50%;border:2px solid rgba(160,225,255,.95);box-shadow:0 0 10px #78c8ffcc,inset 0 0 6px #78c8ff80;animation:ret 1.2s ease-in-out infinite}#reticle.off{opacity:0}@keyframes ret{50%{transform:scale(1.18)}}.status .stars{font-family:Fraunces,Georgia,serif;font-size:18px;letter-spacing:.04em;color:#f4ecd8;text-shadow:0 0 12px rgba(255,220,160,.55)}.status .carry{margin-left:12px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#bfe3ff;text-shadow:0 0 10px rgba(140,200,255,.7)}.banner{position:absolute;left:50%;top:30%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;opacity:0;transition:opacity 2.4s ease;width:min(900px,calc(100vw - 32px))}.banner.on{opacity:1}.banner h1{margin:0;font-family:Fraunces,Georgia,serif;font-weight:500;font-size:clamp(34px,6vw,72px);letter-spacing:.04em;color:#fff4dc;text-shadow:0 0 30px rgba(255,210,122,.65),0 2px 12px rgba(0,0,0,.5)}.banner p{margin:14px 0 0;font-size:clamp(14px,1.8vw,19px);color:#dcefff;text-shadow:0 1px 8px rgba(0,0,0,.7);letter-spacing:.03em}.titlescreen,.pausemenu{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 1.2s ease}.titlescreen.on,.pausemenu.on{opacity:1;pointer-events:auto}.titlescreen{background:radial-gradient(ellipse at 50% 60%,#040a1200,#040a128c);align-items:flex-end;padding-bottom:12vh}.pausemenu{background:#040a128c;backdrop-filter:blur(6px);transition:opacity .25s ease}.tcard{text-align:center;width:min(760px,calc(100vw - 32px))}.tcard h1{margin:0;font-family:Fraunces,Georgia,serif;font-weight:500;font-size:clamp(54px,11vw,128px);letter-spacing:.02em;color:#fff6e0;text-shadow:0 0 40px rgba(255,210,122,.45),0 4px 24px rgba(0,0,0,.45)}.tcard .tag{margin:8px auto 28px;max-width:560px;font-size:clamp(15px,2vw,19px);line-height:1.5;color:#e4eef4;text-shadow:0 1px 10px rgba(0,0,0,.6)}.tcard .begin,.pcard .resume{font:600 18px Inter,system-ui,sans-serif;letter-spacing:.06em;padding:14px 54px;border-radius:40px;cursor:pointer;color:#1a1408;background:linear-gradient(180deg,#fff2c8,#ffd27a);border:0;box-shadow:0 0 30px #ffd27a73;transition:transform .15s,box-shadow .15s}.tcard .begin:hover,.pcard .resume:hover{transform:translateY(-1px) scale(1.02);box-shadow:0 0 44px #ffd27ab3}.qpick{display:inline-flex;gap:6px;align-items:center;margin-top:22px}.qpick span{font-size:13px;color:#b9c9d2;margin-right:6px}.qpick button{font:500 13px Inter,system-ui,sans-serif;padding:7px 14px;border-radius:20px;cursor:pointer;color:#dfe9ee;background:#0a1a2299;border:1px solid rgba(255,255,255,.18)}.qpick button.on{background:#ffd27a33;border-color:#ffd27acc;color:#fff2c8}.tcard .qpick{display:flex;justify-content:center}.tcard .small{margin-top:18px;font-size:12.5px;color:#aebfc8;text-shadow:0 1px 6px rgba(0,0,0,.6)}.pcard{width:min(520px,calc(100vw - 32px));padding:26px 28px;border-radius:20px;background:#08121ae6;border:1px solid rgba(255,255,255,.12);text-align:center}.pcard h2{margin:0 0 18px;font-family:Fraunces,Georgia,serif;font-weight:500;font-size:34px;color:#fff2c8}.pcard .row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:16px;font-size:14px;color:#dbe6ea}.pcard .row .qpick{margin:0}.pcard .row input[type=range]{width:220px;accent-color:#ffd27a}.pcard .row .mus{font:500 13px Inter,system-ui,sans-serif;padding:6px 16px;border-radius:16px;cursor:pointer;color:#fff2c8;background:#ffd27a26;border:1px solid rgba(255,210,122,.6)}.pcard .keys{margin-top:22px;font-size:12.5px;line-height:2;color:#b9c9d2;text-align:left}@media(max-width:520px){.pcard .row input[type=range]{width:140px}}.pcard kbd,.tcard kbd{font:600 12px Inter,sans-serif;padding:2px 7px;border-radius:6px;background:#ffffff29;border:1px solid rgba(255,255,255,.22);margin-right:3px;color:#fff}kbd.pb{border-radius:99px;padding:2px 8px;background:#ffffff1f}kbd.pb.ga{background:#2f8f3a;border-color:#5fd06b}kbd.pb.gb{background:#a8322c;border-color:#ff6a5f}kbd.pb.gx{background:#2a5fae;border-color:#6aa8ff}kbd.pb.gy{background:#a88a1c;border-color:#ffd65a}
