@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600;700&family=Inter:wght@400;500;600;700;800&display=swap');
:root{--bg:#10151d;--panel:#19212b;--panel2:#1e2832;--border:#343e47;--text:#edf0ec;--muted:#a5afb5;--gold:#d9b47b;--gold-bright:#efce97;--blue:#6ba6bb;--green:#67b594;--red:#c56c68;font-family:Inter,system-ui,Arial,sans-serif;font-synthesis:none;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(ellipse at 65% 10%,#1e2a34 0,#10151d 50%);font-size:14px}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible,a:focus-visible{outline:3px solid #f0d099;outline-offset:3px}a{color:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr)}.sidebar{min-height:100vh;position:sticky;top:0;height:100vh;padding:27px 17px;background:#141b24;border-right:1px solid #2e3843;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:9px;margin:0 5px 45px}.brand-crest{width:46px;height:46px}.brand-name{font:700 21px Cinzel,Georgia,serif;letter-spacing:2px;color:#e4c393}.brand-tag{font-size:8px;color:#8395a2;letter-spacing:2.4px;margin-top:5px}.sidebar-label,.eyebrow{font-size:10px;font-weight:700;letter-spacing:2.7px;color:#d3aa73}.sidebar-label{padding:0 15px;margin-bottom:15px;color:#8797a2}.side-nav{display:grid;gap:6px}.nav-link{display:flex;align-items:center;gap:14px;text-align:left;padding:13px 15px;border:1px solid transparent;border-radius:9px;background:none;color:#aeb9c1;font-size:13px}.nav-link:hover{background:#212d39}.nav-link.active{background:#2b343b;border-color:#4a4740;color:#f1cf9a}.nav-symbol{font-size:21px;width:22px;text-align:center;line-height:1}.sidebar-bottom{margin-top:auto;border:1px solid #33424b;background:#1c2630;border-radius:12px;padding:15px}.mini-head{display:flex;gap:10px;align-items:center;font-size:13px;color:var(--gold)}.mini-details{display:flex;justify-content:space-between;font-size:10px;color:#9ba9b1;margin:15px 0 8px}.mini-bar,.progress{height:8px;border-radius:99px;background:#101820;overflow:hidden}.mini-bar span{display:block;background:var(--green);height:100%;width:100%}.disclaimer-small{font-size:10px;color:#8697a1;line-height:1.5;margin-top:12px}.main-shell{min-width:0;display:flex;flex-direction:column}.topbar{height:83px;border-bottom:1px solid #2b3640;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,68px)}.bread{display:flex;flex-direction:column;gap:5px}.bread-tiny{font-size:10px;letter-spacing:2.4px;color:#8b9ca5}.bread-title{font-weight:600;font-size:14px}.top-actions{display:flex;gap:17px;align-items:center}.online-pill{display:flex;align-items:center;gap:8px;font-size:11px;color:#9bc1ac}.pulse-dot{height:7px;width:7px;background:#78bd98;border-radius:50%;box-shadow:0 0 0 3px #314c3c}.icon-button{width:32px;height:32px;border:1px solid #3c4952;border-radius:50%;background:transparent;font-weight:700;color:#c2cbd1}.content{width:100%;max-width:1240px;margin:0 auto;flex:1;padding:38px clamp(20px,5vw,68px) 48px}.section-heading{margin-bottom:28px}.section-heading h1{font:600 clamp(26px,3vw,38px) Cinzel,Georgia,serif;letter-spacing:.2px;margin:11px 0;color:#f0e8da}.section-heading p{line-height:1.7;color:#aeb9bf;max-width:660px;margin:0;font-size:13px}.scene-card{height:360px;border:1px solid #5d5960;border-radius:13px;overflow:hidden;position:relative;background:#1a2c37;box-shadow:0 15px 40px #090d1480}.scene-card>img{width:100%;height:100%;display:block;object-fit:cover;object-position:center 54%;filter:saturate(.95)}.scene-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,18,24,.92),rgba(11,19,26,.67) 48%,transparent 100%),linear-gradient(0deg,#111a20ad,transparent 50%)}.scene-content{position:absolute;left:clamp(22px,4vw,53px);bottom:47px;max-width:445px}.scene-badge{font-size:10px;letter-spacing:2px;font-weight:700;color:#ecc38a}.scene-content h2{font:600 clamp(30px,4vw,47px) Cinzel,Georgia,serif;color:#f0dbb8;margin:12px 0}.scene-content p{font-size:13px;line-height:1.8;color:#cbd1cf;margin:0 0 21px}.scene-coordinates{position:absolute;bottom:18px;right:20px;font-size:9px;letter-spacing:1.8px;color:#acb5bb}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;border-radius:7px;padding:12px 18px;font-size:12px;font-weight:800;min-height:44px;border:1px solid #9b7954;transition:filter .15s ease,transform .15s ease}.button:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px)}.button.primary{color:#21201d;background:linear-gradient(115deg,#eacb97,#c89b60);border-color:#e7be81}.button.secondary{background:#2b383e;color:#e7c596;border-color:#927c5e}.button.quiet{background:#2e353c;color:#aab4bb;border-color:#505c65}.button.wide{width:100%;margin-top:4px}.feature-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin-top:22px}.feature-card{border:1px solid #34414b;background:linear-gradient(145deg,#202a33,#192129);border-radius:12px;padding:24px;display:flex;gap:17px}.feature-icon{height:48px;width:48px;flex-shrink:0;display:grid;place-items:center;border-radius:10px;font-size:26px}.feature-icon.amber{background:#48392b;color:#dcb77d}.feature-icon.blue{background:#2c424d;color:#90c4d5}.feature-card h3{font:600 19px Cinzel,Georgia,serif;margin:0 0 10px}.feature-card p{font-size:12px;line-height:1.75;color:#a9b7bf;margin:0 0 16px}.text-link{background:transparent;border:0;padding:0;color:#e6bc7f;font-size:12px;font-weight:700}.text-link:hover{text-decoration:underline}.notice{display:flex;align-items:flex-start;gap:14px;margin-top:22px;background:#1b2730;border:1px solid #3f4e53;border-radius:11px;padding:17px 19px;color:#dcc18c}.notice>span{font-size:22px}.notice strong{font-size:12px}.notice p{color:#aab7bc;font-size:12px;line-height:1.6;margin:7px 0 0}.footer{font-size:10px;color:#8796a1;letter-spacing:.5px;border-top:1px solid #2c363f;text-align:center;padding:18px 20px}.bottom-nav{display:none}.location-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.location-card{border:1px solid #3b464e;background:linear-gradient(145deg,#242f37,#19212b);border-radius:12px;overflow:hidden;min-width:0}.location-card.locked{opacity:.64}.location-art{height:170px;display:grid;place-items:center;background:radial-gradient(circle at 65% 30%,#536b66,#263d48 47%,#141f29 95%);font-size:87px;color:#e6c48b;text-shadow:0 8px 20px #060e16}.location-card:nth-child(2) .location-art{background:radial-gradient(circle,#4b6875,#1a3441 70%,#14232e)}.location-card:nth-child(3) .location-art{background:radial-gradient(circle,#574755,#2d2938 72%,#1a1b29)}.location-info{padding:21px}.location-top{display:flex;justify-content:space-between;font-size:9px;color:#d7bb91;letter-spacing:1.3px;text-transform:uppercase}.location-info h2{font:600 20px Cinzel,serif;margin:17px 0 10px}.location-info p{font-size:12px;line-height:1.7;min-height:60px;color:#b2bdc3}.location-info .button{width:100%}.battle-frame{border:1px solid #42505a;border-radius:13px;background:linear-gradient(145deg,#202b34,#172029);padding:23px;box-shadow:0 13px 36px #090c1357}.battle-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:21px}.turn-dot{font-size:11px;color:#a4b9b8}.actors{display:grid;grid-template-columns:1fr 56px 1fr;align-items:center;gap:17px}.actor-card{display:flex;align-items:center;gap:14px;min-width:0}.actor-art{height:78px;width:76px;display:grid;place-items:center;flex-shrink:0;border:1px solid #686653;border-radius:9px;background:radial-gradient(circle,#405866,#162631);font-size:53px;color:#ebcb98}.actor-art.enemy{background:radial-gradient(circle,#584c49,#29282b);color:#d8a3a0}.actor-details{flex:1;min-width:0}.actor-line{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-bottom:14px}.actor-line strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.actor-line span{color:#9fb0b7;font-size:10px;white-space:nowrap}.progress{height:7px}.progress-fill{height:100%;display:block;transition:width .2s}.progress-fill.green{background:#60ad89}.progress-fill.red{background:#ba6d68}.progress-fill.gold{background:linear-gradient(90deg,#b38d5b,#ebc482)}.actor-hp{display:flex;justify-content:space-between;font-size:10px;margin-top:9px;color:#a9b5bc}.actor-hp b{color:#dfe5e4;font-weight:600}.versus{font:700 25px Cinzel,serif;color:#ad926f;text-align:center}.intent{display:flex;align-items:center;gap:15px;background:#2b3439;border:1px solid #4f5148;border-radius:10px;padding:15px;margin:25px 0 18px}.intent-mark{font-size:27px;color:#e0ba84}.intent strong{font-size:13px;color:#f1d7aa}.intent p{font-size:11px;color:#b6c1c6;line-height:1.5;margin:6px 0 0}.resource-row{display:flex;justify-content:space-between;color:#b4c0c7;font-size:11px;margin:10px 0 7px}.resource-row strong{color:#e6cfaa}.advantage-row{margin-top:14px}.pips{display:flex;gap:7px}.pip{height:7px;flex:1;border-radius:9px;background:#33414b}.pip.filled{background:#d7ae73}.battle-controls{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin-top:22px}.picker-heading{display:flex;justify-content:space-between;gap:5px;margin-bottom:12px}.picker-heading strong{font-size:12px}.picker-heading span{font-size:10px;color:#abb7ba}.action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.action-choice{background:#222e38;border:1px solid #48545d;border-radius:9px;padding:12px 5px;min-height:74px;display:flex;flex-direction:column;gap:9px;align-items:center;justify-content:center;font-size:10px;color:#cbd6d8}.action-choice.selected{border-color:#e0b879;background:#493c2e;color:#ffe1b0}.action-glyph{font-size:22px}.battle-controls .wide{grid-column:span 2}.combat-log{border-top:1px solid #3e4a52;margin-top:24px;padding-top:16px}.combat-log>strong{font-size:12px;color:#e3c48e}.combat-log p,.combat-log li{font-size:11px;line-height:1.7;color:#b6c1c6}.combat-log ul{padding-left:18px;margin-bottom:0}.ending{padding:24px 10px;text-align:center}.ending-symbol{font-size:41px;color:#ebc48e}.ending h2{font:600 27px Cinzel,serif}.ending p{max-width:360px;margin:0 auto 18px;font-size:12px;line-height:1.7;color:#b8c4c7}.hero-grid{display:grid;grid-template-columns:minmax(230px,1fr) minmax(330px,2fr);gap:20px}.hero-profile,.hero-stats{border:1px solid #394751;background:#1c2731;border-radius:13px;padding:24px}.hero-profile{text-align:center}.hero-portrait{height:210px;border:1px solid #4c5961;background:radial-gradient(circle,#394e5c,#17242f);display:grid;place-items:center;font-size:130px;color:#dac28f;border-radius:10px}.hero-name{font:600 24px Cinzel,serif;margin:22px 0 8px}.hero-profile p,.hero-stats p{font-size:12px;color:#9eafb8}.demo-chip{display:inline-block;font-size:9px;color:#e5c590;background:#41372e;border:1px solid #806749;padding:8px 10px;border-radius:25px;margin-top:11px;letter-spacing:1px}.hero-stats h2{font:600 20px Cinzel,serif;margin:0 0 18px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:29px}.stat-tile{border:1px solid #40505b;background:#27333e;border-radius:9px;padding:15px;display:flex;align-items:center;gap:13px}.stat-tile span{display:block;color:#9cacb4;font-size:11px}.stat-tile strong{display:block;font:600 20px Cinzel,serif;margin-top:4px}.stat-symbol{color:#deb985;font-size:29px}.slots{display:flex;gap:10px;flex-wrap:wrap}.slot{flex:1;min-width:70px;height:92px;border:1px dashed #59646c;background:#26313b;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#85939c}.slot>span{font-size:24px}.slot small{font-size:10px}.hero-stats .muted{line-height:1.6;margin-top:19px}.toast{position:fixed;bottom:22px;right:25px;z-index:10;max-width:350px;border:1px solid #b9a06e;background:#2a3338;color:#f0d5a6;padding:14px 17px;border-radius:9px;box-shadow:0 10px 40px #050b11bb;font-size:12px;line-height:1.6}
@media(max-width:1120px){.sidebar{width:210px}.app-shell{grid-template-columns:210px minmax(0,1fr)}.feature-grid,.location-grid{grid-template-columns:1fr}.location-card{display:grid;grid-template-columns:170px 1fr}.location-art{height:100%;min-height:215px}.location-info p{min-height:0}.actors{grid-template-columns:1fr 35px 1fr;gap:9px}.actor-card{flex-direction:column;align-items:stretch}.actor-art{height:69px;width:100%}.hero-grid{grid-template-columns:1fr 1.4fr}}
@media(max-width:750px){.app-shell{display:block}.sidebar{display:none}.topbar{height:65px;padding:0 18px}.bread-tiny{font-size:8px}.bread-title{font-size:12px}.online-pill{font-size:9px}.top-actions{gap:9px}.content{padding:26px 16px 110px}.section-heading{margin-bottom:21px}.section-heading h1{font-size:27px}.section-heading p{font-size:12px}.scene-card{height:340px}.scene-overlay{background:linear-gradient(0deg,rgba(8,17,24,.97),rgba(8,17,24,.57) 68%,rgba(8,17,24,.1))}.scene-content{left:20px;right:20px;bottom:37px}.scene-content h2{font-size:33px}.scene-coordinates{display:none}.feature-grid{grid-template-columns:1fr}.feature-card{padding:20px}.bottom-nav{display:grid;position:fixed;bottom:0;left:0;right:0;z-index:20;grid-template-columns:repeat(4,1fr);background:#141c25;border-top:1px solid #42505a;padding:6px max(8px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));box-shadow:0 -10px 35px #03080b7d}.nav-mobile{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:6px 4px;gap:5px;font-size:10px;min-height:55px}.nav-mobile .nav-symbol{font-size:21px}.location-grid{display:grid;grid-template-columns:1fr}.location-card{display:block}.location-art{height:130px;min-height:0}.location-info{padding:18px}.hero-grid{grid-template-columns:1fr}.hero-portrait{height:165px}.battle-frame{padding:15px}.actor-card{gap:8px}.actor-line{flex-direction:column;align-items:flex-start;gap:4px}.actor-art{height:68px}.actors{gap:7px}.versus{font-size:19px}.battle-controls{grid-template-columns:1fr}.battle-controls .wide{grid-column:1}.toast{bottom:91px;left:16px;right:16px;max-width:none}.footer{display:none}}
@media(max-width:390px){.action-choice{font-size:9px}.scene-content h2{font-size:28px}.brand{margin-bottom:10px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* M0.2 – tactical zones, skill branches and lightweight combat feedback */
.progress-fill.blue{background:linear-gradient(90deg,#577fba,#8ec3ec)}
.zone-grid .action-choice{min-height:76px}
.skill-section{grid-column:span 2}
.skill-picker{display:flex;gap:9px;flex-wrap:wrap}
.skill-choice{min-width:145px;display:flex;flex:1;gap:9px;align-items:center;text-align:left;padding:12px;background:#222e38;border:1px solid #46545e;border-radius:9px}
.skill-choice.selected{border-color:#e0b879;background:#493c2e}
.skill-choice strong,.skill-choice small{display:block}
.skill-choice strong{font-size:11px;line-height:1.35}
.skill-choice small{font-size:10px;color:#bdc6c9;margin-top:3px}
.skill-icon{font-size:21px;color:#dfba80}
.subtle-link{background:transparent;border:0;color:#e7c48a;font-size:11px;text-decoration:underline;padding:0}
.battle-stats-hint{border:1px solid #43505a;background:#222c35;border-radius:8px;padding:11px;margin-top:20px;color:#bfced1;font-size:11px;line-height:1.6}
.derived-line{padding:10px 0 20px}.derived-line strong{color:#e4c48d}
.gear-list{display:grid;gap:9px}
.gear-row{display:grid;grid-template-columns:1fr auto;gap:5px 12px;align-items:center;text-align:left;background:#25313b;border:1px solid #485660;border-radius:9px;padding:12px}
.gear-row.equipped{border-color:#d1a86b;background:#35372f}
.gear-row>span{font-weight:700;font-size:12px}
.gear-row small{font-size:10px;color:#b5c4cc}
.gear-row strong{grid-row:span 2;grid-column:2;color:#f1cf91;font-size:11px}
.talent-summary{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;border:1px solid #3d4f58;background:#1c2931;border-radius:10px;padding:16px;margin-bottom:19px}
.talent-summary strong{color:#e7c68b}.talent-summary span{font-size:11px;color:#aebec6}
.talent-branches{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.talent-branch{background:#1e2a33;border:1px solid #42515b;border-radius:12px;padding:17px;min-width:0}
.talent-branch h2{font:600 19px Cinzel,Georgia,serif;color:#e4c48e;margin:0 0 17px}
.talent-node{display:flex;align-items:center;gap:11px;padding:12px 0;border-top:1px solid #34434e;flex-wrap:wrap}
.talent-node>div{flex:1;min-width:120px}
.talent-node>div>strong{font-size:12px}
.talent-node p{font-size:11px;line-height:1.5;color:#aec0c6;margin:5px 0}
.talent-node small{font-size:10px;color:#bc9f78}
.talent-node .button{font-size:11px;padding:9px 12px}
.talent-dot{font-size:25px;color:#d2ae76}
.talent-node.unlocked .talent-dot{color:#83bb99}
.actor-art{position:relative;isolation:isolate;overflow:visible}
.actor-art>span:first-child{display:inline-block;transform-origin:center bottom}
.impact-flash{position:absolute;inset:8px;border:2px solid rgba(238,194,113,.8);border-radius:50%;opacity:0;pointer-events:none;z-index:4}
.float-number{position:absolute;top:2px;left:0;right:0;z-index:6;text-align:center;font-weight:800;font-size:15px;color:#f2cf8c;text-shadow:0 2px 5px #090c11,0 1px 10px #090c11;white-space:nowrap;pointer-events:none;opacity:0;animation:vardenyx-float 1s ease-out both}
.float-number.defending{color:#ffb9a2}.fx-dodge .float-number,.fx-block .float-number{color:#a3d4ed}
.fx-hit>span:first-child{animation:vardenyx-hit .42s ease-out}
.fx-block>span:first-child{animation:vardenyx-block .45s ease-out}
.fx-dodge>span:first-child{animation:vardenyx-dodge .5s ease-out}
.fx-crit>span:first-child{animation:vardenyx-crit .55s ease-out}
.fx-magic>span:first-child{animation:vardenyx-magic .6s ease-out}
.fx-hit .impact-flash,.fx-crit .impact-flash,.fx-magic .impact-flash,.fx-block .impact-flash{animation:vardenyx-flash .52s ease-out}
.fx-magic .impact-flash{border-color:#b9b0f9}.fx-block .impact-flash{border-color:#90c8db}
.versus-active{animation:vardenyx-versus .45s ease-out}
@keyframes vardenyx-hit{0%{transform:translateX(0)}27%{transform:translateX(8px) scale(.96)}60%{transform:translateX(-5px)}100%{transform:translateX(0)}}
@keyframes vardenyx-block{0%,100%{transform:scale(1)}45%{transform:scale(.92) rotate(-4deg)}}
@keyframes vardenyx-dodge{0%{transform:translateX(0);opacity:1}40%{transform:translateX(-18px);opacity:.4}100%{transform:translateX(0);opacity:1}}
@keyframes vardenyx-crit{0%{filter:none;transform:translateX(0)}35%{filter:drop-shadow(0 0 12px #ffe0a4);transform:translateX(9px) scale(1.06)}100%{filter:none;transform:translateX(0)}}
@keyframes vardenyx-magic{0%{filter:none;transform:scale(1)}40%{filter:drop-shadow(0 0 14px #b9a8fa);transform:scale(1.08)}100%{filter:none;transform:scale(1)}}
@keyframes vardenyx-flash{0%{opacity:0;transform:scale(.2)}30%{opacity:.9}100%{opacity:0;transform:scale(1.55)}}
@keyframes vardenyx-float{0%{opacity:0;transform:translateY(5px)}18%{opacity:1}80%{opacity:1}100%{opacity:0;transform:translateY(-28px)}}
@keyframes vardenyx-versus{30%{color:#ffe1a5;transform:scale(1.17)}100%{transform:scale(1)}}
@media(max-width:1100px){.talent-branches{grid-template-columns:1fr}.talent-node{flex-wrap:nowrap}}
@media(max-width:750px){.battle-controls .skill-section{grid-column:1}.talent-node{flex-wrap:wrap}.skill-choice{min-width:125px}.bottom-nav{grid-template-columns:repeat(5,minmax(0,1fr))}.nav-mobile{font-size:9px;padding:6px 1px}.battle-stats-hint{font-size:10px}}
@media(max-width:380px){.skill-choice{min-width:100%;flex:1}.zone-grid .action-choice{min-height:66px}}
@media(prefers-reduced-motion:reduce){.fx-hit>span:first-child,.fx-block>span:first-child,.fx-dodge>span:first-child,.fx-crit>span:first-child,.fx-magic>span:first-child,.impact-flash,.float-number,.versus-active{animation:none!important}.float-number{opacity:1;position:static;display:block;font-size:10px}.impact-flash{display:none}}


/* M0.3 visual refresh — grayscale landscape RPG */
:root{--bg:#e3e5e5;--panel:#f7f8f8;--panel2:#eef0f0;--border:#b6babb;--text:#25282a;--muted:#60676b;--gold:#303438;--gold-bright:#222629;--blue:#727980;--green:#777e82;--red:#555b60;color:var(--text);background:#e3e5e5;color-scheme:light}
body{background:radial-gradient(ellipse at 25% 10%,#f7f8f8 0%,#dfe2e3 67%,#c7ccce 100%);color:#25282a;min-height:100dvh}
.app-shell{display:block;min-height:100dvh}
.main-shell{min-height:100dvh}
.sidebar,.bottom-nav{display:none!important}
.topbar{position:sticky;top:0;z-index:30;height:66px;padding:0 clamp(12px,2.4vw,32px);background:rgba(248,249,249,.97);border-bottom:1px solid #bcc0c0;box-shadow:0 3px 20px #282b2d18;gap:18px}
.topbar .brand-horizontal{margin:0;flex-shrink:0;gap:7px}
.topbar .brand-crest{width:36px;height:36px;filter:grayscale(1) contrast(1.15)}
.brand-name{font-size:19px;color:#25282a;letter-spacing:1.5px}
.brand-tag{color:#757b7e;font-size:7px;letter-spacing:1.6px}
.top-nav{display:flex;align-items:center;justify-content:center;flex:1;gap:4px;min-width:0}
.top-nav .nav-link{color:#4f5559;display:flex;align-items:center;gap:7px;white-space:nowrap;border-radius:8px;padding:9px 12px;min-height:42px}
.top-nav .nav-link:hover{background:#e4e6e7}
.top-nav .nav-link.active{background:#272b2f;color:white;border-color:#272b2f;box-shadow:0 4px 12px #14171a26}
.top-nav .nav-symbol{font-size:18px;width:auto}
.current-place{font-size:11px;color:#6e7477;white-space:nowrap}
.icon-button{border-color:#b9bfc1;color:#272b2e}
.online-pill{color:#555}
.content{max-width:1450px;padding:24px clamp(14px,3vw,42px) 34px}
.section-heading{margin-bottom:18px}
.section-heading h1,.hero-name,.hero-stats h2{color:#222629}
.section-heading h1{font-size:clamp(23px,2.6vw,34px);margin:5px 0 6px}
.section-heading p,.feature-card p,.notice p,.location-info p,.hero-profile p,.hero-stats p,.muted{color:#626a6e}
.eyebrow,.sidebar-label{color:#585e62}
.button{background:#2b3034;color:#f6f7f8;border:1px solid #2b3034;border-radius:8px;transition:transform .2s ease,box-shadow .2s ease,background .2s ease;box-shadow:0 4px 8px #1b1d2014}
.button:hover:not(:disabled){background:#454b4f;filter:none;transform:translateY(-2px);box-shadow:0 6px 16px #181c202b}
.button.primary,.button.secondary,.button.quiet{background:#272b2f;color:#f9faf9;border-color:#272b2f}
.button:disabled{opacity:.48}
.text-link,.subtle-link{color:#343a3e}
.feature-card,.notice,.location-card,.hero-profile,.hero-stats,.talent-branch,.talent-summary{background:#f6f7f7;border:1px solid #b9bfc1;box-shadow:0 6px 22px #1b1e2010;color:#272b2d}
.feature-icon.amber,.feature-icon.blue{background:#e0e3e4;color:#34393c}
.feature-card h3,.location-info h2,.talent-branch h2{color:#24292c}
.location-top,.location-info p,.location-info h2,.talent-node p,.talent-summary span,.notice strong,.notice p{color:#3e4448}
.location-art{background:linear-gradient(0deg,#5760685b,#e5e5e58c),url('./../assets/winds.svg') center/cover;font-size:72px;color:#f8f8f8;text-shadow:0 2px 8px #333}
.location-card:nth-child(2) .location-art,.location-card:nth-child(3) .location-art{filter:grayscale(1)}
.location-card.locked{opacity:.66}
.scene-card{border-color:#7c8589;box-shadow:0 12px 32px #252a3052}
.scene-card>img{filter:grayscale(.82) contrast(1.05);animation:scene-push 19s ease-in-out infinite alternate}
.scene-overlay{background:linear-gradient(90deg,rgba(20,25,29,.87),rgba(22,27,30,.49) 55%,transparent 100%),linear-gradient(0deg,#10151870,transparent 50%)}
.scene-content h2{color:#f7f8f8}.scene-content p,.scene-coordinates{color:#edf0f0}.scene-badge{color:#e8ebeb}
.scene-fog{position:absolute;inset:45% -15% -18%;pointer-events:none;opacity:.35;background:radial-gradient(ellipse at 25% 80%,#fbfcfcb8,transparent 45%),radial-gradient(ellipse at 75% 65%,#fafafa9c,transparent 48%);animation:fog-glide 16s ease-in-out infinite alternate}
.hero-portrait{background:linear-gradient(#d8dcde,#bbc1c4);border-color:#adb4b7;color:#30363a;font-size:0}
.hero-portrait::before{content:'';display:block;width:100%;height:100%;background:url('../assets/hero.svg') center bottom/contain no-repeat;filter:grayscale(1)}
.stats-grid .stat-tile{background:#eceeef;border-color:#c4c8c9}
.stat-tile span{color:#6a7073}.stat-tile strong,.stat-symbol{color:#30363a}
.demo-chip{background:#dedfe0;color:#40464a;border-color:#a4aaad}
.gear-row,.talent-node,.talent-summary{background:#edf0f0;border-color:#c0c6c8;color:#252b2e}
.gear-row.equipped,.talent-node.unlocked{background:#dfe2e3;border-color:#737b7f}
.gear-row small,.gear-row strong,.derived-line strong,.talent-summary strong,.talent-node small,.talent-dot,.talent-node.unlocked .talent-dot{color:#383f43}
.footer{background:#e5e7e8;border-color:#c8cdcf;color:#71777a}
.screen-enter{animation:screen-enter .36s cubic-bezier(.2,.7,.2,1) both}
.orientation-gate{display:none}
.battle-page{display:grid;gap:13px}
.battle-title{display:flex;justify-content:space-between;align-items:end;gap:16px}
.battle-title h1{font:600 clamp(22px,2.5vw,32px) Cinzel,Georgia,serif;margin:3px 0 0;color:#292e32}
.round-mark{font-size:11px;letter-spacing:1.2px;font-weight:800;color:#434b50;border:1px solid #aeb5b7;border-radius:20px;background:#f6f8f8;padding:8px 13px}
.battle-frame{position:relative;isolation:isolate;overflow:hidden;padding:15px 18px 12px;border:1px solid #959c9f;border-radius:16px;box-shadow:0 15px 34px #20242826;background:#b3babe url('../assets/arena.svg') center center / cover no-repeat;color:#f6f7f7}
.battle-frame[data-scene="valley"]{background-image:linear-gradient(0deg,#262c3152,#d6dcdd05),url('../assets/winds.svg')}
.ambient-mist{position:absolute;inset:40% -20% -16%;z-index:0;pointer-events:none;background:radial-gradient(ellipse at 10% 85%,#f9fafad1,transparent 52%),radial-gradient(ellipse at 80% 60%,#f9fafab0,transparent 51%);opacity:.45;animation:fog-glide 12s ease-in-out infinite alternate}
.battle-sun{position:absolute;left:45%;top:-48px;pointer-events:none;width:200px;height:160px;border-radius:50%;background:radial-gradient(circle,#ffffff6e,transparent 66%);animation:light-breathe 7s ease-in-out infinite alternate}
.battle-stage{position:relative;z-index:1;display:grid;grid-template-columns:minmax(105px,.95fr) minmax(280px,1.22fr) minmax(105px,.95fr);align-items:stretch;gap:clamp(8px,1.5vw,18px);min-height:310px}
.duelist{min-width:0;display:flex;flex-direction:column;position:relative;align-items:center;justify-content:space-between;text-align:center;padding:3px 2px 0}
.fighter-summary{width:100%;max-width:225px;background:#182027cc;border:1px solid #eceeee5c;border-radius:10px;padding:8px 10px;backdrop-filter:blur(5px);box-shadow:0 2px 12px #14191b46}
.fighter-level{display:block;letter-spacing:1.2px;font-size:9px;color:#c8d0d2}
.fighter-summary strong{display:block;font-size:12px;margin:3px 0 7px;color:white}
.fighter-summary small{display:block;margin-top:5px;color:#e8ecee;font-size:10px}
.progress{background:#4b5459}
.progress-fill.green{background:#d8e4e0}.progress-fill.red{background:#d7bec0}.progress-fill.blue{background:#bfcbd2}.progress-fill.gold{background:#e1ddd0}
.combat-figure{height:clamp(150px,29vh,275px);width:min(100%,210px);margin:2px auto -5px;position:relative;display:flex;align-items:flex-end;justify-content:center;transform-origin:center 80%}
.combat-figure img{height:100%;width:100%;object-fit:contain;object-position:bottom center;filter:drop-shadow(0 8px 8px #15181996)}
.duelist.enemy .combat-figure img{transform:scaleX(-1)}
.figure-halo{position:absolute;inset:25% 5% 0;border-radius:50%;background:radial-gradient(ellipse,#e4e8e843,transparent 68%);animation:halo-pulse 5s ease-in-out infinite alternate}
.fighter-ground{height:11px;width:74%;background:radial-gradient(ellipse,#24282cc2,transparent 75%);border-radius:50%;filter:blur(3px)}
.battle-center{align-self:center;display:flex;flex-direction:column;gap:9px;min-width:0;max-width:500px;width:100%;padding:11px;background:#edf0f0e8;color:#252b2e;border:1px solid #f7f8f8c9;border-radius:12px;box-shadow:0 8px 30px #171b1ea8;backdrop-filter:blur(7px)}
.compact-intent{background:#dce1e2;border:1px solid #b7bec0;padding:9px 10px;margin:0;gap:10px;color:#2a3034}
.compact-intent .intent-mark{color:#424a50;font-size:21px}.compact-intent strong{color:#262b2e;font-size:11px}.compact-intent p{color:#586167;font-size:10px;line-height:1.4;margin:4px 0 0}
.battle-choice-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.zone-column h2{font:800 10px Inter,system-ui,sans-serif;margin:3px 0 8px;letter-spacing:.4px;color:#384047}
.zone-stack{display:grid;gap:6px}
.zone-choice{border:1px solid #aeb4b8;border-radius:8px;background:#f7f8f8;color:#353c40;display:flex;align-items:center;justify-content:center;gap:7px;padding:7px 5px;min-height:38px;font-size:11px;font-weight:700;transition:transform .2s ease,background .2s ease,border-color .2s ease}
.zone-choice:hover{transform:translateY(-1px);border-color:#5d656a}
.zone-choice.selected{background:#272c30;color:#fff;border-color:#202528;box-shadow:inset 0 0 0 1px #525b60,0 3px 9px #272c3042}
.zone-symbol{font-size:17px;line-height:1}
.battle-turn{width:100%;min-height:41px;letter-spacing:1px}
.battle-resources{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px}
.battle-resources>div{min-width:0}
.battle-resources span{display:flex;justify-content:space-between;gap:2px;font-size:9px;color:#42494d;margin-bottom:5px}
.battle-resources b{font-size:9px;color:#252a2d}
.battle-resources .progress{height:6px;background:#bfc5c8}
.advantage-compact .pips{gap:3px}.advantage-compact .pip{height:6px;background:#c8ced0}.advantage-compact .pip.filled{background:#444b4f}
.battle-finished{display:grid;gap:9px;text-align:center;padding:18px 5px}
.battle-skills-panel,.combat-log{background:#f7f8f8;color:#252b2e;border:1px solid #b7bdc0;border-radius:12px;padding:14px 16px;margin:0}
.skill-panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}
.skill-panel-heading h2{font-size:14px;margin:4px 0 0}
.skill-picker{gap:8px}
.skill-choice{min-width:150px;flex:1;background:#e6e9e9;border:1px solid #b8bfc2;color:#252b2e;min-height:55px;border-radius:8px;transition:transform .2s ease,box-shadow .2s ease}
.skill-choice:hover{transform:translateY(-1px);box-shadow:0 4px 13px #22262a23}
.skill-choice.selected{background:#30363b;border-color:#30363b;color:white}
.skill-choice strong{font-size:11px}.skill-choice small{color:#646b70}.skill-choice.selected small{color:#d7dcdf}
.skill-icon{color:#545b60}.skill-choice.selected .skill-icon{color:white}
.battle-stats-hint{border:0;border-top:1px solid #d4d8da;background:none;color:#676e72;margin:11px 0 0;padding:9px 0 0;font-size:10px}
.combat-log>strong{color:#2a3033;font-size:11px;letter-spacing:1px}
.combat-log p,.combat-log li{color:#444b4e;font-size:11px}
.combat-log ul{margin:8px 0 0;display:grid;gap:3px}
.combat-log li::marker{color:#6d7579}
.battle-float{position:absolute;top:23%;left:-22%;right:-22%;font-size:clamp(11px,1.4vw,17px);font-weight:900;letter-spacing:.5px;color:white;text-shadow:0 2px 4px #111,0 0 10px #111,0 0 20px #111;opacity:0;pointer-events:none}
.duelist.player .battle-float{color:#e9f2f3}.duelist.enemy .battle-float{color:#fff}
.slash-arc{position:absolute;inset:13% 0 27%;border-top:4px solid #fff;border-right:2px solid #fff;border-radius:50%;filter:drop-shadow(0 0 6px white);opacity:0;pointer-events:none}
.figure-particles{position:absolute;inset:10%;background:radial-gradient(circle at 30% 35%,#fff 0 2px,transparent 3px),radial-gradient(circle at 75% 55%,#fff 0 3px,transparent 4px),radial-gradient(circle at 44% 75%,#fff 0 2px,transparent 3px);opacity:0;pointer-events:none}
.fx-playing .duelist.player .combat-figure{animation:attacker-lunge .52s cubic-bezier(.2,.7,.2,1)}
.fx-playing .duelist.enemy .combat-figure{animation:receiver-recoil .45s ease-out .22s both}
.fx-playing .duelist.player.motion-dodge .combat-figure{animation:receiver-dodge .6s ease-out .23s both}
.fx-playing .duelist.player.motion-block .combat-figure{animation:receiver-block .55s ease-out .26s both}
.fx-playing .duelist.player.motion-hit .combat-figure{animation:receiver-recoil .45s ease-out .26s both}
.fx-playing .slash-arc{animation:slash-spark .65s ease-out .2s both}
.fx-playing .figure-particles{animation:particle-pop .55s ease-out .25s both}
.fx-playing .battle-float{animation:float-feedback 1.25s ease-out .25s both}
.fx-playing .duelist.enemy.motion-magic .figure-halo{animation:magic-burst .75s ease-out .22s}
.fx-playing .duelist.enemy.motion-crit .figure-halo{animation:magic-burst .72s ease-out .25s}
.fx-playing .battle-center{animation:panel-emphasis .42s ease-out}
.scene-card,.feature-card,.location-card,.talent-node{transition:transform .2s ease,box-shadow .2s ease}
.location-card:not(.locked):hover,.feature-card:hover{transform:translateY(-2px);box-shadow:0 12px 25px #23272b1d}
.toast{background:#272c30;border-color:#4b5459;color:#f7f8f8}
@keyframes screen-enter{from{opacity:.2;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@keyframes fog-glide{from{transform:translateX(-4%) scale(1)}to{transform:translateX(5%) scale(1.07)}}
@keyframes light-breathe{from{opacity:.35;transform:scale(.85)}to{opacity:.7;transform:scale(1.13)}}
@keyframes scene-push{from{transform:scale(1)}to{transform:scale(1.055)}}
@keyframes halo-pulse{from{opacity:.2;transform:scale(.9)}to{opacity:.45;transform:scale(1.04)}}
@keyframes attacker-lunge{0%,100%{transform:translateX(0)}40%{transform:translateX(23%) rotate(3deg)}}
@keyframes receiver-recoil{0%,100%{transform:translateX(0)}42%{transform:translateX(10%) rotate(4deg)}}
@keyframes receiver-dodge{0%,100%{transform:translateX(0);opacity:1}42%{transform:translateX(-17%);opacity:.45}}
@keyframes receiver-block{0%,100%{transform:scale(1)}43%{transform:scale(.95)}}
@keyframes slash-spark{0%{opacity:0;transform:scale(.25) rotate(-55deg)}35%{opacity:.95;transform:scale(1) rotate(22deg)}100%{opacity:0;transform:scale(1.45) rotate(75deg)}}
@keyframes particle-pop{0%{opacity:0;transform:scale(.25)}40%{opacity:1}100%{opacity:0;transform:scale(1.6)}}
@keyframes float-feedback{0%{opacity:0;transform:translateY(8px)}18%,72%{opacity:1}100%{opacity:0;transform:translateY(-37px)}}
@keyframes magic-burst{30%{opacity:1;filter:drop-shadow(0 0 15px #ffffff)}100%{opacity:.2}}
@keyframes panel-emphasis{0%{box-shadow:0 0 0 #fff0}50%{box-shadow:0 8px 34px #fdfdfdc9}100%{box-shadow:0 8px 30px #171b1ea8}}
@media(max-width:1120px){.topbar .current-place{display:none}.topbar .brand-name{font-size:16px}.top-nav .nav-link{padding:8px 10px}.battle-frame{padding:10px}.battle-stage{grid-template-columns:minmax(100px,.8fr) minmax(280px,1.3fr) minmax(100px,.8fr);gap:7px}.battle-center{padding:8px}.combat-figure{height:clamp(130px,28vh,230px)}}
@media(max-width:750px){.app-shell{display:block}.topbar{height:48px;padding:0 8px;gap:6px}.topbar .brand-horizontal{gap:4px}.topbar .brand-crest{width:23px;height:23px}.topbar .brand-name{font-size:11px;letter-spacing:.5px}.topbar .brand-tag{display:none}.top-nav{gap:2px}.top-nav .nav-link{padding:5px 7px;gap:3px;min-height:32px;font-size:9px}.top-nav .nav-symbol{font-size:13px}.top-actions{display:none}.content{padding:10px 8px 18px}.section-heading h1{font-size:22px}.section-heading p{font-size:11px}.scene-card{height:230px}.scene-content{left:18px;bottom:19px}.scene-content h2{font-size:25px}.scene-content p{font-size:11px}.feature-card{padding:13px}.location-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.location-card{display:block}.location-info{padding:11px}.location-art{height:105px;min-height:0}.location-info h2{font-size:13px}.location-info p{font-size:10px;min-height:50px}.location-top{font-size:8px}.hero-grid{grid-template-columns:1fr 1.5fr}.hero-portrait{height:140px}.hero-profile,.hero-stats{padding:12px}.stats-grid{gap:6px}.stat-tile{padding:8px;gap:7px}.stat-tile strong{font-size:15px}.talent-branches{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.talent-branch{padding:10px}.talent-branch h2{font-size:13px}.talent-node{padding:8px 0;gap:5px}.talent-node p{font-size:10px}.battle-frame{padding:8px}.battle-title h1{font-size:20px}.battle-title .eyebrow{font-size:8px}.round-mark{font-size:9px;padding:6px}.battle-stage{grid-template-columns:minmax(85px,.82fr) minmax(240px,1.4fr) minmax(85px,.82fr);gap:5px;min-height:275px}.battle-center{padding:7px;gap:6px}.compact-intent{padding:6px}.compact-intent p{display:none}.compact-intent strong{font-size:10px}.zone-column h2{font-size:9px;margin:0 0 5px}.zone-choice{min-height:32px;font-size:10px;padding:4px 2px}.zone-symbol{font-size:14px}.battle-choice-columns{gap:5px}.battle-turn{min-height:35px;padding:7px;font-size:10px}.fighter-summary{padding:6px 5px}.fighter-summary strong{font-size:10px}.fighter-summary small,.fighter-level{font-size:8px}.combat-figure{height:clamp(105px,31vh,160px)}.battle-resources span,.battle-resources b{font-size:8px}.battle-resources{gap:5px}.battle-skills-panel,.combat-log{padding:9px}.skill-panel-heading h2{font-size:12px}.skill-choice{min-width:85px;padding:6px;min-height:45px;gap:4px}.skill-choice strong,.skill-choice small{font-size:9px}.skill-icon{font-size:15px}.footer{display:none}}
@media(max-width:600px) and (orientation:landscape){.battle-stage{grid-template-columns:minmax(68px,.8fr) minmax(210px,1.45fr) minmax(68px,.8fr)}.top-nav .nav-link{font-size:0;min-width:32px;justify-content:center}.top-nav .nav-symbol{font-size:18px}.brand-name{font-size:10px}.fighter-summary strong{font-size:9px}.battle-frame{padding:5px}.zone-choice{min-height:30px}.battle-center{padding:5px}.combat-figure{height:120px}}
@media(max-width:950px) and (orientation:portrait){.orientation-gate{position:fixed;inset:0;z-index:999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#e8eaea;color:#282e32;text-align:center;padding:26px}.orientation-gate strong{font:600 21px Cinzel,Georgia,serif}.orientation-gate p{font-size:14px;max-width:360px;line-height:1.6;color:#596166}.rotate-device{border:3px solid #333b40;border-radius:9px;padding:12px 30px;font-size:44px;transform:rotate(-90deg);animation:rotate-prompt 1.7s ease-in-out infinite alternate}.app-shell{max-height:100dvh;overflow:hidden}@keyframes rotate-prompt{from{transform:rotate(-90deg)}to{transform:rotate(0deg)}}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.battle-float{opacity:1;position:static;display:block;font-size:11px;text-shadow:none;color:#fff}.orientation-gate .rotate-device{transform:rotate(-90deg)}}
