/* QyloVerse Hub v2: dark glass, neon accents. No external fonts or CDNs. */
:root{
  --fs:100%;
  --bg:#07060f; --text:#f4f2ff; --muted:#b9b4d6; --line:rgba(255,255,255,.14);
  --glass:rgba(255,255,255,.07); --glass2:rgba(255,255,255,.12); --deep:rgba(0,0,0,.28);
  --cyan:#22d3ee; --violet:#a78bfa; --pink:#f472b6; --lime:#a3e635; --amber:#fbbf24; --red:#fb7185; --orange:#fb923c;
  --focus:#ffe14d; --radius:20px;
  --font:"Inter","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Consolas,monospace;
}
*{box-sizing:border-box}
html{font-size:var(--fs);scroll-behavior:smooth;-webkit-text-size-adjust:100%}
html.large{--fs:125%} html.xl{--fs:150%}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:1rem;line-height:1.5;min-height:100vh;overflow-x:hidden}
h1,h2,h3,h4,p,ul,dl,dd,figure{margin:0} ul{padding:0;list-style:none}
h1,h2,h3,h4{line-height:1.2;color:var(--text)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--cyan)}
code{background:var(--deep);padding:1px 6px;border-radius:6px;font-size:.85em;font-family:var(--mono)}
.visually-hidden,.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:8px;top:-300px;background:var(--focus);color:#000;padding:.7rem 1rem;border-radius:10px;z-index:100;font-weight:700}
.skip:focus{top:8px}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:10px}
.muted{color:var(--muted)} .small{font-size:.86rem} .strong{font-weight:700}
[hidden]{display:none!important}

