body.hub-mode{background:#030a0d;overflow:hidden}body.hub-mode #app{width:100%;max-width:none;height:var(--battle-vh,100dvh);min-height:0;padding:env(safe-area-inset-top,0px) 0 env(safe-area-inset-bottom,0px);margin:0;overflow:hidden;display:block}body.hub-mode #app::before,body.hub-mode #app::after{display:none}
.hub-v2{--ink:var(--ui-ink);--leaf:#9fdc8a;--fire:#ffa045;--heal:#7fe0a6;--cinzel:"Cinzel",serif;color:var(--bone);font-family:var(--serif);padding:0;min-height:0;box-sizing:border-box}
.hub-v2 *,.hub-v2 *::before,.hub-v2 *::after{box-sizing:border-box}
.hub-v2 button{font-family:inherit;color:inherit;border-radius:0;letter-spacing:normal;min-width:0;margin:0;line-height:normal;text-transform:none}
.hub-v2{position:relative;width:min(100%,440px);height:100%;margin:0 auto;overflow:hidden;overflow:clip;isolation:isolate;display:flex;flex-direction:column}
.hub-v2 .hb-bg{position:absolute;inset:0;z-index:-4;background:url('/assets/waldmeer.webp') 50% 30%/cover;animation:hub-drift 40s ease-in-out infinite alternate}
@keyframes hub-drift{to{background-position:56% 36%}}
.hub-v2 .hb-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,10,20,.85) 0%,rgba(4,10,20,.25) 26%,rgba(4,10,20,.35) 55%,rgba(4,8,14,.95) 86%)}
.hub-v2 .hb-motes{position:absolute;inset:0;z-index:-2;pointer-events:none;overflow:hidden}
.hub-v2 .hb-motes i{position:absolute;width:4px;height:4px;border-radius:50%;background:#ffe9a8;box-shadow:0 0 8px 2px rgba(255,220,140,.7);animation:hub-mote var(--d) ease-in-out var(--dl) infinite}
@keyframes hub-mote{0%{transform:translate(0,0);opacity:0}20%{opacity:1}100%{transform:translate(var(--dx),-160px);opacity:0}}
.hub-v2 .hb-motes b{position:absolute;top:-16px;width:10px;height:6px;border-radius:100% 0 100% 0;background:linear-gradient(135deg,#bfe89a,#4f8a3a);opacity:.75;animation:hub-leaf var(--d) linear var(--dl) infinite}
@keyframes hub-leaf{0%{transform:translate(0,0) rotate(0)}100%{transform:translate(var(--dx),110vh) rotate(540deg)}}
.hub-v2 .hb-fro{position:absolute;right:-40px;bottom:120px;height:62%;max-height:560px;z-index:-1;pointer-events:none;
  -webkit-mask:linear-gradient(#000 70%,transparent 96%);mask:linear-gradient(#000 70%,transparent 96%);filter:drop-shadow(0 0 20px rgba(120,180,255,.25));animation:hub-breathe 5s ease-in-out infinite}
@keyframes hub-breathe{50%{transform:translateY(-4px)}}
.hub-v2 .hb-charname{position:absolute;right:14px;bottom:calc(env(safe-area-inset-bottom,0px) + 186px);z-index:2;text-align:right;pointer-events:none}
.hub-v2 .hb-charname small{display:block;font-family:var(--num);font-style:italic;font-weight:600;font-size:10px;letter-spacing:.2em;color:var(--brass)}
.hub-v2 .hb-charname b{display:block;font-family:var(--cinzel);font-weight:700;font-size:22px;letter-spacing:.08em;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.8)}
.hub-v2 .hb-charname span{font-size:11px;color:#d6dde0;text-shadow:0 1px 4px #000}
.hub-v2 .hb-head{position:relative;flex:none;display:flex;align-items:flex-start;gap:10px;padding:10px 12px 0}
.hub-v2 .hb-crest{flex:none;width:46px;height:52px;color:var(--brass);filter:drop-shadow(0 0 10px rgba(201,165,91,.35))}
.hub-v2 .hb-title{flex:1;min-width:0}
.hub-v2 .hb-title small{display:block;font-family:var(--cinzel);font-weight:700;font-size:12px;letter-spacing:.34em;color:var(--brass)}
.hub-v2 .hb-title b{display:block;font-size:22px;font-weight:800;letter-spacing:.12em;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.8);white-space:nowrap}
.hub-v2 .hb-title svg{display:block;width:120px;height:8px;margin-top:3px;color:var(--brass)}
.hub-v2 .hb-tools{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.hub-v2 .hb-icons{display:flex;gap:6px}
.hub-v2 .hb-ib{position:relative;width:34px;height:34px;border:0;padding:0;cursor:pointer;display:grid;place-items:center;background:rgba(6,14,24,.72);
  box-shadow:inset 0 0 0 1px var(--brass-dim),inset 0 0 0 3px rgba(6,14,24,.72),inset 0 0 0 4px rgba(201,165,91,.35);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}
.hub-v2 .hb-ib svg{width:15px;height:15px;color:#e8d4a2}
.hub-v2 .hb-ib:active{filter:brightness(1.4)}
.hub-v2 .hb-ib em{position:absolute;top:36px;left:50%;transform:translateX(-50%);font-style:normal;font-size:8.5px;color:#b9c3c6;white-space:nowrap}
.hub-v2 .hb-energy{display:flex;align-items:center;gap:6px;margin-top:12px;padding:3px 12px 3px 8px;background:linear-gradient(90deg,rgba(80,40,140,.75),rgba(30,16,60,.75));
  box-shadow:inset 0 0 0 1px rgba(210,170,255,.6);clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%)}
.hub-v2 .hb-energy svg{width:16px;height:20px}
.hub-v2 .hb-energy b{font-family:var(--num);font-style:italic;font-weight:800;font-size:20px;color:#fff}
.hub-v2 .hb-menu{position:relative;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:10px;padding:10px 0 10px 12px;width:74%}
.hub-v2 .hb-fac{position:relative;display:flex;align-items:center;gap:12px;height:clamp(58px,8.6vh,74px);border:0;padding:0 16px 0 10px;cursor:pointer;text-align:left;
  background:linear-gradient(100deg,rgba(18,40,44,.93),rgba(10,24,30,.9) 60%,rgba(10,24,30,.72));
  box-shadow:inset 0 0 0 1px var(--brass-dim),inset 0 0 0 4px rgba(10,24,30,.9),inset 0 0 0 5px rgba(201,165,91,.3),0 6px 14px rgba(0,0,0,.45);
  clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%);
  opacity:0;transform:translateX(-40px);transition:transform .45s cubic-bezier(.2,1.2,.3,1),opacity .3s,filter .2s}
.hub-v2 .hb-fac.hb-in{opacity:1;transform:none}
.hub-v2 .hb-fac:active{filter:brightness(1.3)}
.hub-v2 .hb-fac .hb-med{position:relative;flex:none;width:44px;height:44px;display:grid;place-items:center;color:#f3dfa8}
.hub-v2 .hb-fac .hb-med::before{content:"";position:absolute;inset:4px;transform:rotate(45deg);background:radial-gradient(circle at 35% 30%,#2e5a52,#0e2226);box-shadow:0 0 0 1px var(--brass),0 0 0 3px #0a1a1e,0 0 0 4px rgba(201,165,91,.45)}
.hub-v2 .hb-fac .hb-med svg{position:relative;width:20px;height:20px}
.hub-v2 .hb-fac .hb-tx{flex:1;min-width:0}
.hub-v2 .hb-fac .hb-tx b{display:block;font-size:17px;font-weight:800;letter-spacing:.08em;color:#fff}
.hub-v2 .hb-fac .hb-tx small{display:block;font-family:var(--cinzel);font-weight:600;font-size:10px;letter-spacing:.18em;color:var(--hub-leaf)}
.hub-v2 .hb-fac .hb-tx span{display:block;font-size:10.5px;color:#9fb3b8;margin-top:1px}
.hub-v2 .hb-fac .hb-bd{flex:none;font-family:var(--num);font-style:italic;font-weight:800;font-size:22px;color:var(--brass)}
.hub-v2 .hb-fac::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(var(--hub-leaf),var(--brass))}
.hub-v2 .hb-bottom{position:relative;flex:none;padding:0 12px 14px;display:flex;flex-direction:column;gap:8px;z-index:3}
.hub-v2 .hb-resume{position:relative;height:74px;border:0;padding:0;background:none;cursor:pointer;color:var(--ink);opacity:0;transform:translateY(20px);transition:all .45s .1s cubic-bezier(.2,1.2,.3,1)}
.hub-v2 .hb-resume.hb-in,.hub-v2 .hb-new.hb-in{opacity:1;transform:none}
.hub-v2 .hb-resume .hb-sh{position:absolute;inset:7px -2px -7px 9px;background:var(--coral);clip-path:polygon(20px 0,100% 0,calc(100% - 20px) 100%,0 100%)}
.hub-v2 .hb-resume .hb-face{position:absolute;inset:0 7px 7px 0;display:flex;align-items:center;gap:12px;padding:0 26px 0 24px;background:var(--bone);overflow:hidden;clip-path:polygon(20px 0,100% 0,calc(100% - 20px) 100%,0 100%);transition:transform .12s}
.hub-v2 .hb-resume .hb-fl{flex:none;text-align:center;line-height:1;padding-right:12px;border-right:1px solid rgba(43,36,24,.3)}
.hub-v2 .hb-resume .hb-fl b{display:block;font-family:var(--num);font-style:italic;font-weight:800;font-size:34px}
.hub-v2 .hb-resume .hb-fl small{font-family:var(--num);font-style:italic;font-size:10px;letter-spacing:.14em;color:#7a6a45}
.hub-v2 .hb-resume .hb-t{flex:1;min-width:0;text-align:left}
.hub-v2 .hb-resume .hb-t b{display:block;font-size:18px;font-weight:800;letter-spacing:.08em}
.hub-v2 .hb-resume .hb-t small{display:block;font-size:11px;color:#6d5f40}
.hub-v2 .hb-resume .hb-hub-chev{display:flex}
.hub-v2 .hb-resume .hb-hub-chev i{width:8px;height:8px;border-top:3px solid var(--coral);border-right:3px solid var(--coral);transform:rotate(45deg);margin-left:-1px;animation:hub-chev 1.1s infinite}
.hub-v2 .hb-resume .hb-hub-chev i:nth-child(2){animation-delay:.15s}
.hub-v2 .hb-resume .hb-hub-chev i:nth-child(3){animation-delay:.3s}
@keyframes hub-chev{0%,100%{opacity:.3}50%{opacity:1}}
.hub-v2 .hb-resume .hb-face::after{content:"";position:absolute;top:0;bottom:0;width:30%;left:-40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);transform:skewX(-20deg);animation:hub-sheen 2.6s ease-in-out infinite}
@keyframes hub-sheen{0%{left:-40%}60%,100%{left:130%}}
.hub-v2 .hb-resume:active .hb-face{transform:translate(5px,5px)}
.hub-v2 .hb-new{display:flex;align-items:center;justify-content:center;gap:10px;height:40px;border:0;cursor:pointer;background:rgba(6,14,24,.7);opacity:0;transform:translateY(20px);transition:all .45s .2s cubic-bezier(.2,1.2,.3,1);
  box-shadow:inset 0 0 0 1px var(--brass-dim),inset 0 0 0 3px rgba(6,14,24,.7),inset 0 0 0 4px rgba(201,165,91,.3);clip-path:polygon(12px 0,100% 0,calc(100% - 12px) 100%,0 100%)}
.hub-v2 .hb-new b{font-family:var(--cinzel);font-weight:700;font-size:13px;letter-spacing:.14em;color:#f3dfa8}
.hub-v2 .hb-new span{font-size:11px;color:#b9c3c6}
.hub-v2 .hb-hub-toast{position:absolute;left:50%;top:44%;z-index:50;transform:translate(-50%,-50%);padding:6px 18px;font-weight:800;font-size:14px;color:var(--ink);background:var(--bone);box-shadow:4px 4px 0 var(--coral);white-space:nowrap;animation:hub-toast 1.2s ease-out forwards;pointer-events:none}
@keyframes hub-toast{0%{opacity:0}15%,75%{opacity:1}100%{opacity:0}}
.hub-v2 button:focus-visible{outline:2px solid #fff;outline-offset:2px}
@media (max-height:720px){.hub-v2 .hb-menu{gap:7px}
.hub-v2 .hb-fac .hb-tx span{display:none}
.hub-v2 .hb-resume{height:64px}
.hub-v2 .hb-resume .hb-fl b{font-size:28px}
.hub-v2 .hb-charname{bottom:calc(env(safe-area-inset-bottom,0px) + 160px)}
.hub-v2 .hb-fro{bottom:100px}
}
@media (prefers-reduced-motion:reduce){.hub-v2 *{animation:none!important;transition:none!important}
}
.hub-v2 .hb-bg{filter:saturate(.85) brightness(1)}
.hub-v2 .hb-bg::after{background:radial-gradient(ellipse 90% 70% at 50% 45%,rgba(4,10,16,.08),rgba(3,7,12,.62) 100%),linear-gradient(180deg,rgba(3,8,14,.6),rgba(3,8,14,.08) 30%,rgba(3,8,14,.12) 70%,rgba(3,6,10,.72))}
.hub-v2 .hb-tree{position:absolute;left:50%;bottom:0;z-index:-1;width:min(118%,520px);height:auto;max-height:96%;transform:translateX(-50%);opacity:.42;pointer-events:none}
.hub-v2 .hb-tree .hb-ln{fill:none;stroke:url(#hub-brassg);stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1400;stroke-dashoffset:1400;animation:hub-grow 2.4s cubic-bezier(.3,.6,.2,1) forwards}
.hub-v2 .hb-tree .hb-l2{animation-delay:.35s}
.hub-v2 .hb-tree .hb-l3{animation-delay:.7s}
.hub-v2 .hb-tree .hb-l4{animation-delay:1s}
@keyframes hub-grow{to{stroke-dashoffset:0}}
.hub-v2 .hb-head{justify-content:space-between;align-items:center;padding:10px 12px 0}
.hub-v2 .hb-energy{margin-top:0}
.hub-v2 .hb-ib em{display:none}
.hub-v2 .hb-title{position:relative;flex:none;text-align:center;padding:6px 0 0}
.hub-v2 .hb-title .hb-crest{display:block;width:40px;height:46px;margin:0 auto 2px;color:var(--brass)}
.hub-v2 .hb-title small{display:block;font-family:var(--cinzel);font-weight:700;font-size:11px;letter-spacing:.5em;padding-left:.5em;color:var(--brass)}
.hub-v2 .hb-title b{display:block;font-size:24px;font-weight:800;letter-spacing:.2em;padding-left:.2em;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.9)}
.hub-v2 .hb-title .hb-rule{display:block;width:150px;height:9px;margin:4px auto 0;color:var(--brass)}
.hub-v2 .hb-menu{width:auto;align-items:center;padding:14px 0 12px;gap:clamp(14px,2.6vh,22px)}
.hub-v2 .hb-fac{width:84%;max-width:340px;margin-top:0}
.hub-v2 .hb-fac:nth-child(odd){translate:-10px 0}
.hub-v2 .hb-fac:nth-child(even){translate:10px 0}
.hub-v2 .hb-hang{position:relative;display:flex;justify-content:center;width:100%}
.hub-v2 .hb-fac{overflow:visible}
.hub-v2 .hb-cord{position:absolute;top:-16px;width:1px;height:16px;background:linear-gradient(var(--brass),var(--brass-dim));pointer-events:none}
.hub-v2 .hb-cord::before{content:"";position:absolute;top:-4px;left:-3px;width:7px;height:7px;border-radius:50%;border:1px solid var(--brass)}
.hub-v2 .hb-cord.hb-l{left:22%}
.hub-v2 .hb-cord.hb-r{right:22%}
.hub-v2 .hb-fac .hb-tx small{color:#b8d8a0}
.hub-v2 .hb-fac::after{background:linear-gradient(#b8d8a0,var(--brass))}
@media (max-height:720px){.hub-v2 .hb-title .hb-crest{display:none}
.hub-v2 .hb-title b{font-size:20px}
.hub-v2 .hb-menu{gap:12px}
}

.hub-v2 .hb-bg{animation:none}.hub-v2 .hb-energy img{width:16px;height:20px}.hub-v2 .hb-hang:nth-child(odd){translate:-10px 0}.hub-v2 .hb-hang:nth-child(even){translate:10px 0}.hub-v2 .hb-fac:nth-child(n){translate:none}
@media(prefers-reduced-motion:reduce){.hub-v2 .hb-ln{stroke-dashoffset:0}.hub-v2 .hb-camp,.hub-v2 .hb-ch,.hub-v2 .hb-fac,.hub-v2 .hb-resume,.hub-v2 .hb-new{opacity:1;transform:none}}

.hub-v2,.hub-v2 *{font-family:var(--serif)!important}

.hub-v2 .hb-charname small{font-family:var(--num),var(--serif)!important}

.hub-v2 .hb-charname b{font-family:var(--cinzel)!important}

.hub-v2 .hb-title small{font-family:var(--cinzel)!important}

.hub-v2 .hb-energy b{font-family:var(--num),var(--serif)!important}

.hub-v2 .hb-fac .hb-tx small{font-family:var(--cinzel)!important}

.hub-v2 .hb-fac .hb-bd{font-family:var(--num),var(--serif)!important}

.hub-v2 .hb-resume .hb-fl b{font-family:var(--num),var(--serif)!important}

.hub-v2 .hb-resume .hb-fl small{font-family:var(--num),var(--serif)!important}

.hub-v2 .hb-new b{font-family:var(--cinzel)!important}

.hub-v2 .hb-title small{font-family:var(--cinzel)!important}
.hub-v2 button:disabled{opacity:1}

.hub-v2{line-height:normal}

/* A persistent light identifies the facility that the next tap will open. */
.hub-v2 .hb-hang.hb-selected{filter:drop-shadow(0 0 9px rgba(235,208,125,.65))}
.hub-v2 .hb-fac.hb-selected{background:linear-gradient(100deg,rgba(53,91,73,.98),rgba(29,57,51,.97) 65%,rgba(49,67,47,.95));box-shadow:inset 0 0 0 2px #f3dc9d,inset 0 0 0 4px #18342c,inset 0 0 0 5px rgba(255,232,164,.8),inset 0 0 28px rgba(232,215,139,.16);filter:brightness(1.15)}
.hub-v2 .hb-fac.hb-selected .hb-med::before{background:radial-gradient(circle at 35% 30%,#699965,#244c3a);box-shadow:0 0 0 1px #fff0b9,0 0 0 3px #18342c,0 0 15px rgba(249,222,137,.75)}
.hub-v2 .hb-fac.hb-selected .hb-tx b{color:#fff6d7;text-shadow:0 0 9px rgba(255,229,153,.55)}
.hub-v2 .hb-fac.hb-selected::after{width:4px;background:#fff0b9}
