:root{color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#050606}button{font:inherit}.tavern{position:fixed;inset:0;overflow:hidden;isolation:isolate;color:#f8e7c1;background:#060807}.scene{position:absolute;inset:-2%;z-index:-5;background:url('/tavern-entrance.png') center/cover no-repeat;transform:scale(1.02);transition:transform 2.4s cubic-bezier(.2,.7,.2,1),filter 2s}.cold-vignette{position:absolute;inset:0;z-index:-3;pointer-events:none;background:radial-gradient(circle at 53% 52%,transparent 17%,rgba(2,7,11,.08) 43%,rgba(0,4,8,.5) 100%),linear-gradient(90deg,rgba(0,20,37,.22),transparent 30% 72%,rgba(0,14,27,.2))}.firelight{position:absolute;z-index:-2;border-radius:50%;pointer-events:none;mix-blend-mode:screen;filter:blur(24px);animation:breathe 3.7s ease-in-out infinite alternate}.firelight-left{left:12%;top:17%;width:16vw;height:25vh;background:rgba(255,121,18,.14)}.firelight-center{left:44%;top:46%;width:18vw;height:27vh;background:rgba(255,101,8,.13);animation-delay:-1.8s;animation-duration:2.9s}.firelight-right{right:7%;top:14%;width:17vw;height:25vh;background:rgba(255,139,28,.15);animation-delay:-2.2s}.rain{position:absolute;inset:-10% 0 0;z-index:1;pointer-events:none;overflow:hidden;mask-image:linear-gradient(90deg,#000 0 24%,transparent 38% 72%,#000 85%)}.rain i{position:absolute;top:-12%;width:1px;height:12vh;background:linear-gradient(transparent,rgba(195,218,232,.72));transform:rotate(6deg);animation:rainfall linear infinite}.wet-shimmer{position:absolute;z-index:-1;left:20%;right:12%;bottom:-4%;height:35%;opacity:.3;background:radial-gradient(ellipse at 54% 45%,rgba(255,134,38,.38),transparent 48%);filter:blur(11px);animation:shimmer 5s ease-in-out infinite alternate;pointer-events:none}.mist{position:absolute;z-index:0;left:-15%;bottom:0;width:55%;height:22%;background:linear-gradient(100deg,transparent,rgba(128,158,174,.09),transparent);filter:blur(22px);animation:drift 22s linear infinite;pointer-events:none}
.threshold{position:absolute;z-index:3;left:50%;bottom:clamp(6.3rem,10vh,8.2rem);width:min(92vw,31rem);transform:translateX(-50%);text-align:center;transition:opacity .75s,transform .75s}.eyebrow{margin:0 0 .75rem;font:500 clamp(.66rem,1vw,.78rem) var(--font-display),serif;letter-spacing:.18em;text-transform:uppercase;text-shadow:0 2px 12px #000}.enter-button{display:inline-flex;align-items:center;gap:1.05rem;padding:.88rem 1.45rem .82rem 1.7rem;border:1px solid rgba(244,194,105,.55);color:#ffe7b6;background:linear-gradient(rgba(58,31,16,.82),rgba(21,13,9,.9));box-shadow:0 0 0 1px #000,0 8px 32px rgba(0,0,0,.5),inset 0 1px rgba(255,225,167,.14);backdrop-filter:blur(8px);cursor:pointer;font:500 .88rem var(--font-display),serif;letter-spacing:.11em;text-transform:uppercase;transition:.25s}.enter-button:hover,.enter-button:focus-visible{transform:translateY(-2px);border-color:#ffd489;box-shadow:0 0 26px rgba(245,151,50,.22),0 10px 34px #000;outline:0}.enter-button i{font:normal 1.2rem serif;transition:transform .25s}.enter-button:hover i{transform:translateX(4px)}.hint{margin:.8rem 0 0;font:500 1rem var(--font-body),serif;letter-spacing:.07em;color:rgba(255,236,200,.72);text-shadow:0 2px 12px #000}.sound-button{position:absolute;z-index:5;left:clamp(1rem,2vw,2rem);bottom:clamp(1rem,2vw,2rem);border:0;color:rgba(255,239,207,.8);background:rgba(4,7,7,.42);backdrop-filter:blur(7px);padding:.62rem .82rem;cursor:pointer;font:500 .9rem var(--font-body),serif;letter-spacing:.06em}.sound-icon{display:inline-block;width:2.2rem;color:#e7b05f}.status{position:absolute;z-index:5;right:clamp(1rem,2vw,2rem);bottom:clamp(1rem,2vw,2rem);font:500 .72rem var(--font-display),serif;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,238,204,.7)}.status i{display:inline-block;width:5px;height:5px;margin:0 .45rem .1rem 0;border-radius:50%;background:#d99d44;box-shadow:0 0 8px #efae50;animation:pulse 3s infinite}.welcome{position:absolute;z-index:4;inset:0;display:grid;place-content:center;justify-items:center;text-align:center;opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity 1.2s 1s,transform 1.2s 1s,visibility 0s 1s;background:radial-gradient(circle,rgba(83,36,13,.06),rgba(3,4,4,.8) 62%)}.welcome h1{margin:0;font:500 clamp(2.5rem,6vw,5rem)/1 var(--font-display),serif;text-shadow:0 4px 24px #000}.welcome>p:last-of-type{margin:1rem 1rem 1.75rem;font:500 1.2rem var(--font-body),serif;color:rgba(255,233,195,.75)}.welcome button{border:0;border-bottom:1px solid rgba(239,184,96,.6);background:transparent;color:#efc47f;cursor:pointer;padding:.25rem;font:500 .9rem var(--font-body),serif;letter-spacing:.08em}.is-entered .scene{transform:scale(1.16);filter:blur(3px) brightness(.48)}.is-entered .threshold{opacity:0;transform:translate(-50%,20px);pointer-events:none}.is-entered .welcome{opacity:1;visibility:visible;transform:none}.mouse{position:absolute;z-index:2;right:13%;bottom:8.6%;opacity:0;color:#281b14;filter:drop-shadow(0 2px 2px #000);animation:mouse-run 29s ease-in-out infinite 11s;pointer-events:none}.mouse span{font-size:.55rem}.mouse i{display:inline-block;width:.7rem;height:1px;background:#2c1e16;transform:rotate(-20deg);transform-origin:left}
@keyframes rainfall{to{transform:translate(8vw,122vh) rotate(6deg)}}@keyframes breathe{0%{opacity:.62;transform:scale(.94) translateY(2px)}55%{opacity:1}100%{opacity:.73;transform:scale(1.06) translateY(-3px)}}@keyframes shimmer{to{opacity:.5;transform:translateX(2%) scaleX(1.04)}}@keyframes drift{to{transform:translateX(175%)}}@keyframes pulse{50%{opacity:.45;transform:scale(.8)}}@keyframes mouse-run{0%,3%,100%{opacity:0;transform:translateX(0)}4%{opacity:.7}11%{opacity:.7;transform:translateX(-7vw)}12%{opacity:0;transform:translateX(-8vw)}}
@media(max-width:700px){.scene{inset:0;background-position:51% center}.threshold{bottom:5.25rem}.hint,.status{display:none}.rain{mask-image:linear-gradient(90deg,#000,transparent 30% 75%,#000)}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* Common room prototype */
.welcome-actions{display:flex;align-items:center;gap:1.25rem}.welcome .continue-inside{padding:.72rem 1.25rem;border:1px solid rgba(239,184,96,.6);background:rgba(51,27,13,.75);color:#f6d196;font:500 .76rem var(--font-display),serif;text-transform:uppercase;letter-spacing:.1em}.tavern-room{position:absolute;z-index:8;inset:0;opacity:0;visibility:hidden;transition:opacity 1.2s,visibility 0s 1.2s;background:radial-gradient(ellipse at 50% 58%,rgba(52,22,7,.15),rgba(2,4,5,.66));font-family:var(--font-body),serif}.is-inside .scene{transform:scale(1.34);filter:brightness(.48) saturate(.78) blur(2px)}.is-inside .rain,.is-inside .mist,.is-inside>.sound-button,.is-inside>.status{opacity:0;pointer-events:none}.is-inside .tavern-room{opacity:1;visibility:visible;transition:opacity 1.2s .4s}.room-header{position:absolute;left:2rem;right:2rem;top:1.6rem;display:flex;align-items:start;justify-content:space-between;text-shadow:0 3px 16px #000}.room-header .eyebrow{margin:0 0 .25rem;color:#d8a75c}.room-header h2{margin:0;font:500 clamp(1.3rem,2vw,2rem) var(--font-display),serif;letter-spacing:.07em}.room-count{margin-top:.5rem;padding:.5rem .75rem;background:rgba(5,7,7,.5);border:1px solid rgba(221,170,88,.16);font:500 .8rem var(--font-body),serif;letter-spacing:.08em}.room-count i{display:inline-block;width:6px;height:6px;margin-right:.5rem;border-radius:50%;background:#d7a14e;box-shadow:0 0 8px #e7a950}.seat-map{position:absolute;inset:16% 19% 24%;pointer-events:none}.seat{position:absolute;pointer-events:auto;display:flex;flex-direction:column;align-items:center;min-width:8.5rem;padding:.55rem .7rem;border:1px solid transparent;border-radius:50%;background:transparent;color:transparent;text-shadow:none;cursor:pointer;transition:.3s}.seat span{display:grid;place-items:center;width:2rem;height:2rem;margin-bottom:.2rem;border:1px solid rgba(236,183,93,.25);border-radius:50%;background:rgba(9,8,5,.48);color:rgba(245,202,128,.72);box-shadow:0 0 20px rgba(226,141,43,.12)}.seat b{font:500 .66rem var(--font-display),serif;letter-spacing:.08em;text-transform:uppercase}.seat small{font-size:.75rem}.seat:hover,.seat:focus-visible{color:#f4d49e;text-shadow:0 2px 8px #000;background:radial-gradient(ellipse,rgba(68,36,16,.7),transparent 72%);outline:0}.seat:hover span{border-color:#e9b45e;box-shadow:0 0 26px rgba(226,141,43,.35)}.seat-fire{left:45%;top:33%}.seat-table{right:3%;bottom:5%}.seat-bar{left:4%;top:17%}.seat-window{right:0;top:5%}
.presence-card,.chat-drawer{position:absolute;z-index:14;top:0;bottom:0;width:min(25rem,92vw);padding:2.25rem;background:linear-gradient(135deg,rgba(20,14,10,.97),rgba(7,9,9,.97));box-shadow:0 0 50px #000;transition:transform .55s cubic-bezier(.2,.7,.2,1);backdrop-filter:blur(14px)}.presence-card{right:0;transform:translateX(105%);border-left:1px solid rgba(226,174,88,.24)}.presence-card.open{transform:none}.panel-close{position:absolute;right:1.2rem;top:1rem;border:0;background:transparent;color:#caa66e;font-size:1.5rem;cursor:pointer}.presence-card h3,.chat-drawer h3{margin:.2rem 0 .7rem;font:500 1.65rem var(--font-display),serif}.presence-card>p:not(.eyebrow){color:#cdbd9e}.presence-options{display:grid;gap:.65rem;margin-top:1.5rem}.presence-options button{display:grid;grid-template-columns:2.3rem 1fr;grid-template-rows:auto auto;text-align:left;padding:.8rem;border:1px solid rgba(219,170,90,.16);background:rgba(255,255,255,.025);color:#ecd8b5;cursor:pointer}.presence-options button:hover,.presence-options button.selected{border-color:#d9a958;background:rgba(131,73,27,.18)}.presence-options span{grid-row:1/3;color:#d9a958}.presence-options b{font:500 .78rem var(--font-display),serif;letter-spacing:.05em}.presence-options small{color:#a99a82}.chat-drawer{left:0;transform:translateX(-105%);display:grid;grid-template-rows:auto 1fr auto;border-right:1px solid rgba(226,174,88,.24)}.chat-drawer.open{transform:none}.chat-drawer header{position:relative}.chat-messages{align-self:end;max-height:60vh;overflow:auto}.chat-messages p{display:grid;gap:.15rem;margin:1rem 0}.chat-messages b{font:500 .72rem var(--font-display),serif;color:#d3a65e}.chat-messages span{color:#e8dcc7}.chat-messages .system-message{display:block;color:#9e8d72;font-style:italic}.chat-drawer form{display:flex;border-top:1px solid rgba(219,170,90,.16);padding-top:1rem}.chat-drawer input{min-width:0;flex:1;border:0;background:transparent;color:#fff;outline:0;font:500 1rem var(--font-body),serif}.chat-drawer form button{border:0;background:transparent;color:#d9a958;cursor:pointer}
.hearthwave{position:absolute;z-index:10;right:1.6rem;bottom:4.7rem;width:22rem;border:1px solid #8b5b26;background:linear-gradient(145deg,#321d0d,#120e09 60%,#080b0a);box-shadow:0 10px 35px #000,inset 0 0 0 2px #20150c;color:#e8be75;transition:.35s}.radio-top,.radio-controls{display:flex;align-items:center;justify-content:space-between;padding:.38rem .55rem;border-bottom:1px solid rgba(213,151,65,.27);font:600 .59rem var(--font-display),serif;letter-spacing:.1em}.radio-top small{color:#85a36e}.radio-display{display:flex;align-items:center;justify-content:space-between;margin:.45rem;padding:.55rem;background:#07110d;border:1px inset #4c351f;color:#a9c98d}.radio-display b,.radio-display small{display:block}.radio-display b{max-width:17rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 .77rem var(--font-display),serif}.radio-display small{max-width:17rem;margin-top:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6f8e64;font-size:.68rem}.radio-broadcast{display:none;margin:.45rem;border:1px solid #4c351f;background:#050705}.hearthwave.broadcast-open .radio-broadcast{display:block}.radio-broadcast iframe{display:block;width:100%;height:200px;border:0}.broadcast-note{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.32rem .45rem;color:#796b54;font-size:.62rem}.broadcast-note a{color:#9fbc80;text-decoration:none}.broadcast-note a:hover{color:#d4edb8}.spectrum{display:flex;align-items:end;gap:2px;height:1.8rem}.spectrum i{width:3px;height:40%;background:#8bb06e;animation:eq .8s ease-in-out infinite alternate;animation-play-state:paused}.hearthwave.playing .spectrum i{animation-play-state:running}.spectrum i:nth-child(2n){height:80%;animation-delay:-.4s}.spectrum i:nth-child(3n){height:55%;animation-delay:-.2s}.radio-controls{border:0;gap:.55rem}.radio-controls button{border:1px solid #61421f;background:#1d140b;color:#d7aa61;cursor:pointer}.radio-controls input{min-width:0;accent-color:#9dbd78}.radio-time{color:#90b675}.hearthwave.minimized{width:11rem}.hearthwave.minimized .radio-display,.hearthwave.minimized .radio-broadcast,.hearthwave.minimized .radio-controls>*:not(#radio-min){display:none}.room-dock{position:absolute;z-index:10;left:50%;bottom:1.2rem;transform:translateX(-50%);display:flex;border:1px solid rgba(217,164,82,.22);background:rgba(5,7,7,.72);backdrop-filter:blur(12px);box-shadow:0 8px 30px #000}.room-dock button{position:relative;padding:.65rem .9rem;border:0;border-right:1px solid rgba(217,164,82,.14);background:transparent;color:#d8c5a4;cursor:pointer;font:500 .74rem var(--font-body),serif;white-space:nowrap}.room-dock button:hover{background:rgba(171,100,36,.14);color:#ffe1aa}.room-dock span{margin-right:.4rem;color:#d9a958}.room-dock i{position:absolute;right:.25rem;top:.2rem;width:1rem;height:1rem;border-radius:50%;background:#a56629;color:#fff;font-style:normal;font-size:.62rem}.toast-note{position:absolute;z-index:20;left:50%;top:5.5rem;transform:translate(-50%,-1rem);opacity:0;padding:.55rem .9rem;background:rgba(11,9,6,.85);border:1px solid rgba(218,164,80,.3);color:#dcc49d;transition:.35s}.toast-note.show{opacity:1;transform:translate(-50%,0)}@keyframes eq{to{height:95%}}
@media(max-width:700px){.room-header{left:1rem;right:1rem}.room-count{display:none}.seat-map{inset:14% 2% 28%}.seat{min-width:7rem}.seat-fire{left:34%}.hearthwave{right:.6rem;bottom:5.5rem;width:15rem}.room-dock{width:calc(100% - 1rem);overflow-x:auto}.room-dock button{flex:1}.room-dock button span{display:none}}
.is-inside>.threshold{opacity:0;pointer-events:none}
.hearthwave .radio-top{cursor:grab;touch-action:none;user-select:none}.hearthwave.dragging{transition:none;box-shadow:0 16px 45px #000,0 0 0 1px rgba(233,180,91,.45),inset 0 0 0 2px #20150c}.hearthwave.dragging .radio-top{cursor:grabbing;color:#ffe0a5}
.chat-drawer{left:auto;right:0;transform:translateX(105%);width:min(31rem,96vw);padding:1.8rem}.chat-tabs{display:grid;grid-template-columns:1fr 1fr;margin:.5rem 0 1.1rem;border-bottom:1px solid rgba(219,170,90,.18)}.chat-tabs button{padding:.65rem;border:0;border-bottom:2px solid transparent;background:transparent;color:#897b65;cursor:pointer;font:500 .68rem var(--font-display),serif;letter-spacing:.08em;text-transform:uppercase}.chat-tabs button.active{border-color:#d3a258;color:#efcf98}.chat-body{min-height:0;overflow-y:auto}.chat-channel{display:none}.chat-channel.active{display:block}.chat-channel .chat-messages{min-height:9rem;max-height:32vh}.user-list{margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(219,170,90,.16)}.user-list-title{display:flex;justify-content:space-between;color:#cba669;font:500 .68rem var(--font-display),serif;letter-spacing:.09em;text-transform:uppercase}.user-list-title small{display:grid;place-items:center;width:1.25rem;height:1.25rem;border-radius:50%;background:rgba(203,166,105,.13)}.user-list ul{margin:.7rem 0 0;padding:0;list-style:none}.user-list li{display:grid;grid-template-columns:2rem 1fr auto;align-items:center;gap:.65rem;padding:.45rem 0}.user-list .avatar{display:grid;place-items:center;width:1.8rem;height:1.8rem;border:1px solid rgba(220,173,96,.3);border-radius:50%;background:#25170e;color:#e8c17d;font-style:normal;font-size:.72rem}.avatar-mira{background:#382026!important}.avatar-rowan{background:#1d2c25!important}.avatar-alder{background:#2c2619!important}.user-list li span b,.user-list li span small{display:block}.user-list li span b{font:500 .8rem var(--font-display),serif;color:#e8d5b3}.user-list li span small{color:#8f816b;font-size:.73rem}.user-list li em{color:#b58a4d;font-style:normal;font-size:.7rem}.user-list .quiet-guests{margin-top:.25rem;padding-top:.65rem;border-top:1px solid rgba(219,170,90,.09);opacity:.7}.chat-drawer form{margin-top:.8rem}
.tavern-room{position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important}.room-dock{position:fixed;left:50%;bottom:1.2rem}.chat-drawer{position:fixed;top:0;right:0;bottom:auto;left:auto;height:100dvh;min-height:100dvh;grid-template-rows:auto auto minmax(0,1fr) auto}.chat-body{display:grid;grid-template-rows:minmax(10rem,1fr) auto;overflow-y:auto}.chat-drawer form{align-self:end}
.chat-drawer.open~.room-dock{left:calc((100vw - min(31rem,96vw))/2)}
@media(max-width:700px){.room-dock{left:50%;right:auto;bottom:.75rem}.chat-drawer{width:min(31rem,100vw);padding:1.4rem}}
.bar-location{position:fixed;z-index:7;inset:0;opacity:0;visibility:hidden;overflow:hidden;background:#080604;transition:opacity 1.25s,visibility 0s 1.25s}.bar-location.open{opacity:1;visibility:visible;transition:opacity 1.25s}.bar-base,.bar-actor{position:absolute;inset:-1%;background:url('/bar-scene-v1.png') center/cover no-repeat}.bar-base{filter:saturate(.88) contrast(1.03)}.bar-location:after{content:"";position:absolute;inset:0;z-index:6;pointer-events:none;background:radial-gradient(circle at 50% 50%,transparent 45%,rgba(0,0,0,.38) 100%)}.bar-location header{position:absolute;z-index:8;left:2rem;top:1.6rem;text-shadow:0 3px 18px #000}.bar-location header .eyebrow{margin:0 0 .25rem;color:#d8a75c}.bar-location header h2{margin:0;font:500 clamp(1.5rem,2.4vw,2.4rem) var(--font-display),serif}.bar-location header small{color:#bca789;font-size:.88rem;letter-spacing:.08em}.bar-back{position:absolute;z-index:9;right:1.5rem;top:1.5rem;padding:.55rem .75rem;border:1px solid rgba(221,170,88,.2);background:rgba(8,8,7,.58);color:#dcc398;cursor:pointer;backdrop-filter:blur(8px);font:500 .74rem var(--font-display),serif;letter-spacing:.06em}.bar-glow{position:absolute;z-index:2;border-radius:50%;mix-blend-mode:screen;filter:blur(22px);pointer-events:none;animation:breathe 3s ease-in-out infinite alternate}.glow-left{left:5%;top:42%;width:22%;height:22%;background:rgba(255,152,51,.17)}.glow-center{left:55%;top:42%;width:19%;height:19%;background:rgba(255,128,24,.13);animation-delay:-1.7s}.glow-window{right:4%;top:24%;width:18%;height:33%;background:rgba(48,109,154,.08);animation-duration:5s}.bar-steam{position:absolute;z-index:4;left:47%;top:50%;width:1px;height:5rem;background:linear-gradient(transparent,rgba(232,216,190,.2),transparent);filter:blur(3px);animation:steam-rise 4s ease-in-out infinite}.bar-seat{position:absolute;z-index:8;left:47%;bottom:7%;display:flex;align-items:center;gap:.7rem;padding:.55rem .8rem;border:1px solid rgba(229,177,92,.26);background:rgba(9,8,6,.58);color:#e7c995;cursor:pointer;backdrop-filter:blur(7px);transition:.3s}.bar-seat:hover,.bar-seat.occupied{border-color:#e1ac59;background:rgba(79,42,17,.66)}.bar-seat i{width:.65rem;height:.65rem;border-radius:50%;background:#d4a04e;box-shadow:0 0 10px #e6a94d}.bar-seat span b,.bar-seat span small{display:block;text-align:left}.bar-seat span b{font:500 .67rem var(--font-display),serif;text-transform:uppercase;letter-spacing:.08em}.bar-seat span small{color:#ad9d82}.bar-event{position:absolute;z-index:9;left:50%;top:5rem;transform:translate(-50%,-.7rem);opacity:0;padding:.5rem .8rem;border:1px solid rgba(223,171,86,.2);background:rgba(8,7,5,.75);color:#d5bd94;transition:.4s}.bar-event.show{opacity:1;transform:translate(-50%,0)}@keyframes steam-rise{0%{opacity:0;transform:translateY(1rem) scaleX(1)}45%{opacity:.6}100%{opacity:0;transform:translate(5px,-2rem) scaleX(4)}}
@media(max-width:700px){.bar-location header{left:1rem;top:1rem}.bar-back{right:.8rem;top:.8rem}.bar-base,.bar-actor{background-position:58% center}.bar-seat{left:37%;bottom:11%}}
.bar-rain,.bar-actor{display:none!important}
