/* ===========================================================================
   AZEROTH MINI — UI
   =========================================================================== */
:root{
  --gold:#c8a44d; --gold-dim:#8a6f2e; --ink:#e8dcc0;
  --panel:rgba(14,12,10,.92); --panel-lite:rgba(30,26,20,.9);
  --hp:#4caf50; --hp-e:#8b1a1a; --mp:#2f6fd0; --rage:#c0392b;
  --shadow:0 6px 24px rgba(0,0,0,.65);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden;background:#05070b;
  font-family:"Trebuchet MS","Segoe UI",system-ui,sans-serif;color:var(--ink);
  -webkit-font-smoothing:antialiased;user-select:none}
.hidden{display:none !important}
canvas#c{position:fixed;inset:0;width:100%;height:100%;display:block}
button{font-family:inherit;cursor:pointer}

/* Cinematic title screen: CSS geometry keeps the launch frame instant. */
#main-menu{position:fixed;inset:0;z-index:70;overflow:hidden;isolation:isolate;background:linear-gradient(180deg,#071a34 0%,#164361 45%,#7b8f6a 100%);color:#f5e7bb}
#main-menu::before{content:"";position:absolute;inset:0;z-index:-1;opacity:.55;background:radial-gradient(ellipse at 50% 41%,rgba(255,229,141,.22),transparent 18%),linear-gradient(105deg,rgba(6,17,33,.55),transparent 38%,rgba(6,17,33,.46))}
.menu-sky{position:absolute;inset:0 0 35%;z-index:-1;background:radial-gradient(circle at 50% 20%,#dce9d2 0 2%,rgba(214,233,212,.5) 3%,transparent 11%)}.menu-sky i{position:absolute;width:2px;height:2px;border-radius:50%;background:#ecdfab;box-shadow:0 0 8px #fff;animation:star-pulse 4s ease-in-out infinite}.menu-sky i:nth-child(1){left:17%;top:26%}.menu-sky i:nth-child(2){left:29%;top:14%;animation-delay:-2s}.menu-sky i:nth-child(3){left:74%;top:21%;animation-delay:-1s}.menu-sky i:nth-child(4){left:82%;top:35%;animation-delay:-3s}.menu-sky i:nth-child(5){left:63%;top:10%;animation-delay:-.5s}
.menu-mountains{position:absolute;z-index:-1;bottom:0;left:-6%;width:112%;filter:drop-shadow(0 -10px 10px rgba(4,15,22,.14))}.menu-mountains-back{height:53%;background:#34556b;clip-path:polygon(0 76%,9% 49%,16% 67%,29% 18%,39% 68%,50% 38%,60% 71%,73% 21%,82% 64%,93% 42%,100% 70%,100% 100%,0 100%)}.menu-mountains-front{height:38%;background:linear-gradient(160deg,#466f59,#244d43 78%);clip-path:polygon(0 58%,13% 37%,23% 66%,37% 23%,49% 59%,60% 44%,71% 74%,84% 27%,100% 57%,100% 100%,0 100%)}
.realm-gate{position:absolute;z-index:-1;left:50%;top:50%;width:min(46vw,540px);height:min(59vw,650px);transform:translate(-50%,-38%);border:clamp(16px,2.5vw,34px) solid #273e45;border-bottom:0;border-radius:50% 50% 0 0/42% 42% 0 0;box-shadow:inset 0 0 0 3px #6b805f,0 20px 35px rgba(0,0,0,.28)}.realm-gate::before,.realm-gate::after{content:"";position:absolute;top:18%;width:12%;height:12%;background:#36544f;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.realm-gate::before{left:-7%}.realm-gate::after{right:-7%}.gate-core{position:absolute;inset:13% 10% 0;border-radius:50% 50% 0 0/40% 40% 0 0;background:radial-gradient(ellipse at 50% 35%,rgba(214,237,180,.8),rgba(74,144,126,.62) 24%,rgba(23,69,76,.68) 55%,rgba(6,25,39,.12) 72%);box-shadow:inset 0 0 50px rgba(8,43,49,.8),0 0 55px rgba(155,213,155,.27);animation:gate-breathe 6s ease-in-out infinite}
.menu-content{position:absolute;inset:0;display:flex;align-items:center;flex-direction:column;justify-content:center;text-align:center;padding:90px 20px 30px;text-shadow:0 2px 8px #071421}.realm-label{margin:0 0 16px;color:#e6c873;font:600 11px/1 ui-monospace,"Cascadia Mono",monospace;letter-spacing:3px}.menu-content h1{margin:0;font-family:Georgia,"Times New Roman",serif;font-size:clamp(57px,10vw,132px);font-weight:normal;line-height:.77;letter-spacing:.08em;color:#f4d47b;filter:drop-shadow(0 4px 0 #493415)}.menu-content h1 span{display:block;color:#d7ecda;font-size:.36em;letter-spacing:.54em;margin:16px 0 0 .54em}.menu-subtitle{margin:29px 0 25px;color:#d4e1d2;font-size:clamp(14px,1.6vw,19px);letter-spacing:.04em}.title-action{min-width:250px;padding:15px 20px;border:1px solid #f1d37a;color:#1c2930;background:linear-gradient(180deg,#f4dc86,#b58d42);box-shadow:inset 0 1px rgba(255,255,255,.55),0 8px 18px rgba(0,0,0,.27);font-size:15px;font-weight:bold;letter-spacing:1.4px;text-transform:uppercase;transition:transform .16s,filter .16s}.title-action b{float:right;font-size:25px;line-height:12px}.title-action:hover,.title-action:focus-visible{filter:brightness(1.1);transform:translateY(-2px)}.menu-status{margin:20px 0 0;color:#cfdfd1;font-size:11px;letter-spacing:.04em}.menu-status span{display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#70d797;box-shadow:0 0 10px #70d797}.menu-footer{position:absolute;bottom:20px;left:32px;right:32px;display:flex;justify-content:space-between;color:rgba(233,237,210,.63);font:10px ui-monospace,"Cascadia Mono",monospace;letter-spacing:1.3px}.menu-leaving{animation:menu-leave .38s ease forwards}@keyframes star-pulse{50%{opacity:.18;transform:scale(.6)}}@keyframes gate-breathe{50%{filter:brightness(1.15);box-shadow:inset 0 0 62px rgba(8,43,49,.8),0 0 75px rgba(155,213,155,.42)}}@keyframes menu-leave{to{opacity:0;transform:scale(1.025);pointer-events:none}}
@media (prefers-reduced-motion:reduce){.menu-sky i,.gate-core,.menu-leaving{animation:none}}

/* ───────────────────────────── login ──────────────────────────────── */
#login{position:fixed;inset:0;display:grid;place-items:center;z-index:60;
  background:radial-gradient(circle at 50% 30%,#1b2740,#070a12 65%);
  background-size:cover}
#login::after{content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.02) 0 2px,transparent 2px 4px);
  pointer-events:none}
.login-inner{position:relative;z-index:2;width:min(720px,92vw);text-align:center;
  padding:34px 30px;border:1px solid var(--gold-dim);border-radius:14px;
  background:linear-gradient(180deg,rgba(20,18,14,.94),rgba(10,9,7,.96));box-shadow:var(--shadow);
  max-height:96vh;overflow-y:auto}
#login h1{margin:0;font-size:52px;letter-spacing:8px;color:var(--gold);
  text-shadow:0 0 22px rgba(200,164,77,.45)}
#login h1 span{color:#8fbfe0}
.back-to-title{position:absolute;top:16px;left:16px;padding:6px 8px;border:0;background:transparent;color:#9d9b88;font-size:11px;letter-spacing:.7px}.back-to-title:hover,.back-to-title:focus-visible{color:var(--gold)}
.tag{margin:6px 0 22px;color:#9a917f;font-size:14px}
.field{display:block;margin:0 auto 18px;max-width:340px;text-align:left}
.field span{display:block;font-size:12px;letter-spacing:1px;color:#9a917f;margin-bottom:5px;text-transform:uppercase}
.field input,.field select{width:100%;padding:11px 12px;background:#0d0c0a;color:var(--ink);
  border:1px solid var(--gold-dim);border-radius:6px;font-size:16px;outline:none}
.field input:focus,.field select:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(200,164,77,.18)}
.account-ledger{max-width:580px;margin:0 auto 18px;padding:13px 16px 14px;border:1px solid #55482d;
  border-radius:10px;background:linear-gradient(135deg,rgba(47,38,23,.7),rgba(12,11,9,.85));position:relative}
.account-ledger::before{content:"ACCOUNT LEDGER";position:absolute;top:-7px;left:16px;padding:0 7px;
  background:#15120e;color:#806b39;font:9px/14px ui-monospace,"Cascadia Mono",monospace;letter-spacing:2px}
.auth-tabs{display:flex;gap:5px;justify-content:center;margin:1px 0 13px}
.auth-tabs button{min-width:145px;padding:8px 14px;color:#9f9685;background:#12100d;border:1px solid #443b2a;
  border-radius:6px;font-size:12px;font-weight:bold;letter-spacing:.6px}
.auth-tabs button.active{color:#1f190a;border-color:#d2ad52;background:linear-gradient(180deg,#e0c16b,#a9873a)}
.auth-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.auth-fields .field{margin:0;max-width:none}
#account-note{margin-top:11px;color:#8f8778;font-size:11px;text-align:left}
.ledger-seal{display:inline-grid;place-items:center;width:18px;height:18px;margin-right:5px;border:1px solid #826c36;
  border-radius:50%;color:#d2ad52;background:#15120e}
.creation-title{margin:2px 0 10px;color:#bda96f;font-size:11px;letter-spacing:2px;text-transform:uppercase}
#auth-error{min-height:20px;margin:2px 0 5px;color:#ff8c7d;font-size:12px}
#forgot-password.auth-link{display:block;margin:0 auto 8px;padding:4px 8px;color:#9fcbe6;background:transparent;border:0;font-size:11px;text-decoration:underline}
.recovery-form{max-width:390px;margin:8px auto 12px;padding:12px;border:1px solid #55482d;border-radius:7px;background:#0d0c0a;text-align:left}
.recovery-form .field{margin-bottom:9px}.recovery-form>button{display:block;margin:0 auto;padding:8px 12px;color:#211a0c;background:linear-gradient(#e0c16b,#a9873a);border:1px solid #d2ad52;border-radius:5px;font-weight:bold}
.recovery-form>p{min-height:16px;margin:8px 0 0;color:#a9c8d8;font-size:11px;text-align:center}
.legal-links{margin-top:12px;color:#77705f;font-size:10px}.legal-links a{color:#9fcbe6;text-decoration:none}.legal-links a:hover{text-decoration:underline}
#enter-btn:disabled{cursor:wait;filter:grayscale(.5);opacity:.72}
#class-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px}
.race-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:-5px 0 14px}.race-card{min-height:66px;padding:7px;border:1px solid #3a4656;border-radius:5px;background:#111b27;color:#cdd8e5;text-align:left}.race-card b,.race-card small{display:block}.race-card b{font-size:11px;color:#d9bf77}.race-card small{margin-top:4px;color:#91a0b3;font-size:9px;line-height:1.25}.race-card:hover,.race-card.sel{border-color:#e2c46b;background:#1c2a39}.race-card.sel{box-shadow:inset 2px 0 #e2c46b}
.class-card{padding:14px 8px 12px;border:1px solid #3a3529;border-radius:10px;
  background:rgba(255,255,255,.03);cursor:pointer;transition:.15s;text-align:center}
.class-card:hover{background:rgba(255,255,255,.07);transform:translateY(-2px)}
.class-card.sel{border-color:var(--gold);background:rgba(200,164,77,.12);
  box-shadow:0 0 18px rgba(200,164,77,.25)}
.class-card .ci{font-size:26px;line-height:1}
.class-card .cn{font-weight:bold;margin-top:6px}
.class-card .cd{font-size:11px;color:#8b8577;margin-top:5px;line-height:1.35;min-height:46px}
#enter-btn{padding:12px 40px;font-size:17px;letter-spacing:2px;color:#241d0c;
  background:linear-gradient(180deg,#e2c46b,#a9873a);border:none;border-radius:8px;
  font-weight:bold;text-transform:uppercase}
#enter-btn:hover{filter:brightness(1.12)}
.hint{margin-top:16px;font-size:12px;color:#7d7666}

/* ──────────────────────────── loading ─────────────────────────────── */
#loading{position:fixed;inset:0;z-index:55;display:grid;place-items:center;
  background:radial-gradient(circle at 50% 40%,#141c2b,#05070b 70%)}
.load-box{width:min(520px,90vw);text-align:center}
.load-title{color:var(--gold);letter-spacing:3px;margin-bottom:14px}
.load-bar{height:12px;border:1px solid var(--gold-dim);border-radius:8px;overflow:hidden;background:#0a0908}
#load-fill{height:100%;width:0;background:linear-gradient(90deg,#8a6f2e,#e6cd82);transition:width .25s}
#load-text{margin-top:9px;font-size:12px;color:#8b8577}
.tip{margin-top:26px;font-size:13px;color:#6f8ba6;font-style:italic;min-height:34px}

/* ───────────────────────── unit frames ────────────────────────────── */
.unitframe{position:fixed;display:flex;gap:8px;padding:7px 10px 7px 7px;
  background:var(--panel);border:1px solid var(--gold-dim);border-radius:10px;
  box-shadow:var(--shadow);z-index:12}
#player-frame{top:12px;left:12px;width:262px}
#target-frame{top:12px;left:290px;width:240px}
.portrait{width:46px;height:46px;border-radius:50%;border:2px solid var(--gold-dim);
  background:#1a1712 center/cover;display:grid;place-items:center;font-size:24px;flex:none}
.bars{flex:1;min-width:0}
.uf-name{font-size:13px;font-weight:bold;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uf-name .lvl{color:var(--gold);font-weight:normal;font-size:11px}
.bar{position:relative;height:13px;margin-top:3px;background:#1b1815;border:1px solid #000;
  border-radius:4px;overflow:hidden}
.bar .fill{height:100%;width:100%;transition:width .16s linear}
.bar.hp .fill{background:linear-gradient(180deg,#63d16a,#2e7d32)}
.bar.hp.enemy .fill{background:linear-gradient(180deg,#d05353,#7b1414)}
.bar.mp .fill{background:linear-gradient(180deg,#5a9ef0,#1f4f9e)}
.bar.mp.rage .fill{background:linear-gradient(180deg,#e06a5a,#8b2118)}
.bartext{position:absolute;inset:0;text-align:center;font-size:10px;line-height:13px;
  text-shadow:0 1px 2px #000;color:#fff}
.auras{position:absolute;left:7px;top:100%;margin-top:5px;display:flex;gap:3px}
.aura{width:24px;height:24px;border:1px solid var(--gold-dim);border-radius:5px;
  background:#141210;display:grid;place-items:center;font-size:13px;position:relative}
.aura span{position:absolute;bottom:-2px;right:1px;font-size:9px;color:#ffd76a;text-shadow:0 1px 2px #000}
#party-frames{position:fixed;left:12px;top:120px;z-index:12;display:flex;flex-direction:column;gap:6px}
.party-frame{width:190px;padding:5px 8px;background:var(--panel);border:1px solid #4a412c;
  border-radius:8px;cursor:pointer}
.party-frame .pn{font-size:12px;font-weight:bold}
.party-frame .bar{height:9px}

/* ──────────────────────────── minimap ─────────────────────────────── */
#minimap-wrap{position:fixed;top:12px;right:12px;z-index:12;width:180px;text-align:center}
#minimap{width:180px;height:180px;border-radius:50%;border:3px solid var(--gold-dim);
  background:#0a1005;box-shadow:var(--shadow)}
#zone-name{margin-top:6px;color:var(--gold);font-size:14px;font-weight:bold;text-shadow:0 2px 5px #000}
#coords,#clock{font-size:11px;color:#9a917f}

/* ─────────────────────── quest tracker ────────────────────────────── */
#tracker{position:fixed;right:14px;top:250px;width:230px;z-index:11;font-size:12px}
.tracker-title{color:var(--gold);font-weight:bold;letter-spacing:1px;margin-bottom:4px;
  text-shadow:0 2px 4px #000}
.tq{margin-bottom:8px;text-shadow:0 2px 4px #000}
.tq b{color:#ffd76a;font-weight:normal}
.tq .obj{color:#cfc7b3;padding-left:8px}
.tq .obj.done{color:#6fdc6f}
.tq.ready b{color:#ffe97a}

/* ──────────────────────────── bottom ──────────────────────────────── */
#bottom{position:fixed;left:50%;transform:translateX(-50%);bottom:10px;z-index:12;
  display:flex;flex-direction:column;align-items:center;gap:6px}
#xpbar{position:relative;width:420px;height:11px;background:#17140f;border:1px solid #000;
  border-radius:5px;overflow:hidden}
#xp-fill{height:100%;width:0;background:linear-gradient(180deg,#a55ed0,#5c2c86);transition:width .3s}
#xp-text{position:absolute;inset:0;text-align:center;font-size:9px;line-height:11px;color:#e8dcc0;text-shadow:0 1px 2px #000}
#actionbar{display:flex;gap:5px}
.slot{position:relative;width:50px;height:50px;border:2px solid #4a412c;border-radius:8px;
  background:#141210 center/cover;display:grid;place-items:center;font-size:24px;cursor:pointer;
  box-shadow:0 3px 10px rgba(0,0,0,.6)}
.slot:hover{border-color:var(--gold)}
.slot .key{position:absolute;top:-1px;left:3px;font-size:10px;color:#cbbf9c;text-shadow:0 1px 2px #000}
.slot .cdmask{position:absolute;inset:0;background:rgba(0,0,0,.66);border-radius:6px;
  display:grid;place-items:center;font-size:14px;color:#fff;text-shadow:0 1px 3px #000}
.slot.unusable{filter:grayscale(1) brightness(.6)}
.slot.active{border-color:#ffd76a;box-shadow:0 0 14px rgba(255,215,106,.6)}
#microbar{display:flex;gap:4px}
#microbar button{width:34px;height:26px;font-size:14px;background:#141210;color:var(--ink);
  border:1px solid #4a412c;border-radius:6px}
#microbar button:hover{border-color:var(--gold)}

/* ──────────────────────────── castbar ─────────────────────────────── */
#castbar{position:fixed;left:50%;transform:translateX(-50%);bottom:150px;width:260px;height:20px;
  background:#12100d;border:1px solid var(--gold-dim);border-radius:6px;overflow:hidden;z-index:13}
#castbar-fill{height:100%;width:0;background:linear-gradient(180deg,#ffd76a,#a97f22)}
#castbar-name{position:absolute;inset:0;text-align:center;font-size:12px;line-height:20px;color:#2b2205;font-weight:bold}

/* ───────────────────────────── chat ───────────────────────────────── */
#chat{position:fixed;left:12px;bottom:10px;width:400px;z-index:12;font-size:12.5px}
#chat-tabs{display:flex;gap:3px;margin-bottom:3px}
#chat-tabs button{padding:3px 9px;font-size:11px;background:rgba(10,9,7,.8);color:#9a917f;
  border:1px solid #3a3529;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:none}
#chat-tabs button.active{color:var(--gold);background:rgba(24,21,16,.95)}
#chat-log{height:150px;overflow-y:auto;padding:6px 8px;background:rgba(6,6,6,.42);
  border:1px solid rgba(120,100,60,.25);border-radius:6px;line-height:1.45;
  text-shadow:0 1px 3px #000;scrollbar-width:thin}
#chat-log::-webkit-scrollbar{width:6px}
#chat-log::-webkit-scrollbar-thumb{background:#4a412c;border-radius:3px}
.cl{margin:1px 0;word-wrap:break-word}
.cl .who{cursor:pointer}
.cl.say{color:#fff}.cl.yell{color:#ff4040}.cl.party{color:#7ea3ff}.cl.guild{color:#5be3a2}
.cl.system{color:#ffd76a}.cl.combat{color:#c9b48c}.cl.emote{color:#ff8f4d}
.cl.xp{color:#a97fd6}.cl.loot{color:#7ec97e}
#chat-input-row{display:flex;align-items:center;gap:6px;margin-top:4px;
  background:rgba(6,6,6,.85);border:1px solid var(--gold-dim);border-radius:6px;padding:4px 8px}
#chat-prefix{color:var(--gold);font-size:11px}
#chat-input{flex:1;background:none;border:none;color:#fff;outline:none;font-size:13px;font-family:inherit}

/* ───────────────────────────── panels ─────────────────────────────── */
.panel{position:fixed;z-index:20;width:380px;max-height:74vh;background:var(--panel);
  border:1px solid var(--gold-dim);border-radius:12px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;overflow:hidden}
#panel-character{right:210px;top:210px}
#panel-bags{right:210px;top:240px;width:340px}
#panel-quests{left:50%;top:12%;transform:translateX(-50%);width:460px}
#panel-help{left:50%;top:8%;transform:translateX(-50%);width:560px}
#gossip{left:50%;top:14%;transform:translateX(-50%);width:520px}
.panel-head{padding:9px 12px;background:linear-gradient(180deg,#2a2419,#171410);
  color:var(--gold);font-weight:bold;letter-spacing:1px;display:flex;justify-content:space-between;
  align-items:center;border-bottom:1px solid var(--gold-dim);cursor:move}
.panel-head .x{background:none;border:none;color:#9a917f;font-size:15px}
.panel-head .x:hover{color:#fff}
.panel-body{padding:12px 14px;overflow-y:auto;font-size:13px;line-height:1.5}
.panel-body h3{margin:14px 0 4px;color:var(--gold);font-size:13px;letter-spacing:1px}
.panel-body h3:first-child{margin-top:0}
.panel-body p{margin:0 0 6px;color:#c9c0ab}
.panel-body b{color:#ffd76a;font-weight:600}
#bag-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}
.bagslot{aspect-ratio:1;border:1px solid #4a412c;border-radius:6px;background:#141210;
  display:grid;place-items:center;font-size:20px;position:relative;cursor:pointer}
.item-art{display:block;width:100%;height:100%;background-image:url('/assets/ui/item-atlas.png');
  background-size:600% 600%;background-repeat:no-repeat;border-radius:5px}
.ri .item-art,.vi .item-art{width:38px;height:38px}
.roll-art .item-art{width:58px;height:58px;margin:0 auto 7px}
.bagslot:hover{border-color:var(--gold)}
.bagslot .q{position:absolute;right:2px;bottom:0;font-size:10px;color:#fff;text-shadow:0 1px 2px #000}
#bag-gold{margin-top:10px;text-align:right;color:#ffd76a;font-size:12px}
.eqrow{display:flex;align-items:center;gap:8px;margin:6px 0}
.eqrow .bagslot{width:40px;height:40px;aspect-ratio:auto}
.statline{display:flex;justify-content:space-between;border-bottom:1px dotted #3a3529;padding:3px 0}
.statline span:last-child{color:#ffd76a}
.qentry{border-bottom:1px solid #2c281d;padding:8px 0}
.qentry .qn{color:#ffd76a;font-weight:bold;cursor:pointer}
.qentry .qn.ready::after{content:" (Complete)";color:#6fdc6f;font-weight:normal}
.qentry .qo{padding-left:10px;color:#c9c0ab;font-size:12px}
.qentry .qo.done{color:#6fdc6f}
.gtext{font-style:italic;color:#d8cfb8;border-left:2px solid var(--gold-dim);padding-left:10px;margin-bottom:10px;white-space:pre-wrap}
.gopt{display:block;width:100%;text-align:left;margin:4px 0;padding:8px 10px;background:rgba(255,255,255,.04);
  border:1px solid #3a3529;border-radius:7px;color:var(--ink);font-size:13px}
.gopt:hover{background:rgba(200,164,77,.14);border-color:var(--gold)}
.gopt .tagq{color:#ffd100;margin-right:6px}
.vend{display:flex;align-items:center;gap:9px;padding:6px;border-bottom:1px solid #2c281d}
.vend .vi{width:34px;height:34px;border:1px solid #4a412c;border-radius:6px;display:grid;place-items:center;font-size:18px}
.vend .vn{flex:1}
.vend button{padding:5px 10px;background:#2a2419;color:var(--ink);border:1px solid var(--gold-dim);border-radius:6px;font-size:12px}
.rewards{display:flex;gap:6px;margin:6px 0}
.rewards .bagslot{width:42px;height:42px;aspect-ratio:auto}
.rewards .bagslot.sel{border-color:var(--gold);box-shadow:0 0 10px rgba(200,164,77,.6)}

/* ───────────────────── nameplates & world text ────────────────────── */
#nameplates,#worldtext,#bubbles{position:fixed;inset:0;pointer-events:none;z-index:9;overflow:hidden}
.np{position:absolute;transform:translate(-50%,-100%);text-align:center;white-space:nowrap}
.np .npn{font-size:11.5px;text-shadow:0 1px 3px #000,0 0 6px #000;font-weight:600}
.np .npbar{width:74px;height:5px;margin:2px auto 0;background:#000a;border:1px solid #000;border-radius:2px;overflow:hidden}
.np .npbar i{display:block;height:100%;background:#b33}
.np.friendly .npbar i{background:#3b8}
.np.targeted .npn{color:#ffd76a}
.np.targeted .npbar{outline:1px solid #ffd76a}
.np .elite{color:#ffd100}
.wt{position:absolute;font-weight:bold;font-size:16px;text-shadow:0 2px 4px #000,0 0 8px #000;
  transform:translate(-50%,-50%);animation:float 1.25s ease-out forwards}
.wt.crit{font-size:24px}
.wt.dmg{color:#ffdf6b}.wt.taken{color:#ff5f5f}.wt.heal{color:#6fdc6f}
.wt.miss{color:#bbb}.wt.xp{color:#c08bff}.wt.gold{color:#ffd100}
@keyframes float{0%{opacity:0;transform:translate(-50%,-30%) scale(.7)}
  18%{opacity:1;transform:translate(-50%,-60%) scale(1.08)}
  100%{opacity:0;transform:translate(-50%,-190%) scale(1)}}
.bub{position:absolute;transform:translate(-50%,-100%);max-width:220px;padding:5px 9px;
  background:rgba(250,248,240,.94);color:#151310;border-radius:10px;font-size:12px;
  box-shadow:0 4px 12px rgba(0,0,0,.5)}
.bub::after{content:"";position:absolute;left:50%;bottom:-6px;margin-left:-5px;
  border:5px solid transparent;border-top-color:rgba(250,248,240,.94)}

/* ───────────────────────── misc overlays ──────────────────────────── */
#death{position:fixed;inset:0;z-index:40;display:grid;place-items:center;background:rgba(20,0,0,.55);
  backdrop-filter:grayscale(1) blur(1px)}
.death-box{text-align:center;padding:30px 44px;background:var(--panel);border:1px solid #7b1414;border-radius:14px}
.death-box h2{color:#ff5f5f;margin:0 0 6px;letter-spacing:4px}
.death-box p{color:#b9ae97;margin:0 0 18px}
#respawn-btn{padding:10px 26px;background:linear-gradient(180deg,#e2c46b,#a9873a);border:none;
  border-radius:7px;color:#241d0c;font-weight:bold}
#invite-popup{position:fixed;left:50%;top:26%;transform:translateX(-50%);z-index:41;padding:16px 20px;
  background:var(--panel);border:1px solid var(--gold-dim);border-radius:10px;text-align:center}
#invite-popup .row{margin-top:12px;display:flex;gap:8px;justify-content:center}
#invite-popup button{padding:6px 16px;background:#2a2419;color:var(--ink);border:1px solid var(--gold-dim);border-radius:6px}
#toast{position:fixed;left:50%;top:16%;transform:translateX(-50%);z-index:30;text-align:center;pointer-events:none}
.toast-item{margin:4px 0;font-size:19px;color:#ffd76a;text-shadow:0 2px 6px #000;
  animation:toastfade 2.6s ease-out forwards}
@keyframes toastfade{0%{opacity:0;transform:translateY(10px) scale(.9)}12%{opacity:1;transform:none}
  75%{opacity:1}100%{opacity:0;transform:translateY(-14px)}}
#tooltip{position:fixed;z-index:50;max-width:280px;padding:9px 11px;background:rgba(6,6,8,.97);
  border:1px solid var(--gold-dim);border-radius:8px;font-size:12.5px;pointer-events:none;
  box-shadow:var(--shadow);line-height:1.45}
#tooltip .tt{font-weight:bold;font-size:13.5px;margin-bottom:3px}
#tooltip .sub{color:#9a917f;font-size:11px}
#tooltip .desc{color:#c9c0ab;margin-top:5px}
#zone-banner{position:fixed;left:50%;top:22%;transform:translateX(-50%);z-index:31;text-align:center;
  font-size:34px;letter-spacing:6px;color:var(--gold);text-shadow:0 3px 14px #000;
  animation:zonefade 4s ease-out forwards;pointer-events:none}
#zone-banner small{display:block;font-size:14px;letter-spacing:2px;color:#b9ae97}
@keyframes zonefade{0%{opacity:0}15%{opacity:1}70%{opacity:1}100%{opacity:0}}
@media (max-width:900px){
  #chat{width:300px}#tracker{display:none}
}

/* Original 8x8 production ability atlas. */
.ability-art{display:block;width:100%;height:100%;border-radius:5px;background-image:url('/assets/ui/ability-atlas.png');background-size:800% 800%;background-repeat:no-repeat;box-shadow:inset 0 0 0 1px rgba(255,218,120,.22)}
.spell-entry .spell-art{width:46px;height:46px;flex:none;padding:0;overflow:hidden;border-radius:7px}.talent .ti{padding:0;overflow:hidden}.talent .ti .ability-art{width:100%;height:100%}
#actionbar .slot.empty{background:rgba(3,7,14,.68);border-style:dashed;opacity:.72}#actionbar .slot.drag-over{border-color:#8de5ff;box-shadow:0 0 13px rgba(73,199,255,.7)}#actionbar .slot .ic{display:block;width:100%;height:100%}

#escape-menu{position:fixed;inset:0;z-index:80;display:grid;place-items:center;background:rgba(2,5,11,.7);backdrop-filter:blur(5px)}
.escape-shell{width:min(980px,94vw);height:min(690px,90vh);display:grid;grid-template-columns:210px 1fr;overflow:hidden;border:1px solid #957430;border-radius:14px;background:#080d15;box-shadow:0 25px 90px #000,0 0 0 5px rgba(7,10,15,.75)}
.escape-nav{padding:24px 14px;background:radial-gradient(circle at 20% 0,#293149 0,#111827 38%,#090d15 100%);border-right:1px solid #4c3c20}.escape-brand{padding:0 10px 24px;color:#d6b45e;letter-spacing:.16em}.escape-brand span{display:block;font:700 20px Georgia,serif}.escape-brand b{display:block;margin-top:4px;color:#76859d;font-size:10px;text-transform:uppercase}
.escape-nav button{width:100%;margin:3px 0;padding:11px 13px;text-align:left;color:#aab5c7;background:transparent;border:1px solid transparent;border-radius:7px;font-weight:700;letter-spacing:.04em}.escape-nav button:hover{background:#172236;color:#e9d59b}.escape-nav button.active{color:#ffe38a;background:linear-gradient(90deg,#342a18,#172033);border-color:#765c2c;box-shadow:inset 3px 0 #d7ae4d}
.escape-page{display:grid;grid-template-rows:auto 1fr auto;min-width:0}.escape-page>header{display:flex;align-items:center;justify-content:space-between;padding:22px 26px 16px;border-bottom:1px solid #302a1d;background:linear-gradient(180deg,#121b2b,#0d1420)}.escape-page header small{color:#68768d;letter-spacing:.25em}.escape-page h2{margin:2px 0 0;color:#e8cf88;font:700 27px Georgia,serif}.escape-page header button{width:34px;height:34px;border-radius:50%;background:#151e2d;color:#aab4c4;border:1px solid #4d5666}
#settings-body{padding:20px 26px;overflow:auto}.settings-group{margin:0 0 22px;border:1px solid #283247;border-radius:10px;background:rgba(14,22,35,.72);overflow:hidden}.settings-group h3{margin:0;padding:11px 14px;background:#121d2e;color:#d9bc70;font-size:12px;letter-spacing:.14em;text-transform:uppercase}.setting-row{min-height:48px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:20px;padding:8px 14px;border-top:1px solid rgba(63,76,96,.35)}.setting-row:first-of-type{border-top:0}.setting-row label{font-weight:700;color:#d3d9e3}.setting-row small{display:block;color:#748096;font-weight:400;margin-top:2px}.setting-row select,.setting-row input[type=range],.setting-row input[type=number]{accent-color:#d1a84c;background:#0c121d;color:#dae1ed;border:1px solid #455069;border-radius:6px;padding:6px}.setting-row input[type=checkbox]{width:19px;height:19px;accent-color:#cda645}
.bind-row{grid-template-columns:1fr 160px}.bind-button{padding:7px 10px;color:#d8dfec;background:#111b2a;border:1px solid #506079;border-radius:6px;text-align:center}.bind-button.listening{color:#171207;background:#e0ba5c;border-color:#ffdc77;animation:pulsebind .8s alternate infinite}@keyframes pulsebind{to{filter:brightness(1.22)}}
.escape-page footer{display:flex;align-items:center;gap:9px;padding:13px 20px;border-top:1px solid #302a1d;background:#0a101a}.escape-page footer span{margin-right:auto;color:#657287;font-size:11px}.escape-page footer button,.trade-actions button{padding:8px 13px;color:#d6dde8;background:#151f2f;border:1px solid #4c5b72;border-radius:6px}.escape-page footer button:last-child,.trade-actions button:last-child{color:#241b08;background:linear-gradient(#e5c66d,#aa8436);border-color:#e6c76f;font-weight:800}
#unit-menu{position:fixed;z-index:90;min-width:190px;padding:6px;background:rgba(7,11,18,.98);border:1px solid #927233;border-radius:8px;box-shadow:0 12px 36px #000}#unit-menu .unit-menu-name{padding:8px 9px;color:#e0c16e;font:700 14px Georgia,serif;border-bottom:1px solid #30291c;margin-bottom:4px}#unit-menu button{display:block;width:100%;padding:7px 9px;text-align:left;color:#cdd5e3;background:transparent;border:0;border-radius:4px}#unit-menu button:hover{background:#20304a;color:#fff}
.trade-panel{width:660px!important;left:50%!important;top:48%!important;transform:translate(-50%,-50%)!important}.trade-ledger{display:grid;grid-template-columns:1fr 38px 1fr;gap:10px;align-items:center}.trade-ledger section{padding:12px;border:1px solid #3d4b61;border-radius:9px;background:#0b121d}.trade-ledger h3{margin:0 0 9px;color:#dbc074}.trade-arrow{text-align:center;color:#d2a94b;font-size:27px}.trade-slots{display:grid;grid-template-columns:repeat(3,50px);grid-auto-rows:50px;gap:6px;min-height:106px}.trade-slots .bagslot{width:50px;height:50px}.trade-ledger label{display:flex;justify-content:space-between;align-items:center;margin-top:10px;color:#9faabd}.trade-ledger input{width:100px;background:#080d15;color:#e5d7a7;border:1px solid #4d5b70;padding:5px}.trade-status{margin-top:9px;color:#79859a;font-size:11px}.trade-status.accepted{color:#61da91}.trade-help{color:#7f8ba0}.trade-actions{display:flex;justify-content:flex-end;gap:8px}#trade-request-popup{position:fixed;left:50%;top:26%;transform:translateX(-50%);z-index:91;padding:16px 20px;background:var(--panel);border:1px solid var(--gold-dim);border-radius:10px;text-align:center}
.hidden{display:none!important}@media(max-width:760px){.escape-shell{grid-template-columns:145px}.escape-nav{padding:15px 8px}.escape-brand{display:none}.trade-panel{width:94vw!important}.trade-ledger{grid-template-columns:1fr}.trade-arrow{transform:rotate(90deg)}}
#weather-status{color:#94bad0;font-size:10px;text-shadow:0 1px 3px #000}.hide-status-text .bartext{display:none}.spell-entry .spell-art{width:46px;height:46px;padding:0}.spell-entry .spell-art .ability-art{width:100%;height:100%}
.loot-panel{width:330px!important;left:50%!important;top:42%!important;transform:translate(-50%,-50%)!important}.loot-entry{display:flex;align-items:center;gap:10px;width:100%;margin:6px 0;padding:7px;text-align:left;background:#101927;color:#d7deea;border:1px solid #3f4c61;border-radius:7px}.loot-entry .item-art{width:38px;height:38px;flex:none}#loot-window-gold{color:#e7c45f;margin-bottom:8px}#loot-all{width:100%;margin-top:9px;padding:8px;background:linear-gradient(#dec167,#a98236);color:#211908;border:1px solid #e8cf85;border-radius:6px;font-weight:800}

/* ═══════════════════ expansion: talents, map, professions, popups ════════ */
.panel.wide{width:640px}
.panel.map{width:min(860px,94vw)}
#panel-talents{left:50%;top:6%;transform:translateX(-50%)}
#panel-spellbook{left:50%;top:7%;transform:translateX(-50%);width:min(720px,94vw)}
#panel-professions{left:50%;top:8%;transform:translateX(-50%)}
#panel-map{left:50%;top:4%;transform:translateX(-50%)}
#panel-bank{right:210px;top:180px;width:340px}
#talent-points{color:#8fd;font-weight:normal;font-size:12px}

/* talents */
.tt-trees{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.tt-tree{border:1px solid #3a3529;border-radius:9px;padding:9px;background:rgba(255,255,255,.02)}
.tt-tree h4{margin:0 0 8px;color:var(--gold);font-size:13px;letter-spacing:1px;text-align:center}
.tt-tree .spent{color:#8fd;font-size:11px;font-weight:normal}
.talent{display:flex;gap:8px;align-items:center;padding:5px;border-radius:7px;cursor:pointer;border:1px solid transparent}
.talent:hover{background:rgba(200,164,77,.1);border-color:#4a412c}
.talent .ti{width:34px;height:34px;flex:none;border:2px solid #4a412c;border-radius:7px;display:grid;place-items:center;font-size:17px;background:#141210;position:relative}
.talent.maxed .ti{border-color:#ffd100;box-shadow:0 0 10px rgba(255,209,0,.5)}
.talent.locked{opacity:.42}
.talent .rank{position:absolute;right:-4px;bottom:-5px;font-size:10px;background:#141210;border:1px solid #4a412c;border-radius:4px;padding:0 3px;color:#ffd76a}
.talent .tn{font-size:12px;font-weight:bold}
.talent .td{font-size:11px;color:#9a917f;line-height:1.3}
#talent-reset{margin-top:10px;padding:6px 12px;background:#2a2419;border:1px solid var(--gold-dim);border-radius:6px;color:var(--ink);font-size:12px}

/* spellbook: a weathered field manual instead of another generic settings grid */
.panel-key{font-size:10px;color:#8b8577;border:1px solid #4a412c;border-radius:4px;padding:1px 5px;margin-left:6px}
.spellbook-intro{display:flex;justify-content:space-between;align-items:baseline;padding:8px 11px;margin-bottom:10px;
  border:1px solid #7f6330;background:linear-gradient(110deg,#332814,#1b1812);color:#dcbf70}
.spellbook-intro span{font-size:11px;color:#a99b7e;text-transform:uppercase;letter-spacing:.8px}
.spellbook-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}
.spell-entry{display:grid;grid-template-columns:44px 1fr;gap:9px;text-align:left;align-items:center;padding:8px;
  min-height:74px;color:#e8dcc0;background:linear-gradient(135deg,#231d12,#12100d);border:1px solid #4a412c;border-radius:6px}
.spell-entry:not(.locked):hover{border-color:#c8a44d;background:linear-gradient(135deg,#302515,#17130e)}
.spell-entry .spell-art{width:42px;height:42px;display:grid;place-items:center;font-size:25px;border:1px solid #68532b;
  background:radial-gradient(circle,#443319,#14110c);border-radius:5px}
.spell-entry b,.spell-entry small,.spell-entry em{display:block}
.spell-entry b{color:#ffd76a;font-size:13px}.spell-entry small{color:#8fbfe0;font-size:10px;margin:1px 0 3px}
.spell-entry em{color:#a99f89;font-size:11px;font-style:normal;line-height:1.25}
.spell-entry.locked{filter:grayscale(1);opacity:.48;cursor:not-allowed}

/* professions */
.prof-row{display:flex;align-items:center;gap:10px;padding:7px 4px;border-bottom:1px solid #2c281d}
.prof-row .pi{font-size:20px;width:26px;text-align:center}
.prof-row .pn{flex:1}
.prof-row .pbar{width:150px;height:9px;background:#1b1815;border:1px solid #000;border-radius:4px;overflow:hidden}
.prof-row .pbar i{display:block;height:100%;background:linear-gradient(90deg,#5c8f3a,#9fd86a)}
.prof-row .pv{font-size:11px;color:#9a917f;width:58px;text-align:right}
.recipe{display:flex;align-items:center;gap:9px;padding:6px;border-bottom:1px solid #2c281d}
.recipe.can .rn{color:#7ec97e}
.recipe.cant{opacity:.55}
.recipe .ri{width:30px;height:30px;border:1px solid #4a412c;border-radius:6px;display:grid;place-items:center;font-size:16px}
.recipe .rn{flex:1;font-size:12.5px}
.recipe .rm{font-size:11px;color:#9a917f}
.recipe button{padding:4px 10px;background:#2a2419;color:var(--ink);border:1px solid var(--gold-dim);border-radius:6px;font-size:11px}
.prof-tabs{display:flex;gap:4px;margin:10px 0 6px;flex-wrap:wrap}
.prof-tabs button{padding:4px 10px;font-size:11px;background:#141210;border:1px solid #3a3529;border-radius:6px;color:#9a917f}
.prof-tabs button.active{color:var(--gold);border-color:var(--gold)}

/* world map */
#map-wrap{position:relative;width:100%;aspect-ratio:1;max-height:66vh;margin:0 auto}
#worldmap{width:100%;height:100%;border:1px solid var(--gold-dim);border-radius:8px;display:block}
#map-pins{position:absolute;inset:0;pointer-events:none}
.pin{position:absolute;transform:translate(-50%,-50%);font-size:14px;text-shadow:0 2px 4px #000;white-space:nowrap}
.pin small{font-size:10px;color:#e8dcc0;margin-left:2px}
.pin.zone{font-size:12px;color:#fff;letter-spacing:2px;opacity:.85;font-weight:bold}
.pin.me{font-size:16px;color:#fff}
#map-legend{margin-top:8px;font-size:11px;color:#9a917f;display:flex;gap:14px;flex-wrap:wrap;justify-content:center}
#map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 8px;padding:7px 9px;border:1px solid #405069;background:linear-gradient(90deg,#0c1622,#142338);color:#9eafc3;font:10px ui-monospace,"Cascadia Mono",monospace;text-transform:uppercase;letter-spacing:.05em}
#map-toolbar button{padding:5px 8px;border:1px solid #7c6635;border-radius:3px;background:#1a2635;color:#f0d47f;font:700 10px 'Trebuchet MS',sans-serif}#map-toolbar button:disabled{opacity:.42;cursor:default}
.map-arrow{display:inline-block;color:#53c7ff;font-size:18px;line-height:1;transform:rotate(var(--heading));text-shadow:0 0 7px rgba(83,199,255,.8)}.me-arrow{color:#fff;text-shadow:0 0 7px rgba(255,255,255,.85)}.party-pin{z-index:4}.waypoint-pin{z-index:5}.waypoint-mark{color:#ffd76a;font-size:21px;font-style:normal;text-shadow:0 0 9px rgba(255,215,106,.82)}
.legend-me{color:#fff}.legend-party{color:#53c7ff}.legend-waypoint{color:#ffd76a}

/* popups */
.popup{position:fixed;left:50%;top:24%;transform:translateX(-50%);z-index:41;padding:16px 20px;
  background:var(--panel);border:1px solid var(--gold-dim);border-radius:10px;text-align:center;box-shadow:var(--shadow)}
.popup .row{margin-top:12px;display:flex;gap:8px;justify-content:center}
.popup button{padding:6px 16px;background:#2a2419;color:var(--ink);border:1px solid var(--gold-dim);border-radius:6px}
.popup button:hover{border-color:var(--gold)}
#roll-popup{top:34%}
#roll-item{font-size:14px}

/* prompts, flight, dungeon */
#prompt{position:fixed;left:50%;bottom:210px;transform:translateX(-50%);z-index:14;
  padding:7px 16px;background:rgba(10,9,7,.85);border:1px solid var(--gold-dim);border-radius:8px;
  font-size:13px;color:#ffd76a;text-shadow:0 1px 3px #000}
#flight-overlay{position:fixed;inset:0;z-index:22;display:grid;place-items:center;pointer-events:none;
  font-size:28px;letter-spacing:6px;color:#ffd76a;text-shadow:0 3px 12px #000;
  background:linear-gradient(180deg,rgba(0,0,0,.35),transparent 30%,transparent 70%,rgba(0,0,0,.35))}
#minimap-hint{font-size:10px;color:#6f6a5c}
.auras.small .aura{width:19px;height:19px;font-size:11px}
#target-auras{position:static;margin-top:3px}
#pet-frame{top:96px;left:12px;width:200px}
#pet-frame .portrait{width:32px;height:32px;font-size:17px}
.slot.locked{opacity:.4}
#actionbar .slot{width:44px;height:44px;font-size:21px}
.vend .vq{font-size:11px;color:#9a917f}
.trainer-row{display:flex;align-items:center;gap:9px;padding:7px 4px;border-bottom:1px solid #2c281d}
.trainer-row button{padding:5px 10px;background:#2a2419;color:var(--ink);border:1px solid var(--gold-dim);border-radius:6px;font-size:11px}
.flight-row{display:flex;align-items:center;gap:8px;padding:6px 4px;border-bottom:1px solid #2c281d}
.flight-row .fn{flex:1}
.flight-row button{padding:4px 10px;background:#2a2419;color:var(--ink);border:1px solid var(--gold-dim);border-radius:6px;font-size:11px}
#class-detail{min-height:34px;font-size:12px;color:#9a917f;margin:-8px 0 14px}
#look-picker{display:flex;align-items:center;justify-content:center;gap:12px;margin:-2px 0 16px}
.look-label{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:#8b8577}
#look-swatches{display:flex;gap:8px}
.appearance-picker{display:grid;grid-template-columns:1fr 1fr;gap:0 12px;max-width:580px;margin:0 auto 10px}
.appearance-picker .field{max-width:none;margin-bottom:12px}
.appearance-picker .field input[type=color]{height:42px;padding:4px}
.look-swatch{width:28px;height:28px;border-radius:50%;border:2px solid #413a2c;background:var(--swatch);
  box-shadow:inset 0 0 0 3px #111,0 2px 6px #000;transition:transform .15s,border-color .15s}
.look-swatch:hover{transform:translateY(-2px)}
.look-swatch.sel{border-color:#ffd76a;box-shadow:inset 0 0 0 3px #111,0 0 12px rgba(255,215,106,.65)}

#netstat{font-size:11px;color:#9a917f;margin-top:2px;letter-spacing:.3px}

@media (max-width:620px){
  .login-inner{padding:24px 16px}
  #login h1{font-size:34px;letter-spacing:5px}
  .auth-fields{grid-template-columns:1fr}
  .appearance-picker{grid-template-columns:1fr}
  #class-picker{grid-template-columns:repeat(2,1fr)}
  .class-card .cd{min-height:30px}
}

/* nameplate cast bars, hurt flash, threat and meters */
.np .npcast{display:none;width:78px;height:8px;margin:2px auto 0;background:#000a;border:1px solid #000;
  border-radius:2px;overflow:hidden;position:relative}
.np .npcast i{display:block;height:100%;background:linear-gradient(90deg,#c98bff,#ffd76a)}
.np .npcast span{position:absolute;inset:0;font-size:8px;line-height:8px;text-align:center;color:#fff;text-shadow:0 1px 2px #000}
#hurt{position:fixed;inset:0;z-index:8;pointer-events:none;opacity:0;
  background:radial-gradient(ellipse at center,transparent 45%,rgba(150,0,0,.75) 100%);transition:opacity .18s}
#lowhp{position:fixed;inset:0;z-index:7;pointer-events:none;opacity:0;
  background:radial-gradient(ellipse at center,transparent 40%,rgba(190,0,0,.5) 100%);animation:pulsehp 1.4s infinite}
@keyframes pulsehp{0%,100%{opacity:.25}50%{opacity:.6}}
#threat-row{display:flex;align-items:center;gap:5px;margin-top:3px;font-size:10px;color:#c9c0ab}
#threat-bar{flex:1;height:6px;background:#1b1815;border:1px solid #000;border-radius:3px;overflow:hidden}
#threat-bar i{display:block;height:100%;background:linear-gradient(90deg,#4caf50,#ffd76a,#e04a4a)}
#swing{position:relative;width:420px;height:6px;background:#17140f;border:1px solid #000;border-radius:4px;overflow:hidden;margin-top:2px}
#swing i{display:block;height:100%;width:0;background:linear-gradient(90deg,#8a6f2e,#e6cd82)}
#meter{position:fixed;right:14px;bottom:120px;z-index:12;width:190px;background:var(--panel);
  border:1px solid var(--gold-dim);border-radius:8px;padding:7px 9px;font-size:11.5px}
#meter h4{margin:0 0 5px;color:var(--gold);font-size:11px;letter-spacing:1px}
#meter .mrow{display:flex;justify-content:space-between;padding:1px 0}
#meter .mrow b{color:#ffd76a;font-weight:normal}
.slot.queued{outline:2px solid #7fd8ff;outline-offset:-2px}

/* Account-wide interface accessibility controls. */
:root{--hud-scale:1}.reduce-motion *,.reduce-motion *::before,.reduce-motion *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}#player-frame,#target-frame,#pet-frame,#party-frames,#minimap-wrap,#tracker,#bottom,#chat,#meter{zoom:var(--hud-scale)}

/* Command-deck HUD: the quiet slate panels make combat information readable
   against every biome, while the brass compass treatment reserves colour for
   things that need a decision. */
:root{--hud-slate:rgba(8,15,23,.88);--hud-edge:#53637a;--hud-brass:#d2ad52;--hud-blue:#91d9ff}
.unitframe{background:linear-gradient(125deg,rgba(17,27,39,.96),rgba(8,12,18,.9));border-color:var(--hud-edge);border-radius:5px;box-shadow:0 8px 28px rgba(0,0,0,.58),inset:3px 0 0 rgba(210,173,82,.75);padding:8px 11px 8px 8px}
#player-frame{top:18px;left:18px;width:278px}#target-frame{top:18px;left:304px;width:255px}.portrait{border-radius:5px;border-color:#b99546;background:linear-gradient(145deg,#24364b,#111920);box-shadow:inset 0 0 0 2px rgba(0,0,0,.38)}
.uf-name{font-family:Georgia,"Times New Roman",serif;font-size:14px;letter-spacing:.15px}.bar{height:14px;border-radius:2px;background:#070b10;border-color:#020305}.bartext{line-height:14px;font-size:10px}.auras{left:8px;margin-top:6px}.aura{border-radius:3px;border-color:#65758d;background:#101923}
#party-frames{left:18px;top:130px;gap:5px}.party-frame{width:212px;border-radius:4px;border-color:#4c5a70;background:var(--hud-slate);box-shadow:inset:3px 0 #647a94}
#party-frames .party-frame.away{opacity:.7;box-shadow:inset 3px 0 #69758a}.party-frame.dead{filter:grayscale(.85)}.party-frame .pn{display:flex;align-items:center;gap:4px}.party-frame .pn small{margin-left:auto;color:#8da1b7;font:9px ui-monospace,"Cascadia Mono",monospace;text-transform:uppercase}
#minimap-wrap{top:18px;right:18px;width:196px;padding:8px 8px 6px;background:linear-gradient(145deg,rgba(17,28,40,.92),rgba(6,10,15,.84));border:1px solid #526178;border-radius:98px 98px 8px 8px;box-shadow:0 10px 30px rgba(0,0,0,.55)}
#minimap{width:176px;height:176px;border-color:#c49b42;box-shadow:0 0 0 3px #101923,0 5px 16px #000}#zone-name{margin-top:7px;font-family:Georgia,"Times New Roman",serif;letter-spacing:.45px;color:#f0d47f}#coords,#clock,#weather-status,#netstat{font-family:ui-monospace,"Cascadia Mono",monospace;font-size:10px;color:#aeb8c5}
#tracker{right:22px;top:318px;width:244px;padding:9px 11px 7px;border-left:2px solid #c49b42;background:linear-gradient(90deg,rgba(6,11,17,.78),transparent);text-shadow:0 2px 5px #000}.tracker-title{font-family:Georgia,"Times New Roman",serif;font-size:14px;color:#f0d47f}.tq{padding-bottom:6px;border-bottom:1px solid rgba(169,188,211,.13)}
#bottom{bottom:16px;gap:5px;filter:drop-shadow(0 8px 14px rgba(0,0,0,.45))}#xpbar{width:536px;height:10px;border-radius:2px;border-color:#26384c;background:#08111b}#xp-fill{background:linear-gradient(90deg,#4a2a72,#9d65d6 60%,#d5a8fb)}#xp-text{line-height:10px;font-family:ui-monospace,"Cascadia Mono",monospace;font-size:8px}
#swing{width:536px;height:4px;margin-top:0;background:#08111b;border-color:#26384c}#swing i{background:linear-gradient(90deg,#8e6930,#f0d47f,#fff0a8)}
#combat-ribbon{display:flex;align-items:center;gap:8px;width:536px;min-height:24px;padding:4px 10px;border:1px solid #34465a;background:linear-gradient(90deg,rgba(7,14,22,.96),rgba(19,31,43,.92));color:#b7c4d4;font:10px ui-monospace,"Cascadia Mono",monospace;letter-spacing:.25px;text-transform:uppercase}
#combat-ribbon #hud-state{color:#9fe58c;font-weight:800}#combat-ribbon i{height:12px;border-left:1px solid #576980}#hud-target{color:#f2d887;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#hud-hint{margin-left:auto;color:#8a9aad;white-space:nowrap}#combat-ribbon.combat{border-color:#b55550;background:linear-gradient(90deg,rgba(52,16,16,.95),rgba(27,23,27,.94))}#combat-ribbon.combat #hud-state{color:#ff998d}
#actionbar{gap:3px;padding:5px 7px;background:linear-gradient(180deg,rgba(24,35,48,.92),rgba(6,11,17,.96));border:1px solid #45576a;border-radius:4px}.slot,#actionbar .slot{width:48px;height:48px;border-radius:3px;border-color:#586b80;background-color:#111b27;box-shadow:inset 0 0 0 1px rgba(0,0,0,.6),0 2px 5px rgba(0,0,0,.6)}.slot:hover{border-color:#f0d47f;transform:translateY(-1px)}.slot .key{color:#e8d9b2;font-family:ui-monospace,"Cascadia Mono",monospace;font-weight:bold;background:rgba(4,8,13,.72);padding:1px 3px}.slot.active{border-color:#f3d978;box-shadow:0 0 13px rgba(242,198,91,.45),inset 0 0 0 1px #fff0a8}
#microbar{gap:3px;padding:3px 5px;background:rgba(6,11,17,.86);border:1px solid #34465a;border-radius:0 0 4px 4px}#microbar button{width:31px;height:24px;border-radius:3px;border-color:#405269;background:#101a26;color:#c7d5e5}#microbar button:hover{border-color:#e5c46d;color:#fff;background:#1b2a3b}
#castbar{bottom:180px;width:330px;height:23px;border-radius:3px;border-color:#6e7e91;background:#08111b}#castbar-fill{background:linear-gradient(90deg,#b989e6,#efcf70)}#castbar-name{line-height:23px;color:#fff;font:700 11px ui-monospace,"Cascadia Mono",monospace;text-shadow:0 1px 3px #000}
#chat{left:18px;bottom:18px;width:370px}#chat-log{height:126px;background:linear-gradient(90deg,rgba(4,8,12,.7),rgba(6,11,17,.32));border-color:rgba(112,134,158,.34);border-radius:3px}#chat-tabs button{border-radius:3px 3px 0 0;border-color:#34465a;background:rgba(8,15,23,.84)}#chat-tabs button.active{color:#f0d47f;background:#182637;border-color:#6a7d93}
#meter{right:18px;bottom:132px;width:210px;border-radius:4px;border-color:#45576a;background:var(--hud-slate)}
@media (max-width:760px){#player-frame{top:8px;left:8px;width:235px}#target-frame{top:96px;left:8px;width:235px}#minimap-wrap{top:8px;right:8px;transform:scale(.78);transform-origin:top right}#tracker,#meter{display:none}#bottom{transform:translateX(-50%) scale(.84);transform-origin:bottom center;bottom:3px}#chat{left:8px;bottom:8px;width:min(300px,78vw)}#chat-log{height:92px}}

/* Realm Ledger — a courier docket, not another generic settings panel. */
#microbar #realm-btn{position:relative}#realm-badge{position:absolute;right:-5px;top:-7px;min-width:15px;height:15px;padding:0 3px;border-radius:9px;background:#a63238;color:#fff4d0;border:1px solid #e29783;font:700 9px/14px Arial,sans-serif;box-shadow:0 2px 7px #000}
#panel-realm{left:50%;top:5%;transform:translateX(-50%);width:min(900px,96vw);height:min(700px,90vh);background:#0a111b;border-color:#9b7939}.realm-ledger .panel-head{height:45px;background:linear-gradient(90deg,#241b10,#101a2a 44%,#0b1420);border-bottom:1px solid #6f5528}.realm-ledger .panel-head>span{color:#e8c86f;font:700 19px Georgia,serif;letter-spacing:.04em}.realm-ledger .panel-head small{margin-left:12px;color:#75849a;font:10px 'Trebuchet MS',sans-serif;text-transform:uppercase;letter-spacing:.13em}.realm-ledger>.panel-body{height:calc(100% - 88px);padding:16px 18px;overflow:auto;background:radial-gradient(circle at 100% 0,rgba(49,69,93,.2),transparent 42%),#0a111b}
.realm-tabs{height:42px;display:flex;padding:0 18px;gap:4px;align-items:end;background:#0d1623;border-bottom:1px solid #394354}.realm-tabs button{padding:10px 18px 9px;color:#8e9aad;background:transparent;border:0;border-bottom:2px solid transparent;font-weight:800;letter-spacing:.04em}.realm-tabs button:hover{color:#e4d4a5}.realm-tabs button.active{color:#f0d27d;border-bottom-color:#d2a94c;background:linear-gradient(0deg,rgba(168,124,47,.16),transparent)}
.realm-intro,.auction-mast{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:13px 16px;margin-bottom:12px;border:1px solid #4b3c24;background:linear-gradient(105deg,#211a10,#111b29 58%,#172332);box-shadow:inset 3px 0 #b28c3e}.realm-intro b,.auction-mast b{display:block;color:#e7c970;font:700 17px Georgia,serif}.realm-intro span,.auction-mast span{display:block;margin-top:3px;color:#8995a8;font-size:11px}.wax-seal{display:grid!important;place-items:center;flex:none;width:40px;height:40px;margin:0!important;border-radius:50%;color:#f2c6a1!important;background:radial-gradient(circle at 35% 30%,#b84f4c,#6f1f25 68%);border:2px ridge #d27968;box-shadow:0 3px 9px #000;font:700 19px Georgia,serif!important}
.realm-form,.auction-create{display:grid;grid-template-columns:1fr 130px auto;gap:8px;margin-bottom:14px}.realm-ledger input,.realm-ledger select,.realm-ledger textarea,.realm-ledger fieldset{box-sizing:border-box;background:#080e17;color:#d8dfeb;border:1px solid #45546a;border-radius:5px;padding:8px;font:12px 'Trebuchet MS',sans-serif}.realm-ledger textarea{resize:vertical;line-height:1.5}.realm-ledger button{color:#d5deea;background:#142032;border:1px solid #4c5c73;border-radius:5px;padding:7px 10px;font-weight:700}.realm-ledger button:hover{color:#fff;border-color:#8b9bb4;background:#1b2a40}.realm-ledger button.primary,.realm-form button,.auction-create>button{color:#261b08;background:linear-gradient(#e4c56d,#a98236);border-color:#e1c16b}.realm-ledger button:focus-visible,.realm-ledger input:focus-visible,.realm-ledger select:focus-visible,.realm-ledger textarea:focus-visible{outline:2px solid #e4c568;outline-offset:2px}
.social-columns{display:grid;grid-template-columns:1.35fr 1fr;gap:14px}.social-columns section{border:1px solid #303c4e;background:#0d1623;min-height:260px}.social-columns h3{margin:0;padding:9px 12px;color:#cfb66f;background:#111d2d;border-bottom:1px solid #303c4e;font:700 12px 'Trebuchet MS',sans-serif;text-transform:uppercase;letter-spacing:.13em}.social-columns h3 small{float:right;color:#69768a}.social-row{display:flex;align-items:center;gap:9px;min-height:48px;padding:7px 9px;border-bottom:1px solid rgba(63,76,96,.45)}.social-row>i{width:8px;height:8px;border-radius:50%;background:#556174;box-shadow:0 0 0 2px #172232}.social-row.online>i{background:#58d58b;box-shadow:0 0 8px #36aa68}.social-row>div:first-of-type{flex:1;min-width:0}.social-row b,.social-row small{display:block}.social-row b{color:#dbe3ef}.social-row small{color:#748196;margin-top:2px;font-size:10px}.social-row .row-actions{margin-left:auto;display:flex;gap:4px}.social-row button{padding:4px 7px;font-size:10px}.social-row.ignored{opacity:.8}.realm-empty{padding:22px;color:#718096;text-align:center;line-height:1.5}.realm-empty.tall{display:grid;place-items:center;min-height:280px}
.ledger-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:10px}.ledger-toolbar span{margin-left:auto;color:#748196}.mail-layout{display:grid;grid-template-columns:300px 1fr;min-height:430px;border:1px solid #344155;background:#0c1521}.mail-layout>#mail-list{border-right:1px solid #344155;overflow:auto;max-height:510px}.mail-row{width:100%;display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:9px;padding:10px;text-align:left;border:0!important;border-radius:0!important;border-bottom:1px solid #273448!important;background:#0d1724!important}.mail-row:hover,.mail-row.selected{background:#17263a!important}.mail-row>i{width:7px;height:7px;border-radius:50%;background:#4d5c71}.mail-row.unread>i{background:#d4ae50;box-shadow:0 0 8px #b88427}.mail-row span,.mail-row b,.mail-row small{display:block;min-width:0}.mail-row b{color:#d8e0ec}.mail-row small{margin-top:2px;color:#8995a8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-row time{color:#5f6c80;font:9px Arial,sans-serif}.mail-row.unread b{color:#f0d27d}
#mail-reader{padding:20px;background:linear-gradient(135deg,#d8c69b,#bca879);color:#292316;box-shadow:inset 9px 0 22px rgba(57,40,16,.2)}#mail-reader header{position:relative;padding-bottom:11px;border-bottom:1px solid rgba(62,47,24,.35)}#mail-reader header small{color:#715b32;letter-spacing:.15em}#mail-reader h3{margin:5px 0;color:#2f2718;font:700 21px Georgia,serif}#mail-reader header time{position:absolute;right:0;top:0;color:#756542;font-size:10px}.letter-body{min-height:180px;padding:18px 3px;color:#332a1a;font:14px/1.55 Georgia,serif}.mail-attachments{display:flex;gap:8px;align-items:center;padding:10px;border:1px dashed #7b6539;background:rgba(255,246,211,.24)}.mail-attachments>div{display:flex;align-items:center;gap:8px}.mail-attachments .item-art{width:36px;height:36px}.coin-pouch{color:#5f4515;font-weight:800}.mail-layout #mail-reader .row-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:12px}#mail-reader button{color:#38270d;background:#c0a361;border-color:#80652f}
.mail-compose{max-width:650px;margin:auto;display:grid;gap:10px}.mail-compose>label{display:grid;grid-template-columns:85px 1fr;align-items:center;color:#9aa7b9;font-weight:700}.attachment-docket{display:grid;grid-template-columns:1fr 110px 1.1fr;gap:8px;padding:11px;border:1px solid #3a485c;background:#0d1724}.attachment-docket>label{display:grid;gap:5px;color:#8996a9}.realm-ledger fieldset{display:flex;align-items:center;gap:5px;padding:5px 8px}.realm-ledger fieldset legend{padding:0 4px;color:#8b98aa}.realm-ledger fieldset label{display:flex;align-items:center;gap:3px;color:#c8b06a}.realm-ledger fieldset input{width:58px}.realm-note{color:#77859a;font-size:11px}
.auction-mast{margin-bottom:9px}.auction-mast input{width:240px}.auction-create{grid-template-columns:1.4fr 80px 1fr auto;align-items:center;padding:9px;border:1px solid #344155;background:#0d1724}.auction-create fieldset{justify-content:center}.auction-head,.auction-row{display:grid;grid-template-columns:minmax(230px,1.7fr) minmax(90px,.8fr) 55px 100px 70px;gap:8px;align-items:center}.auction-head{padding:7px 10px;color:#667489;font-size:9px;text-transform:uppercase;letter-spacing:.14em;border-bottom:1px solid #344155}.auction-row{min-height:50px;padding:7px 10px;border-bottom:1px solid rgba(55,68,86,.7);background:#0d1622}.auction-row:nth-child(even){background:#101b29}.auction-row>div{display:flex;align-items:center;gap:9px}.auction-row .item-art{width:35px;height:35px;flex:none}.auction-row>span,.auction-row>time{color:#8d99ab}.auction-row>b{color:#e3c568}.auction-row button{padding:5px 8px;font-size:10px}
.guild-empty{max-width:620px;margin:50px auto;text-align:center;padding:28px;border:1px solid #3e4c60;background:radial-gradient(circle at 50% 0,rgba(197,155,67,.15),transparent 55%),#0d1724}.guild-empty h2,.guild-banner h2{margin:4px 0;color:#e8c970;font:700 24px Georgia,serif}.guild-empty p{color:#8c99ac;line-height:1.55}.guild-empty .realm-form{margin:22px auto 10px}.guild-price{display:grid;place-items:center;color:#d0b66d;font-size:11px}.guild-crest{display:grid;place-items:center;flex:none;width:52px;height:60px;color:#f1d27b;font-size:25px;background:linear-gradient(145deg,#785a25,#2f415c);border:1px solid #d1ad55;clip-path:polygon(0 0,100% 0,100% 75%,50% 100%,0 75%)}
.guild-banner{display:flex;align-items:center;gap:16px;padding:15px 17px;margin-bottom:12px;border:1px solid #4d3e25;background:linear-gradient(105deg,#231b10,#111c2c 55%,#172538)}.guild-banner>div{flex:1}.guild-banner small{color:#738096;letter-spacing:.15em}.guild-banner p{margin:5px 0 0;color:#aab4c3}.guild-banner>b{color:#61d89a;font-size:11px}.guild-toolbar{display:flex;gap:7px;margin:10px 0}.guild-toolbar #guild-leave{margin-left:auto;color:#d98a8a}.guild-roster{border:1px solid #344155;background:#0d1623}.guild-member{display:grid;grid-template-columns:8px minmax(180px,1fr) 110px minmax(120px,auto);align-items:center;gap:10px;min-height:53px;padding:7px 11px;border-bottom:1px solid rgba(56,70,89,.65)}.guild-member:nth-child(even){background:#101b29}.guild-member>i{width:8px;height:8px;border-radius:50%;background:#536074}.guild-member.online>i{background:#58d58b;box-shadow:0 0 8px #36aa68}.guild-member b,.guild-member small{display:block}.guild-member small{margin-top:2px;color:#748196}.guild-member>span{color:#b9a15f;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.guild-member .row-actions{display:flex;justify-content:flex-end;gap:5px}.guild-member button{font-size:10px;padding:5px 7px}
@media(max-width:760px){#panel-realm{top:2%;height:95vh}.realm-ledger .panel-head small{display:none}.social-columns,.mail-layout{grid-template-columns:1fr}.mail-layout>#mail-list{border-right:0;border-bottom:1px solid #344155;max-height:210px}.realm-form,.auction-create{grid-template-columns:1fr}.auction-head{display:none}.auction-row{grid-template-columns:1fr 70px}.auction-row>span,.auction-row>time{display:none}.attachment-docket{grid-template-columns:1fr}.auction-mast{align-items:stretch;flex-direction:column}.auction-mast input{width:100%}}