/* background */
.bg{position:fixed;inset:0;z-index:-1;overflow:hidden;background:radial-gradient(1200px 700px at 80% -10%,#1b0f3d 0,transparent 60%),var(--bg)}
.orb{position:absolute;border-radius:50%;filter:blur(90px);opacity:.45;animation:float 22s ease-in-out infinite}
.o1{width:520px;height:520px;background:#6d28d9;left:-120px;top:-100px}
.o2{width:460px;height:460px;background:#0891b2;right:-100px;top:240px;animation-delay:-8s;opacity:.33}
.o3{width:380px;height:380px;background:#be185d;left:35%;bottom:-160px;animation-delay:-14s;opacity:.26}
.bggrid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse at 50% 30%,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse at 50% 30%,#000 20%,transparent 75%)}
@keyframes float{50%{transform:translate(60px,40px) scale(1.08)}}

/* shell */
.app{display:grid;grid-template-columns:268px 1fr;min-height:100vh}
.side{position:sticky;top:0;height:100vh;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:14px;border-right:1px solid var(--line);background:rgba(8,6,20,.62);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;padding:4px 8px;color:var(--text)}
.brand-mark{width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,var(--violet),var(--cyan));display:grid;place-items:center;flex:none}
.brand-mark:after{content:"";width:14px;height:14px;border-radius:50%;border:3px solid #0a0620}
.brand-name{font-size:1.2rem;font-weight:600;letter-spacing:-.01em}
.brand-name strong{background:linear-gradient(90deg,var(--cyan),var(--violet),var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700}
.nav{display:flex;flex-direction:column;gap:5px}
.nav a{display:flex;align-items:center;gap:12px;padding:.68rem .9rem;border-radius:14px;text-decoration:none;font-weight:600;color:var(--muted);border:1px solid transparent;transition:background .2s,color .2s}
.nav a:hover{background:var(--glass);color:var(--text)}
.nav a[aria-current="page"]{background:linear-gradient(90deg,rgba(167,139,250,.28),rgba(34,211,238,.14));color:#fff;border-color:rgba(167,139,250,.5);box-shadow:0 0 24px rgba(167,139,250,.25)}
.nav .ico{display:flex;flex:none} .nav .ico svg{width:21px;height:21px}
.nav .nav-sep{height:1px;background:var(--line);margin:6px 4px}
.nav a.nav-private{border:1px dashed rgba(251,191,36,.55);color:#ffe3a0}
.nav a.nav-private[aria-current="page"]{background:linear-gradient(90deg,rgba(251,191,36,.28),rgba(251,113,133,.12));border-style:solid;border-color:var(--amber);color:#fff}
.side-card{background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:14px}
.mini-h{font-size:.76rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:10px;font-weight:700}
.presence-list{display:flex;flex-direction:column;gap:9px}
.presence-list li{display:flex;align-items:center;gap:10px;font-size:.88rem;line-height:1.25}
.side-foot{margin-top:auto;font-size:.8rem;color:var(--muted);display:flex;flex-direction:column;gap:8px}
.col{min-width:0;display:flex;flex-direction:column;min-height:100vh}
.top{flex-wrap:wrap;position:sticky;top:0;z-index:200;display:flex;align-items:center;gap:12px;padding:12px 28px;background:rgba(7,6,15,.94);border-bottom:1px solid var(--line)}
.search{position:relative;flex:1;min-width:200px;max-width:520px}
.search input{width:100%;padding:.7rem 1rem .7rem 2.7rem;background:var(--glass);border:1px solid var(--line);border-radius:99px;outline:none;color:var(--text)}
.search input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(34,211,238,.25)}
.search .ico{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);display:flex;pointer-events:none}
.search .ico svg{width:18px;height:18px}
#qres{position:absolute;left:0;right:0;top:calc(100% + 8px);background:#12102a;border:1px solid var(--line);border-radius:16px;padding:6px;box-shadow:0 20px 50px rgba(0,0,0,.6);z-index:30}
#qres li{display:flex;align-items:center;gap:10px;padding:.55rem .7rem;border-radius:10px;cursor:pointer}
#qres li[aria-selected="true"],#qres li:hover{background:rgba(167,139,250,.25)}
#qres li small{color:var(--muted);margin-left:auto}
.tools{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap;align-items:center}
.tool{display:inline-flex;align-items:center;gap:8px;background:var(--glass);border:1px solid var(--line);padding:.5rem .8rem;border-radius:99px;font-weight:600;font-size:.88rem;text-decoration:none;color:var(--text)}
.tool[aria-pressed="true"]{background:rgba(34,211,238,.2);border-color:var(--cyan);color:#fff;box-shadow:0 0 16px rgba(34,211,238,.35)}
.tool .ico{display:flex}.tool .ico svg{width:18px;height:18px}
.tool.signout{border-color:rgba(251,113,133,.65);color:#ffd2d9}
.tool.signout:hover{background:rgba(251,113,133,.22)}
.bell{position:relative;background:var(--glass);border:1px solid var(--line);border-radius:50%;width:46px;height:46px;display:grid;place-items:center;padding:0}
.bell .ico svg{width:22px;height:22px}
.nbadge{position:absolute;top:-4px;right:-4px;min-width:22px;height:22px;border-radius:99px;background:var(--pink);color:#12041a;font-weight:800;font-size:.75rem;display:grid;place-items:center;padding:0 5px;border:2px solid var(--bg)}
.notif-wrap{position:relative}
.npanel{position:absolute;right:0;top:calc(100% + 10px);width:400px;max-width:90vw;border-radius:18px;padding:14px;z-index:300;background:#14112e}
.npanel-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.npanel-h h2{font-size:1.05rem}
.link{background:none;border:0;color:var(--cyan);text-decoration:underline;font-weight:600}
#notifList{max-height:60vh;overflow:auto}
#notifList li{display:flex;gap:12px;padding:.65rem;border-radius:12px;align-items:flex-start}
#notifList li.unread{background:rgba(167,139,250,.16)}
#notifList p{font-size:.92rem}#notifList small{color:var(--muted)}
.glass{background:linear-gradient(160deg,rgba(255,255,255,.1),rgba(255,255,255,.04));border:1px solid var(--line);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);box-shadow:0 18px 50px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.12)}
main{flex:1;padding:22px 28px 40px;outline:none;min-width:0}
.wrap{max-width:none}
.site-footer{padding:16px 28px 30px;color:var(--muted);font-size:.84rem;border-top:1px solid var(--line)}
.site-footer p{margin:2px 0}
.site-footer .wrap{padding:0}

/* page heads, buttons, chips */
.page-head,.view-h{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.page-head h1,.view-h h1{font-size:2rem;letter-spacing:-.02em;line-height:1.15;outline:none}
.lead{color:var(--muted);margin-top:6px;max-width:75ch}
.grad{background:linear-gradient(90deg,var(--cyan),var(--violet) 55%,var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent}
.btn{display:inline-block;background:linear-gradient(90deg,#7c3aed,#06b6d4);color:#fff;border:0;border-radius:99px;padding:.6rem 1.15rem;font-weight:700;box-shadow:0 8px 24px rgba(124,58,237,.4);text-decoration:none}
.btn:hover{filter:brightness(1.12)}
.btn.ghost{background:var(--glass);border:1px solid var(--line);box-shadow:none}
.btn.sm{padding:.35rem .8rem;font-size:.86rem}
.chip,.chip-btn{display:inline-flex;align-items:center;gap:6px;background:var(--glass);border:1px solid var(--line);border-radius:99px;padding:.34rem .85rem;font-size:.88rem;font-weight:600;color:var(--text)}
button.chip[aria-pressed="true"],.chip-btn.is-active{background:rgba(167,139,250,.3);border-color:var(--violet);color:#fff}
.tag{display:inline-block;font-size:.74rem;font-weight:700;padding:.12rem .55rem;border-radius:99px;background:rgba(34,211,238,.16);color:#7ceaff;border:1px solid rgba(34,211,238,.45);white-space:nowrap}
.tag.ai{background:rgba(163,230,53,.16);color:#c6f26a;border-color:rgba(163,230,53,.5)}
.tag.hi{background:rgba(251,113,133,.16);color:#ff9fb0;border-color:rgba(251,113,133,.5)}
.tag.priv{background:rgba(251,191,36,.16);color:#ffe08a;border-color:rgba(251,191,36,.55)}

/* avatars */
.av{position:relative;display:inline-grid;place-items:center;flex:none;border-radius:50%;font-weight:700;color:#10051f;user-select:none}
.av.agent{border-radius:32%}
.av .st{position:absolute;right:-2px;bottom:-2px;width:34%;height:34%;border-radius:50%;border:2px solid #0d0b20;background:#64748b}
.av .st.recent{background:var(--lime)}.av .st.running{background:var(--cyan);animation:pulse 1.8s infinite}.av .st.owner{background:var(--violet)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,211,238,.7)}100%{box-shadow:0 0 0 10px rgba(34,211,238,0)}}
.stext{font-size:.76rem;font-weight:700;color:var(--muted)}

/* panels and cards (legacy names kept) */
.panel,.card{background:linear-gradient(160deg,rgba(255,255,255,.09),rgba(255,255,255,.035));border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:0 14px 40px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.1)}
.panel{margin-bottom:18px}
.card{padding:16px;border-radius:18px;box-shadow:none}
.card p{margin:6px 0}
.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.panel-head h2{font-size:1.2rem}
.panel>p.muted{margin-bottom:10px}
.card-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;flex-wrap:wrap}
.sub-h{margin:16px 0 10px;font-size:1rem}.sub-h:first-child{margin-top:0}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}
.notice{background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.6);border-radius:14px;padding:12px 16px;color:#ffe9b0;margin-bottom:14px}
.empty{border:1px dashed rgba(255,255,255,.32);background:var(--deep);border-radius:14px;padding:16px 18px}
.empty p{margin:6px 0 0}
.note-box{margin-top:16px;background:var(--deep);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.note-box h3{margin-bottom:6px;font-size:1rem}.note-box p{margin:6px 0}
blockquote{margin:8px 0 0;padding:10px 14px;border-left:4px solid var(--cyan);background:var(--deep);border-radius:0 12px 12px 0}
.rule-box{background:rgba(251,191,36,.1);border:2px solid var(--amber);border-left-width:8px;border-radius:16px;padding:16px 20px;margin:0 0 20px;color:#fff3cf}
.rule-box h2{color:var(--amber);margin-bottom:6px;font-size:1.05rem;text-transform:uppercase;letter-spacing:.06em}
.rule-box p{font-size:1.05rem;font-weight:500;line-height:1.55;max-width:90ch}

/* badges, pills (status is always text, never colour alone) */
.badge,.pill{display:inline-block;font-size:.76rem;font-weight:700;letter-spacing:.01em;padding:3px 10px;border-radius:99px;vertical-align:middle;white-space:nowrap;background:var(--glass2);color:var(--text);border:1px solid var(--line)}
.badge-confirm{background:rgba(167,139,250,.2);color:#d9ccff;border-color:rgba(167,139,250,.55)}
.badge-example{background:rgba(251,191,36,.16);color:#ffe08a;border:1px dashed var(--amber)}
.badge-claim{background:var(--glass2)}
.badge-indep,.pill-indep,.pill-ok,.pill-s-done,.pill-t-submission{background:rgba(163,230,53,.16);color:#c6f26a;border-color:rgba(163,230,53,.5)}
.pill-type{background:var(--glass2);color:var(--text)}
.pill-owner{background:#fff;color:#12041a;border-color:#fff}
.pill-learner,.pill-s-in_progress,.pill-t-marking{background:rgba(34,211,238,.16);color:#7ceaff;border-color:rgba(34,211,238,.5)}
.pill-volunteer,.pill-s-handed_off,.pill-t-report{background:rgba(167,139,250,.2);color:#d9ccff;border-color:rgba(167,139,250,.55)}
.pill-low,.pill-s-parked{background:rgba(251,191,36,.16);color:#ffe08a;border-color:rgba(251,191,36,.55)}
.pill-s-new_quoted,.pill-t-assessment{background:rgba(251,146,60,.16);color:#ffc08a;border-color:rgba(251,146,60,.55)}
.pill-s-queued,.pill-rest,.pill-unknown,.pill-t-other{background:rgba(148,163,184,.16);color:#d5deea;border-color:rgba(148,163,184,.5)}
.agent-grok{background:rgba(163,230,53,.16);color:#c6f26a;border-color:rgba(163,230,53,.5)}
.agent-claude{background:rgba(251,146,60,.16);color:#ffc08a;border-color:rgba(251,146,60,.55)}
.agent-other{background:var(--glass2)}

/* tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:18px}
.tile{background:linear-gradient(160deg,rgba(255,255,255,.1),rgba(255,255,255,.04));border:1px solid var(--line);border-radius:18px;padding:16px 18px;border-top:4px solid var(--cyan)}
.tile-n{font-size:2.1rem;font-weight:800;line-height:1;letter-spacing:-.02em}
.tile-l{color:var(--muted);font-size:.9rem;margin:6px 0 4px}
.t-queued{border-top-color:#94a3b8}.t-handed{border-top-color:var(--violet)}.t-parked{border-top-color:var(--amber)}.t-done{border-top-color:var(--lime)}.t-newq{border-top-color:var(--orange)}.t-progress{border-top-color:var(--cyan)}
.summary-badge-row:empty{display:none}

/* tables */
.table-scroll{overflow-x:auto;position:relative}
table.grid{width:100%;border-collapse:collapse;font-size:.93rem}
.grid th,.grid td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
.grid thead th{font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;white-space:nowrap}
.grid tbody th[scope="row"]{font-weight:700}
.grid .num{text-align:center;width:1%;white-space:nowrap}
.grid .zero{color:#7f7aa0}
.grid .amt{text-align:right;white-space:nowrap}
.grid tfoot th,.grid tfoot td{border-top:2px solid var(--line);border-bottom:0;font-weight:700}
.group-row th{background:var(--deep);color:var(--violet);font-size:.84rem;text-transform:none;letter-spacing:.02em}
.bar-col{min-width:140px;vertical-align:middle}
.vstack,.stack{display:flex;height:10px;border-radius:6px;overflow:hidden;background:rgba(255,255,255,.12)}
.seg-queued{background:#94a3b8}.seg-in_progress{background:var(--cyan)}.seg-handed_off{background:var(--violet)}.seg-parked{background:var(--amber)}.seg-done{background:var(--lime)}.seg-new_quoted{background:var(--orange)}
.tasks td:last-child{min-width:110px}
.row-unsure td{background:rgba(251,191,36,.12)}
.row-done td,.row-done th{opacity:.6}
.row-current{background:rgba(34,211,238,.1)}
.meter{height:8px;background:rgba(255,255,255,.14);border-radius:6px;overflow:hidden;margin:12px 0 8px}
.meter span{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--violet));border-radius:6px}
.small-meter{height:6px;margin:2px 0 4px}
.waiting-list{display:grid;gap:10px}
.waiting-list li{display:flex;gap:12px;padding:12px 14px;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.35);border-radius:14px;align-items:flex-start}
.dot{width:10px;height:10px;border-radius:50%;margin-top:7px;flex:none}.dot-parked{background:var(--amber)}
.calm{color:#ffe3a0}

/* entities, clients, facts */
.entity .full-name,.full-name{color:var(--muted);margin-top:2px}
.ent-qyloverse{border-top:4px solid var(--cyan)}.ent-csi{border-top:4px solid var(--violet)}.ent-independent{border-top:4px solid var(--lime)}.ent-teaching{border-top:4px solid var(--orange)}
.group-teaching{border-left:6px solid var(--orange)}.group-independent{border-left:6px solid var(--lime)}.group-csi{border-left:6px solid var(--violet)}.group-qyloverse{border-left:6px solid var(--cyan)}
.ent-head{display:flex;gap:12px;align-items:center}
.flags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.facts{margin:10px 0 0;display:grid;gap:6px}
.facts div{display:grid;grid-template-columns:minmax(6rem,8rem) 1fr;gap:8px;font-size:.9rem}
.facts dt{color:var(--muted)}.facts dd{margin:0}
.link-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:10px 0}
.link-arrow{font-size:1.4rem;color:var(--cyan);font-weight:700}
.client.kind-client{border-top:4px solid var(--cyan)}.client.kind-entity{border-top:4px solid var(--lime)}
.client-panel.kind-client{border-left:6px solid var(--cyan)}.client-panel.kind-entity{border-left:6px solid var(--lime)}
.mini-list{display:grid;gap:7px;margin:8px 0;font-size:.92rem}
.done-list{margin:10px 0}.done-list summary{cursor:pointer;color:var(--cyan);font-weight:700}
.stages{display:grid;gap:8px;margin:8px 0;font-size:.92rem}
.books-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.filters{display:flex;gap:12px;flex-wrap:wrap;margin:6px 0 14px;align-items:center}
.filters label{font-size:.85rem;color:var(--muted);display:grid;gap:4px}
select{font:inherit;padding:8px 12px;border-radius:12px;border:1px solid var(--line);background:#16132f;color:var(--text);min-width:160px}
.class-filter{margin-top:0}

/* relationship, story, books */
.rel{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:center}
.rel-side{border:1px solid var(--line);border-radius:16px;padding:16px;background:var(--deep)}
.rel-side p{margin:4px 0}.rel-side h3{margin:8px 0 2px;font-size:1.2rem}
.rel-fba{border-top:4px solid var(--violet)}.rel-cr{border-top:4px solid var(--lime)}
.rel-mid{display:grid;justify-items:center;text-align:center;gap:2px;color:var(--muted)}
.sview h3,.story h3{margin-bottom:12px}
.story-halves{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:stretch}
.half{border-radius:16px;padding:16px;border:1px solid var(--line)}
.half p{margin:8px 0 0}
.half-fba{background:rgba(167,139,250,.1)}.half-cr{background:rgba(163,230,53,.08)}
.half-arrow{align-self:center;font-size:1.6rem;color:var(--cyan);font-weight:700}
.books{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-top:4px}
.book{display:flex;gap:14px;border:1px solid var(--line);border-radius:16px;padding:14px;background:var(--deep)}
.book.b-learner{border-left:5px solid var(--cyan)}.book.b-volunteer{border-left:5px solid var(--violet)}
.cover{width:58px;height:80px;border-radius:6px 10px 10px 6px;background:linear-gradient(135deg,#3b1a8a,#0e5a73);color:#fff;display:grid;place-items:center;font-size:1.6rem;font-weight:800;flex:none;box-shadow:2px 3px 8px rgba(0,0,0,.5)}
.book-body{min-width:0}.book-body p{margin:4px 0}
.book .facts div{grid-template-columns:8rem 1fr}
.placeholder{color:var(--violet);font-style:italic}

/* teaching + agenda */
.class-chip{display:inline-block;font-size:.76rem;font-weight:700;padding:2px 9px;border-radius:99px;background:var(--glass2);white-space:nowrap}
.class-chip.c0,.lesson.c0{background:rgba(34,211,238,.18);color:#7ceaff}
.class-chip.c1,.lesson.c1{background:rgba(167,139,250,.22);color:#d9ccff}
.class-chip.c2,.lesson.c2{background:rgba(251,146,60,.2);color:#ffc08a}
.lesson{display:inline-flex;flex-direction:column;font-weight:700;font-size:.85rem;padding:6px 10px;border-radius:10px;margin:2px 4px 2px 0;background:var(--glass2)}
.lesson small{font-weight:400;opacity:.9;font-size:.75rem}
table.timetable td,table.timetable th{min-width:96px}
.strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.strip-day{border:1px solid var(--line);border-radius:14px;padding:10px 12px;background:var(--deep);display:grid;gap:6px;align-content:start}
.strip-day.is-today{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(34,211,238,.25)}
.strip-h{font-weight:700}
.strip-due{background:var(--glass);border-radius:8px;padding:6px 8px;font-size:.86rem}
.agenda{display:grid;gap:8px;margin:0 0 6px}
.agenda-item{display:flex;gap:12px;padding:10px 12px;border-radius:14px;background:var(--deep);border-left:4px solid var(--cyan)}
.agenda-teaching{border-left-color:var(--orange)}
.agenda-time{min-width:3rem;color:var(--muted);font-size:.86rem;padding-top:2px}

/* Task Board */
.tb-tile-claimed{border-top-color:var(--amber)}.tb-tile-in_progress{border-top-color:var(--cyan)}.tb-tile-done{border-top-color:var(--lime)}.tb-tile-blocked{border-top-color:var(--red)}
.tb-cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:20px;align-items:start}
.tb-col{background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:18px;padding:14px;min-width:0}
.tb-col-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.tb-col-head h2{font-size:1rem;text-transform:uppercase;letter-spacing:.07em}
.tb-n{display:inline-block;min-width:1.7em;text-align:center;background:#fff;color:#12041a;border-radius:99px;font-size:.8rem;padding:1px 8px;vertical-align:middle}
.tb-col-claimed{border-top:4px solid var(--amber)}.tb-col-in_progress{border-top:4px solid var(--cyan)}.tb-col-done{border-top:4px solid var(--lime)}.tb-col-blocked{border-top:4px solid var(--red)}
.tb-list{display:grid;gap:10px}
.tb-card{background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.05));border:1px solid var(--line);border-radius:16px;padding:12px 14px;overflow-wrap:anywhere}
.tb-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.tb-who{display:flex;align-items:center;gap:8px}
.tb-id{font-weight:800;font-size:.85rem;color:var(--violet);letter-spacing:.05em}
.tb-title{font-size:1rem;margin:0 0 8px}
.tb-facts{margin:0;display:grid;gap:4px;font-size:.88rem}
.tb-facts div{display:grid;grid-template-columns:5.5em 1fr;gap:8px}
.tb-facts dt{color:var(--muted)}.tb-facts dd{margin:0}
.tb-facts .area{font-family:var(--mono);font-size:.78rem;color:#c6f26a;word-break:break-all}
.tb-notes{margin:8px 0 0;font-size:.9rem;border-top:1px dashed var(--line);padding-top:8px}
.tb-none{margin:4px 2px}
.tb-agent{font-weight:700}
.tb-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 14px}
.howto{margin:8px 0 8px 1.2em;padding:0;list-style:disc}.howto li{margin:4px 0}
.tb-card.is-new{box-shadow:0 0 0 2px rgba(34,211,238,.45)}

/* Home */
.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:22px}
.stories{display:flex;gap:16px;overflow-x:auto;padding:4px 4px 14px;margin-bottom:6px}
.story-btn{background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:8px;min-width:88px;padding:0;font-weight:600;font-size:.84rem;color:var(--text);text-align:center}
.ring{width:76px;height:76px;border-radius:50%;padding:3px;background:conic-gradient(from 20deg,var(--cyan),var(--violet),var(--pink),var(--amber),var(--cyan));display:grid;place-items:center}
.ring.seen{background:rgba(255,255,255,.25)}
.ring span{width:100%;height:100%;border-radius:50%;border:3px solid var(--bg);display:grid;place-items:center;font-size:1.3rem;font-weight:800}
.ring svg{width:28px;height:28px}
.posts{display:flex;flex-direction:column;gap:16px}
.post{padding:18px}
.post-h{display:flex;gap:12px;align-items:center;margin-bottom:10px}
.post-h b{display:block}.post-h small{color:var(--muted)}
.post-h .tags{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.post p.body{font-size:1.04rem}
.post .excerpt{margin-top:8px;color:var(--muted);font-size:.93rem}
.attach{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px;padding:.6rem .8rem;border-radius:14px;background:var(--deep);border:1px dashed var(--line);font-size:.9rem}
.attach a{font-weight:700}
.react{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;align-items:center}
.rbtn{display:inline-flex;align-items:center;gap:7px;background:var(--glass);border:1px solid var(--line);border-radius:99px;padding:.38rem .8rem;font-weight:700;font-size:.9rem}
.rbtn svg{width:18px;height:18px}
.rbtn[aria-pressed="true"]{background:rgba(163,230,53,.2);border-color:var(--lime);color:#e6ffb0}
.newpill{display:block;margin:0 auto 14px}
.more{display:block;margin:16px auto 0}
.rail{display:flex;flex-direction:column;gap:16px}
.rail h2,.rail .rh{font-size:1rem;margin-bottom:12px}
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.kpi{background:var(--deep);border:1px solid var(--line);border-radius:14px;padding:.8rem}
.kpi b{display:block;font-size:1.75rem;line-height:1.1;letter-spacing:-.02em}
.kpi span{font-size:.8rem;color:var(--muted)}
.live-row{display:flex;gap:10px;align-items:center;padding:.45rem 0}
.live-row div{min-width:0}.live-row b{display:block;font-size:.94rem}.live-row small{color:var(--muted);display:block}
.need-row{display:flex;gap:10px;align-items:flex-start;padding:.5rem 0;border-bottom:1px solid var(--line);font-size:.92rem}
.need-row:last-child{border-bottom:0}
.need-row .pill{flex:none}
.spark{width:100%;height:60px;margin-top:8px}
.fresh li{display:flex;justify-content:space-between;gap:10px;font-size:.88rem;padding:.25rem 0}
.fresh span:last-child{color:var(--muted);text-align:right}

/* stories modal */
.modal{position:fixed;inset:0;background:rgba(2,1,8,.8);display:grid;place-items:center;z-index:80}
.sview{width:min(440px,92vw);padding:20px;border-radius:26px;min-height:420px;display:flex;flex-direction:column;background:linear-gradient(160deg,hsl(var(--h,270) 70% 24%),#0b0a1c);border:1px solid var(--line)}
.story-bars{display:flex;gap:6px;margin-bottom:14px}
.story-bars i{flex:1;height:5px;border-radius:9px;background:rgba(255,255,255,.25);overflow:hidden}
.story-bars i b{display:block;height:100%;width:0;background:#fff}
.story-bars i.done b{width:100%}
.story-bars i.cur b{animation:fill 6s linear forwards}
.story-bars.paused i.cur b{animation:none;width:100%}
@keyframes fill{to{width:100%}}
.story-head{display:flex;justify-content:space-between;align-items:center}
.story-head h2{font-size:1.2rem}
.x{background:var(--glass);border:1px solid var(--line);border-radius:50%;width:42px;height:42px;font-size:1.5rem;line-height:1}
.story-text{flex:1;display:grid;align-items:center;font-size:1.45rem;font-weight:700;line-height:1.3;letter-spacing:-.01em;padding:12px 0}
.story-text small{display:block;font-size:.9rem;font-weight:500;color:var(--muted);margin-top:10px}
.story-nav{display:flex;justify-content:space-between;align-items:center}

/* network */
.net-wrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:stretch}
.net-wrap>.net-stage{grid-column:1;grid-row:1;min-width:0}
.net-wrap>.net-side{grid-column:2;grid-row:1;min-width:0}
/* Stray generic Full screen buttons must never become a grid track (that squashed the map into the 340px column). */
.net-wrap>.qvfs-open,#netStage>.qvfs-open{display:none!important}
.net-stage{position:relative;border-radius:var(--radius);overflow:hidden;min-height:680px;height:min(78vh,820px);background:radial-gradient(800px 500px at 50% 40%,rgba(124,58,237,.18),rgba(5,4,14,.85))}
#netCanvas{width:100%;height:100%;display:block;position:absolute;inset:0;touch-action:none;cursor:grab}
.net-tools{position:absolute;left:14px;top:14px;display:flex;gap:8px;flex-wrap:wrap;z-index:2;max-width:calc(100% - 28px)}
.legend{position:absolute;left:14px;bottom:12px;display:flex;gap:14px;flex-wrap:wrap;font-size:.8rem;background:rgba(5,4,14,.72);padding:.45rem .8rem;border-radius:99px;border:1px solid var(--line);z-index:2}
.legend span{display:inline-flex;gap:6px;align-items:center}.legend svg{width:16px;height:16px}
.net-side{display:flex;flex-direction:column;gap:14px}
.detail h2{font-size:1.25rem;margin:8px 0 2px}
.detail p{margin-top:6px}
.detail ul{display:flex;flex-direction:column;gap:6px;margin-top:10px;max-height:200px;overflow:auto}
.nodelist{max-height:230px;overflow:auto;display:flex;flex-direction:column;gap:4px}
.nodelist button,.detail li button{width:100%;text-align:left;background:var(--glass);border:1px solid transparent;border-radius:10px;padding:.4rem .7rem;display:flex;justify-content:space-between;gap:8px;font-size:.88rem}
.nodelist button[aria-pressed="true"]{border-color:var(--cyan);background:rgba(34,211,238,.18)}
.nodelist small{color:var(--muted)}

/* profile */
.prof-head{border-radius:var(--radius);overflow:hidden;margin-bottom:16px}
.pcover{height:150px;position:relative;background:radial-gradient(500px 200px at 20% 20%,rgba(34,211,238,.7),transparent),radial-gradient(500px 220px at 80% 80%,rgba(244,114,182,.7),transparent),linear-gradient(120deg,#3b1a8a,#0e2a4a)}
.pcover:after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:34px 34px}
.prof-body{padding:0 24px 22px;display:flex;gap:22px;align-items:flex-end;margin-top:-52px;position:relative;flex-wrap:wrap}
.prof-body .av{border:4px solid #12102a}
.prof-info{flex:1;min-width:260px;padding-top:56px}
.prof-info h1{font-size:1.8rem;line-height:1.15;outline:none}
.pgrid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px}
.statrow{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.stat{text-align:center;padding:14px}.stat b{display:block;font-size:2rem;line-height:1.1}.stat span{color:var(--muted);font-size:.85rem}
.vstackc{display:flex;flex-direction:column;gap:16px}
.vstackc h2{font-size:1.05rem;margin-bottom:10px}
.conn{display:flex;flex-wrap:wrap;gap:10px}
.conn a{display:flex;gap:8px;align-items:center;text-decoration:none;background:var(--glass);border:1px solid var(--line);padding:.3rem .8rem .3rem .3rem;border-radius:99px;font-size:.88rem;font-weight:600;color:var(--text)}
.ent-avatar{width:48px;height:48px;font-size:1rem}
.prof-link{font-weight:700}

.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,40px);opacity:0;background:#1d1940;border:1px solid var(--violet);padding:.7rem 1.2rem;border-radius:99px;font-weight:600;z-index:90;transition:.3s;pointer-events:none}
.toast.show{transform:translate(-50%,0);opacity:1}

/* Large text */
html.large .app,html.xl .app{grid-template-columns:300px 1fr}
html.large .tb-cols,html.xl .tb-cols{grid-template-columns:repeat(4,minmax(260px,1fr));overflow-x:auto}

/* High contrast */
body.hc{--bg:#000;--text:#fff;--muted:#f0f0f0;--line:#fff;--glass:#0c0c0c;--glass2:#1a1a1a;--deep:#0a0a0a;--cyan:#00e5ff;--violet:#d6b8ff;--pink:#ff7ac6;--lime:#b6ff3b;--amber:#ffd400;--orange:#ffb36b;--red:#ff8a9a}
body.hc .bg .orb,body.hc .bg .bggrid{display:none}
body.hc .bg{background:#000}
body.hc .glass,body.hc .side,body.hc .top,body.hc .npanel,body.hc .sview{background:#000;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;border:2px solid #fff}
body.hc .panel,body.hc .card,body.hc .tile,body.hc .tb-col,body.hc .tb-card,body.hc .kpi,body.hc .side-card,body.hc .book,body.hc .rel-side,body.hc .half,body.hc .strip-day,body.hc .empty,body.hc .note-box{background:#0a0a0a;border:2px solid #fff;box-shadow:none}
body.hc .btn{background:#ffe14d;color:#000;box-shadow:none}
body.hc .nav a[aria-current="page"]{background:#fff;color:#000;box-shadow:none}
body.hc .nav a{color:#fff}
body.hc .grad,body.hc .brand-name strong{background:none;color:var(--cyan);-webkit-text-fill-color:currentColor}
body.hc .tool[aria-pressed="true"],body.hc button.chip[aria-pressed="true"],body.hc .chip-btn.is-active{background:#ffe14d;color:#000;border-color:#ffe14d}
body.hc .tag,body.hc .badge,body.hc .pill{background:#000;color:#fff;border:2px solid #fff}
body.hc .rule-box{background:#000;color:#fff;border-color:#ffd400}
body.hc .notice{background:#000;color:#fff;border:2px solid #ffd400}
body.hc .ring span{border-color:#000}
body.hc a{color:#7ff0ff}
body.hc .grid th,body.hc .grid td{border-bottom:1px solid #fff}

/* Calm mode (the user's own switch) and the system setting */
body.mode-calm *,body.mode-calm *:before,body.mode-calm *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
body.mode-calm .story-bars i.cur b{width:100%}
/* Motion is decided only by the hub's Calm button (the system setting no longer switches it off). */


@media (max-width:1180px){.home-grid,.net-wrap,.pgrid{grid-template-columns:1fr}.tb-cols{grid-template-columns:repeat(4,250px);overflow-x:auto}.statrow{grid-template-columns:repeat(2,1fr)}}
@media (max-width:860px){
  .app,html.large .app,html.xl .app{grid-template-columns:minmax(0,1fr)}
  .side,.col,.top,.tools{min-width:0;max-width:100%}
  .search{min-width:0;flex:1 1 100%;max-width:none}
  .tools{margin-left:0;width:100%}
  .side{position:static;height:auto;padding:12px}
  .nav{flex-direction:row;flex-wrap:wrap}
  .side-card,.side-foot{display:none}
  .top{padding:10px 14px}main{padding:14px}
  .rel,.story-halves{grid-template-columns:1fr}
  .half-arrow{transform:rotate(90deg);justify-self:center}
  .facts div,.book .facts div{grid-template-columns:1fr;gap:0}
  .site-footer{padding:14px}
  table.tasks thead{display:none}
  table.tasks,table.tasks tbody,table.tasks tr,table.tasks td{display:block;width:100%}
  table.tasks tr{border:1px solid var(--line);border-radius:12px;margin-bottom:10px;padding:8px 4px}
  table.tasks td{border:0;padding:6px 12px}
  table.tasks td[data-label]:not(.no-label)::before{content:attr(data-label) ": ";color:var(--muted);font-size:.8rem}
}
.tb-aka{font-weight:500;opacity:.8;font-size:.85em}
.prof-actions{padding-top:56px}
.card h3 .av{vertical-align:middle;margin-right:6px}
.col,.home-grid>*,.net-wrap>*,.pgrid>*{min-width:0}
.stories{max-width:100%}

/* ---- Notifications panel (fix 1): solid, above everything, items size to their text, themed scrollbar ---- */
#notifPanel.npanel{position:fixed;z-index:1000;top:72px;right:16px;left:auto;width:min(420px,calc(100vw - 24px));max-width:none;max-height:min(70vh,calc(100vh - 96px));display:flex;flex-direction:column;overflow:hidden;
  background:#14112e;background-image:none;backdrop-filter:none;-webkit-backdrop-filter:none;border:1px solid rgba(167,139,250,.5);border-radius:18px;padding:14px;box-shadow:0 24px 70px rgba(0,0,0,.85),0 0 0 1px rgba(0,0,0,.6)}
#notifPanel[hidden]{display:none}
#notifPanel .npanel-h{flex:none;margin-bottom:10px;gap:12px}
#notifList{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:8px;padding:0 6px 2px 0;margin:0}
#notifList li{flex:none;min-width:0;height:auto;min-height:0;margin:0;display:flex;gap:12px;align-items:flex-start;padding:.7rem .8rem;border-radius:12px;background:#1d1a3d;border:1px solid rgba(255,255,255,.14);overflow:visible}
#notifList li.unread{background:#2a2160;border-color:rgba(167,139,250,.7)}
#notifList li>span{flex:none;display:flex;margin-top:2px}
#notifList li>div{flex:1 1 auto;min-width:0}
#notifList p{font-size:.92rem;line-height:1.4;margin:0 0 4px;overflow-wrap:anywhere;word-break:break-word}
#notifList small{display:block;line-height:1.3}
#notifList a{overflow-wrap:anywhere}
/* themed scrollbars (dark theme, not the white default) */
*{scrollbar-width:thin;scrollbar-color:#6d5bd0 #14112e}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:#14112e;border-radius:99px}
::-webkit-scrollbar-thumb{background:#6d5bd0;border-radius:99px;border:2px solid #14112e}
::-webkit-scrollbar-thumb:hover{background:#8b7cf0}
body.hc *{scrollbar-color:#ffe14d #000}
body.hc ::-webkit-scrollbar-track{background:#000}
body.hc ::-webkit-scrollbar-thumb{background:#ffe14d;border-color:#000}
body.hc #notifPanel.npanel{background:#000;border:2px solid #fff;box-shadow:none}
body.hc #notifList li{background:#000;border:2px solid #fff}
body.hc #notifList li.unread{border-color:#ffe14d;border-left-width:6px}
body.hc #notifList small{color:#fff}
@media (max-width:700px){#notifPanel.npanel{left:12px;right:12px;width:auto}}

#notifPanel .npanel-h .npclose{display:none}
@media (max-width:700px){#notifPanel.npanel{top:12px!important;bottom:auto;max-height:calc(100vh - 24px)!important;max-height:calc(100dvh - 24px)!important}#notifPanel .npanel-h .npclose{display:inline-flex}}
.npbtns{display:flex;gap:14px;align-items:center}
/* narrow screens at large text: nothing may push the page sideways */
.stories{overflow-x:auto;overflow-y:hidden;max-width:100%}
.badge{white-space:normal;max-width:100%}
@media (max-width:860px){main table.grid:not(.tasks){display:block;max-width:100%;overflow-x:auto}}
.post,.post *,.card p,.excerpt{overflow-wrap:anywhere;word-break:normal}
.excerpt{white-space:normal;min-width:0;max-width:100%}
/* fit-to-width at XL text */
.tiles{grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr))}
.books{grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr))}
.books-grid{grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr))}
.facts div,.book .facts div{grid-template-columns:minmax(0,8rem) minmax(0,1fr)}
.tile,.tile *,.panel,.panel p,.facts dd,.facts dt,.book,.book *{min-width:0;overflow-wrap:anywhere}
html.xl .tile-n{font-size:1.8rem}

/* ===== Responsive pass, 4 Nov 2026 =====
   Phones, tablets (portrait and landscape) and large zoom. Looks and data are unchanged.
   Rules: 16px body text, 14px minimum for small print, 44px minimum touch targets, nothing hidden from screen readers. */
.menu-btn{display:none}
.table-scroll:focus-visible,table.grid:focus-visible,.tb-cols:focus-visible,.stories:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}

/* small print floor: 14px (0.875rem scales with the Text size button) */
html body :is(.tag,.badge,.pill,.stext,.mini-h,.story-btn,.small,small,.grid thead th,.site-footer,.side-foot,#data-stamp,.nbadge,.tb-aka,.kpi span,code,.btn.sm,.tb-n,.tb-id,.agenda-time,.group-row th,.filters label,.cal-check,th){font-size:.875rem}
input,select,textarea{font-size:1rem}

/* touch targets: anything you tap is at least 44px tall, on touch screens and on tablet-width windows */
@media (pointer:coarse),(max-width:1180px){
  .tool,.chip,.chip-btn,.btn,.btn.sm,.rbtn,select,summary,.link,.nav a,a.brand,.bell,.npbtns .link,button.story-btn{min-height:44px}
  .tool,.chip,.chip-btn,.btn,.btn.sm,.rbtn,.link{display:inline-flex;align-items:center}
  .btn,.btn.sm,.chip,.chip-btn{justify-content:center}
  select{padding-top:.5rem;padding-bottom:.5rem}
  .bell{width:46px;height:46px;min-width:44px}
  summary{display:flex;align-items:center}
  .attach a,.post b a,.live-row b a,.mini-list a,p.small>a,a.prof-link,.panel-head a,.card-top a,table.grid td a,table.grid th a,.cards a.small,a.small,.link-row a,#notifList a{display:inline-flex;align-items:center;min-height:44px}
  a.prof-link,.live-row b a{min-width:44px;justify-content:center}
  .nodelist button,.detail li button,.conn a{min-height:44px}
  .cal-controls .cal-check{min-height:44px}
  .cal-controls .cal-check input{width:24px;height:24px;flex:none}
  input[type=checkbox],input[type=radio]{width:24px;height:24px}
  label:has(input[type=checkbox]),label:has(input[type=radio]),.cal-check{display:inline-flex;align-items:center;gap:10px;min-height:44px}
  .nav a{padding-top:.55rem;padding-bottom:.55rem}
}

/* Tablet landscape and small laptops (about 861 to 1180px): keep the sidebar, give the page the space */
@media (max-width:1180px) and (min-width:861px){
  .app,html.large .app,html.xl .app{grid-template-columns:236px minmax(0,1fr)}
  .side{padding:12px;gap:8px}
  .nav{gap:2px}
  .top{position:static;padding:10px 20px}
  main{padding:18px 20px 36px}
  .site-footer{padding:16px 20px 26px}
  .tb-cols{grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
  html.large .tb-cols,html.xl .tb-cols{grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
}
@media (max-height:700px) and (min-width:861px){ .side{position:static;height:auto} .top{position:static} }

/* Phones and tablets in portrait (up to 860px): top bar with a Menu button, tidy toolbar, readable tables */
@media (max-width:860px){
  html.hub-js .app{display:block}
  html.hub-js .side{position:sticky;top:0;z-index:260;height:auto;max-height:100vh;max-height:100dvh;overflow-y:auto;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;border-right:0;border-bottom:1px solid var(--line);background:rgba(8,6,20,.97)}
  html.hub-js .menu-btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:.4rem 1rem;border-radius:99px;background:var(--glass);border:1px solid var(--line);color:var(--text);font-weight:700;font-size:1rem}
  html.hub-js .menu-btn[aria-expanded="true"]{background:rgba(167,139,250,.3);border-color:var(--violet);color:#fff}
  html.hub-js .menu-btn svg{flex:none}
  html.hub-js .side:not(.menu-open) .nav,html.hub-js .side:not(.menu-open) .side-card,html.hub-js .side:not(.menu-open) .side-foot{display:none}
  html.hub-js .side.menu-open .nav,html.hub-js .side.menu-open .side-card,html.hub-js .side.menu-open .side-foot{flex:0 0 100%}
  html.hub-js .side.menu-open .side-card,html.hub-js .side.menu-open .side-foot{display:block}
  html.hub-js .side.menu-open .side-foot .signout{display:none}
  .nav{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:6px;padding:6px 0}
  .nav .nav-sep{grid-column:1/-1;margin:2px 4px}
  .nav a{min-height:48px}
  .brand{padding:2px 4px}
  .top{position:static;padding:10px 12px;gap:10px}
  .search input{min-height:48px}
  .tools{display:flex;flex-wrap:wrap;gap:8px;width:100%;margin:0}
  .tool{flex:1 1 auto;justify-content:center;white-space:normal;text-align:left;font-size:.95rem}
  .notif-wrap{flex:0 0 auto}
  main{padding:14px 12px 32px}
  .page-head h1,.view-h h1{font-size:clamp(1.6rem,7vw,2rem)}
  .pill,.tag{white-space:normal}
  .panel{padding:16px}
  .stories{gap:12px}
  /* tables: keep the grid, fit when it can, scroll sideways inside the table when it cannot */
  main table.grid:not(.tasks){display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  main table.grid:not(.tasks) th,main table.grid:not(.tasks) td{overflow-wrap:normal;word-break:normal;min-width:5.5rem;vertical-align:top;padding-left:.6rem;padding-right:.6rem}
  main table.grid:not(.tasks) th:first-child,main table.grid:not(.tasks) td:first-child{white-space:nowrap;min-width:4.5rem}
  .table-scroll table th:first-child,.table-scroll table td:first-child{position:sticky;left:0;z-index:1;background:#14112e}
  /* board: columns stack, one under the other */
  .tb-cols,html.large .tb-cols,html.xl .tb-cols{grid-template-columns:minmax(0,1fr);overflow:visible}
  .prof-info{padding-top:48px;min-width:0}
  .prof-body{padding:0 16px 18px}
  .site-footer{padding:14px 12px 28px}
  .calendar-grid,.month-grid{min-width:0}
}
@media (max-width:480px){
  .tiles,.statrow{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tool{flex:1 1 calc(50% - 8px)}
  .notif-wrap{flex:0 0 auto}
  .cards,.books,.books-grid{grid-template-columns:minmax(0,1fr)}
  .btn{max-width:100%;white-space:normal}
}
@media (max-width:360px){ .tool{flex:1 1 100%} }
@media (max-width:860px){
  .tool{border-radius:16px}
}
@media (max-width:560px){
  .prof-body{flex-direction:column;align-items:flex-start;gap:12px;margin-top:-44px}
  .prof-info,.prof-actions{padding-top:0;width:100%}
  .prof-info{flex:1 1 auto}
}
@media (max-width:480px){ html.large .tool,html.xl .tool{flex:1 1 100%} html.xl .menu-btn{padding:.4rem .8rem} }
/* very large zoom or text (a narrow window): single column everything */
html.xl .tiles,html.xl .statrow{grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr))}
#tb-hands th:first-child,#tb-hands td:first-child{white-space:nowrap}
@media (max-width:1180px){
  .need-row a,.cal-detail dd a,dd a[href^="http"]{display:inline-block;padding:.7rem 0;margin:-.7rem 0}
}
html body .legend span,html body .legend button,html body .legend label{font-size:.875rem}
html body .stat.card span{font-size:.875rem}

/* Full screen and zoom for hub sections (Qylot, 2026-11-04) */
.qvfs-host{position:relative}
.qvfs-open{display:inline-flex;align-items:center;gap:.3em;float:right;margin:0 0 .4em .5em;min-height:44px;min-width:44px;padding:.35em .8em;font:inherit;font-size:.95rem;font-weight:700;line-height:1.1;color:#fff;background:#1a3a8a;border:2px solid #fff;border-radius:8px;box-shadow:0 0 0 2px #1a3a8a;cursor:pointer;position:relative;z-index:2;touch-action:manipulation}
.qvfs-open:hover{background:#0d2566}
.qvfs-open:focus-visible,.qvfs-b:focus-visible{outline:4px solid #ffd400;outline-offset:2px}
.qvfs-open + table{clear:both}
html.qvfs-lock,html.qvfs-lock body{overflow:hidden}
.qvfs-overlay{position:fixed;inset:0;top:0;left:0;right:0;bottom:0;width:100%;height:100%;height:100dvh;z-index:2147483000;background:#fff;color:#000;display:flex;flex-direction:column;-webkit-text-size-adjust:100%}
.qvfs-overlay[hidden]{display:none}
.qvfs-overlay:fullscreen{width:100vw;height:100vh;background:#fff}
.qvfs-overlay:-webkit-full-screen{width:100vw;height:100vh;background:#fff}
.qvfs-bar{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;padding:.5rem;padding-top:max(.5rem,env(safe-area-inset-top));padding-right:max(.5rem,env(safe-area-inset-right));padding-left:max(.5rem,env(safe-area-inset-left));background:#000;color:#fff}
.qvfs-b{min-height:52px;min-width:56px;padding:.3em .8em;font:inherit;font-size:1.4rem;font-weight:700;color:#000;background:#fff;border:3px solid #fff;border-radius:10px;cursor:pointer;touch-action:manipulation}
.qvfs-close{background:#ffd400;border-color:#ffd400;margin-left:auto}
.qvfs-pct{font-size:1.3rem;font-weight:700;min-width:4.5ch;text-align:center}
.qvfs-body{flex:1 1 auto;overflow:auto;-webkit-overflow-scrolling:touch;padding:1rem;padding-bottom:max(1rem,env(safe-area-inset-bottom));font-size:1.15rem;line-height:1.6;touch-action:auto}
.qvfs-body .qvfs-in{max-width:none!important;width:auto!important;margin:0!important;box-shadow:none!important;color:#000;background:#fff;overflow-wrap:anywhere}
.qvfs-body .qvfs-in > .qvfs-open,.qvfs-body .qvfs-open{display:none}
.qvfs-body .qvfs-in a{color:#0033aa;text-decoration:underline}
.qvfs-body table{max-width:100%}
@media (max-width:600px){.qvfs-open{font-size:.85rem;padding:.3em .6em}.qvfs-b{font-size:1.2rem;min-width:48px}}
@media print{.qvfs-open{display:none}}
.qvfs-body .qvfs-in,.qvfs-body .qvfs-in *{color:#000!important;-webkit-text-fill-color:currentColor!important;background-color:#fff!important;background-image:none!important;text-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;opacity:1!important}
.qvfs-body .qvfs-in a,.qvfs-body .qvfs-in a *{color:#0033aa!important}
.qvfs-body .qvfs-in button,.qvfs-body .qvfs-in input,.qvfs-body .qvfs-in select,.qvfs-body .qvfs-in textarea{border:2px solid #000!important}


/* Evening 2026-11-05: network fullscreen, finances, leads */
.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px}
.page-head-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
#netStage:fullscreen,.net-stage:fullscreen,#netStage:-webkit-full-screen,
#netStage:-webkit-full-screen{
  width:100vw;height:100vh;min-height:100vh;height:100vh;border-radius:0;background:#05040e;
  display:block;padding:12px;box-sizing:border-box;position:relative;
}
#netStage:fullscreen #netCanvas,.net-stage:fullscreen #netCanvas,
#netStage:-webkit-full-screen #netCanvas{
  position:absolute!important;inset:12px!important;width:auto!important;height:auto!important;
}
#netStage:fullscreen .net-tools,#netStage:fullscreen .legend,
#netStage:-webkit-full-screen .net-tools,#netStage:-webkit-full-screen .legend{color:#fff;z-index:3}
#netStage.net-fs{min-height:100vh}
@media (max-width:1180px){
  .net-wrap>.net-stage,.net-wrap>.net-side{grid-column:1;grid-row:auto}
  .net-stage{height:min(70vh,720px);min-height:520px}
}
.btn[aria-pressed="true"]{outline:2px solid var(--cyan, #22d3ee);outline-offset:2px}
.fin-gate,.lead-form{max-width:520px}
.fin-gate .field, .lead-form .field{display:grid;gap:6px;margin:0 0 12px}
.fin-gate input,.lead-form input,.lead-form select,.lead-form textarea{
  font:inherit;font-size:1.05rem;padding:10px 12px;border-radius:10px;border:1.5px solid rgba(255,255,255,.2);
  background:rgba(255,255,255,.06);color:inherit;min-height:44px;
}
.fin-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin:16px 0}
.fin-card{padding:16px 18px;border-radius:14px}
.fin-card .amt{font-size:1.45rem;font-weight:800;letter-spacing:-.02em}
.fin-card .muted{font-size:.9rem}
.fin-warn{border:1px solid #f59e0b;background:rgba(245,158,11,.12);padding:10px 12px;border-radius:10px;margin:0 0 14px}
.leads-table{width:100%;border-collapse:collapse}
.leads-table th,.leads-table td{padding:10px 8px;border-bottom:1px solid rgba(255,255,255,.1);text-align:left;vertical-align:top}
.leads-table th{font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;opacity:.8}
.currency-usd{color:#34d399}
.currency-zar{color:#fbbf24}
.nav a[href="finances.html"] .tag,.nav a[href="leads.html"] .tag{margin-left:6px}
