/* Realm Center — graphite grid, monospace labels, one lavender accent (the dotted shield's trace). */
:root{
 --bg:#141316;--grid:rgba(255,255,255,.035);--panel:#1b1a1e;--panel2:#222126;--line:rgba(255,255,255,.08);--line2:rgba(255,255,255,.14);
 --text:#ecebef;--muted:#9a98a3;--dim:#64626c;
 --accent:#c7a6f2;--accent-bg:rgba(199,166,242,.13);--accent-ink:#1a1420;
 --ok:#86d9a3;--ok-bg:rgba(134,217,163,.12);--warn:#e8c26a;--warn-bg:rgba(232,194,106,.12);--bad:#f08a8a;--bad-bg:rgba(240,138,138,.12);
 --mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
 --sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
 --r:4px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background-color:var(--bg);color:var(--text);font:14px/1.45 var(--sans);
 background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
 background-size:48px 48px;background-attachment:fixed;min-height:100vh}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--accent)}
.hidden{display:none!important}
.mono{font-family:var(--mono)}

/* ---------------------------------------------------------------- labels */
.label{font:600 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:8px}
.label .sq{width:7px;height:7px;background:var(--accent);border-radius:1px;flex:none}
.label .num{color:var(--text)}
.label .aside{margin-left:auto;letter-spacing:.06em;color:var(--dim);font-weight:500}
.legend{display:grid;gap:7px;font:600 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.legend span{display:flex;align-items:center;gap:8px}
.legend i{width:7px;height:7px;border-radius:1px;background:var(--dim);flex:none}
.legend b{color:var(--text);font-weight:600}
.legend .ok i{background:var(--ok)}.legend .ai i{background:var(--accent)}.legend .warn i{background:var(--warn)}.legend .bad i{background:var(--bad)}

/* ---------------------------------------------------------------- shell */
.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}
.rail{position:sticky;top:0;height:100vh;border-right:1px solid var(--line);background:rgba(20,19,22,.86);backdrop-filter:blur(6px);padding:20px 14px;display:flex;flex-direction:column;gap:22px}
.brand{display:flex;align-items:center;gap:10px;font:700 13px/1.1 var(--mono);letter-spacing:.16em}
.brand canvas{width:30px;height:36px}
.brand small{display:block;color:var(--dim);font-weight:500;letter-spacing:.1em;font-size:10px;margin-top:3px}
.nav{display:grid;gap:2px}
.nav button{display:flex;align-items:center;gap:10px;width:100%;background:none;border:1px solid transparent;border-radius:var(--r);padding:9px 10px;color:var(--muted);text-align:left;font:600 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.nav button:hover{color:var(--text);background:rgba(255,255,255,.03)}
.nav button.on{color:var(--text);background:var(--accent-bg);border-color:rgba(199,166,242,.25)}
.nav button.on .ico{color:var(--accent)}
.nav .ico{width:16px;text-align:center;font-size:13px}
.nav .count{margin-left:auto;font-size:11px;color:var(--dim)}
.nav .count.bad{color:var(--bad)}
.rail-foot{margin-top:auto;display:grid;gap:12px}
.live{display:flex;align-items:center;gap:8px;font:600 11px/1 var(--mono);letter-spacing:.1em;color:var(--muted)}
.live i{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 rgba(134,217,163,.5);animation:pulse 2s infinite}
.live.off i{background:var(--bad);animation:none}
@keyframes pulse{70%{box-shadow:0 0 0 7px rgba(134,217,163,0)}100%{box-shadow:0 0 0 0 rgba(134,217,163,0)}}
.main{min-width:0;padding:28px 32px 60px;max-width:1240px;width:100%}
.top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}
.top h1{margin:8px 0 0;font:600 24px/1.15 var(--sans);letter-spacing:-.01em}
.top p{margin:6px 0 0;color:var(--muted);max-width:620px}
.top-mobile{display:none}
.tabbar{display:none}

