/* ══════════════════════════════════════════════════════════════
   HARDLINE — broadcast reskin (LoL-esports language) as an OVERRIDE.
   Loaded AFTER game.css. Non-destructive: flips design tokens to a
   black/white base, flattens radii, swaps type, kills the colored
   glow. Identity accent is injected inline by game.js, so it survives.
   ══════════════════════════════════════════════════════════════ */

:root{
  /* ═══ FORGE SYSTEM — conformed to ui-reference.html (dark) ═══ */
  /* surfaces */
  --void:#0B0C0E; --void-1:#0B0C0E; --void-2:#0E1114;
  --bg:#0B0C0E; --surface:#0B0C0E; --panel:#0E1114;
  /* ink ladder */
  --text:#ECEEF1; --text-2:#B6BBC3; --text-3:#878D96;
  --ink:#ECEEF1; --ink-2:#B6BBC3; --ink-3:#878D96; --ink-4:#575C64;
  /* glass + hairlines */
  --glass:rgba(255,255,255,.03); --glass-2:rgba(255,255,255,.05);
  --brd:rgba(255,255,255,.08); --brd-2:rgba(255,255,255,.15);
  --line:rgba(255,255,255,.08); --line-2:rgba(255,255,255,.15); --line-3:rgba(255,255,255,.05);
  /* THE single accent = slate-blue */
  --acc:#2DD4BF; --accent:#2DD4BF; --accent-2:#6EE7D4;
  --accent-dim:rgba(45,212,191,.16); --accent-glow:rgba(45,212,191,.55);
  --ink-on-accent:#08090B;
  /* semantic state */
  --good:#7FBF97; --good-glow:rgba(127,191,151,.5); --warn:#E08863;
  /* identity realm colours */
  --violet:#B98BD0; --cyan:#2DD4BF; --green:#7FBF97; --blue:#2DD4BF;
  --gold:#C7A038; --rose:#C9799F;
  --panel-2:#151518; --raise:#1A1A1E; --black:#0B0C0E;
  /* type — IBM Plex Sans (words) · IBM Plex Mono (data) · Pixelify (hero numerals) */
  --disp:'IBM Plex Sans',system-ui,sans-serif; --sans:'IBM Plex Sans',system-ui,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,monospace; --display:'Pixelify Sans',var(--mono);
  --chamfer:polygon(0 7px,7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%);
}

/* kill the colored radial glow → flat black grid */
body::before{
  background:
    linear-gradient(0deg,rgba(255,255,255,.014) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.014) 1px,transparent 1px),
    var(--void) !important;
  background-size:44px 44px,44px 44px,auto !important;
}
::selection{background:#fff;color:#0A0A0B}

/* ── hard edges everywhere (broadcast) ── */
*{border-radius:0 !important}

/* ── display type → condensed uppercase ── */
.lhm-name,.camp-title,.lm-title,.rite-vow,.rite-state-vow,.sigil,.prof-lvl,
.squadtag .v,.rank .who,.bucket-name,.bkt-name,.q-title,.hcard-h,.sec-h,
.blk-h,.camp-idn,.wt-t,.todo-t,.mile-title,.kpi-l,.gap-h{
  text-transform:uppercase !important;
  letter-spacing:.03em !important;
}
.lhm-name{font-weight:700 !important;letter-spacing:.01em !important}

/* ── big numerals → Anton ── */
.stat .v,.hud-cell .v,.kpi .v,.prof-lvl,.cw-n,.qcount,.mile-n{
  font-family:'Anton',sans-serif !important;font-weight:400 !important;
}

/* ── primary buttons → solid white / black text (no violet gradient) ── */
.lhm-cta,.btn,button.btn,.rite-seal,.gf-save,.q-do{
  background:#FFFFFF !important;background-image:none !important;
  color:#0A0A0B !important;border:1px solid #FFFFFF !important;
}
.lhm-cta:hover,.btn:hover{filter:brightness(1) !important;background:#EDEDED !important}

/* rank belt + any leftover violet gradient bars → white */
.belt{background:#FFFFFF !important;background-image:none !important}
.meter .mb i{background:#FFFFFF !important}

/* ── nav / tabs → broadcast underline, white active ── */
.topnav a.on,.topbar .topnav a.on{color:#FFFFFF !important;border-bottom-color:#FFFFFF !important;background:transparent !important}
.topnav a{letter-spacing:.12em !important}
.prof-rank{color:#FFFFFF !important;background:transparent !important;border:1px solid var(--brd-2) !important}
.sigil .t{color:#FFFFFF !important}

/* ── panels → flat panel color, hairline borders (drop soft glass fills) ── */
.hud,.topnav,.rite-card,.hcard,.camp-card,.bucket,.q-row,.kpi,.stat,.squadtag,.rank,.meters{
  background:var(--void-2) !important;
}

/* keep circular ONLY where a face/portrait truly needs it off — leave squared:
   dots, avatars, model-viewer read as broadcast roster tiles. */

/* ══════════════════════════════════════════════════════════════
   EDGE LAYER — angular broadcast detailing (from variant A):
   chamfered corners, angled button ends, corner-tick brackets.
   ══════════════════════════════════════════════════════════════ */

/* fix leftover violet borders on the daily rite */
.rite,.rite-card{border-color:var(--brd-2) !important}
.rite-step{color:var(--text-2) !important}

/* angled button ends (parallelogram cut) */
.lhm-cta,.btn,button.btn,.q-do,.rite-seal,.gf-save{
  clip-path:polygon(9px 0,100% 0,calc(100% - 9px) 100%,0 100%) !important;
}

/* crisp bordered chamfer via TWO stacked clip-paths: the card is the frame
   colour, a ::before fill inset 1px sits on top — so the 1px border is uniform
   on every edge INCLUDING the diagonal cut, with no separately-drawn line to
   misalign. NOT the hero banner (chamfering a photo marks the image). */
.camp-card,.hcard,.rite-card,.bucket,.mile-card{
  position:relative;border:0 !important;background:var(--brd-2) !important;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 15px),calc(100% - 15px) 100%,0 100%) !important;
}
.camp-card::before,.hcard::before,.rite-card::before,.bucket::before,.mile-card::before{
  content:"";position:absolute;inset:1px;z-index:0;background:var(--void-2);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%)}
.camp-card>*,.hcard>*,.rite-card>*,.bucket>*,.mile-card>*{position:relative;z-index:1}
.camp-card::after,.hcard::after,.rite-card::after,.bucket::after,.mile-card::after{content:none !important}

/* section headers → short white underline tick */
.hcard-h,.sec-h,.blk-h{position:relative;padding-bottom:9px}
.hcard-h::after,.sec-h::after,.blk-h::after{
  content:"";position:absolute;left:0;bottom:0;width:28px;height:2px;background:var(--text);
}

/* ══════════════════════════════════════════════════════════════
   PURGE — remaining hardcoded rgba(142,123,246) violet literals
   that the token remap can't reach (sidebar actives, tab states…).
   ══════════════════════════════════════════════════════════════ */
.sb-nav a.on,.sb-nav .sbs.on,.map-group.open{
  background:rgba(255,255,255,.10) !important;color:#fff !important;
  border-left:2px solid var(--text) !important;
}
.sb-logo{color:#fff !important;border-color:var(--brd-2) !important}
.board-tabs b.on,.path-tabs b.on,.viewtoggle b.on,.atlas-scope b.on,.cons-toggle b.on,.cmd-tabs b.on,.topbar .topnav a.on{
  color:#fff !important;border-color:var(--brd-2) !important;background:rgba(255,255,255,.08) !important;
}
.rank-row.me{background:rgba(255,255,255,.06) !important;border-color:var(--brd-2) !important}
.feed-compose,.gen-card,.chal.active,.pick-tile{border-color:var(--brd-2) !important}
.gen-card{border-top-color:#fff !important}
.playbtn{background:#fff !important;background-image:none !important;color:#0A0A0B !important;box-shadow:none !important}
.lhm-arrow:hover{background:rgba(255,255,255,.18) !important;border-color:#fff !important}
.phase-building,.qtag-build,.jr-draft .sk,.bkt-new,.hq.shadow .hq-lock{
  color:#fff !important;border-color:var(--brd-2) !important;background:rgba(255,255,255,.08) !important;
}
.prof-rank{color:#fff !important}
.jr-svg-wrap{background:rgba(0,0,0,.18) !important;border-color:var(--brd) !important}

/* ══════════════════════════════════════════════════════════════
   HOME — real broadcast components (rows, substripe, headers).
   ══════════════════════════════════════════════════════════════ */

/* numbered section headers → 01 · spaced label · thin rule (strong type) */
#view-home{counter-reset:sec}
.lch-sec-h{counter-increment:sec;display:flex !important;align-items:center;gap:13px;
  margin:38px 0 15px !important;
  font-family:var(--disp) !important;font-weight:700 !important;font-size:13px !important;
  letter-spacing:.24em !important;text-transform:uppercase !important;color:var(--ink) !important}
.lch-sec-h::before{content:none}   /* no 01/02/03 numbering */
.lch-sec-h span{font-family:var(--disp) !important;font-weight:500;font-size:10px;letter-spacing:.14em;
  color:var(--ink-3) !important;text-transform:uppercase}
.lch-sec-h::after{content:"";flex:1;height:1px;background:var(--line)}

/* home two-column: lists LEFT · visual graphs RIGHT */
.lch-cols{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:30px;margin-top:10px;align-items:start}
.lch-col .lch-sec-h:first-child{margin-top:6px}

/* Today completion gauge (radial donut) */
.lch-gauge{position:relative;width:152px;height:152px;margin:8px auto 8px}
.gauge-svg{width:100%;height:100%;transform:rotate(-90deg)}
.gauge-svg circle{fill:none;stroke-width:7}
.g-track{stroke:rgba(255,255,255,.08)}
.g-fill{stroke:var(--acc);stroke-linecap:butt;transition:stroke-dashoffset .5s ease}
.g-center{position:absolute;inset:0}
.g-pct{position:absolute;top:50%;left:0;right:0;transform:translateY(-54%);text-align:center;
  font-family:'Anton',sans-serif;font-size:40px;color:var(--ink);line-height:.8}
.g-pct small{font-family:var(--disp);font-weight:600;font-size:15px;color:var(--ink-3);margin-left:1px}
.g-lab{position:absolute;top:calc(50% + 20px);left:0;right:0;text-align:center;
  font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}

/* This Month — TRACKED bar graph: every day has a faint full-height slot (so empty
   days read + you see 0→max), fill = hard-edged identity-coloured action segments */
.lch-month{margin-top:4px}
.mbars{display:flex;align-items:flex-end;gap:3px;height:92px;border-bottom:1px solid var(--line-2)}
.mcol{flex:1;height:100%;min-width:0}
.mtrack{height:100%;background:rgba(255,255,255,.05);display:flex;flex-direction:column-reverse}
.mtrack i{width:100%;flex:none;border-radius:0;box-shadow:inset 0 -1px 0 rgba(0,0,0,.28)}
.mcol:hover .mtrack{background:rgba(255,255,255,.09)}
.mcol:hover .mtrack i{filter:brightness(1.18)}
.mlabs{display:flex;gap:3px;margin-top:6px}
.mlb{flex:1;text-align:center;min-width:0;font-family:var(--disp);font-weight:500;font-size:7px;letter-spacing:0;color:var(--ink-3)}

/* list panels → defined bordered blocks (breaks + hierarchy).
   NOT the campaign strip — those are already standalone bordered cards. */
.lch-motion{border:1px solid var(--brd-2);background:var(--void-2)}
.lch-week{border:1px solid var(--brd-2);background:var(--void-2);padding:16px 18px 12px}

/* week/month bar chart → real COLORED bars on a clear x-axis, no box */
.cons-week{height:108px !important;gap:8px !important;align-items:stretch !important;margin-top:0 !important}
.cw-col{gap:6px !important;height:100% !important}                          /* full-height cols so % bars resolve */
.cw-track{order:1;flex:1 !important;width:100% !important;min-height:0 !important;background:transparent !important;
  display:flex !important;align-items:flex-end !important;justify-content:center !important;border-radius:0 !important;
  border-bottom:1px solid var(--line-2) !important}                        /* the x-axis */
.cw-track i{background:var(--acc) !important;width:58% !important;min-height:3px !important;border-radius:0 !important;
  background-image:none !important;transition:filter .12s}
.cw-col:hover .cw-track i{filter:brightness(1.25)}
.cw-n{order:2;font-family:'Anton',sans-serif !important;font-size:12px !important;color:var(--ink-2) !important}
.cw-lab{order:3;font-family:var(--disp) !important;font-weight:600 !important;font-size:9px !important;
  letter-spacing:.1em !important;color:var(--ink-3) !important;text-transform:uppercase !important}
/* no box — graph sits clean on the page */
.lch-week{border:0 !important;background:transparent !important;padding:8px 0 2px !important}
/* Week / Month toggle in the header */
.wk-range{display:inline-flex !important;border:1px solid var(--line-2);margin-left:4px;text-transform:none !important;letter-spacing:0 !important}
.wk-range b{font-family:var(--disp) !important;font-weight:600 !important;font-size:9px !important;letter-spacing:.08em !important;
  padding:3px 10px;color:var(--ink-3) !important;cursor:pointer;text-transform:uppercase}
.wk-range b.on{background:var(--ink);color:#0A0A0B !important}
.cons-week.rng-month{gap:4px !important}
.cons-week.rng-month .cw-track i{width:80% !important}
.cons-week.rng-month .cw-n{font-size:10px !important}
.cons-week.rng-month .cw-lab{font-size:7px !important;letter-spacing:.06em !important}

/* ── Campaign cards — serves-cluster · timeline chip · visible habits · deadline-ordered ── */
/* strip needs top clearance: overflow-y is forced to clip (overflow-x:auto), so a hover lift
   would otherwise clip the card's top frame line */
.camp-strip{padding-top:4px !important}
.camp-card{cursor:pointer;transition:border-color .15s,transform .12s}
.camp-card:hover{border-color:var(--line) !important;transform:translateY(-2px)}
/* first (soonest) card = the primary — gold spine only; widths stay equal */
.camp-primary{box-shadow:inset 3px 0 0 var(--gold)}
.camp-top{display:flex !important;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}
/* fix #3 — organized dot-cluster + single label (was a cluttered "● a · ● b · ● c" run) */
.camp-serves{display:inline-flex;align-items:center;gap:6px;min-width:0}
.cs-dot{width:7px;height:7px;border-radius:50%;flex:none;box-shadow:0 0 0 1px rgba(0,0,0,.35)}
.cs-dot+.cs-dot{margin-left:-3px}
.cs-lab{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:2px}
/* trait vs project cue */
.camp-aim{flex:none;font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.14em;
  text-transform:uppercase;padding:2px 7px;border:1px solid var(--line-2)}
.camp-aim-trait{color:var(--ink-2)}
.camp-aim-project{color:var(--ink-3);border-style:dashed}
/* upgraded title — Anton display face, larger + tighter, real headline weight */
.camp-title{display:block;margin-bottom:5px;font-family:'Anton',sans-serif !important;font-weight:400 !important;font-size:23px !important;
  letter-spacing:.005em !important;text-transform:uppercase !important;color:var(--ink) !important;line-height:.98;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* what trait this campaign forges — the clearest signal of what it's FOR */
.camp-forge{display:flex;align-items:baseline;gap:7px;margin-bottom:8px;min-width:0}
.cf-lab{flex:none;font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4)}
.cf-names{min-width:0;font-family:var(--disp);font-weight:600;font-size:12px;letter-spacing:.05em;text-transform:uppercase;
  color:var(--fc,var(--gold));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cf-sep{color:var(--ink-4);margin:0 4px;font-weight:400}
.camp-forge-proj,.camp-forge-none{font-family:var(--disp);font-weight:500;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.camp-forge-none{font-style:normal;color:var(--ink-3)}
/* fix #2 — timeline chip, urgency-coloured, so short→long ordering reads instantly */
.camp-tlrow{display:flex;align-items:center;gap:8px;margin-bottom:9px;min-width:0}
.camp-tl{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;
  padding:2px 7px;border:1px solid var(--line-2);color:var(--ink-3)}
.camp-tl.tl-urgent{color:#E9603A;border-color:rgba(233,96,58,.45)}
.camp-tl.tl-soon{color:var(--gold);border-color:rgba(199,160,56,.4)}
.camp-tl.tl-far{color:var(--ink-2)}
.camp-tl.tl-ended{color:var(--ink-4);border-style:dashed}
.camp-tl.tl-ongoing{color:var(--ink-4)}
.camp-aimline{font-family:var(--body);font-size:11.5px;line-height:1.3;color:var(--ink-4);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
/* ── MAP · OVERVIEW — top-level plan (this week + selves on top; campaigns + pulse full-width) ── */
/* the Map header was hidden (game.css) — restore it so the top-level nav tabs live in a real header */
.cmd-board .board-head{display:flex !important;align-items:center;margin-bottom:16px}
/* Overview hides the podium — collapse its reserved column so the plan spans full width */
.cmd-layout.podium-off{grid-template-columns:1fr !important}
/* accent frame around the portrait — a uniform 1px line that follows the chamfer
   (padding must equal the inner podium-fig's 1px inset, or the diagonal edge loses its line) */
.map-podium{background:var(--pc,var(--brd-2)) !important;padding:1px !important}
.map-tabs{display:inline-flex;gap:2px;margin-left:auto;align-self:center;border:1px solid var(--line-2);padding:2px}
.map-tabs b{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);
  padding:5px 12px;cursor:pointer;transition:color .12s,background .12s}
.map-tabs b:hover{color:var(--ink-2)}
.map-tabs b.on{background:var(--ink);color:var(--black)}
.ov-top{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:26px;align-items:start;margin-bottom:6px}
@media (max-width:900px){ .ov-top{grid-template-columns:1fr} }
.ov-week-wrap,.ov-selves-wrap{min-width:0}
/* this week — the recurring practice, one row per habit */
.ov-week{display:flex;flex-direction:column;margin-bottom:14px;border:1px solid var(--line-3)}
.ovw-row{display:flex;align-items:center;gap:11px;padding:10px 13px;border-bottom:1px solid var(--line-3);cursor:pointer;transition:background .12s}
.ovw-row:last-child{border-bottom:0}
.ovw-row:hover{background:rgba(255,255,255,.03)}
.ovw-row:hover .ovw-edit{opacity:1}
.ovw-log{flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-2);background:transparent;
  color:var(--lc,var(--ink-3));font-size:11px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:border-color .12s,background .12s,color .12s;padding:0}
.ovw-log:hover{border-color:var(--lc,var(--ink-2))}
.ovw-log.done{background:var(--lc);border-color:var(--lc);color:var(--black)}
.ovw-edit{flex:none;font-size:11px;color:var(--ink-4);cursor:pointer;opacity:0;transition:opacity .12s,color .12s;padding:0 2px}
.ovw-edit:hover{color:var(--ink-2)}
.ovw-dot{width:7px;height:7px;border-radius:50%;flex:none}
.ovw-t{flex:1;min-width:0;font-family:var(--disp);font-weight:600;font-size:13px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovw-camp{flex:none;font-family:var(--disp);font-weight:500;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);max-width:130px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovw-state{flex:none;font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);min-width:66px;text-align:right}
.ovw-state.fail{color:#E9603A}
/* direct slip button on a habit row */
.ovw-slip{flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-2);background:transparent;
  color:var(--ink-4);font-size:10px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;
  transition:color .12s,border-color .12s,background .12s}
.ovw-slip:hover{color:#E9603A;border-color:rgba(233,96,58,.5)}
.ovw-slip.on{background:#E9603A;border-color:#E9603A;color:var(--black)}
/* a habit that's being missed — red left edge */
.ovw-row.failing{box-shadow:inset 3px 0 0 #E9603A}
.ovi-row.failing,.ovi-row.fail{box-shadow:inset 3px 0 0 #E9603A}
.ovw-row.on .ovw-state{color:var(--gold)}
.ovw-row.on .ovw-t{color:var(--ink-2)}
.ov-band{margin-bottom:22px}
/* 2-column split: left = toggle(quests|habits) + filter + list · right = standing (stats + pulse) */
.ov-split{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}
@media (max-width:1000px){ .ov-split{grid-template-columns:1fr} }
.ov-left{min-width:0}
.ov-right{min-width:0}
.ov-lbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.ov-toggle{display:inline-flex;border:1px solid var(--line-2)}
.ov-toggle b{font-family:var(--disp);font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);
  padding:7px 15px;cursor:pointer;transition:color .12s,background .12s}
.ov-toggle b span{font-weight:500;font-size:9px;letter-spacing:.06em;color:var(--ink-4);margin-left:5px}
.ov-toggle b+b{border-left:1px solid var(--line-2)}
.ov-toggle b.on{background:var(--ink);color:var(--black)}
.ov-toggle b.on span{color:rgba(0,0,0,.5)}
/* minimal identity filter */
.ov-idfilter{display:inline-flex;align-items:center;gap:3px;margin-left:auto}
.ov-idfilter b{display:inline-flex;align-items:center;gap:5px;font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-4);padding:5px 9px;cursor:pointer;border:1px solid transparent;transition:color .12s,border-color .12s}
.ov-idfilter b:hover{color:var(--ink-2)}
.ov-idfilter b.on{color:var(--ink);border-color:var(--line-2)}
.idf-dot{width:7px;height:7px;border-radius:50%;flex:none}
/* standing — stat tiles */
.ov-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:20px}
.ov-stat{border:1px solid var(--line-3);padding:11px 12px}
.ovs-k{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4);margin-bottom:5px}
.ovs-v{font-family:'Anton',sans-serif;font-size:24px;color:var(--ink);line-height:.9}
.ovs-s{font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-top:4px}
/* ── Campaign DAG — conditional unlock chains: positioned nodes + SVG edges + lock + hover ── */
.cg-scroll{overflow-x:auto;overflow-y:visible;padding:12px 0 14px;margin-bottom:8px}
.cg-scroll::-webkit-scrollbar{height:8px}.cg-scroll::-webkit-scrollbar-thumb{background:var(--line-2)}
.cg-band{position:relative;margin-bottom:16px}
.cg-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
/* campaign lane header — slim, transparent, just a labelled hairline (NOT a fat filled bar) */
.cg-head{position:absolute;top:0;left:0;z-index:3;height:22px;box-sizing:border-box;display:flex;align-items:center;gap:9px;
  padding:0 0 0 9px;background:transparent;border-bottom:1px solid var(--line-3)}
.cg-head.cg-cleared{opacity:.5}
.cg-h-tick{width:3px;height:12px;flex:none;background:var(--line-2)}
.cg-head.cg-active .cg-h-tick{background:var(--c)}
.cg-h-name{font-family:'Anton',sans-serif;font-size:13px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink);white-space:nowrap}
.cg-h-bar{flex:none;width:64px;height:3px;background:var(--line-3);position:relative}
.cg-h-bar i{position:absolute;left:0;top:0;height:100%;background:var(--c);display:block}
.cg-h-prog{flex:none;font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.06em;color:var(--ink-3)}
.cg-h-when{margin-left:auto;flex:none;font-family:var(--disp);font-weight:500;font-size:8px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-4);padding-right:10px}
.cg-node.cg-add{background:var(--line-3);opacity:.75}
/* the trait(s) a quest forges — the visible thread to the Progression bars below */
.cg-nd-traits{position:relative;z-index:1;display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden;padding:0 11px 7px;margin-top:-2px}
.cg-forge{font-family:var(--disp);font-weight:600;font-size:7px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);flex:none}
.cg-trait-pip{flex:none;font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.03em;text-transform:uppercase;color:var(--c);
  border:1px solid color-mix(in srgb,var(--c) 40%,transparent);padding:1px 5px;white-space:nowrap;max-width:66px;overflow:hidden;text-overflow:ellipsis}
.cg-trait-pip.more{color:var(--ink-4);border-color:var(--line-2)}
/* tidy button in the section header */
.jr-sec-act{margin-left:auto;flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-4);background:transparent;border:1px solid var(--line-2);padding:3px 9px;cursor:pointer;transition:color .12s,border-color .12s}
.jr-sec-act:hover{color:var(--gold);border-color:var(--gold)}
/* campaign node (absolute) — 2-clip accent frame */
.cg-camp{position:absolute;z-index:2;border:0;background:var(--c,var(--line-2));padding:1px;cursor:pointer;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%)}
.cg-camp::before{content:"";position:absolute;inset:1px;z-index:0;background:var(--void-2);clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%)}
.cg-cn-in{position:relative;z-index:1;padding:11px 14px}
.cg-camp.cg-ready{background:var(--line-2)}
.cg-camp.cg-cleared{opacity:.5}
@keyframes cgpulse{0%,100%{box-shadow:inset 0 0 0 0 transparent}50%{box-shadow:inset 0 0 20px -6px var(--c)}}
.cg-camp.cg-active::before{animation:cgpulse 2.4s ease-in-out infinite}
.cg-camp-name{font-family:'Anton',sans-serif;font-size:16px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-camp-sub{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);margin-top:5px}
.cg-camp.cg-active .cg-camp-sub{color:var(--c)}
/* quest node (absolute) */
/* NO clip-path on the node itself — it would clip the RESULT/HIT flag + ⛓ that overhang the top edge.
   The chamfer is carried by ::before (the visible surface) instead. */
.cg-node{position:absolute;z-index:2;min-height:44px;border:0;background:var(--line-2);padding:1px;cursor:grab}
.cg-node.cg-dragging{cursor:grabbing;z-index:40;transition:none;box-shadow:0 10px 26px rgba(0,0,0,.5)}
.cg-node.cg-dragging .cg-tip{display:none}
.cg-node.cg-linktarget::after{content:"";position:absolute;inset:0;z-index:4;box-shadow:inset 0 0 0 2px var(--gold);pointer-events:none;clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%)}
.cg-node::before{content:"";position:absolute;inset:1px;z-index:0;background:var(--void-2);clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%)}
.cg-node.cg-cur{background:var(--c)}
.cg-node.cg-done{opacity:.45}
.cg-node.cg-locked{background:var(--line-3);opacity:.7}
/* OUTCOME / RESULT node — a measured target (75kg, squat 275), reads as a milestone not a habit */
.cg-node.cg-out{background:var(--c)}
.cg-node.cg-out::before{background:var(--void-1);clip-path:polygon(8px 0,100% 0,100% 100%,0 100%,0 8px)}
.cg-node.cg-out .cg-qm{color:var(--c);font-size:12px}
.cg-node.cg-out .cg-qt{color:var(--ink)}
.cg-node.cg-out.cg-done{opacity:.5}
.cg-flag{position:absolute;top:-8px;left:8px;z-index:5;font-family:var(--disp);font-weight:700;font-size:7.5px;letter-spacing:.13em;
  background:var(--c);color:var(--void-1);padding:1px 5px}
/* COMPLETED quest — reads ACHIEVED (gold), not dimmed-dead. The heuristic: gold ✓ + gold left bar. */
.cg-node.cg-done{opacity:1 !important;box-shadow:inset 3px 0 0 var(--gold)}
.cg-node.cg-done .cg-qt{color:#D9C078 !important;text-decoration:none !important}
.cg-node.cg-done .cg-qm{color:var(--gold) !important;font-weight:700}
/* HABITS — clean, readable engine (NOT greyed-to-death). Flat dark card, identity-tinted glyph. */
.cg-node.cg-hab{background:var(--line-2) !important}
.cg-node.cg-hab .cg-qt{color:#E6E6EA !important}
.cg-node.cg-hab .cg-qm{color:var(--c);opacity:.85}
/* QUEST — bounded work: dark card + identity left-bar, deadline-forward. NOT the filled OUTCOME milestone. */
.cg-node.cg-quest{background:var(--line-2) !important;box-shadow:inset 3px 0 0 var(--c)}
.cg-node.cg-quest .cg-qt{color:#fff !important}
.cg-node.cg-quest .cg-qm{color:var(--c)}
.cg-node.cg-quest.cg-done{box-shadow:inset 3px 0 0 var(--gold) !important}
/* OUTCOMES column header — the results quests climb toward */
.cg-colh.cg-colh-out{color:var(--c)}
.cg-colh.cg-colh-out em{color:var(--c);opacity:.65}
.cg-qmet{color:var(--ink-2) !important;opacity:.85}
/* EVOLVED habit (deepen/branch/transmute) — a small chevron marks the escalation */
.cg-node.cg-evolved .cg-qm::after{content:"↗";margin-left:1px;font-size:8px;color:var(--c);opacity:.9}
.cg-node:hover{z-index:30}
.cg-nd-in{position:relative;z-index:1;display:flex;align-items:center;gap:7px;padding:0 11px;min-height:44px}
.cg-qm{flex:none;color:var(--c);font-size:11px}
.cg-qt{flex:1;min-width:0;font-family:var(--disp);font-weight:500;font-size:11.5px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-node.cg-locked .cg-qt{color:var(--ink-4)}
.cg-qmet{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;color:var(--ink-4)}
/* hover detail popover */
.cg-tip{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:40;width:210px;
  background:var(--panel-2);border:1px solid var(--line-2);padding:10px 12px;box-shadow:0 14px 32px rgba(0,0,0,.55)}
.cg-node:hover .cg-tip{display:block}
.cg-tip b{font-family:var(--disp);font-weight:700;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);display:block;margin-bottom:5px}
.cg-tip-r{font-family:var(--body);font-size:11px;color:var(--ink-3);line-height:1.45}
.cg-tip-r.locked{color:#E9603A}
.cg-tip-r b{font-family:var(--disp);font-weight:600;letter-spacing:.02em;text-transform:none;color:var(--ink-2);display:inline}
.cg-tip-hint{font-family:var(--disp);font-weight:500;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);margin-top:7px;border-top:1px solid var(--line-3);padding-top:6px}
.cg-unlink{color:var(--ink-4);cursor:pointer;margin-left:3px;font-size:10px}
.cg-unlink:hover{color:#E9603A}
/* link handle on each node */
.cg-link{position:absolute;top:-9px;right:-9px;z-index:6;width:21px;height:21px;border-radius:50%;border:1px solid var(--line-1);
  background:var(--panel-2);color:var(--ink-3);font-size:9px;cursor:crosshair;display:flex;align-items:center;justify-content:center;padding:0;opacity:.5;transition:opacity .12s,color .12s,border-color .12s,transform .12s}
.cg-node:hover .cg-link{opacity:1}
.cg-link:hover{color:var(--gold);border-color:var(--gold);transform:scale(1.18)}
/* source of an in-progress link — obvious what you're chaining FROM */
.cg-node.cg-linksource{z-index:41}
.cg-node.cg-linksource::after{content:"";position:absolute;inset:0;z-index:4;box-shadow:inset 0 0 0 2px var(--gold);pointer-events:none;clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%);animation:cglsrc 1s ease-in-out infinite}
@keyframes cglsrc{0%,100%{box-shadow:inset 0 0 0 2px var(--gold)}50%{box-shadow:inset 0 0 0 2px var(--gold),0 0 14px -3px var(--gold)}}
/* flash whatever was just linked/created */
@keyframes cgflash{0%{box-shadow:0 0 0 0 var(--c)}30%{box-shadow:0 0 22px -2px var(--c)}100%{box-shadow:0 0 0 0 transparent}}
.cg-node.cg-flash{animation:cgflash 1.3s ease-out 1}
/* edge relationship labels */
.cg-elabel{pointer-events:none}
.cg-elabel text{font-family:var(--disp),'Oswald',sans-serif}
/* linking mode — everything is a target */
body.dag-linking .cg-node{cursor:crosshair}
body.dag-linking .cg-node::after{content:"";position:absolute;inset:0;z-index:4;box-shadow:inset 0 0 0 1.5px var(--gold);pointer-events:none;clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%)}
/* ── Campaign SPINE — visible campaign cards, left→right, quests on the card ── */
.ct2-scroll{overflow-x:auto;overflow-y:hidden;padding:4px 0 10px;margin-bottom:8px}
.ct2-scroll::-webkit-scrollbar{height:7px}
.ct2-scroll::-webkit-scrollbar-thumb{background:var(--line-2)}
.ct2-flow{display:inline-flex;align-items:center;gap:0}
.ct2-col{display:flex;flex-direction:column;gap:12px}
/* connector = an actual line touching the nodes, with an arrowhead (not a floating glyph) */
.ct2-arrow{position:relative;flex:none;align-self:center;width:38px;height:2px;background:var(--c,var(--line-2));font-size:0}
.ct2-arrow::after{content:"";position:absolute;right:-1px;top:50%;transform:translateY(-50%);
  border-left:7px solid var(--c,var(--line-2));border-top:5px solid transparent;border-bottom:5px solid transparent}
/* 2-clip frame: outer = border colour, ::before fill inset 1px → uniform 1px line INCLUDING the chamfer */
.ct2-card{position:relative;width:250px;flex:none;border:0;background:var(--line-2);padding:1px;cursor:pointer;transition:transform .12s;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%)}
.ct2-card::before{content:"";position:absolute;inset:1px;z-index:0;background:var(--void-2);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%)}
.ct2-card>*{position:relative;z-index:1}
.ct2-card:hover{transform:translateY(-2px)}
.ct2-card.ct2-active{background:var(--c)}          /* currently working on → colour-framed */
.ct2-card.ct2-ready{background:var(--line-2)}
.ct2-card.ct2-cleared{opacity:.5}
/* pulse the one you're currently working on */
@keyframes ct2pulse{0%,100%{box-shadow:inset 0 0 0 0 transparent}50%{box-shadow:inset 0 0 22px -6px var(--c)}}
.ct2-card.ct2-active::before{animation:ct2pulse 2.4s ease-in-out infinite}
.ct2-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:11px 13px 6px}
.ct2-name{font-family:'Anton',sans-serif;font-size:17px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct2-badge{flex:none;font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.ct2-card.ct2-active .ct2-badge{color:var(--c)}
.ct2-why{padding:0 13px 9px;font-family:var(--body);font-size:11.5px;line-height:1.35;color:var(--ink-4)}
.ct2-quests{display:flex;flex-direction:column;border-top:1px solid var(--line-3)}
.ct2-q{display:flex;align-items:center;gap:8px;padding:8px 13px;border-bottom:1px solid var(--line-3)}
.ct2-q:last-child{border-bottom:0}
.ct2-qm{flex:none;color:var(--c);font-size:11px}
.ct2-qt{flex:1;min-width:0;font-family:var(--disp);font-weight:500;font-size:12px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct2-qmet{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4)}
.ct2-qempty{font-family:var(--body);font-style:italic;font-size:11px;color:var(--ink-4);padding:8px 13px}
.ct2-empty{font-family:var(--body);font-style:italic;font-size:12px;color:var(--ink-4);padding:14px 4px}
/* timeline — the campaign's deadline, made clear on the card */
.ct2-time{margin:0 13px 9px;font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-3);border:1px solid var(--line-2);padding:3px 8px;display:inline-block}
.ct2-time.tl-over{color:#E9603A;border-color:rgba(233,96,58,.45)}
.ct2-time.tl-soon{color:var(--gold);border-color:rgba(199,160,56,.4)}
.ct2-time.tl-ongoing{color:var(--ink-4);border-style:dashed}
/* progression: next-front ghost + the summit (the self you're climbing to) */
.ct2-card.ct2-ghost{background:var(--line-3);opacity:.7}
.ct2-card.ct2-ghost .ct2-name{color:var(--ink-3)}
/* summit — 2-clip frame so the accent line follows the chamfer uniformly */
.ct2-summit{position:relative;width:180px;flex:none;align-self:center;border:0;background:var(--c);padding:1px;cursor:default;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%)}
.ct2-summit::before{content:"";position:absolute;inset:1px;z-index:0;background:var(--void-2);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%)}
.ct2-sinner{position:relative;z-index:1;padding:22px 16px;text-align:center}
.ct2-sglyph{font-size:30px;color:var(--c);line-height:1;margin-bottom:8px}
.ct2-sname{font-family:'Anton',sans-serif;font-size:20px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);line-height:1}
.ct2-slab{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--c);margin-top:8px}
/* ── Identity · Campaigns — plain hierarchy: campaign → quests ── */
.idc-list{display:flex;flex-direction:column;gap:14px;margin-bottom:8px}
.idc-camp{border:1px solid var(--line-3);border-left:2px solid var(--c,var(--line-2))}
.idc-camp-h{display:flex;align-items:center;gap:9px;padding:11px 13px;background:rgba(255,255,255,.02);flex-wrap:wrap}
.idc-dot{width:9px;height:9px;flex:none}
.idc-name{font-family:'Anton',sans-serif;font-size:16px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink)}
.idc-why{font-family:var(--body);font-size:12px;color:var(--ink-4);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.idc-quests{display:flex;flex-direction:column}
.idc-q{display:flex;align-items:center;gap:10px;padding:9px 13px;border-top:1px solid var(--line-3)}
.idc-qm{flex:none;color:var(--c,var(--ink-3));font-size:12px}
.idc-qt{flex:1;min-width:0;font-family:var(--disp);font-weight:500;font-size:13px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.idc-qempty,.idc-empty{font-family:var(--body);font-style:italic;font-size:11.5px;color:var(--ink-4);padding:9px 13px}
/* ── Map · Today — add bar + view tabs + one clean list ── */
.ov-addbar{display:flex;gap:8px;margin-bottom:16px}
.ov-addbar input{flex:1;min-width:0;font-family:var(--body);font-size:14.5px;background:var(--panel-2);border:1px solid var(--line-2);padding:14px 15px;color:var(--ink)}
.ov-addbar input::placeholder{color:var(--ink-3)}
.ov-addbar input:focus{outline:none;border-color:var(--gold)}
.ov-addbar button{flex:none;font-family:var(--disp);font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;background:var(--gold);color:var(--black);border:0;padding:0 22px;cursor:pointer}
.ov-addbar button:hover{filter:brightness(1.08)}
.ov-viewtabs{display:inline-flex;border:1px solid var(--line-2);margin-bottom:14px}
.ov-viewtabs b{font-family:var(--disp);font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);padding:8px 17px;cursor:pointer;transition:color .12s,background .12s}
.ov-viewtabs b+b{border-left:1px solid var(--line-2)}
.ov-viewtabs b.on{background:var(--ink);color:var(--black)}
.ov-viewtabs b span{font-weight:500;font-size:9px;color:var(--ink-4);margin-left:5px}
.ov-viewtabs b.on span{color:rgba(0,0,0,.5)}
.ov-today{border:1px solid var(--line-3)}
/* Habits — full manageable table, grouped by phase */
.ovh2-grp{margin-bottom:14px;border:1px solid var(--line-3)}
.ovh2-h{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid var(--line-3);background:rgba(255,255,255,.02);
  font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2)}
