/* ARIA Comms layout. Uses the hub tokens (root.css / hub.css): glass panels, cut corners, starfield. */
body.comms{height:100vh;overflow:hidden}
body.comms [hidden]{display:none!important}
.comms .panel{padding:0;display:flex;flex-direction:column;min-height:0;background:var(--sheet)}
.app{display:grid;grid-template-columns:290px minmax(0,1fr) 330px;gap:14px;height:100vh;padding:14px;box-sizing:border-box}

/* entry */
.entry{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;z-index:20;background:radial-gradient(ellipse at center,rgba(40,140,255,.14),transparent 60%)}
.entry-card{width:min(640px,96vw);padding:28px!important;gap:18px;max-height:96vh;overflow:auto}
.entry-head{display:flex;gap:18px;align-items:center}.entry-head h1{margin:4px 0}.entry-head p{margin:0}
.orgpick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:6px}
.orgpick label{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--rule-soft);cursor:pointer;background:rgba(5,12,24,.6);font-family:Oxanium;font-size:.85rem;transition:.15s}
.orgpick label:hover{border-color:var(--rule)}.orgpick input{display:none}
.orgpick label:has(input:checked){border-color:var(--oc);background:color-mix(in srgb,var(--oc) 14%,transparent);box-shadow:0 0 14px -6px var(--oc)}
.cmdtoggle{display:flex;gap:14px;align-items:center;padding:12px;border:1px solid var(--rule-soft);cursor:pointer}
.cmdtoggle input{display:none}.cmdtoggle b{display:block;font-family:Oxanium;letter-spacing:.06em}.cmdtoggle .muted{font-size:.85rem}
.sw{flex:none;width:42px;height:22px;border:1px solid var(--rule);position:relative;background:rgba(5,12,24,.8)}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;background:var(--ink-3);transition:.15s}
.cmdtoggle:has(input:checked){border-color:var(--warn);background:rgba(255,200,90,.08)}
.cmdtoggle input:checked+.sw{border-color:var(--warn)}.cmdtoggle input:checked+.sw::after{left:23px;background:var(--warn);box-shadow:0 0 8px var(--warn)}
.emsg{color:var(--bad);margin:0;min-height:1em}

/* sidebar */
.side-brand{display:flex;gap:12px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--rule-soft)}
.side-brand b{font-family:Oxanium;letter-spacing:.14em}.side-brand small{display:block;font-family:'Geist Mono';font-size:.58rem;letter-spacing:.14em;color:var(--ink-3)}
.chans{flex:1;overflow:auto;padding:8px 0 14px}
.sec{display:flex;justify-content:space-between;align-items:center;padding:14px 18px 4px;font-family:'Geist Mono';font-size:.68rem;letter-spacing:.16em;color:var(--ink-3);text-transform:uppercase}
.sec button{background:none;border:1px solid var(--rule-soft);color:var(--accent);cursor:pointer;font-family:'Geist Mono';font-size:.65rem;padding:1px 7px}.sec button:hover{border-color:var(--accent)}
.chan{display:flex;align-items:center;gap:8px;padding:6px 10px 6px 16px;margin:1px 8px;cursor:pointer;color:var(--ink-2);font-family:Oxanium;letter-spacing:.04em;border-left:2px solid transparent;font-size:.92rem}
.chan:hover{background:rgba(79,195,255,.07);color:var(--ink)}
.chan.on{background:rgba(79,195,255,.13);color:var(--ink);border-left-color:var(--accent)}
.chan.locked{opacity:.55}.chan .hash{color:var(--accent);font-family:'Geist Mono';width:14px;text-align:center}
.chan .cn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chan .unread{background:var(--accent);color:var(--on-accent);font-family:'Geist Mono';font-size:.62rem;font-weight:700;padding:0 6px}
.chan .vjoin{background:none;border:1px solid transparent;color:var(--ink-3);cursor:pointer;padding:2px 4px;display:flex}
.chan .vjoin:hover{color:var(--good);border-color:var(--rule-soft)}.chan .vjoin.live{color:var(--good)}
.chan .vjoin svg,.ib svg,.vu svg{width:16px;height:16px}
.evhead{display:flex;gap:8px;align-items:baseline;padding:8px 18px 2px;cursor:pointer;font-family:Oxanium;font-size:.85rem;color:var(--ink)}
.evhead .when{font-family:'Geist Mono';font-size:.62rem;color:var(--accent);letter-spacing:.08em;white-space:nowrap}
.evhead .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evhead .car{color:var(--accent);transition:transform .15s}.evhead.closed .car{transform:rotate(-90deg)}
.vlist{margin:0 8px 4px 46px}
.vu{display:flex;align-items:center;gap:8px;padding:2px 6px;font-size:.84rem;color:var(--ink-2)}
.vu i{width:8px;height:8px;transform:rotate(45deg);background:var(--oc);flex:none;transition:box-shadow .1s}
.vu.speaking{color:var(--ink)}.vu.speaking i{box-shadow:0 0 0 2px var(--good),0 0 12px 2px var(--good)}
.vu .st{margin-left:auto;display:flex;gap:3px;color:var(--bad)}.vu .st svg{width:13px;height:13px}
.cmdb{font-family:'Geist Mono';font-size:.56rem;font-weight:700;letter-spacing:.08em;color:#1a1200;background:var(--warn);padding:0 4px}

/* me bar */
.mebar{border-top:1px solid var(--rule-soft);padding:10px 12px;background:rgba(4,10,22,.6)}
.mebar .who{display:flex;gap:10px;align-items:center}.mebar .who b{font-family:Oxanium;display:block;line-height:1.2}
.vstat{font-family:'Geist Mono';font-size:.68rem;letter-spacing:.06em;color:var(--good);margin:8px 0 6px;display:flex;justify-content:space-between;gap:8px}
.vstat.off{color:var(--ink-3)}.vstat.wait{color:var(--warn)}
.ctrls{display:flex;gap:6px}
.ib{flex:1;display:flex;justify-content:center;align-items:center;gap:6px;padding:7px 0;background:rgba(79,195,255,.08);border:1px solid var(--rule-soft);color:var(--ink);cursor:pointer;font-family:'Geist Mono';font-size:.62rem;letter-spacing:.08em}
.ib:hover{border-color:var(--accent)}.ib.bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 60%,transparent);background:rgba(255,77,94,.1)}
.ib:disabled{opacity:.35;cursor:default}

