@import url('/typography.css');

:root{--gold:#cbb78b;--paper:#e9dfc9;--dim:#a2aaa9;--line:#bdac8235;--night:#0a101a}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#080d19;color:var(--paper);font:15px var(--font-body)}button,input{font:inherit}button{cursor:pointer;color:inherit;background:transparent;border:1px solid var(--line);padding:12px 18px}button:hover{border-color:var(--gold);background:#cbb78b12}button:focus-visible,input:focus-visible{outline:2px solid #89bfd1;outline-offset:4px}.hidden{display:none!important}#game{position:fixed;inset:0;width:100%;height:100%;image-rendering:pixelated}.vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 36%,#02051165 100%);box-shadow:inset 0 0 80px #0005}.eyebrow{font:11px var(--font-body);letter-spacing:3px;color:var(--gold)}#loading{position:fixed;inset:0;display:grid;align-content:center;justify-items:center;background:#080e1b;z-index:9}#loading h1{letter-spacing:12px;font-size:30px;font-weight:400;margin:10px 0}#loading p{font-size:13px;color:var(--dim)}.sigil{font-size:64px;color:var(--gold);text-shadow:0 0 25px #9caacb66}.load-track{width:190px;height:1px;background:#313744;margin-top:18px}.load-track i{display:block;height:100%;background:var(--gold);width:2%;transition:width .3s}#title{position:fixed;inset:0;background:linear-gradient(90deg,#050b16ef,#050b1655 53%,#050b1605);padding:40px 6vw;display:flex;flex-direction:column;justify-content:space-between}.title-top,.title-bottom{font:11px var(--font-body);letter-spacing:2px;color:#ccd7d5a0}.title-body{max-width:400px}h1,h2,h3,p{font-weight:400}.title-body h1{font-size:clamp(60px,7vw,102px);letter-spacing:-4px;margin:8px 0 15px;color:#f0e4cd}.title-body>p{font-size:18px;line-height:1.7;color:#c4d0cf;margin:0 0 28px}#join{max-width:300px}label{display:block;font:11px var(--font-body);letter-spacing:.5px;color:#b8c5c7;margin:16px 0}label span{float:right;font-size:9px;color:#829092}input{display:block;width:100%;padding:10px 0;margin-top:6px;border:0;border-bottom:1px solid #b8a98766;border-radius:0;background:transparent;color:#e2ddcd;font:16px var(--font-body)}#enter{margin-top:8px;width:100%;padding:15px 18px;background:#c2ae7e;color:#141c23;border:none;font-size:16px}#enter span{float:right}.title-body .title-controls{font:11px/1.9 var(--font-body);color:#a1afad;margin:22px 0 0}.title-bottom{display:flex;justify-content:space-between}#hud{position:fixed;inset:0;pointer-events:none}#hud button{pointer-events:auto}header{display:flex;align-items:flex-start;justify-content:space-between;padding:24px 30px;background:linear-gradient(#02081280,transparent)}.brand{font-size:28px;display:flex;align-items:center;gap:12px;color:var(--gold)}.brand span{font:11px var(--font-body);letter-spacing:3px;color:#d6d9ce}#compass{position:absolute;left:50%;transform:translateX(-50%);width:220px;display:flex;justify-content:space-between;align-items:center;font:11px var(--font-body);color:#b5c2cbb0;letter-spacing:2px}#compass b{font:15px var(--font-body);color:#ead7ad}#compass i{font-size:6px}#destination{position:absolute;top:25px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:9px;letter-spacing:1px;color:var(--gold)}#room-button{border:0;padding:0;font:11px var(--font-body);letter-spacing:1px;display:grid;grid-template-columns:6px auto;gap:7px 10px;text-align:right}#room-button small{grid-column:2;color:#9eada9;font-size:9px}.online-dot{width:5px;height:5px;background:#9de5ca;border-radius:50%;align-self:center;box-shadow:0 0 8px #87c9d5}#quest{position:absolute;top:102px;left:30px;width:248px;background:linear-gradient(90deg,#06101abe,transparent);padding:18px 16px 14px 0}#quest h2{font-size:19px;margin:10px 0}#quest p{font-size:12px;line-height:1.7;color:#b2c2c6}#seals{display:flex;gap:14px;font-size:10px;color:#9cafa9;margin:18px 0}#seals .lit{color:#e5c383}#journal-button{border:0;padding:0;color:var(--gold);font:11px var(--font-body)}#journal-button span{margin-left:9px;color:#8c9ca5}#discovery{position:absolute;top:20%;left:50%;transform:translateX(-50%);text-align:center;animation:appear 4s both;width:90%}#discovery small{font:11px var(--font-body);letter-spacing:4px;color:#c5c3b2}#discovery h2{font-size:34px;letter-spacing:2px;margin:14px 0}#discovery p{font-size:12px;color:#aabcc3}#interaction{position:absolute;left:50%;bottom:24%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;text-shadow:1px 1px 0 #000,0 2px 0 #0008;background:#071018b0;padding:10px 17px;border-top:1px solid var(--line);font-size:13px}kbd{font:11px var(--font-body);letter-spacing:.5px;color:#ddceac;border:1px solid #cab78377;padding:4px 6px;border-radius:2px}#toasts{position:absolute;right:30px;top:105px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;max-width:320px}.toast{font:12px/1.5 var(--font-body);padding:10px 14px;color:#e1d3af;background:#08111ada;border-right:2px solid #c6b77e;animation:fadeIn .25s}footer{position:absolute;bottom:0;left:0;right:0;padding:25px 30px;display:flex;align-items:flex-end;justify-content:space-between;background:linear-gradient(transparent,#020914bd)}#vitals{width:205px}#vitals>div:first-child{display:flex;justify-content:space-between;align-items:end;margin-bottom:10px}#player-name{font-size:15px}#level{font:11px var(--font-body);color:#a2b5b9}.health,.stamina{height:5px;background:#101722;margin:5px 0;box-shadow:0 0 0 1px #aaaaaa15}.stamina{height:2px;width:85%}.health i,.stamina i{display:block;height:100%;width:100%;transition:width .18s}.health i{background:linear-gradient(90deg,#814f4c,#d49379)}.stamina i{background:#88aaa0}#health-label{font:11px var(--font-body);color:#9dafa7}.hotbar{display:flex;gap:2px}.hotbar>div,.hotbar>button{display:flex;gap:7px;align-items:center;padding:11px 12px;background:#07101ab0;border:1px solid #bbaa791f;font-size:11px}.hotbar b{font-weight:400;color:var(--gold);margin-left:5px}.footer-hint{font:11px/1.8 var(--font-body);color:#9cb0b8;text-align:right}#enemy-bar{position:absolute;top:80px;left:50%;transform:translateX(-50%);width:230px;text-align:center;font-size:12px}#enemy-bar>div{height:3px;background:#181823;margin-top:7px}#enemy-bar i{height:100%;display:block;background:#b9636a}.modal{position:fixed;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#020914b8;backdrop-filter:blur(4px)}.journal-sheet{position:relative;width:min(960px,94vw);max-height:90vh;overflow:auto;background:#111c24;border:1px solid #cbb78b55;padding:34px 40px;box-shadow:0 20px 100px #0009}.journal-sheet h2{font-size:34px;margin:10px 0 22px}.journal-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px}.journal-grid canvas{width:100%;height:auto;border:1px solid var(--line);background:#0d171e}.journal-grid small{font:11px var(--font-body);color:#a3b6b8}.journal-grid h3{font-size:18px;color:#d8c49b}.journal-grid p,.journal-grid li{font-size:13px;line-height:1.65;color:#b3c0c0}.journal-grid ul{padding-left:17px}.journal-grid .muted{font-size:11px;color:#84999f}#inventory{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:12px;color:#d7cba7}.close{position:absolute;right:20px;top:20px;border:0;font-size:25px;padding:4px 10px}.dialog-sheet,.victory-sheet{width:min(560px,90vw);padding:40px;background:#101b26;border:1px solid var(--line);box-shadow:0 30px 100px #0009}.dialog-sheet h2{font-size:30px}.dialog-sheet p{font-size:17px;line-height:1.8;color:#c6ccbe}.dialog-sheet button{width:100%;text-align:left}.dialog-sheet button span{float:right}.victory-sheet{text-align:center}.victory-sheet h1{font-size:34px}.victory-sheet p{line-height:1.9;color:#b5c1c3}.victory-sheet button{margin-top:24px}#connection{position:fixed;bottom:130px;left:50%;transform:translateX(-50%);background:#411d2af0;padding:16px;z-index:30;font-size:12px}#connection button{margin-left:10px;padding:5px 10px}@keyframes appear{0%,100%{opacity:0;translate:0 8px}15%,75%{opacity:1;translate:0 0}}@keyframes fadeIn{from{opacity:0;translate:0 -5px}to{opacity:1;translate:0 0}}body.hurt:after{content:'';position:fixed;inset:0;pointer-events:none;box-shadow:inset 0 0 110px #be384777;animation:fadeIn .1s}body>canvas:focus{outline:none}@media(max-width:900px){#quest{left:18px;width:205px;top:82px}header{padding:18px}footer{padding:20px 18px}.brand span,.footer-hint{display:none}.hotbar>div,.hotbar>button{padding:9px 7px}.hotbar span{font-size:9px}#vitals{width:160px}.journal-grid{grid-template-columns:1fr}.journal-sheet{padding:25px}#compass{width:140px}.title-bottom span:last-child{display:none}}

#interaction{pointer-events:auto;cursor:pointer}
/* Lettering feels printed and slightly worn, with display type kept to short lines. */
.title-body h1{font-family:var(--font-display);letter-spacing:-1.5px;font-size:clamp(62px,7.4vw,106px);color:#e8d6ae;line-height:1.08}
#loading h1{font-family:var(--font-display);letter-spacing:5px}
.brand span{font-family:var(--font-display);font-size:14px;letter-spacing:2px}
#compass b,#player-name,#enemy-bar>span{font-family:var(--font-display)}
.eyebrow,.title-top,.title-bottom{letter-spacing:2px}
#quest h2{font-size:21px;line-height:1.25}#quest p{font-size:13px}
#discovery h2{font-size:36px;letter-spacing:1px}
.dialog-sheet p{font-size:18px;line-height:1.75;color:#cec8b7}
.journal-grid p,.journal-grid li{font-size:14px;line-height:1.7}
#enter{font-family:var(--font-display);font-size:18px;background:linear-gradient(108deg,#bba475,#c8b485 48%,#b9a171);box-shadow:inset 0 0 0 1px #ede0b928,inset 0 -2px 6px #35281925;text-shadow:0 1px 0 #e3cd9c66}
.title-body .title-controls{font-size:11px}.footer-hint{font-size:10px}

#dialog-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:20px}#dialog-choices button{font-family:Caudex,serif;padding:10px;background:#172630;color:#d9ceab;border:1px solid #53605a;cursor:pointer}#dialog-choices button:hover{background:#2c3a44}.cinematic #hud,.cinematic #interaction,.cinematic #discovery{opacity:0;pointer-events:none}

.atlas-link{display:inline-block;margin-top:14px;color:#bbbda6;font:14px Caudex;text-decoration:none}.atlas-link:hover{color:#f0d9a3}

#minimap-panel{position:absolute;right:24px;top:85px;width:208px;text-align:center;color:#b7b7a1;background:radial-gradient(ellipse,#101b25d9 57%,#101b2500 72%)}
#minimap-button{display:block;width:100%;padding:0;border:0;border-radius:50%;background:none}
#minimap-button:hover{background:#cbb78b09}#minimap{display:block;width:100%;height:auto}
.minimap-controls{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:-2px}.minimap-controls button{padding:0;width:24px;height:22px;font-size:16px;background:#101b25d9}.minimap-controls span{font:9px var(--font-body);letter-spacing:1px;min-width:100px}
#minimap-panel small{display:block;font-size:9px;color:#9bada5;margin-top:7px}#toasts{top:355px;max-width:250px}
@media(max-width:900px){#minimap-panel{right:12px;top:74px;width:166px}#toasts{top:304px;right:14px;max-width:200px}.minimap-controls{gap:4px}#minimap-panel small{font-size:8px}}
@media(max-height:560px){#minimap-panel{width:142px;top:66px}#minimap-panel small{display:none}#toasts{top:254px}.minimap-controls span{min-width:82px;font-size:8px}}

.audio-mix{display:flex;gap:22px}.audio-mix label{flex:1;font-size:12px}.audio-mix input{accent-color:#cbb78b;padding:0;margin-top:12px;cursor:pointer}

#area-transition{position:fixed;inset:0;z-index:100;background:#100c19;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#dac9e4;opacity:0;pointer-events:none;visibility:hidden}#area-transition h2{font:42px MedievalSharp;margin:18px}#area-transition small{letter-spacing:.3em;font-size:10px}#area-transition p{font:16px Caudex;color:#ae99bf}#area-transition.revealing{animation:bough-arrival 1.4s both}@keyframes bough-arrival{0%,32%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}

#journal-skills{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;font-size:12px;color:#d7cba7}#journal-skills b{font-weight:400;color:var(--gold);float:right}#journal-skills i{display:block;height:2px;background:#1b2630;margin-top:5px}#journal-skills i s{display:block;height:100%;background:#9fbfb0;text-decoration:none}#journal-tales li.done,#journal-objectives li.done{color:#7f9094}
#coins{display:block;font:11px var(--font-body);color:#d8c38e;margin-top:4px}#task{position:absolute;left:50%;bottom:31%;transform:translateX(-50%);width:210px;text-align:center;font-size:12px;color:#e1d3af;text-shadow:1px 1px 0 #000,0 2px 0 #0008}#task i{display:block;height:3px;background:#0b141c;margin-top:6px;box-shadow:0 0 0 1px #cbb78b44}#task s{display:block;height:100%;width:0;background:#cbb78b;text-decoration:none}.shop-sheet{width:min(820px,94vw)}.shop-list{list-style:none;padding:0!important;margin:0}.shop-list li{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px;color:#d7cba7}.shop-list li span{flex:1}.shop-list li small{color:#8fa1a3;font-size:11px}.shop-list button{padding:5px 10px;font-size:11px}.shop-list button:disabled{opacity:.35;cursor:default}#dialog-choices button{display:block;width:100%;text-align:left;margin-top:6px;font-size:13px;padding:9px 14px}
#game{transition:filter 3.5s ease}body.hazy #game{filter:blur(calc(2.4px * var(--haze-strength,1))) saturate(calc(1 - .55 * var(--haze-strength,1))) brightness(calc(1 + .1 * var(--haze-strength,1))) contrast(calc(1 - .18 * var(--haze-strength,1)))}#haze{position:fixed;inset:0;pointer-events:none;z-index:1;opacity:0;transition:opacity 3.5s ease;background:radial-gradient(ellipse 60% 45% at 30% 40%,#b9c3e633,transparent 70%),radial-gradient(ellipse 55% 50% at 72% 62%,#c9b9e62e,transparent 70%),radial-gradient(ellipse at center,transparent 35%,#0a0f2299 100%);animation:hazeDrift 14s ease-in-out infinite alternate}body.hazy #haze{opacity:var(--haze-strength,1)}@keyframes hazeDrift{from{background-position:0 0,0 0,0 0;transform:scale(1)}to{background-position:40px -30px,-50px 20px,0 0;transform:scale(1.06)}}
body.trip #game{animation:dreamNegative 3s ease-in-out forwards}body.trip #haze{opacity:0}@keyframes dreamNegative{0%{filter:blur(calc(2.4px * var(--haze-strength,1))) saturate(calc(1 - .55 * var(--haze-strength,1))) brightness(calc(1 + .1 * var(--haze-strength,1))) contrast(calc(1 - .18 * var(--haze-strength,1)))}35%{filter:invert(.78) hue-rotate(185deg) saturate(1.4) brightness(.8) blur(1.2px)}55%{filter:invert(.62) hue-rotate(160deg) saturate(1.25) brightness(.85) blur(.6px)}100%{filter:none}}
.mana{height:2px;width:70%;background:#101722;margin:4px 0;box-shadow:0 0 0 1px #aaaaaa15}.mana i{display:block;height:100%;width:100%;background:#7f9cf0;transition:width .18s}
.hotbar kbd{white-space:nowrap}.hotbar span{white-space:nowrap}

/* A drink at the Upside-Down Tankard: the world sways and the colours slide, gently, for a while. */
body.tipsy #game{animation:tipsy 6s ease-in-out infinite}
@keyframes tipsy{0%,100%{transform:rotate(0) scale(1.02);filter:hue-rotate(0) blur(0)}25%{transform:rotate(.8deg) scale(1.03) translateX(4px);filter:hue-rotate(12deg) blur(.4px)}50%{transform:rotate(-.4deg) scale(1.025);filter:hue-rotate(-8deg) blur(.2px)}75%{transform:rotate(-.9deg) scale(1.035) translateX(-4px);filter:hue-rotate(10deg) blur(.5px)}}