/* ---------------------------------------------------------------- blocks */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r)}
.pad{padding:16px}
.section{margin-top:26px}
.section>.label{margin-bottom:12px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;align-items:start}
.empty{color:var(--dim);font:500 12px/1.5 var(--mono);letter-spacing:.04em;padding:18px 16px;text-align:center}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:0 14px;border-radius:var(--r);border:1px solid var(--line2);background:var(--panel2);color:var(--text);font:600 12px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;text-decoration:none}
.btn:hover{border-color:rgba(255,255,255,.28)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.primary:hover{filter:brightness(1.08)}
.btn:disabled{opacity:.5;cursor:default}
.btn.small{min-height:30px;padding:0 10px;font-size:11px}
.field{width:100%;background:#121114;border:1px solid var(--line2);border-radius:var(--r);padding:10px 12px;outline:none}
.field:focus{border-color:var(--accent)}
textarea.field{min-height:84px;resize:vertical}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line2);border-radius:999px;padding:6px 11px;background:none;color:var(--muted);font:600 11px/1 var(--mono);letter-spacing:.05em;white-space:nowrap}
.chip.on{background:var(--accent-bg);border-color:rgba(199,166,242,.4);color:var(--accent)}
span.chip{cursor:default}
.tag{display:inline-flex;align-items:center;gap:5px;border-radius:3px;padding:3px 6px;font:700 10px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;background:rgba(255,255,255,.06);color:var(--muted)}
.tag.ai{background:var(--accent-bg);color:var(--accent)}
.tag.ok{background:var(--ok-bg);color:var(--ok)}
.tag.warn{background:var(--warn-bg);color:var(--warn)}
.tag.bad{background:var(--bad-bg);color:var(--bad)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--dim);flex:none}
.dot.town{background:#8e8c96}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}.dot.ai{background:var(--accent)}
.bar{height:3px;background:rgba(255,255,255,.07);border-radius:2px;overflow:hidden}
.bar b{display:block;height:100%;background:var(--ok)}
.bar.mana b{background:#8aa8f0}
.bar.low b{background:var(--bad)}
.bar.mid b{background:var(--warn)}
.bar.acc b{background:var(--accent)}

/* ---------------------------------------------------------------- hero (the shield) */
.hero{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:center;padding:22px 26px}
.hero canvas{width:150px;height:180px;display:block}
.hero h2{margin:12px 0 4px;font:600 34px/1 var(--mono);letter-spacing:-.02em}
.hero h2 small{font-size:16px;color:var(--dim);font-weight:500}
.hero .sub{color:var(--muted);margin:0 0 16px}
.hero .legend{grid-template-columns:repeat(2,max-content);column-gap:28px}

/* ---------------------------------------------------------------- squads and bots */
.squads{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px;align-items:start}
.squad-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}
.squad-head .aside{margin-left:auto;font:500 11px/1 var(--mono);color:var(--dim);letter-spacing:.06em}
.bot{display:grid;grid-template-columns:auto 1fr auto;gap:2px 12px;align-items:start;width:100%;padding:12px 14px;background:none;border:0;border-bottom:1px solid var(--line);text-align:left;color:inherit}
.bot:last-child{border-bottom:0}
.bot:hover{background:rgba(255,255,255,.025)}
.bot>.dot{margin-top:6px}
.bot-name{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-weight:600}
.bot-name .lead{color:var(--accent);font-size:12px}
.bot-meta{color:var(--dim);font:500 11px/1.5 var(--mono);letter-spacing:.03em}
.bot-now{color:var(--muted);font-size:13px;margin-top:2px}
.bot-now b{color:var(--text);font-weight:600}
.bot-said{grid-column:2/4;color:var(--muted);font-size:12.5px;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:2px solid var(--line2);padding-left:8px;margin-top:6px}
.bot-said.ai{border-left-color:var(--accent)}
.bot-right{text-align:right;font:600 12px/1.5 var(--mono);color:var(--muted);white-space:nowrap}
.bot-right .lv{color:var(--text);font-size:13px}
.bot .bars{grid-column:2/4;display:grid;gap:3px;margin-top:7px}
.bot.off{opacity:.55}

/* ---------------------------------------------------------------- feed */
.feed{display:grid}
.item{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;padding:12px 14px;border-bottom:1px solid var(--line)}
.item:last-child{border-bottom:0}
.item .kind{width:22px;height:22px;border-radius:3px;display:grid;place-items:center;font:700 10px/1 var(--mono);background:rgba(255,255,255,.05);color:var(--muted);margin-top:1px}
.item .kind.ai{background:var(--accent-bg);color:var(--accent)}
.item .kind.chat{background:var(--ok-bg);color:var(--ok)}
.item .kind.bad{background:var(--bad-bg);color:var(--bad)}
.item .kind.op{background:var(--warn-bg);color:var(--warn)}
.item-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.item-head b{font-weight:600}
.item-head button.who{background:none;border:0;padding:0;font-weight:600;color:var(--text)}
.item-head button.who:hover{color:var(--accent)}
.item-head time,.item-head small{color:var(--dim);font:500 11px/1 var(--mono);letter-spacing:.03em}
.item-head time{margin-left:auto}
.item p{margin:2px 0 0;color:var(--muted);overflow-wrap:anywhere}
.item.ai p{color:var(--text)}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar select.field{width:auto;min-width:170px;padding:7px 10px}

/* ---------------------------------------------------------------- bot page */
.back{display:inline-flex;align-items:center;gap:8px;background:none;border:0;color:var(--muted);padding:0;font:600 11px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:16px}
.back:hover{color:var(--text)}
.profile-head{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.profile-head h1{margin:10px 0 4px;font:600 26px/1.1 var(--sans)}
.profile-head p{margin:0;color:var(--muted)}
.vitals{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin-top:18px}
.vital{background:var(--panel);padding:12px 14px;min-width:0}
.vital span{display:block;font:600 10px/1 var(--mono);letter-spacing:.12em;color:var(--dim);text-transform:uppercase}
.vital strong{display:block;font:600 18px/1.2 var(--mono);margin:8px 0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vital small{color:var(--muted);font-size:12px}
.vital.wide{grid-column:span 2}
.vital.wide strong{font:600 15px/1.3 var(--sans);white-space:normal}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;font-size:13px}
.kv span{color:var(--muted)}
.kv b{text-align:right;font-weight:600;overflow-wrap:anywhere}
.rows{display:grid}
.row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:13px}
.row:last-child{border-bottom:0}
.row span{color:var(--muted);min-width:0}
.row span small{color:var(--dim)}
.row b{font-weight:600;text-align:right;white-space:nowrap}
.row b.bad{color:var(--bad)}
.sub-label{margin:18px 0 8px}
.quote{margin:12px 0 0;padding:10px 12px;border-left:2px solid var(--accent);background:var(--accent-bg);border-radius:0 var(--r) var(--r) 0;font-size:13.5px}
.switch{display:flex;border:1px solid var(--line2);border-radius:var(--r);overflow:hidden;margin-top:14px}
.switch button{flex:1;min-height:38px;background:none;border:0;color:var(--muted);font:600 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.switch button.on{background:var(--accent);color:var(--accent-ink)}
.switch button.on.rules{background:var(--panel2);color:var(--text)}
.trait{display:grid;grid-template-columns:100px 1fr;align-items:center;gap:10px;font-size:13px;color:var(--muted);margin-top:9px}
.note{color:var(--dim);font-size:12px;margin-top:10px}

/* ---------------------------------------------------------------- bugs */
.bug{display:grid;grid-template-columns:3px 1fr;border-bottom:1px solid var(--line)}
.bug:last-child{border-bottom:0}
.bug .sev{background:var(--dim)}
.bug .sev.high,.bug .sev.critical{background:var(--bad)}.bug .sev.medium{background:var(--warn)}
.bug-body{padding:12px 14px;min-width:0}
.bug-body h3{margin:0;font-size:14px;font-weight:600}
.bug-body p{margin:6px 0 0;color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.bug-foot{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px;color:var(--dim);font:500 11px/1 var(--mono)}
.bug-foot select{margin-left:auto;padding:6px 8px;width:auto}

/* ---------------------------------------------------------------- coverage */
.cov{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1px;background:var(--line);border-radius:var(--r);overflow:hidden}
.cov div{background:var(--panel);padding:12px}
.cov strong{display:flex;justify-content:space-between;font-size:13px;margin-bottom:8px}
.cov strong span{color:var(--dim);font:500 11px/1.4 var(--mono)}
.cov small{display:block;color:var(--dim);font-size:11px;margin-top:6px}

/* ---------------------------------------------------------------- login */
.login{min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.login-card{width:min(380px,100%);padding:28px 24px;display:grid;gap:16px;justify-items:center;text-align:center}
.login-card canvas{width:150px;height:180px}
.login-card form{display:grid;gap:10px;width:100%}
.login-card .err{color:var(--bad);font-size:13px;min-height:18px}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--line2);border-radius:var(--r);padding:11px 16px;font-size:13px;z-index:50;max-width:calc(100% - 32px)}

/* ---------------------------------------------------------------- phone */
@media (max-width:820px){
 .shell{display:block}
 .rail{display:none}
 .main{padding:14px 16px calc(92px + env(safe-area-inset-bottom))}
 .top-mobile{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
 .top-mobile .brand canvas{width:24px;height:29px}
 .top{margin-bottom:16px}
 .top h1{font-size:20px}
 .top .desk{display:none}
 .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:20;background:rgba(20,19,22,.96);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
 .tabbar button{background:none;border:0;color:var(--dim);display:grid;justify-items:center;gap:5px;padding:6px 0;font:600 9.5px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;position:relative}
 .tabbar button .ico{font-size:16px;line-height:1}
 .tabbar button.on{color:var(--accent)}
 .tabbar .badge{position:absolute;top:1px;left:calc(50% + 6px);background:var(--bad);color:#1a1014;border-radius:8px;padding:1px 5px;font-size:9px}
 .hero{grid-template-columns:96px 1fr;gap:16px;padding:16px}
 .hero canvas{width:96px;height:115px}
 .hero h2{font-size:26px;margin-top:8px}
 .hero .sub{font-size:12.5px;margin-bottom:10px}
 .hero .legend{grid-template-columns:1fr 1fr;column-gap:10px;font-size:10px}
 .squads,.grid2{grid-template-columns:1fr}
 .vitals{grid-template-columns:1fr 1fr}
 .profile-head h1{font-size:22px}
 .profile-head .btn{width:100%}
 .bot-said{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
}
@media (prefers-reduced-motion:reduce){.live i{animation:none}}