/* room */
.room-head{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--rule-soft);min-height:62px}
.room-head h2{margin:0;font-size:1.15rem}.room-head .hash{color:var(--accent);font-family:'Geist Mono';font-size:1.2rem}
.room-head .sub{color:var(--ink-3);font-size:.85rem;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msgs{flex:1;overflow:auto;padding:16px 20px;display:flex;flex-direction:column;gap:2px}
.msg{display:grid;grid-template-columns:40px 1fr;gap:12px;padding:6px 8px;border-left:2px solid transparent}
.msg:hover{background:rgba(79,195,255,.04)}.msg.cont{padding-top:0}.msg.cont .av{visibility:hidden;height:0}
.msg.bc{border-left-color:var(--warn);background:rgba(255,200,90,.05)}
.msg .meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.msg .meta b{font-family:Oxanium;color:var(--oc);letter-spacing:.03em}
.msg .time{font-family:'Geist Mono';font-size:.65rem;color:var(--ink-3)}
.msg .txt{white-space:pre-wrap;word-break:break-word;color:var(--ink)}
.empty-room{margin:auto;text-align:center;color:var(--ink-3);max-width:420px}
.empty-room .btn{margin-top:12px}
.composer{display:flex;gap:10px;padding:12px 16px;border-top:1px solid var(--rule-soft);align-items:center}
.composer input#text{flex:1;background:rgba(5,12,24,.9);border:1px solid var(--rule);color:var(--ink);padding:11px 14px;font:inherit}
.composer input#text:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(79,195,255,.2)}
.allchip{display:flex;gap:6px;align-items:center;white-space:nowrap;font-size:.8rem}.allchip input{display:none}
.allchip:has(input:checked){background:var(--warn);color:#1a1200;border-color:var(--warn)}
.bctag{font-family:'Geist Mono';font-size:.6rem;letter-spacing:.1em;color:var(--warn);border:1px solid var(--warn);padding:0 5px}

/* context panel */
.ctx{overflow:auto;padding:18px!important;gap:14px}
.ctx h3{margin:0}.ctx .box{border:1px solid var(--rule-soft);background:rgba(5,12,24,.5);padding:12px}
.ctx .evd{display:flex;gap:12px}.ctx .dblock{min-width:64px}
.fleet{border:1px solid var(--rule-soft);border-left:3px solid var(--accent);padding:10px;margin-top:8px;background:rgba(5,12,24,.5)}
.fleet.mine{border-left-color:var(--good)}.fleet .fh{display:flex;justify-content:space-between;align-items:center;gap:8px}
.fleet .fh b{font-family:Oxanium;letter-spacing:.12em}
.fleet .plist{margin:6px 0 0}.fleet .btn{padding:5px 10px;font-size:.7rem}
.net{border:1px solid var(--warn);background:rgba(255,200,90,.05);padding:12px}
.net .label{color:var(--warn)}
.talk{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.talk .chip{font-size:.75rem;padding:4px 10px}
.talk .chip.on{background:var(--warn);border-color:var(--warn);color:#1a1200}
.nrow{display:grid;grid-template-columns:86px 1fr auto;gap:10px;align-items:center;padding:6px 0;border-top:1px solid var(--rule-soft)}
.nrow b{font-family:Oxanium;font-size:.8rem;letter-spacing:.08em;display:flex;align-items:center;gap:6px}
.nrow b i{width:7px;height:7px;transform:rotate(45deg);background:var(--ink-3)}.nrow b i.sp{background:var(--good);box-shadow:0 0 10px var(--good)}
.nrow input[type=range]{width:100%}.nrow .ib{flex:none;padding:4px 6px}
.people .vu{padding:3px 0}
@media (max-width:1100px){.app{grid-template-columns:250px minmax(0,1fr)}.ctx{display:none!important}}
@media (max-width:700px){.app{grid-template-columns:1fr;grid-template-rows:40vh 1fr}.orgpick{grid-template-columns:1fr 1fr}}

.net .btn.ghost{color:var(--warn);border-color:var(--warn)}.net .btn.ghost:hover{background:var(--warn);color:#1a1200}
.nrow b{white-space:nowrap}
.ctrls .sfxb{flex:0 0 34px}

/* v2: people column left of the event / command area, layout for many fleets */
.app{grid-template-columns:270px minmax(320px,1fr) 210px 320px}
body.evview .app{grid-template-columns:270px minmax(320px,1fr) 210px minmax(420px,1.15fr)}
.pcol{overflow:auto;padding:16px 12px!important;gap:2px}
.pcol .grp{margin:12px 0 4px;font-size:.62rem}
.pcol .vu{padding:3px 4px}.pcol .vu .pn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcol .where{margin-left:auto;font-family:'Geist Mono';font-size:.58rem;color:var(--good);white-space:nowrap;max-width:80px;overflow:hidden;text-overflow:ellipsis}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin-top:8px}
.fgrid .fleet{margin:0;display:flex;flex-direction:column;gap:4px;min-width:0}
.fleet .fh .fname{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fleet .plist{max-height:84px;overflow:auto}.fleet .flex{margin-top:auto!important;gap:6px}
.addf,.renf{display:flex;gap:6px;align-items:center}
.addf input,.renf input,.fnames input{background:rgba(5,12,24,.9);border:1px solid var(--rule);color:var(--ink);padding:5px 8px;font:inherit;font-size:.8rem;min-width:0}
.addf input{width:130px}.addf .btn,.renf .btn{padding:5px 10px;font-size:.7rem;white-space:nowrap}.renf{flex:1}.renf input{flex:1}
.fnames{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;margin-top:6px}
.net .nrows{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));column-gap:16px;max-height:230px;overflow:auto}
.nrow b span{overflow:hidden;text-overflow:ellipsis}
.net .talk{max-height:90px;overflow:auto}
@media (max-width:1500px){.app,body.evview .app{grid-template-columns:250px minmax(300px,1fr) 180px minmax(360px,1fr)}}
@media (max-width:1250px){.app,body.evview .app{grid-template-columns:240px minmax(0,1fr) minmax(320px,.9fr)}.pcol{display:none!important}}
@media (max-width:1100px){.app,body.evview .app{grid-template-columns:250px minmax(0,1fr)}}
@media (max-width:700px){.app,body.evview .app{grid-template-columns:1fr}}

/* voice settings */
.vs{width:min(560px,94vw);padding:24px!important;gap:14px;background:#0a1628}
.vs select{width:100%;background:rgba(5,12,24,.9);border:1px solid var(--edge);color:var(--tx);padding:9px 10px;font:inherit}
.vs select:disabled{opacity:.5}
.meter{position:relative;height:8px;margin-top:8px;background:rgba(79,195,255,.12);border:1px solid var(--rule-soft);overflow:hidden}
.meter b{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--warn)}
.meter i.shut{opacity:.35}
#vsSens{width:100%;accent-color:var(--warn)}
.meter i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--good),var(--accent));transition:width .05s}.meter i.hot{background:linear-gradient(90deg,var(--good),var(--warn))}
.pttkey{font-family:'Geist Mono';font-size:1rem;min-width:44px;text-align:center;padding:6px 12px;border:1px solid var(--accent);color:var(--accent);background:rgba(79,195,255,.08)}
.txled{font-family:'Geist Mono';font-size:.7rem;letter-spacing:.12em;padding:3px 8px;border:1px solid var(--rule-soft);color:var(--ink-3)}
.txled.on{color:#04101e;background:var(--good);border-color:var(--good);box-shadow:0 0 12px var(--good)}
.ctrls .sfxb{flex:0 0 32px}

/* v2: softer, rounder look for the chat app only (the hub's root.css / hub.css stay untouched).
   Keeps the ARIA glass and glow, swaps cut corners for radii. */
body.comms .panel{clip-path:none;border-radius:14px;box-shadow:0 0 0 1px rgba(79,195,255,.06),0 18px 40px -20px rgba(0,0,0,.9),0 0 26px -14px rgba(79,195,255,.45);backdrop-filter:blur(10px)}
body.comms .panel::before{border-top-left-radius:8px;top:8px;left:8px;opacity:.75}
body.comms .modal,body.comms .entry-card,body.comms .vs{border-radius:16px}
body.comms .btn,body.comms .ib,body.comms .chip,body.comms input,body.comms select,body.comms textarea,
body.comms .composer input#text,body.comms .field input,body.comms .field select,body.comms .field textarea,
body.comms .pttkey,body.comms .txled,body.comms .sec button,body.comms .vjoin{border-radius:8px}
body.comms .composer input#text{border-radius:10px}
body.comms .badge,body.comms .otag,body.comms .cmdb,body.comms .bctag,body.comms .person,body.comms .chan .unread,body.comms .talk .chip,body.comms .allchip,body.comms .nbadge{border-radius:999px}
body.comms .otag,body.comms .bctag,body.comms .cmdb{padding-left:8px;padding-right:8px}
body.comms .chan{border-radius:8px;border-left-width:3px}
body.comms .fleet,body.comms .ctx .box,body.comms .net,body.comms .orgpick label,body.comms .cmdtoggle,body.comms .dblock,body.comms .msg{border-radius:12px}
body.comms .msg{border-left-width:3px}
body.comms .meter,body.comms .meter i,body.comms .sw{border-radius:999px}
body.comms .sw::after{border-radius:50%}
body.comms .mebar{border-radius:0 0 14px 14px}
body.comms .toast{border-radius:999px}
/* round avatars and presence dots */
body.comms .msg .av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;overflow:hidden;border:1px solid color-mix(in srgb,var(--oc) 55%,transparent);background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--oc) 22%,transparent),rgba(5,12,24,.9));box-shadow:0 0 12px -4px var(--oc)}
body.comms .msg .av svg{width:30px;height:30px}
body.comms .msg.cont .av{height:0;border:0;box-shadow:none}
body.comms .mebar .who>svg,body.comms .orgpick svg{border-radius:50%;background:rgba(5,12,24,.6);box-shadow:0 0 0 1px color-mix(in srgb,var(--oc,#4FC3FF) 40%,transparent)}
body.comms .vu i,body.comms .person i,body.comms .otag i,body.comms .nrow b i{transform:none;border-radius:50%}
body.comms .vu i{width:9px;height:9px}
body.comms ::-webkit-scrollbar-thumb{border-radius:999px}
body.comms .btn.ghost:hover{background:rgba(79,195,255,.18);color:var(--ink);border-color:var(--accent)}
body.comms .ctrls .ib{padding:8px 0}body.comms .ctrls .ib svg{width:18px;height:18px}

/* listen only badge */
.lob{font-family:'Geist Mono';font-size:.52rem;letter-spacing:.08em;color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 60%,transparent);padding:0 6px;border-radius:999px;white-space:nowrap}
.vstat .linkbtn{font-family:'Geist Mono';font-size:.65rem;color:var(--accent);text-decoration:underline}
/* v3: narrower event / command area, fleets in one scrolling column */
body.evview .app{grid-template-columns:270px minmax(360px,1fr) 210px minmax(330px,400px)}
@media (max-width:1500px){body.evview .app{grid-template-columns:250px minmax(300px,1fr) 180px minmax(320px,380px)}}
@media (max-width:1250px){body.evview .app{grid-template-columns:240px minmax(0,1fr) minmax(300px,360px)}}
@media (max-width:1100px){body.evview .app{grid-template-columns:250px minmax(0,1fr)}}
body.evview .ctx{overflow:hidden}
body.evview .ctx>*{flex:none}
body.evview .ctx>.fleetsec{flex:1 1 auto;min-height:140px;display:flex;flex-direction:column}
.fleetsec .fgrid{grid-template-columns:1fr;overflow-y:auto;flex:1;min-height:0;padding-right:4px;align-content:start}
.fleetsec .addf input{width:110px}
.ctx .net .nrows{grid-template-columns:1fr;max-height:170px}
.ctx .net .talk{max-height:104px}
.ctx .desc{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin:8px 0 0}
.fleet .flex{margin-top:6px!important}

/* ===== v3 responsive: nothing overflows, columns collapse into drawers ===== */
body.comms{overflow:hidden;height:100dvh}
.app{height:100dvh}
.app>*{min-width:0;min-height:0}
.room,.side,.ctx,.pcol{min-width:0;overflow:hidden}
.ctx,.pcol,.chans,.msgs{overflow-y:auto;overflow-x:hidden}
.room-head{min-width:0;flex-wrap:nowrap}.room-head h2{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.room-head .btn{flex:none;white-space:nowrap}.room-head .btn svg{width:16px;height:16px}
.msg{min-width:0}.msg>div{min-width:0}.msg .txt{overflow-wrap:anywhere}.msg .meta{min-width:0}.msg .meta b{overflow-wrap:anywhere}
.composer{min-width:0}.composer input#text{min-width:0}
.vu{min-width:0}.vu>span:not(.cmdb):not(.lob):not(.st):not(.where){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vu .cmdb,.vu .lob{flex:none}
.mebar .who{min-width:0}.mebar .who>div{min-width:0;overflow:hidden}.mebar .who b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mebar .otag{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.vstat>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side-brand>div{min-width:0}.side-brand b,.side-brand small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.evd{min-width:0}.evd>div:last-child{min-width:0}.evd h3{overflow-wrap:anywhere}
.ctx h3,.ctx .desc,.ctx p{overflow-wrap:anywhere}
.fleet{min-width:0}.fleet .fh{min-width:0}.fleet .plist .person{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.fleetsec>.flex{flex-wrap:wrap;gap:6px}.addf{min-width:0;flex:1 1 180px;justify-content:flex-end}.addf input{flex:1 1 80px;min-width:60px}
.renf{min-width:0}.renf input{min-width:0}
.nrow{min-width:0}.nrow b{min-width:0}
.talk{min-width:0}.talk .chip{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evhead{min-width:0}
.modal,.vs,.entry-card{max-width:calc(100vw - 20px)}
.vs .flex{min-width:0}.vs select{min-width:0}
.toast{max-width:calc(100vw - 32px);text-align:center}
/* toggles in the room header, only shown when a column is collapsed */
.tgl{display:none;position:relative;flex:none;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;border:1px solid var(--rule-soft);background:rgba(79,195,255,.08);color:var(--ink);cursor:pointer}
.tgl:hover{border-color:var(--accent)}.tgl svg{width:18px;height:18px}
.tgl b{position:absolute;top:-6px;right:-6px;font-family:'Geist Mono';font-size:.58rem;background:var(--accent);color:var(--on-accent);border-radius:999px;padding:0 5px;line-height:15px}
.scrim{display:none;position:fixed;inset:0;background:rgba(2,6,14,.6);z-index:55;backdrop-filter:blur(2px)}
/* drawer look shared by collapsed columns */
@media (max-width:1249px){
  #tPeople{display:inline-flex}
  body.show-people .pcol{display:flex!important;position:fixed;top:10px;bottom:10px;right:10px;width:min(300px,calc(100vw - 20px));z-index:60}
  body.show-people .scrim{display:block}
}
@media (max-width:1099px){
  #tCtx{display:inline-flex}
  body.show-ctx .ctx{display:flex!important;position:fixed;top:10px;bottom:10px;right:10px;width:min(420px,calc(100vw - 20px));z-index:60}
  body.show-ctx .scrim{display:block}
  .app,body.evview .app{grid-template-columns:240px minmax(0,1fr)}
}
@media (max-width:820px){
  #tNav{display:inline-flex}
  .app,body.evview .app{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);padding:8px;gap:8px}
  .side{display:none!important}
  body.show-nav .side{display:flex!important;position:fixed;top:8px;bottom:8px;left:8px;width:min(300px,calc(100vw - 16px));z-index:60}
  body.show-nav .scrim{display:block}
  .room-head{padding:10px 12px;gap:8px;min-height:56px}.room-head .sub{display:none}
  .room-head .hash{display:none}.room-head h2{flex:1 1 auto}
  .msgs{padding:10px 8px}.composer{padding:8px;gap:6px}.composer .btn{padding:9px 12px}
  .msg{grid-template-columns:32px minmax(0,1fr);gap:8px;padding:6px 4px}
  body.comms .msg .av{width:32px;height:32px}body.comms .msg .av svg{width:24px;height:24px}
}
@media (max-width:520px){
  .room-head .btn .bl{display:none}.room-head .btn{padding:8px 10px}
  .allchip{padding:6px 8px;font-size:.7rem}
  .entry{padding:10px;align-items:flex-start;overflow:auto}.entry-card{padding:18px!important}
  .entry-head{flex-direction:column;align-items:flex-start;gap:8px}.entry-head .emblem{width:56px;height:56px}
  .orgpick{grid-template-columns:1fr 1fr}.orgpick label{font-size:.78rem;padding:6px;min-width:0}.orgpick label span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .entry-card .flex.sb{flex-direction:column;align-items:stretch}.entry-card .flex.sb .btn{justify-content:center}
  .vs .flex{flex-wrap:wrap}
}
/* leave a strip of scrim to tap on phones, and a close hint */
@media (max-width:520px){
  body.show-people .pcol,body.show-ctx .ctx{width:calc(100vw - 56px)!important}
  body.show-nav .side{width:calc(100vw - 56px)!important}
}
.scrim::after{content:"\2715";position:absolute;top:14px;font-size:1.1rem;color:var(--ink-2);width:40px;text-align:center}
body.show-nav .scrim::after{right:6px}body.show-ctx .scrim::after,body.show-people .scrim::after{left:6px}

/* keybindings */
.kbm{z-index:110}
.kb{width:min(760px,96vw);padding:22px!important;max-height:92vh;display:flex;flex-direction:column;background:#0a1628}
.kbbody{overflow:auto;min-height:0;flex:1;padding-right:4px}
.kbsec{margin-bottom:16px}.kbsec>.label{color:var(--accent);margin-bottom:6px}
.kbrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:8px 0;border-top:1px solid var(--rule-soft)}
.kbrow b{font-family:Oxanium;letter-spacing:.04em}
.kbgrid{display:grid;grid-template-columns:minmax(110px,1fr) auto auto;gap:6px 14px;align-items:center}
.kbh{font-family:'Geist Mono';font-size:.62rem;letter-spacing:.12em;color:var(--ink-3);text-transform:uppercase}
.kbslot{display:flex;gap:8px;align-items:center;min-width:0}.kbslot b{font-family:'Geist Mono';color:var(--accent);width:20px}
.kbslot span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Oxanium;font-size:.85rem}.kbslot i{color:var(--ink-3)}
.kbc{display:flex;gap:6px;align-items:center;flex-wrap:wrap;min-width:0}
.kbc .pttkey{font-size:.78rem;min-width:84px;padding:4px 8px;white-space:nowrap}.kbc .pttkey.none{color:var(--ink-3);border-color:var(--rule-soft)}
.kbc .pttkey.listening,#vsKey.listening{color:var(--warn);border-color:var(--warn);white-space:normal;min-width:150px}
.kbc .btn{padding:4px 10px;font-size:.68rem}.kbc .x:disabled{opacity:.3;cursor:default}
.kbc.clash .pttkey{border-color:var(--bad);color:var(--bad)}.warnx{color:var(--bad);font-size:.7rem;flex-basis:100%}
.warnt{color:var(--warn)}
@media (max-width:640px){.kbgrid{grid-template-columns:1fr}.kbh{display:none}.kbslot{margin-top:8px;border-top:1px solid var(--rule-soft);padding-top:8px}.kbrow{grid-template-columns:1fr}}

/* compact event header and collapsible net controls so the fleet list keeps room */
body.evview .ctx h3{font-size:.9rem;line-height:1.25}
body.evview .ctx .desc{-webkit-line-clamp:2}
.ctx .net .nrows{max-height:140px}
.net.min .talk,.net.min .nrows,.net.min>.hint,.net.min>.label{display:none}
.net .linkbtn{font-size:.72rem;margin-left:auto;margin-right:8px}
body.evview .ctx>.fleetsec{min-height:200px}

/* ===== v4: event switcher, command posts ===== */
.evlist{display:flex;flex-direction:column;gap:4px;margin:4px 8px 6px;max-height:34vh;overflow-y:auto;overflow-x:hidden}
.evrow{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:8px;align-items:center;text-align:left;width:100%;min-width:0;padding:7px 10px;border:1px solid var(--rule-soft);border-radius:10px;background:rgba(5,12,24,.5);color:var(--ink-2);cursor:pointer;font:inherit}
.evrow:hover{border-color:var(--rule);color:var(--ink)}
.evrow.on{border-color:var(--accent);background:rgba(79,195,255,.12);color:var(--ink);box-shadow:0 0 14px -8px var(--accent)}
.evrow .t{grid-column:1;font-family:Oxanium;font-size:.85rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evrow .when{grid-column:1;grid-row:2;font-family:'Geist Mono';font-size:.6rem;color:var(--accent);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evrow .cmdb,.evrow .mine{grid-column:2;grid-row:1/3;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evrow .mine{color:var(--good)}
.sec.evsec{color:var(--ink);font-family:Oxanium;letter-spacing:.06em;text-transform:none;font-size:.8rem;padding-top:8px}
.sec.evsec .t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pgrp{display:flex;justify-content:space-between;gap:8px;margin:8px 16px 2px 18px;font-family:'Geist Mono';font-size:.6rem;letter-spacing:.14em;color:var(--warn);text-transform:uppercase;min-width:0}
.pgrp span{color:var(--ink-3)}
details.roles{border:1px solid var(--rule-soft);border-radius:12px;padding:10px 12px;background:rgba(5,12,24,.5)}
details.roles>summary{display:flex;justify-content:space-between;align-items:center;gap:8px;cursor:pointer;list-style:none;min-width:0}
details.roles>summary::-webkit-details-marker{display:none}
details.roles>summary .cur{font-family:Oxanium;color:var(--warn);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rolegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;margin-top:8px}
.rolec{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;padding:7px 9px;border:1px solid var(--rule-soft);border-radius:10px;background:rgba(5,12,24,.6);color:var(--ink);cursor:pointer;text-align:left;font:inherit}
.rolec b{font-family:Oxanium;font-size:.82rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rolec span{font-size:.7rem;color:var(--ink-3);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rolec .who{color:var(--ink-2)}
.rolec:hover{border-color:var(--rule)}.rolec.on{border-color:var(--warn);background:rgba(255,200,90,.1);box-shadow:0 0 12px -6px var(--warn)}
.postmgr .postrow{display:flex;gap:10px;align-items:center;padding:4px 0;border-top:1px solid var(--rule-soft);min-width:0}
.postrow .pn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Oxanium}
.linkbtn.bad{color:var(--bad)}
.postmgr .addf{margin-top:8px}
.fgrp{display:flex;justify-content:space-between;gap:8px;margin:6px 0 0;padding:4px 2px;font-family:'Geist Mono';font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--warn);border-bottom:1px solid rgba(255,200,90,.25);min-width:0}
.fgrp span{color:var(--ink-3);white-space:nowrap}.fgrp.mine{color:var(--good);border-bottom-color:rgba(75,227,160,.35)}
.fleet select.assign{width:100%;min-width:0;margin-top:4px;background:rgba(5,12,24,.9);border:1px solid var(--rule-soft);color:var(--ink);padding:4px 6px;font:inherit;font-size:.78rem;border-radius:8px}

/* ===== tablet mode: touch console (body.tablet) ===== */
body.comms.tablet .app{display:none!important}
body.comms .tab{display:none}
body.comms.tablet .tab{position:fixed;inset:0;z-index:30;display:flex;flex-direction:column;gap:10px;padding:max(10px,env(safe-area-inset-top)) 12px max(10px,env(safe-area-inset-bottom));height:100vh;height:100dvh;overflow:hidden;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
.tab .tbar{display:flex;align-items:center;gap:10px;min-width:0;flex:0 0 auto;padding:8px 10px;border:1px solid var(--rule-soft);border-radius:14px;background:rgba(5,12,24,.72);backdrop-filter:blur(8px)}
.tab .tlogo{flex:0 0 auto;display:flex}
.tab .tme{display:flex;flex-direction:column;min-width:0;flex:0 1 auto;max-width:28%}
.tab .tme b{font-family:Oxanium;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tab .tme small{font-family:'Geist Mono';font-size:.62rem;letter-spacing:.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tab .tsel{flex:1 1 auto;min-width:0;min-height:64px;padding:0 14px;border-radius:12px;border:1px solid var(--rule);background:rgba(5,12,24,.9);color:var(--ink);font:500 1rem 'Exo 2',sans-serif;text-overflow:ellipsis}
.tab .tsel.none{display:flex;align-items:center;color:var(--ink-3)}
.tab .tib{flex:0 0 auto;width:64px;height:64px;border-radius:12px;border:1px solid var(--rule);background:rgba(5,12,24,.8);color:var(--ink);display:grid;place-items:center;font-size:1.2rem;cursor:pointer}
.tab .tib svg{width:24px;height:24px}
.tab .tmain{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:10px}
.tab .tsub{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:0 4px;min-width:0}
.tab .tsub>span:first-child{font-family:Oxanium;color:var(--warn);font-size:1.05rem;letter-spacing:.06em;text-transform:uppercase}
.tab .tmain>*{width:100%;min-width:0}
.tab .tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));grid-auto-rows:minmax(150px,230px);align-content:start;gap:12px;flex:0 0 auto}
.tab .ttile{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-width:0;min-height:132px;padding:14px 16px;border-radius:16px;border:2px solid var(--rule);
  background:linear-gradient(160deg,rgba(14,32,58,.85),rgba(5,12,24,.9));cursor:pointer;touch-action:none;transition:border-color .12s,box-shadow .12s,transform .08s}
.tab .ttile.cmdt{border-color:rgba(255,200,90,.45);background:linear-gradient(160deg,rgba(58,42,12,.7),rgba(5,12,24,.9))}
.tab .ttile .tt{display:flex;flex-direction:column;gap:4px;min-width:0}
.tab .ttile .tx{padding-right:76px}
.tab .ttile b{font-family:Oxanium;font-size:1.35rem;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tab .ttile .tc{font-family:'Geist Mono';font-size:.75rem;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tab .ttile .tx{font-family:'Geist Mono';font-size:.8rem;letter-spacing:.16em;color:var(--ink-3)}
.tab .ttile.speaking{border-color:var(--good);box-shadow:0 0 0 2px rgba(75,227,160,.35),0 0 26px -4px var(--good)}
.tab .ttile.held,.tab .ttile.tx{border-color:var(--accent);background:linear-gradient(160deg,rgba(79,195,255,.32),rgba(5,12,24,.9));box-shadow:0 0 30px -4px var(--accent)}
.tab .ttile.held{transform:scale(.985)}
.tab .ttile.tx .tx{color:var(--accent-hi);font-weight:700}
.tab .ttile.off{opacity:.6}
.tab .ttile .tmute{position:absolute;bottom:10px;right:10px;width:64px;height:64px;border-radius:14px;border:1px solid var(--rule);background:rgba(5,12,24,.85);color:var(--ink);display:grid;place-items:center;cursor:pointer;touch-action:manipulation}
.tab .ttile .tmute svg{width:28px;height:28px}
.tab .ttile.off .tmute{color:var(--bad);border-color:var(--bad)}
.tab .tfoot{flex:0 0 auto;display:flex;gap:10px;min-width:0}
.tab .tall{flex:1 1 auto;min-width:0;min-height:84px;border-radius:16px;border:2px solid var(--accent);background:rgba(79,195,255,.14);color:var(--ink);font:700 1.2rem Oxanium,sans-serif;letter-spacing:.12em;cursor:pointer;touch-action:none}
.tab .tall.held{background:rgba(79,195,255,.5);box-shadow:0 0 34px -4px var(--accent)}
.tab .tbtn{min-height:64px;min-width:64px;padding:8px 16px;border-radius:14px;border:1px solid var(--rule);background:rgba(5,12,24,.85);color:var(--ink);font:600 1rem 'Exo 2',sans-serif;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;touch-action:manipulation}
.tab .tbtn small{font-size:.75rem;color:var(--ink-3);font-weight:400}
.tab .tbtn svg{width:26px;height:26px}
.tab .tbtn span{font-size:.75rem}
.tab .tfoot .sq{flex:0 0 auto;width:96px;min-height:84px}
.tab .tfoot:not(:has(.tall)) .sq{flex:1 1 0}
.tab .tbtn.bad{color:var(--bad);border-color:var(--bad)}
.tab .tbtn.go{border-color:var(--accent);background:rgba(79,195,255,.18);min-height:84px;font-size:1.2rem;padding:10px 40px}
.tab .tbtn.on{border-color:var(--accent);background:rgba(79,195,255,.22)}
.tab .tstate{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;flex:1 0 auto;padding:10px;min-width:0}
.tab .tstate h2{margin:0;font-family:Oxanium;font-size:1.5rem;max-width:100%;overflow-wrap:anywhere}
.tab .tstate p{margin:0;color:var(--ink-2);max-width:100%;overflow-wrap:anywhere}
.tab .troles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),280px));justify-content:center;gap:12px;width:100%;max-width:900px}
.tab .troles .tbtn{min-height:88px;font-size:1.15rem;overflow-wrap:anywhere}
.tab .tlink{background:none;border:0;color:var(--accent);font:inherit;text-decoration:underline;min-height:64px;padding:0 16px;cursor:pointer}
.tab .tvoices{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:100%}
.tab .tvoices .vu{font-size:1rem;padding:6px 12px;border:1px solid var(--rule-soft);border-radius:999px;max-width:100%}
.tab .tptt{width:min(100%,520px);min-height:min(36vh,260px);border-radius:24px;border:3px solid var(--accent);background:radial-gradient(circle at 50% 40%,rgba(79,195,255,.25),rgba(5,12,24,.9));color:var(--ink);font:700 1.6rem Oxanium,sans-serif;letter-spacing:.14em;cursor:pointer;touch-action:none}
.tab .tptt.held{background:radial-gradient(circle at 50% 40%,rgba(79,195,255,.7),rgba(10,40,70,.9));box-shadow:0 0 50px -6px var(--accent)}
.tab .tmode{display:flex;gap:10px;width:min(100%,520px)}
.tab .tmode .tbtn{flex:1 1 0}
.tab .hint{color:var(--ink-3);font-size:.85rem}
.tsuggest{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:60;display:flex;flex-wrap:wrap;align-items:center;gap:10px;max-width:calc(100vw - 24px);padding:12px 14px;border-radius:14px}
.tsuggest span{flex:1 1 260px;min-width:0}
@media (orientation:portrait){ .tab .tgrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))} }
@media (max-width:600px){ .tab .tme{display:none} .tab .tfoot .sq{width:76px} .tab .tall{font-size:1rem} .tab .ttile b{font-size:1.15rem} }
details.roles.posts{margin-top:8px}
details.roles.posts>summary .cur{color:var(--ink-3);font-family:'Geist Mono';font-size:.6rem;letter-spacing:.14em;text-transform:uppercase}
.tab main.tmain{margin:0;padding:2px;max-width:none;transition:none}
.tab main.tmain>*{max-width:none;margin-left:0;margin-right:0}
.tab .ttile.speaking:not(.held){border-color:#4BE3A0;box-shadow:0 0 0 2px rgba(75,227,160,.35),0 0 26px -4px #4BE3A0}
.tab .ttile.held{border-width:3px;border-color:var(--accent-hi);background:linear-gradient(160deg,rgba(79,195,255,.55),rgba(10,40,70,.95));box-shadow:0 0 40px -2px var(--accent)}
.tab .ttile.tx:not(.held){border-color:var(--accent)}

.oldsrv{position:fixed;left:50%;top:10px;transform:translateX(-50%);z-index:80;max-width:calc(100vw - 24px);width:640px;padding:12px 16px;border-radius:12px;background:#3a0d14;border:1px solid var(--bad);color:#ffd9dd;font-size:.9rem;box-shadow:0 8px 30px rgba(0,0,0,.5)}

/* ===== fleet picker for the command net ===== */
.modal.fp{width:min(560px,94vw);display:flex;flex-direction:column;max-height:92vh;max-height:92dvh}
.fpbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
.fpbar .label{margin-left:auto}
.fplist{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;margin-top:10px;padding-right:4px;display:flex;flex-direction:column;gap:6px}
.fpg{font-family:'Geist Mono';font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--warn);margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fpi{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:44px;padding:6px 12px;border:1px solid var(--rule-soft);border-radius:10px;background:rgba(5,12,24,.6);cursor:pointer;min-width:0}
.fpi:has(input:checked){border-color:var(--accent);background:rgba(79,195,255,.1)}
.fpi input{width:20px;height:20px;accent-color:var(--accent);margin:0}
.fpn{font-family:Oxanium;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fps{font-family:'Geist Mono';font-size:.65rem;color:var(--ink-3);white-space:nowrap}
.fpfoot{display:flex;justify-content:flex-end;gap:8px;margin-top:14px;flex-wrap:wrap}
.fpfoot .btn:disabled{opacity:.4;cursor:not-allowed}
@media (max-width:520px){ .fps{grid-column:2;font-size:.6rem} .fpi{grid-template-columns:auto minmax(0,1fr)} }
body.tablet .fpi{min-height:64px;font-size:1.1rem}
body.tablet .fpi input{width:28px;height:28px}
body.tablet .fpbar .btn,body.tablet .fpfoot .btn{min-height:64px;padding:0 22px;font-size:1rem}
body.tablet .modal-bg .x{min-width:64px;min-height:64px}
.tab .tsub .tfp{min-height:64px;margin-left:auto;padding:0 18px;font-size:.95rem}
.modal.fp{padding:20px 22px}
.fplist>*{flex:0 0 auto}
.pgrp.mine,.pgrp.mine span{color:var(--good)}

/* ---- collapsible post groups (fleets list) ---- */
.fgrp{cursor:pointer;align-items:center;user-select:none;border-radius:6px}
.fgrp:hover,.fgrp:focus-visible{background:rgba(255,200,90,.06);outline:none}
.fgrp .chev{flex:none;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid currentColor;transition:transform .15s}
.fgrp.folded .chev{transform:rotate(-90deg)}
.fgrp .fgn{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fgrp .fgc{flex:none;color:var(--ink-3);white-space:nowrap}
.fgrp .tmpall{flex:none;font-size:.6rem;letter-spacing:.06em;text-transform:none;color:var(--accent);white-space:nowrap}
.fgrp .tmpall.on{color:var(--bad)}
@media (max-width:420px){.fgrp{flex-wrap:wrap}.fgrp .tmpall{margin-left:auto}}
/* ---- temporary command ---- */
.tmpb{flex:none;font-family:'Geist Mono';font-size:.56rem;font-weight:700;letter-spacing:.08em;color:#04111f;background:var(--accent);padding:0 6px;border-radius:999px;white-space:nowrap}
.vu .tmpb,.vu .gstb{flex:none}
.tmpl{display:flex;gap:6px;align-items:center;min-width:0;font-size:.74rem;color:var(--accent)}
.tmpl>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fleet .tmpbtn{width:100%;margin-top:6px;white-space:normal}
.fleet .tmpbtn[aria-pressed=true]{background:var(--accent);color:#04111f}
.nrow b .tmpb{margin-left:4px}
.tmpi{display:inline-grid;place-items:center;width:14px;height:14px;border-radius:4px;background:var(--accent);color:#04111f;font-size:.55rem;font-weight:700}
/* ---- guests ---- */
.gstb{font-family:'Geist Mono';font-size:.56rem;font-weight:700;letter-spacing:.08em;color:#0d1520;background:#b7c2cf;padding:0 6px;border-radius:999px;white-space:nowrap}
.emsg a{margin-left:6px}
.invmgr{display:flex;flex-direction:column;gap:6px;margin-top:8px;min-width:0}
.invmgr .addf{justify-content:flex-start;flex-wrap:wrap}
.invmgr select{background:rgba(5,12,24,.9);border:1px solid var(--rule);color:var(--ink);padding:5px 8px;font:inherit;font-size:.8rem;border-radius:8px;min-width:0}
.invrow{display:flex;flex-direction:column;gap:4px;padding:6px 0;border-top:1px solid var(--rule-soft);min-width:0}
.invrow.new .invl{border-color:var(--good)}
.invl{width:100%;min-width:0;background:rgba(5,12,24,.9);border:1px solid var(--rule);color:var(--ink);padding:5px 8px;font:'Geist Mono',monospace;font-size:.72rem;border-radius:8px}
.invm{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;font-size:.72rem;color:var(--ink-3);min-width:0}
.invm span{flex:1 1 140px;min-width:0}
/* ---- tablet: temporary command ---- */
.tab .ttile.tmpt{border-color:rgba(79,195,255,.55);border-style:dashed}
.tab .ttile .tt .tmpb{align-self:flex-start;font-size:.7rem;padding:1px 8px}
.tab .ttile.tmpt .tt{padding-right:110px}
.tab .ttile .tend{position:absolute;top:10px;right:10px;min-width:96px;height:64px;padding:0 12px;border-radius:14px;border:1px solid var(--bad);background:rgba(5,12,24,.85);color:var(--bad);font:inherit;font-size:.9rem;font-weight:600;cursor:pointer;touch-action:manipulation}
.tab .tother{display:flex;flex-direction:column;gap:8px;margin-top:18px;padding-top:12px;border-top:1px solid var(--rule-soft);min-width:0}
.tab .tother .tsub>span:first-child{color:var(--ink-2);font-size:.9rem}
.tab .togrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:10px}
.tab .tocard{display:flex;flex-direction:column;justify-content:space-between;gap:8px;min-width:0;padding:10px 12px;border-radius:12px;border:1px solid var(--rule-soft);background:rgba(5,12,24,.6)}
.tab .tocard.on{border-color:var(--accent)}
.tab .tocard .tot{display:flex;flex-direction:column;gap:2px;min-width:0}
.tab .tocard b{font-family:Oxanium;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tab .tocard small{font-family:'Geist Mono';font-size:.7rem;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tab .tocard .ttemp{min-height:64px;font-size:.9rem;width:100%}
.tab .tocard .ttemp.on{background:var(--accent);color:#04111f;border-color:var(--accent)}
.nrow.tmp{grid-template-columns:minmax(86px,46%) 1fr auto}
.toast{pointer-events:none}   /* never block a hold to talk button under it */
body.tablet .toast{bottom:auto;top:96px}
/* compact event date: one short line (day, date, month, time) above the title instead of a tall block */
.ctx .evd{flex-direction:column;gap:6px}
.ctx .dblock{display:inline-flex;align-self:flex-start;align-items:baseline;flex-wrap:wrap;gap:2px 8px;min-width:0;max-width:100%;padding:4px 12px;line-height:1.2}
.ctx .dblock .dd{font-size:1.15rem;line-height:1.2}
.ctx .dblock .dt{margin-top:0;padding-left:8px;border-left:1px solid var(--edge)}
.ctx .evd h3{margin:0;line-height:1.25}
#evWhen{padding-top:6px;padding-bottom:6px;line-height:1.2;min-height:0;height:auto;max-width:100%}
