@font-face{font-family:ManaSerif;src:local("Palatino"),local("Georgia");font-display:swap}
:root{--ink:#123e35;--cream:#fff5df;--gold:#ecd49a;--green:#87d5af;--panel:rgba(13,38,35,.88);--text-scale:1;--touch-scale:1;color-scheme:dark;font-family:Arial,Helvetica,sans-serif;font-size:calc(14px * var(--text-scale))}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#112b29;color:var(--cream)}body{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button,input,select{font:inherit}button{cursor:pointer;touch-action:none;transition:background .16s,transform .16s;border:0}button:active{transform:translateY(1px)}button:focus-visible,input:focus-visible{outline:2px solid #ecd49a;outline-offset:4px}button:disabled{opacity:.45;cursor:default}button, a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}[hidden]{display:none!important}#canvas{position:fixed;width:100%;height:100%;inset:0;outline:0}
.serif,h1,h2,h3{font-family:ManaSerif,Georgia,serif;font-weight:400}h2{line-height:1.2}.eyebrow{font-size:10px;letter-spacing:.26em;color:var(--gold);font-weight:600}.small{font-size:12px;line-height:1.6;color:#c1d0c4}.section-label{display:flex;gap:12px;align-items:center;font-size:12px;letter-spacing:.18em;color:#b9a16e}.section-label span{font-size:10px}.primary{background:#eed7a5;color:#203b2f;padding:17px 25px;border-radius:4px;font-weight:700;letter-spacing:.035em;border:1px solid #ffebb9}.primary:hover{background:#fff0c7}.primary span{float:right}.secondary{border:1px solid #b3bfa55e;background:#d1e4c00b;border-radius:4px;padding:12px 18px}.secondary:hover{background:#d5eabc17}.text-button{padding:5px 0;background:none;color:#d9d6b6;font-size:11px}.text-button:hover{color:white}.icon-button{background:#f4edda10;border:1px solid #f4edda38;border-radius:50%;width:37px;height:37px;font-size:19px}
#intro{position:fixed;inset:0;overflow:auto;touch-action:pan-y;background:#264e45}.art,.art-shade{position:fixed;inset:0}.art{background:url('art/title.png') center/cover no-repeat;animation:slow-arrival 2s ease-out both}.art-shade{background:linear-gradient(90deg,rgba(9,29,27,.9),rgba(13,33,29,.66) 37%,rgba(9,29,27,.06) 80%),linear-gradient(0deg,rgba(11,31,25,.65),transparent 30%)}.intro-header{position:relative;display:flex;align-items:center;justify-content:space-between;padding:28px 4.5%;font-size:9px;letter-spacing:.22em;color:#e1e6d0}.wordmark{font-family:Georgia,serif;letter-spacing:.13em;font-size:22px}.intro-main{position:relative;width:550px;max-width:92%;margin:20px 0 20px 7%;text-align:center}.intro-main>.eyebrow{display:flex;align-items:center;justify-content:center;gap:15px}.eyebrow>span{width:26px;height:1px;background:#ebd2938f}h1{font-size:116px;letter-spacing:.12em;line-height:.97;margin:24px 0 12px;padding-left:.12em;color:#fff0c7;text-shadow:0 3px 26px #0825228f}.intro-main>h2{font-size:23px;letter-spacing:.04em;margin:0;color:#f5e4bc}.intro-copy{font-size:12px;line-height:1.9;color:#d6dfcd;margin:20px 0 23px}.adventure-card{text-align:left;border:1px solid #e5d4a42d;background:linear-gradient(140deg,#173e35ed,#112f29e8);box-shadow:0 18px 70px #03141135;backdrop-filter:blur(20px);padding:22px 26px;border-radius:8px}.heroes{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:16px 0 12px}.hero{height:116px;position:relative;overflow:hidden;background:#102b24;border:1px solid #e5dda924;border-radius:4px}.hero:after{position:absolute;inset:0;content:'';background:linear-gradient(0deg,#102820 0%,transparent 55%);pointer-events:none}.hero.selected{border-color:#e8cf92;box-shadow:inset 0 0 25px #c5ba6240}.hero.selected:before{content:'✦';position:absolute;right:7px;top:6px;color:var(--gold);z-index:2}.hero-art{position:absolute;left:8%;top:-8px;width:84%;height:107px;background-size:400% 800%;background-repeat:no-repeat;filter:drop-shadow(0 6px 5px #0005)}.hero-name{position:absolute;z-index:1;bottom:10px;left:0;right:0;font-family:Georgia,serif;font-size:16px;text-align:center}.hero-subtitle{color:var(--gold);font-family:Georgia,serif;font-size:15px}#hero-description{min-height:42px;font-size:11px;line-height:1.7;color:#bccbbd}.start-fields{display:grid;grid-template-columns:1.15fr 1fr;gap:13px;margin:17px 0 16px}.start-fields label{font-size:10px;color:#c9d3bb;letter-spacing:.04em}.start-fields label span{color:#90a695}.start-fields input{display:block;width:100%;margin-top:7px;background:#0a251ec4;border:1px solid #b0c1a531;color:#f4e9ce;padding:11px 12px;border-radius:3px;user-select:text;font-size:13px}#room-code{text-transform:uppercase;letter-spacing:.15em}#start-btn,#continue-btn{width:100%}#continue-btn{margin-top:9px}.card-footer{margin-top:16px;display:flex;justify-content:space-between;align-items:center;gap:10px}.card-footer>span{font-size:8px;letter-spacing:.1em;color:#97b29c}.build-label{font-size:8px;letter-spacing:.16em;color:#c1cbb09e;margin:18px 0}.intro-footer{position:relative;padding:12px 4.5% 20px;display:flex;justify-content:space-between;color:#d9dfbe;font-size:11px;gap:18px}.intro-footer>span{letter-spacing:.04em}
.loading-screen{position:fixed;inset:0;z-index:15;background:#122c29f5;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:24px;gap:12px}.loading-rune{font-size:100px;color:#a9e4b8;animation:breathe 2s infinite}.loading-screen h2{font-size:30px;margin:4px 0}.loading-screen p{font-size:12px;color:#b6cabb}progress{width:290px;max-width:80vw;height:5px;border:0;background:#355147}progress::-webkit-progress-bar{background:#355147}progress::-webkit-progress-value{background:#e4d2a4}
.glass{background:var(--panel);border:1px solid #e1d3a538;box-shadow:0 8px 22px #091e2733;backdrop-filter:blur(14px)}#hud{position:fixed;inset:0;pointer-events:none}#hud button,#hud .glass,#touch-controls{pointer-events:auto}.player-panel{position:absolute;top:max(24px,env(safe-area-inset-top));left:max(25px,env(safe-area-inset-left));display:flex;align-items:center;width:258px;padding:10px 14px 10px 7px;border-radius:6px;gap:4px}.portrait{width:55px;height:66px;flex-shrink:0;background-size:400% 800%;background-repeat:no-repeat;filter:drop-shadow(0 3px 3px #051e19)}.player-info{flex:1;min-width:0}.player-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.player-heading strong{font-family:Georgia,serif;font-weight:normal;font-size:17px}.player-heading>span{font-size:9px;color:var(--gold)}.meter{position:relative;height:12px;background:#091f1e;border:1px solid #ffffff1c;overflow:hidden;border-radius:2px}.meter i{position:absolute;inset:0;right:auto;width:100%;background:linear-gradient(90deg,#78af81,#bada9c);transition:width .22s}.meter span{position:absolute;inset:0;text-align:center;font-size:8px;line-height:11px;color:#fff;letter-spacing:.05em;text-shadow:0 1px 3px #001c14}.meter.mana{height:6px;margin-top:5px}.meter.mana i{background:linear-gradient(90deg,#50babb,#a7dee5)}.meter.mana span{display:none}.location{position:absolute;top:27px;left:50%;transform:translateX(-50%);text-align:center;text-shadow:0 2px 7px #061d22}.location .eyebrow{font-size:8px}.location h2{margin:7px 0;font-size:24px;letter-spacing:.035em}.location #location-time{font-size:9px;letter-spacing:.12em;color:#e7e0c2}.quest-panel{position:absolute;top:25px;right:25px;width:260px;border-radius:6px;padding:17px 19px}.quest-panel p{font-size:12px;line-height:1.7;margin:10px 0 8px}.quest-panel #boss-progress{color:#9fbda6;font-size:10px}.hud-buttons{position:absolute;top:170px;right:25px;display:flex;gap:6px}.hud-buttons button{width:41px;height:38px;border:1px solid #e8dba242;border-radius:5px;background:#15362eee;font-size:19px}.hud-buttons button:hover{background:#456647}.skills{position:absolute;left:50%;bottom:28px;transform:translateX(-50%);display:flex;gap:6px;padding:8px;border-radius:8px}.skills button{position:relative;display:flex;align-items:center;flex-direction:column;justify-content:center;width:68px;height:65px;background:#ffffff08;border:1px solid #d8cd9d2b;border-radius:4px}.skills button:hover,.skills button.held{background:#b6d99b26;border-color:#d4d694}.skills kbd{position:absolute;top:-18px;font:8px Arial;background:#17372ecc;padding:3px 6px;border:1px solid #dae6b938;border-radius:3px;white-space:nowrap}.skills b{font-size:23px;font-weight:normal;color:#e1d49e}.skills span{font-size:8px;line-height:1.4;margin-top:6px;color:#d9e0c2}.skills .cooling{opacity:.48}.status-line{position:absolute;left:25px;bottom:16px;color:#f8f0d3;font-size:9px;text-shadow:0 1px 4px #123;display:flex;align-items:center;gap:15px}.status-line #connection-status:before{content:'●';font-size:7px;color:#c3ef93;margin-right:6px}.status-line .text-button{font-size:9px}#party-members{position:absolute;top:121px;left:28px;display:flex;flex-direction:column;gap:7px}.party-mini{background:#16372ed9;padding:7px 11px;border-radius:4px;border-left:2px solid #e7cea0;font-size:10px}#boss-bar{position:absolute;top:118px;left:50%;transform:translateX(-50%);width:350px;max-width:35vw;text-align:center;font-family:Georgia,serif;text-shadow:0 1px 5px #14251e}#boss-title{font-size:15px}#boss-bar .meter{height:7px;margin-top:8px}#boss-bar i{background:linear-gradient(90deg,#bc686f,#f0b783)}#boss-phase{font-family:Arial,sans-serif;font-size:9px;display:block;margin-top:5px}#interaction{position:absolute;left:50%;bottom:150px;transform:translateX(-50%);background:#102f29ea;padding:9px 15px;border:1px solid #dddbac77;border-radius:5px;font-size:12px;display:flex;align-items:center;gap:10px;white-space:nowrap}kbd{font-family:inherit}#interaction kbd{padding:4px 6px;border:1px solid #e8dbab78;border-radius:3px;font-size:10px}
.modal-screen{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:#071c1b99;backdrop-filter:blur(6px);padding:22px;touch-action:pan-y}.modal{position:relative;max-width:760px;width:100%;max-height:90dvh;overflow:auto;background:linear-gradient(135deg,#1c4138,#102c28);border:1px solid #dec99766;border-radius:8px;box-shadow:0 25px 80px #071b1b70;padding:38px 40px}.modal h2{font-size:31px;margin:12px 0 24px;color:#f1deb3}.modal p{line-height:1.7;color:#ccd8c7;font-size:13px}.modal-close{position:absolute;right:15px;top:10px;font-size:28px;padding:0 8px;background:none;color:#c9d4c0}.modal-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.region-card,.item-card{padding:17px;border:1px solid #d6d09b35;background:#aaca9808;border-radius:5px;text-align:left}.region-card h3,.item-card h3{font-size:19px;margin:5px 0 10px}.region-card p,.item-card p{font-size:11px;margin:5px 0}.region-card small{font-size:9px;color:var(--gold);letter-spacing:.1em}.region-card.locked{opacity:.44}.region-card.current{border-color:#e2cc95;background:#e2cc9512}.stats{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:20px;padding:16px;background:#081f1977;border-radius:4px}.stats b{font-size:21px;color:var(--gold);font-family:Georgia,serif}.stats small{display:block;margin-top:6px;color:#c5ceba;font-size:10px}.modal .primary{margin-top:18px}.setting{display:flex;align-items:center;justify-content:space-between;gap:25px;border-bottom:1px solid #ded6a51b;padding:15px 0;font-size:12px}.setting input[type=range]{width:180px;accent-color:#b1d69f}.setting select{background:#0f3027;border:1px solid #b8cb9266;border-radius:4px;padding:7px;color:#f5e7bf}.setting input[type=checkbox]{accent-color:#afcc83;transform:scale(1.2)}.controls-table{width:100%;border-collapse:collapse;font-size:12px}.controls-table td{padding:11px 0;border-bottom:1px solid #ccdbab26}.controls-table td:first-child{color:var(--gold);width:45%}.invite-row{display:flex;gap:20px;align-items:center;padding:20px 0}.invite-row strong{font-size:32px;font-family:Georgia,serif;color:var(--gold);letter-spacing:.15em}.lobby-player{display:flex;align-items:center;gap:14px;border-bottom:1px solid #e2d0a126;padding:8px}.lobby-player .portrait{height:60px}.lobby-player .ready-label{margin-left:auto;font-size:10px;color:#bad49c}.lobby-actions{display:flex;gap:12px;align-items:center;margin-top:20px}.lobby-actions .primary{margin:0;flex:1}.recovery-box{display:block;word-break:break-all;user-select:all;background:#081e1b;padding:16px;line-height:1.7;font-size:11px;color:#e2d09e;border:1px solid #dbc49433}.recovery-input{width:100%;padding:13px;background:#081e1b;border:1px solid #9fb79655;border-radius:4px;color:#fff;user-select:text}.ring-items{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.ring-items button{width:120px;min-height:95px;border-radius:50%;border:1px solid #d6c490;background:#46634066;font-size:13px}.ring-items button b{display:block;font-size:25px;color:var(--gold);margin-bottom:8px}
#dialog{position:fixed;z-index:12;left:50%;bottom:115px;transform:translateX(-50%);width:min(640px,88vw);background:#112e29f5;border:1px solid #ddc39888;border-radius:7px;padding:22px 28px;box-shadow:0 15px 40px #122b2460}.dialog-speaker{font-size:10px;letter-spacing:.1em;color:var(--gold)}#dialog p{font-family:Georgia,serif;font-size:18px;line-height:1.6;margin:12px 0}#dialog button{float:right}#toasts{position:fixed;top:28%;left:50%;transform:translateX(-50%);z-index:40;display:flex;align-items:center;flex-direction:column;gap:8px;pointer-events:none;width:85%;max-width:470px}.toast{padding:12px 20px;text-align:center;font-size:12px;line-height:1.5;background:#11352cf5;border:1px solid #d7cfa465;box-shadow:0 6px 20px #051a2560;border-radius:5px;animation:toast-in .25s ease-out}.ending-text{font-family:Georgia,serif;font-size:19px!important;line-height:1.8!important}.credits{margin-top:25px;text-align:center;font-size:11px;line-height:2;color:#b5c8b2}
#touch-controls{display:none}#orientation{display:none;position:fixed;z-index:50;inset:0;background:#112c29f9;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:40px}#orientation>span{font-size:65px;color:var(--gold)}#orientation h2{font-size:27px}#orientation p{line-height:1.8;color:#c4d7c1;font-size:13px}
.element-options{display:flex;flex-wrap:wrap;gap:8px}.element-options button{padding:10px 14px;font-size:11px}
@keyframes slow-arrival{from{transform:scale(1.03);opacity:.4}to{transform:scale(1);opacity:1}}@keyframes breathe{50%{opacity:.6;transform:scale(.92)}}@keyframes toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media(min-height:950px){.intro-main{margin-top:7vh}.intro-copy{margin:28px 0}.adventure-card{padding:26px 30px}.hero{height:132px}.hero-art{height:122px}}
@media(max-height:800px) and (min-width:1000px){.intro-header{padding-top:18px;padding-bottom:12px}.intro-main{margin-top:8px;width:490px}h1{font-size:86px;margin:15px 0 10px}.intro-main>h2{font-size:20px}.intro-copy{margin:15px 0}.adventure-card{padding:17px 22px}.heroes{margin:11px 0 8px}.hero{height:95px}.hero-art{height:91px}.start-fields{margin:11px 0}.intro-footer{position:fixed;bottom:0;left:0;right:0;pointer-events:none}.intro-footer button{pointer-events:auto}.build-label{margin:12px 0}}
@media(pointer:coarse),(max-width:950px){body.playing #touch-controls{display:block}.skills{display:none}.quest-panel{width:210px;right:16px;top:16px;padding:12px}.quest-panel p{font-size:10px;margin:6px 0}.quest-panel #boss-progress{font-size:8px}.player-panel{left:max(16px,env(safe-area-inset-left));top:16px;width:215px;padding:7px 10px 7px 4px}.portrait{width:44px;height:54px}.player-heading strong{font-size:14px}.location{top:18px}.location h2{font-size:20px}.location .eyebrow{font-size:6px}.hud-buttons{top:125px;right:16px;gap:5px}.hud-buttons button{width:34px;height:33px;font-size:17px}#party-members{top:100px;left:18px}.status-line{bottom:8px;left:max(20px,env(safe-area-inset-left));font-size:8px;gap:10px}.status-line #performance{display:none}#joystick{position:absolute;bottom:40px;left:max(36px,env(safe-area-inset-left));width:130px;height:130px;border:1px solid #e6e1b94d;border-radius:50%;background:#133b3055;box-shadow:inset 0 0 25px #123f2540;transform:scale(var(--touch-scale));transform-origin:bottom left}#joystick:before,#joystick:after{content:'';position:absolute;background:#e8f0ca1d}#joystick:before{left:50%;top:12px;bottom:12px;width:1px}#joystick:after{top:50%;left:12px;right:12px;height:1px}#joystick-knob{position:absolute;left:40px;top:40px;width:48px;height:48px;background:#d4e1b447;border:1px solid #f2e7bb8c;box-shadow:0 4px 12px #152d2666;border-radius:50%}.touch-actions{position:absolute;right:max(25px,env(safe-area-inset-right));bottom:26px;width:216px;height:164px;transform:scale(var(--touch-scale));transform-origin:bottom right}.touch-actions button{position:absolute;width:56px;height:56px;min-width:44px;min-height:44px;background:#173b30bb;border:1px solid #efe1b78a;border-radius:50%;font-size:23px;box-shadow:0 4px 14px #163a2266;color:#f5e6b7}.touch-actions button.held{background:#8ab975bb}.touch-actions button:nth-child(1){left:0;top:0}.touch-actions button:nth-child(2){left:65px;top:0}.touch-actions button:nth-child(3){left:130px;top:0}.touch-actions button:nth-child(4){left:0;top:67px}.touch-actions button:nth-child(5){left:68px;top:66px;width:75px;height:75px;font-size:33px;background:#b9bd825c}.touch-actions button:nth-child(6){left:155px;top:70px}.touch-camera{position:absolute;left:190px;bottom:32px;display:flex;gap:5px}.touch-camera button{width:35px;height:35px;border-radius:5px;background:#14372ccb;border:1px solid #e4dcaf55;font-size:20px}#interaction{bottom:75px;font-size:10px;padding:8px 12px;max-width:32vw;white-space:normal}#boss-bar{top:95px;width:290px}#boss-title{font-size:12px}#dialog{bottom:30%;padding:15px 22px}#dialog p{font-size:15px}.modal{padding:28px;max-height:90dvh}.modal h2{font-size:25px}.intro-main{margin:25px auto;max-width:88%}.intro-header{padding:22px 6%}.intro-header>span{display:none}.intro-footer{position:relative}.art-shade{background:linear-gradient(90deg,#122e29db,#1838298a),linear-gradient(0deg,#142c23e6,transparent)}body.playing #orientation{display:none}}
@media(max-width:950px) and (orientation:landscape){.intro-main{width:780px;display:grid;grid-template-columns:1fr 1.15fr;gap:5px 30px;margin:0 auto 20px}.intro-main>.eyebrow{grid-column:1;font-size:7px;align-self:end}.intro-main>h1{grid-column:1;font-size:80px;margin:18px 0 0;align-self:end}.intro-main>h2{grid-column:1;font-size:18px;margin:10px 0;align-self:start}.intro-copy{grid-column:1;align-self:start;font-size:10px;margin:3px 0}.adventure-card{grid-column:2;grid-row:1/6;padding:14px 16px}.hero{height:82px}.hero-art{height:79px}.hero-name{font-size:13px;bottom:7px}.heroes{gap:6px;margin:10px 0 7px}.start-fields{margin:8px 0}.start-fields input{padding:8px}.adventure-card .primary{padding:12px}.card-footer{margin-top:9px;gap:5px;flex-wrap:wrap}.card-footer>span{font-size:7px}#hero-description{font-size:9px;min-height:30px}.hero-subtitle{font-size:12px}.build-label{grid-column:1;font-size:7px}.intro-header{padding:12px 5%}.intro-footer{display:none}.location h2{font-size:17px}.quest-panel{width:180px;padding:9px 12px}.quest-panel .section-label{font-size:9px}.quest-panel .section-label span{font-size:7px}.hud-buttons{top:112px}.player-panel{width:200px}.status-line{font-size:7px}#joystick{width:110px;height:110px;left:25px;bottom:28px}#joystick-knob{left:30px;top:30px}.touch-camera{left:150px;bottom:29px}.touch-actions{transform:scale(calc(.88 * var(--touch-scale)));bottom:14px;right:15px}#boss-bar{max-width:30vw}.modal h2{font-size:22px}.modal{padding:23px 30px}.modal-grid{gap:8px}.region-card{padding:12px}}
@media(max-width:600px) and (orientation:portrait){body.playing #orientation{display:flex}h1{font-size:91px}.intro-main>h2{font-size:20px}.intro-header{padding:20px 6%}.adventure-card{padding:18px}.card-footer{gap:6px}.card-footer>span{font-size:7px}.card-footer .text-button{font-size:9px}.intro-footer{font-size:9px}.intro-footer>span{display:none}.modal-grid{grid-template-columns:1fr}.setting{gap:12px}.setting input[type=range]{width:120px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