.ovh2-h .ovh2-g{font-size:12px}
.ovh2-h em{margin-left:auto;font-family:'Anton',sans-serif;font-style:normal;letter-spacing:0;color:var(--ink-3)}
.ovh2-h.ph-breaking .ovh2-g{color:#E9603A}
.ovh2-h.ph-building .ovh2-g{color:var(--gold)}
.ovh2-h.ph-maintaining .ovh2-g{color:#6FA8A0}
.td-edit{flex:none;font-size:11px;color:var(--ink-4);cursor:pointer;opacity:0;transition:opacity .12s,color .12s;padding:0 2px}
.td-row:hover .td-edit{opacity:1}
.td-edit:hover{color:var(--ink-2)}
/* ── Today's Habits — one dead-simple uniform row ── */
.td-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line-3)}
.td-row.dragging{opacity:.45;background:rgba(255,255,255,.03)}
.td-grip{flex:none;color:var(--ink-4);font-size:13px;cursor:grab;letter-spacing:-2px;line-height:1;user-select:none}
.td-grip:active{cursor:grabbing}
.td-row:hover .td-grip{color:var(--ink-3)}
.td-row:last-child{border-bottom:0}
.td-row.miss{box-shadow:inset 3px 0 0 #E9603A}
.td-check{flex:none;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line-2);background:transparent;
  color:var(--gold);font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;
  transition:border-color .12s,background .12s,color .12s}
.td-check:hover{border-color:var(--ink-2)}
.td-check.on{background:var(--gold);border-color:var(--gold);color:var(--black)}
.td-check.static{cursor:default;background:transparent;border-color:rgba(111,168,160,.5);color:#6FA8A0}
/* counter check (taper cap / progress toward a target): shows the tally, tap = +1 */
.td-check.td-cnt{font-family:var(--disp);font-weight:700;font-size:11px}
.td-check.td-cnt.on{background:var(--gold);border-color:var(--gold);color:var(--black)}
.td-check.td-cnt.over{background:#E9603A;border-color:#E9603A;color:#fff}
.td-t{flex:1;min-width:0;font-family:var(--disp);font-weight:600;font-size:14px;letter-spacing:.01em;text-transform:uppercase;
  color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.td-row.done .td-t{color:var(--ink-2)}
.td-camp{flex:none;font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);opacity:.7;
  max-width:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.td-num{flex:none;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);
  min-width:56px;text-align:right}
.td-num.bad{color:#E9603A}
.td-x{flex:none;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line-2);background:transparent;color:var(--ink-4);
  font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:color .12s,border-color .12s}
.td-x:hover{color:#E9603A;border-color:rgba(233,96,58,.5)}
/* SETTINGS overlay */
.set-overlay{position:fixed;inset:0;z-index:999;display:none;align-items:center;justify-content:center;
  background:rgba(6,6,8,.78);padding:24px}
.set-overlay.on{display:flex}
.set-box{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--line-2);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 16px),calc(100% - 16px) 100%,0 100%)}
.set-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line-3);
  font-family:'Anton',sans-serif;font-size:18px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink)}
.set-close{background:none;border:0;color:var(--ink-3);font-size:15px;cursor:pointer;padding:2px 4px}
.set-close:hover{color:var(--ink)}
.set-body{padding:18px}
.set-sec{margin-bottom:18px}
.set-lab{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4);margin-bottom:8px}
.set-row{display:flex;gap:8px}
.set-overlay input{width:100%;font-family:var(--body);font-size:14px;background:var(--panel-2);border:1px solid var(--line-2);padding:11px 13px;color:var(--ink);margin-bottom:8px}
.set-row input{margin-bottom:0}
.set-overlay input:focus{outline:none;border-color:var(--gold)}
.set-save{flex:none;font-family:var(--disp);font-weight:700;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  background:var(--gold);color:var(--black);border:0;padding:0 16px;cursor:pointer}
.set-save:hover{filter:brightness(1.08)}
.set-msg{min-height:16px;font-family:var(--disp);font-weight:500;font-size:11px;letter-spacing:.04em;margin:2px 0 8px}
.set-msg.err{color:var(--alarm,#E9603A)}
.set-msg.ok{color:#6FA8A0}
.set-foot{display:flex;align-items:center;justify-content:space-between;padding-top:14px;border-top:1px solid var(--line-3)}
.set-user{font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.06em;color:var(--ink-3)}
.set-logout{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-2);background:var(--void-2);border:1px solid var(--line-2);padding:7px 13px;cursor:pointer}
.set-logout:hover{color:var(--alarm,#E9603A);border-color:rgba(233,96,58,.5)}
/* PLANNING CHAT */
.ov-plan{display:flex;flex-direction:column;border:1px solid var(--line-3)}
.ovp-msgs{display:flex;flex-direction:column;gap:12px;padding:16px;min-height:280px;max-height:56vh;overflow-y:auto}
.ovp-hello{font-family:var(--body);font-size:13px;line-height:1.55;color:var(--ink-3)}
.ovp-msg{max-width:88%;font-family:var(--body);font-size:13.5px;line-height:1.5;padding:11px 14px}
.ovp-msg.user{align-self:flex-end;background:var(--panel-2);border:1px solid var(--line-2);color:var(--ink)}
.ovp-msg.ai{align-self:flex-start;background:rgba(255,255,255,.02);border-left:2px solid var(--gold);color:var(--ink-2)}
.ovp-think{color:var(--ink-4);font-style:italic}
.ovp-acts{display:flex;flex-direction:column;gap:6px;margin-top:11px}
.ovp-act{align-self:flex-start;text-align:left;font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.04em;text-transform:uppercase;
  color:var(--gold);background:rgba(199,160,56,.08);border:1px solid rgba(199,160,56,.4);padding:7px 12px;cursor:pointer;transition:background .12s}
.ovp-act:hover{background:rgba(199,160,56,.18)}
.ovp-act.applied{color:var(--ink-4);border-color:var(--line-2);background:transparent;cursor:default}
.ovp-bar{display:flex;gap:9px;padding:11px;border-top:1px solid var(--line-3);align-items:flex-end}
.ovp-bar textarea{flex:1;min-width:0;resize:none;font-family:var(--body);font-size:13.5px;line-height:1.4;color:var(--ink);
  background:var(--void-2);border:1px solid var(--line-2);padding:10px 12px;max-height:120px}
.ovp-bar textarea:focus{outline:none;border-color:var(--line)}
/* ── PLAN PAGE — persistent strategist chat as a 3rd column (stays across tabs) ── */
#sub-overview{display:grid;grid-template-columns:minmax(0,1fr) 344px;align-items:start;gap:16px}
.ov-main{min-width:0}
/* strategist = a clear boxed panel (Meridian-style): elevated bg, 1px border, small radius, aligned with the calendar */
.ov-chat{position:sticky;top:0;display:flex;flex-direction:column;height:calc(100vh - 112px);min-height:440px;
  background:var(--void-2);border:1px solid var(--line-2);border-radius:5px;overflow:hidden;margin-right:0}
.ovp-head{flex:none;display:flex;align-items:baseline;gap:9px;padding:14px 16px 13px;border-bottom:1px solid var(--line)}
.ovp-h-t{font-family:var(--disp);font-weight:700;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink)}
.ovp-h-s{font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4)}
.ov-chat .ovp-msgs{flex:1;min-height:0;max-height:none}
.ov-chat .ovp-bar{flex:none}
.ovp-send{flex:none;font-family:var(--disp);font-weight:700;font-size:16px;background:#fff;color:#0A0A0B;border:1px solid #fff;
  padding:0 15px;cursor:pointer;clip-path:polygon(7px 0,100% 0,calc(100% - 7px) 100%,0 100%)}
.ovp-send:hover{background:#ededed}
@media(max-width:1080px){
  #sub-overview{grid-template-columns:1fr}
  .ov-main{padding-right:0}
  .ov-chat{position:static;height:auto;min-height:0;border-left:0;border-top:1px solid var(--line);margin-right:0;margin-top:22px}
  .ov-chat .ovp-msgs{max-height:52vh}
}
.ov-add{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-3);background:var(--void-2);border:1px solid var(--line-2);padding:3px 8px;cursor:pointer;transition:color .12s,border-color .12s}
.ov-add:hover{color:var(--ink);border-color:var(--line)}
/* QUESTS — campaign-grouped major outcomes, deadline-led */
.ov-quests{display:flex;flex-direction:column;gap:14px}
.ovq-group{border:1px solid var(--line-3);border-left:2px solid var(--gc,var(--line-2))}
.ovq-head{display:flex;align-items:center;gap:10px;padding:11px 13px;background:rgba(255,255,255,.018);cursor:pointer}
.ovq-head:hover{background:rgba(255,255,255,.04)}
.ovq-dot{width:9px;height:9px;flex:none;background:var(--gc)}
.ovq-name{font-family:'Anton',sans-serif;font-size:16px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px}
.ovq-name.dim{color:var(--ink-3)}
.ovq-forge{flex:none;font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--gc,var(--gold));opacity:.85}
.ovq-forge.proj{color:var(--ink-4)}
.ovq-sp{flex:1;min-width:8px}
.ovq-hab{flex:none;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);
  border:1px solid var(--line-2);padding:2px 7px}
.ovq-agg{flex:none;font-family:'Anton',sans-serif;font-size:14px;color:var(--ink-2)}
.ovq-head .ov-add{flex:none}
.ovq-head .ovo-dl{margin-left:0}
/* compact = no outcomes; slim one-line header, muted */
.ovq-group.compact .ovq-head{background:transparent}
.ovq-group.compact .ovq-name{color:var(--ink-2)}
.ovq-rows{display:flex;flex-direction:column}
.ovq-empty{font-family:var(--body);font-size:11.5px;color:var(--ink-4);font-style:italic;padding:9px 13px}
/* outcome (quest) rows */
.ovo-row{display:flex;align-items:center;gap:11px;padding:9px 13px;border-top:1px solid var(--line-3);cursor:pointer;transition:background .12s}
.ovo-row:hover{background:rgba(255,255,255,.03)}
.ovo-row:hover .ovw-edit{opacity:1}
.ovo-mark{flex:none;font-size:12px}
.ovo-pct{flex:none;font-family:'Anton',sans-serif;font-size:12px;color:var(--ink-3)}
.ovo-dl{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.08em;text-transform:uppercase;
  padding:2px 8px;border:1px solid var(--line-2);color:var(--ink-3);text-align:center;cursor:pointer;transition:color .12s,border-color .12s}
