@import"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&display=swap";:root{font-family:Georgia,"Noto Serif SC",Songti SC,serif;color:#eae6d6;background:#111b19;--ink:#eae6d6;--muted:#adb4a6;--gold:#c1a66f;--line:#c1a66f44;--glass:#14221ddd;--accent:#cfb879;font-synthesis:none}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:2px solid #ead096;outline-offset:4px}button{border:1px solid var(--line);background:#21322b80;padding:11px 17px;border-radius:2px;transition:background .18s,border-color .18s}button:hover:not(:disabled){background:#50604a80;border-color:var(--gold)}button.primary{background:#c8b27b;color:#14251e;border-color:#c8b27b}button.flat{border:0;background:none;padding:8px;color:var(--muted)}button.flat:hover{color:#fff;background:#ffffff0c}input,select{color:var(--ink);background:#0d1918;border:1px solid var(--line);padding:12px;width:100%;border-radius:2px}label{display:grid;gap:9px;font-size:13px;line-height:1.6}h1,h2,h3,p{margin:0}small{font-size:11px;letter-spacing:2px}#world{position:fixed;inset:0;outline:0;width:100%;height:100%;display:block}.vignette{pointer-events:none;position:fixed;inset:0;background:linear-gradient(180deg,#06151160,transparent 22%,transparent 74%,#07151288)}.topbar{position:fixed;top:28px;left:34px;right:34px;display:flex;align-items:flex-start;justify-content:space-between;pointer-events:none}.topbar>*{pointer-events:auto}.brand{border-left:2px solid var(--gold);padding-left:17px;text-shadow:0 2px 12px #000}.brand h1{font-size:27px;font-weight:500;letter-spacing:5px}.brand p{font:10px/1.8 sans-serif;letter-spacing:4px;margin-top:5px;color:#d3c7a7}.top-actions{display:flex;gap:8px;align-items:center}.pill{background:#15271ed9;border:1px solid #bcad8066;padding:9px 13px;font:11px/1.5 sans-serif;letter-spacing:1px}.network{color:#ccc5ad}.network:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:#c4ac7f;margin-right:8px}.compass{position:absolute;left:50%;top:4px;transform:translate(-50%);text-align:center;font-size:12px;text-shadow:0 2px 5px black;min-width:190px}.compass div{font:10px/2 sans-serif;letter-spacing:18px;color:#e4e0cd99}.compass b{font-weight:400;letter-spacing:3px}.location{position:fixed;left:36px;bottom:110px;text-shadow:0 2px 10px #000}.location p{color:#d4c292;font:10px sans-serif;letter-spacing:4px}.location h2{font-size:24px;font-weight:400;letter-spacing:4px;margin-top:8px}.location span{font-size:12px;display:block;margin-top:9px;color:#c8cec1}.quest-tracker{position:fixed;right:36px;top:132px;width:245px;padding:15px 18px;border-left:2px solid #c7b179;background:linear-gradient(90deg,#10241fbe,#10241f22);text-shadow:0 2px 4px #000}.quest-tracker small{color:#d6be7f;font-size:10px}.quest-tracker h3{font-size:16px;margin:9px 0;font-weight:500}.quest-tracker p{font:12px/1.9 sans-serif;color:#d2d7cb}.bottom{position:fixed;left:32px;right:32px;bottom:23px;display:flex;align-items:center;justify-content:space-between}.controls{font:11px/2 sans-serif;color:#dedecbe6;display:flex;gap:15px;align-items:center}kbd{font:10px sans-serif;display:inline-flex;min-width:21px;justify-content:center;align-items:center;height:21px;margin-right:6px;border:1px solid #d6d5b777;background:#15231f99;border-radius:2px}.journal-toggle{background:#15251dd9;min-width:160px;display:flex;align-items:center;justify-content:space-between;gap:25px;font-size:13px}.crosshair{position:fixed;left:50%;top:50%;height:4px;width:4px;border-radius:50%;background:#f1e6c580;pointer-events:none}.interaction{position:fixed;left:50%;bottom:115px;transform:translate(-50%);background:#14251ee8;border:1px solid var(--line);padding:12px 20px;text-align:center;font-size:13px;display:none}.panel{position:fixed;inset:100px 30px 80px auto;width:430px;background:linear-gradient(135deg,#192b25f5,#111e1af5);border:1px solid #af9e694d;box-shadow:0 22px 80px #0006;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);display:flex;flex-direction:column;z-index:20}.panel.hidden{display:none}.panel-header{padding:22px 25px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:start}.panel-header h2{font-size:22px;font-weight:400;letter-spacing:3px}.panel-header p{font-size:11px;color:var(--muted);margin-top:7px}.panel-tabs{display:flex;border-bottom:1px solid var(--line);padding:0 19px}.panel-tabs button{border:0;background:none;padding:15px 12px;font-size:12px;color:var(--muted);position:relative}.panel-tabs .selected{color:var(--accent)}.panel-tabs .selected:after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:2px;background:var(--gold)}.panel-body{overflow-y:auto;padding:21px 25px;scrollbar-width:thin;scrollbar-color:#706b50 transparent}.intro{font-size:12px;color:#c0c4b5;line-height:1.9;margin-bottom:20px}.quest-card{border-top:1px solid #b9ab7840;padding:17px 0}.quest-card:first-of-type{border-top:0}.quest-title{display:flex;align-items:center;gap:13px}.quest-icon{font-size:26px;color:var(--accent);width:34px}.quest-title h3{font-size:15px;font-weight:500}.quest-title span{display:block;margin-top:5px;color:#a5b29e;font:10px sans-serif;letter-spacing:1px}.quest-card p{font-size:12px;line-height:1.9;color:#afb9a7;margin:12px 0}.quest-foot{display:flex;justify-content:space-between;align-items:center}.quest-foot span{font:11px sans-serif;color:#c4b487}.quest-foot button{padding:7px 13px;font-size:12px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:22px}.stat{border:1px solid var(--line);padding:15px}.stat span{font-size:11px;color:#aeb7a8}.stat b{display:block;font-size:24px;font-weight:400;margin-top:8px}.inventory-row{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line);font-size:13px}.inventory-row strong{font-weight:400;color:#d1b87f}.craft{display:grid;gap:10px;margin-top:22px}.body-copy{font-size:13px;line-height:2;color:#c4c9bc}.body-copy h3{font-weight:500;color:var(--accent);font-size:15px;margin:22px 0 10px}.body-copy p{margin-bottom:14px}.body-copy strong{font-weight:500;color:#ece5cc}.notice{padding:12px 14px;font:12px/1.8 sans-serif;background:#bcaa6d0a;border-left:2px solid #ac9864;color:#c7c3ad;margin:15px 0}.toast{position:fixed;left:50%;top:107px;transform:translate(-50%);padding:12px 23px;border:1px solid var(--line);background:#11251af2;font-size:13px;z-index:90;box-shadow:0 5px 35px #0008;pointer-events:none;max-width:650px}.toast:empty{display:none}.boot{position:fixed;inset:0;background:radial-gradient(ellipse at 50% 40%,#2c4335,#0c1713);z-index:100;display:grid;place-items:center;text-align:center;transition:opacity .7s}.boot-inner{max-width:510px}.boot small{color:#b5a473;letter-spacing:7px}.boot h1{font-size:54px;font-weight:400;letter-spacing:16px;margin:25px 0 14px}.boot .subtitle{font-size:15px;letter-spacing:8px;color:#b7bfad}.boot .ornament{font-size:45px;color:#c0aa72;margin-bottom:35px}.boot p{font:12px/2 sans-serif;color:#aebbaa;margin-top:33px}.load-track{width:230px;height:1px;background:#c6b87c30;margin:25px auto}.load-track i{display:block;background:#c5b27b;height:1px;transition:width .4s;width:1%}.boot button{margin-top:15px;min-width:200px}.boot.fade{opacity:0;pointer-events:none}.admin-page{min-height:100vh;background:radial-gradient(ellipse at top,#314238,#101b16);display:grid;place-items:center;overflow:auto;padding:50px}.admin-card{width:530px;max-width:100%;border:1px solid var(--line);padding:35px;background:#112018df}.admin-card h1{font-size:27px;letter-spacing:4px;font-weight:400;margin-bottom:10px}.admin-card p{font-size:12px;line-height:1.9;color:var(--muted);margin-bottom:25px}.admin-card form{display:grid;gap:20px}.admin-card .error{font:12px/1.8 sans-serif;color:#e1ad8d}.admin-card a{color:var(--accent);font-size:12px;display:inline-block;margin-top:25px}.admin-card code{font-size:11px;overflow-wrap:anywhere}.help-overlay{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:#14241ff5;border:1px solid var(--line);padding:30px;width:470px;z-index:80;box-shadow:0 25px 100px #0008}.help-overlay h2{font-weight:400;margin-bottom:18px}.help-overlay p{font-size:13px;line-height:2;color:#bac5b4;margin-bottom:15px}.fps{font:10px monospace;color:#aab6a099;margin-left:8px}@media(max-width:900px){.compass{display:none}.topbar{left:20px;right:20px}.controls{gap:5px}.panel{right:15px;width:390px}.quest-tracker{right:20px}.brand h1{font-size:20px}}.opening{--opening-gold:#d6bc83;--opening-ink:#e1d6bd;--opening-muted:#b4b4a5;--opening-gutter:7.6vw;position:fixed;inset:0;isolation:isolate;z-index:100;overflow:hidden;background:#101c18;color:var(--opening-ink);text-align:left;font-family:Songti SC,"Noto Serif SC",SimSun,serif;transition:opacity .9s ease,visibility .9s;--load-progress:0%}.opening-art{position:absolute;inset:0;z-index:-2;background:url(/assets/ui/greyhaven-dawn-20261007.webp) center/cover no-repeat;animation:opening-breathe 32s ease-in-out infinite alternate;will-change:transform}.opening-title{position:absolute;left:var(--opening-gutter);top:26%;width:45vw;text-shadow:0 2px 14px #020806cc;animation:opening-arrive 1.1s ease-out both}.opening-title h1{font-family:inherit;font-weight:400;font-size:clamp(58px,5.65vw,122px);line-height:1.15;letter-spacing:.06em;color:var(--opening-gold);margin:0 0 10px -.03em;white-space:nowrap}.opening-subtitle{font-size:clamp(19px,1.7vw,32px);line-height:1.4;font-weight:400;letter-spacing:1.45em;color:var(--opening-gold);margin:0}.opening-english{font-family:Arial,sans-serif;font-size:clamp(10px,.81vw,15px);line-height:1.6;letter-spacing:.72vw;color:#d9c7a0;margin-top:8px;white-space:nowrap}.opening-story{font-size:clamp(14px,1.2vw,23px);letter-spacing:.17em;line-height:1.7;margin-top:27px;color:#e0d7c5}.opening .opening-enter{font-family:inherit;display:flex;align-items:center;justify-content:space-between;gap:22px;width:clamp(270px,23.6vw,450px);height:clamp(54px,4.2vw,80px);margin-top:48px;padding:0 2vw;border:1px solid var(--opening-gold);border-radius:3px;background:#08120cd9;color:var(--opening-gold);font-size:clamp(18px,1.32vw,25px);letter-spacing:.22em;transition:background .25s,color .25s,border-color .25s,box-shadow .25s;box-shadow:0 4px 24px #0003}.opening-enter span{flex:1;text-align:center}.opening-enter svg{flex-shrink:0;width:27px;height:16px;transition:transform .25s}.opening .opening-enter:disabled{opacity:1;cursor:wait;color:#d6bc8380;border-color:#d6bc8388;background:#08120cbb}.opening .opening-enter:hover:not(:disabled){background:#e0c79120;color:#f5deae;border-color:#f0d395;box-shadow:0 0 32px #c5a56812}.opening-enter:hover:not(:disabled) svg{transform:translate(4px)}.opening .opening-enter:focus-visible{outline:1px solid #f2d79e;outline-offset:5px}.opening-key{font-size:clamp(12px,.96vw,17px);line-height:1.7;letter-spacing:.035em;color:var(--opening-muted);margin-top:12px}.opening-bottom{position:absolute;bottom:7.7%;left:var(--opening-gutter);right:4.8vw;display:flex;align-items:flex-end;justify-content:space-between;gap:40px;animation:opening-arrive 1.1s .15s ease-out both}.opening-loading{width:43.4vw;min-width:420px;max-width:900px}.opening-status{display:flex;align-items:baseline;justify-content:space-between;gap:24px;color:#d7c294;font-size:clamp(13px,.97vw,18px);line-height:1.6;letter-spacing:.07em}.opening-status #loading{min-width:0}.opening-status #loading-percent{flex-shrink:0;font-family:Georgia,serif;font-size:clamp(13px,.95vw,18px);font-variant-numeric:tabular-nums;letter-spacing:0}.opening-track{height:5px;overflow:hidden;border:1px solid #ad935b85;border-radius:3px;margin-top:10px;background:#0c1714aa}.opening-track i{display:block;width:var(--load-progress);height:100%;background:linear-gradient(90deg,#b59a60,#edca85);transition:width .4s ease;box-shadow:0 0 9px #d6bc8355}.opening-phases{padding:0;margin:16px 0 0;display:grid;grid-template-columns:1fr 1fr auto;gap:clamp(22px,2.63vw,50px);list-style:none;font-size:clamp(12px,.96vw,17px);line-height:1.3;letter-spacing:.08em;color:#c2b38fa6}.opening-phases li{display:flex;align-items:center;gap:clamp(22px,2.63vw,50px);white-space:nowrap;transition:color .3s}.opening-phases li:not(:last-child):after{content:"";height:1px;background:#d6bc832a;flex:1}.opening-phases li.current,.opening-phases li.complete{color:#dec796}.opening-controls{font-family:Arial,PingFang SC,sans-serif;font-size:clamp(11px,.86vw,16px);line-height:1.4;color:#c7c9bcaa;white-space:nowrap;margin-bottom:0;text-shadow:0 1px 8px #000}.opening-dust{position:absolute;inset:0;pointer-events:none;z-index:-1}.opening-dust i{position:absolute;left:calc(7% + var(--i)*9%);top:var(--dust-top);width:2px;height:2px;border-radius:50%;background:#ecd49c;box-shadow:0 0 6px #edd49c66;opacity:0;animation:opening-dust 13s calc(var(--i)*-1.7s) linear infinite}.opening-ready .opening-track i{background:#e1c388}.opening-ready .opening-status{color:#d6c7a8}.opening-error .opening-status{color:#e8ad98}.opening-error .opening-track i{background:#a17866}.opening-error .opening-controls{display:none}.opening-leaving{opacity:0;visibility:hidden;pointer-events:none}.opening-leaving .opening-art{animation-play-state:paused}.opening-visible #app>:not(#boot):not(#world){visibility:hidden}@keyframes opening-breathe{0%{transform:scale(1)}to{transform:scale(1.022)}}@keyframes opening-arrive{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes opening-dust{0%,to{opacity:0;transform:translate3d(0,12px,0)}30%,65%{opacity:.4}95%{transform:translate3d(24px,-44px,0)}}@media(max-height:740px){.opening-title{top:22%}.opening .opening-enter{margin-top:30px}.opening-story{margin-top:20px}.opening-bottom{bottom:7%}}@media(max-width:1100px){.opening-controls{display:none}.opening-loading{width:58vw;min-width:390px}.opening-title{width:58vw}.opening-english{letter-spacing:.6vw}}@media(max-width:680px){.opening-title{top:20%;width:86vw}.opening-art{background-position:60% center}.opening-title h1{font-size:52px}.opening .opening-enter{width:270px}.opening-loading{width:85vw;min-width:0}.opening-bottom{right:var(--opening-gutter)}.opening-phases{gap:15px;font-size:12px}.opening-phases li{gap:9px}.opening-english{letter-spacing:5px}.opening-story{max-width:270px}.opening-status{font-size:12px}}@media(prefers-reduced-motion:reduce){.opening,.opening-track i{transition-duration:.12s}.opening-art,.opening-dust i,.opening-title,.opening-bottom{animation:none}.opening-dust{display:none}.opening-art{will-change:auto}}
