/* Forum v3: JARVIS comms console, thread posts with HUD author cards, profiles. Loads after v2/forum.css and hud.css. */
body.v3 main{padding-top:var(--nav-h)}
body.v3 .forum,body.v3 .detail{max-width:none;background:none;border:0;box-shadow:none;padding:0}

/* ===== Comms console (live chat at the top of the forum) ===== */
body.v2 .lchat{position:relative;margin:28px 0 0;border:1px solid rgba(62,224,255,.28);border-radius:4px;overflow:hidden;
  background:linear-gradient(180deg,rgba(6,16,32,.92),rgba(2,5,12,.96));box-shadow:0 0 0 1px rgba(62,224,255,.05),0 0 60px rgba(47,107,255,.12),inset 0 0 80px rgba(62,224,255,.04)}
body.v2 .lchat::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:3;background:repeating-linear-gradient(to bottom,rgba(126,240,255,.025) 0 1px,transparent 1px 3px)}
body.v2 .lchat::after{content:"";position:absolute;left:0;right:0;height:80px;top:-80px;pointer-events:none;z-index:3;background:linear-gradient(180deg,transparent,rgba(62,224,255,.06),transparent);animation:scanv 7s linear infinite}
body.v2 .lchat .lc-head{display:flex;align-items:center;gap:14px;padding:12px 18px;border-bottom:1px solid rgba(62,224,255,.18);background:linear-gradient(90deg,rgba(62,224,255,.08),transparent 60%)}
body.v2 .lchat .lc-head h2{display:flex;align-items:center;gap:10px;margin:0;font:500 12px var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--cy);text-shadow:0 0 10px var(--cy-glow)}
body.v2 #lchat:not(.lc-full) .lc-head h2::after{content:"#lobby";color:var(--mu);letter-spacing:.06em;text-transform:none;text-shadow:none}
body.v2 .lchat .live{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 rgba(46,229,157,.6),0 0 10px var(--ok);animation:pulse 2s infinite;display:inline-block}
body.v2 .lchat .lc-meta{margin-left:auto;display:flex;gap:12px;font:11px var(--mono);color:var(--mu)}
body.v2 .lchat .lc-soon{font:11px var(--mono);color:var(--mu);margin-left:auto}
body.v2 .lchat .lc-collapse{font:11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mu);border:1px solid var(--line-2);border-radius:2px;padding:5px 10px;background:none}
body.v2 .lchat .lc-collapse:hover{color:var(--cy);border-color:var(--cy)}
body.v2 .lc-pin{margin:0;padding:8px 18px;font:11.5px var(--mono);color:var(--mu);border-bottom:1px solid rgba(62,224,255,.1);background:rgba(0,0,0,.25);display:flex;gap:8px;align-items:center}
body.v2 .lc-pin svg{width:13px;height:13px;color:var(--cy)}
body.v2 .lc-pin a{color:var(--cy)}
body.v2 .lc-grid{display:grid;grid-template-columns:1fr 250px;min-height:0}
body.v2 .lc-main{display:flex;flex-direction:column;min-width:0;border-right:1px solid rgba(62,224,255,.12)}
body.v2 .lc-wrap{position:relative;flex:1}
body.v2 .lc-list{list-style:none;margin:0;padding:10px 6px 10px 0;height:380px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(62,224,255,.3) transparent}
body.v2 .lc-msg{display:grid;grid-template-columns:44px 1fr;column-gap:10px;padding:7px 16px 7px 14px;position:relative;border-left:2px solid transparent;transition:background .15s,border-color .15s}
@keyframes apMsgIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
body.v2 .lc-msg:hover{background:rgba(62,224,255,.05);border-left-color:var(--cy)}
body.v2 .lc-msg .av{grid-row:span 2;width:34px;height:34px;border-radius:50%;font:600 13px var(--ff);display:grid;place-items:center;border:1px solid rgba(62,224,255,.35);box-shadow:0 0 10px rgba(62,224,255,.15)}
body.v2 .lc-msg .who{display:flex;align-items:center;gap:7px;min-width:0;flex-wrap:wrap}
body.v2 .lc-msg .lc-t{order:9;font:10.5px var(--mono);color:var(--mu);margin-left:2px}
/* the small rank / tier badge next to every chatter's name */
body.v2 .lc-bslot{display:inline-flex;align-items:center;order:1}
body.v2 .lc-bslot img,body.v2 .nbdg-i{width:18px!important;height:18px!important;display:block;filter:drop-shadow(0 0 5px rgba(62,224,255,.45))}
body.v2 .lc-nm{order:2;display:inline-flex;align-items:baseline;gap:6px;min-width:0}
body.v2 .lc-nm b{font-weight:600;font-size:14px}
body.v2 .lc-handle{display:none}
body.v2 .lc-row{display:flex;align-items:flex-start;gap:8px}
body.v2 .lc-text{margin:2px 0 0;font-size:14.5px;line-height:1.5;color:var(--tx-2);word-break:break-word;flex:1}
body.v2 .lc-acts,body.v2 .lc-msg .rep{opacity:0;transition:opacity .15s}
body.v2 .lc-msg:hover .lc-acts,body.v2 .lc-msg:hover .rep{opacity:1}
body.v2 .lc-ab,body.v2 .lc-msg .rep{width:26px;height:26px;border:1px solid var(--line-2);border-radius:3px;background:rgba(0,0,0,.4);color:var(--mu);font-size:12px}
body.v2 .lc-ab:hover,body.v2 .lc-msg .rep:hover{color:var(--cy);border-color:var(--cy)}
body.v2 .lc-msg.mod .lc-text{color:var(--cy)}
body.v2 .lc-msg.mod{background:linear-gradient(90deg,rgba(62,224,255,.07),transparent)}
body.v2 .lc-sys{padding:10px 16px;font:12px var(--mono);color:var(--mu);list-style:none}
body.v2 .lc-pill{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);font:11px var(--mono);padding:6px 12px;border-radius:99px;background:var(--cy);color:#001018;border:0;box-shadow:0 0 18px var(--cy)}
body.v2 .lc-foot{border-top:1px solid rgba(62,224,255,.15);padding:12px 14px;background:rgba(0,0,0,.35)}
body.v2 .lc-say{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
body.v2 .lc-say input,body.v2 .lc-joinrow input{flex:1;min-width:0;height:44px;padding:0 14px;border:1px solid rgba(62,224,255,.3);border-radius:3px;background:#01040a;color:var(--tx);font:14px var(--mono)}
body.v2 .lc-say input:focus,body.v2 .lc-joinrow input:focus{outline:0;border-color:var(--cy);box-shadow:0 0 0 3px rgba(62,224,255,.12)}
body.v2 .lc-say input::placeholder{color:var(--mu)}
body.v2 .lc-say .btn,body.v2 .lc-join .btn{height:44px;border-radius:3px;background:var(--acc);border-color:var(--acc);color:#fff;font:600 13px var(--ff);box-shadow:0 0 18px rgba(47,107,255,.35)}
body.v2 .lc-joinhelp{font-size:13px;color:var(--mu);margin:0 0 8px}
body.v2 .lc-joinhelp .linkbtn{color:var(--cy);background:none;border:0;padding:0;text-decoration:underline;font:inherit}
body.v2 .lc-joinrow{display:flex;gap:10px;align-items:center;margin-bottom:8px}
body.v2 .lc-rules summary{font:11px var(--mono);color:var(--mu);cursor:inherit}
body.v2 .lc-rules ol{font-size:13px;color:var(--tx-2)}
body.v2 .ap-joinrow{display:flex;gap:12px;align-items:center;margin-top:8px}
body.v2 .ap-rules-l{font:11px var(--mono);color:var(--mu)}
body.v2 .lc-closed{font:12px var(--mono);color:var(--mu)}
/* who's here */
body.v2 .lc-sidecol{padding:14px 16px;background:linear-gradient(180deg,rgba(62,224,255,.04),transparent)}
body.v2 .lc-sidecol h3{margin:0 0 12px;font:500 10.5px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--cy)}
body.v2 .lc-bigon{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
body.v2 .lc-bigon b{font:560 42px/1 var(--ff);font-stretch:76%;color:#fff;text-shadow:0 0 18px rgba(46,229,157,.45)}
body.v2 .lc-bigon span:last-child{font:11px var(--mono);color:var(--mu);text-transform:uppercase;letter-spacing:.12em}
body.v2 .lc-onsub{font:11px var(--mono);color:var(--mu);margin:0 0 14px}
body.v2 .lc-olist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
body.v2 .lc-olist li{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--tx-2)}
body.v2 .lc-olist .av{width:26px;height:26px;border-radius:50%;font-size:11px;position:relative}
body.v2 .lc-olist .av::after{content:"";position:absolute;right:-1px;bottom:-1px;width:8px;height:8px;border-radius:50%;background:var(--ok);border:2px solid #02050c}
body.v2 .lc-onwait{font-size:12px;color:var(--mu)}
/* closed state stays slim */
body.v2 .lchat.lc-isclosed .lc-list{height:auto;max-height:200px}
@media (max-width:820px){body.v2 .lc-grid{grid-template-columns:1fr}body.v2 .lc-sidecol{display:none}body.v2 .lc-list{height:300px}body.v2 .lc-main{border-right:0}}

/* ===== Thread page ===== */
body.v2 .fcrumb{font:11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mu);margin:36px 0 10px}
body.v2 .fcrumb a{color:var(--mu)}
body.v2 .fcrumb a:hover{color:var(--cy)}
body.v2 .ft-h{padding:6px 0 24px;border-bottom:1px solid rgba(62,224,255,.15);margin-bottom:22px}
body.v2 .ft-h h1{font-size:clamp(28px,3.4vw,48px);font-stretch:80%;font-weight:540;letter-spacing:-.03em;line-height:1.02;text-shadow:0 0 30px rgba(47,107,255,.25)}
body.v2 .ft-top{display:flex;gap:16px;align-items:flex-start}
body.v2 .fpost{display:grid;grid-template-columns:200px 1fr;gap:0;margin:0 0 14px;border:1px solid rgba(62,224,255,.16);border-radius:4px;overflow:hidden;background:linear-gradient(160deg,rgba(14,22,40,.7),rgba(5,7,12,.85));position:relative}
body.v2 .fpost:target{border-color:var(--cy);box-shadow:0 0 30px rgba(62,224,255,.2)}
body.v2 .fpost.is-solved{border-color:rgba(46,229,157,.5)}
/* author card: the poster's profile panel, with their tier and rank badges */
body.v2 .mcard{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:20px 14px;border-right:1px solid rgba(62,224,255,.14);background:radial-gradient(90% 60% at 50% 0%,rgba(47,107,255,.16),transparent 70%),rgba(0,0,0,.25)}
body.v2 .mcard .av.lg{width:72px;height:72px;border-radius:50%;font-size:26px;border:2px solid rgba(62,224,255,.5);box-shadow:0 0 0 4px rgba(62,224,255,.08),0 0 24px rgba(62,224,255,.3)}
body.v2 .nbline{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:6px}
body.v2 .nbline .mc-name{font-weight:600;font-size:15px}
body.v2 .nbline .nbdg,body.v2 .nbline [class*="nbdg"]{display:inline-flex}
body.v2 .mcard .nbdg-i,body.v2 .mcard img[src*="/badges/"]{width:40px!important;height:40px!important;filter:drop-shadow(0 0 10px rgba(62,224,255,.5))}
body.v2 .mcard .nbline > span:not(.mc-name){display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
body.v2 .mc-dn{font:11px var(--mono);color:var(--mu)}
body.v2 .mc-flair{font:10.5px var(--mono);letter-spacing:.06em;color:var(--cy);border:1px solid rgba(62,224,255,.35);border-radius:99px;padding:2px 9px}
body.v2 .mc-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;width:100%;margin:10px 0 0;padding-top:10px;border-top:1px solid rgba(62,224,255,.12)}
body.v2 .mc-stats div{display:flex;flex-direction:column;gap:2px}
body.v2 .mc-stats dt{font:9.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mu)}
body.v2 .mc-stats dd{margin:0;font:500 13px var(--mono);color:var(--tx)}
body.v2 .fp-col{padding:16px 22px 14px;min-width:0;display:flex;flex-direction:column}
body.v2 .fp-h{display:flex;align-items:center;gap:12px;font:11px var(--mono);color:var(--mu);margin-bottom:10px}
body.v2 .fp-n{color:var(--cy)}
body.v2 .newhere{font:10px var(--mono);text-transform:uppercase;letter-spacing:.1em;color:#001018;background:var(--cy);padding:2px 8px;border-radius:99px}
body.v2 .fp-body{font-size:15.5px;line-height:1.65;color:var(--tx-2);flex:1}
body.v2 .fp-body a{color:var(--cy)}
body.v2 .fp-body code,body.v2 .fp-body pre{font-family:var(--mono);background:#02040a;border:1px solid var(--line);border-radius:3px}
body.v2 .fp-body pre{padding:12px;overflow:auto}
body.v2 .fp-act{display:flex;align-items:center;gap:10px;margin-top:14px;padding-top:10px;border-top:1px solid var(--line)}
body.v2 .vote{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line-2);border-radius:3px;padding:2px}
body.v2 .vote button{width:26px;height:26px;border:0;background:none;color:var(--mu);font-size:11px}
body.v2 .vote button.on,body.v2 .vote button:hover:not(:disabled){color:var(--cy)}
body.v2 .vote .vn{font:500 13px var(--mono);min-width:24px;text-align:center}
body.v2 .fp-act .rx{border:1px solid var(--line-2);border-radius:99px;background:none;color:var(--tx-2);font-size:12px;padding:4px 10px}
body.v2 .fp-act .rx:hover{border-color:var(--cy);color:var(--cy)}
body.v2 .freply,body.v2 .fcomp-dock{border:1px solid rgba(62,224,255,.22);border-radius:4px;padding:18px;background:rgba(2,6,14,.9);margin:20px 0}
body.v2 .freply textarea,body.v2 .fform textarea,body.v2 .fform input[type=text],body.v2 .fform input[type=email]{width:100%;background:#01040a;border:1px solid var(--line-2);border-radius:3px;color:var(--tx);font:15px var(--ff);padding:12px}
body.v2 .freply textarea:focus,body.v2 .fform textarea:focus,body.v2 .fform input:focus{outline:0;border-color:var(--cy);box-shadow:0 0 0 3px rgba(62,224,255,.12)}
@media (max-width:720px){body.v2 .fpost{grid-template-columns:1fr}body.v2 .mcard{flex-direction:row;flex-wrap:wrap;text-align:left;border-right:0;border-bottom:1px solid rgba(62,224,255,.14);padding:12px 14px}body.v2 .mcard .av.lg{width:44px;height:44px;font-size:17px}body.v2 .nbline{flex-direction:row;align-items:center}body.v2 .mcard .nbdg-i,body.v2 .mcard img[src*="/badges/"]{width:24px!important;height:24px!important}body.v2 .mc-stats{display:none}}

/* ===== Profiles ===== */
body.v2 .fprofile .prof,body.v2 .uprof{border:1px solid rgba(62,224,255,.22);border-radius:4px;background:radial-gradient(70% 90% at 15% 0%,rgba(47,107,255,.18),transparent 60%),linear-gradient(160deg,rgba(14,22,40,.8),rgba(5,7,12,.9));padding:28px}
body.v2 .fprofile img[src*="/badges/"]{filter:drop-shadow(0 0 12px rgba(62,224,255,.5))}
body.v2 .fprofile .av{border:2px solid rgba(62,224,255,.5);box-shadow:0 0 24px rgba(62,224,255,.3)}

@media (prefers-reduced-motion:reduce){body.v2 .lchat::after,body.v2 .lc-msg,body.v2 .lchat .live{animation:none}}

body.v2 .mcard .av::before,body.v2 .mcard .av::after{display:none!important}
body.v2 .mcard .av.lg{background:radial-gradient(circle at 35% 30%,#1d4fd6,#071533)!important;color:#fff;font-weight:600}
/* full chat page: a taller console */
body.v2 .lchat.lc-full{margin-top:40px}
body.v2 .lchat.lc-full .lc-list{height:min(62vh,640px)}
body.v2 .lchat.lc-full .lc-head{flex-wrap:wrap}
body.v2 .lchat.lc-full .lc-pin{flex:1 1 100%}
/* stats row: label and value centered on each other, date on one line */
body.v2 .mc-stats{grid-template-columns:1fr 1fr 1.5fr;gap:0}
body.v2 .mc-stats div{align-items:center;text-align:center;padding:0 2px;min-width:0}
body.v2 .mc-stats div + div{border-left:1px solid rgba(62,224,255,.12)}
body.v2 .mc-stats dt,body.v2 .mc-stats dd{margin:0;padding:0;width:100%;text-align:center;float:none}
body.v2 .mc-stats dd{font-size:12px;white-space:nowrap}

/* ===== QC 10/30 ===== */
/* light theme: the nav gets a light band; the console panels stay dark screens with light text */
:root[data-theme="light"] body.v3 .nav{background:rgba(244,245,247,.86);border-bottom-color:#dcdfe6}
:root[data-theme="light"] body.v2 :is(.lchat,#lchat,.lc-sidecol,.fpost,.mcard,.lc-pin){--tx:#eef2ff;--tx-2:#b9c2d6;--mu:#8f98ad;--cy:#3ee0ff;--line:rgba(255,255,255,.1);--line-2:rgba(255,255,255,.18);--acc-hi:#8fb2ff;--text:#eef2ff;--text2:#b9c2d6;color:#eef2ff}
:root[data-theme="light"] body.v2 :is(.lchat,#lchat,.fpost){background:linear-gradient(160deg,#0e1830,#060912)}
:root[data-theme="light"] body.v2 .lc-pin{background:#0b1430}
:root[data-theme="light"] body.v2 .lc-pin a,:root[data-theme="light"] body.v2 .lc-head h2,:root[data-theme="light"] body.v2 .fp-n{color:#3ee0ff}
:root[data-theme="light"] body.v2 :is(.lc-nm b,.mc-name){color:#cfe0ff}
/* badge sizes win over the older chat-v3.css / forum-theme.css rules: 18px by chat names, 40px on author cards (32px on phones), 16px in the online list */
html body:not(#zz):not(#zy):not(#zx) .lchat .lc-msg .lc-bslot :is(.nbdg,.nbdg-i,img,.nbdg *){width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;max-width:18px!important;max-height:18px!important}
html body:not(#zz):not(#zy):not(#zx) .mcard .nbdg,html body:not(#zz):not(#zy):not(#zx) .mcard .nbdg :is(img,.nbdg-i),html body:not(#zz):not(#zy):not(#zx) .mcard img[src*="/badges/"]{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;max-width:40px!important;max-height:40px!important}
@media (max-width:720px){html body:not(#zz):not(#zy):not(#zx) .mcard .nbdg,html body:not(#zz):not(#zy):not(#zx) .mcard .nbdg :is(img,.nbdg-i),html body:not(#zz):not(#zy):not(#zx) .mcard img[src*="/badges/"]{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;max-width:32px!important;max-height:32px!important}}
html body:not(#zz):not(#zy):not(#zx) .lc-olist :is(.nbdg,.nbdg-i,.nbdg img){width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;max-width:16px!important;max-height:16px!important}
/* no sideways scroll from corner brackets; tab row starts at the left edge; room for the phone tab bar */
body.v2{overflow-x:clip}
body.v2 .ftabs2{justify-content:flex-start}
@media (max-width:720px){
  body.v2{padding-bottom:64px}
  body.v2 .mc-name,body.v2 .mcard .nm{overflow-wrap:anywhere;min-width:0}
  body.v2 .crumbs a,body.v2 .fp-n,body.v2 .foot a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
  body.v3 .nav .tt,body.v3 .nav .menu-btn{min-width:44px;min-height:44px}
  body.v3 .nav .btn.sm{min-height:44px}
}
/* the forum panels draw their own frames: drop the generic HUD corner spans here (they caused a stray square and 1px sideways scroll) */
body.v2 :is(.lchat,.fsec) > .ck{display:none}
:root[data-theme="light"] body.v2 .fsec-h{background:#e7ecf5!important;color:#0a0b0e}
:root[data-theme="light"] body.v2 .fsec-h *{color:#3a3e47!important}
:root[data-theme="light"] body.v2 .fsec-h > :first-child{color:#0a6f8a!important}
:root[data-theme="light"] body.v2 .fpost .vote{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.16);color:#eef2ff}

/* ===== QC 10/30 round 2 ===== */
/* phone: chat-v3.css paints the full-screen chat with the light page bg; keep the console dark in light theme */
@media (max-width:720px){:root[data-theme="light"].lc-open body:not(#zz):not(#zy) .lchat.lc-forum{background:linear-gradient(160deg,#0e1830,#060912)!important;background-color:#060912!important}
  :root[data-theme="light"].lc-open body:not(#zz):not(#zy) .lchat.lc-forum :is(.lc-foot,.lc-joinrow,.lc-join,.lc-say){background-color:transparent;color:#eef2ff}}
/* thread posts: a long unbroken username must not stretch the post on phones */
body.v2 .fpost,body.v2 .fpost > *,body.v2 .mcard,body.v2 .mcard .nbline{min-width:0;max-width:100%}
body.v2 .mcard .mc-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* light theme contrast (WCAG AA) */
:root[data-theme="light"] body.v2 .chip.solved{color:#137a4f;border-color:#137a4f}
:root[data-theme="light"] body.v2 .chip.pin{color:#2a55d6;border-color:#2a55d6}
:root[data-theme="light"] body.v2 .fdraft{color:#3a3e47;border-color:#6b7080}
:root[data-theme="light"] body.v2 .fp-h > time{color:#9aa3b8}
:root[data-theme="light"] body.v2 :is(.lc-joinrow,.lc-say) input::placeholder{color:#9aa3b8}
:root[data-theme="light"] body.v2 .ftabs2 button{color:#5a5f6e}
:root[data-theme="light"] body.v2 .ftabs2 button[aria-selected=true]{color:#0a0b0e}
:root[data-theme="light"] body.v2 :is(.bcount,.tcount) span{color:#4f5463}
html[data-theme="light"]:not(#zz):not(#zy):not(#zx) body.v2 .rkx-name.rkc-max-compute{background:none!important;color:#3f5800!important;-webkit-text-fill-color:#3f5800!important;filter:none!important;animation:none!important}
body.v2 .fcrumb a.fc-board:empty{display:none}