.ovo-dl[data-ovdate]:hover{border-color:var(--ink-2);color:var(--ink)}
.ovo-dl.tl-urgent{color:#E9603A;border-color:rgba(233,96,58,.45)}
.ovo-dl.tl-soon{color:var(--gold);border-color:rgba(199,160,56,.4)}
.ovo-dl.tl-far{color:var(--ink-2)}
.ovo-dl.tl-ended{color:#E9603A;border-style:dashed}
.ovo-dl.tl-none{color:var(--ink-4);border-style:dashed}
/* unified quest/habit item rows with drill-down */
.ovi-row{display:flex;align-items:center;gap:9px;padding:9px 13px;border-top:1px solid var(--line-3);transition:background .12s}
.ovi-row:hover{background:rgba(255,255,255,.03)}
.ovi-row:hover .ovw-edit{opacity:1}
.ovi-row.open{background:rgba(255,255,255,.03)}
.ovi-exp{flex:none;width:14px;text-align:center;color:var(--ink-4);cursor:pointer;font-size:10px;transition:color .12s}
.ovi-exp:hover{color:var(--ink)}
.ovi-row .ovw-t{cursor:pointer}
.ovi-row .ovo-mark{flex:none;font-size:12px}
.ovi-n{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.04em;color:var(--ink-4);border:1px solid var(--line-2);padding:1px 5px}
.ovi-slip{flex:none;font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.08em;text-transform:uppercase;
  color:#E9603A;border:1px solid rgba(233,96,58,.45);padding:1px 6px}
.ovi-slip.dim{color:var(--ink-4);border-color:var(--line-2);font-weight:600}
/* subtasks panel (WBS for outcomes · drills for habits) */
.ovi-subs{display:flex;flex-direction:column;padding:4px 13px 10px 36px;background:rgba(0,0,0,.22);border-top:1px solid var(--line-3)}
.ovi-sub{display:flex;align-items:center;gap:9px;padding:4px 0}
.ovi-chk{flex:none;width:16px;height:16px;border:1.5px solid var(--line-2);display:flex;align-items:center;justify-content:center;
  font-size:10px;color:var(--gold);cursor:pointer;transition:border-color .12s,background .12s}
.ovi-chk:hover{border-color:var(--ink-2)}
.ovi-chk.on{background:var(--gold);border-color:var(--gold);color:var(--black)}
.ovi-subt{flex:1;min-width:0;font-family:var(--body);font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovi-subt.done{color:var(--ink-4);text-decoration:line-through}
.ovi-subx{flex:none;color:var(--ink-4);cursor:pointer;font-size:10px;opacity:0;transition:opacity .12s}
.ovi-sub:hover .ovi-subx{opacity:1}
.ovi-subx:hover{color:#E9603A}
.ovi-subempty{font-family:var(--body);font-style:italic;font-size:11.5px;color:var(--ink-4);padding:3px 0}
.ovi-addsub{align-self:flex-start;margin-top:5px;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-3);background:none;border:0;cursor:pointer;padding:2px 0;transition:color .12s}
.ovi-addsub:hover{color:var(--ink)}
/* lifecycle bar in the drill-down: complete/fail + evolve */
.ovi-life{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px;padding-top:9px;border-top:1px solid var(--line-3)}
.ovi-life-b{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);
  background:var(--void-2);border:1px solid var(--line-2);padding:5px 9px;cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.ovi-life-b:hover{color:var(--ink);border-color:var(--line)}
.ovi-life-b.win:hover{color:#6FA8A0;border-color:rgba(111,168,160,.5)}
.ovi-life-b.loss:hover{color:#E9603A;border-color:rgba(233,96,58,.5)}
/* campaign badges + reasoning */
.ovq-conq{flex:none;font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:#6FA8A0;border:1px solid rgba(111,168,160,.5);padding:2px 7px}
.ovq-done{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);border:1px solid var(--line-2);padding:2px 7px}
.ovq-group.conquered{opacity:.82}
.ovq-why{padding:7px 13px;border-top:1px solid var(--line-3);font-family:var(--body);font-size:12px;line-height:1.4;color:var(--ink-3);cursor:pointer;transition:color .12s}
.ovq-why:hover{color:var(--ink-2)}
.ovq-head .ovo-dl[data-campdl]{cursor:pointer}
/* trait development row — forged traits leveling as you log */
.ovq-traits{display:flex;flex-wrap:wrap;gap:8px;padding:9px 13px;border-top:1px solid var(--line-3);background:rgba(0,0,0,.14)}
.ovq-trait{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line-2);padding:5px 10px;cursor:pointer;transition:border-color .12s,background .12s}
.ovq-trait:hover{border-color:var(--gc,var(--line));background:rgba(255,255,255,.03)}
.ovq-tn{font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.ovq-tstage{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.06em;text-transform:uppercase}
.ovq-trait .stg-pips{margin:0;gap:2px;width:56px}
/* toast */
.ov-toast{position:fixed;left:50%;bottom:34px;transform:translate(-50%,14px);z-index:9999;
  font-family:var(--disp);font-weight:600;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);
  background:var(--panel-2);border:1px solid var(--line);padding:11px 18px;box-shadow:0 12px 34px rgba(0,0,0,.5);
  opacity:0;transition:opacity .25s,transform .25s;pointer-events:none}
.ov-toast.on{opacity:1;transform:translate(-50%,0)}
/* ROUTINES — grouped by phase (breaking / building / maintaining) */
.ovr-group{margin-bottom:12px;border:1px solid var(--line-3)}
.ovr-h{display:flex;align-items:center;gap:7px;padding:8px 13px;border-bottom:1px solid var(--line-3);background:rgba(255,255,255,.018);
  font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2)}
.ovr-h .ovr-g{font-size:12px}
.ovr-h .ovr-n{font-family:'Anton',sans-serif;letter-spacing:0;color:var(--ink-3)}
.ovr-h em{margin-left:auto;font-family:var(--body);font-style:italic;font-weight:400;font-size:10.5px;letter-spacing:0;text-transform:none;color:var(--ink-4)}
.ovr-h.ph-breaking .ovr-g{color:#E9603A}
.ovr-h.ph-building .ovr-g{color:var(--gold)}
.ovr-h.ph-maintaining .ovr-g{color:#6FA8A0}
/* ── HERO SELVES — the mandate row: 3 self cards with their core moves (clarity layer) ── */
.ov-hero-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:26px}
@media (max-width:1100px){ .ov-hero-row{grid-template-columns:1fr} }
.ov-hero{position:relative;min-height:236px;border:1px solid var(--line-2);border-top:3px solid var(--sc);overflow:hidden;cursor:pointer;
  display:flex;flex-direction:column;justify-content:flex-end;background:var(--void-2);transition:transform .14s,border-color .14s}
.ov-hero:hover{transform:translateY(-2px);border-color:var(--sc)}
.ovh-poster{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center 18%}
.ovh-grad{display:none}
.ovh-body{position:relative;z-index:1;padding:15px 16px 14px}
.ovh-label{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--sc);margin-bottom:3px;text-shadow:0 1px 8px rgba(0,0,0,.8);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovh-name{font-family:'Anton',sans-serif;font-size:23px;letter-spacing:.01em;text-transform:uppercase;color:#fff;line-height:.98;margin-bottom:12px;text-shadow:0 2px 14px rgba(0,0,0,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovh-mandate{list-style:none;margin:0 0 13px;padding:0;display:flex;flex-direction:column;gap:5px}
.ovh-mandate li{position:relative;padding-left:15px;font-family:var(--disp);font-weight:500;font-size:13px;letter-spacing:.01em;color:var(--ink);line-height:1.24;text-shadow:0 1px 8px rgba(0,0,0,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovh-mandate li::before{content:"›";position:absolute;left:0;color:var(--sc);font-weight:700}
.ovh-mandate li em{font-style:normal;color:var(--ink-3);font-size:11px;margin-left:6px}
.ovh-empty{font-family:var(--body);font-style:italic;font-size:12px;color:var(--ink-2);margin-bottom:13px}
.ovh-foot{display:flex;align-items:center;gap:10px}
.ovh-gap{display:inline-flex;align-items:center;gap:7px;font-family:'Anton',sans-serif;font-size:13px;color:#fff}
.ovh-gtrk{width:50px;height:4px;background:rgba(255,255,255,.2);overflow:hidden;display:inline-block}
.ovh-gtrk i{display:block;height:100%}
.ovh-edit{font-size:12px;color:var(--ink-2);background:none;border:0;cursor:pointer;padding:2px}
.ovh-edit:hover{color:#fff}
.ovh-enter{margin-left:auto;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--sc)}
/* your selves — portrait cards, click to enter (slide-in) */
.ov-selves{display:flex;flex-direction:column;gap:11px;margin-bottom:22px}
.ov-self{display:flex;flex-direction:column;padding:0;border:1px solid var(--line-2);background:var(--void-2);cursor:pointer;overflow:hidden;text-align:left;transition:border-color .14s,transform .12s}
.ov-self:hover{border-color:var(--sc);transform:translateY(-1px)}
.ovs-poster{height:104px;background-size:cover;background-position:center 22%}
.ovs-body{padding:10px 12px 12px}
.ovs-name{font-family:'Anton',sans-serif;font-size:17px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);line-height:1;margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovs-gap{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ovs-track{flex:1;height:5px;background:rgba(255,255,255,.08);overflow:hidden}
.ovs-track i{display:block;height:100%}
.ovs-pct{flex:none;font-family:'Anton',sans-serif;font-size:13px}
.ovs-meta{font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.ov-pulse .cs-wrap{margin-top:2px}
/* identities page → slide-in from the right, filtered to one self */
#sub-identities.id-slide{transform:translateX(4%);opacity:0;transition:transform .3s cubic-bezier(.33,1,.68,1),opacity .24s ease;will-change:transform,opacity}
#sub-identities.id-slide.slide-open{transform:none;opacity:1}
.id-slide-bar{display:flex;align-items:center;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.id-slide-back{flex:none;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-2);background:var(--void-2);border:1px solid var(--line-2);padding:7px 13px;cursor:pointer;transition:color .12s,border-color .12s}
.id-slide-back:hover{color:var(--ink);border-color:var(--line)}

/* fix #1 — the actual habits, always visible (no hover-to-reveal) */
.camp-doing{margin-bottom:9px}
.cd-h{font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4);margin-bottom:5px}
.cd-row{display:flex;align-items:center;gap:8px;padding:3px 0}
.cd-dot{width:5px;height:5px;border-radius:50%;flex:none;opacity:.85}
.cd-t{flex:1;min-width:0;font-family:var(--disp);font-weight:500;font-size:12px;letter-spacing:.01em;text-transform:uppercase;
  color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-p{flex:none;font-family:'Anton',sans-serif;font-size:12px;color:var(--ink-3)}
.cd-more{font-family:var(--disp);font-weight:500;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);padding-top:3px}
.cd-empty{font-family:var(--body);font-size:11.5px;color:var(--ink-4);font-style:italic}
.camp-meta{font-family:var(--disp) !important;font-weight:500 !important;font-size:9.5px !important;
  letter-spacing:.1em !important;color:var(--ink-3) !important;text-transform:uppercase !important}

/* ── Today's Habits / In Motion → quest-row component ── */
.todo-row,.lm-row{position:relative;display:flex !important;align-items:center;gap:14px !important;
  padding:14px 16px 14px 18px !important;border-bottom:1px solid var(--line-3) !important}
.todo-row:last-child,.lm-row:last-child{border-bottom:0 !important}
.todo-row::before,.lm-row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--acc)}
.todo-row.done::before{background:var(--ink-4)}
/* type glyph hidden — the checkbox takes the left position (heuristic priority) */
.todo-row .kind{display:none !important}
/* phase cue — left bar + glyph read "do" (building) vs "don't" (breaking) vs "automatic" (maintaining) */
.todo-phase{order:1;flex:none;width:16px;text-align:center;font-size:13px;line-height:1}
/* streak habit → days-clean count chip in the left slot (not a green tick) */
.todo-streak{order:0;flex:none;min-width:24px;height:24px;padding:0 5px;display:grid;place-items:center;
  border:1.5px solid var(--line-2);font-family:'Anton',sans-serif;font-size:14px;line-height:1;color:var(--ink)}
.phase-breaking .todo-streak{border-color:#C9512F;color:#C9512F}
.phase-maintaining .todo-streak{border-color:var(--ink-4);color:var(--ink-3)}
.todo-row.phase-breaking::before{background:#C9512F !important}
.todo-row.phase-maintaining::before{background:var(--ink-4) !important}
.ph-breaking{color:#C9512F}
.ph-building{color:var(--ink-3)}
.ph-maintaining{color:var(--ink-4)}
/* drills expander + sub-rows + rest badge */
.todo-exp{order:3;flex:none;font-family:var(--mono);font-size:11px;color:var(--ink-3);cursor:pointer;padding:0 6px;letter-spacing:.04em}
.todo-exp:hover{color:#fff}
.todo-rest{margin-left:9px;font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--sovereign);border:1px solid rgba(199,160,56,.5);padding:1px 6px}
.todo-drills{padding:2px 0 10px 54px;border-bottom:1px solid var(--line-3)}
.drill-row{display:flex;align-items:center;gap:12px;padding:5px 0}
.drill-check{flex:none;width:18px;height:18px;border:1.5px solid var(--line-2);display:grid;place-items:center;
  font-size:0;color:transparent;cursor:pointer}
.drill-check::before{content:"✓";font-size:11px}
.drill-check.on{background:#3ED66B;border-color:#3ED66B;color:#0A0A0B}
.drill-t{font-family:var(--body);font-size:13px;color:var(--ink-2);letter-spacing:.01em}
/* taper (moderated breaking) — used / allowance + log controls, no guilt */
.taper-count{order:0;flex:none;min-width:36px;font-family:'Anton',sans-serif;font-size:16px;line-height:1;color:var(--ink)}
.taper-count em{font-family:var(--mono);font-size:10px;font-style:normal;color:var(--ink-3)}
.taper-count.over{color:var(--sovereign)}
.todo-taper-to{margin-left:8px;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.taper-ctrl{order:4;flex:none;display:flex;gap:5px}
.taper-btn{width:26px;height:26px;display:grid;place-items:center;border:1px solid var(--line-2);background:transparent;
  color:var(--ink);font-size:14px;cursor:pointer;line-height:1}
.taper-btn:hover{border-color:#fff}
.taper-btn.ghost{color:var(--ink-3);font-size:12px}
/* titles → big condensed uppercase */
.todo-t,.lm-title{order:2;flex:1;font-family:var(--disp) !important;font-weight:600 !important;font-size:16px !important;
  letter-spacing:.02em !important;text-transform:uppercase !important;color:var(--ink) !important}
/* meta → small spaced muted */
.todo-meta,.lm-meta{order:3;font-family:var(--disp) !important;font-weight:500 !important;font-size:11px !important;
  letter-spacing:.08em !important;text-transform:uppercase !important;color:var(--ink-3) !important}
.todo-t .todo-camp{font-size:10px !important;letter-spacing:.08em}
.todo-t .todo-recur{border:1px solid var(--line-2) !important;color:var(--ink-2) !important;
  font-family:var(--disp) !important;font-weight:600 !important;letter-spacing:.08em}
/* checkbox → LEFT (where the glyph was), clickable, fills GREEN when held */
.todo-check{order:0;flex:none;width:24px !important;height:24px !important;border:1.5px solid var(--line-2) !important;
  display:grid !important;place-items:center !important;font-size:0 !important;color:transparent !important;cursor:pointer;margin-right:2px}
.todo-check::before{content:"✓";font-size:13px;color:inherit}
.todo-check.on{background:#3ED66B !important;border-color:#3ED66B !important;color:#0A0A0B !important}
/* In Motion realm marker → small diamond */
.lm-dot{border-radius:0 !important;width:8px !important;height:8px !important;transform:rotate(45deg)}

/* Working Toward → stronger title hierarchy */
.wt-t{font-family:var(--disp) !important;font-weight:600 !important;font-size:14px !important;
  letter-spacing:.02em !important;text-transform:uppercase !important}
.wt-bar i{background:var(--ink-2) !important}
/* Traits in the forging — becoming loop, hardline */
.tf-name{font-family:var(--disp) !important;font-weight:600 !important;font-size:13px !important;
  letter-spacing:.03em !important;text-transform:uppercase !important;color:var(--ink) !important}
.tf-bar{background:rgba(255,255,255,.05) !important;height:6px !important}
.tf-bar i{opacity:1 !important}
.tf-n{font-family:'Anton',sans-serif !important;font-size:14px !important;color:var(--ink) !important}
/* ── SKILL TREE — its own tab: graph (left) · details (right) ── */
#view-tree{padding:0}
.tree-layout{display:flex;gap:18px;height:calc(100vh - 150px);min-height:540px;padding:58px 2px 12px}
.tree-graph{flex:1;min-width:0;border:1px solid var(--line);background:#0A0A0C;position:relative;overflow:hidden;
  background-image:radial-gradient(circle at 50% 42%,rgba(255,255,255,.02),transparent 62%)}
#stxSvg{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.tree-side{flex:none;width:330px;display:flex;flex-direction:column;border-left:1px solid var(--line);padding-left:18px}
.tree-side-h{font-family:var(--disp);font-weight:700;font-size:20px;text-transform:uppercase;letter-spacing:.02em;display:flex;align-items:baseline;gap:10px}
.tree-side-h span{font-family:var(--mono);font-size:10px;color:var(--ink-4);letter-spacing:0}
.tree-side-sub{font-family:var(--body);font-size:12px;line-height:1.5;color:var(--ink-3);margin:8px 0 14px}
.tree-add{align-self:flex-start;margin-bottom:16px}
.stx-detail{border:1px solid var(--line-2);background:var(--panel);padding:16px;min-height:120px}
.tree-legend{display:flex;flex-wrap:wrap;gap:9px 14px;margin-top:auto;padding-top:16px;border-top:1px solid var(--line)}
.tree-legend .tl-i{display:flex;align-items:center;gap:6px;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.tree-legend .tl-i i{width:10px;height:10px;display:inline-block}
.stx-dh{font-family:var(--disp);font-weight:700;font-size:18px;text-transform:uppercase;letter-spacing:.02em;line-height:1.05}
.stx-fn{font-family:var(--body);font-size:12px;line-height:1.45;color:var(--ink-2);margin:8px 0 12px;font-style:italic}
.stx-prog{margin:0 0 6px}
.stx-prog-l{display:flex;justify-content:space-between;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px}
.stx-prog-bar{height:4px;background:rgba(255,255,255,.06);position:relative}
.stx-prog-bar i{position:absolute;left:0;top:0;bottom:0}
.stx-chip.gold{border-color:#E8C45C;color:#E8C45C}
.stx-dc{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-top:5px}
.stx-dl{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin:13px 0 4px}
.stx-dv{font-size:12px;color:var(--ink-2);line-height:1.4}
.stx-chip{display:inline-block;font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line-2);padding:2px 6px;margin:2px 3px 2px 0;color:var(--ink-2)}
.stx-chip.stx-link{cursor:pointer;transition:border-color .12s,color .12s}
.stx-chip.stx-link:hover{border-color:#fff;color:#fff}
.st-gotree{flex:none;cursor:pointer;font-size:12px;color:var(--ink-4);padding:0 3px;opacity:0;transition:opacity .12s,color .12s}
.st-node:hover .st-gotree{opacity:1}
.st-gotree:hover{color:#fff}
.q-flash{animation:qflash 1.7s ease-out}
@keyframes qflash{0%{box-shadow:inset 0 0 0 9999px rgba(232,196,92,.18)}100%{box-shadow:inset 0 0 0 9999px transparent}}
/* mastery stage pips (Dreyfus) — tree detail panel */
.stg-pips{display:flex;gap:3px;margin:7px 0 2px}
.stg-pip{width:100%;height:3px;background:var(--line-2);border:0;border-radius:2px;opacity:.5}
.stg-pip.on{opacity:1}
.stx-stagerow{margin-top:6px}
.stx-stagebtn{background:none;border:0;padding:0;cursor:pointer;font-family:var(--body);font-size:10px;letter-spacing:.02em;color:var(--ink-4);transition:color .12s}
.stx-stagebtn:hover{color:#fff}
/* per-row stage chip — identity gap tree */
.st-stage{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase}
.st-stage.dormant{color:var(--ink-4)}
/* THE DISTANCE — gap gauge on the character sheet */
.gap-gauge{border:1px solid var(--line-2);background:var(--panel);padding:14px 16px;margin:2px 0 14px}
.gap-ends{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.gap-ends .gap-him{font-size:12px;letter-spacing:.06em}
.gap-track{position:relative;height:6px;background:var(--line-2);margin:9px 0 10px;border-radius:3px}
.gap-track i{display:block;height:100%;border-radius:3px}
.gap-mark{position:absolute;top:50%;width:12px;height:12px;background:var(--black);border:2px solid #fff;border-radius:50%;transform:translate(-50%,-50%)}
.gap-line{font-size:12.5px;color:var(--ink-2)}
.gap-line b{color:#fff}
.gap-sub{color:var(--ink-3)}
.gap-him-out{margin-top:7px;padding-top:8px;border-top:1px solid var(--line-3);font-size:12px;color:var(--ink-3);font-style:italic}
/* ── Home cockpit: pulse tiles + trends + stakes + what's-new ── */
.lch-pulse{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0 8px}
@media(max-width:640px){.lch-pulse{grid-template-columns:repeat(2,1fr)}}
.pulse-tile{border:1px solid var(--line-2);background:var(--panel);padding:13px 15px;min-height:78px;display:flex;flex-direction:column;justify-content:space-between}
.pulse-tile[data-goto-tree],.pulse-tile[data-goto-build],.pulse-tile[data-goto-identity]{cursor:pointer;transition:border-color .12s,background .12s}
.pulse-tile[data-goto-tree]:hover,.pulse-tile[data-goto-build]:hover,.pulse-tile[data-goto-identity]:hover{border-color:#fff;background:var(--panel-2)}
.pt-l{font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.pt-v{font-family:'Anton',sans-serif;font-size:26px;line-height:1;margin:6px 0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-s{font-size:10.5px;color:var(--ink-3);letter-spacing:.02em}
.lch-trends{margin-bottom:6px}
.trend-row{display:flex;align-items:baseline;gap:8px;border:1px solid var(--line);background:var(--panel);padding:12px 14px}
.trend-arrow{font-size:15px}
.trend-arrow.up{color:var(--green)}.trend-arrow.down{color:var(--force)}
.trend-main{font-family:'Anton',sans-serif;font-size:22px;line-height:1}
.trend-sub{font-size:11px;color:var(--ink-3)}
.lch-stakes{margin-bottom:6px}
.stake-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-left:2px solid var(--line-2);background:var(--panel);padding:9px 12px;margin-bottom:5px;cursor:pointer;transition:border-color .12s}
.stake-row.you{border-left-color:var(--sovereign)}
.stake-row:hover{border-color:var(--line-2)}
.stake-q{font-family:var(--disp);font-weight:600;font-size:12px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stake-meta{flex:none;font-size:10px;color:var(--ink-3);font-family:var(--mono)}
.stake-empty{border:1px dashed var(--line-2);background:transparent;padding:12px 14px;font-size:12px;color:var(--ink-3);cursor:pointer}
.stake-empty:hover{color:#fff;border-color:#fff}
.news-row{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line-3)}
.news-row:last-child{border-bottom:0}
.news-tag{flex:none;align-self:flex-start;font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line-2);padding:2px 6px;margin-top:2px}
.news-title{font-family:var(--disp);font-weight:600;font-size:13px;letter-spacing:.02em;text-transform:uppercase;color:#fff}
.news-blurb{font-size:11.5px;color:var(--ink-3);line-height:1.5;margin-top:2px}

/* ── GUILD ── */
.gld-body,.cdx-body{max-width:860px}
.gld-hero{display:flex;gap:18px;align-items:center;border:1px solid var(--line-2);background:var(--panel);padding:20px 22px;margin-bottom:6px}
.gld-crest{font-size:38px;width:64px;height:64px;flex:none;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-2);background:var(--panel-2)}
.gld-hero-b{flex:1;min-width:0}
.gld-name{font-family:var(--disp);font-weight:700;font-size:26px;letter-spacing:.02em;text-transform:uppercase;line-height:1}
.gld-ethos{font-size:13px;color:var(--ink-2);margin-top:5px;font-style:italic}
.gld-meta{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);margin-top:7px}
.gld-dim{color:var(--ink-4)}
.gld-hero-act{display:flex;flex-direction:column;gap:6px;flex:none}
.gld-sec-h{display:flex;align-items:center;gap:10px;font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);margin:22px 0 10px}
.gld-sec-h span{font-family:'Anton',sans-serif;color:var(--ink-4)}
.gld-sec-h .gld-invite{margin-left:auto}
.gld-prow,.gld-mrow{display:flex;align-items:center;gap:12px;border:1px solid var(--line);background:var(--panel);padding:10px 14px;margin-bottom:5px}
.gld-mrow.me{border-left:2px solid var(--sovereign)}
.gld-pav{flex:none;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:700;font-size:11px;background:var(--panel-2);border:1px solid var(--line-2);color:var(--ink-2)}
.gld-pn,.gld-mn{flex:1;font-family:var(--disp);font-weight:600;font-size:14px;letter-spacing:.02em;text-transform:uppercase}
.gld-pn em,.gld-mn em{font-family:var(--body);font-weight:500;font-size:10px;letter-spacing:.04em;text-transform:none;color:var(--ink-3)}
.gld-mlv{flex:none;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.gld-badge{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;padding:1px 6px;border:1px solid var(--line-2);margin-left:6px}
.gld-badge.lead{border-color:var(--sovereign);color:var(--sovereign)}
.gld-badge.off{border-color:var(--mind);color:var(--mind)}
.gld-pact,.gld-mact{flex:none;display:flex;gap:5px}
.gld-found{border:1px solid var(--line-2);background:var(--panel);padding:20px 22px;cursor:pointer;transition:border-color .12s,background .12s}
.gld-found:not(.locked):hover{border-color:#fff;background:var(--panel-2)}
.gld-found.locked{cursor:default;opacity:.6;border-style:dashed}
.gld-found-t{font-family:var(--disp);font-weight:700;font-size:18px;letter-spacing:.03em;text-transform:uppercase}
.gld-found-s{font-size:12px;color:var(--ink-3);margin-top:4px}
.gld-disc{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:640px){.gld-disc{grid-template-columns:1fr}}
.gld-dcard{display:flex;gap:12px;align-items:center;border:1px solid var(--line);background:var(--panel);padding:12px 14px}
.gld-dcrest{font-size:24px;width:40px;height:40px;flex:none;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-2)}
.gld-db{flex:1;min-width:0}
.gld-dn{font-family:var(--disp);font-weight:700;font-size:15px;letter-spacing:.02em;text-transform:uppercase}
.gld-de{font-size:11.5px;color:var(--ink-3);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gld-dm{font-family:var(--mono);font-size:9.5px;color:var(--ink-4);margin-top:3px}
.gld-joinbtn{flex:none}

/* ── CODEX ── */
.cdx-tabs{display:flex;gap:4px;margin:0 0 16px}
.cdx-tabs b{font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line-2);padding:6px 14px;cursor:pointer}
.cdx-tabs b.on{color:#000;background:#fff;border-color:#fff}
.cdx-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:640px){.cdx-grid{grid-template-columns:1fr}}
.cdx-card{border:1px solid var(--line-2);background:var(--panel);padding:16px 18px}
.cdx-cover{font-size:26px;margin-bottom:8px}
.cdx-cover.sm{font-size:18px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-2);margin:0}
.cdx-ct{font-family:var(--disp);font-weight:700;font-size:18px;letter-spacing:.02em;text-transform:uppercase;line-height:1.05}
.cdx-cs{font-size:12px;color:var(--ink-2);margin-top:4px;font-style:italic}
.cdx-cmeta{font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-top:9px}
.cdx-cby{font-family:var(--mono);font-size:10px;color:var(--ink-4);margin-top:2px}
.cdx-cact{margin-top:12px}
.cdx-pick{margin-top:10px;padding-top:10px;border-top:1px solid var(--line-3);display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.cdx-pick-l{font-family:var(--mono);font-size:10px;color:var(--ink-3);width:100%}
.cdx-list{display:flex;flex-direction:column;gap:6px}
.cdx-mrow{display:flex;align-items:center;gap:12px;border:1px solid var(--line);background:var(--panel);padding:11px 14px}
.cdx-mb{flex:1;min-width:0}
.cdx-pubform{border:1px solid var(--line-2);background:var(--panel);padding:22px;max-width:520px}
.cdx-pf-h{font-family:var(--disp);font-weight:700;font-size:17px;letter-spacing:.02em;text-transform:uppercase}
.cdx-pf-s{font-size:12px;color:var(--ink-3);margin:6px 0 16px;line-height:1.5}
.cdx-lbl{display:block;font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:12px 0 4px}
.cdx-inp{width:100%;background:var(--panel-2);border:1px solid var(--line-2);color:var(--ink);font-family:var(--body);font-size:13px;padding:9px 11px}
.cdx-pf-act{margin-top:18px}
.stx-em{color:var(--ink-4);font-style:italic;font-size:11px}
/* ── SKILL TREE (v2 node graph) — legacy list styles (character sheet still uses .st-*) ── */
.st-filter{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 20px}
.st-filter b{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-3);border:1px solid var(--line-2);padding:5px 11px;cursor:pointer}
.st-filter b.on{color:#fff;border-color:#fff}
.st-sec{margin:0 0 24px}
.st-sec-h{display:flex;align-items:center;gap:8px;font-family:var(--disp);font-weight:600;font-size:11px;
  letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);padding-bottom:7px;margin-bottom:6px;border-bottom:1px solid var(--line)}
.st-sec-h span{font-family:var(--mono);letter-spacing:0;color:var(--ink-4);font-size:10px}
.st-node{display:flex;align-items:center;gap:12px;padding:9px 4px;border-bottom:1px solid var(--line-3)}
.st-node:last-child{border-bottom:0}
.st-node.d1{margin-left:22px;position:relative}
.st-node.d2{margin-left:44px;position:relative}
.st-node.d1::before,.st-node.d2::before{content:"└";position:absolute;left:-14px;color:var(--ink-4);font-family:var(--mono)}
.st-dots{flex:none;display:flex;gap:3px;min-width:22px}
.st-dot{width:8px;height:8px;transform:rotate(45deg)}
.st-nm{flex:1;font-family:var(--disp);font-weight:600;font-size:14px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink)}
.st-node.d1 .st-nm,.st-node.d2 .st-nm{font-size:12.5px;color:var(--ink-2)}
.st-link{margin-left:9px;font-family:var(--body);font-weight:500;font-size:10px;letter-spacing:.04em;
  text-transform:none;color:var(--ink-4);border:1px solid var(--line-2);padding:1px 6px}
.st-lv{flex:none;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase}
.st-ev{flex:none;min-width:30px;text-align:right;font-family:'Anton',sans-serif;font-size:17px;line-height:1}
.st-feats{display:flex;flex-wrap:wrap;gap:8px}
.st-feat{display:inline-flex;flex-direction:column;gap:1px;font-family:var(--disp);font-weight:600;font-size:11px;
  letter-spacing:.06em;text-transform:uppercase;color:var(--ink);border:1px solid var(--line-2);padding:7px 12px}
.st-feat em{font-family:var(--body);font-weight:400;font-size:9.5px;letter-spacing:.02em;text-transform:none;color:var(--ink-3)}
/* create-as-you-go controls */
.st-filter .st-addbtn{margin-left:auto;color:var(--ink-2);border-color:var(--line-2)}
.st-filter .st-addbtn:hover{color:#fff;border-color:#fff}
.st-add{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px;padding:14px;border:1px solid var(--line-2);background:var(--panel)}
.st-in{flex:1;min-width:180px;background:rgba(255,255,255,.04);border:1px solid var(--line-2);color:var(--ink);
  font-family:var(--body);font-size:13px;padding:8px 10px;border-radius:0}
.st-in::placeholder{color:var(--ink-4)}
.st-sel{background:var(--panel-2);border:1px solid var(--line-2);color:var(--ink-2);font-family:var(--disp);
  font-weight:500;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:8px 8px;border-radius:0}
.st-mini{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:#0A0A0B;background:#fff;border:1px solid #fff;padding:7px 13px;cursor:pointer}
.st-mini:hover{background:var(--ink-2);border-color:var(--ink-2)}
.st-mini.danger{background:transparent;color:var(--force);border-color:rgba(201,81,47,.5)}
.st-mini.danger:hover{background:var(--force);color:#0A0A0B;border-color:var(--force)}
.st-nm[data-stnode]{cursor:pointer}
.st-node.open .st-nm{color:#fff}
.st-open{padding:8px 0 12px 40px;border-bottom:1px solid var(--line-3)}
.st-bm{display:flex;align-items:center;gap:11px;padding:4px 0}
.st-bm-x{flex:none;width:17px;height:17px;border:1.5px solid var(--line-2);display:grid;place-items:center;
  font-size:0;color:transparent;cursor:pointer}
.st-bm-x::before{content:"✓";font-size:10px}
.st-bm-x.met{background:var(--green);border-color:var(--green);color:#0A0A0B}
.st-bm-l{font-family:var(--body);font-size:13px;color:var(--ink-2)}
.st-bm-empty{font-family:var(--body);font-size:12px;color:var(--ink-4);font-style:italic;padding:2px 0 6px}
.st-open-act{display:flex;gap:8px;margin-top:8px}
.id-tree{margin-top:6px}
/* shadow journal (bottom-up gap) */
.id-shadow{margin-top:6px}
.shadow-entry{border:1px solid var(--line);border-left:3px solid var(--ink-3);background:var(--panel);padding:12px 14px;margin:0 0 9px}
.shadow-body{font-family:var(--body);font-size:13.5px;line-height:1.5;color:var(--ink)}
.shadow-insight{margin-top:6px;font-family:var(--body);font-size:12.5px;color:var(--ink-2);font-style:italic}
.shadow-act{display:flex;gap:8px;margin-top:9px}
.shadow-mini{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-3);background:transparent;border:1px solid var(--line-2);padding:4px 9px;cursor:pointer}
.shadow-mini:hover{color:#fff;border-color:#fff}
.shadow-mini.x{margin-left:auto;color:var(--ink-4)}
.shadow-mini.x:hover{color:var(--force);border-color:var(--force)}
/* creed (public principles) */
.lch-creed{margin-top:4px}
.creed-list{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.creed-line{display:flex;align-items:baseline;gap:11px;padding:7px 0;border-bottom:1px solid var(--line-3)}
.creed-mark{flex:none;color:var(--ink-4);font-family:var(--mono)}
.creed-t{flex:1;font-family:var(--body);font-size:14px;color:var(--ink);letter-spacing:.01em}
.creed-x{flex:none;color:var(--ink-4);font-size:11px;cursor:pointer;opacity:0;transition:opacity .12s}
.creed-line:hover .creed-x{opacity:1}
.creed-x:hover{color:var(--force)}
/* outcome WBS (work-breakdown) + KPI */
.wt-t[data-outexp]{cursor:pointer}
.wt-row.open .wt-t{color:#fff}
.wt-kpi{display:flex;align-items:center;gap:9px;margin-top:7px}
.wt-kpi-l{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--sovereign);flex:none;min-width:74px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wt-kpi-bar{flex:1;height:4px;background:rgba(255,255,255,.06);position:relative}
.wt-kpi-bar i{position:absolute;left:0;top:0;bottom:0;background:var(--sovereign)}
.wt-kpi-v{flex:none;font-family:var(--mono);font-size:10px;color:var(--ink-2)}
.wt-open{margin-top:10px;padding-top:8px;border-top:1px solid var(--line-3)}
.wbs-row{display:flex;align-items:center;gap:11px;padding:4px 0}
.wbs-row.d1{margin-left:26px}
.wbs-check{flex:none;width:17px;height:17px;border:1.5px solid var(--line-2);display:grid;place-items:center;font-size:0;color:transparent;cursor:pointer}
.wbs-check::before{content:"✓";font-size:10px}
.wbs-check.on{background:var(--green);border-color:var(--green);color:#0A0A0B}
.wbs-t{flex:1;font-family:var(--body);font-size:13px;color:var(--ink-2)}
.wbs-t.done{color:var(--ink-4);text-decoration:line-through}
.wbs-x{flex:none;color:var(--ink-4);font-size:12px;cursor:pointer}
.wbs-x:hover{color:var(--force)}
.wt-open-act{display:flex;gap:8px;margin-top:9px}
/* horizon grouping — near targets vs the long arc */
.wt-grp{margin-bottom:16px}
.wt-grp:last-child{margin-bottom:0}
.wt-grp-h{display:flex;align-items:center;gap:8px;font-family:var(--disp);font-weight:600;
  font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);
  padding-bottom:6px;margin-bottom:8px;border-bottom:1px solid var(--line)}
.wt-grp-h span{font-family:var(--mono,'Space Mono',monospace);letter-spacing:0;color:var(--ink-4);font-size:10px}

/* ── SUBSTRIPE status bar (inverted, like the broadcast reference) ── */
.lch-substripe{display:flex;align-items:center;background:var(--ink);color:#0A0A0B;
  padding:0 6px 0 18px;height:30px;margin:16px 0 8px;
  clip-path:polygon(0 0,100% 0,calc(100% - 16px) 100%,0 100%)}
.lch-substripe span{font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.lch-substripe .sep{margin:0 13px;color:rgba(10,10,11,.38);letter-spacing:0}
.lch-substripe .end{margin-left:auto;display:flex;gap:4px;padding-right:12px}
.lch-substripe .end b{width:3px;height:14px;background:rgba(10,10,11,.78);transform:skewX(-22deg)}

/* hero → no corner bracket (blends into the banner) and no base accent line */
.lch-hero-main{position:relative}

/* hero identity stats (replaces the finite installed-% bar) */
.lhm-stats{display:flex;gap:28px;margin-top:22px}
.lhm-st{display:flex;flex-direction:column;min-width:56px}
.lhm-st .v{font-family:'Anton',sans-serif;font-size:28px;line-height:1;color:#fff}
.lhm-st .l{margin-top:6px;font-family:var(--disp);font-weight:600;font-size:9.5px;
  letter-spacing:.09em;text-transform:uppercase;color:rgba(255,255,255,.62);line-height:1.25}

/* textures — diagonal hatch weave on hud + campaign cards */
.hud{background-color:var(--void-2) !important;
  background-image:repeating-linear-gradient(122deg,transparent 0 6px,rgba(255,255,255,.018) 6px 7px) !important}
.camp-card::before{background-image:repeating-linear-gradient(122deg,transparent 0 7px,rgba(255,255,255,.02) 7px 8px)}

/* ══════════════════════════════════════════════════════════════
   DAILY RITE → inverse paper surface (the high-commitment module).
   ══════════════════════════════════════════════════════════════ */
.rite-card{background:#0A0A0B !important}                       /* frame layer (dark, invisible on black) */
.rite-card::before{background:var(--ink) !important;background-image:none !important}  /* paper fill layer — matches the white substripe bar exactly */
.rite-card *{color:#14130F !important}
.rite-card .hcard-h{color:#0A0A0B !important}
.rite-card .hcard-sub,.rite-card .rite-step{color:#6b6659 !important}
.rite-card .hcard-h::after{background:#0A0A0B !important}
/* inputs on paper */
.rite-card .rite-vow,.rite-card .rite-cap,.rite-card .rite-line{
  background:rgba(0,0,0,.05) !important;border-color:rgba(0,0,0,.22) !important;color:#14130F !important}
.rite-card .rite-vow::placeholder,.rite-card .rite-cap::placeholder{color:#8a867c !important}
/* seal / primary → black on paper (re-inverted) */
.rite-card .rite-seal,.rite-card .btn{background:#0A0A0B !important;color:#fff !important;border-color:#0A0A0B !important}
/* frame details on paper → dark */
.rite-card .rite-state,.rite-card .rite-seal-wrap{border-color:rgba(0,0,0,.15) !important}
.rite-card .rite-mark{border-color:rgba(0,0,0,.4) !important}

/* ══════════════════════════════════════════════════════════════
   COMMAND CENTER — inline campaign edit (click name/why in place).
   ══════════════════════════════════════════════════════════════ */
.bkt-act{opacity:.45 !important}                 /* delete ✕ always faintly visible */
.bkt:hover .bkt-act{opacity:1 !important}
.bkt-name{cursor:text}
.bkt-name:hover{text-decoration:underline;text-decoration-color:var(--brd-2);text-underline-offset:3px}
.bkt-out{cursor:text;display:inline-block;margin-top:2px}
.bkt-out:hover{color:var(--ink-2) !important}
.bkt-out-empty{color:var(--ink-4) !important;font-style:italic}
.bkt-editing{outline:1px solid var(--brd-2);outline-offset:3px;background:rgba(255,255,255,.05);
  color:var(--ink) !important;text-decoration:none !important;border-radius:0}

/* ══════════════════════════════════════════════════════════════
   COMMAND CENTER — responsiveness: shrink the podium, stop cropping.
   ══════════════════════════════════════════════════════════════ */
.cmd-board{overflow-x:hidden !important;overflow-y:auto !important}
.cmd-layout{grid-template-columns:minmax(0,1fr) minmax(260px,30%) !important}
@media (max-width:1180px){
  .cmd-layout{grid-template-columns:1fr !important;height:auto !important}
  .map-podium{width:240px !important;height:auto !important;margin:0 0 16px auto !important}
}

/* ── PROGRESSION — trait XP bars + identity aggregate level + sprint projection ── */
.id-traits{margin-bottom:8px}
.tr-agg{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 15px;margin-bottom:12px;
  border:1px solid var(--line-2);background:var(--void-2)}
.tr-agg-l{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4)}
.tr-agg-v{font-family:'Anton',sans-serif;font-size:30px;line-height:.95}
.tr-agg-proj{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.tr-agg-proj.dim{color:var(--ink-4)}
.tr-list{display:flex;flex-direction:column;gap:9px}
.tr-row{padding:2px 0}
.tr-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:5px}
.tr-nm{font-family:var(--disp);font-weight:600;font-size:12px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-2)}
.tr-lv{flex:none;font-family:var(--disp);font-weight:700;font-size:11px;letter-spacing:.04em;text-transform:uppercase}
.tr-bar{position:relative;height:6px;background:var(--line-3);overflow:hidden}
.tr-bar i{position:absolute;left:0;top:0;height:100%;display:block}
.tr-bar .tr-proj{position:absolute;top:0;height:100%;display:block;background:var(--c);opacity:.32;
  background-image:repeating-linear-gradient(45deg,transparent 0 3px,rgba(255,255,255,.25) 3px 6px)}
.tr-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px;
  font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4)}
.tr-gain{font-weight:700}
.tr-idle{color:var(--ink-4);opacity:.6}

/* Progression — trait "fed by" quest chips (reverse of the campaign node's forge pips) */
.tr-feeders{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:6px}
.tr-fed-l{font-family:var(--disp);font-weight:600;font-size:7.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);flex:none}
.tr-feed{font-family:var(--disp);font-weight:500;font-size:8.5px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-3);
  border:1px solid var(--line-2);padding:1px 6px;white-space:nowrap;max-width:150px;overflow:hidden;text-overflow:ellipsis}
.tr-feed.more{color:var(--ink-4)}
.tr-row{padding-bottom:4px;border-bottom:1px solid var(--line-3)}
.tr-row:last-child{border-bottom:0}

/* evolve button inside a quest node's hover tip — spawn the next rung of an evolution chain */
.cg-tip-btn{display:block;width:100%;margin-top:7px;font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--c);background:transparent;border:1px solid color-mix(in srgb,var(--c) 45%,transparent);
  padding:4px 6px;cursor:pointer;transition:background .12s,color .12s}
.cg-tip-btn:hover{background:var(--c);color:var(--void-1)}

/* ── THE SYSTEM — AI forge/repair panel on the identity page ── */
.jr-sec-act.sys{color:var(--c);border-color:color-mix(in srgb,var(--c) 55%,transparent)}
.jr-sec-act.sys:hover{background:var(--c);color:var(--void-1);border-color:var(--c)}
.dag-forge{margin:0 0 4px}
.sysf-panel{--c:var(--gold);border:1px solid color-mix(in srgb,var(--c) 45%,transparent);background:var(--void-2);padding:12px 14px;margin-bottom:14px}
.sysf-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.sysf-t{font-family:var(--disp);font-weight:700;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--c)}
.sysf-x{background:transparent;border:0;color:var(--ink-4);font-size:13px;cursor:pointer;padding:0 2px}
.sysf-x:hover{color:var(--ink-2)}
.sysf-busy{font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--c);animation:cghp 1.4s ease-in-out infinite}
.sysf-reply{font-family:var(--body);font-size:12.5px;line-height:1.5;color:var(--ink-2);margin-bottom:10px;white-space:normal}
.sysf-acts{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.sysf-act{text-align:left;font-family:var(--disp);font-weight:500;font-size:11px;letter-spacing:.02em;color:var(--ink-2);
  background:var(--void-1);border:1px solid var(--line-2);padding:6px 9px;cursor:pointer;transition:border-color .12s,color .12s}
.sysf-act:hover{border-color:var(--c);color:var(--ink)}
.sysf-act.applied{opacity:.5;color:var(--c);cursor:default}
.sysf-applyall{font-family:var(--disp);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  background:var(--c);color:var(--void-1);border:0;padding:7px 14px;cursor:pointer}
.sysf-applyall:hover{filter:brightness(1.1)}

/* The System — what it learned about you (accumulating memory) */
.sysf-learned{border-left:2px solid color-mix(in srgb,var(--c) 50%,transparent);padding:2px 0 2px 10px;margin:0 0 10px}
.sysf-learned-l{display:block;font-family:var(--disp);font-weight:700;font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--c);margin-bottom:4px}
.sysf-learned-r{font-family:var(--body);font-size:11.5px;line-height:1.45;color:var(--ink-3);margin-bottom:2px}

/* ══ THE SYSTEM — floating copilot ══ */
.sysco{position:fixed;z-index:4000;font-family:var(--body)}
.sco-launch{position:fixed;right:22px;bottom:22px;z-index:4001;width:54px;height:54px;border-radius:50%;
  background:var(--void-1);border:1.5px solid var(--gold);color:var(--gold);font-size:22px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;box-shadow:0 8px 26px rgba(0,0,0,.55);transition:transform .15s,box-shadow .15s}
.sco-launch:hover{transform:scale(1.08);box-shadow:0 0 22px -4px var(--gold)}
.sco-launch.hidden{display:none}
.sco-badge{position:absolute;top:6px;right:6px;width:10px;height:10px;border-radius:50%;background:transparent}
.sco-badge.on{background:#E9603A;box-shadow:0 0 0 2px var(--void-1);animation:cghp 1.6s ease-in-out infinite}
.sco-panel{position:fixed;right:0;top:0;bottom:0;z-index:4002;width:390px;max-width:92vw;background:#0A0A0B;
  border-left:1px solid var(--line-1);display:flex;flex-direction:column;transform:translateX(105%);transition:transform .22s cubic-bezier(.4,0,.2,1);box-shadow:-18px 0 50px rgba(0,0,0,.7)}
.sco-panel.open{transform:translateX(0)}
.sco-head{flex:none;display:flex;align-items:center;gap:9px;padding:14px 14px;border-bottom:1px solid var(--line-2)}
.sco-title{font-family:'Anton',sans-serif;font-size:15px;letter-spacing:.03em;color:var(--gold)}
.sco-sub{font-family:var(--disp);font-weight:500;font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.sco-icon{margin-left:0;background:transparent;border:1px solid var(--line-2);color:var(--ink-3);width:26px;height:26px;cursor:pointer;font-size:13px;transition:color .12s,border-color .12s}
.sco-icon#scoRun{margin-left:auto}
.sco-icon:hover{color:var(--gold);border-color:var(--gold)}
.sco-body{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:11px}
.sco-body::-webkit-scrollbar{width:7px}.sco-body::-webkit-scrollbar-thumb{background:var(--line-2)}
.sco-empty,.sco-hello{font-family:var(--body);font-size:12.5px;line-height:1.55;color:var(--ink-3);padding:6px 2px}
.sco-hello b{color:var(--ink);font-family:var(--disp);font-weight:600}
.sco-msg{max-width:90%;font-family:var(--body);font-size:12.5px;line-height:1.5;padding:9px 12px}
.sco-msg.user{align-self:flex-end;background:var(--gold);color:var(--void-1);font-weight:500}
.sco-msg.sys{align-self:flex-start;background:var(--void-2);border:1px solid var(--line-2);color:var(--ink-2)}
.sco-think{color:var(--ink-4);font-style:italic;animation:cghp 1.4s ease-in-out infinite}
.sco-brief{border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);background:var(--void-2);padding:12px}
.sco-brief.fresh{box-shadow:0 0 0 1px var(--gold) inset}
.sco-brief-h{display:flex;align-items:center;justify-content:space-between;font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
.sco-brief-day{color:var(--ink-4);letter-spacing:.06em}
.sco-brief-body{font-family:var(--body);font-size:12.5px;line-height:1.55;color:var(--ink);margin-bottom:9px}
.sco-learned{border-left:2px solid color-mix(in srgb,var(--gold) 45%,transparent);padding-left:9px;margin:4px 0 9px}
.sco-learned-l{display:block;font-family:var(--disp);font-weight:700;font-size:7.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:3px}
.sco-learned-r{font-family:var(--body);font-size:11px;line-height:1.4;color:var(--ink-3);margin-bottom:2px}
.sco-acts{display:flex;flex-direction:column;gap:5px;margin-top:8px}
.sco-act{text-align:left;font-family:var(--disp);font-weight:500;font-size:11px;color:var(--ink-2);background:var(--void-1);border:1px solid var(--line-2);padding:6px 9px;cursor:pointer;transition:border-color .12s,color .12s}
.sco-act:hover{border-color:var(--gold);color:var(--ink)}
.sco-act.applied{opacity:.5;color:var(--gold);cursor:default}
.sco-applyall{margin-top:7px;font-family:var(--disp);font-weight:700;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;background:var(--gold);color:var(--void-1);border:0;padding:7px 13px;cursor:pointer;align-self:flex-start}
.sco-applyall:hover{filter:brightness(1.1)}
.sco-composer{flex:none;display:flex;gap:8px;align-items:flex-end;padding:11px 12px;border-top:1px solid var(--line-2);background:var(--void-1)}
.sco-composer textarea{flex:1;resize:none;background:var(--void-2);border:1px solid var(--line-2);color:var(--ink);font-family:var(--body);font-size:13px;padding:9px 11px;line-height:1.4;outline:none}
.sco-composer textarea:focus{border-color:var(--gold)}
.sco-send{flex:none;width:38px;height:38px;background:var(--gold);color:var(--void-1);border:0;font-size:17px;cursor:pointer}
.sco-send:hover{filter:brightness(1.1)}
@media (max-width:560px){ .sco-panel{width:100vw;max-width:100vw} }

/* The System — what it DID automatically (auto-apply) */
.sysf-did{border-left:2px solid color-mix(in srgb,var(--c) 55%,transparent);padding:2px 0 2px 10px;margin:0 0 10px}
.sysf-did-l{display:block;font-family:var(--disp);font-weight:700;font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--c);margin-bottom:4px}
.sysf-did-r{font-family:var(--disp);font-weight:500;font-size:11px;letter-spacing:.02em;color:var(--ink-2);margin-bottom:2px}
.sco-did{border-left:2px solid color-mix(in srgb,var(--gold) 55%,transparent);padding-left:9px;margin:6px 0 9px}
.sco-did-l{display:block;font-family:var(--disp);font-weight:700;font-size:7.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:3px}
.sco-did-r{font-family:var(--disp);font-weight:500;font-size:11px;letter-spacing:.02em;color:var(--ink-2);margin-bottom:2px}

/* ⚡ System as a channel in the comms rail */
.chat-chans .chan-sys{color:var(--gold);font-weight:600}
.chat-chans .chan-sys.has-new{position:relative}
.chat-chans .chan-sys.has-new::after{content:"";position:absolute;top:-1px;right:-5px;width:6px;height:6px;border-radius:50%;background:#E9603A}
.sco-railbar{display:flex;align-items:center;gap:8px;padding:8px 10px;margin:0 0 10px;border-bottom:1px solid var(--line-2);position:sticky;top:0;background:#0A0A0B;z-index:2}
.sco-railt{font-family:'Anton',sans-serif;font-size:12px;letter-spacing:.03em;color:var(--gold);display:flex;flex-direction:column;line-height:1.05}
.sco-railt i{font-family:var(--disp);font-style:normal;font-weight:500;font-size:7.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-4);margin-top:2px}
.sco-run2{margin-left:auto;flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);background:transparent;border:1px solid var(--line-2);padding:4px 9px;cursor:pointer}
.sco-run2:hover{color:var(--gold);border-color:var(--gold)}
/* System content rendered INSIDE the squad chat log (no flex parent, so use margins) */
#chatLog .sco-msg{max-width:92%;display:block;margin-bottom:9px}
#chatLog .sco-msg.user{margin-left:auto}
#chatLog .sco-msg.sys{margin-right:auto}
#chatLog .sco-hello,#chatLog .sco-empty{font-size:12.5px;line-height:1.55;color:var(--ink-3);padding:2px}

/* ══ COMMS RAIL — System · Global · Direct · Groups (replaces the squad-hardcoded panel) ══ */
.social .soc-head{font-family:'Anton',sans-serif;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);padding:14px 14px 10px}
.comms{padding:6px 8px 8px;overflow-y:auto;max-height:46%;display:flex;flex-direction:column;gap:1px;border-bottom:1px solid var(--line-2)}
.comms::-webkit-scrollbar{width:6px}.comms::-webkit-scrollbar-thumb{background:var(--line-2)}
.cv-grp{display:flex;flex-direction:column;gap:1px;margin-bottom:3px}
.cv{display:flex;align-items:center;gap:9px;padding:7px 8px;cursor:pointer;border-left:2px solid transparent;transition:background .12s,border-color .12s}
.cv:hover{background:var(--glass)}
.cv.on{background:var(--void-2);border-left-color:var(--gold)}
.cv-ic{flex:none;width:20px;text-align:center;font-size:13px;color:var(--ink-3)}
.cv.cv-sys .cv-ic{color:var(--gold)}
.cv-av{flex:none;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:700;font-size:8.5px;letter-spacing:.02em;color:var(--void-1);background:var(--c,var(--gold))}
.cv-nm{flex:1;min-width:0;font-family:var(--disp);font-weight:500;font-size:12.5px;letter-spacing:.01em;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cv:hover .cv-nm,.cv.on .cv-nm{color:var(--ink)}
.cv-dot{flex:none;width:7px;height:7px;border-radius:50%;background:transparent}
.cv-dot.on{background:#E9603A}
.cv-lbl{display:flex;align-items:center;justify-content:space-between;font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-4);padding:11px 8px 4px}
.cv-add{background:transparent;border:1px solid var(--line-2);color:var(--ink-3);width:18px;height:18px;line-height:1;font-size:11px;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}
.cv-add:hover{color:var(--gold);border-color:var(--gold)}
.cv-empty{font-family:var(--body);font-size:10.5px;color:var(--ink-4);padding:3px 8px 5px}
.chat-head{flex:none;padding:11px 13px;border-bottom:1px solid var(--line-2);font-family:'Anton',sans-serif;font-size:13px;letter-spacing:.02em;color:var(--ink)}

/* chat header = single title bar (carries ⟳ run in System mode) — kills the triple "The System" */
.chat-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ch-nm{font-family:'Anton',sans-serif;font-size:13px;letter-spacing:.02em;color:var(--ink)}
.ch-run{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);background:transparent;border:1px solid var(--line-2);padding:4px 9px;cursor:pointer;transition:color .12s,border-color .12s}
.ch-run:hover{color:var(--gold);border-color:var(--gold)}
/* send button + input: drop the old purple gradient / rounded corners → hardline gold + angular */
.chat-in{border-top-color:var(--line-2)}
.chat-in input{background:var(--void-2);border:1px solid var(--line-2);border-radius:0;color:var(--ink);font-family:var(--body)}
.chat-in input:focus{outline:none;border-color:var(--gold)}
.chat-in button{border-radius:0;background:transparent;border:1px solid var(--line-2);color:var(--ink);display:flex;align-items:center;justify-content:center;padding:0;transition:background .12s,color .12s,border-color .12s}
.chat-in button svg{display:block}
.chat-in button:hover{background:var(--gold);border-color:var(--gold);color:#0A0A0B}

/* friend requests in the comms rail */
.cv-lbl .cv-count{font-family:var(--disp);font-weight:700;font-size:8px;letter-spacing:0;color:#fff;background:#E9603A;padding:1px 6px;text-transform:none}
.cv-req{cursor:default}
.cv-req:hover{background:transparent}
.cv-yes,.cv-no{flex:none;width:20px;height:20px;border:1px solid var(--line-2);background:transparent;cursor:pointer;font-size:10px;display:flex;align-items:center;justify-content:center;padding:0;transition:background .12s,color .12s,border-color .12s}
.cv-yes{color:var(--gold)}.cv-yes:hover{background:var(--gold);color:#0A0A0B;border-color:var(--gold)}
.cv-no{color:var(--ink-4);margin-left:3px}.cv-no:hover{color:#E9603A;border-color:rgba(233,96,58,.5)}

/* edit today's rite vow (inline, no native prompt) */
.rite-edit{margin-left:8px;background:transparent;border:1px solid var(--line-2);color:var(--ink-4);font-size:10px;padding:1px 6px;cursor:pointer;vertical-align:middle;transition:color .12s,border-color .12s}
.rite-edit:hover{color:var(--gold);border-color:var(--gold)}
.rite-edit-in{width:100%;box-sizing:border-box;background:var(--void-2);border:1px solid var(--line-2);color:var(--ink);font-family:var(--body);font-size:13px;padding:8px 10px;margin:6px 0;resize:vertical;min-height:52px;outline:none}
.rite-edit-in:focus{border-color:var(--gold)}
.rite-edit-act{display:flex;gap:8px;justify-content:flex-end}

/* radial skill-tree frontier pulse */
@keyframes stxpulse{0%,100%{opacity:.55}50%{opacity:.95}}

/* per-habit history calendar (last 35 days) + taper win/over states */
.q-hist{padding:9px 12px 11px;border-bottom:1px solid var(--line-3);background:var(--void-1)}
.qh-lab{font-family:var(--disp);font-weight:500;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);margin-bottom:7px}
.qh-grid{display:grid;grid-template-columns:repeat(7,14px);gap:3px}
.qh-cell{width:14px;height:14px;background:var(--line-3)}
.qh-cell.on{background:var(--gold)}
.qh-cell.used{background:#E9603A}
.q-num.win{color:var(--gold);font-weight:600}
.q-num.bad{color:#E9603A}

.qh-cell.pre{background:transparent;box-shadow:inset 0 0 0 1px var(--line-3);opacity:.4}

/* ── Habits tab: read-only rows → open a profile ── */
.hb-row{display:flex;align-items:center;gap:10px;padding:9px 11px;border-bottom:1px solid var(--line-3);cursor:pointer;transition:background .12s}
.hb-row:hover{background:var(--glass)}
.hb-row.miss{box-shadow:inset 3px 0 0 #E9603A}
.hb-dot{flex:none;width:8px;height:8px}
.hb-t{flex:1;min-width:0;font-family:var(--disp);font-weight:600;font-size:13px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hb-camp{flex:none;font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);opacity:.7;max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hb-trait{flex:none;font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.04em;text-transform:uppercase}
.hb-num{flex:none;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);min-width:60px;text-align:right}
.hb-num.bad{color:#E9603A}
.hb-go{flex:none;color:var(--ink-4);font-size:15px}
/* ── Habit profile overlay ── */
.hp-overlay{position:fixed;inset:0;z-index:4500;background:rgba(0,0,0,.62);display:none;align-items:flex-start;justify-content:center;padding:58px 16px;overflow-y:auto}
.hp-overlay.open{display:flex}
.hp-card{position:relative;width:440px;max-width:100%;background:#0A0A0B;border:1px solid var(--line-1);border-top:2px solid var(--c);padding:20px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.hp-x{position:absolute;top:12px;right:12px;background:transparent;border:0;color:var(--ink-4);font-size:15px;cursor:pointer}
.hp-x:hover{color:var(--ink)}
.hp-head{display:flex;align-items:center;gap:11px;margin-bottom:12px;padding-right:20px}
.hp-ic{font-size:20px;flex:none}
.hp-title{font-family:'Anton',sans-serif;font-size:18px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);line-height:1.05}
.hp-sub{font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin-top:3px}
.hp-metric{font-family:'Anton',sans-serif;font-size:22px;margin-bottom:8px}
.hp-sec-l{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin:15px 0 7px}
.hp-heat{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:5px}
.hp-heat .qh-cell{width:100%;height:auto;aspect-ratio:1}
.hp-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hp-cell{border:1px solid var(--line-2);padding:9px 11px}
.hp-cl{font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin-bottom:4px}
.hp-cv{font-family:var(--disp);font-weight:600;font-size:13px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hp-chips{display:flex;flex-wrap:wrap;gap:6px}
.hp-chip{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);border:1px solid var(--line-2);padding:4px 8px}
.hp-em{font-family:var(--body);font-size:11px;color:var(--ink-4)}

/* Habits tab — the break→build→maintain arc (empty groups still show) */
.ovh2-sub{font-family:var(--body);font-weight:400;font-size:9.5px;letter-spacing:.04em;text-transform:none;color:var(--ink-4);margin-left:8px}
.ovh2-grp.empty{opacity:.55}
.ovh2-empty{font-family:var(--body);font-size:11px;color:var(--ink-4);padding:7px 11px}

/* Quests tab — identity holds quests + habits directly (campaign layer retired) */
.bkt-grp-h{display:flex;align-items:center;gap:7px;font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--c,var(--gold));padding:11px 2px 6px;border-bottom:1px solid rgba(255,255,255,.06);margin-top:4px}
.bkt-grp-h em{font-style:normal;font-size:10px;color:var(--ink-4);font-weight:400}

/* ── Home · Active Quests — 3 featured cards side by side + collapsible mini-card grid, drag to reprioritize ── */
.camp-strip{display:block !important;overflow:visible !important;padding-bottom:0 !important}
.camp-strip::-webkit-scrollbar{display:none}
/* featured row — up to 3 across, equal width, size to content (no fixed 320px) */
.cq-feat{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.camp-strip>.cq-feat>.camp-card{flex:none;max-width:none;min-width:0}
.camp-card{position:relative}
.camp-card[draggable]{cursor:grab}
.camp-card.dragging{opacity:.4;cursor:grabbing}
.cq-grip{position:absolute;top:8px;right:9px;color:var(--ink-3);font-size:12px;letter-spacing:-1px;line-height:1;cursor:grab;opacity:.4;transition:opacity .12s}
.camp-card:hover .cq-grip{opacity:.9}
/* featured card — left accent = the identity it serves (not a flat gold) */
.camp-primary{padding-right:24px;box-shadow:inset 3px 0 0 var(--c,var(--gold)) !important}
.camp-primary .cs-lab{color:var(--c) !important;opacity:.95}
.camp-primary .camp-title{color:#fff !important;font-size:15px}
.camp-primary .cf-lab{color:var(--ink-2) !important}
/* mini grid — literally smaller cards, side by side, wrapping */
.cq-rest{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-top:8px}
.cq-rest.collapsed{display:none}
.camp-strip>.cq-rest>.camp-card{flex:none;max-width:none;min-width:0}
.camp-mini{display:flex !important;flex-direction:row !important;align-items:center;gap:9px !important;padding:11px 12px !important;text-align:left;box-shadow:inset 2px 0 0 var(--c)}
.cqm-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.cqm-t{flex:1 1 auto;min-width:0;text-align:left;font-family:var(--disp);font-weight:600;font-size:12.5px;letter-spacing:.01em;color:#F1F1F3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.camp-mini .camp-tl{flex:0 0 auto;font-size:9px;position:static}
.camp-mini .cq-grip{position:static;transform:none;flex:0 0 auto;opacity:.35}
.camp-mini:hover .cq-grip{opacity:.85}
/* deadline chip — every quest has one; missing one prompts (amber) instead of a dead "open" */
.camp-tl.tl-set{color:var(--gold);border-color:rgba(199,160,56,.5);cursor:pointer}
.camp-tl.tl-set:hover{background:rgba(199,160,56,.14)}
.camp-tl.tl-ongoing{color:var(--gold);border-color:rgba(199,160,56,.5)}
/* show-more / less toggle */
.cq-more{display:inline-block;background:transparent;border:1px solid rgba(255,255,255,.12);color:var(--ink-2);font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.09em;text-transform:uppercase;padding:6px 12px;margin-top:9px;cursor:pointer;transition:border-color .12s,color .12s}
.cq-more:hover{border-color:var(--gold);color:var(--gold)}

/* Campaign timeline — column + band headers (Completed → Active, then the Habits engine) */
.cg-colh{position:absolute;top:8px;z-index:3;font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.13em;color:var(--ink-3);text-transform:uppercase}
.cg-colh em{font-style:normal;color:var(--ink-4);margin-left:3px}
.cg-colh.cg-colh-active{color:var(--c)}
.cg-colh.cg-colh-active em{color:var(--c);opacity:.65}
.cg-colempty{position:absolute;z-index:1;font-family:var(--body);font-size:11px;color:var(--ink-4)}
.cg-bandh{position:absolute;left:16px;z-index:3;width:calc(100% - 32px);font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.11em;color:var(--ink-3);text-transform:uppercase;border-top:1px solid rgba(255,255,255,.08);padding-top:8px}

/* Campaign flow legend — chain reads left→right (habits → quests → outcomes), no rigid columns */
.cg-flowh{position:absolute;left:16px;top:9px;z-index:3;display:flex;align-items:center;gap:9px;font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.11em;text-transform:uppercase}
.cg-fk{color:var(--ink-3)}
.cg-fk em{font-style:normal;color:var(--ink-4);margin-left:2px}
.cg-fk-q{color:var(--c)}
.cg-fk-out{color:var(--c)}
.cg-fk-done{color:var(--gold)}
.cg-fkar{color:var(--ink-4)}

/* #2 SPAWN — ＋ on an outcome to create a feeder quest */
.cg-spawn{position:absolute;top:-8px;right:-8px;z-index:6;width:20px;height:20px;border:1px solid var(--c);background:var(--void-1);color:var(--c);font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s,background .12s}
.cg-node.cg-out:hover .cg-spawn{opacity:1}
.cg-spawn:hover{background:var(--c);color:#0A0A0B}
/* #3 protocol / drills badges on a habit node */
.cg-nd-proto{display:flex;gap:6px;flex-wrap:wrap;padding:0 11px 8px;position:relative;z-index:1}
.cg-proto{font-family:var(--body);font-size:9px;color:var(--ink-2);border:1px solid rgba(255,255,255,.14);padding:1px 5px}
.cg-drillc{font-family:var(--body);font-size:9px;color:var(--c);opacity:.85;align-self:center}
/* #4 TRAIT SPINE — ONE subtle chip per node (muted, no loud border). The full list is in the tooltip. */
.cg-nd-traits{display:flex !important;gap:5px;align-items:center;padding:0 11px 8px !important;position:relative;z-index:1}
.cg-trait-pip{font-family:var(--disp) !important;font-weight:600;font-size:8px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3) !important;border:0 !important;opacity:.85;padding:0;background:none !important}
.cg-trait-pip.more{color:var(--ink-4) !important}

/* ═══ Campaign zones: HABITS table · CURRENT graph · HISTORY strip ═══ */
.cgz{margin-bottom:18px}
.cgz-h{font-family:var(--disp);font-weight:700;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);padding:0 0 9px;display:flex;align-items:baseline;gap:9px}
.cgz-h span{font-weight:400;font-size:9px;letter-spacing:.04em;text-transform:none;color:var(--ink-4)}
/* HABITS — clean phase table */
.cgt{display:flex;flex-direction:column;gap:10px}
.cgt-empty{font-family:var(--body);font-size:12px;color:var(--ink-4);padding:6px 2px}
.cgt-gh{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);padding:0 2px 5px;border-bottom:1px solid rgba(255,255,255,.06);margin-bottom:2px}
.cgt-gh em{font-style:normal;color:var(--ink-4);margin-left:3px}
.cgt-gh .cgt-g{color:var(--ink-2)}
.cgt-gh.ph-breaking .cgt-g{color:#E9603A}
.cgt-gh.ph-building .cgt-g{color:#3ED66B}
.cgt-gh.ph-maintaining .cgt-g{color:var(--gold)}
.cgt-row{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--line-2);border-left:2px solid transparent;cursor:pointer;transition:border-color .12s,background .12s}
.cgt-row:hover{border-left-color:var(--c,var(--gold));background:rgba(255,255,255,.03)}
.cgt-ic{flex:none;font-size:12px}
.cgt-t{flex:1 1 auto;min-width:0;font-family:var(--disp);font-weight:500;font-size:12.5px;letter-spacing:.01em;color:#E6E6EA;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cgt-tr{flex:none;font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3)}
.cgt-dr{flex:none;font-size:9px;color:var(--ink-4)}
.cgt-m{flex:none;font-family:var(--disp);font-weight:600;font-size:10px;color:var(--ink-2);min-width:34px;text-align:right}
/* evolved-from note on a current quest */
.cg-nd-from{padding:0 11px 8px;font-family:var(--body);font-size:9px;color:var(--ink-4);position:relative;z-index:1}
/* HISTORY strip — completed green · failed red, with date + kleos */
.cg-hist{display:flex;flex-wrap:wrap;gap:8px}
.cgx{display:flex;align-items:center;gap:9px;padding:9px 12px;background:var(--line-2);border-left:3px solid var(--ink-4);min-width:190px}
.cgx.won{border-left-color:#3ED66B}
.cgx.lost{border-left-color:#E9603A}
.cgx-ic{flex:none;font-size:13px;font-weight:700}
.cgx.won .cgx-ic{color:#3ED66B}
.cgx.lost .cgx-ic{color:#E9603A}
.cgx-b{min-width:0}
.cgx-t{font-family:var(--disp);font-weight:600;font-size:12px;letter-spacing:.01em;color:#E6E6EA;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cgx-m{font-family:var(--body);font-size:9.5px;color:var(--ink-3);margin-top:1px}
.cgx.won .cgx-m{color:#3ED66B;opacity:.8}

/* ═══ DESIGN LANGUAGE: a filled top-left corner triangle = status, on EVERY card (replaces line-bar accents) ═══ */
.cg-node{--st:var(--c)}
.cg-node::after{content:"" !important;position:absolute !important;top:1px;left:1px;right:auto;bottom:auto;z-index:3;width:0;height:0;border-top:12px solid var(--st);border-right:12px solid transparent;box-shadow:none !important}
.cgx::before,.cgt-row::before,.cgtr::before{content:"";position:absolute;top:0;left:0;z-index:3;width:0;height:0;border-top:11px solid var(--st,var(--ink-4));border-right:11px solid transparent}
/* all graph cards go DARK — the triangle carries status, not a full colour fill */
.cg-node.cg-out,.cg-node.cg-quest,.cg-node.cg-cur{background:var(--line-2) !important;box-shadow:none !important}
.cg-node.cg-out .cg-qt{color:#fff !important}
/* HABITS table — dark distinct cards (kills the grey 'selected' block), corner triangle = phase */
.cgt-grp{display:flex;flex-direction:column;gap:4px}
.cgt-row{background:var(--void-2) !important;border:0 !important;padding-left:15px;position:relative}
.cgt-row:hover{background:#16161b !important;border-left:0 !important}
/* HISTORY — corner triangle, no left bar */
.cgx{border-left:0 !important;padding-left:15px}
.cgx.won{--st:#3ED66B}
.cgx.lost{--st:#E9603A}
/* TRAITS column */
.cg-colh.cg-colh-tr{color:var(--c)}
.cg-colh.cg-colh-tr em{color:var(--c);opacity:.65}
.cgtr{position:absolute;z-index:2;display:flex;align-items:center;gap:7px;min-height:30px;padding:6px 10px 6px 15px;background:var(--void-2);--st:var(--c)}
.cgtr-i{flex:none;color:var(--c);font-size:11px}
.cgtr-t{flex:1 1 auto;min-width:0;font-family:var(--disp);font-weight:600;font-size:10.5px;letter-spacing:.02em;text-transform:uppercase;color:#E6E6EA;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cgtr-lv{flex:none;font-family:var(--disp);font-weight:700;font-size:9px;color:var(--c)}

/* ═══ SINGLE-CANVAS cards — crisp near-black + thin frame + corner-triangle status (no grey 'deactivated' fills) ═══ */
.cg-node{background:rgba(255,255,255,.11) !important;min-height:46px}
.cg-node::before{background:#0D0D10 !important}
.cg-node.cg-out,.cg-node.cg-quest,.cg-node.cg-hab,.cg-node.cg-tr,.cg-node.cg-hwon,.cg-node.cg-hlost,.cg-node.cg-cur{background:rgba(255,255,255,.11) !important}
.cg-node::after{content:"" !important;position:absolute !important;top:1px;left:1px;right:auto;bottom:auto;z-index:3;width:0;height:0;border-top:12px solid var(--st,var(--c));border-right:12px solid transparent}
.cg-node .cg-qt{color:#ECECF0 !important;text-decoration:none !important}
.cg-node .cg-qm{color:var(--c) !important}
.cg-node.cg-hwon .cg-qm{color:#3ED66B !important}
.cg-node.cg-hlost .cg-qm{color:#E9603A !important}
.cg-nd-sub{padding:0 11px 8px 11px;font-family:var(--body);font-size:9.5px;color:var(--ink-3);position:relative;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-node.cg-hwon .cg-nd-sub{color:#3ED66B;opacity:.85}
.cg-node.cg-tr .cg-qt{text-transform:uppercase;font-size:10px;letter-spacing:.03em;color:#E6E6EA !important}
.cg-qmet.cg-lv{color:var(--c) !important;opacity:1}

/* sub-traits nested inside their parent trait card */
.cg-subtr{padding:2px 11px 8px 11px;display:flex;flex-direction:column;gap:2px;position:relative;z-index:1}
.cg-subt{font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-subt em{font-style:normal;color:var(--c);font-weight:700;margin-left:3px}

/* current quest cards are BORDERED (active) — history/side blocks are not */
.cg-node.cg-quest{box-shadow:0 0 0 1.4px rgba(255,255,255,.45) !important}
/* habits · outcomes · traits = flatter secondary blocks, distinct from the detailed quest cards */
.cg-node.cg-hab,.cg-node.cg-out,.cg-node.cg-tr{background:rgba(255,255,255,.06) !important}
.cg-node.cg-hab::after,.cg-node.cg-out::after,.cg-node.cg-tr::after{border-top-width:9px !important;border-right-width:9px !important}

/* identity portrait → a small card at the top-right, beside the manifesto (not a full-height sidebar) */
.cmd-layout{grid-template-columns:minmax(0,1fr) 176px !important;align-items:start !important}
.map-podium{height:224px !important;align-self:start !important}
.map-podium .podium-fig{height:100% !important}
.map-podium .podium-nav,.map-podium .id-repos-btn{transform:scale(.85)}

/* ═══ CAMPAIGN THREE-PANEL FLOW: habits table (L) · quest cards (M, own texture) · traits+outcomes (R) ═══ */
.cg-flow{position:relative;display:flex;align-items:stretch;min-height:360px;margin-top:2px}
.cg-flowsvg{position:absolute;top:0;left:0;z-index:1;pointer-events:none;overflow:visible}
.cg-panelL{flex:0 0 214px;position:relative;z-index:2;padding:4px 16px 14px 0;border-right:1px solid rgba(255,255,255,.1)}
.cg-mid{flex:1 1 auto;position:relative;z-index:2;min-width:480px;background:repeating-linear-gradient(122deg,transparent 0 7px,rgba(255,255,255,.02) 7px 8px)}
.cg-panelR{flex:0 0 250px;position:relative;z-index:2;padding:4px 0 14px 18px;border-left:1px solid rgba(255,255,255,.1)}
.cg-panelL .cgp-h,.cg-panelR-sec{font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);padding:12px 0 6px}
.cgp-h.ph-breaking{color:#E9603A}.cgp-h.ph-building{color:#3ED66B}.cgp-h.ph-maintaining{color:var(--gold);opacity:.65}
.cgp-row{display:flex;align-items:center;gap:8px;padding:6px 8px;cursor:pointer}
.cgp-row:hover{background:rgba(255,255,255,.05)}
.cgp-dot{flex:none;width:6px;height:6px;background:var(--st)}
.cgp-t{flex:1;min-width:0;font-family:var(--disp);font-weight:500;font-size:10.5px;letter-spacing:.02em;text-transform:uppercase;color:#DCDCE2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cgp-empty{font-size:10px;color:var(--ink-4);padding:4px 8px}
.cg-qcard{position:absolute;width:200px;z-index:2;background:rgba(255,255,255,.12);padding:1px}
.cg-qcard::before{content:"";position:absolute;inset:1px;background:#0C0C0F;z-index:0}
.cg-qcard::after{content:"";position:absolute;top:1px;left:1px;z-index:3;width:0;height:0;border-top:12px solid var(--st);border-right:12px solid transparent}
.cg-qcard.cg-quest{box-shadow:0 0 0 1.4px rgba(255,255,255,.42)}
.cg-qc-in{position:relative;z-index:1;display:flex;align-items:center;gap:7px;padding:11px 12px}
.cg-qcard .cg-qm{flex:none;font-size:11px;color:var(--st)}
.cg-qcard.cg-quest .cg-qm{color:var(--c)}
.cg-qcard .cg-qt{flex:1;min-width:0;font-family:var(--disp);font-weight:600;font-size:11.5px;letter-spacing:.01em;text-transform:uppercase;color:#ECECF0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-qcard .cg-qmet{flex:none;font-family:var(--disp);font-weight:700;font-size:9px;color:var(--ink-2)}
.cg-qc-sub{position:relative;z-index:1;padding:0 12px 9px;font-family:var(--body);font-size:9.5px;color:var(--ink-3)}
.cg-qcard.cg-hwon .cg-qc-sub{color:#3ED66B}
.cg-trrow{padding:6px 0}
.cg-trhd{display:flex;justify-content:space-between;align-items:baseline;gap:6px}
.cg-trnm{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.02em;text-transform:uppercase;color:#E6E6EA;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-trlv{flex:none;font-family:var(--disp);font-weight:700;font-size:8px;color:var(--c)}
.cg-trbar{height:3px;background:rgba(255,255,255,.08);margin:5px 0 4px}.cg-trbar i{display:block;height:100%;background:var(--c)}
.cg-trchips{display:flex;flex-wrap:wrap;gap:3px}
.cg-trchip{font-family:var(--disp);font-weight:500;font-size:7px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3);border:1px solid rgba(255,255,255,.12);padding:1px 4px;white-space:nowrap}
.cg-trsub{padding-left:12px}
.cg-orow{display:flex;align-items:center;gap:8px;padding:6px 0;cursor:pointer}
.cg-orow:hover{background:rgba(255,255,255,.04)}
.cg-odot{flex:none;color:var(--c);font-size:10px}

/* identity portrait → small card on the LEFT of the manifesto; the old right-hand podium is retired here */
.map-podium{display:none !important}
.cmd-layout{grid-template-columns:1fr !important}
.who-hero{display:flex !important;gap:16px;align-items:stretch}
.who-portrait{flex:0 0 118px;min-height:150px;position:relative;background-size:cover;background-position:center 20%;background-color:var(--void-2);border:1px solid rgba(255,255,255,.12)}
.who-nav{position:absolute;top:50%;transform:translateY(-50%);width:20px;height:26px;background:rgba(0,0,0,.55);border:0;color:#fff;font-size:15px;cursor:pointer;opacity:0;transition:opacity .12s}
.who-portrait:hover .who-nav{opacity:1}
.who-nav.prev{left:0}.who-nav.next{right:0}
.who-hero .who-body{flex:1 1 auto;align-self:center}

/* habits = reorderable ITEMS, same width as the traits panel, with a connector nub on the right end */
.cg-panelL{flex:0 0 250px !important;padding-right:0 !important}
.cgp-row{position:relative;display:flex !important;align-items:center;gap:8px;padding:8px 15px 8px 10px !important;margin:3px 0;background:rgba(255,255,255,.055);cursor:grab}
.cgp-row:hover{background:rgba(255,255,255,.1)}
.cgp-row.dragging{opacity:.45;cursor:grabbing}
.cgp-grip{flex:none;color:var(--ink-4);font-size:11px;letter-spacing:-1px;line-height:1;opacity:.5}
.cgp-row:hover .cgp-grip{opacity:.95;color:var(--st)}
.cgp-conn{position:absolute;right:0;top:50%;width:9px;height:9px;background:var(--st);border-radius:50%;transform:translate(50%,-50%);box-shadow:0 0 0 2px #0A0A0B;z-index:5}

/* FIX: long habit titles were forcing the left panel to grow (flex min-width:auto). Pin it narrow + truncate. */
.cg-panelL{min-width:0 !important;max-width:250px !important;overflow:hidden}
.cg-panelR{min-width:0 !important;max-width:250px !important}
.cgp-row{max-width:100%}
.cgp-t{min-width:0;max-width:100%}

/* traits + outcomes as ITEMS (bg + LEFT connector nub) — matching the habit items */
.cg-ritem{position:relative;background:rgba(255,255,255,.05);padding:8px 10px 8px 16px !important;margin:4px 0}
.cg-ritem:hover{background:rgba(255,255,255,.09)}
.cg-trrow.cg-ritem{padding-top:9px !important;padding-bottom:9px !important}
.cg-conn-l{position:absolute;left:0;top:50%;width:9px;height:9px;background:var(--st,var(--c));border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 2px #0A0A0B;z-index:5}
/* middle cards = draggable (Miro feel), more open board */
.cg-mid{min-width:520px !important}
.cg-qcard{cursor:grab}
.cg-qcard.cg-dragging{cursor:grabbing;box-shadow:0 10px 30px rgba(0,0,0,.55)}

/* drills — the specific protocols nested under a habit */
.cgp-hab{margin:3px 0;cursor:grab}
.cgp-hab.dragging{opacity:.45;cursor:grabbing}
.cgp-hab>.cgp-row{margin:0 !important}
.cgp-drills{padding:3px 0 5px 22px;display:flex;flex-direction:column;gap:1px}
.cgp-drill{display:flex;align-items:center;gap:6px;font-family:var(--body);font-size:9.5px;letter-spacing:.02em;color:var(--ink-3);padding:2px 4px}
.cgp-drill-t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cgp-drill-t::before{content:"▪ ";color:var(--ink-4)}
.cgp-drill-x{flex:none;color:var(--ink-4);cursor:pointer;opacity:0;font-size:9px}
.cgp-drill:hover .cgp-drill-x{opacity:.85}
.cgp-drill-x:hover{color:#E9603A}
.cgp-drilladd{color:var(--ink-4);cursor:pointer;font-size:9px;letter-spacing:.06em;text-transform:uppercase}
.cgp-drilladd:hover{color:var(--gold)}

/* completed quests → ghosted (they're the past); current quests → full opacity, no ugly white ring */
.cg-qcard.cg-hwon,.cg-qcard.cg-hlost{opacity:.5}
.cg-qcard.cg-hwon:hover,.cg-qcard.cg-hlost:hover{opacity:.8}
.cg-qcard.cg-quest{box-shadow:none !important}
/* Match History — Matches | Detailed Log tabs + the granular dated log */
.mh-tabs{display:flex;gap:6px;margin:0 0 12px}
.mh-tabs b{font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding:6px 12px;border:1px solid rgba(255,255,255,.1);cursor:pointer}
.mh-tabs b.on{color:#0A0A0B;background:var(--gold);border-color:var(--gold)}
.mhl-day{font-family:var(--mono,var(--body));font-size:10px;letter-spacing:.1em;color:var(--ink-3);padding:16px 0 6px;border-bottom:1px solid rgba(255,255,255,.06);margin-bottom:4px}
.mhl-row{display:flex;align-items:center;gap:14px;padding:5px 4px;font-size:12px}
.mhl-row:hover{background:rgba(255,255,255,.03)}
.mhl-cat{flex:0 0 90px;font-family:var(--body);font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-4)}
.mhl-t{flex:0 0 260px;font-family:var(--disp);font-weight:500;color:#E4E4E8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mhl-note{flex:1 1 auto;min-width:0;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mhl-time{flex:0 0 auto;font-family:var(--mono,var(--body));font-size:10px;color:var(--ink-4)}

/* identity header — 2 columns: TALL portrait | title + manifesto */
.id-header{display:flex;gap:22px;align-items:stretch;margin-bottom:10px}
.id-header .who-portrait{flex:0 0 208px !important;min-height:296px !important;height:auto !important;position:relative;background-size:cover;background-position:center 18%;background-color:var(--void-2);border:1px solid rgba(255,255,255,.12)}
.id-header-r{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:14px;justify-content:center}
.id-header-r .id-title{margin:0}
.id-header-r .who-body{align-self:auto;margin:0;font-size:13.5px;line-height:1.55;color:var(--text-2);max-width:640px}

/* collapsible drills header under a habit */
.cgp-drilhead{padding:3px 8px 4px 22px;font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-4);cursor:pointer}
.cgp-drilhead:hover{color:var(--ink-2)}
.cgp-caret{font-size:8px;margin-left:2px}

/* ═══ RECOLOR: green=complete · red=failed · neutral everything active. Phase by glyph, not colour. ═══ */
.cgp-h.ph-breaking,.cgp-h.ph-building,.cgp-h.ph-maintaining{color:var(--ink-3) !important}
/* align habit items ↔ trait/outcome items: symmetric padding, nub sits on the panel's own border */
.cg-panelR{padding-left:0 !important}
.cgp-row{padding:8px 16px 8px 13px !important}
.cg-ritem{padding:8px 13px 8px 16px !important}
.cgp-drilhead{padding-left:13px !important}
.cgp-drills{padding-left:26px !important}
.cgp-conn,.cg-conn-l{width:9px;height:9px;background:var(--st,#9AA0A6) !important}

/* connector nubs → clean circles, consistent both sides */
.cgp-conn,.cg-conn-l{border-radius:50% !important;box-shadow:0 0 0 2px #0A0A0B !important}
/* in-progress accent — active quests get a subtle blue edge (blue = in progress) */
.cg-qcard.cg-quest{box-shadow:inset 0 0 0 1px rgba(76,159,230,.55) !important}
.cg-qcard.cg-quest .cg-qm{color:#4C9FE6 !important}

/* habit archive control + restorable archived list */
.cgp-arch{flex:none;color:var(--ink-4);cursor:pointer;font-size:11px;opacity:0;margin-right:5px}
.cgp-row:hover .cgp-arch{opacity:.75}
.cgp-arch:hover{color:#E9603A}
.cgp-arch-sec{margin-top:16px;border-top:1px solid rgba(255,255,255,.06);padding-top:4px}
.cgp-arch-tog{font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);cursor:pointer;padding:6px 2px}
.cgp-arch-tog:hover{color:var(--ink-2)}
.cgp-arch-row{display:flex;align-items:center;gap:8px;padding:5px 8px}
.cgp-arch-t{flex:1;min-width:0;font-family:var(--disp);font-size:10px;text-transform:uppercase;letter-spacing:.02em;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cgp-arch-restore{flex:none;font-size:9px;color:var(--ink-4);cursor:pointer;letter-spacing:.03em;white-space:nowrap}
.cgp-arch-restore:hover{color:#3ED66B}

/* FIX: don't clip the connector nubs (show the full circle both sides) + give trait/outcome text breathing room from the border */
.cg-panelL{overflow:visible !important}
.cg-panelR{overflow:visible !important}
.cg-ritem{padding-left:19px !important}
.cgp-row{padding-right:19px !important}

/* create-on-board buttons: ＋ habit · ＋ quest · ＋ outcome */
.cgp-newrow{font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);cursor:pointer;padding:9px 13px;margin-top:8px;border:1px dashed rgba(255,255,255,.13)}
.cgp-newrow:hover{color:var(--gold);border-color:rgba(199,160,56,.45)}
.cgp-newrow-r{text-align:right}
.cg-mid-add{position:absolute;top:2px;right:12px;z-index:4;background:transparent;border:1px dashed rgba(255,255,255,.15);color:var(--ink-3);font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;padding:5px 12px;cursor:pointer}
.cg-mid-add:hover{color:var(--gold);border-color:rgba(199,160,56,.45)}
/* responsive middle: panels anchor, middle scrolls its canvas horizontally */
.cg-mid{overflow-x:auto !important;overflow-y:hidden !important;min-width:0 !important;flex:1 1 0 !important}
.cg-mid-canvas{position:relative}
.cg-mid::-webkit-scrollbar{height:9px}
.cg-mid::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:5px}
.cg-mid::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.28)}
.cg-mid::-webkit-scrollbar-track{background:rgba(255,255,255,.03)}
/* ── segmented tab bar — MSI broadcast language: angled segments · gold active · underline bar ── */
.idtabs{display:flex;align-items:flex-end;gap:5px;margin:24px 0 18px;padding-bottom:0;border-bottom:2px solid rgba(199,160,56,.32);position:relative}
.idtab{position:relative;background:var(--void-2);border:1px solid var(--brd-2);border-bottom:0;color:var(--text-2);font-family:var(--disp);font-weight:800;font-size:12.5px;letter-spacing:.17em;text-transform:uppercase;padding:12px 30px;cursor:pointer;clip-path:polygon(13px 0,100% 0,calc(100% - 13px) 100%,0 100%);transition:background .14s,color .14s,box-shadow .14s}
.idtab:hover{background:#171719;color:#fff}
.idtab.on{background:linear-gradient(180deg,rgba(199,160,56,.20),rgba(199,160,56,.04));color:#fff;box-shadow:inset 0 -3px 0 var(--gold),inset 0 1px 0 rgba(199,160,56,.5);text-shadow:0 0 5px rgba(199,160,56,.28)}
.idtab-sys{margin-left:auto;align-self:center;background:var(--void-2);border:1px solid var(--gold);color:var(--gold);font-family:var(--disp);font-weight:800;font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:9px 18px;cursor:pointer;clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%);transition:background .14s,color .14s}
.idtab-sys:hover{background:var(--gold);color:var(--black)}
.idpane{display:none}
.idpane.on{display:block}
/* ── TRAITS pane: list + detail panel (consolidates the old Progression + Gap) ── */
.idtr-split{display:flex;gap:22px;align-items:flex-start}
.idtr-list{flex:0 0 344px;min-width:0}
.idtr-detail{flex:1 1 auto;min-width:0;border-left:1px solid rgba(255,255,255,.08);padding-left:22px;min-height:220px;align-self:stretch}
.idtr-empty{color:var(--ink-3);font-size:12.5px;padding:26px 4px;font-style:italic;line-height:1.5}
.idtr-list .tr-row{cursor:pointer;border-radius:0;transition:background .12s}
.idtr-list .tr-row:hover{background:rgba(255,255,255,.035)}
.idtr-list .tr-row.on{background:rgba(255,255,255,.06);box-shadow:inset 2px 0 0 var(--c)}
.trd-head{margin-bottom:6px}
.trd-nm{font-family:var(--disp);font-weight:800;font-size:20px;letter-spacing:.03em;text-transform:uppercase;color:#fff}
.trd-lvbar{display:flex;justify-content:space-between;align-items:baseline;margin:7px 0 7px;gap:12px}
.trd-lv{font-family:var(--disp);font-weight:700;font-size:12px;letter-spacing:.06em}
.trd-xp{color:var(--ink-3);font-size:10.5px;letter-spacing:.04em}
.trd-bar{height:5px;background:rgba(255,255,255,.08);border-radius:0;overflow:hidden}
.trd-bar i{display:block;height:100%}
.trd-sec{margin-top:18px}
.trd-sec-h{position:relative;font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.16em;color:var(--ink-4);text-transform:uppercase;margin-bottom:9px;padding-left:11px}
.trd-sec-h::before{content:"";position:absolute;left:0;top:0;bottom:1px;width:3px;background:var(--gold)}
.trd-def{color:var(--ink-2);font-size:12.5px;line-height:1.55}
.trd-muted{color:var(--ink-4);font-size:11.5px;font-style:italic}
.trd-chip{display:inline-block;font-size:11px;padding:4px 9px;border-radius:0;margin:0 5px 5px 0;border:1px solid rgba(255,255,255,.12);color:var(--ink-2)}
.trd-chip.live{border-color:var(--c);color:#fff}
.trd-stages{display:flex;flex-direction:column}
.trd-stage{display:flex;align-items:center;gap:11px;padding:5px 0}
.trd-st-n{flex:0 0 22px;height:22px;border-radius:0;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-size:10px;font-weight:700;border:1px solid rgba(255,255,255,.18);color:var(--ink-4)}
.trd-stage.done .trd-st-n{background:rgba(255,255,255,.12);color:#fff;border-color:transparent}
.trd-stage.cur .trd-st-n{background:var(--c);color:#0a0a0a;border-color:var(--c)}
.trd-st-l{font-size:12px;color:var(--ink-3)}
.trd-stage.done .trd-st-l{color:var(--ink-2)}
.trd-stage.cur .trd-st-l{color:#fff;font-weight:600}
.trd-proof{display:flex;align-items:center;gap:9px;padding:4px 0}
.trd-proof-x{flex:0 0 16px;height:16px;border-radius:0;border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:10px;color:transparent;cursor:pointer}
.trd-proof-x.met{background:var(--c);border-color:var(--c);color:#0a0a0a}
.trd-proof-l{font-size:12px;color:var(--ink-3)}
.trd-proof-l.met{color:var(--ink-1)}
.trd-mini{margin-top:9px;background:transparent;border:1px dashed rgba(255,255,255,.16);color:var(--ink-3);font-size:10px;letter-spacing:.05em;text-transform:uppercase;padding:5px 10px;border-radius:0;cursor:pointer}
.trd-mini:hover{color:var(--gold);border-color:var(--gold)}
.trd-hist{display:flex;flex-direction:column;gap:2px}
.trd-hrow{display:flex;gap:10px;font-size:11.5px;padding:3px 0;border-bottom:1px solid rgba(255,255,255,.04)}
.trd-hd{flex:0 0 42px;color:var(--ink-4);font-variant-numeric:tabular-nums}
.trd-ht{color:var(--ink-2)}
.trd-ht i{color:var(--ink-4);font-style:italic}

/* ── MOMENTUM — header feedback line (Psycho-Cybernetic servo signal): reps vs dailies due, cumulative ── */
.id-header{align-items:stretch}
.id-perf{flex:0 0 340px;min-width:0;display:flex;flex-direction:column;justify-content:center;border:1px solid var(--brd-2);background:var(--void-2);padding:14px 16px}
.idperf-h{position:relative;font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4);padding-left:11px;margin-bottom:12px}
.idperf-h::before{content:"";position:absolute;left:0;top:0;bottom:1px;width:3px;background:var(--gold)}
.idperf-svg{width:100%;height:150px;display:block;overflow:visible}
.idperf-svg circle{cursor:crosshair}
.idperf-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-top:12px}
.idperf-v{font-family:'Anton',sans-serif;font-size:34px;line-height:.82}
.idperf-cap{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);text-align:right;line-height:1.5}
.idperf-trend{font-weight:700;letter-spacing:.04em}
.idperf-empty{color:var(--ink-4);font-size:11px;font-style:italic;line-height:1.5;padding:24px 2px}
@media(max-width:920px){.id-perf{flex-basis:100%;order:3}.id-header{flex-wrap:wrap}}

/* identity-page portrait: reframe affordance (mirrors Home/podium) + hide arrows while reposing */
.who-portrait .id-repos-btn{opacity:0}
.who-portrait:hover .id-repos-btn{opacity:.85}
.who-portrait .id-repos-bar{display:none}
.who-portrait.reposing .id-repos-btn{display:none}
.who-portrait.reposing .id-repos-bar{display:flex}
.who-portrait.reposing{cursor:grab;outline:2px solid var(--gold);outline-offset:-2px}
.who-portrait.reposing:active{cursor:grabbing}
.who-portrait.reposing .who-nav{display:none}

/* ══ CAMPAIGN BOARD — DARK anchored rails over a deep void (hardline broadcast) ══ */
/* Depth ladder: gridded void (darkest) → dark rails (scaffolding) → raised quest cards.
   void lives on the FLOW parent, BEHIND the river-line SVG (z-index 1); center transparent. */
.cg-flow{background:
    radial-gradient(rgba(255,255,255,.05) 1px,transparent 1.4px) 0 0/28px 28px,
    radial-gradient(130% 70% at 50% -8%,rgba(199,160,56,.06),transparent 55%),
    #050507 !important}

/* CENTER = pan/zoom viewport — its .cg-mid-canvas is transformed in game.js; no native scroll */
.cg-mid{background:transparent !important;overflow:hidden !important;cursor:grab;
  box-shadow:inset 0 8px 22px rgba(0,0,0,.45) !important}
.cg-mid.cg-panning{cursor:grabbing}
.cg-mid-canvas{transform-origin:0 0}

/* DARK rails = quiet scaffolding lifted above the void (text stays light-on-dark) */
.cg-panelL,.cg-panelR{background:linear-gradient(180deg,#101013,#0C0C0F) !important}
.cg-panelL{border-right:1px solid #000 !important;box-shadow:5px 0 18px rgba(0,0,0,.55)}
.cg-panelR{border-left:1px solid #000 !important;box-shadow:-5px 0 18px rgba(0,0,0,.55)}
.cg-panelL .cgp-h,.cg-panelR .cg-panelR-sec{color:var(--ink-3) !important}
.cg-panelL .cgp-row,.cg-panelR .cg-ritem{background:rgba(255,255,255,.05) !important}
.cg-panelL .cgp-row:hover,.cg-panelR .cg-ritem:hover{background:rgba(255,255,255,.09) !important}
.cg-panelR .cg-trbar{background:rgba(255,255,255,.08) !important}

/* QUEST CARD — bottom-right chamfer that carries its own 1px lineweight */
/* outer .cg-qcard = the edge colour; ::before (inset 1px) = the fill; both chamfered so the
   1px of outer shows along the diagonal as a drawn bevel. Elevation via filter (clip-path
   would clip an outset box-shadow), inset blue in-progress edge kept as box-shadow. */
.cg-qcard{clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%);
  filter:drop-shadow(0 5px 13px rgba(0,0,0,.5))}
.cg-qcard::before{clip-path:polygon(0 0,100% 0,100% calc(100% - 11px),calc(100% - 11px) 100%,0 100%)}
/* colored 1px edge that WRAPS the chamfer: outer bg = state colour, ::before (inset 1px) = fill.
   an inset box-shadow border gets clipped by clip-path at the bevel — the outer-bg trick doesn't. */
.cg-qcard{width:240px !important;background:var(--st) !important}
.cg-qcard.cg-quest{box-shadow:none !important}
/* hover: lift + deeper shadow + in-card slide-down reveal (traits this quest builds · evolve).
   the reveal lives INSIDE the card so the chamfer clip-path doesn't clip it (a tooltip below would be). */
.cg-qcard:hover{transform:translateY(-2px);filter:drop-shadow(0 11px 26px rgba(0,0,0,.6))}
.cg-qc-reveal{position:relative;z-index:1;max-height:0;overflow:hidden;transition:max-height .2s ease;padding:0 12px 0 16px}
.cg-qcard:hover .cg-qc-reveal{max-height:180px;padding-bottom:11px}
.cg-qc-heat{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;gap:2px;margin:2px 0 9px;width:max-content}
.cg-heatc{width:9px;height:9px;background:rgba(255,255,255,.07)}
.cg-heatc.on{background:var(--st)}
.cg-qc-builds{display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.cg-qc-rl{font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin-right:2px}
.cg-qc-tag{font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2);border:1px solid rgba(255,255,255,.16);padding:2px 5px}
.cg-qc-evolve{margin-top:8px;display:inline-block;font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);background:transparent;border:1px solid rgba(199,160,56,.5);padding:4px 10px;cursor:pointer;clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%)}
.cg-qc-evolve:hover{background:var(--gold);color:var(--void-1)}
.cg-qcard.cg-dragging{filter:drop-shadow(0 12px 30px rgba(0,0,0,.65))}

/* card internals ported from the mock: left state stripe · icon chip · Anton ETA · metric */
.cg-qcard::after{content:"" !important;top:1px !important;left:1px !important;bottom:1px !important;width:3px !important;height:auto !important;border:0 !important;background:var(--st) !important;z-index:2}
.cg-qc-in{position:relative;z-index:1;display:flex;align-items:center;gap:9px;padding:11px 12px 8px 16px !important}
.cg-qcard .cg-qm{flex:none;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.14);font-size:11px;color:var(--ink-2) !important}
.cg-qcard .cg-qt{flex:1;min-width:0;font-family:var(--disp);font-weight:600;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:#ECECF0;line-height:1.25;white-space:normal;text-wrap:balance;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cg-qeta{flex:none;font-family:'Anton',var(--disp);font-size:15px;color:var(--st);letter-spacing:.02em}
.cg-qcard.cg-quest .cg-qeta{color:#4C9FE6}
.cg-qc-sub{position:relative;z-index:1;padding:0 12px 2px 16px !important;font-family:var(--disp);font-weight:500;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-qc-metric{position:relative;z-index:1;padding:3px 12px 11px 16px;display:flex;align-items:baseline;gap:7px}
.cg-qc-metric b{font-family:'Anton',var(--disp);font-weight:400;font-size:22px;line-height:1;color:#fff;letter-spacing:.02em}
.cg-qc-metric span{font-family:var(--disp);font-weight:600;font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}

/* center chrome: gold chamfered +quest · zoom readout · corner brackets */
.cg-mid-add{border-style:solid !important;border-color:var(--gold) !important;color:var(--gold) !important;background:rgba(10,10,12,.82) !important;clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%)}
.cg-zoomtag{position:absolute;left:12px;bottom:10px;z-index:4;pointer-events:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.14em;color:var(--ink-3);font-variant-numeric:tabular-nums}
.cg-mid::before,.cg-mid::after{content:"";position:absolute;width:13px;height:13px;z-index:3;pointer-events:none;border:0 solid rgba(199,160,56,.8)}
.cg-mid::before{top:8px;left:8px;border-top-width:1px;border-left-width:1px}
.cg-mid::after{bottom:8px;right:8px;border-bottom-width:1px;border-right-width:1px}

/* titles clear the connector line + nub */
.cg-panelR .cg-ritem{padding-left:30px !important}

/* ══ HABITS TAB — KPI strip + 2-panel editable table (L) + per-habit detail (R) ══ */
.hb2-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:2px 0 16px}
.hb2-kpi{background:var(--void-2);border:1px solid var(--brd-2);padding:12px 14px;display:flex;flex-direction:column;gap:3px}
.hb2-kpi b{font-family:'Anton',var(--disp);font-weight:400;font-size:26px;line-height:1;color:#fff}
.hb2-kpi b em{font-family:var(--disp);font-weight:600;font-size:12px;font-style:normal;color:var(--ink-3);margin-left:1px}
.hb2-kpi span{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4)}
.hb2-kpi.warn{border-color:rgba(233,96,58,.4)}
.hb2-kpi.warn b{color:#E9603A}

.hb2-split{display:flex;gap:16px;align-items:flex-start}
.hb2-table{flex:1 1 auto;min-width:0}
.hb2-detail{flex:0 0 300px;background:var(--void-2);border:1px solid var(--brd-2);padding:16px;min-height:220px}

.hb2-row{display:grid;grid-template-columns:1.7fr 1.1fr 1fr .6fr .5fr .9fr .5fr;align-items:center;gap:10px;padding:7px 10px;border-bottom:1px solid var(--line)}
.hb2-row.hb2-head{border-bottom:1px solid var(--line-2);padding-bottom:8px}
.hb2-head .hb2-c{font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-4)}
.hb2-row:not(.hb2-head){cursor:pointer}
.hb2-row:not(.hb2-head):hover{background:rgba(255,255,255,.03)}
.hb2-row.sel{background:rgba(255,255,255,.06);box-shadow:inset 2px 0 0 var(--gold)}
.hb2-c{min-width:0}
.hb2-c.name{display:flex;align-items:center;gap:8px}
.hb2-gl{flex:none;font-size:12px;opacity:.9}
.hb2-gl.ph-breaking{color:#C9799F}.hb2-gl.ph-building{color:#8FB2C4}.hb2-gl.ph-maintaining{color:var(--gold)}
.hb2-nm{font-family:var(--disp);font-weight:500;font-size:12px;letter-spacing:.02em;text-transform:uppercase;color:#E4E4E8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hb2-row.miss .hb2-nm{color:#E9603A}
.hb2-c select,.hb2-c input{width:100%;background:transparent;border:1px solid transparent;color:var(--ink-2);font-family:var(--disp);font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;padding:3px 4px;cursor:pointer}
.hb2-c select:hover,.hb2-c input:hover{border-color:var(--line-2)}
.hb2-c select:focus,.hb2-c input:focus{outline:none;border-color:var(--gold);color:#fff;background:rgba(0,0,0,.35)}
.hb2-c.tgt input{text-align:center}
.hb2-c select option{background:#141417;color:#fff}
.hb2-c.stk{font-family:'Anton',var(--disp);font-size:15px;color:#fff;text-align:center}
.hb2-c.stk em{font-family:var(--disp);font-size:9px;font-style:normal;color:var(--ink-4);margin-left:1px}
.hb2-bar{display:block;height:4px;background:rgba(255,255,255,.08);position:relative;overflow:hidden;border-radius:2px}
.hb2-bar i{position:absolute;inset:0;right:auto;background:var(--ink-3)}
.hb2-bar.good i{background:#3ED66B}.hb2-bar.mid i{background:var(--gold)}.hb2-bar.bad i{background:#E9603A}
.hb2-log{width:24px;height:24px;border:1px solid var(--line-2);background:transparent;color:var(--ink-3);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;margin:0 auto}
.hb2-log:hover{border-color:var(--gold);color:var(--gold)}
.hb2-log.done{background:#3ED66B;border-color:#3ED66B;color:#0A0A0B}

.hb2d-empty{color:var(--ink-4);font-size:12px;font-style:italic;padding:20px 0}
.hb2d-hd{display:flex;align-items:center;gap:9px;margin-bottom:5px}
.hb2d-gl{font-size:16px}
.hb2d-gl.ph-breaking{color:#C9799F}.hb2d-gl.ph-building{color:#8FB2C4}.hb2d-gl.ph-maintaining{color:var(--gold)}
.hb2d-title{font-family:var(--disp);font-weight:700;font-size:16px;letter-spacing:.02em;text-transform:uppercase;color:#fff;line-height:1.2}
.hb2d-meta{font-family:var(--disp);font-weight:500;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);margin-bottom:14px}
.hb2d-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
.hb2d-stat{background:rgba(255,255,255,.03);border:1px solid var(--line);padding:9px 8px}
.hb2d-stat b{display:block;font-family:'Anton',var(--disp);font-weight:400;font-size:22px;line-height:1;color:#fff}
.hb2d-stat b em{font-family:var(--disp);font-size:10px;font-style:normal;color:var(--ink-4)}
.hb2d-stat span{font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.hb2d-sec{font-family:var(--disp);font-weight:700;font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin:0 0 8px;padding-top:4px}
.hb2-heat{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;gap:2px;width:max-content;margin-bottom:16px}
.hb2h-c{width:10px;height:10px;background:rgba(255,255,255,.07)}
.hb2h-c.on{background:#3ED66B}
.hb2d-logs{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:16px}
.hb2d-log{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);border:1px solid var(--line-2);padding:3px 6px}
.hb2d-none{font-size:11px;color:var(--ink-4);font-style:italic}
.hb2d-actions{display:flex;gap:8px}
.hb2d-btn{flex:1;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#0A0A0B;background:#3ED66B;border:0;padding:9px;cursor:pointer}
.hb2d-btn.ghost{background:transparent;border:1px solid var(--line-2);color:var(--ink-3)}
.hb2d-btn.ghost:hover{border-color:#E9603A;color:#E9603A}
@media(max-width:900px){.hb2-kpis{grid-template-columns:repeat(2,1fr)}.hb2-split{flex-direction:column}.hb2-detail{flex-basis:auto;width:100%}}

/* ══ COMMS/SYSTEM chat → floating, minimizable dock (reclaims the permanent 292px right rail) ══ */
.bodywrap{grid-template-columns:1fr !important}
.social{position:fixed !important;right:16px;bottom:16px;top:auto !important;width:420px;height:min(720px,86vh);z-index:120;border:1px solid var(--line-2);background:var(--void-1);box-shadow:0 18px 50px rgba(0,0,0,.6);display:flex;flex-direction:column;transition:transform .18s ease,opacity .18s ease}
.soc-head{display:flex !important;align-items:center;gap:8px}
.soc-min{margin-left:auto;background:transparent;border:1px solid var(--line-2);color:var(--ink-3);width:22px;height:22px;line-height:1;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;flex:none}
.soc-min:hover{border-color:var(--gold);color:var(--gold)}
body.comms-closed .social{transform:translateY(14px);opacity:0;pointer-events:none}
.comms-fab{position:fixed;right:16px;bottom:16px;z-index:119;display:none;align-items:center;gap:8px;padding:11px 17px;background:var(--void-2);border:1px solid var(--gold);color:var(--gold);font-family:var(--disp);font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;clip-path:polygon(9px 0,100% 0,calc(100% - 9px) 100%,0 100%);box-shadow:0 12px 34px rgba(0,0,0,.55)}
.comms-fab .cf-i{font-size:13px;line-height:1}
.comms-fab:hover{background:var(--gold);color:#0A0A0B}
body.comms-closed .comms-fab{display:flex}
@media(max-width:1000px){body:not(.comms-closed) .social{display:flex !important;left:12px;right:12px;width:auto;bottom:12px;top:12px !important;height:auto}}

/* ══ PROGRESSIVE UNLOCK — locked nav tabs (Phase 1) ══ */
.sb-nav a.locked{opacity:.28;filter:grayscale(1);cursor:not-allowed;position:relative}
.sb-nav a.locked:hover{opacity:.5}
.sb-nav a.locked::after{content:"";position:absolute;right:2px;bottom:2px;width:9px;height:9px;
  background:var(--void-2,#0d0f16);border:1px solid var(--gold,#C7A038);border-radius:50%;
  box-shadow:0 0 0 2px var(--void-1,#0a0a0b)}
.sb-nav a.locked[data-lock]:hover::before{content:attr(data-lock);position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);
  white-space:nowrap;font-family:var(--disp,'Oswald');font-weight:700;font-size:9px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gold,#C7A038);background:var(--void-2,#0d0f16);border:1px solid var(--line-2,rgba(255,255,255,.12));padding:5px 8px;z-index:200}

/* ══ PROTOCOLS TAB — identity→habit filter chips + protocol table ══ */
.pf-bar{display:flex;flex-direction:column;gap:9px;margin:2px 0 16px;padding-bottom:14px;border-bottom:1px solid var(--line-2)}
.pf-frow{display:flex;align-items:baseline;gap:12px}
.pf-lab{flex:0 0 62px;font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4)}
.pf-chips{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.pf-chip{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);background:transparent;border:1px solid var(--line-2);padding:5px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.pf-chip:hover{border-color:var(--ink-3);color:#fff}
.pf-chip.on{background:var(--gold);border-color:var(--gold);color:#0A0A0B}
.pf-gl{font-size:11px;opacity:.9}
.pf-gl.ph-breaking{color:#C9799F}.pf-gl.ph-building{color:#8FB2C4}.pf-gl.ph-maintaining{color:var(--gold)}
.pf-chip.on .pf-gl{color:#0A0A0B}
.pr-table{display:flex;flex-direction:column}
.pr-row{display:grid;grid-template-columns:1.6fr 1.4fr 1fr .6fr;gap:12px;align-items:center;padding:9px 10px;border-bottom:1px solid var(--line)}
.pr-row.pr-head .pr-c{font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-4)}
.pr-row:not(.pr-head):hover{background:rgba(255,255,255,.03)}
.pr-c{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pr-p{font-family:var(--disp);font-weight:500;font-size:12px;letter-spacing:.02em;color:#E4E4E8}
.pr-h{font-family:var(--disp);font-weight:500;font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-2);display:flex;align-items:center;gap:6px}
.pr-i{font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.pr-r{font-family:var(--disp);font-weight:500;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-4)}

/* ══ TODAY TAB — 50/50 split: tasks (L) · month calendar (R) ══ */
.ag-split{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.ag-col{min-width:0}
.ag-h{font-family:'Anton',var(--disp);font-size:18px;color:#fff;margin-bottom:8px}
.ag-grp{display:flex;align-items:center;gap:7px;font-family:var(--disp);font-weight:700;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin:16px 0 6px;padding-bottom:5px;border-bottom:1px solid var(--line)}
.ag-grp em{font-style:normal;color:var(--ink-3)}
.ag-none{font-size:11px;color:var(--ink-4);font-style:italic;padding:6px 2px}
.ag-task{display:grid;grid-template-columns:22px 1fr;gap:10px;align-items:start;padding:8px 4px;border-bottom:1px solid var(--line)}
.ag-task:hover{background:rgba(255,255,255,.03)}
.ag-check{width:18px;height:18px;border:1.5px solid var(--line-2);background:transparent;color:#0A0A0B;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.ag-check:hover{border-color:var(--gold)}
.ag-check.on{background:#3ED66B;border-color:#3ED66B}
.ag-tb{min-width:0}
.ag-tt{font-family:var(--disp);font-weight:500;font-size:12.5px;letter-spacing:.02em;color:#E4E4E8}
.ag-task.done .ag-tt{color:var(--ink-4);text-decoration:line-through}
.ag-tm{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.ag-tag{display:inline-flex;align-items:center;gap:4px;font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line-2);padding:2px 6px}
.ag-tag.mono{font-family:'Anton',var(--disp);letter-spacing:.02em}
.ag-tag.over{color:#E9603A;border-color:rgba(233,96,58,.4)}
.ag-tag.id{color:var(--ink-4)}
.ag-tag .pf-gl{font-size:10px}
/* calendar — square cells, blended into the page (no boxed panel), minimal, clean hover */
.ag-cal{position:relative;padding:6px 2px 2px;background:transparent;border:none}
.ag-calhd{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.ag-mo{font-family:'Anton',var(--disp);font-size:16px;letter-spacing:.05em;text-transform:uppercase;color:#fff}
.ag-nav{width:26px;height:26px;background:transparent;border:none;color:var(--ink-3);cursor:pointer;font-size:16px;transition:color .12s}
.ag-nav:hover{color:var(--gold)}
.ag-dows{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.06)}
.ag-dow{text-align:center;font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.18em;color:var(--ink-4)}
.ag-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.ag-cell{position:relative;aspect-ratio:1;border:none;border-radius:3px;padding:5px 6px;display:flex;flex-direction:column;transition:background .14s}
.ag-cell.empty{opacity:0;pointer-events:none}
.ag-cell:not(.empty):hover{background:rgba(255,255,255,.05)}
/* logged days — a quiet square tint, intensity by --lc */
.ag-cell.logged{background:rgba(62,214,107,calc(var(--lc)*.18))}
/* today — subtle gold fill + a faint square ring, no glow */
.ag-cell.today{background:rgba(199,160,56,.10);box-shadow:inset 0 0 0 1px rgba(199,160,56,.55)}
.ag-dn{font-family:var(--mono);font-weight:500;font-size:10.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ag-cell.today .ag-dn{color:var(--gold)}
.ag-cell.logged .ag-dn{color:#cfe9d8}
.ag-dots{display:flex;gap:2px;margin-top:auto}
.ag-dots i{width:4px;height:4px;border-radius:50%;background:var(--gold)}
.ag-legend{display:flex;gap:16px;margin-top:14px;padding-top:10px;border-top:1px solid rgba(255,255,255,.06);font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4)}
.ag-legend span{display:inline-flex;align-items:center;gap:6px}
.lg-dot{width:5px;height:5px;border-radius:50%;background:var(--gold)}
.lg-log{width:10px;height:10px;border-radius:2px;background:rgba(62,214,107,.4)}
@media(max-width:900px){.ag-split{grid-template-columns:1fr}}

/* ══ TODAY — outcome-grouped checklist + RESOLVE strip (dark family, coheres with the app) ══ */
/* RESOLVE strip — terminal/stale items forced to a decision */
.td-resolve{border:1px solid rgba(199,160,56,.30);background:linear-gradient(180deg,rgba(199,160,56,.05),rgba(199,160,56,.015));margin:2px 0 20px;clip-path:polygon(0 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%)}
.td-rz-h{font-family:Oswald,var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);padding:9px 12px;border-bottom:1px solid rgba(199,160,56,.18)}
.td-rz-h span{color:var(--text-3);letter-spacing:.1em}
.td-rz{display:flex;align-items:center;gap:11px;padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.05)}
.td-rz:last-child{border-bottom:none}
.td-rz-tag{flex:none;font-family:Oswald,var(--mono);font-size:8.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;padding:3px 7px;border:1px solid;min-width:74px;text-align:center}
.rz-ripe .td-rz-tag{color:#3ED66B;border-color:rgba(62,214,107,.5)}
.rz-overdue .td-rz-tag{color:#E9603A;border-color:rgba(233,96,58,.5)}
.rz-decaying .td-rz-tag{color:#C7A038;border-color:rgba(199,160,56,.5)}
.rz-orphan .td-rz-tag{color:#9AA0A6;border-color:rgba(154,160,166,.4)}
.td-rz-t{font-family:var(--sans);font-size:13.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px}
.td-rz-sub{flex:1;font-family:var(--mono);font-size:10px;color:var(--text-3);white-space:nowrap}
.td-rz-acts{flex:none;display:flex;gap:6px}
.td-rz-b{font-family:Oswald,var(--mono);font-size:10px;letter-spacing:.04em;color:var(--text-2);background:rgba(255,255,255,.03);border:1px solid var(--line);padding:4px 9px;cursor:pointer}
.td-rz-b:hover{color:var(--text);border-color:var(--gold);background:rgba(199,160,56,.08)}
/* outcome group — the target this cluster of reps serves */
.td-grp{margin:18px 0 4px}
.td-grp-h{display:flex;align-items:center;gap:8px;padding:6px 4px 7px;border-bottom:1px solid rgba(199,160,56,.22)}
.td-grp-ico{flex:none;color:var(--gold);font-size:12px}
.td-grp-t{font-family:Oswald,var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--text)}
.td-grp-dl{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--text-3);border:1px solid var(--line);padding:2px 6px}
.td-grp-dl.soon{color:var(--gold);border-color:rgba(199,160,56,.4)}
.td-grp-dl.over{color:#E9603A;border-color:rgba(233,96,58,.45)}
.td-grp-also{margin-left:auto;font-family:var(--mono);font-size:9px;letter-spacing:.08em;color:var(--text-3)}
.td-grp .td-row{padding-left:14px}

/* ══ CAPACITY — level-gated slot meters + locked "bag full" states ══ */
.cgp-cap{font-family:var(--mono);font-size:9px;letter-spacing:.06em;color:var(--text-3);margin-left:6px;opacity:.85}
.cgp-newrow.locked{color:var(--text-3);cursor:pointer;border-style:dashed;border-color:rgba(199,160,56,.28);background:rgba(199,160,56,.04)}
.cgp-newrow.locked:hover{color:var(--gold);border-color:rgba(199,160,56,.5)}
.cg-mid-add.locked{color:var(--text-3);border-color:rgba(199,160,56,.35);background:rgba(199,160,56,.05);cursor:pointer}
.cg-mid-add.locked:hover{color:var(--gold);border-color:rgba(199,160,56,.55)}
.cg-mid-add .cgp-cap{margin-left:4px}

/* ══ CODEX STORE — "install yourself" marketplace (benefit-forward, hardline) ══ */
.cdx-store{padding:2px 2px 40px}
.cdx-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px}
.cdx-search{flex:1;min-width:220px;background:rgba(255,255,255,.03);border:1px solid var(--line);color:var(--text);font-family:var(--sans);font-size:13px;padding:9px 12px;outline:none}
.cdx-search:focus{border-color:var(--gold)}
.cdx-chips{display:flex;flex-wrap:wrap;gap:5px}
.cdx-chip{font-family:Oswald,var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);border:1px solid var(--line);padding:5px 10px;cursor:pointer}
.cdx-chip.on{color:#0A0A0B;background:var(--gold);border-color:var(--gold)}
.cdx-chip:not(.on):hover{color:var(--text);border-color:var(--text-3)}
.cdx-sort{display:flex;gap:4px;margin-left:auto}
.cdx-sortb{font-family:var(--mono);font-size:10px;letter-spacing:.06em;color:var(--text-3);padding:5px 8px;cursor:pointer;border-bottom:1.5px solid transparent}
.cdx-sortb.on{color:var(--gold);border-bottom-color:var(--gold)}
/* trending boards */
.cdx-trend{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px}
.cdx-tr-col{border:1px solid var(--line);background:rgba(255,255,255,.015);padding:12px 14px}
.cdx-tr-h{font-family:Oswald,var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
.cdx-rlm{display:flex;align-items:center;gap:9px;padding:4px 0;cursor:pointer}
.cdx-rlm:hover .cdx-rlm-n{color:var(--text)}
.cdx-rlm-n{flex:none;width:98px;font-family:Oswald,var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-2)}
.cdx-rlm-bar{flex:1;height:7px;background:rgba(255,255,255,.05)}
.cdx-rlm-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),rgba(199,160,56,.5))}
.cdx-rlm-v{flex:none;font-family:Anton,var(--mono);font-size:13px;color:var(--text-2);min-width:34px;text-align:right}
.cdx-hot{display:flex;align-items:center;gap:9px;padding:5px 0;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.04)}
.cdx-hot:last-child{border-bottom:none}
.cdx-hot:hover .cdx-hot-n{color:var(--text)}
.cdx-hot-i{flex:none;font-family:Anton,var(--mono);font-size:14px;color:var(--gold);width:18px}
.cdx-hot-n{flex:1;font-family:var(--sans);font-size:13px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cdx-hot-v{flex:none;font-family:var(--mono);font-size:10px;color:#E9603A}
.cdx-dim{font-family:var(--mono);font-size:11px;color:var(--text-3);padding:10px 2px}
/* shelf + cards */
.cdx-shelf-h{font-family:Oswald,var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-2);margin:6px 0 12px;border-bottom:1px solid var(--line);padding-bottom:7px}
.cdx-shelf-h span{color:var(--text-3);margin-left:4px}
.cdx-sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.cdx-scard{border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.005));cursor:pointer;display:flex;flex-direction:column;clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%);transition:border-color .12s}
.cdx-scard:hover{border-color:var(--gold)}
.cdx-thumb{height:118px;background:#0d0d10 center/cover no-repeat;border-bottom:1px solid var(--line)}
.cdx-thumb.glyph{display:flex;align-items:center;justify-content:center;font-size:38px;color:var(--gold);background:radial-gradient(120% 120% at 50% 0%,rgba(199,160,56,.10),transparent 60%),#0d0d10}
.cdx-sc-body{padding:11px 12px 13px;display:flex;flex-direction:column;gap:7px;flex:1}
.cdx-forge{align-self:flex-start;font-family:Oswald,var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);border:1px solid rgba(199,160,56,.35);padding:2px 7px}
.cdx-sc-benefit{font-family:var(--sans);font-size:15px;line-height:1.28;font-weight:600;color:var(--text)}
.cdx-sc-name{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--text-3);text-transform:uppercase}
.cdx-sc-meta{display:flex;gap:10px;align-items:center;margin-top:auto;font-family:var(--mono);font-size:10px;color:var(--text-2)}
.cdx-sc-diff{color:var(--gold);letter-spacing:1px}
.cdx-sc-inst{margin-top:8px;font-family:Oswald,var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#0A0A0B;background:var(--gold);border:none;padding:8px;cursor:pointer;clip-path:polygon(0 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%)}
.cdx-sc-inst:hover{filter:brightness(1.08)}
.cdx-sc-inst.done{background:transparent;color:#3ED66B;border:1px solid rgba(62,214,107,.4);clip-path:none}
/* item detail modal */
.cdx-modal{position:fixed;inset:0;z-index:400;background:rgba(5,5,7,.82);display:flex;align-items:center;justify-content:center;padding:24px;backdrop-filter:blur(3px)}
.cdx-mcard{position:relative;width:min(560px,94vw);max-height:90vh;overflow:auto;background:#0b0b0e;border:1px solid rgba(199,160,56,.35);clip-path:polygon(0 0,100% 0,100% calc(100% - 18px),calc(100% - 18px) 100%,0 100%)}
.cdx-mx{position:absolute;top:10px;right:10px;z-index:2;background:rgba(0,0,0,.5);border:1px solid var(--line);color:var(--text-2);width:28px;height:28px;cursor:pointer;font-size:13px}
.cdx-mx:hover{color:var(--text);border-color:var(--gold)}
.cdx-mvid{width:100%;display:block;background:#000;max-height:300px}
.cdx-thumb.big{height:210px}
.cdx-mbody{padding:18px 20px 22px;display:flex;flex-direction:column;gap:12px}
.cdx-m-benefit{font-family:var(--sans);font-size:22px;line-height:1.22;font-weight:700;color:var(--text)}
.cdx-m-reframe{font-family:var(--serif,Georgia),serif;font-style:italic;font-size:14px;line-height:1.5;color:var(--text-2);border-left:2px solid var(--gold);padding-left:12px}
.cdx-m-adds{font-family:var(--mono);font-size:11px;color:var(--text-3)}
.cdx-m-adds b{color:var(--text-2)}
.cdx-m-meta{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--text-2)}
.cdx-m-install{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;border-top:1px solid var(--line);padding-top:14px}
.cdx-m-il{font-family:Oswald,var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}
.cdx-m-ib{font-family:Oswald,var(--mono);font-size:12px;letter-spacing:.04em;color:var(--text);background:transparent;border:1px solid var(--ic,var(--gold));padding:7px 13px;cursor:pointer}
.cdx-m-ib:hover{background:var(--ic,var(--gold));color:#0A0A0B}
.cdx-m-done{font-family:var(--mono);font-size:12px;color:#3ED66B}
@media(max-width:640px){.cdx-trend{grid-template-columns:1fr}}

/* ══ PLAN polish — clean minimal tabs, balanced list/calendar density, unified language ══ */
/* view tabs: heavy segmented box -> quiet underline bar with a gold active tick */
.ov-viewtabs{display:inline-flex;gap:24px;border:none;width:100%;margin-bottom:20px;border-bottom:1px solid var(--line)}
.ov-viewtabs b{font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4);padding:0 0 11px;cursor:pointer;background:none;border:none;border-bottom:1.5px solid transparent;margin-bottom:-1px;transition:color .12s,border-color .12s}
.ov-viewtabs b+b{border-left:none}
.ov-viewtabs b:hover{color:var(--ink-2);background:none}
.ov-viewtabs b.on{background:none;color:#fff;border-bottom-color:var(--gold)}
.ov-viewtabs b span{font-weight:500;font-size:9px;color:var(--ink-4);margin-left:6px}
.ov-viewtabs b.on span{color:var(--ink-4)}
/* identity filter: minimal pill row, no heavy borders */
.ov-idfilter{display:inline-flex;align-items:center;gap:5px;margin:0 0 18px;flex-wrap:wrap}
.ov-idfilter b{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.08em;color:var(--ink-4);border:1px solid transparent;padding:4px 10px;cursor:pointer;transition:color .12s,background .12s}
.ov-idfilter b:hover{color:var(--ink-2);background:rgba(255,255,255,.04)}
.ov-idfilter b.on{color:#fff;background:rgba(255,255,255,.06)}
/* list vs calendar: give the list a touch more room, more gutter, aligned baselines */
.ag-split{grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);gap:30px}
.ag-h{font-family:'Anton',var(--disp);font-size:16px;letter-spacing:.03em;text-transform:uppercase;color:#fff;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.06)}
.ag-grp{margin:18px 0 4px;font-size:8.5px;letter-spacing:.16em;border-bottom:none;color:var(--ink-4);padding-bottom:2px}
.ag-task{padding:9px 2px}
.ag-tt{font-size:13.5px}
/* add-from-list affordance (replaces the removed add bar) */
.ag-add{font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);padding:12px 2px 2px;margin-top:8px;cursor:pointer;transition:color .12s}
.ag-add:hover{color:var(--gold)}

/* ══ Plan polish v2 — anchored stat HUD, left month, minimal calendar states ══ */
/* stat HUD floated at right:320px (a stale offset for a comms rail that's a slide-over in hardline) → true top-right */
.topstat{right:20px !important}
/* calendar header: month left, nav grouped right — no more centered month */
.ag-calhd{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.ag-mo{margin:0}
.ag-navs{display:inline-flex;gap:2px}
/* minimal calendar states: no fills — dim by default, brighter when logged, gold today, small deadline tick */
.ag-cell.logged{background:none}
.ag-cell.today{background:none;box-shadow:none}
.ag-cell .ag-dn{color:var(--ink-4)}
.ag-cell.logged .ag-dn{color:var(--ink-2)}
.ag-cell.today .ag-dn{color:var(--gold);font-weight:700}
.ag-cell:not(.empty):hover{background:rgba(255,255,255,.035)}
/* ── PLAN · Today highlight strip (chamfered card atop the task column) ── */
.ag-tstrip{position:relative;margin-bottom:18px;border:0;background:var(--line-2);padding:1px;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%)}
.ag-tstrip::before{content:"";position:absolute;inset:1px;background:var(--void-2);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%)}
.agt-in{position:relative;padding:13px 15px 14px}
.agt-top{display:flex;align-items:baseline;gap:10px;margin-bottom:11px}
.agt-day{font-family:'Anton',sans-serif;font-size:26px;line-height:.82;color:#fff}
.agt-dow{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.agt-now{margin-left:auto;font-family:var(--disp);font-weight:700;font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:#0A0A0B;background:var(--gold);padding:3px 8px}
.agt-metrics{display:flex;gap:24px;align-items:flex-end;margin-bottom:11px}
.agt-v{font-family:'Anton',sans-serif;font-size:22px;line-height:.82;color:#fff}
.agt-v small{font-family:var(--disp);font-size:11px;color:var(--ink-3)}
.agt-l{display:block;font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-top:5px}
.agt-bar{height:5px;background:var(--line-3);position:relative}
.agt-bar i{display:block;height:100%;background:var(--gold)}
.agt-barl{display:flex;justify-content:space-between;margin-top:6px;font-family:var(--disp);font-weight:500;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
/* ── PLAN · calendar performance cells ── */
.ag-cell:not(.empty){cursor:pointer}
.ag-cbot{margin-top:auto;display:flex;flex-direction:column;gap:3px}
.ag-cbot .ag-dots{margin-top:0}
.ag-acts{position:absolute;top:4px;right:6px;font-family:'Anton',sans-serif;font-size:10px;color:var(--ink-3);line-height:1}
.ag-pbar{height:3px;background:rgba(255,255,255,.07)}
.ag-pbar i{display:block;height:100%;background:var(--ink-2)}
.ag-cell.perfect .ag-pbar i{background:var(--gold)}
.ag-cell.miss{box-shadow:inset 3px 0 0 #E9603A !important}
.ag-cell.miss .ag-pbar i{background:#E9603A}
.ag-cell.future{opacity:.4;pointer-events:none}
.ag-cell.today{background:rgba(199,160,56,.08) !important;box-shadow:inset 0 0 0 1.5px var(--gold) !important}
.ag-cell.today .ag-pbar i{background:var(--gold)}
.ag-tlab{position:absolute;top:4px;right:6px;font-family:var(--disp);font-weight:700;font-size:6.5px;letter-spacing:.1em;color:var(--gold)}
.ag-cell.sel{background:rgba(255,255,255,.05) !important;box-shadow:inset 0 0 0 1.5px #fff !important}
.lg-perf{width:9px;height:9px;background:var(--gold)}
.lg-miss{width:9px;height:9px;background:#E9603A}
/* ── PLAN · day-drill (replaces the task column) ── */
.ag-back{font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);background:none;border:0;padding:0;cursor:pointer;margin-bottom:15px}
.ag-back:hover{color:#fff}
.ag-dhd{display:flex;align-items:baseline;gap:10px;margin-bottom:15px}
.ag-dday{font-family:'Anton',sans-serif;font-size:30px;line-height:.82;color:#fff}
.ag-ddow{font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.ag-dstats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:16px}
.ag-dstat{border:1px solid var(--line-3);padding:10px 11px}
.ag-dstat .v{font-family:'Anton',sans-serif;font-size:21px;line-height:.82;color:#fff}
.ag-dstat .v small{font-family:var(--disp);font-size:10px;color:var(--ink-3)}
.ag-dstat .k{display:block;font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-4);margin-top:5px}
.ag-dlh{font-family:var(--disp);font-weight:700;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:16px 0 7px}
.ag-drow{display:flex;align-items:center;gap:10px;padding:8px 2px;border-bottom:1px solid var(--line-3)}
.ag-dm{flex:none;width:15px;text-align:center;font-size:12px;color:var(--ink-3)}
.ag-drow.held .ag-dm,.ag-drow.dead .ag-dm{color:var(--gold)}
.ag-drow.slip .ag-dm,.ag-drow.miss .ag-dm{color:#E9603A}
.ag-dt{flex:1;min-width:0;font-family:var(--disp);font-weight:500;font-size:12.5px;letter-spacing:.01em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-drow.miss .ag-dt{color:var(--ink-3)}
.ag-dtag{flex:none;font-family:var(--disp);font-weight:600;font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4)}

/* ══ Habits grouped by quest — quest sub-header bands, idle habits muted ══ */
.hb2-qrow{display:flex;align-items:center;gap:10px;padding:16px 4px 8px;border-bottom:1px solid rgba(199,160,56,.2);margin-bottom:2px}
.hb2-qrow::before{content:'◈';color:var(--gold);font-size:10px}
.hb2-qt{font-family:Oswald,var(--mono);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text)}
.hb2-qdl{margin-left:auto;font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;color:var(--text-3);border:1px solid var(--line);padding:2px 7px}
.hb2-qdl.over{color:#E9603A;border-color:rgba(233,96,58,.4)}
.hb2-qsub{font-family:var(--mono);font-size:9px;letter-spacing:.04em;color:var(--text-3)}
.hb2-qrow.idle{border-bottom-color:rgba(255,255,255,.08);margin-top:10px}
.hb2-qrow.idle::before{content:'○';color:var(--text-3)}
.hb2-qrow.idle .hb2-qt{color:var(--text-3)}
.hb2-idlewrap{opacity:.5}
.hb2-idlewrap .hb2-row:hover{opacity:1}

/* ══ Quests tab — same hb2 layout, quest columns + inline editor ══ */
.hb2-table.qt .hb2-row{grid-template-columns:1.7fr .9fr .8fr 1.2fr .5fr}
.hb2-c.qc-dl{font-family:var(--mono);font-size:10.5px;color:var(--ink-2)}
.hb2-c.qc-dl.soon{color:var(--gold)}
.hb2-c.qc-dl.over{color:#E9603A}
.hb2-c.qc-prog{font-family:'Anton',var(--disp);font-size:14px;color:#fff}
.hb2-c.qc-forge{font-family:var(--disp);font-size:10px;letter-spacing:.03em;color:var(--gold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hb2-c.qc-forge .qc-none{color:var(--ink-4);font-style:normal}
.hb2-qrow.out::before{content:'★';color:var(--gold)}
.qd-edit{display:flex;flex-direction:column;gap:9px;margin:12px 0 14px;padding:13px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.qd-f{display:flex;align-items:center;justify-content:space-between;gap:10px}
.qd-f>span{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4)}
.qd-f input,.qd-f select{flex:0 0 150px;background:rgba(0,0,0,.3);border:1px solid var(--line-2);color:var(--ink);font-family:var(--disp);font-size:11px;padding:5px 8px}
.qd-f input:focus,.qd-f select:focus{outline:none;border-color:var(--gold)}
.qd-f select option{background:#141417;color:#fff}
.qd-feeders{display:flex;flex-wrap:wrap;gap:5px}
.qd-feed{font-family:var(--disp);font-size:10px;color:var(--ink-2);border:1px solid var(--line);padding:3px 8px}
.qd-closed{font-family:var(--disp);font-size:12px;letter-spacing:.06em;color:var(--ink-3)}

/* ══ Identity portraits — per-user only; placeholder + upload (no baked-in personal images) ══ */
.who-portrait.no-photo,.podium-fig.no-photo{background:radial-gradient(130% 110% at 30% 15%,var(--pc,#8E7BF6),transparent 62%),#0d0d12}
.id-mono{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:'Anton',var(--disp);font-size:62px;letter-spacing:.03em;text-transform:uppercase;color:rgba(255,255,255,.13);pointer-events:none}
.id-photo-btn{position:absolute;left:10px;bottom:10px;z-index:4;font-family:'Oswald',var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.22);padding:5px 10px;cursor:pointer}
.id-photo-btn:hover{border-color:var(--gold);color:var(--gold)}

/* Plan quick-add rows */
.hb2-add{font-family:'Oswald',var(--disp);font-weight:600;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);padding:12px 12px;cursor:pointer;border-top:1px dashed var(--line-2);margin-top:2px}
.hb2-add:hover{color:var(--gold)}
.cd-add{color:var(--gold);cursor:pointer;font-weight:600}
.cd-add:hover{text-decoration:underline}

/* Home · Trends signal feed */
.lch-trends{display:flex;flex-direction:column;gap:1px}
.sig-row{display:flex;align-items:flex-start;gap:10px;padding:9px 4px;border-bottom:1px solid var(--line)}
.sig-row:last-child{border-bottom:none}
.sig-ic{font-family:var(--mono);font-size:12px;line-height:1.4;flex:none;width:14px;text-align:center}
.sig-b{min-width:0;flex:1}
.sig-t{font-family:var(--sans);font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sig-s{font-family:var(--mono);font-size:10px;letter-spacing:.03em;color:var(--text-3);margin-top:1px}
.sig-empty{font-family:var(--mono);font-size:11px;color:var(--text-3);padding:12px 4px}

/* Daily Rite — compact toward a horizontal bar: slim photo strip, tighter steps */
.lch-hero-rite .fc-drop{width:100% !important;height:50px !important;flex-direction:row !important;gap:9px;border-radius:8px}
.lch-hero-rite .fc-drop .fc-plus{font-size:17px}
.lch-hero-rite .fc-drop .fc-droptext{font-size:11px}
.rite-card .rite-cap{min-height:34px}
.rite-card .rite-seal-wrap{margin-top:6px;padding-top:7px}
.rite-card .rite-step{margin:2px 0}

/* Home quest cards — direct "log" action + start affordance */
.camp-tlrow{display:flex;align-items:center;gap:8px}
.camp-log{font-family:'Oswald',var(--disp);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);background:rgba(255,255,255,.05);border:1px solid var(--line);padding:4px 10px;cursor:pointer;margin-left:auto}
.camp-log:hover{color:var(--gold);border-color:var(--gold);background:rgba(199,160,56,.08)}
.camp-start{color:var(--gold) !important;border:1px dashed rgba(199,160,56,.4);padding:14px !important;text-align:center}
.camp-start:hover{background:rgba(199,160,56,.06)}

/* v1: the docked Strategist is the assistant — drop the redundant floating SYSTEM fab + comms slide-over */
.comms-fab{display:none !important}
.social,#socialPanel{display:none !important}

/* boxed dashboard — calendar + task column as clear cards aligned with the strategist (Meridian-style) */
.ag-split{gap:16px;align-items:stretch}
.ag-cal{background:var(--void-2) !important;border:1px solid var(--line-2) !important;border-radius:5px;padding:16px 16px 14px !important}
.ag-tasks{background:var(--void-2);border:1px solid var(--line-2);border-radius:5px;padding:16px 18px}

/* ══ MINIMAL GRID — hairline DIVIDERS, not boxes: transparent panels separated by thin lines ══ */
.ov-chat,.ag-cal,.ag-tasks,.hb2-detail,.detail,.planner-chat{background:transparent !important;border:none !important;border-radius:0 !important}
.kpi,.hb2-kpi,.hb2-row,.unit,.task,.qbig,.qcard{border-radius:0 !important;clip-path:none !important}
/* the grid is drawn by dividers: under the header, and between each column */
#sub-overview{column-gap:0 !important}
.ov-header{border-bottom:1px solid var(--line) !important;padding-bottom:13px !important;margin-bottom:0}
/* strategist reads as its own zone via a subtle bg shift (cool, elevated) — not a boxed border */
.ov-chat{border-left:1px solid var(--line) !important;padding:0 0 0 14px !important;background:rgba(126,140,170,.045) !important}
.ag-split{gap:0 !important}
.ag-cal{border-left:1px solid var(--line) !important;padding-left:22px !important}
.ag-tasks{padding-right:22px !important}
/* strategist chat — flat grey system / lighter user bubbles, squared */
.ovp-msg{border-radius:0 !important;border:none !important;padding:11px 15px}
.ovp-msg.ai{background:rgba(255,255,255,.05) !important;border-left:none !important;color:var(--ink) !important}
.ovp-msg.user{background:rgba(255,255,255,.10) !important;border:none !important;color:#fff !important}
.ovp-bar{border-top:1px solid var(--line) !important;padding:12px 0 0}
.ovp-bar textarea{border-radius:0 !important;background:rgba(255,255,255,.04) !important;border:1px solid var(--line) !important;padding:10px 12px}
.ovp-send{border-radius:0 !important;clip-path:none !important;padding:0 16px}
.hb2d-btn,.dbtn{border-radius:0 !important}

/* ══ Plan layout: full-width header row (tabs + HUD on one line) + one equal-height content row ══ */
.cmd-board{padding-top:16px !important}
#sub-overview{display:grid;grid-template-columns:minmax(0,1fr) 344px !important;grid-template-rows:auto minmax(0,1fr) !important;
  column-gap:16px !important;row-gap:12px !important;height:calc(100vh - 40px) !important;align-items:stretch !important}
.ov-header{grid-column:1/-1;display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin:0}
.ov-header .ov-viewtabs,.ov-header .ov-idfilter{margin:0 !important;width:auto !important}
/* both columns live in row 2 → same top, same height, bottoms aligned */
.ov-main{grid-row:2 !important;grid-column:1 !important;min-height:0;min-width:0;display:flex;flex-direction:column}
.ov-today,.ov-habits,.ov-quests,.ov-agenda,.ov-proto,.ov-map,.ov-wants,.ov-traits{flex:1;min-height:0;overflow-y:auto}
/* map fills its full-height panel: wrap is a flex box, the flow stretches to fill */
.ov-map{display:flex;overflow:hidden}
.ovmap-wrap{display:flex;flex:1;min-height:0}
.cg-flow{flex:1;min-height:0 !important;height:auto}
.cg-mid,.cg-panelL,.cg-panelR{align-self:stretch}
.cg-panelL,.cg-panelR{overflow-y:auto}
.ov-chat{grid-row:2 !important;grid-column:2 !important;position:relative !important;top:auto !important;margin:0 !important;height:auto !important;min-height:0 !important}
.ag-split{height:100% !important;align-items:stretch}
.ag-cal,.ag-tasks{height:100% !important;overflow-y:auto}

/* ══ MINIMAL STATS + CONNECTED GRID LINES (no boxes anywhere; dividers only) ══ */
/* KPI stats → ONE thin inline line (collapsed, minimal), a single divider under it */
.hb2-kpis{display:flex !important;flex-wrap:wrap;gap:26px !important;border-bottom:1px solid var(--line);padding:0 0 11px !important;margin:0 !important}
.hb2-kpi{background:transparent !important;border:none !important;flex-direction:row !important;align-items:baseline;gap:7px !important;padding:0 !important}
.hb2-kpi b{font-family:var(--mono) !important;font-weight:600;font-size:15px !important;line-height:1}
.hb2-kpi b em{font-size:11px;font-style:normal;color:var(--text-3)}
.hb2-kpi span{font-size:9.5px !important;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}
.hb2-kpi.warn b{color:#E9603A}
/* HUD top-right → no box */
.topstat,.topstat .ts-lvl,.topstat .ts-res{border:none !important;background:transparent !important;box-shadow:none !important}
/* detail panel → a hairline divider between the list and the details */
.hb2-split{gap:0 !important}
.hb2-table{padding-right:22px}
.hb2-detail{border-left:1px solid var(--line) !important;padding-left:22px !important}
/* detail sub-tiles → minimal, no boxes */
.hb2d-stat{background:transparent !important;border:none !important;padding:0 !important}
.hb2d-stats{gap:18px}

/* ══ CLOSE THE GRID: verticals meet the header rule; breathing room lives INSIDE each column ══ */
#sub-overview{row-gap:0 !important}
.ov-header{padding-bottom:16px !important;margin-bottom:0 !important}
.ov-main{padding-top:0 !important}
.hb2-table{padding-top:18px !important}
.hb2-detail{padding-top:18px !important}
.ov-chat{padding:18px 0 0 16px !important}
.ag-cal{padding-top:18px !important}
.ag-tasks{padding-top:18px !important}

/* ══ REFINEMENTS: dot filter · no active-tab underline · full-height divider · bigger chat input ══ */
/* identity filter → minimal LIT DOTS (toggle): dim when off, glowing dot when on */
.ov-idfilter b{border:none !important;background:none !important;padding:4px 8px !important;opacity:.42;transition:opacity .12s}
.ov-idfilter b:hover{opacity:.85;background:none !important}
.ov-idfilter b.on{opacity:1;color:#fff !important;background:none !important}
.idf-dot{width:8px !important;height:8px !important;transition:box-shadow .15s,transform .12s}
.ov-idfilter b.on .idf-dot{box-shadow:0 0 8px 1px var(--fc);transform:scale(1.2)}
/* tabs → drop the highlighted underline; the header rule is the only line */
.ov-viewtabs{border-bottom:none !important}
.ov-viewtabs b,.ov-viewtabs b.on{border-bottom:none !important}
/* list │ details divider runs the full height to the bottom */
.hb2-split{align-items:stretch !important;min-height:100%}
/* strategist input → taller box, never clipped */
#ovpMsgs{flex:1 1 auto !important;min-height:0 !important;overflow-y:auto !important}
.ovp-bar{flex:none !important}
.ovp-bar textarea{min-height:66px !important;line-height:1.45}

/* ══ HABITS ORGANIZATION: segment filter · collapsible groups · sort ══ */
.hb2-seg{margin-left:auto !important;display:inline-flex;gap:1px;align-self:center}
.hb2-seg b{font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-4);padding:4px 9px;cursor:pointer;transition:color .12s,background .12s}
.hb2-seg b:hover{color:var(--ink-2)}
.hb2-seg b.on{color:#fff;background:rgba(255,255,255,.07)}
.hb2-qrow[data-grptoggle]{cursor:pointer;user-select:none}
.hb2-qrow[data-grptoggle]:hover .hb2-qt{color:#fff}
.hb2-cav{display:inline-block;width:13px;color:var(--ink-4);font-size:9px;flex:none}
.hb2-qn{font-family:var(--mono);font-size:10px;color:var(--ink-4);margin-left:9px}
.hb2-group.col .hb2-row{display:none}

/* ══ DRAG-REORDER affordances ══ */
.hb2-row[draggable]{cursor:grab}
.hb2-row.dragging{opacity:.4;cursor:grabbing}
.hb2-row.drop-b{box-shadow:inset 0 2px 0 var(--gold)}
.hb2-row.drop-a{box-shadow:inset 0 -2px 0 var(--gold)}
.hb2-seg .hb2-sortt{margin-left:8px}

/* ══════════════════════════════════════════════════════════════════════════
   PLAN · HABITS — conformed to ui-reference.html (hbx- namespace)
   ══════════════════════════════════════════════════════════════════════════ */
.fic{display:block}
.hbx-split{display:flex;align-items:stretch;min-height:100%;height:100%}
.hbx-list{flex:1;min-width:0;overflow-y:auto;padding:14px 0 40px}
.hbx-detail{flex:0 0 300px;position:relative;border-left:1px solid var(--line);padding:16px 22px 40px;overflow-y:auto}
/* group label — bare, no rule/caret/note */
.hbx-ghead{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-2);padding:16px 24px 8px}
/* row: [check] [phase] [name] [this-week] [streak] */
.hbx-row{display:grid;grid-template-columns:34px 26px 1fr 152px 78px;gap:14px;align-items:center;padding:13px 24px;cursor:pointer;position:relative;transition:background .1s}
.hbx-row:hover{background:rgba(45,212,191,.045)}
.hbx-row.sel{background:var(--accent-dim);box-shadow:inset 3px 0 0 var(--accent)}
.hbx-row.done{background:rgba(105,180,140,.12)}
.hbx-row.done .hbx-t{color:var(--ink-3)}
.hbx-check{width:27px;height:27px;border:1.5px solid var(--line-2);background:none;color:transparent;cursor:pointer;display:grid;place-items:center;clip-path:var(--chamfer);transition:all .14s;justify-self:start;padding:0}
.hbx-check .fic{width:15px;height:15px}
.hbx-check:hover{border-color:var(--accent);color:var(--accent);box-shadow:0 0 10px -2px var(--accent-glow)}
.hbx-check.done{background:var(--good);border-color:var(--good);color:var(--surface)}
.hbx-phase{display:grid;place-items:center;justify-self:center}
.hbx-phase .fic{width:19px;height:19px}
.hbx-phase.break{color:var(--warn)}
.hbx-phase.build{color:var(--accent-2)}
.hbx-phase.maintain{color:var(--good)}
.hbx-nm{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.hbx-t{font-family:var(--sans);font-size:19px;font-weight:600;letter-spacing:-.01em;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.hbx-sub{font-size:11.5px;color:var(--ink-4)}
.hbx-week{display:flex;gap:4px;align-items:center}
.hbx-blk{width:16px;height:16px;background:var(--line-2);clip-path:polygon(0 3px,3px 0,100% 0,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%)}
.hbx-blk.on{background:var(--good);box-shadow:0 0 5px var(--good-glow)}
.hbx-blk.today{box-shadow:0 0 0 2px var(--accent)}
.hbx-blk.on.today{box-shadow:0 0 0 2px var(--accent),0 0 5px var(--good-glow)}
.hbx-streak{display:flex;align-items:baseline;gap:4px;justify-content:flex-end}
.hbx-streak b{font-family:var(--display);font-size:23px;font-weight:500;color:var(--ink-3);line-height:1}
.hbx-streak.hot b{color:var(--good);text-shadow:0 0 10px var(--good-glow)}
.hbx-streak span{font-size:9px;color:var(--ink-4);text-transform:uppercase}
.hbx-add{padding:14px 24px;color:var(--ink-4);font-size:12px;cursor:pointer}
.hbx-add:hover{color:var(--accent)}
/* ── detail ── */
.hbx-dempty{color:var(--ink-4);font-size:12px;padding:24px}
.hbx-min{position:absolute;top:15px;right:14px;width:22px;height:22px;border:none;background:none;color:var(--ink-4);cursor:pointer;display:grid;place-items:center;z-index:3}
.hbx-min .fic{width:14px;height:14px;transform:rotate(180deg)}
.hbx-min:hover{color:var(--accent)}
.hbx-dh{display:flex;align-items:center;gap:9px;margin-bottom:6px;padding-right:30px}
.hbx-dh .hbx-phase .fic{width:21px;height:21px}
.hbx-dh h2{font-family:var(--sans);font-size:19px;font-weight:600;letter-spacing:-.01em;color:var(--ink);margin:0}
.hbx-edit{margin-left:auto;width:20px;height:20px;flex:none;border:none;background:none;color:var(--ink-4);cursor:pointer;display:grid;place-items:center}
.hbx-edit .fic{width:14px;height:14px}
.hbx-edit:hover{color:var(--accent)}
.hbx-dsub{font-size:11.5px;color:var(--ink-3);margin-bottom:20px;text-transform:capitalize}
.hbx-ddesc{font-size:13px;line-height:1.62;color:var(--ink-2);margin:0 0 22px;outline:none;cursor:text;transition:color .12s}
.hbx-ddesc:hover,.hbx-ddesc:focus{color:var(--ink)}
.hbx-d3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}
.hbx-s b{display:block;font-family:var(--display);font-size:26px;font-weight:400;color:var(--ink);line-height:1}
.hbx-s span{display:block;margin-top:7px;font-size:9px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-3)}
.hbx-dlbl{font-size:10.5px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3);margin:0 0 10px;display:flex;justify-content:space-between}
.hbx-dlbl em{font-family:var(--mono);font-style:normal;color:var(--ink-4);font-weight:400;text-transform:none;letter-spacing:0}
.hbx-protos{margin:0 0 24px}
.hbx-proto{display:flex;gap:9px;font-size:12.5px;color:var(--ink-2);padding:8px 0;border-bottom:1px solid var(--line);line-height:1.45}
.hbx-proto:last-child{border-bottom:0}
.hbx-pk{color:var(--accent-2);flex:none;font-weight:700}
.hbx-logs{display:block;font-family:var(--mono);font-size:11.5px;color:var(--ink-3);letter-spacing:.02em;margin-bottom:26px}
.hbx-dbtns{display:flex;gap:10px}
.hbx-dbtn{flex:1;padding:12px 14px;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.01em;cursor:pointer;text-align:center;border-radius:0;clip-path:var(--chamfer);transition:all .14s;border:1px solid var(--line-2);background:none;color:var(--ink-2);display:flex;align-items:center;justify-content:center;gap:7px}
.hbx-dbtn .fic{width:15px;height:15px}
.hbx-dbtn:hover{border-color:var(--ink-3);color:var(--ink)}
.hbx-dbtn.pri{background:var(--accent);border-color:var(--accent);color:var(--ink-on-accent);box-shadow:0 5px 18px -7px var(--accent-glow)}
.hbx-dbtn.pri:hover{background:var(--accent-2)}
/* collapse the detail column */
.hbx-split.dmin .hbx-detail{flex-basis:0;padding:0;border-left:0;overflow:hidden;opacity:0}

/* ══════════════════════════════════════════════════════════════════════════
   PLAN · TODAY (agenda) — cleaned to the forge system
   ══════════════════════════════════════════════════════════════════════════ */
.ag-split{display:flex;align-items:stretch;gap:0;min-height:100%;height:100%}
.ag-tasks{flex:1;min-width:0;overflow-y:auto;padding:16px 22px 40px}
.ag-cal{flex:0 0 322px;border-left:1px solid var(--line);padding:16px 20px;overflow-y:auto;background:none}
/* today strip → clean pixel metrics, no box */
.ag-tstrip{border:none !important;background:none !important;padding:0 !important;margin:0 0 6px !important}
.agt-in{padding:0 !important;background:none !important;border:none !important}
.agt-top{display:flex;align-items:baseline;gap:10px;margin-bottom:16px}
.agt-day{font-family:var(--display);font-size:30px;font-weight:500;color:var(--ink);line-height:1}
.agt-dow{font-size:12px;color:var(--ink-3)}
.agt-now{margin-left:auto;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-2)}
.agt-metrics{display:flex;gap:28px;margin-bottom:14px}
.agt-m{display:flex;flex-direction:column;gap:5px}
.agt-v{font-family:var(--display);font-size:22px;font-weight:400;color:var(--ink);line-height:1}
.agt-v small{font-family:var(--sans);font-size:11px;color:var(--ink-4)}
.agt-l{font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.agt-bar{height:3px;background:var(--line-2);position:relative;overflow:hidden;margin-bottom:6px;border-radius:0}
.agt-bar i{position:absolute;left:0;top:0;bottom:0;background:var(--accent);box-shadow:0 0 6px var(--accent-glow)}
.agt-barl{display:flex;justify-content:space-between;font-size:10px;color:var(--ink-4)}
/* group labels — bare */
.ag-grp{font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2);padding:18px 0 8px;border:none;display:flex;gap:8px;align-items:baseline;background:none}
.ag-grp em{font-family:var(--mono);font-style:normal;color:var(--ink-4);font-size:10px}
/* task rows — check-left · forge icon · title/sub */
.ag-task{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);cursor:default;background:none}
.ag-task.done .ag-tt{color:var(--ink-3)}
.ag-check{width:26px;height:26px;flex:none;border:1.5px solid var(--line-2);background:none;color:transparent;cursor:pointer;display:grid;place-items:center;clip-path:var(--chamfer);transition:all .14s;padding:0}
.ag-check .fic{width:14px;height:14px}
.ag-check:hover{border-color:var(--accent);color:var(--accent)}
.ag-check.done{background:var(--good);border-color:var(--good);color:var(--surface)}
.ag-fic{width:20px;flex:none;display:grid;place-items:center}
.ag-fic .fic{width:18px;height:18px}
.ag-fic.break{color:var(--warn)}.ag-fic.build{color:var(--accent-2)}.ag-fic.maintain{color:var(--good)}.ag-fic.q{color:var(--ink-3)}
.ag-tb{min-width:0;flex:1}
.ag-tt{font-family:var(--sans);font-size:16px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-tm{font-size:11.5px;color:var(--ink-4);margin-top:2px;display:block}
.ag-add{padding:14px 0;color:var(--ink-4);font-size:12px;cursor:pointer}.ag-add:hover{color:var(--accent)}
.ag-none{font-size:12px;color:var(--ink-4);padding:8px 0}
/* calendar — clean cells, today ring */
.ag-calhd{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.ag-mo{font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.04em;color:var(--ink)}
.ag-nav{background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:15px;padding:0 6px}.ag-nav:hover{color:var(--accent)}
.ag-dows{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:5px}
.ag-dow{font-size:9px;color:var(--ink-4);text-align:center}
.ag-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.ag-cell{aspect-ratio:1;position:relative;background:rgba(45,212,191,.05);border:none;padding:3px 4px;cursor:pointer;overflow:hidden}
.ag-cell.empty{background:none;cursor:default}
.ag-cell.logged{background:rgba(127,191,151,.14)}
.ag-cell.perfect{background:var(--good);box-shadow:0 0 6px var(--good-glow)}
.ag-cell.miss{background:rgba(224,136,99,.1)}
.ag-cell.today{box-shadow:inset 0 0 0 2px var(--accent)}
.ag-cell.sel{box-shadow:inset 0 0 0 2px var(--accent-2)}
.ag-cell.future{background:none;box-shadow:inset 0 0 0 1px var(--line)}
.ag-dn{font-family:var(--mono);font-size:10px;color:var(--ink-3)}
.ag-cell.perfect .ag-dn{color:var(--surface)}
.ag-tlab{position:absolute;bottom:3px;left:4px;font-size:6.5px;letter-spacing:.08em;color:var(--accent-2)}
.ag-acts{position:absolute;bottom:2px;right:4px;font-family:var(--mono);font-size:9px;color:var(--ink-4)}
.ag-pbar,.ag-dots,.ag-cbot{display:none !important}
.ag-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px;font-size:9px;color:var(--ink-4)}
.ag-legend i{display:inline-block;width:8px;height:8px;margin-right:3px;vertical-align:middle}
.lg-perf{background:var(--good)}.lg-log{background:rgba(127,191,151,.3)}.lg-miss{background:rgba(224,136,99,.3)}.lg-dot{background:var(--accent-2);border-radius:50%}
/* day-drill */
.ag-back{background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:12px;padding:0 0 12px}.ag-back:hover{color:var(--accent)}
.ag-dhd{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
.ag-dday{font-family:var(--display);font-size:28px;color:var(--ink)}
.ag-ddow{font-size:12px;color:var(--ink-3)}
.ag-dstats{display:flex;gap:26px;margin-bottom:18px}
.ag-dstat .v{font-family:var(--display);font-size:20px;color:var(--ink);display:block}
.ag-dstat .v small{font-family:var(--sans);font-size:10px;color:var(--ink-4)}
.ag-dstat .k{font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.ag-dlh{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin:14px 0 6px}
.ag-drow{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink-2)}
.ag-dm{width:16px;text-align:center;color:var(--ink-3)}
.ag-dtag{margin-left:auto;font-size:10px;color:var(--ink-4)}

/* today strip with the active identity's card art as background */
.agt-in.hasbg{padding:18px 20px 16px !important;background-size:cover;background-position:center 30%;position:relative;overflow:hidden;clip-path:var(--chamfer)}
.agt-in.hasbg .agt-day{color:#fff !important;text-shadow:0 2px 12px rgba(0,0,0,.6)}
.agt-in.hasbg .agt-dow,.agt-in.hasbg .agt-v{color:#fff !important}
.agt-in.hasbg .agt-v small,.agt-in.hasbg .agt-l,.agt-in.hasbg .agt-barl{color:rgba(255,255,255,.72) !important}
.agt-in.hasbg .agt-now{color:var(--accent-2) !important}
.agt-in.hasbg .agt-bar{background:rgba(255,255,255,.2)}

/* identity card art as the whole Today section backdrop + larger calendar */
.ag-split.hasbg{background-size:cover;background-position:center}
.ag-split.hasbg .ag-tasks,.ag-split.hasbg .ag-cal{background:transparent}
.ag-split.hasbg .ag-cal{border-left:1px solid rgba(255,255,255,.12)}
.ag-split.hasbg .ag-cell{background:rgba(255,255,255,.05)}
.ag-split.hasbg .ag-cell.logged{background:rgba(127,191,151,.18)}
.ag-cal{flex:0 0 47% !important}
.ag-tasks{flex:1 !important}

/* ══════════════════════════════════════════════════════════════════════════
   COMMAND-BAR NAV (sub-tabs) + HEX RANK BADGE HUD — conformed to reference
   ══════════════════════════════════════════════════════════════════════════ */
/* sub-tab command bar — chamfered segmented frame w/ stacked-clip border */
.ov-viewtabs{gap:0 !important;border:none !important;clip-path:var(--chamfer);position:relative;display:inline-flex !important;width:auto !important;margin:0 !important;overflow:visible}
.ov-viewtabs::before{content:"";position:absolute;inset:0;background:var(--line-2);clip-path:var(--chamfer);pointer-events:none;z-index:0}
.ov-viewtabs::after{content:"";position:absolute;inset:1px;background:var(--void);clip-path:var(--chamfer);pointer-events:none;z-index:0}
.ov-viewtabs b{position:relative;z-index:1;font-family:var(--sans) !important;font-size:13.5px !important;font-weight:600 !important;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3) !important;padding:9px 22px !important;border:none !important;border-right:1px solid var(--line) !important;background:none !important;box-shadow:none !important;cursor:pointer;clip-path:none !important;transition:color .12s,background .12s}
.ov-viewtabs b:last-child{border-right:none !important}
.ov-viewtabs b:hover{background:rgba(45,212,191,.05) !important;color:var(--ink-2) !important}
.ov-viewtabs b.on{background:var(--accent-dim) !important;color:var(--accent-2) !important;box-shadow:inset 0 -2.5px 0 var(--accent) !important;text-shadow:none !important}
.ov-viewtabs b span{font-size:9px !important;margin-left:5px;color:var(--ink-4) !important;font-weight:400}

/* HEX RANK BADGE HUD (top-right) */
.topstat{display:flex !important;align-items:center;gap:14px !important;right:20px !important}
.ts-medal{width:46px;height:50px;position:relative;display:grid;place-items:center;flex:none;filter:drop-shadow(0 0 5px var(--accent-glow))}
.ts-medal::before{content:"";position:absolute;inset:0;background:var(--accent);clip-path:polygon(50% 0,100% 26%,100% 74%,50% 100%,0 74%,0 26%)}
.ts-medal::after{content:"";position:absolute;inset:2px;background:var(--void);clip-path:polygon(50% 0,100% 26%,100% 74%,50% 100%,0 74%,0 26%)}
.ts-medal b{position:relative;z-index:1;font-family:var(--display);font-size:20px;font-weight:500;color:var(--ink);line-height:1}
.ts-rankcol{display:flex;flex-direction:column;gap:6px}
.ts-tier .ts-rank{font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink);letter-spacing:.02em}
.ts-xpwrap{display:flex;align-items:center;gap:8px}
.ts-exp{width:120px;height:4px;background:var(--line-2);position:relative;overflow:visible;clip-path:polygon(0 0,100% 0,calc(100% - 3px) 100%,0 100%)}
.ts-exp i{position:absolute;left:0;top:0;bottom:0;background:var(--accent);box-shadow:0 0 6px var(--accent-glow)}
.ts-explab{font-family:var(--mono);font-size:9px;color:var(--ink-4);white-space:nowrap}
.ts-res{display:flex;gap:15px}
.ts-res span{font-family:var(--sans);font-size:9px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.02em;display:flex;align-items:baseline;gap:4px}
.ts-res b{font-family:var(--mono);font-size:13px;color:var(--ink);text-transform:none;font-weight:500}
.ts-res em{font-style:normal;color:var(--ink-3);font-size:9px}

/* ══ PLAN · QUESTS — check-left · quest icon · deadline counter (hbx- system) ══ */
.hbx-list.qt .hbx-row{grid-template-columns:34px 26px 1fr 92px}
.hbx-phase.q{color:var(--ink-3)}
.qx-dl{display:flex;flex-direction:column;align-items:flex-end;gap:2px;justify-self:end}
.qx-dl b{font-family:var(--display);font-size:21px;font-weight:500;color:var(--ink-2);line-height:1}
.qx-dl span{font-size:9px;color:var(--ink-4);text-transform:uppercase}
.qx-dl.soon b{color:var(--accent-2)}
.qx-dl.over b{color:var(--warn)}
/* quest detail edit fields */
.qd-edit{display:flex;flex-direction:column;gap:9px;margin-bottom:22px}
.qd-f{display:flex;align-items:center;justify-content:space-between;gap:10px}
.qd-f span{font-size:11px;color:var(--ink-3)}
.qd-f input,.qd-f select{background:rgba(45,212,191,.05);border:1px solid var(--line);color:var(--ink);font-family:var(--sans);font-size:12px;padding:7px 9px;outline:none}
.qd-f input:focus,.qd-f select:focus{border-color:var(--accent)}
.qd-closed{font-size:12px;color:var(--good);font-weight:600}

/* MAP tab — campaign DAG fills the panel */
.ov-map{height:100%;min-height:0;overflow:auto}
.ovmap-wrap{height:100%;min-height:0}

/* ══ PLAN · PROTOCOLS — minimal filter + protocols grouped by habit (hbx- system) ══ */
.px-wrap{padding:16px 24px 40px;overflow-y:auto;height:100%}
.px-filter{display:flex;gap:6px;margin-bottom:6px;flex-wrap:wrap}
.px-chip{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--ink-3);background:none;border:1px solid var(--line);padding:5px 12px;cursor:pointer;clip-path:var(--chamfer)}
.px-chip:hover{color:var(--ink-2);border-color:var(--line-2)}
.px-chip.on{color:var(--accent-2);background:var(--accent-dim);border-color:var(--accent)}
.px-ghead{display:flex;align-items:center;gap:9px;padding:18px 0 10px}
.px-ghead .hbx-phase{display:grid;place-items:center}
.px-ghead .hbx-phase .fic{width:18px;height:18px}
.px-gt{font-family:var(--sans);font-size:16px;font-weight:600;color:var(--ink)}
.px-gid{margin-left:8px;font-size:10px;color:var(--ink-4);text-transform:uppercase;letter-spacing:.06em}
.px-gn{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-4)}
.px-row{display:flex;align-items:center;gap:10px;padding:9px 0 9px 27px;border-bottom:1px solid var(--line)}
.px-pk{color:var(--accent-2);font-weight:700;flex:none}
.px-t{font-size:13.5px;color:var(--ink-2);flex:1}
.px-realm{font-size:10px;color:var(--ink-4);text-transform:uppercase;letter-spacing:.05em}

/* ══ STRATEGIST CHAT — green ONLINE · rounded bubbles · circular fixed send · auto-grow ══ */
.ovp-head{border-bottom:none !important;padding:14px 16px 8px !important;display:flex;align-items:center;min-height:0}
.ovp-online{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--good);background:none;border:none;cursor:pointer;padding:0}
.ovp-orb{width:11px;height:11px;border-radius:50%;background:var(--good);flex:none;animation:ovp-pulse 2.2s ease-in-out infinite}
@keyframes ovp-pulse{0%,100%{box-shadow:0 0 5px var(--good-glow);transform:scale(.9)}50%{box-shadow:0 0 15px 3px var(--good-glow);transform:scale(1.12)}}
.ovp-msgs{display:flex !important;flex-direction:column}
.ovp-msg{max-width:86%;font-family:var(--sans);font-size:13.5px;line-height:1.5;padding:10px 14px;border-radius:16px !important;display:inline-block;margin-bottom:10px;border:none !important}
.ovp-msg.ai{background:rgba(45,212,191,.12) !important;color:var(--ink) !important;border-bottom-left-radius:5px !important;align-self:flex-start}
.ovp-msg.user{background:var(--accent) !important;color:var(--ink-on-accent) !important;border-bottom-right-radius:5px !important;align-self:flex-end}
.ovp-bar{border-top:none !important;align-items:flex-end !important;gap:9px !important}
.ovp-bar textarea{border-radius:18px !important;overflow-y:hidden !important;min-height:42px !important;max-height:200px;font-family:var(--sans) !important}
.ovp-send{align-self:flex-end !important;width:42px !important;height:42px !important;flex:none;border-radius:50% !important;clip-path:none !important;display:grid !important;place-items:center;background:var(--accent) !important;color:var(--ink-on-accent) !important;border:none !important}
.ovp-send .fic{width:16px;height:16px}
.ovp-send:hover{background:var(--accent-2) !important}

/* ── identity filter → thin lit lines (no "All", no labels) ── */
.ov-idfilter{display:inline-flex !important;align-items:center;gap:9px !important;margin:0 !important}
.ov-idfilter .idf{width:2px !important;height:16px !important;border-radius:0 !important;padding:0 !important;border:none !important;opacity:.35;cursor:pointer;display:inline-block;transition:opacity .12s,height .12s;text-indent:-9999px;overflow:hidden}
.ov-idfilter .idf:hover{opacity:.7}
.ov-idfilter .idf.on{opacity:1;height:18px !important}
.ov-idfilter .idf .idf-dot{display:none}

/* ══ LIBRARY-STYLE CATEGORIES — collapsible group headers with summary stats ══ */
.hbx-ghead{display:flex !important;align-items:baseline;gap:10px;cursor:pointer;user-select:none}
.hbx-cav{color:var(--ink-4);font-size:9px;flex:none;transition:color .12s}
.hbx-gt{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-2)}
.hbx-ghead:hover .hbx-gt,.hbx-ghead:hover .hbx-cav{color:var(--ink)}
.hbx-gstats{font-family:var(--mono);font-size:11px;color:var(--ink-4);letter-spacing:0;text-transform:none;font-weight:400}
.hbx-grp.col .hbx-row{display:none}
.hbx-grp.col .hbx-ghead{padding-bottom:16px;border-bottom:1px solid var(--line)}

/* library collapse for protocols (px-) groups */
.px-ghead{cursor:pointer;user-select:none}
.px-ghead:hover .px-gt{color:var(--accent-2)}
.hbx-grp.col .px-row{display:none}

/* ══ IDENTITY PAGE — tab bar → angular command-bar (matches Plan nav) ══ */
.idtabs{gap:0 !important;border:none !important;clip-path:var(--chamfer);position:relative;display:inline-flex !important;width:auto !important;margin-bottom:18px}
.idtabs::before{content:"";position:absolute;inset:0;background:var(--line-2);clip-path:var(--chamfer);pointer-events:none;z-index:0}
.idtabs::after{content:"";position:absolute;inset:1px;background:var(--void);clip-path:var(--chamfer);pointer-events:none;z-index:0}
.idtab{position:relative;z-index:1;font-family:var(--sans) !important;font-size:12px !important;font-weight:600 !important;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3) !important;padding:8px 18px !important;border:none !important;border-right:1px solid var(--line) !important;background:none !important;box-shadow:none !important;cursor:pointer}
.idtab:last-child{border-right:none !important}
.idtab:hover{background:rgba(45,212,191,.05) !important;color:var(--ink-2) !important}
.idtab.on{background:var(--accent-dim) !important;color:var(--accent-2) !important;box-shadow:inset 0 -2.5px 0 var(--accent) !important}

/* ══ SIDEBAR RAIL — aligned to ui-reference (SVG icons · hex mark · chamfered active) ══ */
.sidebar{background:var(--void) !important;border-right:1px solid var(--line) !important;padding:14px 0 !important;gap:6px}
.sb-logo{width:26px !important;height:28px !important;border:none !important;border-radius:0 !important;clip-path:polygon(50% 0,100% 26%,100% 74%,50% 100%,0 74%,0 26%);background:var(--accent-dim) !important;color:var(--accent-2) !important;font-weight:700;font-size:12px;display:grid;place-items:center;margin-bottom:14px}
.sb-nav{gap:4px !important}
.sb-nav a{width:38px !important;height:38px !important;display:grid !important;place-items:center;color:var(--ink-4) !important;border-radius:8px;cursor:pointer;transition:color .12s,background .12s;font-size:15px;background:none}
.sb-nav a .fic{width:19px;height:19px}
.sb-nav a:hover{color:var(--ink-2) !important;background:rgba(45,212,191,.06) !important}
.sb-nav a.on{color:var(--accent-2) !important;background:var(--accent-dim) !important;clip-path:var(--chamfer)}
.sb-bot{gap:8px}
.sb-av,.prof-av.sb-av{width:28px !important;height:28px !important}
.sb-logout{color:var(--ink-4) !important;font-size:14px}
.sb-logout:hover{color:var(--ink-2) !important}

/* remove the redundant/illegible gold TODAY chip in the today strip */
.agt-now{display:none !important}

/* today cell — drop the overlapping TODAY label; clean accent ring */
.ag-tlab{display:none !important}
.ag-cell.today{box-shadow:inset 0 0 0 1.5px var(--accent) !important}

/* quest sprint XP reward */
.qx-xp{color:var(--accent-2);font-weight:600}

/* ══ HEADER ALIGNMENT — uniform nav tabs · HUD clears the bottom rule ══ */
/* command bar: every tab the same height + padding, centered */
.ov-viewtabs b{padding:0 20px !important;height:40px;display:inline-flex !important;align-items:center;line-height:1}
.ov-header{min-height:56px !important;align-items:center !important;padding-bottom:15px !important}
/* HUD compact + vertically centered so the resource row doesn't hit the header rule */
.topstat{top:12px !important;align-items:center}
.ts-medal{width:42px !important;height:46px !important}
.ts-medal b{font-size:18px !important}
.ts-rankcol{gap:5px !important}
.ts-exp{width:104px !important}
.ts-res{gap:13px !important}
.ts-res b{font-size:12px !important}

/* calendar — quest due-date marker */
.ag-cell{position:relative}
.ag-qdl{position:absolute;bottom:3px;left:3px;right:3px;font-family:var(--sans);font-size:8px;font-weight:600;color:var(--accent-2);background:var(--accent-dim);padding:1px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-cell.perfect .ag-qdl{background:rgba(0,0,0,.25);color:#fff}
/* Complete = win → green (Log-today stays accent) */
.hbx-dbtn.win{background:var(--good) !important;border-color:var(--good) !important;color:var(--surface) !important;box-shadow:0 5px 18px -7px var(--good-glow) !important}
.hbx-dbtn.win:hover{filter:brightness(1.08)}

/* ══ TODAY — compact quest rows (distinct from routine habits) + tighter spacing ══ */
.ag-qrow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);cursor:pointer}
.ag-qrow:hover{background:rgba(45,212,191,.04)}
.ag-qmark{width:18px;flex:none;display:grid;place-items:center}
.ag-qmark .fic{width:15px;height:15px}
.ag-qmark.break{color:var(--warn)}.ag-qmark.build{color:var(--accent-2)}.ag-qmark.maintain{color:var(--good)}
.ag-qname{flex:1;min-width:0;font-family:var(--sans);font-size:14px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-qleft{font-family:var(--mono);font-size:12px;color:var(--ink-4);flex:none}
.ag-qleft.soon{color:var(--accent-2)}.ag-qleft.over{color:var(--warn)}
.ag-grp.warn{color:var(--warn)}
.ag-grp{padding:14px 0 6px !important}
.ag-task{padding:9px 0 !important}

/* today priorities — remove button + add-picker */
.ag-qrm{margin-left:8px;background:none;border:none;color:var(--ink-4);font-size:16px;cursor:pointer;line-height:1;padding:0 2px;flex:none}
.ag-qrm:hover{color:var(--warn)}
.ag-pripick{border:1px solid var(--line);margin:4px 0 8px;max-height:240px;overflow-y:auto}
.ag-pripick-row{display:flex;align-items:center;gap:10px;padding:8px 10px;cursor:pointer;border-bottom:1px solid var(--line)}
.ag-pripick-row:last-child{border-bottom:0}
.ag-pripick-row:hover{background:var(--accent-dim)}

/* ══════════════════════════════════════════════════════════════════════════
   IDENTITY PAGE — conform header · tags · buttons · traits to the system
   ══════════════════════════════════════════════════════════════════════════ */
.id-title-name{font-family:var(--sans) !important;font-weight:700 !important;color:var(--ink);letter-spacing:-.01em}
.id-title-tag{font-family:var(--sans);letter-spacing:.14em;font-weight:600}
.id-title-out{color:var(--ink-3);font-family:var(--sans)}
.who-body{color:var(--ink-2);font-family:var(--sans)}
.id-tag{border-radius:0 !important;clip-path:var(--chamfer);font-family:var(--sans);font-size:11px;font-weight:600}
.id-photo-btn,.id-repos-btn,.id-repos-save,.id-repos-cancel{border-radius:0 !important;clip-path:var(--chamfer);font-family:var(--sans)}
.who-nav{border-radius:0 !important;background:rgba(0,0,0,.35);color:var(--ink)}
.sec-edit,.tt-edit{color:var(--ink-4);background:none;border:none}
.sec-edit:hover,.tt-edit:hover{color:var(--accent)}
.sec-head,.sec-h{font-family:var(--sans);color:var(--ink-2)}
/* traits pane */
.idtr-detail{border-color:var(--line)}
.idtr-empty{color:var(--ink-4);font-family:var(--sans)}
.id-traits,.idtr-list{font-family:var(--sans)}
/* identity segmented sub-tab labels already command-bar'd (cd108) */

/* ══════════════════════════════════════════════════════════════════════════
   IDENTITY · CAMPAIGN DAG + panes → system (visual only; positions untouched)
   ══════════════════════════════════════════════════════════════════════════ */
.cg-panelL-sec,.cg-panelR-sec,.cg-panelL h4,.cg-panelR h4{font-family:var(--sans) !important;color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:700}
/* quest cards on the canvas */
.cg-qcard{clip-path:var(--chamfer);background:var(--void-2) !important;border:1px solid var(--line) !important;border-radius:0 !important}
.cg-qt{font-family:var(--sans) !important;font-weight:600 !important;color:var(--ink)}
.cg-qc-sub,.cg-qc-metric,.cg-qeta{font-family:var(--sans)}
.cg-qc-metric b{font-family:var(--display)}
.cg-qc-tag,.cg-qc-rl{clip-path:var(--chamfer);font-family:var(--sans);font-size:10px;color:var(--ink-3)}
.cg-qc-evolve,.cg-mid-add,.cg-qc-reveal button{clip-path:var(--chamfer);font-family:var(--sans);border-radius:0 !important}
.cg-zoomtag{font-family:var(--mono);color:var(--ink-4)}
/* habit chips (left) */
.cg-hab,.cg-habitem,.cg-habrow{font-family:var(--sans)}
/* trait + outcome rows (right) */
.cg-trrow,.cg-orow,.cg-ritem{font-family:var(--sans)}
.cg-trnm,.cgp-t{color:var(--ink) !important;font-family:var(--sans)}
.cg-trlv{font-family:var(--mono);color:var(--ink-3)}
.cg-trbar{background:var(--line-2) !important;border-radius:0 !important}
.cg-trbar i{background:var(--accent) !important}
.cg-trchip{clip-path:var(--chamfer);font-family:var(--sans);color:var(--ink-3);border-radius:0 !important}
.cg-odot{color:var(--accent-2)}
.cgp-newrow,.cgp-empty{font-family:var(--sans);color:var(--ink-4)}
/* traits pane (idtr) rows */
.idtr-list,.id-traits,.st-node,.st-sec-h{font-family:var(--sans)}
.st-sec-h{color:var(--ink-2);letter-spacing:.06em}
.st-ev,.st-stage{font-family:var(--mono)}
.st-mini,.st-feat{clip-path:var(--chamfer);border-radius:0 !important;font-family:var(--sans)}
/* gap gauge */
.gap-track{background:var(--line-2) !important}
.gap-you,.gap-him,.gap-line{font-family:var(--sans)}

/* ══ IDENTITY · MOMENTUM card → system (chamfered, accent, pixel numeral) ══ */
.id-perf{border:1px solid var(--line) !important;background:var(--void-2) !important;clip-path:var(--chamfer);padding:15px 17px}
.idperf-h{font-family:var(--sans) !important;color:var(--ink-3) !important;letter-spacing:.14em;padding-left:11px}
.idperf-h::before{background:var(--accent) !important;box-shadow:0 0 6px var(--accent-glow);width:2.5px}
.idperf-v{font-family:var(--display) !important;font-size:30px !important;font-weight:500;line-height:1}
.idperf-cap{font-family:var(--sans) !important;color:var(--ink-4) !important}
.idperf-trend{font-weight:700}
.idperf-empty{font-family:var(--sans) !important;font-style:normal}

/* ══ IDENTITY · portrait placeholder + tone slot chip ══ */
.id-header .who-portrait{clip-path:var(--chamfer);border:1px solid var(--line) !important}
.who-portrait.no-photo{background:radial-gradient(120% 95% at 50% 0%, var(--pc,var(--accent)) -20%, var(--void-2) 62%) !important}
.id-mono{font-family:var(--display) !important;color:rgba(255,255,255,.85) !important}
.id-photo-btn,.id-repos-btn{clip-path:var(--chamfer)}
.cg-mid-add.locked{color:var(--ink-4) !important;background:rgba(255,255,255,.04) !important;border-color:var(--line) !important}

/* momentum card clears the fixed HUD (top-right) */
.id-perf{margin-top:58px !important;align-self:flex-start}

/* ══ WANTS tab — desires that quests climb toward ══ */
.wx-wrap{padding:16px 24px 40px;overflow-y:auto;height:100%}
.wx-intro{font-size:12.5px;color:var(--ink-3);margin-bottom:18px;max-width:660px;line-height:1.5}
.wx-card{border-left:2px solid var(--accent);background:rgba(45,212,191,.045);padding:13px 16px;margin-bottom:12px;clip-path:polygon(0 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%)}
.wx-h{display:flex;align-items:center;gap:10px}
.wx-star{color:var(--accent-2);font-size:13px}
.wx-t{font-family:var(--sans);font-size:17px;font-weight:600;color:var(--ink);flex:1;min-width:0}
.wx-n{font-family:var(--mono);font-size:11px;color:var(--ink-4)}
.wx-arch{background:none;border:none;color:var(--ink-4);font-size:16px;cursor:pointer;line-height:1;padding:0 2px}
.wx-arch:hover{color:var(--warn)}
.wx-feeders{margin-top:9px;padding-left:6px}
.wx-feed{display:flex;gap:9px;font-size:13.5px;color:var(--ink-2);padding:5px 0;cursor:pointer}
.wx-feed:hover{color:var(--ink)}
.wx-fk{color:var(--accent-2);flex:none}
.wx-none{margin-top:7px;font-size:12px;color:var(--ink-4)}

/* wants → traits connection */
.wx-sec{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);margin:12px 0 7px}
.wx-traits{display:flex;flex-wrap:wrap;gap:6px}
.wx-trait{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--good);border:1px solid rgba(127,191,151,.35);padding:3px 9px;clip-path:var(--chamfer)}

/* drag priorities → calendar to schedule */
.ag-qrow[draggable]{cursor:grab}
.ag-qrow.ag-dragging{opacity:.4}
.ag-cell.ag-drop{box-shadow:inset 0 0 0 2px var(--accent),0 0 14px -2px var(--accent-glow) !important;cursor:copy}

/* more breathing room below the top-right HUD stats */
.ov-header{min-height:70px !important;padding-bottom:20px !important}
.topstat{top:14px !important}

/* ══════════════════════════════════════════════════════════════════════════
   WANTS — game objective board · TRAITS tab · calendar activity dots
   ══════════════════════════════════════════════════════════════════════════ */
.wx-card{position:relative;background:linear-gradient(135deg,rgba(45,212,191,.07),rgba(11,12,14,0) 60%) !important;border:1px solid var(--line) !important;border-left:2px solid var(--accent) !important;clip-path:var(--chamfer);padding:16px 18px !important;margin-bottom:14px;transition:border-color .15s,box-shadow .15s}
.wx-card:hover{border-left-color:var(--accent-2) !important;box-shadow:0 0 26px -14px var(--accent-glow)}
.wx-card.wx-won{border-left-color:var(--good) !important}
.wx-top{display:flex;align-items:center;gap:12px}
.wx-emblem{color:var(--accent-2);font-size:16px;flex:none;filter:drop-shadow(0 0 6px var(--accent-glow))}
.wx-card.wx-won .wx-emblem{color:var(--good);filter:drop-shadow(0 0 6px var(--good-glow))}
.wx-tt{flex:1;min-width:0}
.wx-t{font-family:var(--sans);font-size:18px;font-weight:700;color:var(--ink);letter-spacing:-.01em;line-height:1.2}
.wx-meta{font-family:var(--mono);font-size:11px;color:var(--ink-4);margin-top:3px}
.wx-prog{display:flex;align-items:baseline;gap:2px;flex:none}
.wx-prog b{font-family:var(--display);font-size:26px;font-weight:500;color:var(--ink);line-height:1}
.wx-prog span{font-size:11px;color:var(--ink-4)}
.wx-card.wx-won .wx-prog b{color:var(--good)}
.wx-track{height:4px;background:var(--line-2);margin:13px 0 4px;position:relative;overflow:hidden}
.wx-track i{position:absolute;left:0;top:0;bottom:0;background:var(--accent);box-shadow:0 0 8px var(--accent-glow)}
.wx-card.wx-won .wx-track i{background:var(--good);box-shadow:0 0 8px var(--good-glow)}
.wx-arch{background:none;border:none;color:var(--ink-4);font-size:16px;cursor:pointer;line-height:1;padding:0 2px;flex:none}
.wx-arch:hover{color:var(--warn)}
/* TRAITS tab cards */
.tx-card{position:relative;background:linear-gradient(135deg,rgba(127,191,151,.06),rgba(11,12,14,0) 60%);border:1px solid var(--line);border-left:2px solid var(--good);clip-path:var(--chamfer);padding:14px 18px;margin-bottom:12px}
.tx-top{display:flex;align-items:center;gap:11px}
.tx-mark{color:var(--good);font-size:14px;filter:drop-shadow(0 0 5px var(--good-glow))}
.tx-t{flex:1;font-family:var(--sans);font-size:16px;font-weight:600;color:var(--ink)}
.tx-lv{display:flex;align-items:baseline;gap:3px}
.tx-lv b{font-family:var(--display);font-size:20px;font-weight:500;color:var(--good)}
.tx-lv span{font-size:9px;color:var(--ink-4);text-transform:uppercase}
.tx-track{height:4px;background:var(--line-2);margin:11px 0;position:relative;overflow:hidden}
.tx-track i{position:absolute;left:0;top:0;bottom:0;background:var(--good);box-shadow:0 0 8px var(--good-glow)}
.tx-qs{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tx-ql{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);margin-right:2px}
.tx-q{font-family:var(--sans);font-size:11px;color:var(--ink-3);border:1px solid var(--line);padding:3px 8px;clip-path:var(--chamfer)}
/* calendar activity dots */
.ag-dots{display:flex !important;gap:3px;position:absolute;top:20px;right:5px;max-width:46px;flex-wrap:wrap;justify-content:flex-end}
.ag-dots i{width:4px;height:4px;border-radius:50%;background:var(--good)}

/* TRAITS tab — two-column board: vices (left) · traits (right) */
.tx-wrap{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:18px 24px 40px;align-items:start;overflow-y:auto;height:100%}
.tx-col{min-width:0}
.tx-colh{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);padding-bottom:11px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.tx-colh span{color:var(--ink-4);font-weight:400;letter-spacing:.06em;text-transform:none;margin-left:5px}
.tx-colh-v{color:var(--warn)}
/* vice card — warn-toned, flame mark */
.tx-vice{background:linear-gradient(135deg,rgba(201,81,47,.06),rgba(11,12,14,0) 60%);border-left-color:var(--warn)}
.tx-vice .tx-lv b{color:var(--warn)}
.tx-vice .tx-track i{background:var(--warn);box-shadow:0 0 8px rgba(201,81,47,.5)}
.tx-flame{color:var(--warn) !important;filter:drop-shadow(0 0 5px rgba(201,81,47,.5)) !important;display:inline-flex;align-items:center}
.tx-ic{width:14px;height:14px}
@media(max-width:820px){.tx-wrap{grid-template-columns:1fr}}
.tx-qbreak{color:var(--warn);border-color:rgba(201,81,47,.4)}
/* Daily Rite row leading the Today list */
.ag-rite{cursor:pointer;border-left:2px solid var(--accent);background:linear-gradient(135deg,rgba(45,212,191,.06),rgba(11,12,14,0) 60%)}
.ag-rite:hover{background:linear-gradient(135deg,rgba(45,212,191,.11),rgba(11,12,14,0) 60%)}
.ag-rite .ag-fic.maintain{color:var(--accent)}
.ag-rvow{color:var(--ink-4);font-family:var(--mono);font-size:12px;font-weight:400}

/* ── face in the hex medal + level pip ── */
.ts-medal.has-face::after{background-image:var(--face);background-size:cover;background-position:center top;background-repeat:no-repeat}
.ts-medal.has-face b{display:none}
.ts-lvpip{display:none}
.ts-medal.has-face .ts-lvpip{position:absolute;z-index:2;right:-5px;bottom:-3px;min-width:15px;height:15px;padding:0 3px;display:grid;place-items:center;
  background:var(--accent);color:var(--void);font-family:var(--display);font-size:10px;font-weight:600;line-height:1;
  clip-path:polygon(50% 0,100% 26%,100% 74%,50% 100%,0 74%,0 26%);box-shadow:0 0 6px var(--accent-glow)}
/* ── more breathing room below the top-right HUD ── */
.ts-res{padding-bottom:10px}
.ov-chat{padding-top:88px !important}
@media(max-width:1180px){.ov-chat{padding-top:30px !important}}
/* ── Traits board → 3 columns (Vices · Virtues · Wants) ── */
.tx-wrap3{grid-template-columns:1fr 1fr 1fr}
@media(max-width:1100px){.tx-wrap3{grid-template-columns:1fr 1fr}}
@media(max-width:820px){.tx-wrap3{grid-template-columns:1fr}}
.tx-colh-w{color:var(--accent)}
.tx-want{background:linear-gradient(135deg,rgba(45,212,191,.06),rgba(11,12,14,0) 60%);border-left-color:var(--accent)}
.tx-want .tx-mark.tx-dia{color:var(--accent-2);filter:drop-shadow(0 0 5px var(--accent-glow))}
.tx-want .tx-lv b{color:var(--ink)}
.tx-want .tx-track i{background:var(--accent);box-shadow:0 0 8px var(--accent-glow)}
.tx-want.tx-won{border-left-color:var(--good)}
.tx-want.tx-won .tx-lv b,.tx-want.tx-won .tx-mark{color:var(--good)}
.tx-want.tx-won .tx-track i{background:var(--good);box-shadow:0 0 8px var(--good-glow)}
/* ── MAP: same design language — IBM Plex Sans headings, not Anton ── */
.cg-h-name,.cg-camp-name{font-family:var(--sans) !important;font-weight:700 !important;letter-spacing:-.01em !important}
.cg-camp.cg-active::before{box-shadow:inset 0 0 22px -8px var(--accent-glow)}
.cg-trait-pip{font-family:var(--mono) !important;font-weight:500 !important}

/* ── MAP: far-left VICES column (mirror of the right panel) + want/vice accents ── */
.cg-panelV{flex:0 0 210px;position:relative;z-index:2;padding:4px 16px 14px 0;border-right:1px solid rgba(255,255,255,.1);align-self:stretch;overflow-y:auto;min-width:0;max-width:230px}
.cg-sec-vice{color:var(--warn) !important}
.cg-sec-want{color:var(--accent) !important}
.cg-vrow{border-left:2px solid var(--warn);padding-left:9px}
.cg-vrow .cg-trnm{color:var(--ink)}
.cg-vlv{color:var(--warn) !important;font-family:var(--mono);font-size:9px;letter-spacing:.04em;white-space:nowrap}
.cg-vchip{color:var(--warn) !important;border-color:rgba(201,81,47,.4) !important}
.cg-orow .cg-odot{color:var(--accent-2)}
@media(max-width:1240px){.cg-panelV{flex:0 0 172px}}

/* ── MAP: WANTS as its own far-right column (mirror of panelR) ── */
.cg-panelW{flex:0 0 210px;position:relative;z-index:2;padding:4px 0 14px 18px;border-left:1px solid rgba(255,255,255,.1);align-self:stretch;overflow-y:auto;min-width:0;max-width:230px}
@media(max-width:1240px){.cg-panelW{flex:0 0 172px}}

/* ══ MAP REDESIGN — five list columns + chain connectors + click-to-filter ══ */
.cg-flowsvg{z-index:1 !important}
/* middle QUESTS column (replaces the free-drag canvas) */
.cg-panelQ{flex:1 1 auto;min-width:200px;position:relative;z-index:2;padding:4px 16px 14px 16px;align-self:stretch;overflow-y:auto;
  border-right:1px solid rgba(255,255,255,.1);border-left:1px solid rgba(255,255,255,.1)}
.cg-sec-quest{color:var(--ink-2) !important}
.cg-qrow{position:relative;display:flex;align-items:center;gap:9px;padding:9px 10px;margin-bottom:7px;cursor:pointer;
  background:linear-gradient(135deg,rgba(255,255,255,.03),rgba(11,12,14,0) 60%);border:1px solid var(--line);border-left:2px solid var(--line-2);clip-path:var(--chamfer);transition:border-color .13s,background .13s}
.cg-qrow:hover{border-left-color:var(--accent)}
.cg-qmark2{flex:none;width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-3)}
.cg-qmark2 .fic{width:14px;height:14px}
.cg-qmark2.forge-break{color:var(--warn)}.cg-qmark2.forge-build{color:var(--accent)}.cg-qmark2.forge-maintain{color:var(--good)}
.cg-qrow .cgp-t{flex:1;min-width:0;font-family:var(--sans);font-size:13px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cg-qeta2{flex:none;font-family:var(--mono);font-size:10px;color:var(--ink-4)}
/* node select / filter states */
.cg-flow .cg-dim{opacity:.2;filter:saturate(.35);transition:opacity .15s}
.cg-flow .cg-lit{opacity:1}
.cg-flow.cg-filtered .cg-ritem.cg-lit,.cg-flow.cg-filtered .cgp-hab.cg-lit .cgp-row{box-shadow:-2px 0 0 0 var(--accent) inset}
.cg-qrow.cg-lit{border-left-color:var(--accent);background:linear-gradient(135deg,rgba(45,212,191,.1),rgba(11,12,14,0) 60%)}

/* ══════════════════════════════════════════════════════════════════════════
   MAP — one unified card across all five columns (Vices·Habits·Quests·Virtues·Wants)
   ══════════════════════════════════════════════════════════════════════════ */
.cg-flow .cgp-hab,.cg-flow .cg-qrow,.cg-flow .cg-trrow,.cg-flow .cg-orow,.cg-flow .cg-vrow{
  background:linear-gradient(135deg,rgba(255,255,255,.032),rgba(11,12,14,0) 62%) !important;
  border:1px solid var(--line) !important;border-left:2px solid var(--line-2) !important;
  clip-path:var(--chamfer) !important;padding:9px 11px !important;margin:0 0 7px !important;box-shadow:none !important}
.cg-flow .cgp-hab{cursor:pointer}
.cg-flow .cgp-hab>.cgp-row{background:transparent !important;border:0 !important;padding:0 !important;margin:0 !important;display:flex;align-items:center;gap:8px}
/* per-column accent on the left edge */
.cg-panelV .cg-vrow{border-left-color:var(--warn) !important}
.cg-panelL .cgp-hab{border-left-color:var(--accent-2) !important}
.cg-panelQ .cg-qrow{border-left-color:var(--ink-3) !important}
.cg-panelR .cg-trrow{border-left-color:var(--good) !important}
.cg-panelW .cg-orow{border-left-color:var(--accent) !important}
/* one name type everywhere — IBM Plex Sans, sentence case (kills the Anton/disp all-caps mix) */
.cg-flow .cgp-t,.cg-flow .cg-trnm{font-family:var(--sans) !important;font-weight:600 !important;font-size:13px !important;letter-spacing:-.005em !important;text-transform:none !important;color:var(--ink) !important}
/* one meta type — IBM Plex Mono */
.cg-flow .cg-vlv,.cg-flow .cg-trlv,.cg-flow .cg-qeta2{font-family:var(--mono) !important;font-size:10px !important;letter-spacing:.02em !important;text-transform:none !important}
/* one column-header type */
.cg-flow .cgp-h,.cg-flow .cg-panelR-sec{font-family:var(--mono) !important;font-weight:600 !important;font-size:10px !important;letter-spacing:.14em !important;text-transform:uppercase !important;padding:10px 0 8px !important}
/* clean up: SVG lines carry the links now, so drop the stray nubs; calm the grip/archive */
.cg-flow .cgp-conn,.cg-flow .cg-conn-l{display:none !important}
.cg-flow .cgp-grip{opacity:.26;font-size:10px}
.cg-flow .cgp-arch{opacity:.34}
.cg-flow .cg-qmark2 .fic,.cg-flow .cg-trmark{opacity:.9}
/* muted sub-lines: protocols, locked/bag/archived rows → mono, quiet */
.cg-flow .cgp-drilhead{font-family:var(--mono) !important;font-size:10px !important;color:var(--ink-4) !important;padding:7px 0 1px 2px !important;text-transform:none !important;letter-spacing:.01em}
.cg-flow .cgp-newrow,.cg-flow .cgp-arch-tog,.cg-flow .cgp-cap{font-family:var(--mono) !important;font-size:10px !important;letter-spacing:.04em !important;text-transform:none !important}
.cg-flow .cgp-newrow.locked{opacity:.6}
/* trait/vice chips → unified chip */
.cg-flow .cg-trchip{font-family:var(--mono) !important;font-size:9.5px !important;text-transform:none !important;letter-spacing:0 !important;color:var(--ink-3) !important;border:1px solid var(--line) !important;padding:2px 7px !important;background:transparent !important}
.cg-flow .cg-vchip{color:var(--warn) !important;border-color:rgba(201,81,47,.4) !important}

/* MAP — even column widths (Quests no longer balloons) + wrap long titles + dim completed quests */
.cg-panelQ{flex:0 0 340px !important}
.cg-panelQ .cg-qrow{align-items:flex-start}
.cg-panelQ .cg-qrow .cgp-t{white-space:normal !important;line-height:1.28}
.cg-panelQ .cg-qmark2,.cg-panelQ .cg-qeta2{margin-top:1px}
.cg-qrow.cg-qdone{opacity:.5}
.cg-qrow.cg-qdone .cg-qeta2{color:var(--good) !important}

/* ══ MAP — "Trace the Thread": calm default, ignite one causal chain on click ══ */
@keyframes cgflow{to{stroke-dashoffset:-140}}
.cg-fp{stroke-dasharray:5 9;stroke-linecap:round;animation:cgflow 1s linear infinite;filter:drop-shadow(0 0 3px rgba(45,212,191,.5))}
/* dramatic recede — unrelated sinks to near-black; the thread stays vivid */
.cg-flow.cg-filtered .cg-dim{opacity:.09 !important;filter:grayscale(.7) !important;transition:opacity .18s,filter .18s}
.cg-flow.cg-filtered .cg-lit{opacity:1 !important;filter:none !important}
.cg-flow.cg-filtered .cgp-hab.cg-lit,.cg-flow.cg-filtered .cg-ritem.cg-lit{box-shadow:0 0 22px -8px var(--accent-glow) !important}
.cg-flow.cg-filtered .cg-qrow.cg-lit{background:linear-gradient(135deg,rgba(45,212,191,.14),rgba(11,12,14,0) 60%) !important}
/* trace hint — floats at the bottom, fades out once a thread is pulled */
.cg-tracehint{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:5;pointer-events:none;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--ink-4);
  background:rgba(10,11,13,.7);border:1px solid var(--line);padding:6px 14px;clip-path:var(--chamfer);
  opacity:.8;transition:opacity .2s}
.cg-flow.cg-filtered .cg-tracehint{opacity:0}

/* ══ MAP — identity bucket chips (row above the columns) ══ */
.ovmap-wrap{flex-direction:column !important}
.cg-buckets{flex:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:2px 2px 12px;margin-bottom:6px;border-bottom:1px solid var(--line)}
.cg-bkt-lab{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin-right:3px}
.cg-bkt{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink-3);cursor:pointer;padding:5px 12px;border:1px solid var(--line);clip-path:var(--chamfer);background:transparent;transition:color .13s,border-color .13s,background .13s}
.cg-bkt:hover{color:var(--ink);border-color:var(--line-2)}
.cg-bkt.on{color:var(--ink);border-color:var(--bkc,var(--accent));background:color-mix(in srgb,var(--bkc,var(--accent)) 13%,transparent)}
.cg-bkt-dot{width:7px;height:7px;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:var(--bkc,var(--accent));opacity:.9;flex:none}
.cg-bkt[data-bkt="all"] .cg-bkt-dot{display:none}

/* ── tab bar split: Today·Map | gap | Habits·Quests·Protocols·Traits·Wants ── */
.ov-tabgap{width:1px;height:18px;background:var(--line-2);margin:0 10px;align-self:center;flex:none}
/* ── inline composer (replaces browser prompt popups) ── */
.inlpop{position:fixed;z-index:9000;background:var(--panel,#14161a);border:1px solid var(--accent);border-left:2px solid var(--accent);clip-path:var(--chamfer);padding:9px;box-shadow:0 14px 44px -14px rgba(0,0,0,.75);min-width:250px}
.inlpop-row{display:flex;gap:6px;align-items:center}
.inlpop-in{flex:1;min-width:0;background:var(--void,#0b0c0e);border:1px solid var(--line);color:var(--ink);font-family:var(--sans);font-size:13px;padding:8px 10px;outline:none;clip-path:var(--chamfer)}
.inlpop-in::placeholder{color:var(--ink-4)}
.inlpop-in:focus{border-color:var(--accent)}
.inlpop-go{flex:none;background:var(--accent);color:var(--void,#0b0c0e);border:0;font-family:var(--sans);font-weight:700;font-size:12px;padding:8px 13px;cursor:pointer;clip-path:var(--chamfer);white-space:nowrap}
.inlpop-go:hover{background:var(--accent-2)}
.inlpop-tg{display:flex;gap:6px;margin-top:7px}
.inlpop-tgb{flex:1;text-align:center;font-family:var(--mono);font-size:10px;letter-spacing:.03em;color:var(--ink-4);border:1px solid var(--line);padding:6px 8px;cursor:pointer;clip-path:var(--chamfer)}
.inlpop-tgb.on{color:var(--ink);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}

/* ── MAP trait/vice cards tinted by their realm's spectrum colour ── */
.cg-flow .cg-panelR .cg-trrow,.cg-flow .cg-panelV .cg-vrow{border-left:2px solid var(--rc,var(--good)) !important}
.cg-flow .cg-trrow .cg-trbar i{background:var(--rc,var(--good)) !important;box-shadow:0 0 8px -2px var(--rc,var(--good))}
.cg-flow .cg-panelR .cg-trrow .cg-trlv{color:var(--rc,var(--ink-3)) !important}
.cg-flow .cg-vrow .cg-trnm{color:var(--rc,var(--ink)) !important}

/* reorderable plan tabs (2nd group) */
.ov-viewtabs b[draggable="true"]{cursor:grab}
.ov-viewtabs b[draggable="true"]:active{cursor:grabbing}
.ov-viewtabs b.tab-dragging{opacity:.45;background:var(--accent-dim) !important}

/* two separate tab pills: [Today · Map]  |  [Habits · Quests · Protocols · Traits · Wants] */
.ov-viewtabs{gap:16px !important;background:none !important;overflow:visible}
.ov-viewtabs::before,.ov-viewtabs::after{display:none !important}
.ov-tgroup{position:relative;display:inline-flex;clip-path:var(--chamfer)}
.ov-tgroup::before{content:"";position:absolute;inset:0;background:var(--line-2);clip-path:var(--chamfer);pointer-events:none;z-index:0}
.ov-tgroup::after{content:"";position:absolute;inset:1px;background:var(--void);clip-path:var(--chamfer);pointer-events:none;z-index:0}
.ov-tgroup b:last-child{border-right:none !important}

/* ══════════════════════════════════════════════════════════════════════════
   WANTS — desire tree (hierarchy · drag reorder/nest) + detail pane (why · journal)
   ══════════════════════════════════════════════════════════════════════════ */
.wx-wrap2{display:flex;gap:22px;height:100%;padding:18px 20px 28px;overflow:hidden}
.wx-tree{flex:0 0 42%;max-width:460px;overflow-y:auto;padding-right:6px}
.wx-detail{flex:1;min-width:0;overflow-y:auto;border-left:1px solid var(--line);padding-left:24px}
.wx-node{position:relative;display:flex;align-items:center;gap:9px;padding:9px 11px;margin-bottom:6px;cursor:pointer;background:linear-gradient(135deg,rgba(45,212,191,.05),rgba(11,12,14,0) 60%);border:1px solid var(--line);border-left:2px solid var(--accent);clip-path:var(--chamfer);transition:border-color .12s,background .12s}
.wx-node:hover{border-left-color:var(--accent-2)}
.wx-node.wx-sel{background:linear-gradient(135deg,rgba(45,212,191,.15),rgba(11,12,14,0) 60%);border-color:var(--accent)}
.wx-node.wx-won{border-left-color:var(--good)}
.wx-big .wx-nt{font-size:15px;font-weight:700}
.wx-small{padding:7px 11px}
.wx-small .wx-nt{font-size:13px;font-weight:600;color:var(--ink-2)}
.wx-caret{flex:none;width:14px;text-align:center;font-size:10px;color:var(--ink-3)}
.wx-caret.wx-none-c{color:var(--accent-2);font-size:8px}
.wx-nt{flex:1;min-width:0;font-family:var(--sans);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wx-nsub{flex:none;font-family:var(--mono);font-size:9px;color:var(--ink-4);border:1px solid var(--line);padding:1px 5px}
.wx-nbar{flex:0 0 54px;height:3px;background:var(--line-2);position:relative;overflow:hidden}
.wx-nbar i{position:absolute;inset:0 auto 0 0;background:var(--accent);box-shadow:0 0 6px var(--accent-glow)}
.wx-won .wx-nbar i{background:var(--good)}
.wx-npct{flex:none;font-family:var(--display);font-size:13px;color:var(--ink-2);min-width:34px;text-align:right}
.wx-node.wx-dragging{opacity:.4}
.wx-node.wx-nest{box-shadow:inset 0 0 0 1.5px var(--accent)}
.wx-node.wx-before{box-shadow:0 -2px 0 var(--accent)}
.wx-dempty{color:var(--ink-4);font-family:var(--sans);font-size:14px;line-height:1.8;text-align:center;padding-top:70px}
.wx-dhead{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.wx-dtitle{flex:1;font-family:var(--sans);font-size:22px;font-weight:700;color:var(--ink);cursor:text;line-height:1.15}
.wx-dprog{display:flex;align-items:baseline;gap:2px}
.wx-dprog b{font-family:var(--display);font-size:26px;color:var(--accent)}
.wx-dprog span{font-size:11px;color:var(--ink-4)}
.wx-darch{background:none;border:none;color:var(--ink-4);font-size:18px;cursor:pointer;line-height:1}
.wx-darch:hover{color:var(--warn)}
.wx-dbar{height:4px;background:var(--line-2);position:relative;overflow:hidden;margin-bottom:6px}
.wx-dbar i{position:absolute;inset:0 auto 0 0;background:var(--accent);box-shadow:0 0 8px var(--accent-glow)}
.wx-dlab{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin:16px 0 8px}
.wx-dnote{width:100%;min-height:68px;background:rgba(255,255,255,.02);border:1px solid var(--line);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.6;padding:11px 13px;resize:vertical;outline:none}
.wx-dnote:focus{border-color:var(--accent)}
.wx-dsubadd{font-family:var(--mono);font-size:11px;color:var(--ink-3);border:1px dashed var(--line);padding:8px 12px;cursor:pointer;text-align:center}
.wx-dsubadd:hover{color:var(--accent);border-color:var(--accent)}
.wx-jadd{display:flex;gap:8px;margin-bottom:10px}
.wx-jin{flex:1;background:rgba(255,255,255,.02);border:1px solid var(--line);color:var(--ink);font-family:var(--sans);font-size:13px;padding:9px 12px;outline:none}
.wx-jin:focus{border-color:var(--accent)}
.wx-jgo{flex:none;background:var(--accent);color:var(--void);border:0;font-family:var(--sans);font-weight:700;font-size:12px;padding:0 16px;cursor:pointer}
.wx-jrow{display:flex;align-items:baseline;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.wx-jdate{flex:none;font-family:var(--mono);font-size:10px;color:var(--accent-2);min-width:46px}
.wx-jtext{flex:1;font-family:var(--sans);font-size:13px;color:var(--ink-2);line-height:1.5}
.wx-jx{flex:none;background:none;border:none;color:var(--ink-4);cursor:pointer;font-size:14px;line-height:1}
.wx-jx:hover{color:var(--warn)}
@media(max-width:1000px){.wx-wrap2{flex-direction:column;overflow-y:auto}.wx-tree{flex:none;max-width:none}.wx-detail{border-left:none;border-top:1px solid var(--line);padding-left:0;padding-top:16px}}

/* Wants — realm categories */
.wx-cat{display:flex;align-items:center;gap:8px;margin:18px 0 9px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.wx-cat:first-child{margin-top:2px}
.wx-cat-dot{width:8px;height:8px;flex:none;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:var(--rc)}
.wx-cat-nm{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--rc);font-weight:600}
.wx-cat-n{font-family:var(--mono);font-size:10px;color:var(--ink-4)}
.wx-cat-add{margin-left:auto;background:none;border:1px solid var(--line);color:var(--ink-3);width:20px;height:20px;line-height:1;cursor:pointer;clip-path:var(--chamfer);font-size:12px}
.wx-cat-add:hover{color:var(--rc);border-color:var(--rc)}
.wx-node{border-left-color:var(--rc,var(--accent)) !important}
.wx-realms{display:flex;flex-wrap:wrap;gap:6px}
.wx-realm{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);border:1px solid var(--line);padding:5px 9px;cursor:pointer;clip-path:var(--chamfer);transition:color .12s,border-color .12s}
.wx-realm:hover{color:var(--ink-2)}
.wx-realm.on{color:var(--rc);border-color:var(--rc);background:color-mix(in srgb,var(--rc) 13%,transparent)}

/* Wants — big aspirational cards for top-level desires */
.wx-node.wx-big{display:block;padding:15px 17px;margin-bottom:10px;background:linear-gradient(135deg,color-mix(in srgb,var(--rc) 10%,transparent),rgba(11,12,14,0) 62%);border:1px solid var(--line);border-left:3px solid var(--rc) !important;clip-path:var(--chamfer);cursor:pointer;transition:border-color .13s,box-shadow .13s}
.wx-node.wx-big:hover{box-shadow:0 0 28px -12px var(--rc)}
.wx-node.wx-big.wx-sel{box-shadow:0 0 34px -8px var(--rc);border-color:var(--rc)}
.wx-btop{display:flex;align-items:center;gap:11px}
.wx-bemblem{flex:none;color:var(--rc);font-size:16px;filter:drop-shadow(0 0 6px var(--rc))}
.wx-bt{flex:1;min-width:0;font-family:var(--sans);font-size:18px;font-weight:700;color:var(--ink);letter-spacing:-.01em;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wx-big .wx-caret{flex:none;color:var(--ink-4);font-size:11px;cursor:pointer}
.wx-bpct{display:flex;align-items:baseline;gap:2px;flex:none}
.wx-bpct b{font-family:var(--display);font-size:26px;font-weight:500;color:var(--ink);line-height:1}
.wx-bpct span{font-size:11px;color:var(--ink-4)}
.wx-node.wx-big.wx-won{border-left-color:var(--good) !important}
.wx-node.wx-big.wx-won .wx-bpct b,.wx-node.wx-big.wx-won .wx-bemblem{color:var(--good)}
.wx-bbar{height:5px;background:var(--line-2);position:relative;overflow:hidden;margin:12px 0 8px}
.wx-bbar i{position:absolute;inset:0 auto 0 0;background:var(--rc);box-shadow:0 0 10px var(--rc)}
.wx-node.wx-big.wx-won .wx-bbar i{background:var(--good)}
.wx-bmeta{font-family:var(--mono);font-size:11px;color:var(--ink-4)}
.wx-subwrap{margin:-2px 0 12px 16px;border-left:1px solid var(--line);padding-left:10px}

/* Wants — faded vision image behind big cards */
.wx-node.wx-big{position:relative;overflow:hidden}
.wx-node.wx-big.wx-hasimg{padding:18px;min-height:120px}
.wx-bimg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.34;z-index:0;pointer-events:none;transition:opacity .2s}
.wx-node.wx-big.wx-hasimg:hover .wx-bimg{opacity:.46}
.wx-bfade{position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(120deg,rgba(11,12,14,.84),rgba(11,12,14,.36) 58%,rgba(11,12,14,.66))}
.wx-node.wx-big>.wx-btop,.wx-node.wx-big>.wx-bbar,.wx-node.wx-big>.wx-bmeta{position:relative;z-index:1}
.wx-hasimg .wx-bt{text-shadow:0 1px 8px rgba(0,0,0,.8)}
.wx-hasimg .wx-bmeta{color:var(--ink-2)}
.wx-dimg{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.wx-dimg-prev{width:100%;height:130px;background-size:cover;background-position:center;clip-path:var(--chamfer);border:1px solid var(--line);margin-bottom:4px}
.wx-imgbtn{font-family:var(--mono);font-size:11px;color:var(--ink-3);border:1px dashed var(--line);padding:8px 14px;cursor:pointer;clip-path:var(--chamfer)}
.wx-imgbtn:hover{color:var(--accent);border-color:var(--accent)}
.wx-imgrm{background:none;border:1px solid var(--line);color:var(--ink-4);font-family:var(--mono);font-size:11px;padding:8px 12px;cursor:pointer;clip-path:var(--chamfer)}
.wx-imgrm:hover{color:var(--warn);border-color:var(--warn)}

/* Wants — 50/50 tree|detail + image on any card */
.wx-tree{flex:1 1 0 !important;max-width:none !important}
.wx-detail{flex:1 1 0 !important}
.wx-node.wx-small{position:relative;overflow:hidden}
.wx-node.wx-hasimg>*:not(.wx-bimg):not(.wx-bfade):not(.wx-bimgctl):not(.wx-bframe){position:relative;z-index:1}
.wx-small.wx-hasimg .wx-nt{text-shadow:0 1px 6px rgba(0,0,0,.78)}

/* Wants — compose-in-place card (WYSIWYG create) + ghost add */
.wx-addbtn{display:flex;align-items:center;justify-content:center;gap:6px;padding:13px;margin-top:4px;border:1px dashed var(--line);color:var(--ink-3);font-family:var(--sans);font-size:13px;font-weight:600;cursor:pointer;clip-path:var(--chamfer);transition:color .12s,border-color .12s}
.wx-addbtn:hover{color:var(--accent);border-color:var(--accent)}
.wx-composec{border-style:dashed !important;box-shadow:0 0 30px -12px var(--rc)}
.wx-composec .wx-btop{position:relative;z-index:1}
.wx-cin{flex:1;min-width:0;background:none;border:none;outline:none;font-family:var(--sans);font-size:18px;font-weight:700;color:var(--ink);padding:0;text-shadow:0 1px 8px rgba(0,0,0,.7)}
.wx-cin::placeholder{color:var(--ink-4);font-weight:600}
.wx-crow{display:flex;align-items:center;gap:10px;margin-top:14px;position:relative;z-index:1}
.wx-cdots{display:flex;gap:6px}
.wx-cdot{width:15px;height:15px;flex:none;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:var(--rc);opacity:.4;cursor:pointer;transition:opacity .12s,transform .12s}
.wx-cdot:hover{opacity:.8}
.wx-cdot.on{opacity:1;transform:scale(1.18);box-shadow:0 0 8px var(--rc)}
.wx-cimgbtn{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);color:var(--ink-3);cursor:pointer;clip-path:var(--chamfer);font-size:13px}
.wx-cimgbtn:hover{color:var(--accent);border-color:var(--accent)}
.wx-cspace{flex:1}
.wx-cgo{background:var(--accent);color:var(--void);border:0;font-family:var(--sans);font-weight:700;font-size:12px;padding:8px 16px;cursor:pointer;clip-path:var(--chamfer)}
.wx-cx{background:none;border:1px solid var(--line);color:var(--ink-4);font-family:var(--mono);font-size:11px;padding:8px 11px;cursor:pointer;clip-path:var(--chamfer)}
.wx-cx:hover{color:var(--ink-2)}

/* Wants — list backdrop image + toolbar */
.wx-tree.has-bg{background-size:cover;background-position:center;background-repeat:no-repeat;background-attachment:local}
.wx-toolbar{display:flex;gap:8px;margin-bottom:14px;align-items:center}
.wx-bgbtn{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--accent);border:1px solid var(--accent);background:var(--accent-dim);padding:8px 14px;cursor:pointer;clip-path:var(--chamfer)}
.wx-bgbtn:hover{background:color-mix(in srgb,var(--accent) 22%,transparent)}
.wx-bgrm{background:none;border:1px solid var(--line);color:var(--ink-3);font-family:var(--mono);font-size:11px;padding:8px 11px;cursor:pointer;clip-path:var(--chamfer)}
.wx-bgrm:hover{color:var(--warn);border-color:var(--warn)}

/* Wants — clean button corners (chamfer was cutting the border edge) + reframe */
.wx-bgbtn,.wx-bgrm,.wx-imgbtn,.wx-imgrm,.wx-jgo,.wx-realm,.wx-cgo,.wx-cx,.wx-cimgbtn,.wx-dsubadd,.wx-cat-add,.wx-jin,.wx-dnote,.wx-dimg-prev{clip-path:none !important;border-radius:3px}
.wx-dimg-prev{cursor:grab;user-select:none}
.wx-dimg-prev.wx-framing{cursor:grabbing;box-shadow:0 0 0 1px var(--accent)}
.wx-framehint{font-family:var(--mono);font-size:9px;color:var(--ink-4);text-transform:none;letter-spacing:0;margin-left:4px}

/* Wants — inline-editable detail title (edit in place, no popup) */
input.wx-dtitle{flex:1;min-width:0;background:none;border:none;outline:none;font-family:var(--sans);font-size:22px;font-weight:700;color:var(--ink);padding:2px 0;border-bottom:1px solid transparent;line-height:1.15;letter-spacing:-.01em}
input.wx-dtitle::placeholder{color:var(--ink-4)}
input.wx-dtitle:hover{border-bottom-color:var(--line)}
input.wx-dtitle:focus{border-bottom-color:var(--accent)}
/* universal rename/create popup — clean corners, consistent everywhere */
.inlpop{clip-path:none !important;border-radius:6px;border:1px solid var(--line-2) !important;border-left:2px solid var(--accent) !important;padding:9px !important}
.inlpop-in,.inlpop-go,.inlpop-tgb{clip-path:none !important;border-radius:4px}

/* universal edit-in-place titles (habits · quests · traits · wants) */
[data-ie]{cursor:text;border-bottom:1px solid transparent;transition:border-color .12s}
[data-ie]:hover{border-bottom-color:var(--line-2)}
.ie-input{width:100%;min-width:60px;background:none;border:none;outline:none;font:inherit;color:inherit;letter-spacing:inherit;padding:0}

/* Wants — connect traits to a want */
.wx-tconn{border-color:var(--rc,var(--accent)) !important;color:var(--ink-2)}
.wx-tconn b{color:var(--ink-4);margin-left:3px;cursor:pointer;font-weight:400}
.wx-tconn:hover b{color:var(--warn)}
.wx-tvia{opacity:.55;border-style:dashed !important}
.wx-tconnect{font-family:var(--mono);font-size:10px;color:var(--accent);border:1px dashed var(--accent);background:none;padding:4px 10px;cursor:pointer;border-radius:3px}
.wx-tconnect.on{background:var(--accent-dim)}
.wx-tpick{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;padding:10px;border:1px solid var(--line);border-radius:4px;background:rgba(255,255,255,.02)}
.wx-tpickitem{font-family:var(--sans);font-size:12px;color:var(--ink-2);border:1px solid var(--line);border-left:2px solid var(--rc,var(--accent));padding:5px 10px;cursor:pointer;border-radius:3px;transition:background .12s,color .12s}
.wx-tpickitem:hover{background:color-mix(in srgb,var(--rc) 15%,transparent);color:var(--ink)}

/* Wants — seamless inline sub-want add + list */
.wx-sublist{display:flex;flex-direction:column;gap:5px;margin-bottom:8px}
.wx-subrow{display:flex;align-items:center;gap:8px;font-family:var(--sans);font-size:13px;color:var(--ink-2);padding:6px 9px;border:1px solid var(--line);border-left:2px solid var(--accent-2);cursor:pointer;border-radius:3px}
.wx-subrow:hover{color:var(--ink);border-left-color:var(--accent)}
.wx-subdot{color:var(--accent-2);font-size:10px;flex:none}
.wx-subaddrow{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:3px;padding:0 10px}
.wx-subaddrow:focus-within{border-color:var(--accent)}
.wx-subplus{color:var(--ink-4);font-size:13px;flex:none}
.wx-subin{flex:1;min-width:0;background:none;border:none;outline:none;font-family:var(--sans);font-size:13px;color:var(--ink);padding:10px 0}
.wx-subin::placeholder{color:var(--ink-4)}
/* in-app confirm dialog (replaces browser confirm) */
.uiconf-ov{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;background:rgba(6,7,9,.68)}
.uiconf{background:var(--panel,#14161a);border:1px solid var(--line-2);border-left:2px solid var(--accent);border-radius:8px;padding:22px 24px;max-width:360px;box-shadow:0 24px 60px -18px rgba(0,0,0,.85)}
.uiconf-ov.danger .uiconf{border-left-color:var(--warn)}
.uiconf-msg{font-family:var(--sans);font-size:15px;color:var(--ink);line-height:1.5;margin-bottom:20px}
.uiconf-act{display:flex;gap:10px;justify-content:flex-end}
.uiconf-no{background:none;border:1px solid var(--line);color:var(--ink-2);font-family:var(--sans);font-size:13px;font-weight:600;padding:9px 16px;cursor:pointer;border-radius:4px}
.uiconf-no:hover{color:var(--ink);border-color:var(--line-2)}
.uiconf-yes{background:var(--accent);color:var(--void);border:0;font-family:var(--sans);font-size:13px;font-weight:700;padding:9px 18px;cursor:pointer;border-radius:4px}
.uiconf-ov.danger .uiconf-yes{background:var(--warn);color:#fff}
.uiconf-yes:hover{filter:brightness(1.08)}

/* Wants — wrapping auto-grow title (long aspirational statements, accepts Return) */
textarea.wx-dtitle{flex:1;min-width:0;background:none;border:none;outline:none;font-family:var(--sans);font-size:22px;font-weight:700;color:var(--ink);padding:2px 0;border-bottom:1px solid transparent;line-height:1.22;letter-spacing:-.01em;resize:none;field-sizing:content;overflow:hidden;min-height:30px}
textarea.wx-dtitle::placeholder{color:var(--ink-4)}
textarea.wx-dtitle:hover{border-bottom-color:var(--line)}
textarea.wx-dtitle:focus{border-bottom-color:var(--accent)}

/* ── Today: legible numerals (Pixelify was unreadable) + clean priorities + inline add ── */
.agt-day{font-family:var(--mono);font-weight:600;font-size:30px;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink);line-height:1}
.agt-v{font-family:var(--mono);font-weight:600;font-size:23px;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--ink);line-height:1}
.agt-v small{font-family:var(--sans);font-weight:500;font-size:11px;color:var(--ink-4)}
/* sub-hint under a section header — explains how a control works */
.ag-subhint{font-size:10.5px;line-height:1.4;color:var(--ink-4);margin:-2px 0 9px}
/* "done" pill inside the Priorities header while choosing */
.ag-grp .ag-grpx{margin-left:8px;font-family:var(--sans);font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-2);background:none;border:1px solid var(--line-2);padding:2px 8px;border-radius:2px;cursor:pointer;vertical-align:middle}
.ag-grp .ag-grpx:hover{border-color:var(--accent);color:var(--accent)}
/* priority picker rows — obvious "+" affordance */
.ag-pripick-row{position:relative}
.ag-pripick-add{margin-left:auto;color:var(--accent-2);font-size:15px;font-weight:500;padding-left:10px}
.ag-pripick-row:hover .ag-pripick-add{color:var(--accent)}
/* ghost variant of the add-link (swap when priorities full) */
.ag-add.ghost{opacity:.6}
.ag-add.ghost:hover{opacity:1}
/* inline "add to today" compose — replaces the browser prompt */
.ag-addform{display:flex;align-items:stretch;gap:6px;margin-top:8px}
.ag-addin{flex:1;min-width:0;background:var(--void-2,#111214);border:1px solid var(--line-2);border-radius:3px;outline:none;color:var(--ink);font-family:var(--sans);font-size:13px;padding:8px 10px}
.ag-addin::placeholder{color:var(--ink-4)}
.ag-addin:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-glow)}
.ag-addgo,.ag-addx{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;border-radius:3px;padding:0 12px;cursor:pointer}
.ag-addgo{background:var(--accent);border:1px solid var(--accent);color:#08110F}
.ag-addgo:hover{background:var(--accent-2);border-color:var(--accent-2)}
.ag-addx{background:none;border:1px solid var(--line-2);color:var(--ink-3)}
.ag-addx:hover{border-color:var(--line);color:var(--ink-2)}

/* ── Wants: fluid drag — grey 6-dot grip handle, live item movement ── */
.wx-item{display:block}
.wx-grip{flex:0 0 auto;color:var(--ink-4);cursor:grab;font-size:14px;line-height:1;padding:2px 4px;margin-left:-4px;margin-right:1px;border-radius:3px;user-select:none;-webkit-user-select:none;transition:color .12s,background .12s}
.wx-grip:hover{color:var(--ink-2);background:rgba(255,255,255,.06)}
.wx-grip:active{cursor:grabbing;color:var(--accent-2)}
.wx-node.wx-small>.wx-grip{margin-left:0}
.wx-item.wx-dragging{opacity:.4;pointer-events:none}
body.wx-dragging-body{cursor:grabbing;user-select:none;-webkit-user-select:none}
.wx-item{transition:transform .12s ease}
.wx-item.wx-dragging>.wx-node{box-shadow:0 0 0 1px var(--accent)}
.wx-item.wx-nesttarget>.wx-node{box-shadow:inset 0 0 0 1.5px var(--accent),0 0 20px -6px var(--accent-glow)}

/* ── Traits tab: legible numerals · realm-spectrum virtues · 6-stage mastery meter ── */
.tx-lv b{font-family:var(--mono);font-weight:600;font-size:19px;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--ink)}
.tx-lv span{font-family:var(--sans)}
/* virtue card takes its realm colour on the spine + mark + numeral */
.tx-virtue{border-left-color:var(--rc,var(--good));background:linear-gradient(135deg,color-mix(in srgb,var(--rc,var(--good)) 7%,transparent),rgba(11,12,14,0) 60%)}
.tx-virtue .tx-mark{color:var(--rc,var(--good));filter:drop-shadow(0 0 5px color-mix(in srgb,var(--rc,var(--good)) 55%,transparent))}
.tx-virtue .tx-lv b{color:var(--rc,var(--good))}
/* realm label chip — quiet, uppercase */
.tx-realm{font-family:var(--mono);font-size:8.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);border:1px solid var(--line-2);padding:2px 6px;border-radius:2px;margin-left:2px}
/* 6-segment mastery meter — replaces the flat bar on virtues */
.tx-meter{display:flex;gap:4px;margin:12px 0 12px}
.tx-seg{flex:1;height:5px;background:var(--line-2);border-radius:1px;transition:background .18s}
.tx-seg.on{background:var(--rc,var(--good));box-shadow:0 0 7px color-mix(in srgb,var(--rc,var(--good)) 60%,transparent)}
/* muted empty line inside a card (was wx-none, too dim/misaligned) */
.tx-empty{font-size:11px;color:var(--ink-4);font-style:italic;padding-top:2px}

#ovQuests{transition:opacity .12s ease}

/* ── Wants: wrapping titles (taller cards) · card image controls · 2-col traits/vices ── */
/* big card title wraps to as many lines as needed; card grows with it */
.wx-btop{align-items:flex-start}
.wx-bt{white-space:normal !important;overflow:visible !important;text-overflow:clip !important;overflow-wrap:anywhere;line-height:1.22;padding-top:1px}
.wx-bemblem{margin-top:2px}
.wx-bpct{flex:none;margin-top:1px}
/* small card title also wraps */
.wx-small{align-items:flex-start !important}
.wx-small .wx-nt,.wx-nt{white-space:normal !important;overflow:visible !important;text-overflow:clip !important;overflow-wrap:anywhere;line-height:1.25}
.wx-small .wx-caret,.wx-small .wx-grip{margin-top:1px}
/* image controls sitting on the card itself */
.wx-bimgctl{position:absolute;bottom:9px;right:10px;top:auto;left:auto;z-index:6;display:flex;gap:4px;opacity:0;transition:opacity .12s}
.wx-node.wx-big:hover .wx-bimgctl,.wx-node.wx-big.wx-carframing .wx-bimgctl{opacity:1}
.wx-bic{display:inline-grid;place-items:center;width:22px;height:22px;padding:0;font-size:12px;line-height:1;cursor:pointer;color:var(--ink-2);background:rgba(10,11,13,.72);border:1px solid var(--line-2);border-radius:3px;backdrop-filter:blur(3px);transition:border-color .12s,color .12s,background .12s}
.wx-bic:hover{border-color:var(--accent);color:var(--accent)}
.wx-bic.on{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,rgba(10,11,13,.72))}
/* reframe overlay — draggable image copy on top of the card */
.wx-bframe{position:absolute;inset:0;z-index:3;background-size:cover;cursor:grab;opacity:.85}
.wx-bframe.wx-framing{cursor:grabbing;opacity:1}
.wx-bframehint{position:absolute;left:0;right:0;bottom:6px;z-index:4;text-align:center;font-family:var(--mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.9);pointer-events:none}
.wx-node.wx-big.wx-carframing{box-shadow:0 0 0 1px var(--accent),0 0 22px -8px var(--accent-glow)}
/* two-column "builds / fights" — traits it develops vs vices it fights */
.wx-tvcols{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:4px}
.wx-tvcol{min-width:0}
.wx-tvlab{display:flex;flex-direction:column;gap:2px}
.wx-tvhint{font-family:var(--sans);font-size:9.5px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--ink-4)}
.wx-tvcol.vice .wx-tvlab{color:var(--warn)}
.wx-trait.wx-tvice{border-color:color-mix(in srgb,var(--warn) 45%,transparent);color:var(--warn)}
.wx-trait.wx-tvice b{color:var(--warn)}
@media(max-width:640px){.wx-tvcols{grid-template-columns:1fr}}

/* clean modern tooltip for the card image buttons (replaces native title chrome) */
.wx-bic[data-tip]{position:relative}
.wx-bic[data-tip]::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%) translateY(3px);white-space:nowrap;font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.02em;color:var(--ink);background:var(--void-2,#15171b);border:1px solid var(--line-2);border-radius:4px;padding:4px 8px;box-shadow:0 6px 18px -8px rgba(0,0,0,.7);opacity:0;pointer-events:none;transition:opacity .13s,transform .13s;z-index:20}
.wx-bic[data-tip]:hover::after{opacity:1;transform:translateX(-50%) translateY(0)}

/* Wants detail: image as a banner BEHIND the title (like the card) — replaces the separate Vision block */
.wx-dhead.hasbanner{position:relative;overflow:hidden;margin:-2px -2px 4px;padding:20px 16px 16px;border-radius:6px}
.wx-dbanner{position:absolute;inset:0;z-index:0;background-image:var(--wb);background-size:cover;background-position:var(--wbp);opacity:.42}
.wx-dhead.hasbanner::after{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(180deg,rgba(10,11,13,.35),rgba(10,11,13,.82))}
.wx-dhead.hasbanner>*{position:relative;z-index:1}
.wx-dhead.hasbanner .wx-dtitle{color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.7)}

/* Wants detail: legibility + clean connect button (was near-black labels + dashed "dotty" border) */
.wx-dlab{color:var(--ink-3);font-weight:600}
.wx-tvhint{color:#727983;font-weight:400}
.wx-tvcol.vice .wx-tvlab{color:#E5766F}
.wx-none{color:var(--ink-3)}
.wx-tconnect{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.01em;color:var(--accent-2);border:1px solid var(--line-2);background:color-mix(in srgb,var(--accent) 9%,transparent);padding:5px 12px;border-radius:6px;cursor:pointer;transition:border-color .12s,color .12s,background .12s}
.wx-tconnect:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent)}
.wx-tconnect.on{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 22%,transparent)}
