/* Ace HQ. Navy room, orange orb, Nunito. */
:root{
  --bg:#081029; --bg2:#0B1638; --panel:#111C44; --panel2:#141F4A; --line:#26366E; --line2:#1E2A58;
  --text:#F2F6FF; --muted:#A3B0DA; --soft:#C7D2F5; --blue:#2E7BFF; --blue-hi:#4FA8FF; --cyan:#5CD6FF;
  --orange:#F2702A; --orange-hi:#FFB27A; --green:#4ADE80; --danger:#FF7A7A;
  --r-card:16px; --r-bubble:18px; --r-pill:999px;
  --font:'Nunito',system-ui,-apple-system,'Segoe UI',sans-serif;
  --tabs-h:76px;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
body{overflow:hidden}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--blue-hi)}
:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:6px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}
svg{flex:none}

/* ---------- app frame ---------- */
#app{height:100%;display:flex}
.side{display:none}
.main{flex:1 1 auto;min-width:0;height:100%;display:flex;flex-direction:column;position:relative}
.view{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.scroll{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}

/* ---------- top bar ---------- */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 0 22px;gap:12px}
.brand{display:flex;align-items:center;gap:12px;min-width:0}
.brand h1{margin:0;font-weight:900;font-size:40px;line-height:1;letter-spacing:-.5px}
.status{display:flex;align-items:center;gap:7px;font-size:16px;font-weight:600;color:#D7E1FF;white-space:nowrap}
.dot{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green)}
.dot.off{background:#7D88B3;box-shadow:none}
.dot.warn{background:#FFC857;box-shadow:0 0 8px #FFC857}
.iconbtn{width:46px;height:46px;border-radius:50%;border:0;background:transparent;color:#DCE4FF;display:flex;align-items:center;justify-content:center;position:relative}
.iconbtn:hover{background:rgba(255,255,255,.06)}
.page-title{margin:0;font-weight:900;font-size:34px;line-height:1.05;letter-spacing:-.3px}
.page-head{padding:18px 20px 10px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.page-sub{margin:4px 0 0;color:var(--muted);font-size:15px}

/* ---------- hero room + orb ---------- */
.hero{position:relative;height:246px;overflow:hidden;background:linear-gradient(180deg,#0A1434 0%,#12204F 62%,#0B1638 100%);flex:none}
.hero .topbar{position:absolute;left:0;right:0;top:0;z-index:3}
.room{position:absolute;inset:0;filter:blur(1.6px)}
.lamp{position:absolute;left:-40px;top:40px;width:200px;height:170px;border-radius:50%;background:radial-gradient(circle,rgba(255,170,100,.32) 0%,rgba(255,170,100,0) 70%)}
.neon{position:absolute;right:30px;top:44px;width:6px;height:118px;border-radius:4px;background:#7FE3FF;box-shadow:0 0 22px 6px rgba(92,214,255,.65),0 0 60px 18px rgba(92,214,255,.25)}
.wallglow{position:absolute;right:-30px;top:20px;width:170px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(92,214,255,.22) 0%,rgba(92,214,255,0) 70%)}
.desk{position:absolute;left:0;right:0;bottom:0;height:46px;background:#0B1433;border-top:1px solid #1E2C63}
.plant1{position:absolute;left:18px;bottom:40px;width:34px;height:70px;border-radius:50% 50% 40% 40%;background:#0E1A45}
.plant2{position:absolute;left:44px;bottom:46px;width:26px;height:52px;border-radius:50%;background:#0D1840;transform:rotate(18deg)}
.pot{position:absolute;left:26px;bottom:30px;width:34px;height:22px;border-radius:4px 4px 8px 8px;background:#15214F}
.pad{position:absolute;right:26px;bottom:34px;width:62px;height:30px;border-radius:16px 16px 20px 20px;background:#1A2758;box-shadow:inset 0 2px 0 rgba(143,227,255,.15)}
.speaker{position:absolute;left:84px;bottom:46px;width:30px;height:56px;border-radius:6px;background:#0F1B47}
.spill{position:absolute;left:50%;top:-10px;width:380px;height:290px;margin-left:-190px;border-radius:50%;background:radial-gradient(circle,rgba(242,112,42,.34) 0%,rgba(242,112,42,.12) 40%,rgba(242,112,42,0) 68%);transition:opacity .6s}
.deskglow{position:absolute;left:50%;bottom:30px;width:260px;height:40px;margin-left:-130px;border-radius:50%;background:radial-gradient(ellipse,rgba(255,140,70,.35) 0%,rgba(255,140,70,0) 70%)}
.spark{position:absolute;width:3px;height:3px;border-radius:50%;background:#FFD7B0;box-shadow:0 0 7px #FF9A55;animation:twinkle 3s ease-in-out infinite}
.spark:nth-child(2n){animation-duration:4.4s;animation-delay:1s}
.stage{position:absolute;left:50%;top:18px;width:250px;height:220px;margin-left:-125px;display:flex;align-items:center;justify-content:center;z-index:2;cursor:pointer;border:0;background:transparent;padding:0}
.aura{position:absolute;left:50%;top:50%;width:230px;height:230px;margin:-115px 0 0 -115px;border-radius:50%;background:radial-gradient(circle,rgba(255,150,80,.55) 0%,rgba(242,112,42,.35) 38%,rgba(242,112,42,0) 70%);filter:blur(6px);transition:transform .4s}
.orb{position:relative;width:162px;height:162px;border-radius:50%;overflow:hidden;background:radial-gradient(circle at 34% 28%,#FFE2C2 0%,#F2702A 36%,#B4400F 68%,#4E1F09 100%);box-shadow:inset -16px -22px 46px rgba(50,12,0,.4);-webkit-mask-image:radial-gradient(circle closest-side,#000 93%,rgba(0,0,0,.6) 97%,rgba(0,0,0,0) 100%);mask-image:radial-gradient(circle closest-side,#000 93%,rgba(0,0,0,.6) 97%,rgba(0,0,0,0) 100%);transform:scale(var(--amp,1));transition:transform .08s linear}
.swirl{position:absolute;inset:10%;border-radius:50%;background:conic-gradient(from 0deg,rgba(255,226,190,0),rgba(255,226,190,.45),rgba(255,226,190,0) 45%,rgba(255,226,190,.22) 70%,rgba(255,226,190,0));filter:blur(13px)}
.core{position:absolute;left:50%;top:50%;width:50px;height:50px;margin:-25px 0 0 -25px;border-radius:50%;background:radial-gradient(circle,rgba(255,244,225,.9) 0%,rgba(255,170,90,.55) 40%,rgba(255,170,90,0) 72%)}
.gloss{position:absolute;left:18%;top:9%;width:46%;height:26%;border-radius:50%;background:radial-gradient(ellipse at center,rgba(255,255,255,.3),rgba(255,255,255,0) 70%)}
.wave{position:absolute;left:50%;top:50%;width:162px;height:162px;margin:-81px 0 0 -81px;border-radius:50%;border:2px solid rgba(255,160,90,.65);opacity:0;pointer-events:none}
.bubble{position:absolute;right:26px;top:66px;z-index:3;padding:8px 15px;border-radius:18px;border:2px solid rgba(255,190,140,.9);background:rgba(8,16,41,.72);font-weight:800;font-size:18px;color:var(--text);box-shadow:0 0 16px rgba(242,112,42,.5),inset 0 0 10px rgba(242,112,42,.2);transform:rotate(-6deg);transition:opacity .3s,transform .3s;max-width:150px;pointer-events:none}
.bubble.hide{opacity:0;transform:rotate(-6deg) scale(.85)}

.s-idle .orb-wrap{animation:float 5s ease-in-out infinite}.s-idle .core{animation:pulse 4s ease-in-out infinite}.s-idle .swirl{animation:spin 18s linear infinite}
.s-listen .orb-wrap{animation:float 3s ease-in-out infinite}.s-listen .core{animation:pulse 1.2s ease-in-out infinite}.s-listen .swirl{animation:spin 7s linear infinite}.s-listen .wave{animation:inward 1.4s ease-in infinite}.s-listen .w2{animation-delay:.7s}
.s-think .core{animation:pulse .9s ease-in-out infinite}.s-think .swirl{animation:spin 1.4s linear infinite}.s-think .orb-wrap{animation:float 2.4s ease-in-out infinite}
.s-speak .orb-wrap{animation:talk .32s ease-in-out infinite alternate}.s-speak .core{animation:talkcore .32s ease-in-out infinite alternate}.s-speak .swirl{animation:spin 3s linear infinite}.s-speak .wave{animation:outward 1.1s ease-out infinite}.s-speak .w2{animation-delay:.55s}.s-speak .aura{transform:scale(1.12)}
.s-off .orb{filter:saturate(.35) brightness(.7)}.s-off .spill{opacity:.25}.s-off .aura{opacity:.4}
.orb-wrap{position:relative;display:flex;align-items:center;justify-content:center}

@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes talk{from{transform:scale(.98)}to{transform:scale(1.05)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes pulse{0%,100%{transform:scale(.85);opacity:.75}50%{transform:scale(1.15);opacity:1}}
@keyframes talkcore{from{transform:scale(.7);opacity:.8}to{transform:scale(1.7);opacity:1}}
@keyframes outward{from{transform:scale(1);opacity:.85}to{transform:scale(1.6);opacity:0}}
@keyframes inward{from{transform:scale(1.5);opacity:0}to{transform:scale(1);opacity:.7}}
@keyframes twinkle{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes blink{0%,80%,100%{opacity:.25}40%{opacity:1}}

/* ---------- chat ---------- */
.chat{padding:14px 16px 8px;display:flex;flex-direction:column;gap:6px;font-size:15px;line-height:1.4}
.day{align-self:center;font-size:12px;font-weight:700;color:var(--muted);padding:6px 0 2px}
.row{display:flex;gap:10px;align-items:flex-start;max-width:88%;animation:rise .25s ease-out}
.row.me{align-self:flex-end;flex-direction:column;align-items:flex-end;max-width:76%}
.av{flex:0 0 38px;height:38px;border-radius:50%;background:radial-gradient(circle at 34% 28%,#FFE2C2 0%,#F2702A 40%,#B4400F 72%,#4E1F09 100%);box-shadow:0 0 0 1.5px rgba(255,200,150,.6),0 0 14px rgba(242,112,42,.6)}
.msg{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-bubble);padding:10px 14px;font-weight:600;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere}
.row.me .msg{background:var(--blue);border-color:transparent;color:#fff;font-weight:700;padding:10px 15px}
.msg.err{border-color:rgba(255,122,122,.5);background:rgba(255,122,122,.08);color:#FFD5D5;font-weight:600}
.meta{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin:4px 2px 0 4px}
.star{border:0;background:transparent;color:var(--muted);padding:6px;margin:-6px 0;border-radius:8px;display:flex;opacity:.7}
.star:hover{opacity:1;color:var(--orange-hi)}
.star.on{color:var(--orange);opacity:1}
.typing{display:inline-flex;gap:5px;padding:4px 2px}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--orange-hi);animation:blink 1.2s infinite}
.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}
.empty{margin:auto;text-align:center;color:var(--muted);padding:24px 20px;max-width:340px}
.empty strong{display:block;color:var(--text);font-size:20px;font-weight:800;margin-bottom:6px}
.loadmore{align-self:center;border:1px solid var(--line);background:transparent;border-radius:var(--r-pill);padding:6px 14px;font-size:13px;font-weight:700;color:var(--soft)}

/* ---------- play together row ---------- */
.play{padding:8px 0 0;display:flex;flex-direction:column;gap:10px;flex:none}
.play-head{display:flex;align-items:center;justify-content:space-between;padding:0 16px}
.play-head h2{margin:0;display:flex;align-items:center;gap:10px;font-weight:800;font-size:21px}
.linkbtn{display:flex;align-items:center;gap:4px;font-size:15px;font-weight:700;text-decoration:none;color:var(--soft);background:none;border:0;padding:6px 4px}
.games-row{display:flex;gap:10px;overflow-x:auto;padding:0 16px 4px;scrollbar-width:none;scroll-snap-type:x mandatory}
.games-row::-webkit-scrollbar{display:none}
.gcard{flex:0 0 132px;scroll-snap-align:start;padding:0;border-radius:var(--r-card);border:1px solid var(--line);background:var(--panel);color:var(--text);text-align:left;overflow:hidden;transition:transform .15s,border-color .15s}
.gcard:hover{border-color:#3A4F96}
.gcard:active{transform:scale(.97)}
.gcard.ready{border:2px solid var(--cyan);box-shadow:0 0 14px rgba(92,214,255,.35)}
.gcard .art{position:relative;height:82px;overflow:hidden}
.gcard .info{padding:8px 11px 11px}
.gcard .name{font-weight:800;font-size:16px}
.gcard .sub{font-size:13px;color:var(--muted);margin-top:1px}
.play.collapsed .games-row{display:none}

/* art */
.art-mc{background:linear-gradient(180deg,#7CC4FF 0%,#B8E2FF 100%)}
.art-mc .sun{position:absolute;left:12px;top:10px;width:22px;height:22px;background:#FFF4C2;box-shadow:0 0 12px #FFF4C2}
.art-mc .ground{position:absolute;left:0;right:0;bottom:0;height:40px;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(3,1fr)}
.art-mc .trunk{position:absolute;left:70px;bottom:40px;width:12px;height:26px;background:#6B4423}
.art-mc .leaves{position:absolute;left:60px;bottom:60px;width:32px;height:22px;background:#3F8F35}
.art-quiz{background:radial-gradient(circle at 50% 60%,#4A2FB0 0%,#1A1450 75%);display:flex;align-items:center;justify-content:center}
.art-quiz .q{width:50px;height:50px;border-radius:12px;border:3px solid #B79BFF;box-shadow:0 0 16px rgba(183,155,255,.8),inset 0 0 10px rgba(183,155,255,.5);transform:rotate(-8deg);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:32px;color:#E4D9FF}
.art-wyr{background:linear-gradient(135deg,#B4400F 0%,#B4400F 49%,#1D4FD0 51%,#1D4FD0 100%);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:26px;color:#fff;letter-spacing:1px;text-shadow:0 2px 8px rgba(0,0,0,.4)}
.art-chess{background:linear-gradient(180deg,#2B3A86 0%,#4B3B9E 100%);display:flex;align-items:flex-end;justify-content:center}
.art-chess .board{width:96px;height:52px;margin-bottom:-4px;transform:perspective(120px) rotateX(38deg);display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(4,1fr);box-shadow:0 0 18px rgba(160,140,255,.5)}
.art-chess .piece{position:absolute;left:50%;top:10px;margin-left:-12px}
.art-sea{background:linear-gradient(180deg,#0E3A66 0%,#0A5A82 100%)}
.art-sea .ship{position:absolute;left:30px;top:26px}
.art-sea .waves{position:absolute;left:0;bottom:6px}
.soon{position:absolute;right:8px;top:8px;background:rgba(8,16,41,.8);border:1px solid var(--line);border-radius:var(--r-pill);padding:2px 8px;font-size:11px;font-weight:800;color:var(--soft)}

/* ---------- composer ---------- */
.composer{flex:none;padding:10px 16px 0;display:flex;align-items:center;gap:12px}
.inputbox{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:12px;min-height:56px;padding:0 8px 0 18px;border-radius:18px;background:#0F1A42;border:1px solid #2A3A74}
.inputbox:focus-within{border-color:#4A62B8}
.inputbox textarea{flex:1 1 auto;min-width:0;background:transparent;border:0;outline:0;resize:none;font-size:17px;font-weight:600;line-height:1.35;padding:15px 0;max-height:120px;color:var(--text)}
.inputbox textarea::placeholder{color:#8794C2}
.send{flex:none;width:40px;height:40px;border-radius:12px;border:0;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center}
.send:disabled{background:#26366E;color:#8794C2;cursor:default}
.mic{flex:0 0 66px;height:66px;border-radius:50%;border:3px solid #6FD8FF;background:radial-gradient(circle at 45% 40%,#1E3A9A 0%,#0C1B58 80%);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 0 20px rgba(92,214,255,.65),inset 0 0 14px rgba(92,214,255,.35);touch-action:none;user-select:none;-webkit-user-select:none;transition:transform .12s}
.mic.live{transform:scale(1.08);border-color:var(--orange-hi);box-shadow:0 0 26px rgba(242,112,42,.8),inset 0 0 16px rgba(242,112,42,.5);background:radial-gradient(circle at 45% 40%,#C2501A 0%,#5A1E08 85%)}
.mic.handsfree{border-color:var(--green)}
.miclabel{margin:4px 14px 0 0;text-align:right;font-size:13px;font-weight:600;color:#8FC7FF;min-height:18px}

/* ---------- bottom tabs ---------- */
.tabs{flex:none;display:flex;justify-content:space-around;padding:10px 6px calc(14px + env(safe-area-inset-bottom));margin-top:10px;background:#0D1738;border-top:1px solid var(--line2);border-radius:22px 22px 0 0}
.tab{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:66px;padding:4px 0;color:var(--muted);text-decoration:none;font-size:13px;font-weight:700;border:0;background:none}
.tab[aria-current="page"]{color:var(--blue-hi);font-weight:800}

/* ---------- cards, lists, forms ---------- */
.content{padding:4px 16px 24px;display:flex;flex-direction:column;gap:16px;max-width:900px;width:100%}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);padding:20px}
.card h2{margin:0 0 4px;font-size:21px;font-weight:800}
.card .lead{margin:0 0 16px;color:var(--muted);font-size:15px;line-height:1.45}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label,.label{font-size:14px;font-weight:800;color:var(--soft)}
.hint{font-size:13px;color:var(--muted);line-height:1.4}
.input,select.input{width:100%;min-height:48px;padding:10px 14px;border-radius:12px;border:1px solid #2A3A74;background:#0B1536;color:var(--text);font-size:16px;font-weight:600}
.input:focus{outline:0;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(92,214,255,.18)}
.row-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.btn{min-height:46px;padding:0 20px;border-radius:12px;border:1px solid var(--line);background:#16224F;color:var(--text);font-weight:800;font-size:15px;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn:hover{background:#1B2A60}
.btn.primary{background:var(--blue);border-color:transparent;color:#fff}
.btn.primary:hover{background:#3D86FF}
.btn.orange{background:var(--orange);border-color:transparent;color:#1B0E05}
.btn.danger{color:#FFB3B3;border-color:rgba(255,122,122,.45)}
.btn:disabled{opacity:.55;cursor:default}
.seg{display:flex;background:#0B1536;border:1px solid #2A3A74;border-radius:12px;padding:4px;gap:4px}
.seg button{flex:1 1 0;min-height:42px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-weight:800;font-size:14px;padding:0 8px}
.seg button[aria-pressed="true"]{background:var(--blue);color:#fff}
.toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:6px 0}
.switch{position:relative;width:52px;height:30px;flex:none}
.switch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.switch span{position:absolute;inset:0;border-radius:99px;background:#26366E;transition:background .2s}
.switch span::after{content:"";position:absolute;left:3px;top:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .2s}
.switch input:checked+span{background:var(--blue)}
.switch input:checked+span::after{transform:translateX(22px)}
.switch input:focus-visible+span{outline:2px solid var(--cyan);outline-offset:3px}
.steps{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.steps li{display:flex;gap:10px;align-items:flex-start;font-size:14px}
.steps .ok{color:var(--green)}.steps .bad{color:var(--danger)}
.note{border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.45;background:rgba(92,214,255,.07);border:1px solid rgba(92,214,255,.25);color:var(--soft)}
.note.warn{background:rgba(255,200,87,.07);border-color:rgba(255,200,87,.3)}
.range{width:100%;accent-color:var(--orange)}
.setnav{display:flex;gap:8px;overflow-x:auto;padding:0 16px 6px;scrollbar-width:none;flex:none}
.setnav::-webkit-scrollbar{display:none}
.chip{flex:none;border:1px solid var(--line);background:var(--panel);color:var(--soft);border-radius:var(--r-pill);padding:8px 14px;font-weight:800;font-size:14px;text-decoration:none;white-space:nowrap}
.chip:hover{border-color:#3A4F96;color:var(--text)}

/* games page */
.ggrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ggrid .gcard{flex:none;width:100%}
.ggrid .gcard .art{height:110px}
.ggrid .gcard .info{padding:10px 13px 13px}

/* highlights */
.hl{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);padding:16px 18px;display:flex;gap:14px;align-items:flex-start}
.hl .txt{flex:1 1 auto;min-width:0;font-weight:700;line-height:1.45;white-space:pre-wrap}
.hl .when{font-size:13px;color:var(--muted);margin-top:6px;font-weight:600}

/* progress */
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);padding:16px}
.tile .n{font-size:34px;font-weight:900;line-height:1}
.tile .l{font-size:14px;font-weight:700;color:var(--muted);margin-top:6px}
.tile.wide{grid-column:span 2;display:flex;gap:14px;align-items:center}

/* auth */
.auth{flex:1 1 auto;overflow-y:auto;display:flex;flex-direction:column}
.auth .hero{height:300px}
.auth .stage{top:40px}
.auth-card{width:100%;max-width:420px;margin:0 auto;padding:8px 20px 32px}
.auth-card h1{margin:4px 0 6px;font-size:34px;font-weight:900}
.auth-card p{margin:0 0 18px;color:var(--muted);line-height:1.45}
.formerr{color:#FFB3B3;font-weight:700;font-size:14px;min-height:20px;margin:0 0 8px}

/* toast + dialog */
.toast{position:fixed;left:50%;top:calc(env(safe-area-inset-top) + 14px);transform:translateX(-50%);z-index:50;background:#1B2759;border:1px solid #3A4F96;color:var(--text);padding:12px 16px;border-radius:14px;font-weight:700;font-size:14px;box-shadow:0 12px 30px rgba(0,0,0,.4);max-width:min(92vw,460px);animation:rise .2s ease-out}
.toast.err{border-color:rgba(255,122,122,.6)}
dialog{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:18px;padding:22px;max-width:min(92vw,420px)}
dialog::backdrop{background:rgba(3,7,20,.65)}
dialog h2{margin:0 0 8px;font-size:21px;font-weight:800}
dialog p{margin:0 0 18px;color:var(--muted);line-height:1.45}

/* ---------- Minecraft ---------- */
:root{--grass:#6BC04B;--grass-dim:rgba(107,192,75,.16)}
.dot.game{background:var(--grass);box-shadow:0 0 8px var(--grass)}
.mctag{display:inline-flex;align-items:center;gap:4px;font-weight:700;color:#9FD58A;margin-right:2px}
.mctag svg{width:13px;height:13px}
.gcard.live{border:2px solid var(--grass);box-shadow:0 0 16px rgba(107,192,75,.4)}
.soon.livebadge{background:#2E6B1E;border-color:var(--grass);color:#E6FFD9}

.gamestrip{flex:none;display:flex;align-items:stretch;gap:8px;margin:10px 16px 0;padding:6px;border-radius:16px;background:#0F1A42;border:1px solid #2A3A74;animation:rise .25s ease-out}
.gamestrip.in_world{border-color:rgba(107,192,75,.55);background:linear-gradient(180deg,rgba(107,192,75,.10),rgba(107,192,75,.03)),#0F1A42}
.gamestrip.error{border-color:rgba(255,200,87,.5)}
.gs-main{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:12px;padding:6px 8px;border:0;background:transparent;text-align:left;border-radius:12px}
.gs-main:hover{background:rgba(255,255,255,.04)}
.gs-icon{flex:none;width:38px;height:38px;border-radius:10px;background:#16224F;display:flex;align-items:center;justify-content:center}
.gs-icon svg{width:22px;height:22px}
.gs-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}
.gs-title{font-weight:800;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gs-sub{font-size:13px;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gamestrip.error .gs-sub{white-space:normal;color:#FFE2A8}
.gs-stats{flex:none;display:flex;gap:10px;font-weight:800;font-size:14px}
.gs-stats span{display:inline-flex;align-items:center;gap:4px}
.gs-btn{flex:none;width:48px;border-radius:12px;border:1px solid #2A3A74;background:#16224F;color:var(--text);display:flex;align-items:center;justify-content:center}
.gs-btn:hover{background:#1B2A60}

.actpill{align-self:center;display:inline-flex;align-items:center;gap:8px;margin:2px 0;padding:6px 12px;border-radius:999px;background:var(--grass-dim);border:1px solid rgba(107,192,75,.35);color:#CFF2C2;font-size:13px;font-weight:800;animation:rise .25s ease-out;max-width:90%}
.actpill svg{width:14px;height:14px;flex:none}
.actpill.bad{background:rgba(255,122,122,.08);border-color:rgba(255,122,122,.4);color:#FFD0D0}

/* sheet (bottom sheet on phones, centred card on desktop) */
dialog.sheet{position:fixed;inset:auto 0 0 0;margin:0 auto;width:100%;max-width:560px;max-height:88vh;overflow-y:auto;border-radius:22px 22px 0 0;padding:0;border:1px solid var(--line);border-bottom:0}
dialog.sheet[open]{animation:sheetUp .22s ease-out}
@keyframes sheetUp{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
.sheet-inner{padding:22px 20px calc(22px + env(safe-area-inset-bottom))}
.sheet-inner::before{content:"";display:block;width:44px;height:5px;border-radius:9px;background:#33437F;margin:-8px auto 16px}
.sheet-inner h2{margin:0 0 6px;font-size:22px;font-weight:900}
.sheet-inner .lead{margin:0 0 16px;color:var(--muted);line-height:1.45}
.sheet-head{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.sheet-head svg{width:40px;height:40px;flex:none}
.statrow{display:flex;gap:16px;margin:0 0 14px;font-weight:800}
.statrow span{display:inline-flex;align-items:center;gap:6px}
.quick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:14px}
.qbtn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;border-radius:14px;border:1px solid var(--line);background:#16224F;color:var(--text);font-weight:800;font-size:14px}
.qbtn:hover{background:#1B2A60;border-color:#3A4F96}
.qbtn svg{width:22px;height:22px;color:var(--cyan)}
.worldlist{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.worldbtn{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:#111C44;color:var(--text)}
.worldbtn:hover{border-color:var(--grass)}
.worldbtn:disabled{opacity:.7}
.wicon{flex:none;width:40px;height:40px;border-radius:10px;background:#16224F;display:flex;align-items:center;justify-content:center}
.wicon svg{width:22px;height:22px}
.wtext{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}
.wname{font-weight:800;font-size:16px}
.waddr{font-size:13px;color:var(--muted);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wgo{flex:none;padding:8px 14px;border-radius:999px;background:#2E6B1E;color:#E6FFD9;font-weight:800;font-size:14px}
.setup-steps{list-style:none;counter-reset:s;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:12px}
.setup-steps li{counter-increment:s;display:grid;grid-template-columns:30px 1fr;column-gap:12px}
.setup-steps li::before{content:counter(s);grid-row:span 2;width:30px;height:30px;border-radius:50%;background:#16224F;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:14px;color:var(--cyan)}
.setup-steps strong{font-weight:800}
.setup-steps span{color:var(--muted);font-size:14px;line-height:1.45}
.field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}

/* settings: minecraft + checklist */
.btn{white-space:nowrap}
.mcnow{display:flex;align-items:center;gap:10px;margin:-6px 0 18px;padding:10px 12px;border-radius:12px;background:#0B1536;border:1px solid #22305E;font-weight:700;font-size:14px;color:var(--soft)}
.sec-title{display:flex;align-items:center;gap:10px}
.sec-title svg{width:24px;height:24px}
.sec-title h2{margin:0}
.subhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0 10px;padding-top:16px;border-top:1px solid var(--line)}
.subhead h3{margin:0;font-size:16px;font-weight:800}
.btn.sm{min-height:38px;padding:0 14px;font-size:14px;border-radius:10px}
.iconbtn.sm{width:40px;height:40px}
.worldcards{display:flex;flex-direction:column;gap:8px}
.worldcard{display:flex;align-items:center;gap:12px;padding:10px 8px 10px 12px;border-radius:14px;background:#0B1536;border:1px solid #22305E}
.pill-live{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:#2E6B1E;color:#E6FFD9;font-size:11px;font-weight:800;vertical-align:2px}
details.howto,details.adv{margin-top:14px;border-radius:12px;background:#0B1536;border:1px solid #22305E;padding:0 14px}
details.howto summary,details.adv summary{cursor:pointer;padding:12px 0;font-weight:800;font-size:15px;color:var(--soft);list-style:none;display:flex;align-items:center;justify-content:space-between}
details.howto summary::after,details.adv summary::after{content:"+";font-size:20px;color:var(--muted)}
details[open].howto summary::after,details[open].adv summary::after{content:"\2212"}
details.howto summary::-webkit-details-marker,details.adv summary::-webkit-details-marker{display:none}
details[open].howto,details[open].adv{padding-bottom:14px}
.codebox{display:block;padding:10px 12px;border-radius:10px;background:#060C22;border:1px solid #22305E;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;color:#BFD2FF;overflow-wrap:anywhere}
.tokenrow{display:flex;gap:8px;align-items:center}
.tokenrow .codebox{flex:1 1 auto;min-width:0}
.linkbtn.inline{display:inline;padding:0;color:var(--blue-hi);font-size:inherit}
.codecard{padding:16px;border-radius:14px;background:#0B1536;border:1px solid #22305E}
.bigcode{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:32px;font-weight:800;letter-spacing:4px;text-align:center;padding:14px;margin:0 0 12px;border-radius:12px;background:#060C22;border:1px dashed #3A4F96;color:#fff}
.checklist .ck-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.checklist h2{margin:0}
.ck-count{font-size:14px;font-weight:800;color:var(--muted)}
.ck-bar{height:6px;border-radius:9px;background:#16224F;margin:12px 0 10px;overflow:hidden}
.ck-bar span{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,var(--orange),var(--orange-hi))}
.ck-list{list-style:none;margin:0;padding:0}
.ck-list a{display:flex;align-items:center;gap:12px;padding:10px 4px;color:var(--text);text-decoration:none;font-weight:700;border-radius:10px}
.ck-list a:hover{background:rgba(255,255,255,.03)}
.ck-list a svg:last-child{margin-left:auto;color:var(--muted)}
.ck-list li.done a{color:var(--muted);text-decoration:line-through;text-decoration-color:rgba(163,176,218,.5)}
.ck-dot{flex:none;width:24px;height:24px;border-radius:50%;border:2px solid #3A4F96;display:flex;align-items:center;justify-content:center}
.ck-list li.done .ck-dot{background:var(--grass);border-color:var(--grass);color:#0B1A06}
.ck-list li.done .ck-dot svg{width:14px;height:14px}

.home{display:flex;flex-direction:column;height:100%;min-height:0}
.home .left{flex:none;display:flex;flex-direction:column}
.home .right{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}

/* ---------- desktop ---------- */
@media (min-width:900px){
  .side{display:flex;flex-direction:column;gap:6px;width:236px;flex:none;padding:22px 14px;background:#0A1434;border-right:1px solid var(--line2)}
  .side .logo{display:flex;align-items:center;gap:12px;padding:4px 10px 22px;font-weight:900;font-size:24px}
  .side .logo .av{flex-basis:34px;height:34px}
  .navlink{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:14px;color:var(--muted);text-decoration:none;font-weight:800;font-size:16px}
  .navlink:hover{background:rgba(255,255,255,.04);color:var(--text)}
  .navlink[aria-current="page"]{background:#15204D;color:var(--text)}
  .navlink[aria-current="page"] svg{color:var(--blue-hi)}
  .side .grow{flex:1}
  .tabs{display:none}
  .hero{height:auto}
  .home{display:grid;grid-template-columns:minmax(360px,1fr) minmax(380px,1.15fr);height:100%;min-height:0}
  .home .left{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line2)}
  .home .left .hero{flex:1 1 auto;min-height:340px}
  .home .left .stage{top:50%;margin-top:-110px;transform:scale(1.35)}
  .home .left .bubble{top:90px;right:40px}
  .home .left .spill{top:50%;margin-top:-190px;width:520px;height:380px;margin-left:-260px}
  .home .left .deskglow{width:380px;margin-left:-190px}
  .chat-head{border-bottom:1px solid var(--line2);padding-bottom:14px!important}
  .home .right{display:flex;flex-direction:column;min-height:0;padding-bottom:18px}
  .home .right .chat{padding:22px 24px 8px}
  .home .play{padding:16px 0 20px;background:#0A1434;border-top:1px solid var(--line2)}
  .home .composer{padding:12px 24px 0}
  .chat-head{display:flex;align-items:center;justify-content:space-between;padding:18px 24px 0}
  .content{padding:8px 32px 40px}
  .page-head{padding:28px 32px 12px}
  .setnav{padding:0 32px 8px}
  .ggrid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tiles{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tile.wide{grid-column:span 3}
  .toast{top:auto;bottom:40px}
  dialog.sheet{inset:0;margin:auto;border-radius:22px;border-bottom:1px solid var(--line);max-height:80vh}
  .sheet-inner{padding:26px 26px 24px}
  .sheet-inner::before{display:none}
  .home .left{position:relative}
  .home .left .gamestrip{position:absolute;left:24px;right:24px;bottom:24px;margin:0;z-index:4;backdrop-filter:blur(8px);background:rgba(15,26,66,.82)}
  .home .left .gamestrip.in_world{background:linear-gradient(180deg,rgba(107,192,75,.14),rgba(107,192,75,.05)),rgba(15,26,66,.85)}
  .auth{flex-direction:row}
  .auth .hero{flex:1 1 55%;height:auto}
  .auth .stage{top:50%;margin-top:-110px;transform:scale(1.4)}
  .auth-card{align-self:center;flex:1 1 45%;padding:40px}
}
@media (max-width:420px){ .field-row{grid-template-columns:1fr} }
@media (max-width:899px){
  .chat-head{display:none}
  .home .left .topbar{padding-top:max(14px,env(safe-area-inset-top))}
}
@media (max-height:700px) and (max-width:899px){
  .hero{height:200px}.stage{transform:scale(.82);top:4px}.bubble{top:58px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* ---------- voice: the orb follows Ace's real voice ---------- */
.hero.voiced.s-speak .orb-wrap{animation:none}
.hero.voiced.s-speak .core{animation:none;transform:scale(calc(.75 + var(--lvl,0) * 1.1));opacity:calc(.75 + var(--lvl,0) * .25)}
.hero.voiced.s-speak .aura{transform:scale(calc(1 + var(--lvl,0) * .38));transition:none}
.hero.voiced.s-speak .wave{animation-duration:.9s}
.sec-title svg{color:var(--orange-hi)}
.vtag{font-style:italic;font-weight:700;color:var(--muted);font-size:.9em}
.vtag::before{content:'*'}.vtag::after{content:'*'}
.emolist{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.emorow{display:flex;align-items:center;gap:6px}
.emoname{flex:1 1 0;min-width:0;display:flex;flex-direction:column}
.emorow .labchip{padding:6px 10px;white-space:nowrap}
.emorow .switch{flex:none;margin-left:4px}
.emoname .hint{margin:0}

/* ---------- Talk mode ---------- */
.talkbar{flex:none;display:flex;align-items:center;gap:10px;margin:8px 16px 0;padding:8px 8px 8px 14px;border-radius:14px;background:#0F1A42;border:1px solid #2A3A74;animation:rise .2s ease-out}
.talkbar[hidden]{display:none}
.talkbar .tb-dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--cyan);box-shadow:0 0 10px var(--cyan)}
.talkbar.listen .tb-dot{animation:blink 1s infinite}
.talkbar.think .tb-dot{background:#B9A6FF;box-shadow:0 0 10px #B9A6FF;animation:blink .6s infinite}
.talkbar.speak .tb-dot{background:var(--orange);box-shadow:0 0 10px var(--orange)}
.talkbar.paused .tb-dot{background:var(--muted);box-shadow:none}
.talkbar .tb-text{flex:1 1 auto;min-width:0;font-weight:800;font-size:15px}
.talkbar .btn{min-height:36px;padding:0 14px}
.mic.talking{border-color:var(--green);box-shadow:0 0 24px rgba(74,222,128,.7),inset 0 0 14px rgba(74,222,128,.35)}

/* ---------- pills with Undo, confirm cards ---------- */
.actpill.app{background:rgba(46,123,255,.12);border-color:rgba(79,168,255,.4);color:#D6E6FF}
.actpill .undo{margin-left:4px;border:0;background:rgba(255,255,255,.12);color:#fff;font-weight:800;font-size:12px;border-radius:999px;padding:3px 10px}
.actpill .undo:hover{background:rgba(255,255,255,.22)}
.actpill .undone{margin-left:4px;font-size:12px;color:var(--muted)}
.confirmcard{align-self:center;max-width:92%;padding:14px 16px;border-radius:16px;background:var(--panel);border:1px solid rgba(255,122,122,.45);animation:rise .25s ease-out}
.confirmcard .cc-title{font-weight:800;margin-bottom:10px}
.confirmcard .cc-btns{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- voice settings ---------- */
.inline-row{display:flex;gap:10px;align-items:center}
.inline-row .input{flex:1 1 auto;min-width:0}
.inline-row .btn{flex:none}
.voice-own,.voice-device{margin-top:14px}
.voice-own .note{margin-bottom:14px}
.note.ok{display:flex;gap:10px;align-items:flex-start;background:rgba(74,222,128,.07);border-color:rgba(74,222,128,.35)}
.note.ok svg{flex:none;color:var(--green);margin-top:1px}
.field label .val{float:right;color:var(--orange-hi)}
.range-labels{display:flex;justify-content:space-between;font-size:12px;font-weight:700;color:var(--muted);margin-top:2px}
.labchips{display:flex;flex-wrap:wrap;gap:8px}
.labchip{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid rgba(242,112,42,.5);background:rgba(242,112,42,.1);color:#FFD9BF;font-weight:800;font-size:14px}
.labchip:hover{background:rgba(242,112,42,.2)}
.recbox{display:flex;gap:10px;flex-wrap:wrap}
.linkbtn.inline{display:inline;padding:0;font-size:inherit;color:var(--blue-hi);text-decoration:underline}

/* ---------- usage ---------- */
.usage-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.utile{background:#0B1536;border:1px solid var(--line2);border-radius:14px;padding:14px}
.utile .n{font-size:24px;font-weight:900}
.utile .l{font-size:14px;font-weight:800;color:var(--soft)}
.utile .s{font-size:12px;color:var(--muted);margin-top:2px}
.capbar{height:8px;border-radius:999px;background:#0B1536;border:1px solid var(--line2);overflow:hidden;margin-top:14px}
.capbar span{display:block;height:100%;background:linear-gradient(90deg,var(--orange),var(--orange-hi))}
@media (prefers-reduced-motion: reduce){.hero.voiced.s-speak .core,.hero.voiced.s-speak .aura{transform:none}}

/* ---------- chess ---------- */
.mctag.chess{color:#E9E4FF}
.mctag.chess svg{color:#B9A6FF}
.chessicon{display:flex;align-items:center;justify-content:center;color:#B9A6FF}
.chessicon svg{width:20px;height:20px}
.chessicon.big{flex:none;width:44px;height:44px;border-radius:12px;background:rgba(185,166,255,.12);border:1px solid rgba(185,166,255,.35)}
.chessicon.big svg{width:26px;height:26px}
.gamestrip.chess.in_world{border-color:rgba(185,166,255,.5);background:linear-gradient(180deg,rgba(185,166,255,.10),rgba(185,166,255,.03)),#0F1A42}
a.gs-btn{display:flex;align-items:center;justify-content:center;color:var(--text)}
.dot.warn{background:#FFC857;box-shadow:0 0 8px #FFC857}

/* v1.4: speaker button, mute and volume */
.topactions{display:flex;align-items:center;gap:2px}
.volwrap{position:relative}
#volBtn.muted{color:#FF8A7A}
.volpop{position:absolute;right:0;top:52px;z-index:20;width:244px;padding:14px;border-radius:18px;background:#121B3D;border:1px solid rgba(255,255,255,.1);box-shadow:0 14px 40px rgba(0,0,0,.45)}
.mutebtn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:46px;border-radius:14px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:#EAF0FF;font:inherit;font-weight:600;font-size:15px;cursor:pointer}
.mutebtn:hover{background:rgba(255,255,255,.09)}
.mutebtn.on{background:var(--orange);border-color:transparent;color:#1A0D02}
.mutebtn svg{width:20px;height:20px}
.volrow{display:flex;align-items:center;gap:10px;margin-top:14px}
.volrow .range{flex:1;margin:0}
.volval{min-width:38px;text-align:right;font-size:13px;color:#A3B0DA;font-variant-numeric:tabular-nums}
.volhint{margin:10px 0 0;font-size:12.5px;line-height:1.4;color:#A3B0DA}
.volpop.off .volrow .range{opacity:.45}
.beatdots{display:flex;margin-top:4px}

.art-sf{background:#07080c}.art-sf img{display:block;width:100%;height:100%;object-fit:cover;image-rendering:pixelated}

/* ---- Shadowbane Admin (#/admin, admin.js) ---- */
.adm-top{margin-bottom:6px}
.adm-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}
.adm-tiles .n{font-size:28px}
.adm-sec{margin-top:22px}
.adm-sec h2{font-size:18px;font-weight:800;margin:0 0 10px}
.adm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.adm-card{padding:16px;display:flex;flex-direction:column;gap:8px;min-width:0}
.adm-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.adm-row .input{flex:1 1 200px;min-width:0}
.adm-small{width:auto!important;min-height:40px!important;padding:6px 10px!important;font-size:14px!important;flex:0 0 auto!important}
.adm-val{flex:1 1 auto;font-weight:800}
.adm-ph{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.adm-name{font-size:18px;font-weight:900}
.adm-badge{display:inline-block;font-size:11px;font-weight:800;border:1px solid var(--line);border-radius:var(--r-pill);padding:1px 8px;color:var(--cyan);vertical-align:middle}
.adm-hp{height:8px;border-radius:6px;background:#0B1536;overflow:hidden}
.adm-hp span{display:block;height:100%;background:linear-gradient(90deg,#3ED37A,#9BE15D)}
.adm-btns{display:flex;flex-wrap:wrap;gap:6px}
.adm-btns .btn{min-height:38px;padding:0 12px;font-size:14px}
.adm-note{min-height:40px!important;font-size:14px!important}
.adm-status,.adm-out{white-space:pre-wrap;font-size:13px;line-height:1.4;color:var(--soft);background:#0B1536;border:1px solid var(--line2);border-radius:10px;padding:10px;max-height:220px;overflow:auto;overflow-wrap:anywhere}
.adm-cheats{margin-top:8px}
.adm-cheats summary{cursor:pointer;font-weight:800;color:var(--soft);font-size:14px}
.adm-cheat{display:flex;gap:10px;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line2);background:transparent;padding:8px 2px;color:var(--text);font-size:14px}
.adm-cheat code{flex:0 0 150px;color:var(--cyan);font-weight:700}
.adm-cheat span{color:var(--muted)}
.adm-mobs{display:flex;flex-direction:column;gap:6px;margin-top:10px;max-height:360px;overflow:auto}
.adm-mob{display:flex;justify-content:space-between;align-items:center;gap:8px;border-bottom:1px solid var(--line2);padding:4px 0}
.adm-mob .btn{min-height:36px;padding:0 12px;font-size:14px}
.adm-log{max-height:420px;overflow:auto;gap:10px}
.adm-logl.bad b{color:#FFB3B3}
@media (max-width:640px){.adm-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.adm-cheat code{flex-basis:120px}}

.whochip{font:inherit;font-size:.82em;font-weight:700;padding:6px 12px;border-radius:999px;border:1px solid var(--line2);background:transparent;color:var(--muted);cursor:pointer;white-space:nowrap}
.whochip.guest{color:var(--text);border-color:var(--orange);background:color-mix(in srgb,var(--orange) 18%,transparent)}
.brand .status{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.whochip{flex:none;max-width:42vw;overflow:hidden;text-overflow:ellipsis;margin-right:4px}
@media (max-width:480px){.brand .status #status{display:none}.whochip{padding:5px 10px}}
.qrbox{background:#fff;padding:10px;border-radius:12px;max-width:260px;margin:0 auto 12px}
.qrbox svg{display:block;width:100%;height:auto}
