/* ══════════════════════════════════════════════════════════════
   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 9px;border:1px solid var(--line-2);color:var(--ink-3);border-radius:20px}
.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)}
/* OVERDUE — loud filled red pill, unmissable */
.camp-tl.tl-ended{color:#fff;background:#E5484D;border-color:#E5484D;border-style:solid;font-weight:700}
.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:11px;padding:9px 10px;border-bottom:1px solid var(--line-3)}
.td-row.dragging{opacity:.45;background:rgba(255,255,255,.03)}
.td-row:hover{background:color-mix(in srgb,var(--ink) 3%,transparent)}
.td-grip{flex:none;color:var(--ink-4);font-size:12px;cursor:grab;letter-spacing:-2px;line-height:1;user-select:none;opacity:0;transition:opacity .12s,color .12s}
.td-grip:active{cursor:grabbing}
.td-row:hover .td-grip{opacity:.65;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(--sans);font-weight:600;font-size:13.5px;letter-spacing:0;text-transform:none;
  color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.td-row.done .td-t{color:var(--ink-3)}
.td-row.done .td-t{text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--ink-4) 60%,transparent)}
.td-camp{flex:none;font-family:var(--mono);font-weight:500;font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);opacity:.55;
  max-width:96px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .12s}
.td-row:hover .td-camp{opacity:.85}
.td-num{flex:none;font-family:var(--mono);font-weight:600;font-size:10.5px;letter-spacing:.01em;text-transform:none;color:var(--ink-3);
  min-width:50px;text-align:right;font-variant-numeric:tabular-nums}
.td-num.bad{color:#E9603A}
.td-x{flex:none;width:20px;height:20px;border-radius:50%;border:none;background:transparent;color:var(--ink-4);
  font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;opacity:0;transition:color .12s,opacity .12s}
.td-row:hover .td-x{opacity:.6}
.td-x:hover{color:#E9603A;opacity:1}
/* 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 want title/desc — clamp so long wants wrap cleanly in the dark gutter, never across the photo */
.lhm-name{max-width:min(70%,720px);overflow-wrap:break-word;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4;overflow:hidden}
.lhm-desc{max-width:min(58%,440px);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
@media (max-width:760px){.lhm-name{max-width:88%}.lhm-desc{max-width:92%}}
/* hero image control (routes to the want's card where set/change/reframe/remove live) */
.lhm-imgbtn{position:absolute;top:14px;right:14px;z-index:2;display:inline-flex;align-items:center;font-family:var(--sans);font-size:11px;font-weight:600;color:rgba(255,255,255,.85);background:rgba(11,11,18,.55);border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:6px 11px;cursor:pointer;opacity:0;transition:opacity .14s,background .14s;backdrop-filter:blur(3px)}
.lhm-imgbtn2{top:48px}
.lch-hero-main:hover .lhm-imgbtn{opacity:1}
.lhm-imgbtn:hover{background:rgba(11,11,18,.8);border-color:rgba(255,255,255,.45)}
/* clickable want name → scope the whole home to this want */
.lhm-namebtn{cursor:pointer;transition:opacity .12s}
.lhm-namebtn:hover{opacity:.82}
.lhm-filterclr{margin-left:10px;font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.02em;text-transform:none;color:#fff;background:rgba(45,212,191,.9);border:none;border-radius:20px;padding:3px 10px;cursor:pointer;vertical-align:middle}
.lhm-filterclr:hover{background:#2DD4BF}
/* Today split headers (Tasks / Routine) */
.td-grp{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin:14px 0 6px;padding-bottom:5px;border-bottom:1px solid var(--line)}
.td-grp:first-child{margin-top:0}
.td-grp em{font-style:normal;color:var(--ink-3);margin-left:auto;letter-spacing:0}
/* Overall performance indicator (conic ring) */
.perf-ind{display:flex;align-items:center;gap:14px;padding:4px 2px 14px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.perf-ring{position:relative;flex:none;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--pc) calc(var(--p)*1%),var(--line-2) 0)}
.perf-ring::before{content:"";position:absolute;width:44px;height:44px;border-radius:50%;background:var(--void-2,#0e1013)}
.perf-v{position:relative;font-family:var(--disp);font-weight:800;font-size:16px;color:var(--ink);font-variant-numeric:tabular-nums}
.perf-v i{font-style:normal;font-size:9px;color:var(--ink-4);margin-left:1px}
.perf-meta{min-width:0}
.perf-l{font-family:var(--sans);font-size:12px;font-weight:700;color:var(--ink)}
.perf-s{font-family:var(--mono);font-size:10px;color:var(--ink-4);margin-top:3px}
/* Karma — virtue vs vice ratio */
.karma-ind{padding:0 2px 14px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.karma-hd{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}
.karma-l{font-family:var(--sans);font-size:12px;font-weight:700;color:var(--ink);letter-spacing:.01em}
.karma-v{font-family:var(--disp);font-weight:800;font-size:15px;font-variant-numeric:tabular-nums}
.karma-bar{height:6px;border-radius:4px;background:color-mix(in srgb,#E9603A 30%,var(--line-2));overflow:hidden}
.karma-bar i{display:block;height:100%;border-radius:4px;transition:width .3s}
.karma-s{display:flex;justify-content:space-between;margin-top:6px;font-family:var(--mono);font-size:10px}
.karma-good{color:#3ED66B}
.karma-bad{color:#E9603A}
/* hero want links (today's moves / all wants) */
.lhm-link{color:rgba(255,255,255,.72);cursor:pointer;border-bottom:1px solid rgba(255,255,255,.22);padding-bottom:1px}
.lhm-link:hover{color:#fff;border-bottom-color:rgba(255,255,255,.6)}
/* 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,.rite-card .rite-edit-in{
  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,.rite-card .rite-edit-in::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:30px;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:48px;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;border-radius:2px;background:rgba(255,255,255,.07)}
.hb2h-c.on{background:var(--hh,#3ED66B)}
.hb2h-c.today{box-shadow:inset 0 0 0 1.5px var(--ink)}
.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.k-g{color:#3ED66B}
.agt-v.k-r{color:#E5484D}
.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}
/* ══════════ DOPAMINE PASS — Today's Habits + Trends ══════════ */
/* HABITS — tactile checks, a green wash + streak flame when held */
.td-row{border-radius:9px;transition:background .15s,box-shadow .15s}
.td-row:hover{background:rgba(255,255,255,.022)}
.td-row.done{background:linear-gradient(100deg,color-mix(in srgb,#3ED66B 8%,transparent),transparent 55%);box-shadow:inset 3px 0 0 #3ED66B;border-bottom-color:transparent}
.td-check{width:24px;height:24px;transition:transform .16s cubic-bezier(.34,1.56,.5,1),background .15s,border-color .15s,box-shadow .18s}
.td-check:not(.on):hover{border-color:#3ED66B;box-shadow:0 0 9px -3px rgba(62,214,107,.7)}
.td-check.on,.td-check.td-cnt.on{background:#3ED66B !important;border-color:#3ED66B !important;color:#0b0c10 !important;box-shadow:0 0 13px -2px rgba(62,214,107,.75);animation:tdpop .3s cubic-bezier(.34,1.6,.5,1)}
.td-check.on:hover{filter:brightness(1.08)}
@keyframes tdpop{0%{transform:scale(.55)}62%{transform:scale(1.2)}100%{transform:scale(1)}}
.td-row.done .td-num{color:#3ED66B}
.td-row.done .td-t{color:var(--ink)}
@media(prefers-reduced-motion:reduce){.td-check.on{animation:none}}
/* the shared streak flame reused here — sit it before the number */
.td-row .ag-flame{flex:none;margin-left:2px}
/* TRENDS — a bigger glowing ring, a gradient karma meter, and signal CARDS */
.perf-ind{align-items:center;gap:16px;padding:6px 2px 16px}
.perf-ring{width:66px;height:66px;box-shadow:0 0 18px -6px color-mix(in srgb,var(--pc) 65%,transparent);animation:perfin .7s ease-out}
.perf-ring::after{content:"";position:absolute;inset:-3px;border-radius:50%;background:conic-gradient(color-mix(in srgb,var(--pc) 55%,transparent) calc(var(--p)*1%),transparent 0);filter:blur(6px);opacity:.55;z-index:-1}
.perf-ring::before{width:52px;height:52px}
@keyframes perfin{from{transform:rotate(-12deg) scale(.9);opacity:.4}to{transform:none;opacity:1}}
.perf-v{font-size:19px}
.perf-l{font-size:12.5px}
.karma-bar{height:9px;border-radius:6px;background:color-mix(in srgb,#E9603A 22%,var(--void-2));box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}
.karma-bar i{background:linear-gradient(90deg,color-mix(in srgb,var(--good,#3ED66B) 70%,#2DD4BF),#3ED66B) !important;box-shadow:0 0 12px -2px rgba(62,214,107,.8);position:relative;overflow:hidden}
.karma-bar i::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translateX(-120%);animation:kshine 3.4s ease-in-out infinite}
@keyframes kshine{0%,55%{transform:translateX(-120%)}80%,100%{transform:translateX(120%)}}
.karma-v{font-size:16px;text-shadow:0 0 12px currentColor}
.karma-good{font-weight:700}
@media(prefers-reduced-motion:reduce){.karma-bar i::after{animation:none}.perf-ring{animation:none}}
/* ══ KARMA HERO — symbol · big net number · today's momentum ══ */
.kx-hero{display:flex;align-items:center;gap:16px;padding:6px 2px 12px}
.kx-sig{flex:none;font-size:36px;line-height:1;color:var(--kc,#3ED66B);filter:drop-shadow(0 0 12px color-mix(in srgb,var(--kc,#3ED66B) 45%,transparent))}
.kx-main{display:flex;flex-direction:column;gap:2px;margin-right:auto}
.kx-num{font-family:var(--sans);font-size:40px;font-weight:800;line-height:.92;letter-spacing:-.01em;font-variant-numeric:tabular-nums;text-shadow:0 0 18px color-mix(in srgb,currentColor 35%,transparent)}
.kx-lab{font-family:var(--mono);font-size:9px;letter-spacing:.26em;color:var(--ink-4)}
.kx-mom{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex:none}
.kx-momv{font-family:var(--sans);font-size:19px;font-weight:800;font-variant-numeric:tabular-nums}
.kx-momlab{font-family:var(--mono);font-size:8px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-4)}
.kx-split{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.02em;padding:0 2px 14px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.kx-split .karma-bad{color:#E9603A}
/* ══ PERFORMANCE — clean big-number stat (no donut) ══ */
.perf-clean{display:flex;align-items:center;gap:14px;padding:2px 2px 14px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.perf-cn{flex:none;font-family:var(--sans);font-size:30px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.perf-cn i{font-style:normal;font-size:15px;font-weight:600;opacity:.65;margin-left:1px}
.perf-cmeta{display:flex;flex-direction:column;gap:3px;min-width:0}
.perf-cl{font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink-2)}
.perf-cs{font-family:var(--mono);font-size:9px;color:var(--ink-4)}
/* signal cards */
.sig-row{gap:11px;padding:10px 11px;margin-bottom:6px;border-bottom:none !important;border-radius:9px;background:var(--void-2,#0e1013);border:1px solid var(--line);border-left-width:3px;border-left-color:var(--sc,var(--line-2));transition:transform .12s,border-color .12s,background .12s;cursor:default}
.sig-row:hover{transform:translateX(2px);background:color-mix(in srgb,var(--sc,#fff) 5%,var(--void-2))}
.sig-ic{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--sc,#fff) 16%,transparent);font-size:11px}
.sig-t{font-weight:600;color:var(--ink)}
.sig-row.sr-resolve{--sc:#ECC94B}.sig-row.sr-over{--sc:#E9603A}.sig-row.sr-decay{--sc:#E9603A}.sig-row.sr-streak{--sc:#3ED66B}.sig-row.sr-good{--sc:#3ED66B}
/* ══ TYPE ICONS as FLOATING SYMBOLS — no words/borders; label slides out on hover/active ══ */
.ov-viewtabs b.ov-typed{border:none !important;background:none !important;padding:7px 8px !important;display:inline-flex;align-items:center;overflow:hidden;border-radius:8px;color:var(--ink-3);transition:background .14s,color .14s}
.ov-viewtabs b.ov-typed:hover{background:rgba(255,255,255,.04);color:var(--ink)}
.ov-tico{width:18px;height:18px;flex:none;display:inline-block}
.ov-typed .ov-tico{filter:drop-shadow(0 0 3px color-mix(in srgb,var(--tc,#fff) 40%,transparent))}
.ov-tico.sub{width:14px;opacity:.6}
.ov-tico.nav{width:17px;height:17px;filter:none}
.ov-tlbl{display:inline-block;max-width:0;overflow:hidden;white-space:nowrap;opacity:0;margin-left:0;font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:.1em;text-transform:uppercase;transition:max-width .3s cubic-bezier(.3,1,.4,1),opacity .22s ease,margin-left .3s cubic-bezier(.3,1,.4,1)}
.ov-viewtabs b.ov-typed:hover .ov-tlbl,.ov-viewtabs b.ov-typed.on .ov-tlbl{max-width:150px;opacity:1;margin-left:8px}
.ov-viewtabs b.ov-typed.on{background:none;color:var(--tc,var(--accent-2))}
.ov-viewtabs b.ov-typed.on .ov-tico{filter:drop-shadow(0 0 6px color-mix(in srgb,var(--tc,#fff) 75%,transparent))}
/* solids FLOAT — no group box, bigger shapes, readable slide-out label */
.ov-tgroup{clip-path:none !important}
.ov-tgroup::before,.ov-tgroup::after{display:none !important}
.ov-tgroup b:last-child{border-right:none !important}
.ov-viewtabs{border:none !important;gap:14px}
.ov-viewtabs b+b{border-left:none !important}
.ov-typed .ov-tico{width:22px;height:22px}
.ov-typed .ov-tico.sub{width:17px;height:17px}
.ov-tlbl{color:var(--ink) !important}
/* Today / Map = text tabs inside their original bordered pill; solids float separately */
#ovToggle .ov-tgroup:not(#ovToggleB){border:none !important;border-radius:0;overflow:visible;clip-path:none !important;background:none !important}
#ovToggle .ov-tgroup:not(#ovToggleB) b{background:none !important;border:none !important;color:var(--ink-3);padding:7px 10px !important;letter-spacing:.07em}
#ovToggle .ov-tgroup:not(#ovToggleB) b+b{border-left:none !important}
#ovToggle .ov-tgroup:not(#ovToggleB) b:hover{color:var(--ink)}
#ovToggle .ov-tgroup:not(#ovToggleB) b.on{background:none !important;color:#fff}
/* filter icon removed per request */
#ovIdFilter,.ov-tagfilter{display:none !important}
/* readable slide-out label on the solid tabs — plain sans, big, white, no display-font/uppercase */
.ov-viewtabs .ov-tlbl{font-family:var(--sans) !important;font-size:13px !important;font-weight:600 !important;letter-spacing:.02em !important;text-transform:none !important;color:#fff !important}

/* 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:10px;text-transform:capitalize}
.hbx-vv{display:flex;gap:6px;margin:0 0 18px}
.hbx-vvb{font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--ink-3);background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:7px;padding:5px 12px;cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.hbx-vvb:hover{color:var(--ink)}
.hbx-vvb.on{color:#3ED66B;border-color:color-mix(in srgb,#3ED66B 45%,var(--line-2));background:color-mix(in srgb,#3ED66B 12%,transparent)}
.hbx-vvb.vice.on{color:#E5484D;border-color:color-mix(in srgb,#E5484D 45%,var(--line-2));background:color-mix(in srgb,#E5484D 12%,transparent)}
.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}
/* QUESTS view: list and detail split the width 50:50 */
.hbx-split:has(.hbx-list.qt) .hbx-list.qt{flex:1 1 0}
.hbx-split:has(.hbx-list.qt) .hbx-detail{flex:1 1 0}
.hbx-split.dmin:has(.hbx-list.qt) .hbx-detail{flex:0 0 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)}
.ag-drow.prog .ag-dm{color:#3ED66B}
.ag-drow.prog .ag-dt{color:var(--ink-2)}
/* ── day-history SUMMARY card ── */
.ag-dsum{border:1px solid var(--line-2);border-radius:12px;padding:15px 16px;margin-bottom:6px;background:radial-gradient(130% 130% at 0% 0%,color-mix(in srgb,var(--accent) 6%,var(--void-2,#0e1114)),var(--void-2) 60%)}
.ag-dsum-hd{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
.ag-dsum-day{font-family:var(--sans);font-size:28px;font-weight:800;color:var(--ink);line-height:1}
.ag-dsum-dow{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4)}
.ag-dsum-verdict{margin-left:auto;font-family:var(--disp);font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:4px 9px;border-radius:6px}
.ag-dsum-verdict.pos{color:#3ED66B;background:color-mix(in srgb,#3ED66B 12%,transparent)}
.ag-dsum-verdict.neg{color:#E5484D;background:color-mix(in srgb,#E5484D 12%,transparent)}
.ag-dsum-mid{display:flex;align-items:center;gap:18px;margin-bottom:14px}
.ag-dsum-karma{flex:none;display:flex;flex-direction:column;gap:2px}
.ag-dsum-karma .v{font-family:var(--sans);font-size:30px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.ag-dsum-karma.pos .v{color:#3ED66B;text-shadow:0 0 16px color-mix(in srgb,#3ED66B 45%,transparent)}
.ag-dsum-karma.neg .v{color:#E5484D;text-shadow:0 0 16px color-mix(in srgb,#E5484D 45%,transparent)}
.ag-dsum-karma .k{font-family:var(--mono);font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4)}
.ag-dsum-vv{flex:1;min-width:0}
.ag-dvv-bar{display:flex;height:8px;border-radius:99px;overflow:hidden;background:var(--line-2)}
.ag-dvv-bar .g{background:#3ED66B}.ag-dvv-bar .v{background:#E5484D}
.ag-dvv-legend{display:flex;justify-content:space-between;margin-top:6px;font-family:var(--mono);font-size:9px}
.ag-dvv-legend .g{color:#3ED66B}.ag-dvv-legend .v{color:#E5484D}
.ag-dsum-stats{display:flex;gap:0;border-top:1px solid var(--line)}
.ag-dsum-stats div{flex:1;padding-top:11px;display:flex;flex-direction:column;gap:3px;border-left:1px solid var(--line)}
.ag-dsum-stats div:first-child{border-left:none}
.ag-dsum-stats b{font-family:var(--sans);font-size:19px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.ag-dsum-stats small{font-size:11px;color:var(--ink-4);font-weight:500}
.ag-dsum-stats span{font-family:var(--mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.ag-dnote{margin-top:8px}
.ag-dnote .ag-jrn-in{width:100%;box-sizing:border-box;margin-bottom:7px}
.ag-dnote .ag-jrn-add{float:right}

/* 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,.hbx-grp.col .qsm-wrap{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:8px;padding:8px 10px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:8px}
.ag-qrow:hover{background:rgba(255,255,255,.03)}
/* a quest living as a yellow card inside the Build column (its sub-quests nest below the row) */
.ag-qcard{border:1px solid rgba(236,201,75,.30);background:linear-gradient(180deg,rgba(236,201,75,.10),rgba(236,201,75,.03));border-radius:8px;margin-bottom:7px;padding:1px 4px}
.ag-qcard .ag-qrow{border-bottom:none}
.ag-qcard .ag-qname{color:var(--gold)}
.ag-qcard .ag-subwrap{padding:2px 6px 6px 30px}
.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:13.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-qleft{font-family:var(--mono);font-size:10px;color:var(--ink-3);flex:none;border:1px solid var(--line-2);border-radius:5px;padding:2px 6px;font-variant-numeric:tabular-nums}
.ag-qleft.soon{color:#ECC94B;border-color:color-mix(in srgb,#ECC94B 40%,transparent)}.ag-qleft.over{color:#E5484D;border-color:color-mix(in srgb,#E5484D 45%,transparent)}
.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{display:flex;flex-direction:column;gap:5px;margin-top:9px}
/* quest rows = same chamfered blade as sub-wants (was flat text; a quest must read
   identically wherever it appears — Wants, Traits, Map). */
.wx-feed{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);cursor:pointer;clip-path:var(--chamfer)}
.wx-feed:hover{color:var(--ink);border-left-color:var(--accent-2)}
.wx-fk{color:var(--accent);flex:none}
.wx-none{margin-top:7px;font-size:12px;color:var(--ink-4)}
/* Wants cross-map — center WANT + 4 axis arms (virtues↑ vices↓ habits◀ quests▶),
   reusing the Map's ag-cm node language so an entity reads identically on every tab. */
.wx-cardmap{margin:8px 0 22px}
.wx-cm-stage{position:relative;width:100%;height:400px;border:1px solid var(--line);clip-path:var(--chamfer);background:radial-gradient(ellipse 60% 60% at 50% 50%,color-mix(in srgb,var(--accent) 6%,transparent),transparent 72%),var(--void-2);overflow:hidden}
.wx-cm-stage .ag-cm-node{z-index:2;cursor:default}
.wx-cm-stage .ag-cm-node.link{cursor:pointer}
.wx-cm-stage .ag-cm-node.center{z-index:3}
.wx-axlab{position:absolute;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);z-index:1;pointer-events:none}
.wx-axtop{top:9px;left:50%;transform:translateX(-50%)}
.wx-axbot{bottom:9px;left:50%;transform:translateX(-50%)}
.wx-axleft{left:11px;top:50%;transform:translateY(-50%)}
.wx-axright{right:11px;top:50%;transform:translateY(-50%)}

/* 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:18px}
.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;display:inline-grid;place-items:center;width:22px;height:22px;text-align:center;font-size:11px;color:var(--ink-3);cursor:pointer;border-radius:4px;transition:background .12s,color .12s}
.wx-caret:hover{background:rgba(255,255,255,.07);color:var(--ink)}
.wx-caret.wx-none-c{color:var(--ink-4);font-size:8px;cursor:default;pointer-events:none}
.wx-caret.wx-none-c:hover{background:none;color:var(--ink-4)}
.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.
   DESIGN SYSTEM: every entity row on the Wants tab (sub-want · quest · vice · virtue)
   speaks the ONE chamfer language — clip-path:var(--chamfer) + a 2px left accent rail,
   matching .wx-node and the Traits blades. No ad-hoc border-radius on entity rows. When
   the same entity appears on another tab it must reuse this frame (cross-tab consistency). */
.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;clip-path:var(--chamfer)}
.wx-subrow:hover{color:var(--ink);border-left-color:var(--accent)}
.wx-subdot{color:var(--accent-2);font-size:10px;flex:none}
.wx-substar{flex:none;background:none;border:none;color:var(--ink-4);font-size:13px;line-height:1;cursor:pointer;padding:0;transition:color .12s,filter .12s}
.wx-substar:hover{color:#ECC94B}
.wx-substar.on{color:#ECC94B;filter:drop-shadow(0 0 5px rgba(236,201,75,.7))}
.wx-subrow.wx-focus{border-left-color:#ECC94B;background:color-mix(in srgb,#ECC94B 7%,transparent)}
.wx-dhint{font-family:var(--sans);font-size:10px;font-weight:500;letter-spacing:.01em;text-transform:none;color:var(--ink-4)}
.wx-habrow{border-left-color:#3ED66B}
.wx-habrow .wx-fk{color:#3ED66B}
.wx-habrow.brk{border-left-color:#E5484D}
.wx-habrow.brk .wx-fk{color:#E5484D}
.wx-habcols .wx-habrow{margin-bottom:5px}
.wx-habcols .wx-hin{font-family:var(--sans);font-size:12px}
.wx-habx{margin-left:auto;background:none;border:none;color:var(--ink-4);font-size:14px;line-height:1;cursor:pointer;padding:0 2px}
.wx-habx:hover{color:#E5484D}
.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(--sans);font-weight:700;font-size:30px;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink);line-height:1}
.agt-v{font-family:var(--sans);font-weight:700;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)}
.agt-kpair{display:inline-flex;gap:9px;align-items:baseline}
/* ── Today: focused connection map (replaces calendar when a card is clicked) ── */
.ag-cardmap{flex:1;min-width:0;display:flex;flex-direction:column;padding:16px 18px;overflow:hidden}
.ag-cm-top{display:flex;align-items:center;gap:12px;margin:0 0 8px;padding:0 2px 10px;border-bottom:1px solid var(--line);flex:0 0 auto}
.ag-cm-ti{flex:1;min-width:0;font-family:var(--disp);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-cm-top .ag-back{flex:none}
.ag-cm-reset{background:none;border:1px solid var(--line-2);border-radius:6px;color:var(--ink-3);font-family:var(--disp);font-size:9px;letter-spacing:.1em;text-transform:uppercase;padding:4px 8px;cursor:pointer;flex:none}
.ag-cm-reset:hover{color:var(--ink);border-color:var(--ink-3)}
.ag-cm-stage{position:relative;flex:1 1 auto;min-height:340px;margin-top:6px;overflow:hidden;cursor:grab;touch-action:none}
.ag-cm-stage.grabbing{cursor:grabbing}
.ag-cm-inner{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform}
.ag-cm-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.ag-cm-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:4px;width:120px;text-align:center;pointer-events:auto;cursor:grab;padding:9px 8px 8px;border-radius:9px;background:color-mix(in srgb,var(--cmc) 8%,var(--void-2,#0d0e11) 92%);border:1px solid color-mix(in srgb,var(--cmc) 42%,transparent);box-shadow:0 3px 14px rgba(0,0,0,.45)}
.ag-cm-node:active{cursor:grabbing}
.ag-cm-node.link{transition:border-color .12s,transform .12s}
.ag-cm-node.link:hover{border-color:var(--cmc);transform:translate(-50%,-50%) scale(1.04)}
.ag-cm-g{width:30px;height:30px;display:flex;align-items:center;justify-content:center}
.ag-cm-g svg{width:100%;height:100%;display:block}
.ag-cm-lb{font-size:11px;font-weight:600;color:var(--ink);line-height:1.15;max-width:104px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ag-cm-sb{font-size:8.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--cmc,var(--ink-3))}
.ag-cm-node.center{width:132px;z-index:2;border-width:1.5px;background:color-mix(in srgb,var(--cmc) 13%,var(--void-2,#0d0e11) 87%)}
.ag-cm-node.center .ag-cm-g{width:44px;height:44px}
.ag-cm-node.center .ag-cm-lb{font-size:13px;max-width:116px}
/* HEXAGON gem node — the map's bwHexFrame design, static (no float) so it aligns to the graph */
.ag-cm-hex{background:none !important;border:none !important;box-shadow:none !important;padding:0 !important;width:120px;height:134px;gap:0}
.ag-cm-hex.center{width:150px;height:168px}
.ag-cm-hex .bw-hexf{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.ag-cm-hex .bw-hexin{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 22px;gap:2px}
.ag-cm-hex .bw-hexsig{height:50px;width:100%}
.ag-cm-hex.center .bw-hexsig{height:64px}
.ag-cm-hex .bw-hexsig svg{width:100%;height:100%;display:block}
.ag-cm-hex .bw-hexname{font-family:var(--sans);font-size:11px;font-weight:700;color:var(--ink);line-height:1.14;max-width:92px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ag-cm-hex.center .bw-hexname{font-size:13px;max-width:116px}
/* LOOP/solid card node — the map's habit/quest/want gem card (cube badge header + orbit-loop glyph + streak) */
.ag-cm-card{width:132px;gap:5px;padding:9px 9px 10px;border-left:3px solid var(--cmc)}
.ag-cm-card.center{width:150px}
.ag-cm-chd{display:flex;align-items:center;gap:5px;justify-content:center}
.ag-cm-badge{width:16px;height:16px;display:inline-flex;flex:none}
.ag-cm-badge svg{width:100%;height:100%;display:block}
.ag-cm-tl{font-size:8px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--cmc)}
.ag-cm-glyph{width:46px;height:46px;margin:1px auto 0}
.ag-cm-card.center .ag-cm-glyph{width:58px;height:58px}
.ag-cm-glyph svg{width:100%;height:100%;display:block}
.ag-cm-meta{font-size:8.5px;letter-spacing:.03em;color:var(--ink-3)}
/* STEP nodes — compact horizontal chips for a linear sub-quest sequence */
.ag-cm-step{width:150px;flex-direction:row;align-items:center;gap:8px;padding:6px 9px;text-align:left;border-left:3px solid var(--cmc)}
.ag-cm-step .ag-cm-badge{width:15px;height:15px}
.ag-cm-step .ag-cm-steptl{font-family:var(--mono);font-size:7px;font-weight:600;letter-spacing:.1em;color:var(--cmc);flex:none}
.ag-cm-step .ag-cm-lb{font-size:10.5px;font-weight:600;text-align:left;max-width:none;-webkit-line-clamp:1;line-clamp:1;flex:1;min-width:0}
.ag-cm-step.done{opacity:.55}
.ag-cm-step.done .ag-cm-lb{text-decoration:line-through}
/* link a trait from the map */
.ag-cm-linktrait{flex:none;background:none;border:1px solid color-mix(in srgb,#a99bf9 40%,var(--line-2));border-radius:6px;color:#a99bf9;font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.04em;padding:4px 9px;cursor:pointer;transition:background .12s,border-color .12s}
.ag-cm-linktrait:hover,.ag-cm-linktrait.on{background:color-mix(in srgb,#a99bf9 14%,transparent);border-color:#a99bf9}
.ag-cm-trpick{margin:0 0 6px;flex:0 0 auto;background:var(--void-2,#0e1114);border:1px solid var(--line-2);border-radius:8px;padding:8px}
.ag-cm-trpick .ag-trpick-in{width:100%;box-sizing:border-box;background:var(--void,#0a0b0d);border:1px solid var(--line-2);border-radius:6px;color:var(--ink);font-family:var(--sans);font-size:12px;padding:7px 9px;outline:none;margin-bottom:6px}
.ag-cm-trpick .ag-trpick-in:focus{border-color:#a99bf9}
.ag-cm-trpick .ag-trpick-list{display:flex;flex-wrap:wrap;gap:5px;max-height:118px;overflow-y:auto}
.ag-cm-trpick .ag-trpick-o{display:inline-flex;align-items:center;gap:5px;background:none;border:1px solid var(--line-2);border-radius:6px;color:var(--ink-2,#c7ccd3);font-family:var(--sans);font-size:11px;padding:4px 9px;cursor:pointer}
.ag-cm-trpick .ag-trpick-o:hover{border-color:#a99bf9;color:#a99bf9}
.ag-cm-trsig{width:14px;height:14px;display:inline-flex;flex:none}
.ag-cm-trsig svg{width:100%;height:100%}
/* ── MAP CHROME — polished, bordered header bar + framed canvas ── */
.ag-cm-top{gap:8px!important;padding:8px 10px!important;margin:0 0 10px!important;border:1px solid var(--line-2)!important;border-radius:9px!important;background:color-mix(in srgb,var(--accent) 4%,var(--void-2,#0e1114))}
.ag-cm-top .ag-back{flex:none;font-family:var(--disp);font-weight:600;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);background:none;border:1px solid var(--line-2);border-radius:6px;padding:5px 9px;margin:0;cursor:pointer;transition:color .12s,border-color .12s}
.ag-cm-top .ag-back:hover{color:var(--accent-2);border-color:var(--accent-2)}
.ag-cm-ti{flex:1;min-width:0;font-family:var(--disp)!important;font-size:9.5px!important;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-cm-linktrait,.ag-cm-reset{padding:5px 10px!important;border-radius:6px!important;font-size:9px!important;font-family:var(--disp);letter-spacing:.08em;text-transform:uppercase}
.ag-cm-reset{color:var(--ink-3)}
.ag-cm-reset:hover{color:var(--accent-2);border-color:var(--accent-2)}
.ag-cm-stage{border:1px solid var(--line-2)!important;border-radius:11px!important;background:radial-gradient(130% 120% at 50% 0%,color-mix(in srgb,var(--accent) 4%,transparent),transparent 62%),var(--void-1,#0b0c0e);margin-top:0!important}
.ag-cm-empty{font-size:11px;color:var(--ink-3);text-align:center;padding:14px 6px;flex:0 0 auto}
/* map detail panel — bottom-right, edit clicked node's attributes */
.ag-cm-detail{position:absolute;right:10px;bottom:10px;width:216px;z-index:6;background:color-mix(in srgb,var(--void-1,#0b0c0e) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line-2);border-radius:10px;padding:11px 12px 12px;box-shadow:0 10px 34px rgba(0,0,0,.5);animation:agcmdIn .16s ease}
@keyframes agcmdIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.ag-cmd-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.ag-cmd-type{font-family:var(--sans);font-size:9px;font-weight:700;letter-spacing:.14em;color:var(--tc,var(--accent));border:1px solid color-mix(in srgb,var(--tc,var(--accent)) 45%,transparent);border-radius:3px;padding:2px 7px}
.ag-cmd-x{background:none;border:none;color:var(--ink-4);font-size:13px;cursor:pointer;line-height:1;padding:2px 4px}
.ag-cmd-x:hover{color:var(--ink)}
.ag-cmd-title{width:100%;background:var(--void-2,#111214);border:1px solid var(--line-2);border-radius:5px;color:var(--ink);font-family:var(--sans);font-size:13px;font-weight:600;padding:7px 9px;outline:none;margin-bottom:9px}
.ag-cmd-title:focus{border-color:var(--accent)}
.ag-cmd-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ag-cmd-row label{font-family:var(--sans);font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);flex:0 0 auto}
.ag-cmd-date{flex:1;min-width:0;background:var(--void-2,#111214);border:1px solid var(--line-2);border-radius:5px;color:var(--ink);font-family:var(--sans);font-size:12px;padding:5px 7px;outline:none;color-scheme:dark}
.ag-cmd-date:focus{border-color:var(--accent)}
.ag-cmd-chk{flex:1;background:var(--void-2,#111214);border:1px solid var(--line-2);border-radius:5px;color:var(--ink-2);font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.04em;padding:7px 9px;cursor:pointer;text-align:center}
.ag-cmd-chk:hover{border-color:var(--accent-2);color:var(--ink)}
.ag-cmd-chk.on{border-color:#3ED66B;color:#3ED66B;background:color-mix(in srgb,#3ED66B 12%,transparent)}
.ag-cmd-focus{flex:1;background:none;border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:5px;color:var(--accent);font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.05em;padding:7px 9px;cursor:pointer;text-align:center}
.ag-cmd-focus:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.ag-cmd-meta{font-family:var(--sans);font-size:10.5px;color:var(--ink-4);margin-bottom:8px}
/* 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.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:24px;height:24px;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:50% !important;clip-path:none !important;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)}

/* Wants detail: nested-state row + "make top-level" promote button */
.wx-dnest{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 2px}
.wx-dnestlab{font-family:var(--sans);font-size:11px;color:var(--ink-3)}
.wx-promote{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--accent-2);border:1px solid var(--line-2);background:color-mix(in srgb,var(--accent) 9%,transparent);padding:4px 11px;border-radius:6px;cursor:pointer;transition:border-color .12s,color .12s,background .12s}
.wx-promote:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent)}

/* clear "hide/show N sub-wants" toggle on the big card (bottom-left, under the grip column) */
.wx-btoggle{display:inline-flex;align-items:center;gap:6px;margin-top:10px;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.01em;color:var(--accent-2);background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid var(--line-2);border-radius:7px;padding:5px 11px;cursor:pointer;transition:border-color .12s,color .12s,background .12s}
.wx-btoggle:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent)}
.wx-btcar{font-size:9px;opacity:.9}

/* big want card → left rail (grip on top, minimal collapse caret below it) + body */
.wx-node.wx-big{display:flex;gap:12px;align-items:flex-start}
.wx-brail{display:flex;flex-direction:column;align-items:center;gap:7px;flex:0 0 auto;position:relative;z-index:2;padding-top:2px}
.wx-brail .wx-grip{margin:0}
.wx-bbody{flex:1;min-width:0;position:relative;z-index:1}
.wx-railcar{display:inline-grid;place-items:center;width:20px;height:20px;font-size:11px;color:var(--ink-3);cursor:pointer;border-radius:5px;transition:background .12s,color .12s}
.wx-railcar:hover{background:rgba(255,255,255,.09);color:var(--ink)}

/* ── Wants detail v2 ── */
/* title never indented (banner no longer pushes it right; it bleeds toward the panel edge instead) */
.wx-dhead.hasbanner{margin:0 0 8px !important;padding:16px 0 12px !important;border-radius:0 !important}
.wx-dhead.hasbanner .wx-dbanner{left:-24px;right:-2px}
.wx-dhead.hasbanner::after{left:-24px;right:-2px}
@media(max-width:1000px){.wx-dhead.hasbanner .wx-dbanner,.wx-dhead.hasbanner::after{left:0}}
/* category -> minimal rounded pills (no rectangles / chamfer) */
.wx-tags{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 15px}
.wx-tag{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.01em;color:var(--ink-3);border:1px solid var(--line-2);padding:4px 12px;cursor:pointer;border-radius:999px;clip-path:none;transition:color .12s,border-color .12s,background .12s}
.wx-tag:hover{border-color:var(--ink-3);color:var(--ink-2)}
.wx-tag.on{color:var(--rc);border-color:var(--rc);background:color-mix(in srgb,var(--rc) 15%,transparent)}
/* pinned "why" — a quote pulled from your log */
.wx-why{margin:0 0 16px;padding:12px 15px;border-left:2px solid var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent);border-radius:0 7px 7px 0}
.wx-whytext{font-family:var(--sans);font-size:14px;line-height:1.5;color:var(--ink);font-style:italic}
.wx-whymeta{margin-top:8px;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-4);display:flex;align-items:center;gap:9px}
.wx-whyunpin{font-family:var(--sans);font-size:10px;text-transform:none;letter-spacing:0;color:var(--ink-3);background:none;border:1px solid var(--line-2);border-radius:5px;padding:2px 9px;cursor:pointer}
.wx-whyunpin:hover{border-color:var(--accent);color:var(--accent)}
textarea.wx-dnote{margin-bottom:16px}
/* journal pin button per entry */
.wx-jpin{background:none;border:none;cursor:pointer;font-size:12px;opacity:.3;filter:grayscale(1);transition:opacity .12s,filter .12s;padding:0 3px;line-height:1}
.wx-jrow:hover .wx-jpin{opacity:.65}
.wx-jpin.on{opacity:1;filter:none}
.wx-jrow.pinned{border-left:2px solid var(--accent);padding-left:8px}
/* footer: complete / archive */
.wx-dfoot{display:flex;gap:10px;margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}
.wx-dcomplete{font-family:var(--sans);font-size:12px;font-weight:600;color:var(--good,#57C888);background:color-mix(in srgb,var(--good,#57C888) 10%,transparent);border:1px solid color-mix(in srgb,var(--good,#57C888) 40%,transparent);border-radius:7px;padding:8px 16px;cursor:pointer;transition:background .12s}
.wx-dcomplete:hover{background:color-mix(in srgb,var(--good,#57C888) 18%,transparent)}
.wx-dcomplete.on{color:var(--ink-3);border-color:var(--line-2);background:none}
.wx-darchive{font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink-3);background:none;border:1px solid var(--line-2);border-radius:7px;padding:8px 16px;cursor:pointer;transition:border-color .12s,color .12s}
.wx-darchive:hover{border-color:var(--warn);color:var(--warn)}
/* dim the other cards when one want is selected */
.wx-node{transition:opacity .18s,border-color .12s,background .12s,box-shadow .13s}
.wx-tree.wx-hassel .wx-item .wx-node:not(.wx-sel){opacity:.38}
.wx-tree.wx-hassel .wx-item .wx-node:not(.wx-sel):hover{opacity:.72}

/* ── Wants multi-tag system: pills (assign) + manage mode (rename/recolour/create/delete) ── */
.wx-tags{align-items:center}
.wx-tagmgr{font-family:var(--sans);font-size:10px;font-weight:600;color:var(--ink-4);background:none;border:1px solid var(--line);border-radius:999px;padding:4px 11px;cursor:pointer;transition:border-color .12s,color .12s}
.wx-tagmgr:hover{border-color:var(--ink-3);color:var(--ink-2)}
.wx-tagmgr.done{color:var(--accent-2);border-color:var(--line-2)}
.wx-tagaddbtn{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--accent-2);background:color-mix(in srgb,var(--accent) 9%,transparent);border:1px dashed color-mix(in srgb,var(--accent) 45%,transparent);border-radius:999px;padding:4px 12px;cursor:pointer}
.wx-tagaddbtn:hover{border-style:solid;color:var(--accent)}
/* manage-mode editable chip */
.wx-tags.manage{gap:8px}
.wx-tagm{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);border-left:3px solid var(--rc);border-radius:7px;padding:3px 6px 3px 8px;background:color-mix(in srgb,var(--rc) 8%,transparent)}
.wx-tagsw{position:relative;width:15px;height:15px;border-radius:50%;cursor:pointer;flex:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25);overflow:hidden}
.wx-tagsw input[type=color]{position:absolute;inset:-4px;width:150%;height:150%;border:none;padding:0;background:none;cursor:pointer;opacity:0}
.wx-tagname{background:none;border:none;outline:none;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink);width:88px;min-width:40px}
.wx-tagname:focus{border-bottom:1px solid var(--rc)}
.wx-tagdel{background:none;border:none;color:var(--ink-4);font-size:14px;line-height:1;cursor:pointer;padding:0 2px}
.wx-tagdel:hover{color:var(--warn)}
.wx-tagnew{display:inline-flex;align-items:center;gap:6px}
.wx-tagnewin{background:var(--void-2,#111214);border:1px solid var(--line-2);border-radius:7px;outline:none;color:var(--ink);font-family:var(--sans);font-size:12px;padding:5px 9px;width:130px}
.wx-tagnewin:focus{border-color:var(--accent)}
.wx-tagnewgo{font-family:var(--sans);font-size:11px;font-weight:600;color:#08110F;background:var(--accent);border:none;border-radius:7px;padding:5px 11px;cursor:pointer}
.wx-tagnewgo:hover{background:var(--accent-2)}

/* ── tag pills redesign: leading colour dot, fully-rounded, tinted when on ── */
.wx-tags .wx-tag{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.01em;color:var(--ink-3);border:1px solid var(--line);padding:4px 12px 4px 9px;border-radius:999px;cursor:pointer;clip-path:none;transition:color .12s,border-color .12s,background .12s}
.wx-tags .wx-tag::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--rc);opacity:.5;flex:none;transition:opacity .12s,box-shadow .12s}
.wx-tags .wx-tag:hover{border-color:var(--ink-3);color:var(--ink-2)}
.wx-tags .wx-tag:hover::before{opacity:.85}
.wx-tags .wx-tag.on{color:var(--rc);border-color:color-mix(in srgb,var(--rc) 50%,transparent);background:color-mix(in srgb,var(--rc) 13%,transparent)}
.wx-tags .wx-tag.on::before{opacity:1;box-shadow:0 0 6px color-mix(in srgb,var(--rc) 70%,transparent)}
/* ── vices/virtues: inline type-to-add (replaces the + connect button + popup) ── */
.wx-tvadd{margin-top:9px}
.wx-tvin{width:100%;background:var(--void-2,#111214);border:1px solid var(--line);border-radius:7px;outline:none;color:var(--ink);font-family:var(--sans);font-size:12px;padding:7px 11px;transition:border-color .12s,box-shadow .12s}
.wx-tvin::placeholder{color:var(--ink-4)}
.wx-tvin:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-glow)}
.wx-tvcol.vice .wx-tvin:focus{border-color:var(--warn);box-shadow:0 0 0 2px color-mix(in srgb,var(--warn) 25%,transparent)}
/* connected trait chips read as pills too */
.wx-traits .wx-trait{display:inline-flex;align-items:center;gap:5px}/* keep the chamfer — was overridden to a 999px pill, breaking consistency with Traits blades */

/* ── Traits tab: nested trackable behaviors (habits) under each vice/virtue ── */
.tx-subs{margin-top:12px;display:flex;flex-direction:column;gap:1px}
.tx-sub{display:flex;align-items:center;gap:9px;padding:6px 2px;border-top:1px solid rgba(255,255,255,.05)}
.tx-sub:first-child{border-top:none}
.tx-subdot{width:7px;height:7px;border-radius:50%;background:var(--rc,var(--warn));flex:none;opacity:.85}
.tx-subdot.vice{background:var(--warn)}
.tx-subt{flex:1;min-width:0;font-family:var(--sans);font-size:13px;color:var(--ink-2);cursor:text;overflow-wrap:anywhere}
.tx-substreak{font-family:var(--mono);font-size:11px;font-variant-numeric:tabular-nums;color:var(--ink-3);flex:none}
.tx-subslip{flex:none;font-family:var(--sans);font-size:10px;font-weight:600;color:var(--warn);background:none;border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:6px;padding:3px 9px;cursor:pointer;transition:background .12s}
.tx-subslip:hover{background:color-mix(in srgb,var(--warn) 15%,transparent)}
.tx-subcheck{flex:none;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line-2);background:none;color:transparent;cursor:pointer;display:grid;place-items:center;font-size:12px;transition:border-color .12s,color .12s,background .12s}
.tx-subcheck.on{border-color:var(--rc,var(--good));color:var(--rc,var(--good));background:color-mix(in srgb,var(--rc,var(--good)) 15%,transparent)}
.tx-subx{flex:none;background:none;border:none;color:var(--ink-4);font-size:14px;line-height:1;cursor:pointer;padding:0 3px;opacity:0;transition:opacity .12s,color .12s}
.tx-sub:hover .tx-subx{opacity:.6}
.tx-subx:hover{color:var(--warn);opacity:1}
.tx-subadd{margin-top:3px}
.tx-subin{width:100%;background:none;border:none;border-top:1px solid rgba(255,255,255,.05);outline:none;color:var(--ink);font-family:var(--sans);font-size:12px;padding:7px 2px;transition:border-color .12s}
.tx-subin::placeholder{color:var(--ink-4)}
.tx-subin:focus{border-top-color:var(--rc,var(--accent))}

/* ── Vice PATTERNS: rich psychological behaviours (description + trigger/loop/cost) logged over time ── */
.tx-pats{margin-top:12px;display:flex;flex-direction:column;gap:10px}
/* PATTERN = a long pointed red SHARD (echoes the map-view blades): flat left with a red edge, tapering to a point on the right */
.tx-pat{position:relative;border:none;border-radius:0;padding:13px 46px 13px 17px;margin-bottom:11px;
  background:linear-gradient(100deg,color-mix(in srgb,var(--warn) 15%,var(--void-2)),color-mix(in srgb,var(--warn) 6%,var(--void-2)) 52%,var(--void-2));
  clip-path:polygon(0 0,calc(100% - 30px) 0,100% 50%,calc(100% - 30px) 100%,0 100%)}
.tx-pat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--warn);box-shadow:0 0 10px -1px color-mix(in srgb,var(--warn) 70%,transparent)}
.tx-pat:hover{background:linear-gradient(100deg,color-mix(in srgb,var(--warn) 20%,var(--void-2)),color-mix(in srgb,var(--warn) 8%,var(--void-2)) 52%,var(--void-2))}
.tx-patdesc{width:100%;background:none;border:none;outline:none;resize:none;field-sizing:content;font-family:var(--sans);font-size:13.5px;line-height:1.45;color:var(--ink);font-style:italic;min-height:22px;overflow:hidden}
.tx-patdesc::placeholder{color:var(--ink-4);font-style:normal}
.tx-patdesc.static{font-style:italic;cursor:text}
.tx-habadd{display:flex;align-items:center;gap:8px;margin-top:2px}
.tx-habadd .tx-patnew{flex:1;min-width:0}
.tx-habadd .tx-relchip.add{flex:none}
/* HELP tab — embeds the self-contained capabilities page */
#view-help.on{display:flex;flex-direction:column;flex:1;min-height:0;padding:0}
.hlp-frame{flex:1 1 auto;width:100%;min-height:0;border:0;display:block;background:var(--void)}
#helpBtn{font-family:var(--sans);font-weight:700}
.tx-patmeta{display:flex;flex-direction:column;gap:6px;margin:10px 0 11px}
.tx-patf{display:flex;align-items:center;gap:9px}
.tx-patf>span{flex:none;width:50px;font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);text-align:right}
.tx-patf>input{flex:1;min-width:0;background:none;border:none;border-bottom:1px solid var(--line);outline:none;color:var(--ink-2);font-family:var(--sans);font-size:12px;padding:2px 0}
.tx-patf>input::placeholder{color:var(--ink-4)}
.tx-patf>input:focus{border-bottom-color:var(--warn)}
.tx-patfoot{display:flex;align-items:center;gap:10px}
.tx-patstat{flex:1;font-family:var(--mono);font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.tx-patstat b{color:var(--warn);font-weight:600}
.tx-patstat em{color:var(--warn);font-style:normal;font-weight:600}
/* per-behaviour PERFORMANCE header: big repeat count + 12-week frequency sparkline */
.tx-pathd{display:flex;align-items:flex-start;gap:12px}
.tx-pathd .tx-patdesc{flex:1;min-width:0}
.tx-patperf{flex:none;display:flex;align-items:center;gap:9px;padding-top:1px}
.tx-patcnt{display:flex;flex-direction:column;align-items:flex-end;line-height:1}
.tx-patcnt b{font-family:var(--sans);font-size:20px;font-weight:800;color:var(--warn);font-variant-numeric:tabular-nums}
.tx-patcnt span{font-family:var(--mono);font-size:7.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin-top:2px}
.tx-patspark{width:60px;height:16px;display:block;opacity:.9}
/* vice/virtue DESCRIPTION layer */
.tx-ddesc{width:100%;box-sizing:border-box;background:none;border:none;color:var(--ink-2);font-family:var(--sans);font-size:15.5px;line-height:1.55;padding:2px 0;margin:0 0 18px;resize:none;outline:none;field-sizing:content;min-height:24px}
.tx-ddesc:focus{color:var(--ink)}
.tx-ddesc::placeholder{color:var(--ink-4)}
/* CONNECTIONS — related vices/virtues + related behaviours, as linkable chips */
.tx-drel,.tx-patrel{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 16px}
.tx-patrel{margin:9px 0 0}
.tx-relchip{display:inline-flex;align-items:center;gap:5px;font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--rc,#a99bf9);background:color-mix(in srgb,var(--rc,#a99bf9) 10%,transparent);border:1px solid color-mix(in srgb,var(--rc,#a99bf9) 38%,transparent);border-radius:20px;padding:4px 6px 4px 11px;cursor:pointer;transition:background .12s}
.tx-relchip:hover{background:color-mix(in srgb,var(--rc,#a99bf9) 18%,transparent)}
.tx-relchip.sm{font-size:10.5px;padding:3px 5px 3px 9px;color:var(--warn);--rc:var(--warn)}
.tx-relchip.add{color:var(--ink-4);background:none;border-style:dashed;border-color:var(--line-2);padding:4px 11px;font-weight:500}
.tx-relchip.add:hover{color:var(--ink-2);border-color:var(--ink-4)}
.tx-relx{background:none;border:none;color:currentColor;opacity:.6;font-size:13px;line-height:1;cursor:pointer;padding:0 2px}
.tx-relx:hover{opacity:1}
.tx-relpick{flex-basis:100%;display:flex;flex-wrap:wrap;gap:5px;margin-top:4px;padding:9px;border:1px solid var(--line-2);border-radius:9px;background:var(--void-2);max-height:150px;overflow-y:auto}
.tx-relo{font-family:var(--sans);font-size:11.5px;color:var(--ink-2);background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:7px;padding:4px 10px;cursor:pointer;transition:color .12s,border-color .12s}
.tx-relo:hover{color:var(--ink);border-color:var(--accent-2,#2DD4BF)}
/* a vice's LINKED HABITS (existing breaking-goals wired in via node_quests) */
/* LINKED HABITS = clean neutral rectangle cards (distinct from the red pattern shards) */
.tx-dhabs{display:flex;flex-direction:column;gap:7px;margin:0 0 16px}
.tx-dhab{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line-2);border-radius:9px;background:var(--void-2);transition:border-color .12s}
.tx-dhab:hover{border-color:color-mix(in srgb,var(--warn) 38%,var(--line-2))}
.tx-dhabt{flex:1;min-width:0;font-family:var(--sans);font-size:13.5px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tx-dhabstreak{flex:none;font-family:var(--mono);font-size:10px;color:var(--warn);font-variant-numeric:tabular-nums;border:1px solid color-mix(in srgb,var(--warn) 32%,var(--line-2));border-radius:6px;padding:3px 8px}
.tx-dhabx{flex:none;background:none;border:none;color:var(--ink-4);font-size:15px;cursor:pointer;padding:0 2px;opacity:.5;transition:color .12s,opacity .12s}
.tx-dhabx:hover{color:var(--warn);opacity:1}
.tx-dhabs .tx-relchip.add{align-self:flex-start}
.tx-patlog{flex:none;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);border:1px solid color-mix(in srgb,var(--warn) 40%,transparent);border-radius:7px;padding:5px 12px;cursor:pointer;transition:background .12s}
.tx-patlog:hover{background:color-mix(in srgb,var(--warn) 22%,transparent)}
.tx-patdel{flex:none;background:none;border:none;color:var(--ink-4);font-size:14px;cursor:pointer;padding:0 2px;opacity:.5;transition:color .12s,opacity .12s}
.tx-patdel:hover{color:var(--warn);opacity:1}
.tx-patadd{margin-top:2px}
.tx-patnew{width:100%;background:none;border:1px dashed var(--line-2);border-radius:7px;outline:none;color:var(--ink);font-family:var(--sans);font-size:12px;padding:9px 11px;transition:border-color .12s,border-style .12s}
.tx-patnew::placeholder{color:var(--ink-4)}
.tx-patnew:focus{border-color:var(--warn);border-style:solid}

/* ── Traits tab v2: board (vices | virtues) + detail panel, like Wants ── */
.tx-split{display:flex;gap:20px;padding:18px 24px 34px;height:100%;overflow:hidden}
.tx-board{flex:1 1 54%;min-width:0;display:grid;grid-template-columns:1fr 1fr;gap:18px;overflow-y:auto;align-content:start}
.tx-detail{flex:1 1 46%;min-width:0;overflow-y:auto;border-left:1px solid var(--line);padding-left:22px}
@media(max-width:1100px){.tx-split{flex-direction:column;overflow:auto;height:auto}.tx-detail{border-left:none;border-top:1px solid var(--line);padding-left:0;padding-top:16px}}
@media(max-width:680px){.tx-board{grid-template-columns:1fr}}
.tx-card{cursor:pointer;transition:border-color .13s,box-shadow .13s}
.tx-card.sel{border-color:var(--rc) !important;box-shadow:inset 0 0 0 1px var(--rc),0 0 24px -10px var(--rc)}
/* Traits tab v3 — vices + virtues as a honeycomb of map-style hexagon gems */
.tx-hexboard{display:block !important;background:var(--void) !important;background-image:none !important}
.tx-hexsec,.tx-hexgrid{background:transparent}
/* THE corner-gradient fix: .tx-vice/.tx-virtue paint a rectangular gradient bg (for the CARD layout).
   On a HEX tile that rectangle bleeds its colour into the square corners around the hexagon. Kill it —
   the hex's colour comes from its SVG frame, not a background rectangle. */
.tx-hex.tx-vice,.tx-hex.tx-virtue,.tx-hex.tx-create{background:none !important}
.tx-hexsec{margin-bottom:22px}
.tx-hexsec:last-child{margin-bottom:0}
/* true honeycomb: fixed columns, odd rows shifted half a cell, rows overlap 26% so the pointy-top hexes interlock */
.tx-hexgrid{display:grid;grid-template-columns:repeat(5,var(--hw));justify-content:center;--hw:142px;--hh:159px;padding:12px calc(var(--hw)/2) 18px;margin-top:6px}
.tx-hex{position:relative;width:var(--hw);height:var(--hh);--gemc:var(--rc);cursor:pointer;margin-top:calc(var(--hh) * -0.26);transition:filter .14s;
  /* confine hover + glow to the actual hexagon so overlapping rectangular tiles don't hijack each other's hover */
  clip-path:polygon(50% 1.8%,98% 26.8%,98% 73.2%,50% 98.2%,2% 73.2%,2% 26.8%)}
.tx-hex:nth-child(-n+5){margin-top:0}
.tx-hex:nth-child(10n+6),.tx-hex:nth-child(10n+7),.tx-hex:nth-child(10n+8),.tx-hex:nth-child(10n+9),.tx-hex:nth-child(10n+10){transform:translateX(50%)}
.tx-hex:hover{z-index:2}
.tx-hex.sel{z-index:3}
.tx-hex .bw-hexf{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;filter:drop-shadow(0 5px 12px rgba(0,0,0,.45))}
.tx-hex:hover .bw-hexf{filter:brightness(1.16) drop-shadow(0 3px 7px rgba(0,0,0,.45))}
.tx-hex.sel .bw-hexf{filter:brightness(1.32) saturate(1.12) drop-shadow(0 0 4px color-mix(in srgb,var(--rc) 58%,transparent))}
@media(max-width:1100px){.tx-hexgrid{grid-template-columns:repeat(auto-fill,var(--hw));justify-content:start;padding:0;gap:8px}.tx-hex{margin-top:0 !important;transform:none !important}}
/* traits honeycomb sits on a plain board — no filled cell background, just the frame */
.tx-hex .bw-hexbg{fill:transparent}
.tx-hex .bw-hexcore{fill:transparent}
/* create tile — dashed, muted; brightens on hover */
.tx-create{opacity:.62;transition:opacity .14s,transform .14s}
.tx-create:hover{opacity:1;transform:translateY(-3px)}
.tx-create .bw-hexf{opacity:.5}
.tx-create:hover .bw-hexf{opacity:.9}
.tx-createmk{font-family:var(--sans);font-size:24px;font-weight:300;color:var(--rc);line-height:1}
.tx-createlbl{font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-4);margin-top:3px}
.tx-create.active{opacity:1}
.tx-create.active .bw-hexf{opacity:1;filter:drop-shadow(0 0 12px color-mix(in srgb,var(--rc) 60%,transparent))}
/* live sigil forge — the detail panel becomes a big gematria preview that regenerates as you type */
.tx-forge{--rc:#a99bf9;display:flex;flex-direction:column;align-items:center;text-align:center;padding:18px 8px 8px}
.tx-forge-type{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--rc);opacity:.85}
.tx-forge-sig{width:min(340px,80%);aspect-ratio:1;margin:20px 0 10px;display:grid;place-items:center;filter:drop-shadow(0 0 26px color-mix(in srgb,var(--rc) 45%,transparent))}
.tx-forge-sig svg{width:100%;height:100%;display:block;animation:txforgespin 40s linear infinite;transform-origin:center}
@media(prefers-reduced-motion:reduce){.tx-forge-sig svg{animation:none}}
@keyframes txforgespin{to{transform:rotate(360deg)}}
.tx-forge-name{font-family:var(--sans);font-size:19px;font-weight:700;color:var(--ink);min-height:1.3em;letter-spacing:.01em;text-wrap:balance}
.tx-forge-ph{color:var(--ink-4);font-weight:500;font-size:14px}
.tx-forge-in{width:min(320px,100%);margin-top:14px;background:var(--void-1,#0b0c0e);border:1px solid var(--line-2);border-radius:9px;color:var(--ink);font-family:var(--sans);font-size:15px;font-weight:600;text-align:center;padding:11px 14px;outline:none}
.tx-forge-in:focus{border-color:var(--rc);box-shadow:0 0 0 1px color-mix(in srgb,var(--rc) 40%,transparent)}
.tx-forge-hint{font-family:var(--mono);font-size:9.5px;letter-spacing:.04em;color:var(--ink-4);margin-top:9px}
.tx-forge-act{display:flex;gap:9px;margin-top:18px}
.tx-forge-x{background:none;border:1px solid var(--line-2);border-radius:8px;color:var(--ink-3);font-family:var(--sans);font-size:12px;font-weight:600;padding:9px 16px;cursor:pointer}
.tx-forge-x:hover{color:var(--ink);border-color:var(--ink-4)}
.tx-forge-go{position:relative;display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,color-mix(in srgb,var(--rc) 32%,transparent),color-mix(in srgb,var(--rc) 12%,transparent));border:1px solid var(--rc);border-radius:11px;color:var(--rc);font-family:var(--sans);font-size:12.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;padding:12px 24px;cursor:pointer;overflow:hidden;transition:box-shadow .18s,transform .12s,background .15s}
.tx-forge-go span{position:relative;z-index:1}
.tx-forge-go:hover{background:linear-gradient(135deg,color-mix(in srgb,var(--rc) 48%,transparent),color-mix(in srgb,var(--rc) 20%,transparent));box-shadow:0 0 24px -2px color-mix(in srgb,var(--rc) 58%,transparent),inset 0 0 12px -4px color-mix(in srgb,var(--rc) 60%,transparent);transform:translateY(-1px)}
.tx-forge-go:active{transform:translateY(0)}
.tx-forge-go:disabled{opacity:.55;cursor:default;box-shadow:none;transform:none}
.tx-forge-go::before{content:'';position:absolute;inset:0;z-index:0;background:linear-gradient(120deg,transparent 32%,color-mix(in srgb,#fff 20%,transparent) 50%,transparent 68%);transform:translateX(-130%);transition:transform .55s ease}
.tx-forge-go:hover::before{transform:translateX(130%)}
.tx-forge-spark{width:16px;height:16px;flex:none;position:relative;z-index:1;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--rc) 75%,transparent));animation:txspark 2.4s ease-in-out infinite}
@keyframes txspark{0%,100%{transform:rotate(0) scale(1);opacity:.82}50%{transform:rotate(22deg) scale(1.18);opacity:1}}
@media(prefers-reduced-motion:reduce){.tx-forge-spark{animation:none}.tx-forge-go::before{transition:none}}
/* forge step 2 — add behaviours / patterns */
.tx-forge-sig.sm{width:min(150px,42%);margin:14px 0 6px}
.tx-forge-sublbl{font-family:var(--sans);font-size:13px;line-height:1.4;color:var(--ink-2);margin-top:16px;max-width:320px}
.tx-forge-subs{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-top:12px;max-width:360px}
.tx-forge-chip{font-family:var(--sans);font-size:12px;color:var(--ink);background:color-mix(in srgb,var(--rc) 11%,transparent);border:1px solid color-mix(in srgb,var(--rc) 36%,transparent);border-radius:20px;padding:5px 12px}
.tx-forge-subempty{font-family:var(--sans);font-size:12px;color:var(--ink-4);margin-top:10px}
/* enriched trait detail — sigil header, stats grid, activity heatmap */
.tx-dhead2{display:flex;gap:15px;align-items:center;margin-bottom:16px}
.tx-dsig{width:68px;height:68px;flex:none;filter:drop-shadow(0 0 11px color-mix(in srgb,var(--rc) 48%,transparent))}
.tx-dsig svg{width:100%;height:100%;display:block}
.tx-dhinfo{flex:1;min-width:0}
.tx-dtype{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--rc);margin-bottom:5px}
.tx-dhead2 .tx-dt{font-family:var(--sans);font-size:19px;font-weight:700;color:var(--ink);line-height:1.15;display:block;margin-bottom:9px;letter-spacing:.01em}
.tx-dhead2 .tx-gripbar.big{margin:0}
.tx-dstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(66px,1fr));gap:6px;margin:0 0 18px;padding:13px 0;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.tx-dstat{text-align:center;min-width:0}
.tx-dstat b{display:block;font-family:var(--sans);font-size:16px;font-weight:700;color:var(--ink);line-height:1.1;font-variant-numeric:tabular-nums}
.tx-dstat span{font-family:var(--mono);font-size:8px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);display:block;margin-top:3px}
.tx-heat{display:flex;gap:3px;margin:2px 0 18px}
.tx-hmcol{display:flex;flex-direction:column;gap:3px}
.tx-hm{width:12px;height:12px;border-radius:2px;background:rgba(255,255,255,.05)}
.tx-hm.empty{background:transparent}
.tx-hm.l1{background:rgba(169,155,249,.32)}
.tx-hm.l2{background:rgba(169,155,249,.62)}
.tx-hm.l3{background:#a99bf9;box-shadow:0 0 5px rgba(169,155,249,.5)}
.tx-heat.vice .tx-hm.l1{background:rgba(229,72,77,.32)}
.tx-heat.vice .tx-hm.l2{background:rgba(229,72,77,.6)}
.tx-heat.vice .tx-hm.l3{background:#E5484D;box-shadow:0 0 5px rgba(229,72,77,.5)}
/* linked quests in the trait detail */
.tx-dquests{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.tx-dquest{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid color-mix(in srgb,#ECC94B 26%,var(--line-2));border-radius:8px;background:linear-gradient(160deg,color-mix(in srgb,#ECC94B 6%,var(--void-2,#0e1013)),var(--void-2,#0e1013));cursor:pointer;transition:border-color .12s,transform .12s}
.tx-dquest:hover{border-color:color-mix(in srgb,#ECC94B 55%,transparent);transform:translateX(2px)}
.tx-dqoct{width:22px;height:22px;flex:none;display:grid;place-items:center}
.tx-dqoct svg{width:20px;height:20px;filter:drop-shadow(0 0 3px color-mix(in srgb,#ECC94B 45%,transparent))}
.tx-dqbody{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.tx-dqtop{display:flex;align-items:center;gap:8px}
.tx-dqt{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}
.tx-dquest.done .tx-dqt{color:var(--ink-4);text-decoration:line-through}
.tx-dqdl{flex:none;font-family:var(--mono);font-size:9.5px;font-variant-numeric:tabular-nums;color:var(--ink-4)}
.tx-dqdl.soon{color:var(--gold,#ECC94B)}
.tx-dqdl.over{color:#E9603A}
.tx-dqdl.done{color:#3ED66B}
.tx-dqbar{height:4px;border-radius:3px;background:rgba(255,255,255,.09);overflow:hidden}
.tx-dqbar i{display:block;height:100%;border-radius:3px;background:#ECC94B}
.tx-dqbar.done i{background:#3ED66B}
.tx-dqdone{color:#3ED66B;font-size:12px;flex:none}
.tx-hexin{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 22px;gap:2px}
.tx-hexsig{height:52px;width:100%}
.tx-hexsig svg{width:100%;height:100%;display:block}
.tx-hexname{font-family:var(--sans);font-size:12.5px;font-weight:700;color:var(--ink);line-height:1.14;letter-spacing:.01em;max-width:108px;text-wrap:balance;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.tx-hexlbl{font-family:var(--mono);font-size:8px;letter-spacing:.22em;font-weight:700;color:var(--rc);text-transform:uppercase;display:inline-flex;align-items:center;justify-content:center;gap:5px;margin-top:2px;opacity:.9}
.tx-hexlbl .tx-solbadge{display:inline-flex;width:15px;height:15px;flex:none}
.tx-hexlbl .tx-solbadge svg{width:100%;height:100%}
.tx-hexlv{display:flex;flex-direction:row;align-items:baseline;gap:5px;margin-top:4px}
.tx-hexlv b{font-family:var(--sans);font-size:12px;font-weight:800;color:var(--rc);letter-spacing:.02em}
/* sub-layer indicator on each hex: how many personal behaviours feed this vice/virtue */
.tx-hexbeh{font-family:var(--mono);font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--rc) 62%,var(--ink-4));margin-top:3px;opacity:.9;cursor:pointer;border-bottom:1px dotted transparent;transition:color .12s,border-color .12s}
.tx-hexbeh:hover{color:var(--rc);border-bottom-color:color-mix(in srgb,var(--rc) 55%,transparent)}
.tx-hexbeh.empty{color:var(--ink-4);opacity:.5}
.tx-hexbeh.empty:hover{color:var(--rc);opacity:.9}
/* LEFT-BOARD SHARDS — selected vice's habits as red shards under the vices honeycomb */
.tx-shardstrip{margin:0 0 22px;padding:0 8px}
.tx-shardhd{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:color-mix(in srgb,var(--rc,#E5484D) 78%,var(--ink-3));margin-bottom:9px;display:flex;align-items:center;gap:6px}
.tx-shardmk{color:var(--rc,#E5484D)}
.tx-shardrow{display:flex;flex-wrap:wrap;gap:8px}
.tx-shard{position:relative;display:inline-flex;align-items:center;gap:8px;border:none;cursor:pointer;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink);padding:8px 26px 8px 13px;background:linear-gradient(100deg,color-mix(in srgb,var(--rc,#E5484D) 22%,var(--void-2)),color-mix(in srgb,var(--rc,#E5484D) 8%,var(--void-2)) 60%,var(--void-2));clip-path:polygon(0 0,calc(100% - 14px) 0,100% 50%,calc(100% - 14px) 100%,0 100%);transition:filter .12s;max-width:100%}
.tx-shard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2.5px;background:var(--rc,#E5484D);box-shadow:0 0 8px -1px color-mix(in srgb,var(--rc,#E5484D) 70%,transparent)}
.tx-shard:hover{filter:brightness(1.15)}
.tx-shardn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}
.tx-shardstat{flex:none;font-family:var(--mono);font-size:10px;color:color-mix(in srgb,var(--rc,#E5484D) 85%,#fff);font-variant-numeric:tabular-nums;opacity:.9}
.tx-shardstat b{font-weight:700;color:var(--rc,#E5484D)}
.tx-shardnone{font-family:var(--sans);font-size:11.5px;color:var(--ink-4);opacity:.7}
.tx-shardhd em{font-style:normal;color:var(--ink-4);font-family:var(--mono)}
/* minimal clean list (replaces the shard cards — one card language on this pane) */
.tx-shardlist{display:flex;flex-direction:column}
.tx-shardli{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--line-3);cursor:pointer;padding:8px 4px;font-family:var(--sans);transition:background .1s}
.tx-shardli:last-child{border-bottom:none}
.tx-shardli:hover{background:color-mix(in srgb,var(--rc,#E5484D) 6%,transparent)}
.tx-shardli-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;color:var(--ink-2)}
.tx-shardli-f{flex:none;font-family:var(--mono);font-size:10px;letter-spacing:.02em;color:color-mix(in srgb,var(--rc,#E5484D) 80%,var(--ink-3));font-variant-numeric:tabular-nums}
/* ghost the non-selected sigils when a trait is focused */
.tx-hex.ghost{opacity:.28;filter:saturate(.6);transition:opacity .16s,filter .16s}
.tx-hex.ghost:hover{opacity:.7}
/* ══ HABIT BLADES — the map's red sword, forged per habit in the vice detail ══ */
.tx-blade{position:relative;width:100%;min-height:70px;margin-bottom:9px;cursor:pointer}
.tx-blade .bw-hexf{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 4px 14px rgba(0,0,0,.5))}
.tx-blade:hover .bw-hexf{filter:brightness(1.1) drop-shadow(0 3px 11px rgba(229,72,77,.28))}
.tx-blade.exp .bw-hexf{filter:brightness(1.16) drop-shadow(0 0 9px rgba(229,72,77,.42))}
.tx-bladein{position:relative;z-index:1;display:flex;align-items:center;gap:12px;padding:11px 52px 11px 16px;min-height:70px}
.tx-bladesig{flex:none;width:46px;height:46px;display:inline-flex;filter:drop-shadow(0 0 5px rgba(229,72,77,.5))}
.tx-bladesig svg{width:100%;height:100%}
.tx-bladebody{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.tx-bladename{font-family:var(--sans);font-size:14.5px;font-weight:700;font-style:italic;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tx-blademeta{font-family:var(--mono);font-size:10px;color:color-mix(in srgb,#E5484D 55%,var(--ink-3));font-variant-numeric:tabular-nums}
.tx-blademeta b{color:#E5484D;font-weight:700}
.tx-bladein .tx-patspark{flex:none;width:50px;opacity:.85}
/* round icon slip-button (no box, no label) */
.tx-bladedid{flex:none;width:31px;height:31px;border-radius:50%;border:1.5px solid color-mix(in srgb,#E5484D 48%,transparent);background:color-mix(in srgb,#E5484D 9%,transparent);color:#E5484D;font-size:16px;line-height:1;font-weight:400;cursor:pointer;display:grid;place-items:center;transition:transform .1s,background .12s,color .12s}
.tx-bladedid:hover{background:#E5484D;color:#0b0c10;transform:scale(1.08)}
.tx-bladedid.grn{border-color:color-mix(in srgb,#3ED66B 48%,transparent);background:color-mix(in srgb,#3ED66B 10%,transparent);color:#3ED66B;font-size:14px}
.tx-bladedid.grn:hover,.tx-bladedid.grn.on{background:#3ED66B;color:#0b0c10}
.tx-bladexc{flex:none;background:none;border:none;color:var(--ink-4);font-size:14px;cursor:pointer;opacity:.4;padding:0 2px;transition:color .12s,opacity .12s}
.tx-bladexc:hover{color:#3ED66B;opacity:1}
.tx-bladecar{flex:none;color:var(--ink-4);font-size:9px;margin-left:-4px}
/* GREEN counter blade variants */
.tx-blade.grn .bw-hexf{filter:drop-shadow(0 4px 14px rgba(0,0,0,.5))}
.tx-blade.grn:hover .bw-hexf{filter:brightness(1.1) drop-shadow(0 3px 11px rgba(62,214,107,.28))}
.tx-bladesig.grn{filter:drop-shadow(0 0 5px rgba(62,214,107,.5))}
.tx-blademeta.grn{color:color-mix(in srgb,#3ED66B 55%,var(--ink-3))}
.tx-blademeta.grn b{color:#3ED66B}
.tx-dlab.grn{color:color-mix(in srgb,#3ED66B 72%,var(--ink-3))}
.tx-dlab.red{color:color-mix(in srgb,#E5484D 72%,var(--ink-3))}
.tx-forgehab.grn .tx-forgehab-mk{color:color-mix(in srgb,#3ED66B 72%,var(--ink-4))}
.tx-forgehab.grn .tx-forgehab-in:focus{border-bottom-color:#3ED66B}
.tx-forgehab.grn .tx-forgehab-link:hover{color:#3ED66B;border-bottom-color:color-mix(in srgb,#3ED66B 50%,transparent)}
.tx-habpoolchip.grn{background:linear-gradient(100deg,color-mix(in srgb,#3ED66B 18%,var(--void-2)),color-mix(in srgb,#3ED66B 6%,var(--void-2)) 60%,var(--void-2))}
.tx-habpoolchip.grn::before{background:#3ED66B}
/* ACTIVITY MONITOR — diverging bars, green up / red down */
.tx-monlab{margin-bottom:9px}
.tx-mon{margin:0 0 20px}
.tx-mon-svg{width:100%;height:76px;display:block}
.tx-mon-zero{stroke:rgba(255,255,255,.16)}
.tx-mon-leg{display:flex;gap:16px;margin-top:6px;font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase}
.tx-mon-leg .g{color:#3ED66B}
.tx-mon-leg .r{color:#E5484D}
.tx-habexp{margin:-3px 0 13px 14px;padding:12px 14px;border-left:2px solid color-mix(in srgb,#E5484D 40%,transparent);background:linear-gradient(100deg,color-mix(in srgb,#E5484D 5%,transparent),transparent 70%)}
.tx-habmaphint{font-family:var(--sans);font-size:12px;color:var(--ink-3);margin-bottom:8px}
.tx-inkbtn{background:none;border:none;border-bottom:1px dotted currentColor;color:var(--accent-2,#2DD4BF);font-family:var(--sans);font-size:12px;font-weight:600;cursor:pointer;padding:0 0 1px}
.tx-inkbtn:hover{color:var(--ink)}
.tx-inkbtn.danger{color:color-mix(in srgb,#E5484D 80%,var(--ink-3))}
.tx-inkbtn.danger:hover{color:#E5484D}
.tx-habexprow{margin-top:10px}
/* FORGE add-row — inked prompt, no boxes */
.tx-forgehab{display:flex;align-items:center;gap:10px;margin-top:10px;padding:9px 2px 4px;border-top:1px solid var(--line)}
.tx-forgehab-mk{flex:none;color:color-mix(in srgb,#E5484D 70%,var(--ink-4));font-size:15px}
.tx-forgehab-in{flex:1;min-width:0;background:none;border:none;border-bottom:1px dashed var(--line-2);color:var(--ink);font-family:var(--sans);font-size:13.5px;padding:5px 2px;outline:none;transition:border-color .12s}
.tx-forgehab-in:focus{border-bottom-color:#E5484D}
.tx-forgehab-in::placeholder{color:var(--ink-4)}
.tx-forgehab-link{flex:none;background:none;border:none;color:var(--ink-3);font-family:var(--sans);font-size:11.5px;cursor:pointer;border-bottom:1px dotted transparent;transition:color .12s,border-color .12s}
.tx-forgehab-link:hover{color:#E5484D;border-bottom-color:color-mix(in srgb,#E5484D 50%,transparent)}
/* pool of existing habits to wield — mini blade-shards */
.tx-habpool{display:flex;flex-wrap:wrap;gap:8px;margin:11px 0 2px}
.tx-habpoolchip{position:relative;display:inline-flex;align-items:center;gap:7px;border:none;cursor:pointer;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink);padding:6px 22px 6px 8px;background:linear-gradient(100deg,color-mix(in srgb,#E5484D 18%,var(--void-2)),color-mix(in srgb,#E5484D 6%,var(--void-2)) 60%,var(--void-2));clip-path:polygon(0 0,calc(100% - 12px) 0,100% 50%,calc(100% - 12px) 100%,0 100%);transition:filter .12s}
.tx-habpoolchip::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:#E5484D}
.tx-habpoolchip:hover{filter:brightness(1.15)}
.tx-hpcsig{flex:none;width:18px;height:18px;display:inline-flex}
.tx-hpcsig svg{width:100%;height:100%}
/* minimal inline search under the forge input (type to link an existing one) */
.tx-forgeres{display:none;flex-wrap:wrap;gap:6px;margin:6px 0 2px;max-height:172px;overflow-y:auto}
.tx-forgeres.show{display:flex}
.tx-forgeres-o{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:12px;color:var(--ink-2);background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:7px;padding:5px 10px 5px 7px;cursor:pointer;transition:color .12s,border-color .12s}
.tx-forgeres-o:hover{color:var(--ink);border-color:#E5484D}
.tx-forgeres.grn .tx-forgeres-o:hover{border-color:#3ED66B}
.tx-fro-sig{width:16px;height:16px;flex:none}.tx-fro-sig svg{width:100%;height:100%}
/* ══ SUB-BLOCKS — habits & counters as chamfered RECTANGLE blocks (like the map cards) ══ */
.tx-subhive{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin:2px 0 10px}
.tx-subblk{position:relative;display:flex;align-items:center;gap:10px;padding:11px 13px;cursor:pointer;--rc:#E5484D;background:linear-gradient(120deg,color-mix(in srgb,var(--rc) 12%,var(--void-2)),var(--void-2) 75%);border:1px solid color-mix(in srgb,var(--rc) 28%,var(--line-2));clip-path:polygon(0 0,100% 0,100% calc(100% - 11px),calc(100% - 11px) 100%,0 100%);transition:border-color .12s,filter .12s}
.tx-subblk:hover{filter:brightness(1.1);border-color:var(--rc)}
.tx-subblk.sel{border-color:var(--rc);box-shadow:inset 0 0 0 1px var(--rc)}
.tx-subblk-sig{width:30px;height:30px;flex:none}
.tx-subblk-sig svg{width:100%;height:100%;display:block}
.tx-subblk-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.tx-subblk-n{font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tx-subblk-s{font-family:var(--mono);font-size:9.5px;color:var(--rc);font-variant-numeric:tabular-nums}
.tx-subblk-s b{font-weight:700}
.tx-subblk-s.on{color:#3ED66B}
.tx-subblk.tx-subcreate{opacity:.55;border-style:dashed;background:none;justify-content:center;gap:6px}
.tx-subblk.tx-subcreate:hover{opacity:1;filter:none}
.tx-subblk-mk{font-size:15px;color:var(--rc);line-height:1}
.tx-subdet{margin:0 0 15px;padding:13px 15px;border:1px solid color-mix(in srgb,var(--rc) 30%,var(--line-2));border-left:2px solid var(--rc);border-radius:0 9px 9px 0;background:linear-gradient(100deg,color-mix(in srgb,var(--rc) 6%,var(--void-2)),var(--void-2) 70%)}
.tx-subdet-hd{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.tx-subdet-nm{flex:1;min-width:0;font-family:var(--sans);font-size:14px;font-weight:700;font-style:italic;color:var(--ink)}
.tx-subdet-stat{flex:none;font-family:var(--mono);font-size:10px;color:color-mix(in srgb,var(--rc) 70%,var(--ink-3));font-variant-numeric:tabular-nums}
.tx-subdet-stat b{color:var(--rc)}
.tx-hexlv span{font-family:var(--mono);font-size:8px;color:var(--ink-3);font-variant-numeric:tabular-nums}
@media(max-width:680px){.tx-hexgrid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}}
/* Habits tab — gallery of evolving loop-gem cards. Mastery = cumulative reps; the orbit grows with it. */
.hbg-grp{margin-bottom:20px}
.hbg-grp.col .hbg-grid{display:none}
.hbg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px;margin-top:12px;padding:0 14px;align-items:stretch}
/* 4-quadrant habits: 2 columns (Virtues · building | Vices · breaking) × In-progress / Not-in-progress */
.hbq-cols{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:6px}
.hbq-col{min-width:0;padding-bottom:8px}
.hbq-col.hbq-vice{border-left:1px solid var(--line)}
.hbq-colhd{display:flex;align-items:baseline;gap:9px;padding:12px 14px 2px;font-family:var(--disp,var(--sans));font-weight:800;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#3ED66B}
.hbq-col.hbq-vice .hbq-colhd{color:#E5484D}
.hbq-colhd em{font-family:var(--sans);font-weight:500;font-size:10px;letter-spacing:.02em;text-transform:none;color:var(--ink-3);font-style:normal}
.hbq-cv{font-size:13px}
.hbq-col .hbg-grid{grid-template-columns:repeat(auto-fill,minmax(146px,1fr));gap:10px}
.hbq-col .hbg-grp{margin-bottom:12px}
.hbq-col .hbx-ghead{padding-left:14px}
@media(max-width:820px){.hbq-cols{grid-template-columns:1fr}.hbq-col.hbq-vice{border-left:none;border-top:1px solid var(--line);margin-top:6px}}
.hbg-card{position:relative;display:flex;flex-direction:column;--hc:#3ED66B;background:linear-gradient(180deg,color-mix(in srgb,var(--hc) 5%,var(--void-2,#0e1013)),var(--void-2,#0e1013));border:1px solid color-mix(in srgb,var(--hc) 24%,var(--line-2));border-radius:13px;padding:12px 13px 13px;cursor:pointer;text-align:center;transition:transform .14s,border-color .14s,box-shadow .14s}
.hbg-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--hc) 52%,transparent);box-shadow:0 14px 32px -16px rgba(0,0,0,.75)}
.hbg-card.sel{border-color:var(--hc);box-shadow:0 0 0 1px var(--hc),0 14px 32px -16px rgba(0,0,0,.75)}
.hbg-card.held{background:linear-gradient(180deg,color-mix(in srgb,var(--hc) 13%,var(--void-2,#0e1013)),var(--void-2,#0e1013))}
/* header: terminal-mono kind tag on the left, mastery tier on the right */
.hbg-hd{display:flex;align-items:center;justify-content:space-between;gap:6px}
.hbg-kind{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:color-mix(in srgb,var(--hc) 78%,var(--ink-4))}
.hbg-vv{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#3ED66B;margin-right:auto;opacity:.92}
.hbg-vv.vice{color:#E5484D}
.hbg-tier{font-family:var(--mono);font-size:8.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4)}
.hbg-sig{height:74px;margin:6px 0 7px;display:grid;place-items:center}
.hbg-sig svg{width:74px;height:74px;display:block;animation:hbgorbit 34s linear infinite;transform-origin:center}
.hbg-card.brk .hbg-sig svg{animation-direction:reverse;animation-duration:46s}
@media(prefers-reduced-motion:reduce){.hbg-sig svg{animation:none}}
@keyframes hbgorbit{to{transform:rotate(360deg)}}
.hbg-name{font-family:var(--sans);font-size:14px;font-weight:700;color:var(--ink);line-height:1.16;letter-spacing:.01em;text-wrap:balance;min-height:2.3em;display:flex;align-items:center;justify-content:center}
.hbg-reps{font-family:var(--mono);font-size:11px;color:var(--ink-2);margin-top:5px;font-variant-numeric:tabular-nums}
.hbg-reps b{color:var(--hc);font-weight:700}
.hbg-reps span{color:var(--ink-4)}
.hbg-streak{font-family:var(--mono);font-size:10px;color:var(--ink-4);margin-top:3px;font-variant-numeric:tabular-nums}
.hbg-streak.held{color:color-mix(in srgb,var(--hc) 80%,var(--ink-3))}
.hbg-log{margin-top:auto;width:100%;background:transparent;border:1px solid color-mix(in srgb,var(--hc) 42%,transparent);border-radius:8px;color:var(--hc);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:8px;cursor:pointer;transition:background .12s}
.hbg-streak{margin-bottom:12px}
.hbg-log:hover{background:color-mix(in srgb,var(--hc) 14%,transparent)}
.hbg-log.on{background:color-mix(in srgb,var(--hc) 18%,transparent);border-color:var(--hc)}
/* drag-to-activate: dragged card + Active drop target */
.hbg-card{-webkit-user-drag:element}
/* ghost "create" cards — always present so a new habit/vice is one click away, colour-coded by kind */
.hbg-card.ghost{justify-content:center;align-items:center;gap:5px;min-height:150px;background:none;border:1.5px dashed color-mix(in srgb,var(--hc) 38%,var(--line-2));cursor:pointer;-webkit-user-drag:none;opacity:.72}
.hbg-card.ghost:hover{opacity:1;border-color:var(--hc);background:color-mix(in srgb,var(--hc) 6%,transparent);transform:none}
.hbg-card.ghost.build{--hc:#3ED66B}.hbg-card.ghost.brk{--hc:#E5484D}
.hbg-gplus{font-size:22px;line-height:1;color:var(--hc);font-weight:400}
.hbg-glbl{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink-2)}
.hbg-gsub{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--hc)}
.hbg-card.hbg-dragging{opacity:.45}
.hbg-grid.hbg-dropover{outline:2px dashed color-mix(in srgb,#3ED66B 60%,transparent);outline-offset:4px;border-radius:12px;background:color-mix(in srgb,#3ED66B 5%,transparent)}
.hbg-dropfill{grid-column:1/-1;text-align:center;padding:22px 10px;border:1px dashed var(--line-2);border-radius:12px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink-4)}
/* activation modal */
.hbact-ov{position:fixed;inset:0;z-index:500;background:rgba(4,5,7,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;animation:agcmdIn .14s ease}
.hbact-modal{--hc:#3ED66B;width:min(430px,calc(100vw - 40px));max-height:calc(100vh - 60px);overflow-y:auto;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:15px;box-shadow:0 30px 70px -20px rgba(0,0,0,.85);padding:18px 20px 20px}
.hbact-hd{display:flex;align-items:center;gap:9px;margin-bottom:16px}
.hbact-kind{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.2em;color:var(--hc);border:1px solid color-mix(in srgb,var(--hc) 45%,transparent);border-radius:3px;padding:2px 7px}
.hbact-ti{flex:1;min-width:0;font-family:var(--sans);font-size:15px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hbact-x{background:none;border:none;color:var(--ink-4);font-size:14px;cursor:pointer;padding:2px 5px}
.hbact-x:hover{color:var(--ink)}
.hbact-lbl{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin:14px 0 8px}
.hbact-lbl:first-of-type{margin-top:0}
.hbact-lbl em{font-style:normal;font-weight:500;letter-spacing:.06em;text-transform:none;color:var(--ink-4);margin-left:6px}
.hbact-qin{width:100%;background:var(--void-1,#0b0c0e);border:1px solid var(--line-2);border-radius:8px;color:var(--ink);font-family:var(--sans);font-size:14px;font-weight:600;padding:10px 12px;outline:none}
.hbact-qin:focus{border-color:var(--hc)}
.hbact-wants{max-height:230px;overflow-y:auto;border:1px solid var(--line-2);border-radius:9px;padding:5px}
.hbact-wrow{display:flex;align-items:center;gap:6px;border-radius:7px}
.hbact-wrow.sel{background:color-mix(in srgb,var(--hc) 12%,transparent)}
.hbact-wcar{background:none;border:none;color:var(--ink-4);font-size:10px;cursor:pointer;padding:6px 2px;transition:transform .12s;flex:none}
.hbact-wcar.open{transform:rotate(90deg);color:var(--hc)}
.hbact-wdot{color:color-mix(in srgb,#2DD4BF 70%,var(--ink-4));font-size:9px;padding:0 3px;flex:none}
.hbact-wsel{flex:1;text-align:left;background:none;border:none;color:var(--ink-2);font-family:var(--sans);font-size:13px;font-weight:600;padding:8px 6px;cursor:pointer;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hbact-wrow.sel .hbact-wsel{color:var(--hc)}
.hbact-wsel:hover{color:var(--ink)}
.hbact-empty{font-family:var(--sans);font-size:12px;color:var(--ink-4);padding:12px 10px;text-align:center}
.hbact-act{display:flex;gap:9px;margin-top:16px}
.hbact-cancel{flex:0 0 auto;background:none;border:1px solid var(--line-2);border-radius:8px;color:var(--ink-3);font-family:var(--sans);font-size:12px;font-weight:600;padding:9px 16px;cursor:pointer}
.hbact-cancel:hover{color:var(--ink);border-color:var(--ink-4)}
.hbact-go{flex:1;background:color-mix(in srgb,var(--hc) 16%,transparent);border:1px solid var(--hc);border-radius:8px;color:var(--hc);font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.03em;padding:9px;cursor:pointer;transition:background .12s}
.hbact-go:hover{background:color-mix(in srgb,var(--hc) 26%,transparent)}
.hbact-go:disabled{opacity:.6;cursor:default}
/* grip meter (vice: down is good) */
.tx-grip{display:flex;align-items:baseline;gap:3px;margin-left:auto}
.tx-grip b{font-family:var(--mono);font-size:18px;font-weight:600;color:var(--warn);font-variant-numeric:tabular-nums;line-height:1}
.tx-grip span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-4)}
.tx-gripbar{height:4px;background:var(--line-2);position:relative;overflow:hidden;margin:10px 0 2px;border-radius:2px}
.tx-gripbar i{position:absolute;left:0;top:0;bottom:0;background:var(--warn);box-shadow:0 0 7px color-mix(in srgb,var(--warn) 55%,transparent);transition:width .3s}
.tx-gripbar.big{height:6px;margin:11px 0 16px}
/* single-line behaviours in the board cards */
.tx-bhs{margin-top:11px;display:flex;flex-direction:column;gap:1px}
.tx-bh{display:flex;align-items:center;gap:8px;padding:5px 2px;border-top:1px solid rgba(255,255,255,.05)}
.tx-bh:first-child{border-top:none}
.tx-bhdot{width:6px;height:6px;border-radius:50%;background:var(--warn);flex:none;opacity:.8}
.tx-bhcheck{flex:none;width:19px;height:19px;border-radius:50%;border:1.4px solid var(--line-2);background:none;color:transparent;cursor:pointer;display:grid;place-items:center;font-size:11px;transition:border-color .12s,color .12s,background .12s}
.tx-bhcheck.on{border-color:var(--rc,var(--good));color:var(--rc,var(--good));background:color-mix(in srgb,var(--rc,var(--good)) 15%,transparent)}
.tx-bht{flex:1;min-width:0;font-family:var(--sans);font-size:12.5px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tx-bhn{flex:none;font-family:var(--mono);font-size:10px;color:var(--ink-4);font-variant-numeric:tabular-nums}
.tx-bhlog{flex:none;font-family:var(--sans);font-size:10px;font-weight:600;color:var(--warn);background:none;border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:5px;padding:2px 8px;cursor:pointer;transition:background .12s}
.tx-bhlog:hover{background:color-mix(in srgb,var(--warn) 15%,transparent)}
.tx-bhadd{margin-top:3px}
.tx-bhin{width:100%;background:none;border:none;border-top:1px solid rgba(255,255,255,.05);outline:none;color:var(--ink);font-family:var(--sans);font-size:11.5px;padding:6px 2px;transition:border-color .12s}
.tx-bhin::placeholder{color:var(--ink-4)}
.tx-bhin:focus{border-top-color:var(--rc,var(--accent))}
/* detail panel */
.tx-dempty{color:var(--ink-4);text-align:center;padding:64px 20px;font-size:13px;line-height:2;font-family:var(--sans)}
.tx-dhead{display:flex;align-items:center;gap:11px;margin-bottom:2px}
.tx-dmark{font-size:16px;color:var(--rc);flex:none}
.tx-dt{flex:1;min-width:0;font-family:var(--sans);font-size:20px;font-weight:700;color:var(--ink);cursor:text;letter-spacing:-.01em}
.tx-dprog{display:flex;align-items:baseline;gap:3px;flex:none}
.tx-dprog b{font-family:var(--mono);font-size:20px;font-weight:600;color:var(--rc);font-variant-numeric:tabular-nums;line-height:1}
.tx-dprog.vice b{color:var(--warn)}
.tx-dprog span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-4)}
.tx-dfeeds{display:flex;flex-direction:column;gap:5px}
.tx-dfeed{font-family:var(--sans);font-size:12.5px;color:var(--ink-2);cursor:pointer;padding:7px 11px;border:1px solid var(--line);border-left:2px solid var(--accent);border-radius:0 6px 6px 0;transition:background .12s,color .12s}
.tx-dfeed:hover{background:rgba(255,255,255,.04);color:var(--ink)}

/* virtue mastery meter: partial fill of the in-progress level + XP label */
.tx-seg{position:relative;overflow:hidden}
.tx-seg>i{position:absolute;left:0;top:0;bottom:0;background:var(--rc,var(--good));border-radius:1px;box-shadow:0 0 5px color-mix(in srgb,var(--rc,var(--good)) 55%,transparent)}
.tx-xplab{margin:8px 0 14px;font-family:var(--mono);font-size:10px;letter-spacing:.03em;color:var(--ink-4);font-variant-numeric:tabular-nums}

/* ── Wants detail: clean list treatment for vices/virtues + journal (was boxy pills/inputs) ── */
/* connected vices/virtues → vertical list rows (colour dot · name · × on hover) */
.wx-tvcol .wx-traits{flex-direction:column;gap:0}
.wx-tvcol .wx-traits .wx-trait{width:100%;display:flex;align-items:center;gap:9px;border:none !important;border-radius:0 !important;background:none !important;padding:7px 2px;border-bottom:1px solid rgba(255,255,255,.05) !important;font-family:var(--sans);font-size:12.5px;font-weight:500;color:var(--ink-2)}
.wx-tvcol .wx-traits .wx-trait::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--rc,var(--accent));flex:none;opacity:.85}
.wx-tvcol .wx-traits .wx-trait.wx-tvia{opacity:1;border-style:none !important}
.wx-tvcol .wx-traits .wx-trait.wx-tvia::before{opacity:.4}
.wx-tvcol.vice .wx-traits .wx-trait{color:#E5766F}
.wx-tvcol .wx-traits .wx-trait b{margin-left:auto;color:var(--ink-4);cursor:pointer;font-weight:400;font-size:13px;opacity:0;transition:opacity .12s,color .12s}
.wx-tvcol .wx-traits .wx-trait:hover b{opacity:.55}
.wx-tvcol .wx-traits .wx-trait b:hover{color:var(--warn);opacity:1}
/* add field → underline, not a box */
.wx-tvadd{margin-top:7px}
.wx-tvin{border:none !important;background:none !important;border-bottom:1px solid var(--line) !important;border-radius:0 !important;box-shadow:none !important;padding:7px 2px !important;color:var(--ink)}
.wx-tvin::placeholder{color:var(--ink-4)}
.wx-tvin:focus{border-bottom-color:var(--accent) !important}
.wx-tvcol.vice .wx-tvin:focus{border-bottom-color:var(--warn) !important}
/* journal → underline input, subtle log button, clean rows */
.wx-jadd{gap:8px;margin-bottom:6px}
.wx-jin{background:none !important;border:none !important;border-bottom:1px solid var(--line) !important;border-radius:0 !important;padding:9px 2px !important;box-shadow:none !important}
.wx-jin:focus{border-bottom-color:var(--accent) !important}
.wx-jgo{background:none !important;color:var(--accent-2) !important;border:1px solid var(--line-2) !important;font-weight:600 !important;border-radius:6px !important;padding:0 14px !important;transition:border-color .12s,color .12s}
.wx-jgo:hover{border-color:var(--accent) !important;color:var(--accent) !important}
.wx-jrow{border-bottom-color:rgba(255,255,255,.05)}

/* ── FX: create / delete / edit motion (tutorial vocabulary: cubic-bezier .2,.7,.2,1) ── */
@keyframes fx-in{from{opacity:0;transform:translateY(9px) scale(.985)}to{opacity:1;transform:none}}
@keyframes fx-out{from{opacity:1;transform:none;max-height:340px}to{opacity:0;transform:translateY(-4px) scale(.97);max-height:0;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}}
@keyframes fx-pulse{0%{box-shadow:0 0 0 0 var(--accent-glow,rgba(45,212,191,.5))}70%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}
.fx-in{animation:fx-in .3s cubic-bezier(.2,.7,.2,1)}
.fx-out{animation:fx-out .26s cubic-bezier(.2,.7,.2,1) forwards;overflow:hidden}
.fx-pulse{animation:fx-pulse .6s ease-out}
@media(prefers-reduced-motion:reduce){.fx-in,.fx-out,.fx-pulse{animation-duration:.01ms}}

/* explanatory hint under a detail section header (e.g. how vice logging works) */
.tx-dhint{font-family:var(--sans);font-size:11.5px;line-height:1.55;color:var(--ink-3);margin:-2px 0 13px;max-width:62ch}
.tx-dhint b{color:var(--warn);font-weight:600}

/* Traits detail: section-label spacing (separate Patterns / Holds back / Builds toward) */
.tx-detail .tx-dlab{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;font-weight:600;color:var(--ink-3);margin:26px 0 11px}
.tx-detail .tx-dlab:first-of-type{margin-top:16px}
.tx-detail .tx-dlab em{font-style:normal;text-transform:none;letter-spacing:.02em;color:var(--ink-4);font-weight:400;margin-left:7px}
.tx-patadd{margin-top:6px}

/* strategist chat: minimize to just the top bar */
.ovp-head{display:flex;align-items:center;gap:8px}
.ovp-min{margin-left:auto;background:none;border:none;color:var(--ink-4);font-size:12px;cursor:pointer;padding:4px 7px;border-radius:5px;line-height:1;transition:color .12s,background .12s}
.ovp-min:hover{color:var(--ink-2);background:rgba(255,255,255,.06)}
.ov-chat.min{height:auto !important;min-height:0 !important;align-self:start}
.ov-chat.min .ovp-msgs,.ov-chat.min .ovp-bar{display:none !important}

/* ── Quest/Habit detail connectors: link a Want + Traits ── */
.cx-want{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px}
.cx-wchip{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--accent-2);background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:999px;padding:4px 12px}
.cx-wchip b{color:var(--ink-4);cursor:pointer;font-weight:400;font-size:13px;margin-left:2px}
.cx-wchip b:hover{color:var(--warn)}
.cx-wsel{background:var(--void-2,#111214);border:1px solid var(--line);border-radius:7px;outline:none;color:var(--ink-2);font-family:var(--sans);font-size:12px;padding:6px 9px;cursor:pointer;max-width:100%}
.cx-wsel:focus{border-color:var(--accent)}
.cx-traits{margin-bottom:7px}

/* ── Quest evolution: chain collapses to its head; lineage shown in the detail ── */
.qx-rung{flex:none;font-family:var(--mono);font-size:9.5px;font-weight:600;color:var(--accent-2);background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:999px;padding:2px 7px;margin-right:8px}
.qd-lineage{display:flex;flex-direction:column;gap:0;margin-bottom:6px;border-left:1px solid var(--line-2);padding-left:2px}
.qd-rung{display:flex;align-items:center;gap:9px;padding:6px 4px 6px 10px;position:relative;color:var(--ink-3);font-family:var(--sans);font-size:12.5px}
.qd-rung::before{content:"";position:absolute;left:-3px;top:50%;transform:translateY(-50%);width:5px;height:5px;border-radius:50%;background:var(--line-2)}
.qd-rung.cur{color:var(--ink)}
.qd-rung.cur::before{background:var(--accent);box-shadow:0 0 7px var(--accent-glow)}
.qd-rk{flex:none;font-family:var(--mono);font-size:10px;color:var(--ink-4);width:14px}
.qd-rt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qd-rung.cur .qd-rt{font-weight:600}
.qd-rnow{flex:none;font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-2)}

/* ── universal tag filter bar (header) ── */
.ov-tagfilter{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.tgf{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-3);background:none;border:1px solid var(--line);border-radius:999px;padding:4px 11px;cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.tgf-dot{width:7px;height:7px;border-radius:50%;background:var(--rc,var(--accent));opacity:.5}
.tgf:hover{border-color:var(--ink-3);color:var(--ink-2)}
.tgf.on{color:var(--rc);border-color:color-mix(in srgb,var(--rc) 50%,transparent);background:color-mix(in srgb,var(--rc) 13%,transparent)}
.tgf.on .tgf-dot{opacity:1;box-shadow:0 0 6px color-mix(in srgb,var(--rc) 70%,transparent)}
.tgf-clear{font-family:var(--sans);font-size:10px;font-weight:600;color:var(--ink-4);background:none;border:none;cursor:pointer;padding:4px 8px;text-transform:uppercase;letter-spacing:.06em}
.tgf-clear:hover{color:var(--warn)}
.et-tags{margin:2px 0 10px}

/* custom want-picker (replaces the native <select>) */
.cx-wbtn{font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--accent-2);background:color-mix(in srgb,var(--accent) 9%,transparent);border:1px solid var(--line-2);border-radius:7px;padding:5px 12px;cursor:pointer;transition:border-color .12s,color .12s,background .12s}
.cx-wbtn:hover,.cx-wbtn.on{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent)}
.cx-wlist{margin:8px 0 6px;max-height:240px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;background:var(--void-2,#0e1013)}
.cx-wopt{display:flex;align-items:center;gap:9px;padding:9px 12px;font-family:var(--sans);font-size:12.5px;color:var(--ink-2);cursor:pointer;border-bottom:1px solid rgba(255,255,255,.04);transition:background .12s,color .12s}
.cx-wopt:last-child{border-bottom:none}
.cx-wopt:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--ink)}
.cx-wdia{flex:none;color:var(--accent-2);font-size:10px}
.cx-wempty{padding:10px 12px;font-size:11px;color:var(--ink-4);font-style:italic}

/* ══ MINIMAL DESIGN PASS — filters, tags, connectors, legend, breathing room ══ */
/* header tag filter: colour dot + quiet text, no button chrome */
.tgf{background:none !important;border:none !important;padding:5px 3px !important;color:var(--ink-4) !important;font-weight:500}
.tgf:hover{color:var(--ink-2) !important}
.tgf.on{color:var(--rc) !important;background:none !important}
.tgf-dot{opacity:.35}
.tgf.on .tgf-dot{opacity:1;box-shadow:none}
.ov-tagfilter{gap:15px}
.tgf-clear{opacity:.6}
/* detail TAGS assignment: compact rounded chips — assigned filled, unassigned faint outline */
.et-tags{display:flex;flex-wrap:wrap;gap:6px !important;margin:4px 0 8px}
.et-tags .wx-tag{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line-2) !important;background:transparent !important;padding:2px 9px !important;color:var(--ink-4) !important;font-size:10.5px;font-weight:500;border-radius:20px;line-height:1.55}
.et-tags .wx-tag:hover{color:var(--ink-2) !important;border-color:var(--ink-4) !important;background:none !important}
.et-tags .wx-tag.on{color:var(--rc) !important;background:color-mix(in srgb,var(--rc) 13%,transparent) !important;border-color:color-mix(in srgb,var(--rc) 45%,transparent) !important}
.et-tags .wx-tag::before{opacity:.3}
.et-tags .wx-tag.on::before{opacity:1;box-shadow:none}
/* connector buttons → subtle text links, not filled chips */
.cx-wbtn{background:none !important;border:none !important;padding:6px 0 !important;color:var(--accent-2);font-size:12px;font-weight:600}
.cx-wbtn:hover,.cx-wbtn.on{color:var(--accent);background:none !important}
.cx-want{gap:11px}
/* connector trait chips minimal */
.cx-traits{display:flex;flex-wrap:wrap;gap:14px;margin:2px 0 4px;min-height:2px}
.cx-tchip{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:12px;font-weight:500;color:var(--ink-2)}
.cx-tdot{width:6px;height:6px;border-radius:50%;background:var(--rc,var(--accent));opacity:.85;flex:none}
.cx-tchip b{color:var(--ink-4);cursor:pointer;font-weight:400;opacity:0;transition:opacity .12s,color .12s}
.cx-tchip:hover b{opacity:.6}
.cx-tchip b:hover{color:var(--warn);opacity:1}
/* trait picker search input inside the list */
.cx-tsearch{width:100%;box-sizing:border-box;background:none;border:none;border-bottom:1px solid var(--line);outline:none;color:var(--ink);font-family:var(--sans);font-size:12.5px;padding:10px 12px}
.cx-tsearch::placeholder{color:var(--ink-4)}
.cx-tsearch:focus{border-bottom-color:var(--accent)}
.cx-topts{max-height:210px;overflow-y:auto}
/* more air between detail sections */
.hbx-dlbl{margin:24px 0 12px !important;letter-spacing:.1em}
.hbx-dlbl:first-of-type{margin-top:16px !important}
/* traits legend hyper-minimal: drop the subtext, lighten the header */
.tx-colh span{display:none !important}
.tx-colh{border-bottom:none !important;color:var(--ink-3);font-size:10px;letter-spacing:.18em;padding-bottom:2px;margin-bottom:22px;opacity:.85}
.tx-split{gap:26px}
.tx-board{gap:26px}

/* ── custom deadline picker (replaces native date input) ── */
.qd-datewrap{position:relative}
.qd-datebtn{font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink-2);background:none;border:1px solid var(--line);border-radius:7px;padding:7px 12px;cursor:pointer;transition:border-color .12s,color .12s}
.qd-datebtn:hover,.qd-datebtn.on{border-color:var(--accent);color:var(--accent-2)}
.qd-cal{position:absolute;z-index:40;top:calc(100% + 6px);left:0;width:264px;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:10px;padding:12px;box-shadow:0 18px 44px -14px rgba(0,0,0,.7)}
.qd-quick{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:11px}
.qd-qk{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--accent-2);background:color-mix(in srgb,var(--accent) 9%,transparent);border:1px solid var(--line-2);border-radius:999px;padding:4px 10px;cursor:pointer;transition:border-color .12s,color .12s}
.qd-qk:hover{border-color:var(--accent);color:var(--accent)}
.qd-qk.clr{color:var(--ink-4);background:none;margin-left:auto}
.qd-qk.clr:hover{color:var(--warn);border-color:var(--warn)}
.qd-calhd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink)}
.qd-nav{background:none;border:none;color:var(--ink-3);font-size:16px;cursor:pointer;padding:0 8px;border-radius:5px;line-height:1}
.qd-nav:hover{color:var(--ink);background:rgba(255,255,255,.06)}
.qd-dows{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:3px}
.qd-dows span{text-align:center;font-family:var(--mono);font-size:9px;color:var(--ink-4);text-transform:uppercase}
.qd-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.qdc-cell{aspect-ratio:1;display:grid;place-items:center;font-family:var(--sans);font-size:12px;color:var(--ink-2);border-radius:6px;cursor:pointer;transition:background .1s,color .1s}
.qdc-cell.empty{cursor:default}
.qdc-cell:not(.empty):hover{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--ink)}
.qdc-cell.past{color:var(--ink-4)}
.qdc-cell.today{box-shadow:inset 0 0 0 1px var(--line-2)}
.qdc-cell.sel{background:var(--accent);color:#08110F;font-weight:700}

/* ── tag filter → a single Filter dropdown (not a row of buttons) ── */
.ov-tagfilter{position:relative}
.tgf-wrap{position:relative}
.tgf-trig{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--ink-3);background:none;border:1px solid var(--line);border-radius:999px;padding:5px 13px;cursor:pointer;transition:border-color .12s,color .12s}
.tgf-trig:hover,.tgf-trig.open{border-color:var(--ink-3);color:var(--ink)}
.tgf-trig.on{color:var(--accent-2);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}
.tgf-ic{opacity:.8}
.tgf-lbl{letter-spacing:.02em}
.tgf-dots{display:inline-flex;gap:3px}
.tgf-tdot{width:7px;height:7px;border-radius:50%}
.tgf-menu{position:absolute;z-index:60;top:calc(100% + 8px);right:0;min-width:212px;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:10px;padding:6px;box-shadow:0 18px 44px -14px rgba(0,0,0,.7)}
.tgf-mhd{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);padding:6px 9px 8px}
.tgf-item{display:flex;align-items:center;gap:10px;width:100%;font-family:var(--sans);font-size:12.5px;font-weight:500;color:var(--ink-2);background:none;border:none;border-radius:7px;padding:8px 9px;cursor:pointer;transition:background .12s,color .12s}
.tgf-item:hover{background:rgba(255,255,255,.05);color:var(--ink)}
.tgf-item .tgf-dot{width:8px;height:8px;border-radius:50%;background:var(--rc);flex:none;opacity:.55}
.tgf-item.on{color:var(--rc)}
.tgf-item.on .tgf-dot{opacity:1;box-shadow:0 0 6px color-mix(in srgb,var(--rc) 70%,transparent)}
.tgf-nm{flex:1;text-align:left}
.tgf-chk{flex:none;color:var(--rc);opacity:0;font-size:12px}
.tgf-item.on .tgf-chk{opacity:1}
.tgf-clearall{width:100%;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-4);background:none;border:none;border-top:1px solid var(--line);border-radius:0;margin-top:4px;padding:9px;cursor:pointer;text-align:center}
.tgf-clearall:hover{color:var(--warn)}

/* ── quest rung-ladder (one quest holds its whole evolution as data) ── */
/* quest TYPE toggle — Needle-mover vs Habit quest (drives which sections show) */
.qd-type{display:flex;gap:6px;margin:2px 0 14px}
.qd-typebtn{flex:1;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink-3);background:rgba(255,255,255,.03);border:1px solid var(--line-2);border-radius:8px;padding:7px 8px;cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.qd-typebtn:hover{color:var(--ink)}
.qd-typebtn.on{color:#ECC94B;border-color:color-mix(in srgb,#ECC94B 45%,var(--line-2));background:color-mix(in srgb,#ECC94B 10%,transparent)}
.qd-typebtn.hq.on{color:#3ED66B;border-color:color-mix(in srgb,#3ED66B 45%,var(--line-2));background:color-mix(in srgb,#3ED66B 10%,transparent)}
/* habit-quest cadence fields (inline, in the quest detail) */
.qd-hq{display:flex;flex-direction:column;gap:8px;margin:2px 0 12px;padding:11px 12px;border:1px solid color-mix(in srgb,#3ED66B 26%,var(--line-2));border-radius:10px;background:color-mix(in srgb,#3ED66B 5%,transparent)}
.qd-hqrow{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-family:var(--sans);font-size:12.5px;color:var(--ink-2)}
.qd-hqnum{width:52px;text-align:center;color-scheme:dark;background:rgba(255,255,255,.05);border:1px solid var(--line-2);border-radius:6px;color:var(--ink);font-family:var(--sans);font-size:12.5px;padding:5px 6px}
.qd-hqsel{flex:1;min-width:120px;color-scheme:dark;background:rgba(255,255,255,.05);border:1px solid var(--line-2);border-radius:6px;color:var(--ink);font-family:var(--sans);font-size:12.5px;padding:5px 7px}
.qd-hqnum:focus,.qd-hqsel:focus{outline:none;border-color:var(--accent)}
.qd-hqlbl{color:var(--ink-3);font-size:12px}
.qd-datebtn.sm{padding:5px 10px;font-size:12px}
.qd-datebtn.on{border-color:var(--accent-2);color:var(--accent-2)}
.qd-hq .qd-calblock{margin:2px 0 4px}
/* habit-quest auto-complete reward popup */
.qhq-win{position:fixed;inset:0;z-index:100080;display:flex;align-items:center;justify-content:center;background:rgba(4,6,8,.72);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:qhqIn .18s ease}
@keyframes qhqIn{from{opacity:0}to{opacity:1}}
.qhq-card{width:320px;max-width:88vw;text-align:center;padding:28px 26px;border:1px solid color-mix(in srgb,#3ED66B 40%,var(--line-2));border-radius:16px;background:linear-gradient(180deg,color-mix(in srgb,#3ED66B 10%,#0E1319),#0B0F14);box-shadow:0 30px 80px -20px rgba(0,0,0,.85),0 0 40px -12px rgba(62,214,107,.25)}
.qhq-burst{font-size:40px;color:#3ED66B;line-height:1;margin-bottom:10px;animation:qhqPop .42s cubic-bezier(.2,1.4,.4,1)}
@keyframes qhqPop{0%{transform:scale(0) rotate(-20deg);opacity:0}100%{transform:scale(1) rotate(0);opacity:1}}
.qhq-lbl{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#3ED66B;margin-bottom:6px}
.qhq-title{font-family:var(--sans);font-size:17px;font-weight:800;color:var(--ink);margin-bottom:8px;line-height:1.25}
.qhq-reps{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink-3);margin-bottom:16px}
.qhq-gains{display:flex;gap:12px;justify-content:center;margin-bottom:20px}
.qhq-g{flex:1;padding:12px 8px;background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:10px}
.qhq-g b{display:block;font-family:var(--sans);font-size:22px;font-weight:800;color:#3ED66B}
.qhq-g span{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4)}
.qhq-x{width:100%;background:var(--accent-2);border:none;border-radius:9px;color:#08110F;font-family:var(--sans);font-size:13px;font-weight:700;padding:10px;cursor:pointer}
.qhq-x:hover{filter:brightness(1.08)}
.qd-ladder{display:flex;flex-direction:column;gap:1px;margin-bottom:6px}
.qd-ladder .qd-rung{display:flex;align-items:center;gap:9px;padding:6px 2px;border-left:none !important;position:static;color:inherit}
.qd-ladder .qd-rung::before{display:none !important}
.qd-rmk{flex:none;width:16px;text-align:center;font-size:12px;color:var(--ink-4);font-family:var(--mono)}
.qd-rung.cur .qd-rmk{color:var(--accent)}
.qd-rung.past .qd-rmk{color:var(--good,#57C888)}
.qd-rin{flex:1;min-width:0;background:none;border:none;border-bottom:1px solid transparent;outline:none;color:var(--ink-2);font-family:var(--sans);font-size:13px;padding:3px 2px}
.qd-rung.cur .qd-rin{color:var(--ink);font-weight:600}
.qd-rung.past .qd-rin{color:var(--ink-4);text-decoration:line-through}
.qd-rin:hover{border-bottom-color:var(--line)}
.qd-rin:focus{border-bottom-color:var(--accent)}
.qd-rin:disabled{cursor:default}
.qd-rpass{flex:none;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--accent-2);background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:6px;padding:4px 11px;cursor:pointer;transition:background .12s,color .12s}
.qd-rpass:hover{background:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--accent)}
.qd-rx{flex:none;background:none;border:none;color:var(--ink-4);font-size:14px;cursor:pointer;padding:0 2px;opacity:0;transition:opacity .12s,color .12s}
.qd-rung:hover .qd-rx{opacity:.5}
.qd-rx:hover{color:var(--warn);opacity:1}
.qd-radd .qd-rmk{color:var(--ink-4)}
.qd-rnew{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--ink);font-family:var(--sans);font-size:12.5px;padding:5px 2px}
.qd-rnew::placeholder{color:var(--ink-4)}

/* ══ COLOSSEUM → Instagram-style feed ══ */
#view-colosseum{overflow-y:auto}
#view-colosseum .board{width:min(100%,1400px);max-width:none;align-self:center;margin:0;padding:0 28px 70px}
#view-colosseum .board-head{text-align:left;padding:26px 0 6px}
#view-colosseum .board-title{font-family:var(--sans);font-size:24px;font-weight:800;letter-spacing:.01em;color:var(--ink)}
#view-colosseum .board-sub{display:block;font-family:var(--sans);font-size:12.5px;color:var(--ink-4);margin-top:5px}
.colo-bar{display:flex;flex-wrap:wrap;align-items:center;gap:16px;justify-content:flex-start;padding:14px 0 16px;border-bottom:1px solid var(--line);margin-bottom:22px;font-family:var(--sans);font-size:12px}
.colo-bal{font-family:var(--mono);color:var(--ink-3)}.colo-bal b{color:var(--gold,#ECC94B);font-size:13px}
.stake-sizes{color:var(--ink-4)}.stake-sizes b{color:var(--ink-3);cursor:pointer;padding:2px 7px;border-radius:5px;margin-left:3px;font-family:var(--mono)}.stake-sizes b.on{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.colo-line{color:var(--accent-2);font-weight:600;cursor:pointer}.colo-line:hover{color:var(--accent)}
.colo-reset{color:var(--ink-4);cursor:pointer}.colo-reset:hover{color:var(--warn)}
.create-form{display:flex;gap:8px;margin-bottom:22px;flex-wrap:wrap}
.create-form input{background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:8px;outline:none;color:var(--ink);font-family:var(--sans);font-size:13px;padding:9px 12px}
.create-form #cfQuest{flex:1;min-width:200px}.create-form #cfStake{width:80px}
.create-form input:focus{border-color:var(--accent)}
.pm-list{display:flex;flex-direction:column;gap:22px}
.cf-post{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--void-2,#0e1013)}
.cf-post.you{border-color:color-mix(in srgb,var(--accent) 34%,var(--line))}
.cf-head{display:flex;align-items:center;gap:11px;padding:12px 14px}
.cf-av{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-size:10px;font-weight:700;color:var(--ink);background:linear-gradient(135deg,var(--accent-dim,#153f3a),var(--void,#0a0b0d));border:1px solid var(--line-2);flex:none}
.cf-post.you .cf-av{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#08110F;border:none}
.cf-hb{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.cf-who{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink)}
.cf-meta{font-family:var(--mono);font-size:10px;color:var(--ink-4)}
.cf-odds{flex:none;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--ink-3);font-variant-numeric:tabular-nums}
.cf-odds.up{color:var(--good,#57C888)}.cf-odds.down{color:var(--warn)}
.cf-media{position:relative;aspect-ratio:4/3;background:#08090b;display:grid;place-items:center;overflow:hidden}
.cf-media img{width:100%;height:100%;object-fit:cover}
.cf-noproof{flex-direction:column;gap:14px;padding:28px;text-align:center;background:radial-gradient(circle at 50% 25%,color-mix(in srgb,var(--accent) 9%,transparent),transparent 68%),#0a0b0d}
.cf-quote{font-family:Georgia,serif;font-size:46px;color:color-mix(in srgb,var(--accent) 42%,transparent);line-height:0;height:12px}
.cf-line{font-family:var(--sans);font-size:18px;font-weight:700;color:var(--ink);line-height:1.32;max-width:34ch}
.cf-postproof{font-family:var(--sans);font-size:12px;font-weight:600;color:#08110F;background:var(--accent);border:none;border-radius:8px;padding:8px 16px;cursor:pointer}
.cf-postproof:hover{background:var(--accent-2)}
.cf-await{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.cf-verdict{position:absolute;top:12px;left:12px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.1em;padding:4px 10px;border-radius:6px}
.cf-verdict.hit{background:var(--good,#57C888);color:#06140c}.cf-verdict.miss{background:var(--warn);color:#160707}
.cf-badge{position:absolute;top:12px;right:12px;font-family:var(--mono);font-size:10px;color:#fff;background:rgba(0,0,0,.55);padding:3px 8px;border-radius:5px;backdrop-filter:blur(4px)}
.cf-acts{display:flex;align-items:center;gap:8px;padding:12px 14px 4px}
.cf-sp{flex:1}
.cf-believe,.cf-doubt,.cf-raise{font-family:var(--sans);font-size:12.5px;font-weight:600;border-radius:8px;padding:8px 15px;cursor:pointer;transition:background .12s,color .12s,border-color .12s}
.cf-believe{color:var(--accent-2);background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent)}
.cf-believe:hover{background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent)}
.cf-doubt{color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,transparent);border:1px solid color-mix(in srgb,var(--warn) 35%,transparent)}
.cf-doubt:hover{background:color-mix(in srgb,var(--warn) 20%,transparent)}
.cf-raise{color:#08110F;background:var(--accent);border:1px solid var(--accent)}
.cf-raise:hover{background:var(--accent-2)}
.cf-vote{width:32px;height:32px;border-radius:8px;border:1px solid var(--line-2);background:none;cursor:pointer;font-size:13px;display:grid;place-items:center;transition:background .12s,border-color .12s}
.cf-vote.hit{color:var(--good,#57C888)}.cf-vote.hit:hover{background:color-mix(in srgb,var(--good,#57C888) 16%,transparent);border-color:var(--good,#57C888)}
.cf-vote.miss{color:var(--warn)}.cf-vote.miss:hover{background:color-mix(in srgb,var(--warn) 16%,transparent);border-color:var(--warn)}
.cf-result{font-family:var(--sans);font-size:12.5px;font-weight:700}
.cf-result.hit{color:var(--good,#57C888)}.cf-result.miss{color:var(--warn)}
.cf-cap{padding:8px 14px 3px;font-family:var(--sans);font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.cf-cap b{color:var(--ink);font-weight:700;margin-right:5px}
.cf-stat{padding:2px 14px 14px;font-family:var(--mono);font-size:11px;color:var(--ink-4);font-variant-numeric:tabular-nums}
.cf-mine.believe{color:var(--accent-2)}.cf-mine.doubt{color:var(--warn)}
.cf-empty{text-align:center;color:var(--ink-4);padding:64px 20px;font-family:var(--sans);font-size:13px;line-height:1.7}

/* ══ PROFILE page (Instagram-style) ══ */
#view-profile{overflow-y:auto}
.pg-wrap{max-width:640px;margin:0 auto;padding:30px 16px 70px}
.pg-head{display:flex;align-items:center;gap:24px;margin-bottom:26px}
.pg-av{width:88px;height:88px;border-radius:50%;flex:none;background:linear-gradient(135deg,var(--accent-dim,#153f3a),var(--void,#0a0b0d));background-size:cover;background-position:center;display:grid;place-items:center;font-family:var(--sans);font-size:32px;font-weight:800;color:var(--ink);border:2px solid var(--line-2)}
.pg-hb{flex:1;min-width:0}
.pg-name{font-family:var(--sans);font-size:20px;font-weight:800;color:var(--ink)}
.pg-rank{font-family:var(--mono);font-size:11px;color:var(--accent-2);margin-top:2px;letter-spacing:.04em}
.pg-stats{display:flex;gap:26px;margin-top:16px;flex-wrap:wrap}
.pg-stat{display:flex;flex-direction:column}
.pg-stat b{font-family:var(--mono);font-size:17px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.pg-stat span{font-family:var(--sans);font-size:11px;color:var(--ink-4);margin-top:1px}
.pg-tabbar{display:flex;gap:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:3px}
.pg-tab{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);padding:14px 4px;border-bottom:1px solid transparent;margin-bottom:-1px;display:inline-flex;align-items:center;gap:6px}
.pg-tab.on{color:var(--ink);border-bottom-color:var(--ink)}
.pg-tab em{font-style:normal;color:var(--ink-4);font-size:10px}
.pg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:3px}
.pg-tile{position:relative;aspect-ratio:1;overflow:hidden;background:#0a0b0d;border:none;cursor:pointer;padding:0}
.pg-tile img{width:100%;height:100%;object-fit:cover;transition:transform .18s,opacity .18s}
.pg-tile:hover img{transform:scale(1.05);opacity:.85}
.pg-badge{position:absolute;top:7px;right:7px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700}
.pg-badge.hit{background:var(--good,#57C888);color:#06140c}.pg-badge.miss{background:var(--warn);color:#160707}
.pg-cap{position:absolute;left:0;right:0;bottom:0;padding:16px 8px 6px;font-family:var(--sans);font-size:10px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.82));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .15s}
.pg-tile:hover .pg-cap{opacity:1}
.pg-empty{text-align:center;color:var(--ink-4);padding:60px 20px;font-family:var(--sans);font-size:13px;line-height:1.9}
@media(max-width:520px){.pg-head{gap:16px}.pg-av{width:72px;height:72px;font-size:26px}.pg-stats{gap:18px}}

/* ══ COLOSSEUM Phase-3: quest picker · rung select · feed tag filter ══ */
.create-form{flex-direction:column;gap:10px;align-items:stretch}
.cf-pickrow{display:flex;gap:8px;align-items:stretch}
.cf-pick{flex:none;font-family:var(--mono);font-size:12px;color:var(--ink);background:var(--panel-2,#14161a);border:1px solid var(--line-2);border-radius:8px;padding:0 14px;cursor:pointer;white-space:nowrap}
.cf-pick:hover{border-color:var(--accent-2)}
.cf-pickrow #cfQuest{flex:1;min-width:0}
.cf-picklist{border:1px solid var(--line-2);border-radius:8px;background:var(--panel-2,#14161a);max-height:230px;overflow-y:auto}
.cf-popt{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;border-bottom:1px solid var(--line)}
.cf-popt:last-child{border-bottom:none}.cf-popt:hover{background:var(--panel-3,#1b1e24)}
.cf-poi{color:var(--accent-2);font-size:12px}
.cf-pot{flex:1;min-width:0;font-family:var(--sans);font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cf-pow{font-family:var(--mono);font-size:10px;color:var(--accent-2);white-space:nowrap}
.cf-por{font-family:var(--mono);font-size:10px;color:var(--ink-4);white-space:nowrap}
.cf-pempty{padding:16px;font-family:var(--sans);font-size:12px;color:var(--ink-4);text-align:center;line-height:1.7}
.cf-sel{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--accent-dim,#2a4a45);border-radius:8px;background:color-mix(in srgb,var(--accent) 7%,transparent)}
.cf-selq{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--ink);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cf-selw{font-family:var(--mono);font-size:10px;color:var(--accent-2);white-space:nowrap}
.cf-selx{flex:none;background:none;border:none;color:var(--ink-4);font-size:18px;line-height:1;cursor:pointer;padding:0 2px}
.cf-selx:hover{color:var(--warn)}
.cf-rungs{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cf-rlbl{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.cf-rchip{font-family:var(--sans);font-size:11px;color:var(--ink-2,#aeb4bd);background:var(--panel-2,#14161a);border:1px solid var(--line-2);border-radius:20px;padding:4px 11px;cursor:pointer;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cf-rchip.on{color:var(--void,#0a0b0d);background:var(--accent-2);border-color:var(--accent-2);font-weight:600}
.cf-gorow{display:flex;align-items:center;gap:10px;justify-content:flex-end}
.cf-stakelbl{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:var(--ink-4)}
.cf-stakelbl #cfStake{width:88px}
/* feed tag filter bar */
.cf-filterbar{display:flex;gap:7px;flex-wrap:wrap;padding:2px 0 12px;margin-top:2px}
.cf-filterbar:empty{display:none}
.cf-fchip{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:var(--ink-2,#aeb4bd);background:transparent;border:1px solid var(--line-2);border-radius:20px;padding:4px 12px;cursor:pointer}
.cf-fchip i{width:7px;height:7px;border-radius:50%;background:var(--fc,#8A9099);display:inline-block}
.cf-fchip.on{color:var(--ink);border-color:var(--ink-4);background:var(--panel-2,#14161a)}
/* card want·rung·tags line */
.cf-tagline{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:0 14px 8px}
.cf-want{font-family:var(--mono);font-size:10px;color:var(--accent-2)}
.cf-rung{font-family:var(--mono);font-size:10px;color:var(--ink-2,#aeb4bd);border:1px solid var(--line-2);border-radius:20px;padding:1px 8px}
.cf-tg{font-family:var(--mono);font-size:10px;color:var(--fc,#8A9099);border:1px solid color-mix(in srgb,var(--fc,#8A9099) 45%,transparent);border-radius:20px;padding:1px 8px}

/* ══ THE MAP OF YOU — spatial journey graph ══ */
.moy-wrap{display:flex;gap:14px;height:min(74vh,680px);min-height:440px}
.moy-canvas{position:relative;flex:1;min-width:0;border:1px solid var(--line);border-radius:12px;background:radial-gradient(120% 120% at 50% 40%,#0e1116 0%,#0a0b0d 78%);overflow:hidden}
.moy-svg{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
.moy-svg.moy-panning{cursor:grabbing}
.moy-zoomtag{position:absolute;top:10px;right:12px;font-family:var(--mono);font-size:10px;color:var(--ink-4);background:rgba(10,11,13,.7);padding:2px 7px;border-radius:5px;pointer-events:none}
.moy-legend{position:absolute;left:12px;bottom:10px;display:flex;flex-wrap:wrap;gap:12px;font-family:var(--mono);font-size:10px;color:var(--ink-4);pointer-events:none}
.moy-legend .moy-lk{display:inline-flex;align-items:center;gap:5px}
.moy-legend .moy-lk i{font-style:normal;font-size:12px}
.moy-detail{flex:none;width:300px;overflow-y:auto}
@media(max-width:820px){.moy-wrap{flex-direction:column;height:auto}.moy-canvas{height:56vh}.moy-detail{width:auto}}
.moy-dh{display:flex;align-items:center;gap:9px;font-family:var(--sans);font-size:16px;font-weight:800;color:var(--ink);line-height:1.25}
.moy-dg{font-size:18px;flex:none}
.moy-dtype{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);margin:3px 0 12px}
.moy-dc{font-family:var(--sans);font-size:12.5px;line-height:1.7;color:var(--ink-4)}
.moy-dmeta{font-family:var(--mono);font-size:11px;color:var(--accent-2);margin-bottom:10px}
.moy-dl{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);margin:14px 0 7px}
.moy-dv{display:flex;flex-wrap:wrap;gap:6px}
.moy-chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--sans);font-size:11px;color:var(--ink-2,#aeb4bd);border:1px solid var(--line-2);border-radius:20px;padding:3px 10px;cursor:pointer;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.moy-chip:hover{border-color:var(--accent-2);color:var(--ink)}
.moy-em{font-family:var(--sans);font-size:11px;color:var(--ink-4);font-style:italic}
.moy-open{margin-top:18px;width:100%;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink);background:var(--panel-2,#14161a);border:1px solid var(--line-2);border-radius:8px;padding:9px 0;cursor:pointer}
.moy-open:hover{border-color:var(--accent-2);color:var(--accent-2)}

/* agenda add — task vs routine segmented toggle */
.ag-addform{display:flex;flex-direction:column;gap:8px}
.ag-addkind{display:inline-flex;gap:4px;background:var(--void-2,#0e1013);border:1px solid var(--line);border-radius:8px;padding:3px;width:max-content}
.ag-addkind b{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-4);padding:5px 12px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:baseline;gap:5px}
.ag-addkind b small{font-family:var(--mono);font-size:9px;opacity:.7}
.ag-addkind b.on{background:var(--accent-2);color:var(--void,#0a0b0d)}
.ag-addrow{display:flex;gap:6px;align-items:stretch}
.ag-addrow .ag-addin{flex:1;min-width:0}

/* ══ MAP polish + ISOLATE/FOCUS mode ══ */
/* section header counts */
.cg-panelR-sec em{font-style:normal;margin-left:6px;padding:1px 6px;border-radius:20px;background:rgba(255,255,255,.06);color:var(--ink-4);font-size:9px;font-weight:600;font-family:var(--mono);letter-spacing:0}
/* a touch more breathing room between rows */
.cg-flow .cg-ritem,.cg-flow .cgp-hab{margin-top:7px !important}
.cg-panelR-sec{padding-bottom:9px !important}
/* focus bar (replaces the trace hint while a tree is isolated) */
.cg-tracehint.cg-focusbar{display:flex;align-items:center;gap:10px;left:50%;transform:translateX(-50%);top:8px;background:rgba(12,14,18,.92);border:1px solid var(--line-2);border-radius:22px;padding:5px 6px 5px 14px;z-index:6;pointer-events:auto;box-shadow:0 6px 20px rgba(0,0,0,.5)}
.cg-fb-lab{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-2)}
.cg-fb-title{font-family:var(--sans);font-size:12px;font-weight:700;color:var(--ink);max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-fb-exit{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-2,#aeb4bd);background:var(--panel-2,#14161a);border:1px solid var(--line-2);border-radius:18px;padding:4px 11px;cursor:pointer}
.cg-fb-exit:hover{color:var(--ink);border-color:var(--accent-2)}
/* ISOLATE: collapse everything not in the focused tree, expand what remains */
.cg-flow.cg-isolate .cg-dim{display:none !important}
.cg-flow.cg-isolate .cgp-h{display:none !important}          /* phase sub-labels */
.cg-flow.cg-isolate .cgp-empty,
.cg-flow.cg-isolate .cgp-newrow,
.cg-flow.cg-isolate .cgp-arch-sec{display:none !important}
.cg-flow.cg-isolate .cg-panempty{display:none !important}    /* a column with no node in this tree */
.cg-flow.cg-isolate .cg-ritem,
.cg-flow.cg-isolate .cgp-hab{margin-top:16px !important}      /* expanded spacing in focus */
.cg-flow.cg-isolate .cg-lit .cgp-t,
.cg-flow.cg-isolate .cg-lit .cg-trnm{font-size:13px}
.cg-flow.cg-isolate{background-image:radial-gradient(120% 90% at 50% 0%,rgba(45,212,191,.05),transparent 60%) !important}

/* hover preview — light the hovered tree's nodes (default board is otherwise line-free & calm) */
.cg-flow.cg-hovering [data-node]{transition:opacity .12s}
.cg-flow.cg-hovering [data-node]:not(.cg-hi){opacity:.45}
.cg-flow .cg-hi{opacity:1 !important}
.cg-flow .cg-hi.cg-ritem,.cg-flow .cg-hi .cgp-row,.cg-flow .cg-hi.cgp-hab .cgp-row{box-shadow:-2px 0 0 0 var(--accent-2) inset}

/* nested sub-wants in the map WANTS column */
.cg-wsubwrap{margin-left:15px;border-left:1px solid rgba(255,255,255,.08);padding-left:3px}
.cg-orow .cg-wcar{flex:none;cursor:pointer;color:var(--ink-4);font-size:9px;margin-right:1px;width:11px;text-align:center}
.cg-orow .cg-wcar:hover{color:var(--ink)}
.cg-orow.cg-wsub .cg-odot{color:var(--ink-4)}
.cg-orow.cg-wsub .cgp-t{color:var(--ink-2,#aeb4bd)}
.cg-wsubn{margin-left:auto;font-family:var(--mono);font-size:9px;color:var(--ink-4);background:rgba(255,255,255,.06);padding:0 5px;border-radius:20px;flex:none}

/* WANTS column — big top-level wants (~2× sub-wants), full titles wrap, capped width */
.cg-panelW{flex:0 0 264px !important;max-width:292px !important}
@media(max-width:1240px){.cg-panelW{flex:0 0 224px !important}}
.cg-panelW .cg-orow{align-items:flex-start;padding:9px 0}
.cg-panelW .cg-orow.cg-wsub{padding:3px 0}
.cg-panelW .cg-orow .cgp-t{white-space:normal !important;overflow:visible !important;text-overflow:clip !important;line-height:1.3}
.cg-panelW .cg-orow:not(.cg-wsub) .cgp-t{font-size:16px !important;font-weight:700 !important;color:var(--ink) !important}
.cg-panelW .cg-orow.cg-wsub .cgp-t{font-size:10.5px !important;font-weight:500 !important}
.cg-panelW .cg-orow:not(.cg-wsub) .cg-odot{font-size:15px;margin-top:2px}
.cg-panelW .cg-orow.cg-wsub .cg-odot{font-size:9px;margin-top:2px}
.cg-panelW .cg-orow .cg-conn-l,.cg-panelW .cg-orow .cg-wcar{margin-top:4px}
.cg-panelW .cg-orow:not(.cg-wsub) .cg-wcar{margin-top:6px}

/* ══ MAP fills full width — proportional responsive columns (was fixed-px → dead space on wide screens) ══ */
.cg-flow{width:100%}
.cg-panelV{flex:1 1 0 !important;max-width:none !important;min-width:150px !important}
.cg-panelL{flex:1.15 1 0 !important;max-width:none !important;min-width:170px !important}
.cg-panelQ{flex:1.5 1 0 !important;max-width:none !important;min-width:220px !important}
.cg-panelR{flex:1.05 1 0 !important;max-width:none !important;min-width:160px !important}
.cg-panelW{flex:1.35 1 0 !important;max-width:340px !important;min-width:224px !important}
/* responsive: below 1080px let the board scroll horizontally instead of crushing columns */
@media(max-width:1080px){
  .cg-flow{overflow-x:auto}
  .cg-panelV,.cg-panelL,.cg-panelQ,.cg-panelR,.cg-panelW{flex:0 0 auto !important}
  .cg-panelV{width:160px}.cg-panelL{width:186px}.cg-panelQ{width:250px}.cg-panelR{width:176px}.cg-panelW{width:240px}
}

/* KARYNA — the strategist's identity in the right chat header */
.ovp-who{display:flex;align-items:center;gap:10px;min-width:0}
.ovp-port{width:36px;height:36px;flex:none;border-radius:50%;background:#05070A url(/img/karyna.png) center 16%/cover no-repeat;border:1px solid rgba(45,212,191,.45);box-shadow:0 0 0 3px rgba(45,212,191,.08)}
.ovp-id{display:flex;flex-direction:column;gap:2px;line-height:1.05;min-width:0}
.ovp-id>b{font-family:var(--sans);font-size:12.5px;font-weight:700;letter-spacing:.18em;color:var(--accent-2)}
.ovp-role{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.ovp-role .ovp-orb{width:7px;height:7px}
.ovp-head .ovp-min{margin-left:auto}

/* Karyna's portrait on her chat replies (personalized) */
.ovp-airow{display:flex;gap:8px;align-items:flex-start;margin:0}
.ovp-av{width:26px;height:26px;flex:none;border-radius:50%;background:#05070A url(/img/karyna.png) center 16%/cover no-repeat;border:1px solid rgba(45,212,191,.4);margin-top:3px}
.ovp-airow .ovp-msg.ai{align-self:flex-start;margin:0}
/* want row: dedicated feeder-quest ＋ (row click now isolates the tree, not spawn) */
.cg-wadd{flex:none;width:19px;height:19px;border-radius:50%;background:none;border:1px solid var(--line-2);color:var(--ink-4);font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;opacity:.4;transition:opacity .12s,border-color .12s,color .12s;padding:0}
.cg-orow:hover .cg-wadd{opacity:1}
.cg-wadd:hover{border-color:var(--accent-2);color:var(--accent-2)}
.cg-panelW .cg-orow:not(.cg-wsub) .cg-wadd{margin-top:4px}
/* more air between the columns — easier to read and to connect across */
.cg-flow{gap:22px}
/* click-isolate = ghost (keep the whole map, fade what's not connected) */
.cg-flow.cg-filtered .cg-dim{opacity:.15 !important}

/* more room below the top HUD before the header divider line */
.ov-header{min-height:92px !important;padding-bottom:26px !important}

/* ═══ KARYNA'S SPACE — ornamental strategist chamber (right chat feels like its own place) ═══ */
.ov-chat{position:relative !important;
  background:radial-gradient(130% 55% at 100% 0%,rgba(45,212,191,.07),transparent 55%),linear-gradient(180deg,rgba(45,212,191,.03),transparent 38%),rgba(126,140,170,.04) !important;
  border-left:1px solid rgba(45,212,191,.22) !important;padding-left:18px !important}
.ov-chat::before,.ov-chat::after{content:"";position:absolute;width:15px;height:15px;pointer-events:none;opacity:.6;z-index:3}
.ov-chat::before{top:96px;left:12px;border-top:1.5px solid var(--accent-2);border-left:1.5px solid var(--accent-2)}
.ov-chat::after{bottom:12px;right:3px;border-bottom:1.5px solid var(--accent-2);border-right:1.5px solid var(--accent-2)}
/* header = Karyna identity plate (top-left) with accent underline */
.ovp-head{position:relative;align-items:center !important}
.ovp-head::after{content:"";position:absolute;left:0;right:10px;bottom:0;height:1px;background:linear-gradient(90deg,rgba(45,212,191,.55),transparent 78%)}
.ovp-port{width:44px !important;height:44px !important;position:relative;overflow:hidden;box-shadow:0 0 0 3px rgba(45,212,191,.10),0 0 16px rgba(45,212,191,.16)}
.ovp-port::after{content:"";position:absolute;inset:0;border-radius:50%;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(0,0,0,.13) 3px 4px);pointer-events:none}
.ovp-id>b{font-size:14px !important;letter-spacing:.22em !important}
/* her portrait beside each reply, framed */
.ovp-av{box-shadow:0 0 0 2px rgba(45,212,191,.08)}

/* wider column gaps + declutter chrome while a tree is focused (so the top-aligned flow reads) */
.cg-flow{gap:30px !important}
.cg-flow.cg-filtered .cgp-h,
.cg-flow.cg-filtered .cgp-newrow,
.cg-flow.cg-filtered .cgp-arch-sec{display:none !important}

/* ═ TAGS as minimal color dots (hover = name) + ✎ category editor ═ */
.et-tags{display:flex;align-items:center;gap:11px !important;margin:4px 0 8px}
.et-dots{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.et-dot{width:13px;height:13px;border-radius:50%;cursor:pointer;border:1.5px solid var(--rc);background:transparent;transition:background .12s,transform .1s;box-sizing:border-box}
.et-dot:hover{transform:scale(1.2)}
.et-dot.on{background:var(--rc)}
.et-edit{flex:none;width:20px;height:20px;border-radius:50%;background:none;border:1px solid var(--line-2);color:var(--ink-4);font-size:11px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}
.et-edit:hover{border-color:var(--accent-2);color:var(--accent-2)}
.tag-editor{position:fixed;z-index:100050;width:250px;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:10px;padding:12px;box-shadow:0 20px 50px -12px rgba(0,0,0,.75)}
.tag-editor .te-hd{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin-bottom:10px}
.te-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.te-sw{flex:none;width:18px;height:18px;border-radius:50%;cursor:pointer;position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.15)}
.te-sw input{position:absolute;inset:-4px;opacity:0;cursor:pointer}
.te-nm{flex:1;min-width:0;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:6px;padding:5px 8px;color:var(--ink);font-family:var(--sans);font-size:12px}
.te-del{flex:none;width:20px;height:20px;background:none;border:none;color:var(--ink-4);font-size:15px;line-height:1;cursor:pointer}
.te-del:hover{color:var(--warn)}
.te-add{display:flex;gap:6px;margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.te-newin{flex:1;min-width:0;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:6px;padding:5px 8px;color:var(--ink);font-family:var(--sans);font-size:12px}
.te-newgo{flex:none;background:var(--accent-2);color:var(--void,#0a0b0d);border:none;border-radius:6px;padding:0 12px;font-family:var(--sans);font-size:12px;font-weight:600;cursor:pointer}
.te-empty{color:var(--ink-4);font-size:12px;font-style:italic}
/* mobile: Karyna's chamber sits at the TOP (above the map) */
@media(max-width:820px){
  .ov-header{grid-row:1 !important}
  .ov-chat{grid-row:2 !important;grid-column:1 !important;order:-1;margin-top:0 !important;border-top:0 !important;border-bottom:1px solid var(--line) !important;padding:14px 0 16px !important;min-height:320px}
  .ov-main{grid-row:3 !important;grid-column:1 !important}
}

/* deadline calendar: in-flow full-width block (no absolute → no clipping in the scrolling detail panel) */
.qd-cal{position:static !important;top:auto !important;left:auto !important;width:auto !important;max-width:290px !important;box-shadow:none !important;margin:0}
.qd-calblock{width:100%;max-width:290px;grid-column:1/-1;margin:3px 0 12px}
.qd-calblock .qdc-cell{aspect-ratio:auto;min-height:32px}

/* desktop: anchor Karyna's identity to the TOP of her side panel (remove the excess top padding) */
@media(min-width:821px){
  .ov-chat{padding-top:18px !important}
  .ov-chat::before{top:16px !important}
}

/* drag a quest into a want-group to assign it */
.hbx-list.qt .hbx-row[draggable]{cursor:grab}
.hbx-row.q-dragging{opacity:.5;cursor:grabbing}
.hbx-grp.wgrp-over{background:color-mix(in srgb,var(--accent) 9%,transparent);border-radius:8px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 42%,transparent)}
.hbx-grp.wgrp-over .hbx-ghead .hbx-gt{color:var(--accent-2)}

/* ═══ MAP drag-to-connect + Karyna smart-assist ═══ */
.cg-flow.cg-connecting{cursor:crosshair;user-select:none}
.cg-flow.cg-connecting *{cursor:crosshair !important}
.cg-drophi{box-shadow:0 0 0 2px var(--accent-2),0 0 14px rgba(45,212,191,.4) !important;border-radius:8px}
.cg-coldrop{background:color-mix(in srgb,var(--accent) 7%,transparent) !important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 40%,transparent)}
.cg-assist{position:fixed;z-index:100060;width:252px;background:linear-gradient(180deg,#0E1319,#0B0F14);border:1px solid rgba(45,212,191,.34);border-radius:12px;padding:12px;box-shadow:0 22px 55px -12px rgba(0,0,0,.8)}
.cga-hd{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.cga-av{width:30px;height:30px;flex:none;border-radius:50%;background:#05070A url(/img/karyna.png) center 16%/cover no-repeat;border:1px solid rgba(45,212,191,.5)}
.cga-hi{display:flex;flex-direction:column;gap:1px;line-height:1.15;min-width:0}
.cga-hi b{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.16em;color:var(--accent-2)}
.cga-hi span{font-family:var(--sans);font-size:12px;color:var(--ink-2,#aeb4bd)}
.cga-body{display:flex;flex-wrap:wrap;gap:6px;min-height:30px;margin-bottom:10px}
.cga-load{font-family:var(--sans);font-size:12px;color:var(--ink-4);font-style:italic;padding:4px 0}
.cga-empty{font-family:var(--sans);font-size:11px;color:var(--ink-4)}
.cga-chip{font-family:var(--sans);font-size:12px;color:var(--ink);background:rgba(45,212,191,.1);border:1px solid rgba(45,212,191,.32);border-radius:20px;padding:5px 11px;cursor:pointer;transition:background .12s}
.cga-chip:hover{background:rgba(45,212,191,.22)}
.cga-add{display:flex;gap:6px;border-top:1px solid rgba(255,255,255,.07);padding-top:10px}
.cga-in{flex:1;min-width:0;background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:7px;padding:6px 9px;color:var(--ink);font-family:var(--sans);font-size:12px}
.cga-go{flex:none;background:var(--accent-2);color:var(--void,#0a0b0d);border:none;border-radius:7px;padding:0 13px;font-family:var(--sans);font-size:12px;font-weight:600;cursor:pointer}

/* ALL 5 COLUMNS FIT the map view — shrink to fit, only scroll on phones */
.cg-flow{gap:18px !important}
.cg-panelV,.cg-panelR{flex:1 1 0 !important;min-width:0 !important;max-width:none !important}
.cg-panelL{flex:1.1 1 0 !important;min-width:0 !important;max-width:none !important}
.cg-panelQ{flex:1.3 1 0 !important;min-width:0 !important;max-width:none !important}
.cg-panelW{flex:1.3 1 0 !important;min-width:0 !important;max-width:none !important}
@media(max-width:1080px){
  .cg-flow{overflow-x:visible !important;gap:12px !important}
  .cg-panelV,.cg-panelL,.cg-panelR{flex:1 1 0 !important;width:auto !important}
  .cg-panelQ,.cg-panelW{flex:1.3 1 0 !important;width:auto !important}
}
@media(max-width:640px){
  .cg-flow{overflow-x:auto !important;gap:10px !important}
  .cg-panelV,.cg-panelL,.cg-panelQ,.cg-panelR,.cg-panelW{flex:0 0 auto !important;width:180px !important}
}

/* FIT all 5 map columns — no horizontal scroll; shrink to the map area */
#sub-overview{grid-template-columns:minmax(0,1fr) 300px !important}
.ov-map{overflow-x:hidden !important}
.ovmap-wrap{max-width:100% !important;overflow:hidden}
.cg-flow{overflow-x:hidden !important;gap:14px !important}
.cg-panelV,.cg-panelL,.cg-panelQ,.cg-panelR,.cg-panelW{min-width:0 !important;padding-left:11px !important;padding-right:11px !important}
.cg-panelV{padding-left:0 !important}
.cg-panelW{padding-right:4px !important}
/* want titles must wrap + break so a narrow column never overflows */
.cg-panelW .cg-orow .cgp-t{white-space:normal !important;overflow-wrap:anywhere;word-break:break-word}
.cg-panelW .cg-orow:not(.cg-wsub) .cgp-t{font-size:14px !important}

/* connectors show ONLY between columns: make every panel opaque so the (behind) SVG lines are masked to the gutters */
.cg-panelV,.cg-panelQ,.cg-panelW{background:linear-gradient(180deg,#101013,#0C0C0F) !important}
.cg-flowsvg{z-index:1 !important}
.cg-panelV,.cg-panelL,.cg-panelQ,.cg-panelR,.cg-panelW{z-index:2 !important}

/* smart-assist: link-to-existing picker */
.cg-assist{max-height:min(72vh,580px);overflow-y:auto}
.cga-sec{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin:12px 0 6px}
.cga-exist{display:flex;flex-direction:column;gap:4px;max-height:190px;overflow-y:auto}
.cga-eopt{flex:none;text-align:left;font-family:var(--sans);font-size:12.5px;color:var(--ink-2,#aeb4bd);background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:7px;padding:7px 10px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cga-eopt:hover{color:var(--ink);border-color:var(--accent-2);background:rgba(45,212,191,.08)}

/* dragging: hovering a specific card = clear "drop here to link" target (un-dims + bright ring + label) */
.cg-flow.cg-connecting .cg-drophi{opacity:1 !important;position:relative;z-index:6;background:rgba(45,212,191,.12) !important;box-shadow:0 0 0 2px var(--accent-2),0 0 18px rgba(45,212,191,.55) !important;border-radius:8px}
.cg-flow.cg-connecting .cg-drophi::after{content:"link here";position:absolute;top:-9px;right:8px;font-family:var(--mono);font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--void,#0a0b0d);background:var(--accent-2);padding:1px 6px;border-radius:9px;pointer-events:none;z-index:7}
.cg-flow.cg-connecting [data-node]{opacity:.6}
.cg-flow.cg-connecting [data-node]:hover{opacity:.9}

/* smart-assist "link to existing" — readable rows (were too dark/low-contrast) */
.cga-exist{gap:5px;max-height:200px;padding-right:2px}
.cga-exist .cga-eopt{color:var(--ink) !important;background:rgba(255,255,255,.05) !important;border:1px solid var(--line-2) !important;font-size:13px;padding:10px 13px;border-radius:9px !important;line-height:1.3;transition:background .12s,border-color .12s}
.cga-exist .cga-eopt:hover{color:#fff !important;border-color:var(--accent-2) !important;background:rgba(45,212,191,.13) !important}
.cga-sec{color:var(--ink-2,#aeb4bd) !important;font-size:9.5px;letter-spacing:.1em}

.cga-more{text-align:left;font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--accent-2);background:none;border:none;cursor:pointer;padding:7px 2px 2px}
.cga-more:hover{color:var(--accent)}

/* ═ Daily Rite composer on the Today/agenda page (matches the agenda design language) ═ */
.ag-rite-box{display:flex;flex-direction:column;gap:10px;background:rgba(255,255,255,.02);border:1px solid var(--line);border-radius:11px;padding:13px;margin-bottom:16px}
.ag-rite-box.clocked{border-color:var(--line-2)}
.ag-rite-box.sealed{border-color:color-mix(in srgb,var(--good,#57C888) 42%,transparent);background:color-mix(in srgb,var(--good,#57C888) 6%,transparent)}
.ag-rite-vow{width:100%;min-height:58px;resize:none;background:rgba(255,255,255,.03);border:1px solid var(--line-2);border-radius:8px;padding:10px 12px;color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.45}
.ag-rite-vow::placeholder{color:var(--ink-4)}
.ag-rite-vow:focus{outline:none;border-color:var(--accent-2)}
.ag-rite-btn{align-self:flex-start;font-family:var(--sans);font-size:13px;font-weight:600;color:var(--void,#0a0b0d);background:var(--accent-2);border:none;border-radius:8px;padding:9px 16px;cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.ag-rite-btn:hover{filter:brightness(1.08)}
.ag-rite-btn.ghost{background:none;border:1px solid var(--line-2);color:var(--ink-2,#aeb4bd)}
.ag-rite-btn.seal{align-self:stretch;justify-content:center}
.ag-rite-btn .fic{width:15px;height:15px}
.ag-rite-row{display:flex;gap:8px;justify-content:flex-end}
.ag-rite-top{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
.ag-rite-mark{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--line-2);color:var(--ink-4);font-size:10px}
.ag-rite-mark.done{background:var(--good,#57C888);color:#06140c;border-color:transparent}
.ag-rite-ed{margin-left:auto;background:none;border:none;color:var(--ink-4);cursor:pointer;font-size:13px;padding:0 2px}
.ag-rite-ed:hover{color:var(--accent-2)}
.ag-rite-vowt{font-family:var(--sans);font-size:15px;font-weight:600;color:var(--ink);line-height:1.4}
.ag-rite-sub{font-family:var(--sans);font-size:11px;color:var(--ink-4)}

/* daily-rite mark on calendar days */
.ag-cell{position:relative}
.ag-cell .ag-ritemk{position:absolute;top:3px;right:4px;font-size:9px;line-height:1;color:var(--accent-2);pointer-events:none}
.ag-cell.perfect .ag-ritemk{color:var(--good,#57C888)}
/* ── stronger calendar — denser cells + richer day states so the grid carries weight ── */
.ag-cal .ag-grid{gap:6px}
.ag-cal .ag-cell{aspect-ratio:auto !important;min-height:86px;border-radius:7px;padding:6px 8px;background:linear-gradient(155deg,color-mix(in srgb,var(--accent) 7%,var(--void-1,#0b0c0e)),var(--void-1,#0b0c0e) 78%) !important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.025);transition:background .14s,box-shadow .14s}
.ag-cal .ag-cell.empty{background:none !important;box-shadow:none}
.ag-cal .ag-cell.future{background:linear-gradient(155deg,rgba(255,255,255,.03),transparent 70%) !important;opacity:.5;box-shadow:inset 0 0 0 1px rgba(255,255,255,.03)}
.ag-cal .ag-cell.logged{background:linear-gradient(155deg,rgba(62,214,107,.26),rgba(62,214,107,.05) 82%) !important}
.ag-cal .ag-cell.perfect{background:linear-gradient(155deg,rgba(62,214,107,.46),rgba(62,214,107,.12) 85%) !important;box-shadow:inset 0 0 0 1px rgba(62,214,107,.5),0 0 22px -6px rgba(62,214,107,.55) !important}
.ag-cal .ag-cell.miss{background:linear-gradient(155deg,rgba(233,96,58,.24),rgba(233,96,58,.04) 80%) !important;box-shadow:inset 3px 0 0 #E9603A !important}
.ag-cal .ag-cell.today{background:linear-gradient(155deg,rgba(199,160,56,.30),rgba(199,160,56,.06) 82%) !important;box-shadow:inset 0 0 0 2px var(--gold),0 0 22px -6px rgba(199,160,56,.55) !important}
.ag-cal .ag-cell.sel{box-shadow:inset 0 0 0 2px #fff !important}
.ag-cal .ag-cell:not(.empty):not(.future):hover{background:linear-gradient(155deg,color-mix(in srgb,var(--accent) 13%,var(--void-1,#0b0c0e)),var(--void-1,#0b0c0e) 75%) !important;cursor:pointer}
.ag-cal .ag-dn{font-family:var(--mono) !important;font-size:12.5px !important;font-weight:600 !important;color:var(--ink-2) !important}
.ag-cal .ag-cell.logged .ag-dn{color:#d8f3e2 !important}
.ag-cal .ag-cell.perfect .ag-dn{color:#eafff0 !important}
.ag-cal .ag-cell.today .ag-dn{color:var(--gold) !important;font-weight:800 !important}
.ag-cal .ag-dots i{width:5px !important;height:5px !important;background:#3ED66B !important;box-shadow:0 0 5px rgba(62,214,107,.55)}
.ag-cal .ag-cell.perfect .ag-dots i{background:#eafff0 !important;box-shadow:0 0 6px rgba(255,255,255,.7)}
.ag-cal .ag-dow{font-size:9.5px !important;font-weight:700 !important;color:var(--ink-3) !important;letter-spacing:.16em}
.ag-cal .ag-qdl{font-size:8.5px !important;font-weight:600}
.ag-rbar-mo{font-size:12.5px;color:var(--ink-2);font-weight:700}

/* Today items: XP + kleos reward badge + note/comment button */
.ag-task{display:flex;align-items:center;gap:9px}
.ag-task .ag-tb{flex:1;min-width:0}
.ag-qrow .ag-qname{flex:1;min-width:0}
.ag-rew{flex:none;display:inline-flex;align-items:baseline;font-family:var(--mono);font-size:9.5px;color:var(--ink-3);background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:20px;padding:2px 8px;white-space:nowrap;letter-spacing:.02em}
.ag-rew em{font-style:normal;opacity:.65;margin:0 4px 0 2px;text-transform:uppercase}
.ag-rew i{font-style:normal;color:var(--accent-2);margin-left:1px}
.ag-rew.rite{color:var(--accent-2);border-color:color-mix(in srgb,var(--accent) 32%,transparent);background:color-mix(in srgb,var(--accent) 8%,transparent)}
.ag-note{flex:none;width:24px;height:24px;border-radius:6px;background:none;border:1px solid var(--line);color:var(--ink-4);cursor:pointer;font-size:12px;display:inline-flex;align-items:center;justify-content:center;padding:0}
.ag-note:hover{color:var(--accent-2);border-color:var(--accent-2)}

/* Routine cleanup: collapsible category groups + fold-away done section */
.ag-cat{margin-bottom:2px}
.ag-cathd{display:flex;align-items:center;gap:8px;padding:9px 3px;cursor:pointer;user-select:none;border-radius:6px}
.ag-cathd:hover{background:rgba(255,255,255,.025)}
.ag-catcar{flex:none;width:10px;color:var(--ink-4);font-size:9px}
.ag-catdot{flex:none;width:8px;height:8px;border-radius:50%}
.ag-catnm{flex:1;min-width:0;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2,#aeb4bd)}
.ag-cat.col .ag-catnm{color:var(--ink-4)}
.ag-catn{flex:none;font-family:var(--mono);font-size:9px;color:var(--ink-4)}
/* want-grouped routine: the desire heads read as titles (sans, sentence-case), not uppercase tag labels */
.ag-catemb{flex:none;font-size:11px;line-height:1}
.ag-catwant .ag-catnm{font-family:var(--sans);font-size:12.5px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-catwant.col .ag-catnm{color:var(--ink-3)}
.ag-catwant .ag-cathd{padding:11px 3px 7px;border-top:1px solid var(--line);margin-top:4px}
.ag-catwant:first-of-type .ag-cathd{border-top:none;margin-top:0}
.ag-catwant .ag-task{padding-left:20px}
.ag-donehd{display:flex;align-items:center;gap:6px;padding:7px 3px 7px 20px;font-family:var(--mono);font-size:9.5px;color:var(--ink-4);cursor:pointer;text-transform:uppercase;letter-spacing:.06em}
.ag-donehd:hover{color:var(--ink-2)}
.ag-dupwarn{margin-left:auto;font-family:var(--mono);font-size:9px;color:var(--warn);cursor:pointer;padding:1px 8px;border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:20px}

/* ⠿ drag handle on every map card */
.cg-grip{flex:none;color:var(--ink-4);font-size:11px;cursor:grab;opacity:.4;padding:0 3px 0 0;transition:opacity .12s,color .12s;touch-action:none}
.cg-ritem:hover .cg-grip{opacity:.9}
.cg-grip:hover{opacity:1;color:var(--accent-2)}
.cg-flow .cgp-grip{cursor:grab;opacity:.4;touch-action:none}
.cgp-hab:hover .cgp-grip{opacity:.9}
.cgp-grip:hover{color:var(--accent-2);opacity:1}
/* pulsing "drop to add" box at the top of each column while dragging */
.cg-newdrop{display:none}
.cg-flow.cg-connecting .cg-newdrop{display:flex;align-items:center;justify-content:center;margin:2px 0 9px;padding:13px 8px;border:1.5px dashed color-mix(in srgb,var(--accent) 48%,transparent);border-radius:9px;font-family:var(--mono);font-size:9.5px;letter-spacing:.03em;color:var(--accent-2);background:color-mix(in srgb,var(--accent) 6%,transparent);animation:cgpulse 1.3s ease-in-out infinite;cursor:copy}
@keyframes cgpulse{0%,100%{opacity:.5;box-shadow:0 0 0 0 rgba(45,212,191,0)}50%{opacity:1;box-shadow:0 0 15px 0 rgba(45,212,191,.28)}}
.cg-flow.cg-connecting .cg-newdrop.cg-ndhi{background:color-mix(in srgb,var(--accent) 20%,transparent);border-style:solid;color:var(--ink);animation:none;opacity:1}

/* XP/kleos reward — clean inline text (no box), larger XP, gold kleos */
.ag-rew{flex:none;display:inline-flex;align-items:baseline;gap:4px;font-family:var(--mono);white-space:nowrap;padding:0 !important;background:none !important;border:none !important;letter-spacing:0}
.ag-rew b{font-size:13px;font-weight:600;color:var(--accent-2);font-variant-numeric:tabular-nums}
.ag-rew em{font-style:normal;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4)}
/* kleos chip — sans font so the ◈ diamond actually renders (mono font lacks the glyph → tofu) */
.ag-rew i{font-style:normal;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--gold,#ECC94B);margin-left:5px;font-variant-numeric:tabular-nums}
.ag-rew.rite i{color:var(--accent-2)}
/* rite composer: reward sits left, "Clock in" button right — no more cramming */
.ag-rite-row .ag-rew.rite{margin-right:auto;align-self:center}
.ag-rite-box.clocked .ag-rew.rite{margin-left:8px}
/* note button — subtle icon, not a boxed button */
.ag-note{border:none !important;background:none !important;color:var(--ink-4);opacity:.4;width:22px}
.ag-task:hover .ag-note,.ag-qrow:hover .ag-note{opacity:.85}
/* XP/kleos reward on routine rows → hover-reveal only, so the list stays lean */
.ag-task .ag-rew{opacity:0;transition:opacity .12s}
.ag-task:hover .ag-rew{opacity:.9}
@media (hover:none){.ag-task .ag-rew{opacity:.9}}
/* platonic solid on each view tab — 2x, tight to the left, rotating */
.ov-tabsolid{display:inline-flex;width:25px;height:25px;margin:-4px 5px -4px -3px;vertical-align:middle}
.ov-tabsolid .th-solid{width:25px;height:25px;display:block;overflow:visible}
/* quest-row priority star + octa mark */
.ag-qstar{flex:none;background:none;border:none;color:var(--ink-4);font-size:14px;line-height:1;cursor:pointer;padding:0 2px;transition:color .12s}
.ag-qstar.on{color:#ECC94B}
.ag-qstar:hover{color:#ECC94B}
/* ══ PRIORITY ELEVATION — starred items dominate the surface (Today · Home · Map) ══ */
.ag-qrow.pri{background:linear-gradient(100deg,color-mix(in srgb,#ECC94B 15%,transparent),color-mix(in srgb,#ECC94B 4%,transparent) 60%,transparent);border-radius:8px;box-shadow:inset 3px 0 0 #ECC94B,0 2px 14px -8px rgba(236,201,75,.5)}
.ag-qrow.pri .ag-qname{color:#fff;font-weight:700}
.ag-qrow.pri .ag-qstar.on{color:#ECC94B;filter:drop-shadow(0 0 5px rgba(236,201,75,.7))}
/* Home quest cards — a starred quest glows gold and leads */
.camp-star{position:absolute;top:9px;right:9px;z-index:2;background:none;border:none;color:var(--ink-4);font-size:15px;line-height:1;cursor:pointer;padding:2px;transition:color .12s,filter .12s}
.camp-star:hover{color:#ECC94B}
.camp-star.on{color:#ECC94B;filter:drop-shadow(0 0 6px rgba(236,201,75,.75))}
.camp-star.sm{position:static;font-size:12px;order:-1;margin-right:1px}
.camp-card.pri{border-color:color-mix(in srgb,#ECC94B 55%,var(--line-2)) !important;box-shadow:0 0 0 1px color-mix(in srgb,#ECC94B 40%,transparent),0 6px 22px -10px rgba(236,201,75,.55);background-image:linear-gradient(150deg,color-mix(in srgb,#ECC94B 9%,transparent),transparent 55%)}
.camp-card.camp-primary.pri{transform:translateY(-1px)}
.camp-card.camp-primary.pri .camp-title{color:#fff}
.camp-card.camp-mini.pri{box-shadow:inset 2px 0 0 #ECC94B,0 3px 14px -9px rgba(236,201,75,.5)}
/* Map want cards — starred want blazes */
.ovmap-card.pri{border-color:color-mix(in srgb,#ECC94B 50%,var(--line-2)) !important;box-shadow:0 0 22px -8px rgba(236,201,75,.5),inset 3px 0 0 #ECC94B}
.ovmap-card.pri .ovmap-tag{color:#ECC94B}
/* ══ STRUCTURED CARD DETAIL — Today right panel (replaces the connection graph) ══ */
.ag-carddetail{display:flex;flex-direction:column;flex:1;min-height:0;background:none;border:none;border-left:1px solid var(--line);border-radius:0;overflow:hidden;padding-left:26px}
.ag-cd-scroll{flex:1;min-height:0;overflow-y:auto;padding:16px 20px 40px 0}
.ag-cd-hd{display:flex;align-items:center;gap:13px;margin-bottom:4px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.ag-cd-sig{width:44px;height:44px;flex:none;filter:drop-shadow(0 0 7px color-mix(in srgb,var(--tc) 50%,transparent))}
.ag-cd-sig svg{width:100%;height:100%}
.ag-cd-hb{min-width:0;display:flex;flex-direction:column;gap:3px}
.ag-cd-type{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--tc);font-weight:700;display:flex;align-items:center;gap:8px}
.ag-cd-lv{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.04em;color:var(--tc);padding:2px 6px;border:1px solid color-mix(in srgb,var(--tc) 45%,transparent);border-radius:5px;background:color-mix(in srgb,var(--tc) 12%,transparent)}
.ag-cd-t{font-family:var(--sans);font-size:17px;font-weight:700;color:var(--ink);line-height:1.2}
.ag-cd-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;margin:16px 0 4px;background:var(--line-3);border:1px solid var(--line-3);border-radius:8px;overflow:hidden}
.ag-cd-stat{display:flex;flex-direction:column;align-items:center;gap:3px;padding:11px 4px;background:var(--void-2,#0e1013)}
.ag-cd-stat b{font-family:var(--sans);font-size:18px;font-weight:700;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}
.ag-cd-stat b i{font-style:normal;font-size:11px;color:var(--ink-3);font-weight:600;margin-left:1px}
.ag-cd-stat span{font-family:var(--mono);font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);text-align:center}
.ag-cd-stat.hot b{color:var(--tc)}
@media(max-width:1300px){.ag-cd-stats{grid-template-columns:repeat(3,1fr)}}
.ag-cd-lab{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin:18px 0 9px;display:flex;align-items:center;gap:7px}
.ag-cd-lab em{color:var(--ink-3);font-style:normal}
.ag-cd-actrow{display:flex;align-items:center;gap:10px;margin:14px 0 4px}
.ag-cd-dl{font-family:var(--mono);font-size:11px;color:var(--ink-3);border:1px solid var(--line-2);border-radius:6px;padding:5px 9px}
.ag-cd-dl.over{color:#E9603A;border-color:color-mix(in srgb,#E9603A 40%,var(--line-2))}
.ag-cd-dl.soon{color:#ECC94B}
.ag-cd-done,.ag-cd-did{margin-left:auto;font-family:var(--sans);font-size:12px;font-weight:700;border-radius:999px;padding:7px 18px;cursor:pointer;border:none;color:var(--tc);background:color-mix(in srgb,var(--tc) 16%,transparent);transition:background .12s,color .12s}
.ag-cd-done:hover,.ag-cd-did:hover{background:var(--tc);color:#0b0c10}
.ag-cd-arch{flex:none;font-family:var(--sans);font-size:12px;font-weight:600;border-radius:999px;padding:7px 14px;cursor:pointer;border:1px solid var(--ink-6,rgba(255,255,255,.14));background:none;color:var(--ink-4,rgba(255,255,255,.55));transition:background .12s,color .12s,border-color .12s}
.ag-cd-arch:hover{border-color:#E5484D;color:#E5484D;background:color-mix(in srgb,#E5484D 12%,transparent)}
.ag-cd-streak{font-family:var(--mono);font-size:12px;color:var(--tc);font-weight:700}
.ag-cd-want{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid color-mix(in srgb,#2DD4BF 30%,var(--line-2));border-radius:10px;background:none;padding:0;cursor:pointer;overflow:hidden;transition:border-color .12s}
.ag-cd-want:hover{border-color:#2DD4BF}
.ag-cd-wimg{width:74px;height:56px;flex:none;display:grid;place-items:center;background:var(--void-1)}
.ag-cd-wimg.has{background-size:cover;background-position:center}
.ag-cd-wimg svg{width:30px;height:30px}
.ag-cd-wt{font-family:var(--sans);font-size:13.5px;font-weight:600;color:var(--ink);padding-right:12px;overflow:hidden;text-overflow:ellipsis}
.ag-cd-vision{width:100%;height:150px;border-radius:10px;background-size:cover;background-position:center;margin:2px 0 4px;box-shadow:inset 0 -40px 40px -20px rgba(0,0,0,.6)}
.ag-cd-traits{display:flex;flex-direction:column;gap:7px}
.ag-cd-trait{position:relative;display:flex;align-items:center;gap:11px;width:100%;text-align:left;border:1px solid var(--line-2);border-left:2px solid var(--tc);border-radius:0 8px 8px 0;background:color-mix(in srgb,var(--tc) 5%,transparent);padding:9px 12px;cursor:pointer;transition:border-color .12s}
.ag-cd-goto{position:absolute;top:6px;right:8px;width:20px;height:20px;display:grid;place-items:center;border-radius:5px;color:var(--tc);font-size:12px;line-height:1;opacity:.55;cursor:pointer;transition:opacity .12s,background .12s}
.ag-cd-goto:hover{opacity:1;background:color-mix(in srgb,var(--tc) 18%,transparent)}
.ag-cd-trait:hover{border-color:var(--tc)}
.ag-cd-tsig{width:30px;height:30px;flex:none}.ag-cd-tsig svg{width:100%;height:100%}
.ag-cd-tb{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ag-cd-tn{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--ink)}
.ag-cd-tm{font-family:var(--mono);font-size:9px;letter-spacing:.06em;color:var(--tc);opacity:.85}
.ag-cd-tbar{height:3px;border-radius:2px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:3px}
.ag-cd-tbar i{display:block;height:100%;background:var(--tc);border-radius:2px}
.ag-cd-steps{display:flex;flex-direction:column}
.ag-cd-step{display:flex;align-items:center;gap:11px;padding:9px 4px;border-bottom:1px solid var(--line-3)}
.ag-cd-step.kid{padding-left:26px;border-bottom:none}
.ag-cd-chk{flex:none;width:20px;height:20px;border-radius:5px;border:1.5px solid var(--line-2);background:none;color:#ECC94B;font-size:12px;cursor:pointer;display:grid;place-items:center;transition:background .12s,border-color .12s}
.ag-cd-chk.on{background:#ECC94B;border-color:#ECC94B;color:#0b0c10}
.ag-cd-chk.sm{width:17px;height:17px;border-radius:50%;color:#3ED66B}
.ag-cd-chk.sm.on{background:#3ED66B;border-color:#3ED66B;color:#0b0c10}
.ag-cd-stt{flex:1;min-width:0;font-family:var(--sans);font-size:13.5px;color:var(--ink);line-height:1.4;border-radius:4px;padding:2px 4px;margin:-2px -4px;outline:none;transition:background .12s}
.ag-cd-stt[contenteditable]:hover{background:color-mix(in srgb,var(--ink) 6%,transparent)}
.ag-cd-stt[contenteditable]:focus{background:color-mix(in srgb,var(--accent-2) 12%,transparent);box-shadow:inset 0 -1px 0 var(--accent-2)}
.ag-cd-stt.done{color:var(--ink-4);text-decoration:line-through}
.ag-cd-stx{flex:none;background:none;border:none;color:var(--ink-4);cursor:pointer;font-size:12px;line-height:1;padding:2px 4px;opacity:0;transition:opacity .12s,color .12s}
.ag-cd-step:hover .ag-cd-stx{opacity:.6}
.ag-cd-stx:hover{opacity:1;color:#E5484D}
.ag-cd-stepadd{margin-top:9px}
.ag-cd-stepin{width:100%;box-sizing:border-box;background:none;border:none;border-bottom:1px dashed var(--line-2);color:var(--ink);font-family:var(--sans);font-size:13px;padding:6px 2px;outline:none}
.ag-cd-stepin:focus{border-bottom-color:#ECC94B}
.ag-cd-drivers{display:flex;flex-wrap:wrap;gap:7px}
.ag-cd-driver{display:inline-flex;align-items:center;gap:7px;border:1px solid color-mix(in srgb,#3ED66B 30%,var(--line-2));border-radius:8px;background:color-mix(in srgb,#3ED66B 6%,transparent);padding:6px 10px;cursor:pointer;font-family:var(--sans);font-size:12px;color:var(--ink)}
.ag-cd-driver:hover{border-color:#3ED66B}
.ag-cd-dsig{width:18px;height:18px}.ag-cd-dsig svg{width:100%;height:100%}
.ag-cd-dm{font-family:var(--mono);font-size:10px;color:#3ED66B}
.ag-cd-seq{display:flex;flex-direction:column;gap:7px}
.ag-cd-seqq{display:flex;align-items:center;gap:11px;width:100%;text-align:left;border:1px solid var(--line-2);border-radius:8px;background:var(--void-1);padding:9px 12px;cursor:pointer;transition:border-color .12s}
.ag-cd-seqq:hover{border-color:#ECC94B}
.ag-cd-seqq.pri{border-color:color-mix(in srgb,#ECC94B 50%,var(--line-2));box-shadow:inset 2px 0 0 #ECC94B}
.ag-cd-seqn{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-size:10px;color:var(--ink-3);border:1px solid var(--line-2)}
.ag-cd-sqsig{width:22px;height:22px;flex:none}.ag-cd-sqsig svg{width:100%;height:100%}
.ag-cd-sqt{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}
.ag-cd-drills{display:flex;flex-direction:column;gap:5px}
.ag-cd-drill{display:flex;align-items:center;gap:10px;padding:5px 2px}
.ag-cd-drt{font-family:var(--sans);font-size:13px;color:var(--ink-2)}
.ag-cd-drx{flex:none;margin-left:auto;background:none;border:none;color:var(--ink-4);font-size:10px;cursor:pointer;opacity:0;transition:opacity .12s;padding:0 2px}
.ag-cd-drill:hover .ag-cd-drx{opacity:.6}
.ag-cd-drx:hover{color:#E5484D;opacity:1}
.ag-cd-empty{font-family:var(--sans);font-size:12px;color:var(--ink-4);padding:8px 2px}
/* top bar = a clean panel header, NOT a nested box (matches the calendar panel chrome) */
.ag-carddetail .ag-cm-top{border:none !important;background:none !important;border-radius:0 !important;border-bottom:1px solid var(--line) !important;padding:15px 20px 14px 0 !important;margin:0 !important;flex:0 0 auto}
.ag-carddetail .ag-cm-top .ag-back{border:none;background:none;padding:0}
.ag-carddetail .ag-cm-top .ag-back:hover{color:var(--accent-2)}
/* add-virtue / add-vice affordances */
.ag-cd-addtr{align-self:flex-start;margin-top:6px;background:none;border:none;border-radius:0;color:#a99bf9;font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.01em;padding:3px 2px;cursor:pointer;opacity:.82;transition:opacity .12s,color .12s}
.ag-cd-addtr:hover,.ag-cd-addtr.on{opacity:1;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.ag-cd-addtr.vice{color:#E5484D}
.ag-cd-addtr.quest{color:#ECC94B}
.ag-cd-addtr.counter{color:#3ED66B}
/* inline trait / vice picker */
.ag-cd-trpick{width:100%;margin-top:9px;padding:11px;border:1px solid var(--line-2);border-radius:9px;background:var(--void-1)}
.ag-cd-trin{width:100%;box-sizing:border-box;background:var(--void,#0a0b0d);border:1px solid var(--line-2);border-radius:7px;color:var(--ink);font-family:var(--sans);font-size:12.5px;padding:7px 9px;outline:none;margin-bottom:9px}
.ag-cd-trin:focus{border-color:var(--tc)}
.ag-cd-trlist{display:flex;flex-wrap:wrap;gap:6px;max-height:160px;overflow-y:auto}
.ag-cd-tro{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:11.5px;color:var(--ink-2);background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:7px;padding:4px 9px 4px 6px;cursor:pointer;transition:color .12s,border-color .12s}
.ag-cd-tro:hover{color:var(--ink);border-color:var(--tc)}
.ag-cd-trosig{width:17px;height:17px;flex:none}.ag-cd-trosig svg{width:100%;height:100%}
.ag-cd-tronone{font-family:var(--sans);font-size:11px;color:var(--ink-4);padding:2px}
/* linear per-day activity line (how much per day, left→right) */
.ag-cd-line{display:flex;align-items:flex-end;gap:2px;height:66px;padding:2px 0}
.ag-cd-lbar{flex:1;height:100%;display:flex;align-items:flex-end;min-width:0}
.ag-cd-lbar i{display:block;width:100%;border-radius:2px 2px 0 0;box-shadow:0 0 6px -2px color-mix(in srgb,var(--lc,#3ED66B) 60%,transparent)}
.ag-cd-linelabs{display:flex;justify-content:space-between;margin-top:6px;font-family:var(--mono);font-size:9px;letter-spacing:.06em;color:var(--ink-4)}
.ag-qmark .th-solid{width:18px;height:18px;display:block;overflow:visible}
/* vice ⇄ virtue SET card */
.ag-set{border:1px solid var(--line-2);border-radius:10px;padding:9px 11px;margin-bottom:9px;background:color-mix(in srgb,#E5484D 4%,transparent)}
.ag-set.slipped{opacity:.92;border-color:color-mix(in srgb,#E5484D 40%,var(--line-2))}
.ag-setmain{display:flex;align-items:center;gap:9px}
.ag-setmain .ag-tb{flex:1;min-width:0}
.ag-setratio{flex:none;font-family:var(--mono);font-size:10px;color:var(--ink-4);border:1px solid var(--line-2);border-radius:5px;padding:1px 6px;letter-spacing:.02em}
.ag-setvirtues{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.ag-setv{display:inline-flex;align-items:center;font-family:var(--sans);font-size:10.5px;color:#a99bf9;background:color-mix(in srgb,#8E7BF6 12%,transparent);border:1px solid color-mix(in srgb,#8E7BF6 32%,transparent);border-radius:6px;padding:2px 8px}
.ag-setnone{font-size:10px;color:var(--ink-4);font-style:italic}
.ag-vicenode{display:inline-flex;align-items:center;font-family:var(--sans);font-size:10.5px;color:#E5484D;background:color-mix(in srgb,#E5484D 12%,transparent);border:1px solid color-mix(in srgb,#E5484D 34%,transparent);border-radius:6px;padding:2px 8px}
.ag-vicelink{font-family:var(--sans);font-size:10px;color:#E5484D;background:none;border:1px dashed color-mix(in srgb,#E5484D 40%,var(--line-2));border-radius:6px;padding:2px 8px;cursor:pointer}
.ag-vicelink:hover{background:color-mix(in srgb,#E5484D 12%,transparent)}
.ag-setarrow{color:var(--ink-4);font-size:11px}
.ag-setlead{font-family:var(--mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin-right:1px}
/* ══ VICE CARD v2 — clean hierarchy, restrained colour (thin red left-accent is the ONLY vice colour) ══ */
.ag-vc{display:flex;align-items:center;gap:10px;padding:9px 4px 9px 13px;border-bottom:1px solid var(--line);position:relative}
.ag-vc::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:2px;border-radius:2px;background:color-mix(in srgb,#E5484D 50%,transparent)}
.ag-vc.slipped::before{background:#E5484D}
.ag-vc.beaten::before{background:#3ED66B}
.ag-vc-caret{flex:none;width:14px;background:none;border:none;color:var(--ink-4);font-size:10px;cursor:pointer;transition:transform .14s,color .12s;padding:0}
.ag-vc-caret.open{transform:rotate(90deg);color:var(--ink-2)}
.ag-vc-body{flex:1;min-width:0}
.ag-vc-name{font-family:var(--sans);font-size:14px;font-weight:700;color:var(--ink);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-vc-meta{font-family:var(--sans);font-size:11px;color:var(--ink-4);line-height:1.3;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-vc.slipped .ag-vc-meta{color:color-mix(in srgb,#E5484D 70%,var(--ink-4))}
.ag-vc-log{flex:none;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-3);background:none;border:1px solid var(--line-2);border-radius:7px;padding:5px 11px;cursor:pointer;white-space:nowrap;transition:color .12s,border-color .12s,background .12s}
.ag-vc-log:hover{color:#E5484D;border-color:color-mix(in srgb,#E5484D 45%,transparent)}
.ag-vc-log.on{color:#0b0c10;background:#E5484D;border-color:#E5484D}
.ag-vc-log.beaten{color:#3ED66B;border-color:color-mix(in srgb,#3ED66B 45%,transparent)}
.ag-vc-log.beaten:hover{background:color-mix(in srgb,#3ED66B 16%,transparent)}
.ag-vc-mgmt{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.ag-vc-mgl{font-family:var(--mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4)}
.ag-vc-chip{font-family:var(--sans);font-size:10.5px;color:var(--ink-2);background:rgba(255,255,255,.05);border:1px solid var(--line-2);border-radius:6px;padding:2px 8px}
.ag-vc-chip.node{color:#E5484D;border-color:color-mix(in srgb,#E5484D 34%,transparent);background:color-mix(in srgb,#E5484D 10%,transparent)}
.ag-vc-add{font-family:var(--sans);font-size:10px;color:var(--ink-4);background:none;border:1px dashed var(--line-2);border-radius:6px;padding:2px 8px;cursor:pointer;transition:color .12s,border-color .12s}
.ag-vc-add:hover{color:var(--ink-2)}
.ag-vc-add.ghost{border-style:solid;opacity:.55}
/* ══ VICE SET-ROW v3 — vice (level + log) paired with counter-habits as performance cells ══ */
.ag-vs{position:relative;padding:9px 4px 11px 14px;border-bottom:1px solid var(--line)}
.ag-vs::before{content:"";position:absolute;left:0;top:9px;bottom:11px;width:2px;border-radius:2px;background:color-mix(in srgb,#E5484D 48%,transparent)}
.ag-vs.slipped::before{background:#E5484D}
.ag-vs.beaten::before{background:#3ED66B}
.ag-vs-head{display:flex;align-items:center;gap:10px}
.ag-vs-lv{flex:none;font-family:var(--mono);font-size:10px;font-weight:700;color:#E5484D;background:color-mix(in srgb,#E5484D 12%,transparent);border:1px solid color-mix(in srgb,#E5484D 30%,transparent);border-radius:6px;padding:3px 7px;letter-spacing:.02em}
.ag-vs.beaten .ag-vs-lv{color:#3ED66B;background:color-mix(in srgb,#3ED66B 12%,transparent);border-color:color-mix(in srgb,#3ED66B 30%,transparent)}
.ag-vs-body{flex:1;min-width:0}
.ag-vs-name{font-family:var(--sans);font-size:14px;font-weight:700;color:var(--ink);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-vs-meta{font-family:var(--sans);font-size:11px;color:var(--ink-4);margin-top:2px}
.ag-vs.slipped .ag-vs-meta{color:color-mix(in srgb,#E5484D 70%,var(--ink-4))}
.ag-vs-log{flex:none;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-3);background:none;border:1px solid var(--line-2);border-radius:7px;padding:5px 11px;cursor:pointer;white-space:nowrap;transition:color .12s,border-color .12s,background .12s}
.ag-vs-log:hover{color:#E5484D;border-color:color-mix(in srgb,#E5484D 45%,transparent)}
.ag-vs-log.on{color:#0b0c10;background:#E5484D;border-color:#E5484D}
.ag-vs-log.beaten{color:#3ED66B;border-color:color-mix(in srgb,#3ED66B 45%,transparent)}
.ag-vs-log.beaten:hover{background:color-mix(in srgb,#3ED66B 16%,transparent)}
.ag-vs-x{flex:none;background:none;border:none;color:var(--ink-4);font-size:12px;cursor:pointer;opacity:0;transition:opacity .12s;padding:0 2px}
.ag-vs:hover .ag-vs-x{opacity:.5}
.ag-vs-x:hover{color:#3ED66B;opacity:1}
.ag-vs-counters{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.ag-cc{--c:var(--line-2);position:relative;display:inline-flex;align-items:center;border:1px solid var(--c);border-radius:8px;background:color-mix(in srgb,var(--c) 9%,transparent)}
.ag-cc.held{--c:#3ED66B}
.ag-cc.strong{--c:color-mix(in srgb,#3ED66B 55%,var(--line-2))}
.ag-cc.miss{--c:#E5484D}
.ag-cc-btn{display:inline-flex;align-items:center;gap:7px;background:none;border:none;cursor:pointer;padding:4px 4px 4px 8px}
.ag-cc-chk{width:14px;height:14px;flex:none;border:1.5px solid var(--c);border-radius:4px;display:grid;place-items:center;font-size:9px;color:#0b0c10}
.ag-cc.held .ag-cc-chk{background:#3ED66B}
.ag-cc-nm{font-family:var(--sans);font-size:11.5px;color:var(--ink);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-cc-st{font-family:var(--mono);font-size:10px;color:var(--ink-4);font-variant-numeric:tabular-nums}
.ag-cc-st i{font-style:normal;opacity:.55}
.ag-cc-x{flex:none;color:var(--ink-4);font-size:9px;cursor:pointer;padding:0 7px 0 1px;opacity:0;transition:opacity .12s;align-self:center}
.ag-cc:hover .ag-cc-x{opacity:.55}
.ag-cc-x:hover{color:#E5484D;opacity:1}
.ag-cc-add{font-family:var(--sans);font-size:11px;color:var(--ink-4);background:none;border:1px dashed var(--line-2);border-radius:8px;padding:4px 9px;cursor:pointer;transition:color .12s,border-color .12s}
.ag-cc-add:hover,.ag-cc-add.on{color:var(--ink-2);border-color:color-mix(in srgb,var(--accent-2,#2DD4BF) 40%,var(--line-2))}
.ag-pair-pop{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;padding:8px 9px;border:1px solid var(--line-2);border-radius:8px;background:rgba(255,255,255,.03)}
.ag-pair-o{font-family:var(--sans);font-size:11px;color:var(--ink-2);background:rgba(255,255,255,.05);border:1px solid var(--line-2);border-radius:6px;padding:3px 9px;cursor:pointer}
.ag-pair-o:hover{color:var(--ink);border-color:var(--accent-2,#2DD4BF)}
.ag-pair-none{font-size:10.5px;color:var(--ink-4);font-style:italic}
/* Momentum chart — good (green, up) vs vice (red, down) with a 7-day average line */
.ag-perf{margin-top:16px;padding-top:13px;border-top:1px solid var(--line)}
.ag-perf-hd{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px}
.ag-perf-hd span{letter-spacing:.02em;text-transform:none}
.ag-perf-hd b{font-weight:700}
.ag-perf-hd .g{color:#3ED66B}
.ag-perf-hd .r{color:#E5484D}
/* ══ THIS WEEK card ══ */
.wk{border:1px solid var(--line-2);border-radius:12px;padding:16px 18px;margin-bottom:18px;background:var(--void-2,#0e1013)}
.wk-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:15px}
.wk-title{font-family:var(--sans);font-size:18px;font-weight:800;color:var(--ink);letter-spacing:-.01em}
.wk-sub{font-family:var(--sans);font-size:12px;color:var(--ink-4);margin-top:3px}
.wk-focus{flex:none;border:1px solid var(--line-2);border-radius:9px;padding:8px 12px;min-width:150px;max-width:220px;cursor:pointer;transition:border-color .12s}
.wk-focus:hover{border-color:color-mix(in srgb,var(--accent-2,#2DD4BF) 45%,var(--line-2))}
.wk-focus-l{font-family:var(--mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin-bottom:4px}
.wk-focus-t{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wk-tasks-l{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}
.wk-progress{height:5px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden}
.wk-progress i{display:block;height:100%;background:var(--accent-2,#2DD4BF);border-radius:3px;transition:width .35s}
.wk-pct{font-family:var(--sans);font-size:11px;color:var(--ink-4);margin:6px 0 13px}
.wk-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.wk-card{text-align:left;background:rgba(255,255,255,.02);border:1px solid var(--line);border-radius:10px;padding:12px 13px;cursor:pointer;transition:border-color .12s,background .12s}
.wk-card:hover{border-color:var(--line-2);background:rgba(255,255,255,.045)}
.wk-card-t{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--ink);line-height:1.25;margin-bottom:7px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.wk-card-p{font-family:var(--mono);font-size:10px;color:var(--ink-4);margin-bottom:5px;font-variant-numeric:tabular-nums}
.wk-card-p.dim{opacity:.6}
.wk-card-bar{height:4px;border-radius:2px;background:rgba(255,255,255,.07);overflow:hidden}
.wk-card-bar i{display:block;height:100%;background:var(--accent-2,#2DD4BF);border-radius:2px}
.wk-card-bar.full i{background:#3ED66B}
@media(max-width:560px){.wk-grid{grid-template-columns:1fr}.wk-hd{flex-direction:column}.wk-focus{max-width:none;align-self:stretch}}
/* diverging stacked bars — green up (good), red down (vice), zero line in the middle */
.ag-perf-svg{width:100%;height:120px;display:block;overflow:visible}
.ag-perf-zero{stroke:var(--line-2);stroke-width:1;stroke-dasharray:2 3;opacity:.7}
.ag-perf-fit{stroke:var(--accent-2,#2DD4BF);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;opacity:1}
.ag-bar-g{fill:#3ED66B}
.ag-bar-r{fill:#E5484D}
.ag-perf-karma{font-family:var(--sans);text-transform:none;letter-spacing:.01em;color:var(--ink-4)}
.ag-perf-karma b{font-weight:700}
.ag-perf-karma .g{color:#3ED66B}
.ag-perf-karma .r{color:#E5484D}
.ag-set .ag-setvirtues{margin-top:7px;padding-top:7px}
.ag-vicetag{opacity:.85}
.ag-set.beaten{border-color:color-mix(in srgb,#3ED66B 45%,var(--line-2));background:color-mix(in srgb,#3ED66B 5%,transparent)}
.ag-set.beaten .ag-tm{color:#3ED66B}
.ag-transmute{flex:none;font-family:var(--sans);font-size:10.5px;font-weight:700;color:#3ED66B;background:none;border:1px solid color-mix(in srgb,#3ED66B 45%,var(--line-2));border-radius:7px;padding:5px 10px;cursor:pointer;white-space:nowrap;transition:background .12s}
.ag-transmute:hover{background:color-mix(in srgb,#3ED66B 16%,transparent)}
.ag-vicetag{font-family:var(--mono);font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:#E5484D;border:1px solid color-mix(in srgb,#E5484D 35%,transparent);border-radius:4px;padding:1px 4px;vertical-align:middle;margin-left:5px}
.ag-setv .th-solid-xs,.th-solid-xs{width:11px;height:11px;display:inline-block;vertical-align:middle;margin-right:4px;overflow:visible}
.ag-subbeh{border-left-color:color-mix(in srgb,#E5484D 40%,var(--line-2)) !important}
.ag-subbeh .ag-drchk{color:#E5484D;border-color:color-mix(in srgb,#E5484D 40%,var(--line-2))}
.ag-subbeh .ag-drchk.on{background:#E5484D;border-color:#E5484D;color:#0b0c10}
/* platonic-solid node icons on the Today rows + headers */
.ag-solidic{flex:none;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center}
.ag-solidic .th-solid{width:22px;height:22px;display:block;overflow:visible;filter:drop-shadow(0 0 3px rgba(0,0,0,.4))}
.ag-hsolid{display:inline-flex;width:14px;height:14px;vertical-align:middle;margin-right:2px}
.ag-hsolid .th-solid{width:14px;height:14px;display:block;overflow:visible}
.ag-remedy .th-solid-xs{width:11px;height:11px;display:inline-block;vertical-align:middle;margin-right:4px;overflow:visible}
/* trait gems (board gematria sigil) — orderly grid: sigil · name · level */
.ag-trcs{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:7px 14px;align-items:center}
.ag-trctop{margin:2px 0 16px}
.ag-trg{display:inline-flex;align-items:center;gap:6px;min-width:0}
.ag-trg-s{flex:none;width:24px;height:24px;display:inline-flex}
.ag-trg-s svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 3px color-mix(in srgb,#3ED66B 45%,transparent))}
.ag-trg.v .ag-trg-s svg{filter:drop-shadow(0 0 3px color-mix(in srgb,#E5484D 45%,transparent))}
.ag-trg-n{font-family:var(--sans);font-size:11px;color:var(--ink-3);max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-trg-lv{font-family:var(--mono);font-size:11px;font-weight:700;color:#3ED66B;font-variant-numeric:tabular-nums}
.ag-trg.v .ag-trg-lv{color:#E5484D}
/* collapse header for a habit's sub-rows */
.ag-subhd{align-self:flex-start;background:none;border:none;color:var(--ink-4);font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;padding:3px 0;cursor:pointer;transition:color .12s}
.ag-subhd:hover{color:var(--ink-2)}
.ag-subs.col{border-left-color:transparent;padding-left:0}
/* forged-trait sigils on a habit + search/assign picker */
.ag-htrs{display:flex;flex-wrap:wrap;align-items:center;gap:5px 10px;margin:2px 0 4px 16px}
.ag-htr{display:inline-flex;align-items:center;gap:4px;font-family:var(--sans);font-size:10.5px;color:var(--ink-3)}
.ag-htr-s{flex:none;width:16px;height:16px;display:inline-flex}
.ag-htr-s svg{width:100%;height:100%;overflow:visible}
/* build habit cards = green GRADIENT card, stacked tight, click to expand */
.ag-group-col .ag-task.ag-hcard{flex-direction:column;align-items:stretch;background:linear-gradient(160deg,color-mix(in srgb,#3ED66B 12%,#0c0d10),#0b0c10 70%);border:1px solid color-mix(in srgb,#3ED66B 30%,transparent);border-radius:9px;padding:11px 14px 9px;margin-bottom:4px;gap:0;box-shadow:0 6px 18px -14px rgba(0,0,0,.7)}
.ag-group-col .ag-task.ag-hcard:hover{border-color:color-mix(in srgb,#3ED66B 45%,transparent)}
.ag-group-col .ag-task.ag-hcard.done{opacity:.55}
.ag-hcard-row{display:flex;align-items:center;gap:10px;cursor:pointer}
.ag-group-col .ag-task.ag-hcard .ag-tt{font-size:14.5px;font-weight:700;text-transform:none;letter-spacing:0}
.ag-hcard-lv{border:none !important;background:none !important;padding:0 !important;color:#3ED66B;font-family:var(--mono);font-size:11px;font-weight:700}
/* shared log button (build = green "done", vice = red "did it") */
.ag-logbtn{flex:none;margin-left:auto;font-family:var(--sans);font-size:11px;font-weight:600;background:none;border:1px solid var(--line-2);border-radius:6px;padding:5px 11px;cursor:pointer;white-space:nowrap;transition:background .12s,color .12s,border-color .12s}
.ag-logbtn.build{color:#3ED66B;border-color:color-mix(in srgb,#3ED66B 40%,var(--line-2))}
.ag-logbtn.build:hover{background:color-mix(in srgb,#3ED66B 16%,transparent)}
.ag-logbtn.build.on{background:#3ED66B;color:#0b0c10;border-color:#3ED66B}
.ag-logbtn.vice{color:#E5484D;border-color:color-mix(in srgb,#E5484D 40%,var(--line-2))}
.ag-logbtn.vice:hover{background:color-mix(in srgb,#E5484D 16%,transparent)}
.ag-logbtn.vice.on{background:#E5484D;color:#0b0c10;border-color:#E5484D}
.ag-hcard-car{flex:none;color:var(--ink-4);font-size:9px;padding-left:2px}
.ag-xpbar{height:3px;background:rgba(255,255,255,.08);border-radius:2px;margin-top:9px;overflow:hidden}
.ag-xpbar i{display:block;height:100%;background:#3ED66B;border-radius:2px;transition:width .3s}
.ag-xpbar.v i{background:#E5484D}
.ag-hexp{margin:3px 0 8px 15px;padding-left:11px;border-left:1px solid var(--line)}
/* in an OPEN card, the add/connect affordances are subtle "+" text (visible, not boxed) */
.ag-hexp .ag-sub-add,.ag-hexp .ag-htr-add,.ag-hexp .ag-cc-add{opacity:.55 !important;border:none !important;background:none !important;color:var(--ink-4);font-size:11px;padding:3px 0}
.ag-hexp .ag-sub-add:hover,.ag-hexp .ag-htr-add:hover,.ag-hexp .ag-cc-add:hover{opacity:1 !important;color:var(--accent-2,#2DD4BF)}
.ag-hexp .ag-htrs{margin-left:0}
.ag-hexp .ag-subs{margin-left:0}
/* subtle column "+" to add a card to a group */
.ag-colplus{display:block;width:100%;background:none;border:1px dashed color-mix(in srgb,var(--line-2) 80%,transparent);border-radius:8px;color:var(--ink-4);font-size:12px;line-height:1;padding:7px 0;margin:2px 0 8px;cursor:pointer;opacity:.4;transition:opacity .12s,border-color .12s,color .12s}
.ag-coladd-row{display:flex;gap:6px}
.ag-coladd-row .ag-colplus{margin:2px 0 8px}
.ag-coladd-row .ag-coladd-in{margin:2px 0 8px}
/* the quest add-plus reads gold to match the yellow quest cards */
.ag-coladd-row .ag-colplus[data-agaddcardopen$=":quest"]:hover{border-color:color-mix(in srgb,#ECC94B 50%,transparent);color:#ECC94B}
.ag-group-col:hover .ag-colplus{opacity:.7}
.ag-colplus:hover{opacity:1;border-color:color-mix(in srgb,#3ED66B 45%,transparent);color:#3ED66B}
.ag-group-col:nth-child(2) .ag-colplus:hover{border-color:color-mix(in srgb,#E5484D 45%,transparent);color:#E5484D}
.ag-coladd-in{width:100%;box-sizing:border-box;background:var(--void,#0a0b0d);border:1px solid var(--line-2);border-radius:8px;color:var(--ink);font-family:var(--sans);font-size:12.5px;padding:8px 10px;margin:2px 0 8px;outline:none}
.ag-coladd-in:focus{border-color:var(--accent-2,#2DD4BF)}
/* add-existing-or-create combo popover (habit / vice / quest) */
.ag-coladd-row{flex-wrap:wrap}
.ag-coladd-pop{flex:1 1 100%;display:flex;flex-direction:column;margin:2px 0 8px}
.ag-coladd-pop .ag-coladd-in{margin:0}
.ag-coladd-hd{display:flex;gap:6px;align-items:stretch}
.ag-coladd-x{flex:none;background:none;border:1px solid var(--line-2);border-radius:8px;color:var(--ink-4);font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:0 9px;cursor:pointer;transition:color .12s,border-color .12s}
.ag-coladd-x:hover{color:#E5484D;border-color:color-mix(in srgb,#E5484D 45%,var(--line-2))}
.ag-coladd-list{display:flex;flex-wrap:wrap;gap:5px;max-height:132px;overflow-y:auto;margin-top:7px}
.ag-coladd-o{font-family:var(--sans);font-size:11.5px;color:var(--ink-2);background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:7px;padding:4px 9px;cursor:pointer;text-align:left;transition:color .12s,border-color .12s,background .12s}
.ag-coladd-o:hover{color:var(--ink);background:rgba(255,255,255,.07)}
.ag-coladd-o.v:hover{border-color:color-mix(in srgb,#E5484D 50%,transparent);color:#E5484D}
.ag-coladd-o:not(.v):not(.q):hover{border-color:color-mix(in srgb,#3ED66B 50%,transparent);color:#3ED66B}
.ag-coladd-o.q:hover{border-color:color-mix(in srgb,#ECC94B 50%,transparent);color:#ECC94B}
.ag-coladd-none{font-family:var(--sans);font-size:10.5px;color:var(--ink-4);padding:6px 2px 2px;opacity:.7}
/* RESPONSIVE — when the tasks column is narrow (map open / small screen), stack Build|Vices so titles show */
.ag-col.ag-tasks{container-type:inline-size}
@container (max-width:480px){
  .ag-group-cols{grid-template-columns:1fr !important;gap:2px 0}
  .ag-group-col:nth-child(2){margin-top:10px}
}
.ag-htr b{font-family:var(--mono);font-weight:700;color:#3ED66B}
.ag-htr.v b{color:#E5484D}
.ag-htr .ag-htr-x{background:none;border:none;color:var(--ink-4);font-size:8px;cursor:pointer;opacity:0;padding:0 1px}
.ag-htr:hover .ag-htr-x{opacity:.5}
.ag-htr-x:hover{color:#E5484D;opacity:1}
.ag-htr-add{background:none;border:none;color:var(--ink-4);font-family:var(--sans);font-size:10px;cursor:pointer;opacity:0;transition:opacity .12s}
.ag-htrs:hover .ag-htr-add,.ag-htr-add.on{opacity:.7}
.ag-htr-add:hover{color:var(--ink-2)}
.ag-trpick{flex-basis:100%;display:flex;flex-direction:column;gap:5px;margin-top:5px;padding:8px 9px;border:1px solid var(--line-2);border-radius:8px;background:rgba(255,255,255,.03)}
.ag-trpick-in,.ag-pair-in{background:var(--void,#0a0b0d);border:1px solid var(--line-2);border-radius:6px;color:var(--ink);font-family:var(--sans);font-size:11.5px;padding:5px 8px;outline:none;width:100%;box-sizing:border-box}
.ag-trpick-in:focus,.ag-pair-in:focus{border-color:var(--accent-2,#2DD4BF)}
.ag-trpick-list{display:flex;flex-wrap:wrap;gap:5px;max-height:120px;overflow-y:auto}
.ag-trpick-o{font-family:var(--sans);font-size:11px;color:var(--ink-2);background:rgba(255,255,255,.05);border:1px solid var(--line-2);border-radius:6px;padding:3px 9px;cursor:pointer}
.ag-trpick-o:hover{color:var(--ink);border-color:#a99bf9}
.ag-pair-in{margin-bottom:6px}
/* sub-item search picker */
.ag-subpick{display:flex;flex-direction:column;gap:5px;padding:2px 0 4px}
.ag-subpick-list{display:flex;flex-wrap:wrap;gap:5px;max-height:110px;overflow-y:auto}
.ag-subpick-o{font-family:var(--sans);font-size:11px;color:var(--ink-3);background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:6px;padding:3px 8px;cursor:pointer}
.ag-subpick-o:hover{color:var(--ink);border-color:var(--accent-2,#2DD4BF)}
/* auto-organize button */
.ag-organize{margin-left:auto;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--accent-2,#2DD4BF);background:none;border:1px solid color-mix(in srgb,var(--accent-2,#2DD4BF) 38%,var(--line-2));border-radius:7px;padding:4px 11px;cursor:pointer;transition:background .12s,border-color .12s}
.ag-organize:hover{background:color-mix(in srgb,var(--accent-2,#2DD4BF) 12%,transparent);border-color:var(--accent-2,#2DD4BF)}
/* ── GROUP — no box; a continuous vertical list with thin dividers, text-with-colour ── */
.ag-group{border:none;background:none;padding:0;margin-bottom:16px}
.ag-group-hd{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-3);display:flex;align-items:center;gap:6px;margin:0 0 4px;opacity:.75}
.ag-group-emb{color:#2DD4BF}
.ag-group-cols{display:grid;grid-template-columns:1fr 1fr;gap:6px 22px}
.ag-group-col{min-width:0;display:flex;flex-direction:column}
.ag-group-cl{font-family:var(--mono);font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4);padding-bottom:4px;margin-bottom:2px}
.ag-group-cl.build{color:color-mix(in srgb,#3ED66B 70%,var(--ink-4))}
.ag-group-cl.vice{color:color-mix(in srgb,#E5484D 70%,var(--ink-4))}
/* habit CARDS with 6-dot grab handle + symbol + level */
.ag-grip6{flex:none;color:var(--ink-4);font-size:14px;line-height:1;cursor:grab;opacity:.4;transition:opacity .12s,color .12s;letter-spacing:-2px}
.ag-hcard:hover .ag-grip6,.ag-blade-main:hover .ag-grip6{opacity:.9;color:var(--ink-2)}
.ag-grip6:active{cursor:grabbing}
.ag-hcard.ag-dragging,.ag-blade.ag-dragging{opacity:.4}
.ag-grip6:active{cursor:grabbing}
.ag-hcard-sig{flex:none;width:20px;height:20px;display:inline-flex}
.ag-hcard-sig .th-solid{width:20px;height:20px;overflow:visible;filter:drop-shadow(0 0 3px color-mix(in srgb,#3ED66B 45%,transparent))}
.ag-hcard-lv{flex:none;font-family:var(--mono);font-size:9px;font-weight:700;color:#3ED66B;border:1px solid color-mix(in srgb,#3ED66B 30%,transparent);border-radius:5px;padding:2px 5px;margin-left:auto}
.ag-task.ag-dragging,.ag-blade.ag-dragging{opacity:.45}
.ag-group.ag-drop{outline:2px dashed color-mix(in srgb,var(--accent-2,#2DD4BF) 55%,transparent);outline-offset:4px;border-radius:10px}
/* card habit rows — subtle card, thin divider, circular hold-check */
.ag-group-col .ag-task{background:none;border:none;border-bottom:1px solid var(--line);border-radius:0;padding:10px 2px;gap:9px;margin:0}
.ag-group-col .ag-task:hover{background:rgba(255,255,255,.015)}
.ag-group-col .ag-tt{text-transform:none;font-weight:600;font-size:13px;letter-spacing:0;color:var(--ink)}
.ag-group-col .ag-tm{font-size:9.5px;color:var(--ink-4)}
.ag-group-col .ag-task .ag-check{order:9;margin-left:auto;width:20px;height:20px;border-radius:50%;clip-path:none;border-color:var(--line-2)}
.ag-group-col .ag-task .ag-check.done,.ag-group-col .ag-task.done .ag-check{background:#3ED66B;border-color:#3ED66B}
.ag-group-col .ag-task.done{opacity:.5}
.ag-group-col .ag-rew,.ag-group-col .ag-note,.ag-group-col .ag-mkvice,.ag-group-col .ag-habexp{display:none}
/* sub-habits — indented rows under the parent */
.ag-subs{display:flex;flex-direction:column;margin:0 0 2px 16px;border-left:1px solid var(--line);padding-left:10px}
.ag-sub{display:flex;align-items:center;gap:8px;padding:5px 0}
.ag-sub-chk{flex:none;width:15px;height:15px;border-radius:50%;border:1.5px solid var(--line-2);background:none;color:#3ED66B;font-size:9px;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0}
.ag-sub-chk.on{background:#3ED66B;border-color:#3ED66B;color:#0b0c10}
.ag-sub-t{flex:1;min-width:0;font-family:var(--sans);font-size:11.5px;color:var(--ink-3);line-height:1.3}
.ag-sub-t.done{color:var(--ink-4);text-decoration:line-through}
.ag-sub-x{flex:none;background:none;border:none;color:var(--ink-4);font-size:9px;cursor:pointer;opacity:0;transition:opacity .12s;padding:0 2px}
.ag-sub:hover .ag-sub-x{opacity:.5}
.ag-sub-x:hover{color:#E5484D;opacity:1}
.ag-sub-add{align-self:flex-start;background:none;border:none;color:var(--ink-4);font-family:var(--sans);font-size:10.5px;padding:4px 0;cursor:pointer;opacity:0;transition:opacity .12s}
.ag-group-col .ag-task:hover + .ag-subs .ag-sub-add,.ag-subs:hover .ag-sub-add{opacity:.7}
.ag-sub-add:hover{color:var(--ink-2)}
.ag-sub-in{background:none;border:none;border-bottom:1px dashed var(--line-2);color:var(--ink-2);font-family:var(--sans);font-size:11.5px;padding:2px 0;outline:none}
.ag-sub-in:focus{border-bottom-color:var(--accent-2,#2DD4BF)}
/* vice sub-behaviours read red */
.ag-subs.v{border-left-color:color-mix(in srgb,#E5484D 40%,var(--line));margin-left:14px}
.ag-sub-chk.v{color:#E5484D}
.ag-sub-chk.v.on{background:#E5484D;border-color:#E5484D;color:#0b0c10}
.ag-blade .ag-subs{margin-top:2px}
/* floaty BLADE vice (board sword look) — click to expand into its links */
.ag-blade{position:relative;margin-bottom:4px}
.ag-blade-main{border-radius:9px 9px 0 0}
.ag-blade .ag-xpbar{margin-top:0;border-radius:0 0 9px 9px;height:3px}
.ag-blade-main{display:flex;align-items:center;gap:10px;background:linear-gradient(160deg,color-mix(in srgb,#E5484D 13%,#0c0d10),#0b0c10 70%);border:1px solid color-mix(in srgb,#E5484D 34%,transparent);border-radius:9px;padding:11px 14px;cursor:pointer;box-shadow:0 6px 18px -14px rgba(0,0,0,.7)}
.ag-blade.slipped .ag-blade-main{border-color:#E5484D}
.ag-blade-main:hover{filter:brightness(1.08)}
@keyframes agFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@media(prefers-reduced-motion:reduce){.ag-blade-main{animation:none}}
.ag-blade-sig{flex:none;width:26px;height:26px;display:inline-flex}
.ag-blade-sig .th-solid{width:26px;height:26px;overflow:visible;filter:drop-shadow(0 0 4px color-mix(in srgb,#E5484D 55%,transparent))}
.ag-blade-lv{flex:none;font-family:var(--mono);font-size:11px;font-weight:700;color:#E5484D}
.ag-blade.beaten .ag-blade-lv{color:#E5484D;border-color:color-mix(in srgb,#E5484D 34%,transparent)}
.ag-blade-b{flex:1;min-width:0}
.ag-blade-n{font-family:var(--sans);font-size:14.5px;font-weight:700;text-transform:none;letter-spacing:0;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-blade-m{font-size:9.5px;color:var(--ink-4);margin-top:1px}
.ag-blade.slipped .ag-blade-m{color:color-mix(in srgb,#E5484D 70%,var(--ink-4))}
.ag-blade-log{flex:none;font-family:var(--sans);font-size:10.5px;font-weight:600;color:var(--ink-2);background:none;border:1px solid color-mix(in srgb,#E5484D 40%,var(--line-2));border-radius:6px;padding:5px 9px;cursor:pointer;white-space:nowrap;transition:background .12s,color .12s}
.ag-blade-log:hover{background:color-mix(in srgb,#E5484D 16%,transparent);color:#fff}
.ag-blade-log.on{background:#E5484D;color:#0b0c10;border-color:#E5484D}
.ag-blade-tr{flex:none;background:none;border:1px solid color-mix(in srgb,#ECC94B 42%,var(--line-2));color:#ECC94B;border-radius:6px;font-size:12px;line-height:1;padding:5px 8px;cursor:pointer;transition:background .12s}
.ag-blade-tr:hover{background:color-mix(in srgb,#ECC94B 16%,transparent);color:#fff}
.ag-blade-car{flex:none;color:var(--ink-4);font-size:9px}
.ag-blade-links{display:flex;flex-wrap:wrap;gap:6px;padding:11px 8px 4px;animation:agSubIn .16s ease}
@media(max-width:560px){.ag-group-cols{grid-template-columns:1fr}}
/* ── legacy two-column layout (kept for safety) ── */
.ag-habcols{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;align-items:start;margin-top:2px}
.ag-habcol{min-width:0;display:flex;flex-direction:column}
.ag-habcol .ag-task{gap:8px}
.ag-habcol .ag-tt{font-size:12.5px}
.ag-habcol .ag-rew{display:none}
.ag-mkvice,.ag-mkbuild{flex:none;background:none;border:none;font-size:13px;line-height:1;cursor:pointer;padding:0 2px;opacity:0;transition:opacity .12s,color .12s;color:var(--ink-4)}
.ag-task:hover .ag-mkvice,.ag-vicerow:hover .ag-mkbuild{opacity:.6}
.ag-mkvice:hover{opacity:1;color:#E5484D}
.ag-mkbuild:hover{opacity:1;color:#3ED66B}
@media(max-width:560px){.ag-habcols{grid-template-columns:1fr}}
.ag-habhd{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;display:flex;align-items:center;gap:6px;padding:2px 0 6px;margin-bottom:2px;border-bottom:1px solid var(--line)}
.ag-habhd em{font-style:normal;margin-left:auto;color:var(--ink-4)}
.ag-habhd.build{color:#3ED66B}
.ag-habhd.vice{color:#E5484D}
.ag-habcol .ag-task{padding:9px 2px}
/* vice rows: a LABELED button, not a checkbox — "I used it" logs a relapse (no ambiguity) */
.ag-vicehint{font-size:9.5px;color:var(--ink-4);margin:0 0 6px;letter-spacing:.02em}
.ag-usedbtn{flex:none;font-family:var(--sans);font-size:10.5px;font-weight:700;letter-spacing:.02em;color:#E5484D;background:none;border:1px solid color-mix(in srgb,#E5484D 42%,var(--line-2));border-radius:7px;padding:5px 10px;cursor:pointer;white-space:nowrap;transition:background .12s,color .12s}
.ag-usedbtn:hover{background:color-mix(in srgb,#E5484D 16%,transparent)}
.ag-usedbtn.on{background:#E5484D;border-color:#E5484D;color:#0b0c10}
.ag-vicerow.slipped{opacity:.92}
.ag-vicerow .ag-tm.relapsed{color:#E5484D}
/* inline protocols (drills) under a habit — expand caret + drop panel */
.ag-habexp{flex:none;background:none;border:none;color:var(--ink-4);font-size:11px;line-height:1;cursor:pointer;padding:0 3px;opacity:.5;transition:opacity .12s,transform .18s;display:inline-flex;align-items:center;gap:3px}
.ag-task:hover .ag-habexp{opacity:.85}
.ag-habexp.open{opacity:1;transform:rotate(180deg)}
.ag-habexp i{font-style:normal;font-family:var(--mono);font-size:9px;color:var(--ink-3)}
.ag-drills{margin:-2px 0 8px 30px;padding:6px 0 4px;border-left:1px solid var(--line-2);display:flex;flex-direction:column;gap:4px}
.ag-drill{display:flex;align-items:center;gap:8px;padding-left:10px}
.ag-drchk{width:16px;height:16px;flex:none;border:1.5px solid var(--line-2);background:none;color:#3ED66B;font-size:10px;line-height:1;cursor:pointer;display:grid;place-items:center;border-radius:5px;padding:0}
.ag-drchk.on{background:#3ED66B;border-color:#3ED66B;color:#0b0c10}
.ag-drt{flex:1;min-width:0;font-size:12px;color:var(--ink-2,#aeb4bd)}
.ag-drt.done{color:var(--ink-4);text-decoration:line-through}
.ag-drx{flex:none;background:none;border:none;color:var(--ink-4);font-size:10px;cursor:pointer;opacity:0;transition:opacity .12s;padding:0 2px}
.ag-drill:hover .ag-drx{opacity:.6}
.ag-drx:hover{color:#E5484D;opacity:1}
.ag-drin{margin-left:10px;background:none;border:none;border-bottom:1px dashed var(--line-2);color:var(--ink-3);font-family:var(--sans);font-size:11px;padding:3px 2px;outline:none}
.ag-drin:focus{border-bottom-color:var(--accent-2,#2DD4BF);color:var(--ink)}
/* vice ⇄ remedy virtue pairing */
.ag-remedies{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px;align-items:center}
.ag-remedy{font-family:var(--sans);font-size:10px;color:#a99bf9;background:color-mix(in srgb,#8E7BF6 14%,transparent);border:1px solid color-mix(in srgb,#8E7BF6 34%,transparent);border-radius:6px;padding:2px 7px}
.ag-remadd{font-family:var(--sans);font-size:10px;color:var(--ink-4);background:none;border:1px dashed var(--line-2);border-radius:6px;padding:2px 7px;cursor:pointer;transition:color .12s,border-color .12s}
.ag-remadd:hover{color:#a99bf9;border-color:color-mix(in srgb,#8E7BF6 45%,transparent)}
/* one-off tasks */
.ag-taskone .ag-fic.q{color:#ECC94B}
.ag-taskone .ag-tm.over{color:#E5484D}
.ag-note:hover{color:var(--accent-2) !important;opacity:1}

/* Traits "add a behavior" — live existing-habit suggestion dropdown */
.tx-subadd,.tx-bhadd{position:relative}
.tx-behsug{position:absolute;z-index:60;left:0;right:0;top:calc(100% + 3px);background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:8px;box-shadow:0 14px 34px -12px rgba(0,0,0,.7);max-height:220px;overflow-y:auto;padding:4px}
.tx-behsug-o{display:flex;align-items:center;gap:8px;padding:8px 10px;font-family:var(--sans);font-size:12.5px;color:var(--ink-2,#aeb4bd);cursor:pointer;border-radius:6px}
.tx-behsug-o:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--ink)}
.tx-behsug-i{flex:none;color:var(--accent-2);font-size:11px}
.tx-behsug-tag{margin-left:auto;flex:none;font-family:var(--mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-2);opacity:.75}

/* Quest STEPS (WBS) + DAILY ACTIONS — decomposition & feeder tree in the quest panel */
.qd-hint{color:var(--ink-4);opacity:.7}
.qs-bar{height:3px;border-radius:2px;background:var(--line);overflow:hidden;margin:-4px 0 10px}
.qs-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent-2),var(--accent));border-radius:2px;transition:width .2s}
.qs-list{display:flex;flex-direction:column;gap:1px;margin-bottom:6px}
.qs-row{display:flex;align-items:center;gap:9px;padding:5px 2px}
.qs-chk{flex:none;width:18px;height:18px;border-radius:5px;border:1.5px solid var(--line-2);background:none;color:var(--good,#57C888);font-size:11px;line-height:1;display:grid;place-items:center;cursor:pointer;padding:0;transition:border-color .12s,background .12s}
.qs-chk:hover{border-color:var(--accent)}
.qs-chk.on{border-color:var(--good,#57C888);background:color-mix(in srgb,var(--good,#57C888) 16%,transparent)}
.qs-t{flex:1;min-width:0;font-family:var(--sans);font-size:13px;color:var(--ink-2);outline:none;border-radius:4px;padding:1px 4px;margin:-1px -4px}
.qs-t.done{color:var(--ink-4);text-decoration:line-through}
.qs-t[contenteditable]:hover{background:rgba(255,255,255,.03)}
.qs-t[contenteditable]:focus{background:rgba(255,255,255,.05);box-shadow:inset 0 -1px 0 var(--accent)}
/* settings hint under the "how to measure" dropdown */
.qd-fhint{font-family:var(--sans);font-size:11px;color:var(--ink-4);margin:-2px 0 10px;line-height:1.35}
.qs-hab{flex:none;font-family:var(--mono);font-size:11px;color:var(--accent-2);opacity:.7}
.qs-sub,.qs-x{flex:none;background:none;border:none;color:var(--ink-4);font-size:13px;line-height:1;cursor:pointer;opacity:0;padding:2px 4px;transition:opacity .12s,color .12s}
.qs-row:hover .qs-sub,.qs-row:hover .qs-x{opacity:.55}
.qs-sub:hover{color:var(--accent);opacity:1}
.qs-x:hover{color:var(--warn);opacity:1}
.qs-addrow{display:flex;align-items:center;padding:4px 2px 0}
.qs-addin{flex:1;min-width:0;background:none;border:none;border-bottom:1px solid transparent;outline:none;color:var(--ink);font-family:var(--sans);font-size:12.5px;padding:5px 2px}
.qs-addin::placeholder{color:var(--ink-4)}
.qs-addin:hover{border-bottom-color:var(--line)}
.qs-addin:focus{border-bottom-color:var(--accent)}

/* Quest STEPS mini — nested under each quest row in the left list */
.qsm-wrap{margin:-2px 0 8px;padding:5px 0 3px;border-left:2px solid var(--line);margin-left:22px}
.qsm-lbl{font-family:var(--mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);padding:2px 0 4px 8px;display:flex;gap:6px;align-items:center;background:none;border:none;cursor:pointer;width:100%;text-align:left}
.qsm-lbl:hover{color:var(--ink-2)}
.qsm-cav{font-size:8px;color:var(--ink-4);flex:none;width:8px}
.qsm-wrap.open>.qsm-lbl{color:var(--ink-3)}
.qsm-lbl em{font-style:normal;color:var(--ink-3)}
.qsm-row{display:flex;align-items:center;gap:8px;padding:3px 0}
.qsm-chk{flex:none;width:15px;height:15px;border-radius:4px;border:1.5px solid var(--line-2);background:none;color:var(--good,#57C888);font-size:9px;line-height:1;display:grid;place-items:center;cursor:pointer;padding:0;transition:border-color .12s,background .12s}
.qsm-chk:hover{border-color:var(--accent)}
.qsm-chk.on{border-color:var(--good,#57C888);background:color-mix(in srgb,var(--good,#57C888) 16%,transparent)}
.qsm-t{flex:1;min-width:0;font-family:var(--sans);font-size:12px;color:var(--ink-3);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qsm-t.done{color:var(--ink-4);text-decoration:line-through}

/* Quest RUN — start/pause session clock */
.qr-box{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--void-2,#0e1013);margin-bottom:6px}
.qr-box.live{border-color:color-mix(in srgb,var(--accent) 42%,var(--line));background:color-mix(in srgb,var(--accent) 6%,var(--void-2,#0e1013))}
.qr-time{flex:1;font-family:var(--mono);font-size:26px;font-weight:600;letter-spacing:.02em;color:var(--ink-3);font-variant-numeric:tabular-nums}
.qr-box.live .qr-time{color:var(--ink)}
.qr-btn{flex:none;font-family:var(--sans);font-size:12.5px;font-weight:700;border-radius:9px;padding:9px 18px;cursor:pointer;transition:background .12s,color .12s,border-color .12s}
.qr-btn.go{color:#08110F;background:linear-gradient(135deg,var(--accent),var(--accent-2));border:none}
.qr-btn.go:hover{filter:brightness(1.08)}
.qr-btn.stop{color:var(--ink);background:none;border:1px solid var(--line-2)}
.qr-btn.stop:hover{border-color:var(--accent);color:var(--accent)}
.qr-box.live .qr-time::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:9px;vertical-align:middle;animation:qrpulse 1.4s ease-in-out infinite}
@keyframes qrpulse{0%,100%{opacity:1}50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.qr-box.live .qr-time::before{animation:none}}

/* Wants detail — open-board button */
.wx-dboard{flex:none;font-family:var(--sans);font-size:11.5px;font-weight:700;color:var(--accent-2);background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 34%,transparent);border-radius:8px;padding:6px 12px;margin-left:auto;cursor:pointer;transition:background .12s,color .12s}
.wx-dboard:hover{background:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--accent)}
.wx-dhead .wx-darch{margin-left:8px}

/* ═══ PER-WANT BOARD — focused Miro canvas overlay ═══ */
.bw-ov{position:fixed;inset:0;z-index:400;background:var(--void,#0a0b0d);display:flex;flex-direction:column;animation:bwfade .16s ease}
@keyframes bwfade{from{opacity:0}to{opacity:1}}
.bw-top{flex:none;display:flex;align-items:center;gap:14px;padding:13px 20px 11px;background:transparent}
.bw-title{font-family:var(--sans);font-size:15px;font-weight:800;color:var(--ink);letter-spacing:.01em;display:flex;align-items:center;gap:9px;min-width:0}
.bw-title b{color:var(--accent);font-size:13px}
.bw-hint{font-family:var(--mono);font-size:9px;letter-spacing:.04em;color:color-mix(in srgb,var(--ink-4) 55%,transparent);white-space:nowrap;opacity:.6;transition:opacity .15s}
.bw-top:hover .bw-hint{opacity:1}
.bw-sp{flex:1}
.bw-btn{flex:none;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink-3);background:none;border:none;border-radius:7px;padding:7px 11px;cursor:pointer;transition:background .12s,color .12s}
.bw-btn:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 8%,transparent)}
.bw-btn.bw-btn-al:hover{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.bw-btn.bw-x:hover{color:#fff;background:#E5484D}
/* slick icon toolbar — square icon buttons instead of text, tooltips on hover */
.bw-btn-ico{width:32px;height:32px;padding:0;display:grid;place-items:center;font-size:14px;line-height:1;color:var(--ink-4);border-radius:8px}
.bw-btn-ico.bw-btn-al{color:color-mix(in srgb,var(--accent) 78%,var(--ink-3))}
.bw-btn-ico:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 9%,transparent)}
.bw-btn-ico.bw-btn-al:hover{color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}
.bw-btn-ico.bw-x:hover{color:#fff;background:#E5484D}
.bw-stage{flex:1;position:relative;overflow:hidden;cursor:grab;margin:2px 16px 16px;border:1px solid var(--line-2);border-radius:14px;background:radial-gradient(140% 120% at 50% 0%,color-mix(in srgb,var(--accent) 5%,transparent),transparent 60%),radial-gradient(circle at 1px 1px,var(--line) 1px,transparent 0) 0 0/26px 26px,var(--void,#0a0b0d);box-shadow:inset 0 1px 0 color-mix(in srgb,#fff 4%,transparent),0 18px 50px -30px rgba(0,0,0,.9)}
.bw-stage.bw-panning{cursor:grabbing}
.bw-canvas{position:absolute;left:0;top:0;width:2400px;height:1800px;will-change:transform}
.bw-svg{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}
.bw-card{position:absolute;box-sizing:border-box;display:flex;flex-direction:column;gap:8px;padding:12px 13px;border-radius:12px;background:var(--void-2,#0e1013);border:1px solid var(--line-2);box-shadow:0 8px 22px -14px rgba(0,0,0,.7);cursor:grab;transition:border-color .12s,box-shadow .12s;border-left:3px solid var(--bwc,var(--accent))}
.bw-card:hover{border-color:color-mix(in srgb,var(--bwc,var(--accent)) 55%,var(--line-2))}
.bw-card.bw-dragging{cursor:grabbing;box-shadow:0 16px 34px -12px rgba(0,0,0,.8)}
.bw-card.bw-drophi{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 40%,transparent)}
.bw-card.bw-done{opacity:.6}
/* CONNECT PORT — always-visible handle on each card's right edge; drag it to another node to link */
.bw-port{position:absolute;top:50%;right:-11px;transform:translateY(-50%);width:20px;height:20px;border-radius:50%;background:var(--void-2,#0e1013);border:2px solid color-mix(in srgb,var(--accent-2,#2DD4BF) 55%,var(--line-2));box-shadow:0 0 0 3px rgba(0,0,0,.4);cursor:crosshair;z-index:6;display:grid;place-items:center;opacity:.5;transition:opacity .12s,transform .12s,border-color .12s,box-shadow .12s}
.bw-port::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent-2,#2DD4BF)}
.bw-card:hover .bw-port{opacity:1}
.bw-port:hover{opacity:1;transform:translateY(-50%) scale(1.3);border-color:var(--accent-2,#2DD4BF);box-shadow:0 0 14px -1px var(--accent-2,#2DD4BF)}
.bw-ov.bw-connecting .bw-port{opacity:1}
/* hex (vice/virtue) cards: the port rides the right vertex */
.bw-hex .bw-port{right:2px}
/* auto-link button accent */
.bw-btn-al{color:var(--accent-2,#2DD4BF);border-color:color-mix(in srgb,var(--accent-2,#2DD4BF) 38%,var(--line-2))}
.bw-btn-al:hover{border-color:var(--accent-2,#2DD4BF)}
.bw-card.bw-done .bw-ct{text-decoration:line-through;color:var(--ink-4)}
/* ── node TYPE distinction — colour + shape + tag ── */
.bw-want{--bwc:#2DD4BF;background:linear-gradient(135deg,color-mix(in srgb,#2DD4BF 13%,var(--void-2,#0e1013)),var(--void-2,#0e1013))}
.bw-subwant{--bwc:#5FB0A8}
.bw-quest{--bwc:#ECC94B;border-radius:0;border-left:none;box-shadow:none;padding:12px 26px 12px 24px;clip-path:polygon(0 0,calc(100% - 15px) 0,100% 50%,calc(100% - 15px) 100%,0 100%,15px 50%);background:color-mix(in srgb,#ECC94B 7%,var(--void-2,#0e1013))}
.bw-quest:hover{border-color:var(--line-2)}
.bw-habit{--bwc:#3ED66B;border-radius:22px}
.bw-type{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--bwc,var(--accent));padding:2px 8px 2px 6px;border:1px solid color-mix(in srgb,var(--bwc,var(--accent)) 40%,transparent);border-radius:20px}
.bw-quest .bw-type{margin-left:6px}
.bw-tglyph{font-size:11px;letter-spacing:0}
.bw-grip{position:absolute;top:9px;right:10px;color:var(--ink-4);font-size:12px;line-height:1;cursor:grab;opacity:.35;transition:opacity .12s;touch-action:none}
.bw-card:hover .bw-grip{opacity:.85}
.bw-grip:hover{color:var(--accent);opacity:1}
.bw-cbody{min-width:0;display:flex;flex-direction:column;gap:3px}
.bw-ct{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--ink);line-height:1.25;word-break:break-word}
.bw-want .bw-ct{font-size:14.5px;font-weight:800}
.bw-cs{font-family:var(--mono);font-size:10px;color:var(--ink-4)}
.bw-add{align-self:flex-start;font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:7px;border:1px dashed var(--line-2);background:none;color:var(--ink-4);padding:4px 10px;cursor:pointer;opacity:0;transition:opacity .12s,border-color .12s,color .12s}
.bw-card:hover .bw-add{opacity:.75}
.bw-add:hover{border-color:var(--bwc,var(--accent));color:var(--bwc,var(--accent));opacity:1;border-style:solid}
.bw-ov.bw-connecting .bw-card{cursor:crosshair}
/* ── FOCUS MODE — the double-clicked node centres, its cluster stays lit, the rest ghosts ── */
.bw-focusmode .bw-card:not(.bw-fn){opacity:.08;filter:grayscale(.55);pointer-events:none;transition:opacity .3s}
.bw-focusmode .bw-fn{box-shadow:0 18px 44px -16px rgba(0,0,0,.85),0 0 0 1px rgba(255,255,255,.05)}
/* Karyna kind-spotlight: dim every card that isn't the type she's focusing (habit/vice/virtue/quest) */
.bw-rolefocus .bw-card:not(.bw-rf){opacity:.12;filter:grayscale(.5);pointer-events:none;transition:opacity .3s,filter .3s}
.bw-rolefocus .bw-rf{transition:opacity .3s}
.bw-rolefocusclr{background:color-mix(in srgb,var(--accent) 10%,var(--void-2,#0e1013))}
.bw-focusclr{position:absolute;top:74px;left:50%;transform:translateX(-50%);z-index:6;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--accent-2);background:color-mix(in srgb,var(--void-2,#0e1013) 86%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line-2));border-radius:8px;padding:8px 15px;cursor:pointer}
.bw-focusclr:hover{color:var(--accent);border-color:var(--accent)}
/* ── MAP landing — grid of want cards that open the board ── */
.ovmap-land{padding:44px 30px;max-width:1400px;margin:0 auto}
.ovmap-h{font-family:var(--sans);font-size:22px;font-weight:800;color:var(--ink);letter-spacing:.01em}
.ovmap-sub{font-family:var(--sans);font-size:13px;color:var(--ink-4);margin:6px 0 22px;max-width:640px;line-height:1.5}
/* floating vertical shards — each want is a tall crystal, pointed at the base, gently bobbing */
.ovmap-grid{display:flex;flex-wrap:wrap;gap:26px 22px;align-items:flex-start;padding-top:8px}
.ovmap-card{position:relative;display:flex;flex-direction:column;gap:11px;align-items:flex-start;text-align:left;width:214px;min-height:572px;padding:30px 22px 116px;border:none;border-radius:0;clip-path:polygon(0 0,100% 0,100% 82%,50% 100%,0 82%);background:linear-gradient(168deg,color-mix(in srgb,var(--accent) 11%,var(--void-2,#0e1013)),var(--void-1,#0b0c0e) 82%);background-size:cover;background-position:center;cursor:pointer;overflow:hidden;box-shadow:0 30px 54px -24px rgba(0,0,0,.9);animation:ovShardFloat 6.5s ease-in-out infinite;transition:transform .18s,filter .18s}
/* prismatic turquoise shine — a refraction band raking across the crystal */
.ovmap-card::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;clip-path:polygon(0 0,100% 0,100% 82%,50% 100%,0 82%);background:linear-gradient(116deg,transparent 30%,color-mix(in srgb,#2DD4BF 28%,transparent) 45%,color-mix(in srgb,#2DD4BF 9%,transparent) 52%,transparent 66%);mix-blend-mode:screen;opacity:.7;transition:opacity .2s,transform .2s}
.ovmap-card:hover::before{opacity:1;transform:translateX(6px)}
.ovmap-card::after{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;box-shadow:inset 0 0 0 1px color-mix(in srgb,#2DD4BF 30%,transparent);clip-path:polygon(0 0,100% 0,100% 82%,50% 100%,0 82%)}
.ovmap-card:hover{transform:translateY(-8px) scale(1.015);animation-play-state:paused;filter:drop-shadow(0 0 16px color-mix(in srgb,var(--accent-2) 30%,transparent))}
.ovmap-card.pri{filter:drop-shadow(0 0 14px color-mix(in srgb,var(--gold,#ECC94B) 26%,transparent))}
.ovmap-card.pri::after{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--gold,#ECC94B) 40%,transparent)}
.ovmap-card:nth-child(2n){animation-delay:-2s}
.ovmap-card:nth-child(3n){animation-delay:-4.1s}
.ovmap-card:nth-child(4n){animation-delay:-1.3s}
@keyframes ovShardFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@media(prefers-reduced-motion:reduce){.ovmap-card{animation:none}}
.ovmap-tag{position:relative;z-index:1;font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-2);font-weight:700}
.ovmap-card.pri .ovmap-tag{color:var(--gold,#ECC94B)}
.ovmap-t{position:relative;z-index:1;flex:1;font-family:var(--sans);font-size:15.5px;font-weight:800;color:var(--ink);line-height:1.28;word-break:break-word;text-shadow:0 2px 10px rgba(0,0,0,.6)}
.ovmap-bar{position:relative;z-index:1;width:100%;height:5px;border-radius:3px;background:rgba(255,255,255,.14);overflow:hidden}
.ovmap-bar i{display:block;height:100%;background:var(--accent-2);border-radius:3px}
.ovmap-card.pri .ovmap-bar i{background:var(--gold,#ECC94B)}
.ovmap-n{position:relative;z-index:1;font-family:var(--mono);font-size:10px;color:var(--ink-3)}
/* create-want shard — a hollow crystal you tap to forge a new want */
.ovmap-create{align-items:center;justify-content:center;gap:8px;background:linear-gradient(168deg,color-mix(in srgb,#2DD4BF 8%,var(--void-2,#0e1013)),var(--void-1,#0b0c0e) 82%) !important;opacity:.7}
.ovmap-create::before{opacity:.4}
.ovmap-create::after{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,#2DD4BF 34%,transparent)}
.ovmap-create:hover{opacity:1}
.ovmap-createmk{position:relative;z-index:1;font-family:var(--sans);font-size:40px;font-weight:200;color:#2DD4BF;line-height:1;text-shadow:0 0 16px color-mix(in srgb,#2DD4BF 55%,transparent)}
.ovmap-createlbl{position:relative;z-index:1;font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3)}
/* ── want selector (custom dropdown) in the top bar ── */
.bw-wantpick{position:relative}
.bw-wantpick-btn{display:flex;align-items:center;gap:8px;max-width:400px;background:var(--void,#0a0b0d);border:1px solid var(--line-2);border-radius:8px;color:var(--ink);font-family:var(--sans);font-size:13px;font-weight:700;padding:8px 12px;cursor:pointer;outline:none}
.bw-wantpick-btn:hover{border-color:color-mix(in srgb,var(--accent) 42%,var(--line-2))}
.bw-wpgem{flex:none;color:var(--accent);font-size:11px}
.bw-wpt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bw-wpcar{margin-left:auto;color:var(--ink-4);font-size:10px}
.bw-wantpick-list{position:absolute;top:calc(100% + 6px);left:0;z-index:20;min-width:300px;max-width:440px;max-height:62vh;overflow-y:auto;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:10px;padding:5px;box-shadow:0 22px 54px -18px rgba(0,0,0,.82)}
.bw-wantpick-o{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:none;color:var(--ink-2,#aeb4bd);font-family:var(--sans);font-size:12.5px;padding:9px 11px;border-radius:7px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bw-wantpick-o:hover{background:rgba(255,255,255,.045);color:var(--ink)}
.bw-wantpick-o.on{color:var(--ink);background:color-mix(in srgb,var(--accent) 13%,transparent)}
.bw-wantpick-o .bw-wpgem{color:var(--accent)}
/* ── persistent detail panel (top-right) ── */
.bw-side{position:absolute;top:72px;right:30px;z-index:5;width:322px;max-width:40vw;max-height:calc(100vh - 108px);overflow-y:auto;background:color-mix(in srgb,var(--void-2,#0e1013) 86%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line-2);border-radius:13px;padding:16px 18px;box-shadow:0 22px 56px -22px rgba(0,0,0,.85);opacity:0;pointer-events:none;transition:opacity .2s}
/* dedupe pass — merge trait twins (a top-level VICE gem + a PATTERN child of the same name) */
.bw-btn-dup{color:var(--accent-2)!important;border-color:color-mix(in srgb,var(--accent-2) 42%,var(--line-2))!important}
.bw-btn-dup:hover,.bw-btn-dup.on{color:var(--accent)!important;border-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 10%,transparent)}
.bw-dup{position:absolute;top:66px;left:50%;transform:translateX(-50%);z-index:8;width:min(660px,calc(100vw - 60px));max-height:calc(100vh - 120px);overflow-y:auto;background:color-mix(in srgb,var(--void-2,#0e1013) 90%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line-2);border-radius:14px;box-shadow:0 26px 64px -20px rgba(0,0,0,.9);padding:15px 17px 17px;animation:agcmdIn .16s ease}
.bw-dup-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.bw-dup-ti{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--ink)}
.bw-dup-x{background:none;border:none;color:var(--ink-4);font-size:14px;cursor:pointer;padding:2px 5px}
.bw-dup-x:hover{color:var(--ink)}
.bw-dup-sub{font-family:var(--sans);font-size:11px;line-height:1.45;color:var(--ink-4);margin-bottom:12px}
.bw-dup-list{display:flex;flex-direction:column;gap:10px}
.bw-dup-pair{display:grid;grid-template-columns:1fr auto 1fr;align-items:stretch;gap:9px;position:relative;padding:2px 0}
.bw-dup-opt{display:flex;flex-direction:column;gap:5px;border:1px solid color-mix(in srgb,var(--tc,var(--accent)) 34%,var(--line-2));border-radius:10px;padding:10px 11px;background:color-mix(in srgb,var(--tc,var(--accent)) 5%,transparent)}
.bw-dup-type{align-self:flex-start;font-family:var(--sans);font-size:8.5px;font-weight:700;letter-spacing:.14em;color:var(--tc,var(--accent));border:1px solid color-mix(in srgb,var(--tc,var(--accent)) 45%,transparent);border-radius:3px;padding:2px 6px}
.bw-dup-name{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--ink);line-height:1.25}
.bw-dup-meta{font-family:var(--mono);font-size:10px;color:var(--ink-4)}
.bw-dup-keepbtn{margin-top:3px;background:color-mix(in srgb,var(--tc,var(--accent)) 14%,transparent);border:1px solid color-mix(in srgb,var(--tc,var(--accent)) 50%,transparent);border-radius:6px;color:var(--tc,var(--accent));font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.03em;padding:6px 9px;cursor:pointer}
.bw-dup-keepbtn:hover{background:color-mix(in srgb,var(--tc,var(--accent)) 24%,transparent)}
.bw-dup-keepbtn:disabled{opacity:.5;cursor:default}
.bw-dup-vs{align-self:center;font-family:var(--mono);font-size:10px;color:var(--ink-4);text-transform:uppercase;letter-spacing:.1em}
.bw-dup-skip{position:absolute;top:-9px;right:0;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:5px;color:var(--ink-4);font-family:var(--sans);font-size:9.5px;font-weight:600;letter-spacing:.03em;padding:3px 8px;cursor:pointer}
.bw-dup-skip:hover{color:var(--ink-2);border-color:var(--ink-4)}
.bw-side.on{opacity:1;pointer-events:auto}
/* ── Karyna chat (bottom-left) ── */
.bw-karyna{position:absolute;bottom:30px;left:30px;z-index:5;width:302px;max-width:42vw;display:flex;flex-direction:column;background:color-mix(in srgb,var(--void-2,#0e1013) 86%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line-2);border-radius:13px;overflow:hidden;box-shadow:0 22px 56px -22px rgba(0,0,0,.85)}
.bwk-hd{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--line);font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink)}
.bwk-av{width:24px;height:24px;border-radius:50%;background:url(/img/karyna.png) center/cover no-repeat,linear-gradient(135deg,var(--accent),var(--accent-2));flex:none;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent)}
.bwk-sub{margin-left:auto;font-family:var(--mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);font-weight:400}
.bwk-body{overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:8px;min-height:70px;max-height:30vh}
.bwk-msg{font-family:var(--sans);font-size:12.5px;line-height:1.42;padding:8px 11px;border-radius:9px;max-width:90%;word-break:break-word}
.bwk-msg.ai{background:rgba(255,255,255,.04);color:var(--ink-2,#aeb4bd);align-self:flex-start}
.bwk-msg.me{background:color-mix(in srgb,var(--accent) 17%,transparent);color:var(--ink);align-self:flex-end}
.bwk-think{opacity:.6}
/* rich-text (markdown) rendering for Karyna — breathing room, headings, lists, tables, code/ASCII diagrams */
.bwk-msg.bwk-md{white-space:normal;max-width:100%;line-height:1.6}
.bwk-md p{margin:0 0 9px}
.bwk-md>*:last-child{margin-bottom:0}
.bwk-md .bwk-h{font-weight:800;color:var(--ink);font-size:12.5px;letter-spacing:.01em;margin:12px 0 6px}
.bwk-md .bwk-h:first-child{margin-top:0}
.bwk-md strong{color:var(--ink);font-weight:700}
.bwk-md em{font-style:italic;color:var(--ink-3)}
.bwk-md ul.bwk-ul,.bwk-md ol.bwk-ol{margin:4px 0 10px;padding-left:18px;display:flex;flex-direction:column;gap:4px}
.bwk-md li{line-height:1.5}
.bwk-md code{font-family:var(--mono);font-size:11px;background:rgba(255,255,255,.07);border-radius:4px;padding:1px 5px;color:var(--accent-2,#2DD4BF)}
.bwk-pre{background:var(--void,#0a0b0d);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:6px 0 10px;overflow-x:auto}
.bwk-pre code{font-family:var(--mono);font-size:11px;line-height:1.5;background:none;padding:0;color:var(--ink-2,#aeb4bd);white-space:pre;display:block}
.bwk-tw{overflow-x:auto;margin:6px 0 10px}
.bwk-table{border-collapse:collapse;font-size:11.5px;width:100%}
.bwk-table th,.bwk-table td{border:1px solid var(--line-2);padding:5px 9px;text-align:left;white-space:nowrap}
.bwk-table th{background:rgba(255,255,255,.05);color:var(--ink);font-weight:700}
.bwk-table td{color:var(--ink-2,#aeb4bd)}
.bwk-bq{border-left:2px solid color-mix(in srgb,var(--accent-2,#2DD4BF) 55%,var(--line-2));padding:2px 0 2px 11px;margin:6px 0 10px;color:var(--ink-3)}
.bwk-md a{color:var(--accent-2,#2DD4BF);text-decoration:underline}
.bwk-exp{margin-left:8px;background:none;border:none;color:var(--ink-4);font-size:13px;cursor:pointer;padding:0 2px;line-height:1;transition:color .12s}
.bwk-exp:hover{color:var(--accent-2,#2DD4BF)}
/* enlarged chat */
.bw-karyna.bw-k-big{width:560px;max-width:64vw}
.bw-karyna.bw-k-big .bwk-body{max-height:64vh}
.bw-karyna.bw-k-big .bwk-msg{max-width:94%}
/* board-op chips — one-tap board actions Karyna runs, scoped to the open want */
.bwk-acts{display:flex;flex-wrap:wrap;gap:5px;padding:8px 12px 2px}
.bwk-chip{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-2,#aeb4bd);background:rgba(255,255,255,.045);border:1px solid var(--line-2);border-radius:20px;padding:4px 10px;cursor:pointer;transition:color .12s,border-color .12s,background .12s;white-space:nowrap}
.bwk-chip:hover{color:var(--ink);border-color:color-mix(in srgb,var(--accent-2,#2DD4BF) 55%,var(--line-2));background:color-mix(in srgb,var(--accent-2,#2DD4BF) 12%,transparent)}
.bwk-in{display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--line)}
.bwk-in input{flex:1;min-width:0;background:var(--void,#0a0b0d);border:1px solid var(--line-2);border-radius:8px;outline:none;color:var(--ink);font-family:var(--sans);font-size:12.5px;padding:8px 11px}
.bwk-in input:focus{border-color:var(--accent)}
.bwk-send{flex:none;background:var(--accent-2);border:none;border-radius:8px;color:#08110F;font-size:13px;padding:0 13px;cursor:pointer}
/* ── expanded detail (rendered into the top-right panel) ── */
.bw-detail-drawer{position:fixed;top:0;right:0;bottom:0;z-index:490;width:380px;max-width:92vw;background:var(--void-2,#0e1013);border-left:1px solid var(--line-2);box-shadow:-20px 0 50px -20px rgba(0,0,0,.8);padding:20px 22px;overflow-y:auto;animation:bwslidein .22s cubic-bezier(.4,0,.2,1)}
@keyframes bwslidein{from{transform:translateX(30px);opacity:0}to{transform:translateX(0);opacity:1}}
.bw-dhd{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.bw-dtype{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dc,var(--accent));font-weight:700}
.bw-dx{background:none;border:1px solid var(--line-2);color:var(--ink-3);border-radius:7px;width:28px;height:28px;font-size:13px;cursor:pointer}
.bw-dx:hover{border-color:var(--warn);color:var(--warn)}
.bw-dtitle{font-family:var(--sans);font-size:19px;font-weight:800;color:var(--ink);line-height:1.2;margin-bottom:16px;text-wrap:balance}
.bw-dstats{display:flex;flex-wrap:wrap;gap:20px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.bw-dstat{display:flex;flex-direction:column;gap:3px}
.bw-dstat b{font-family:var(--disp);font-weight:800;font-size:22px;color:var(--ink);font-variant-numeric:tabular-nums}
.bw-dstat span{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.bw-dlbl{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin:16px 0 8px}
.bw-heat{display:block;max-width:100%;height:auto}
.bw-heat-lbl{fill:var(--ink-4);font-family:var(--mono);font-size:8.5px;letter-spacing:.04em}
.bw-heat-today{stroke:var(--ink);stroke-width:1.6}
.bw-dbar{height:6px;border-radius:4px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:12px}
.bw-dbar i{display:block;height:100%;border-radius:4px;transition:width .3s}
.bw-dsubs{display:flex;flex-direction:column;gap:5px}
.bw-dsub{font-family:var(--sans);font-size:12.5px;color:var(--ink-3);line-height:1.3}
.bw-dsub.on{color:var(--ink-4);text-decoration:line-through}
.bw-dsub em{font-style:normal;font-family:var(--mono);font-size:9.5px;color:var(--dc,var(--accent));margin-left:4px}
.bw-dwhy{font-family:var(--sans);font-size:13px;color:var(--ink-2,#aeb4bd);line-height:1.5}
/* ── LIVING cards — running loops, breathing sigils, pulsing emblems ── */
@keyframes bwspin{to{transform:rotate(360deg)}}
@keyframes bwbreath{0%,100%{opacity:.72}50%{opacity:1}}
@keyframes bwbob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes bwglow{0%,100%{filter:drop-shadow(0 0 4px color-mix(in srgb,var(--gemc,#2DD4BF) 35%,transparent))}50%{filter:drop-shadow(0 0 11px color-mix(in srgb,var(--gemc,#2DD4BF) 65%,transparent))}}
.bw-loopgem .bw-sigil svg{transform-origin:center;animation:bwspin 26s linear infinite}
.bw-vice .bw-sigil,.bw-virtue .bw-sigil{animation:bwbob 5.2s ease-in-out infinite}
.bw-vice .bw-sigil svg,.bw-virtue .bw-sigil svg,.bw-loopgem .bw-sigil{animation:bwbreath 3.6s ease-in-out infinite}
.bw-gemdia,.bw-wantgem,.bw-loopdia{animation:bwglow 3s ease-in-out infinite}
.bw-sigil svg{will-change:transform,opacity}
@media (prefers-reduced-motion:reduce){.bw-loopgem .bw-sigil svg,.bw-vice .bw-sigil,.bw-virtue .bw-sigil,.bw-vice .bw-sigil svg,.bw-virtue .bw-sigil svg,.bw-loopgem .bw-sigil,.bw-gemdia,.bw-wantgem,.bw-loopdia{animation:none}}
/* delete node (hover-reveal ✕) */
.bw-carddel{position:absolute;top:7px;right:28px;z-index:3;width:18px;height:18px;border:none;background:none;color:var(--ink-4);font-size:11px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s,color .12s,background .12s;display:grid;place-items:center;border-radius:5px}
.bw-card:hover .bw-carddel{opacity:.55}
.bw-carddel:hover{color:#fff;background:var(--warn);opacity:1}
.bw-questbar{padding-right:46px}
/* priority star on want cards */
.bw-star{position:absolute;top:6px;left:8px;z-index:3;background:none;border:none;color:var(--ink-4);font-size:14px;line-height:1;cursor:pointer;padding:0;transition:color .12s,transform .12s}
.bw-star:hover{color:#ECC94B;transform:scale(1.15)}
.bw-star.on{color:#ECC94B;text-shadow:0 0 9px color-mix(in srgb,#ECC94B 65%,transparent)}
.bw-wantcard .bw-wanthd{padding-left:20px}
/* priority star on the home hero */
.lhm-star{background:none;border:none;color:rgba(255,255,255,.42);font-size:15px;line-height:1;cursor:pointer;padding:0;margin-right:9px;vertical-align:-1px;transition:color .12s}
.lhm-star:hover{color:#ECC94B}
.lhm-star.on{color:#ECC94B;text-shadow:0 0 10px color-mix(in srgb,#ECC94B 60%,transparent)}
.bw-questbar .bw-carddel{top:50%;transform:translateY(-50%);right:28px}
.bw-questbar .bw-grip{right:10px}
/* floating quick-add input (sub-quests) */
.bw-qi{position:fixed;z-index:460;display:flex;gap:6px;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:9px;padding:6px;box-shadow:0 14px 34px -12px rgba(0,0,0,.75)}
.bw-qi-in{width:230px;background:var(--void,#0a0b0d);border:1px solid var(--line-2);border-radius:6px;outline:none;color:var(--ink);font-family:var(--sans);font-size:12.5px;padding:8px 10px}
.bw-qi-in:focus{border-color:#ECC94B}
.bw-qi-go{flex:none;font-family:var(--sans);font-size:12px;font-weight:700;color:#08110F;background:#ECC94B;border:none;border-radius:6px;padding:0 14px;cursor:pointer}
.bw-qi-hint{flex-basis:100%;font-family:var(--mono);font-size:9px;color:var(--ink-4);padding:2px 2px 0}
/* ══ VICE / VIRTUE — floating digital GEM cards (portrait, crystal-cut, unique sigil) ══ */
.bw-gem{flex-direction:column;gap:0;padding:14px 15px 15px;position:absolute;border:none;border-radius:0;
  clip-path:polygon(0 0, calc(100% - 22px) 0, 100% 22px, 100% 100%, 0 100%)}
.bw-vice.bw-gem{--gemc:#E5484D;background:linear-gradient(160deg,color-mix(in srgb,#E5484D 16%,#0c0d12),#0b0c10 62%);box-shadow:inset 0 0 0 1px color-mix(in srgb,#E5484D 45%,transparent)}
.bw-virtue.bw-gem{--gemc:#8E7BF6;background:linear-gradient(160deg,color-mix(in srgb,#8E7BF6 18%,#0c0d12),#0b0c10 62%);box-shadow:inset 0 0 0 1px color-mix(in srgb,#8E7BF6 48%,transparent)}
.bw-habit.bw-gem{--gemc:#3ED66B;background:linear-gradient(160deg,color-mix(in srgb,#3ED66B 15%,#0c0d12),#0b0c10 62%);box-shadow:inset 0 0 0 1px color-mix(in srgb,#3ED66B 46%,transparent);border-radius:0}
.bw-loopdia{flex:none;width:23px;height:23px;border-radius:50%;border:1.5px solid var(--gemc);color:var(--gemc);display:grid;place-items:center;font-size:13px;line-height:1;box-shadow:0 0 10px -3px var(--gemc)}
.bw-loopgem .bw-grip{right:9px}
.bw-loopgem .bw-carddel{right:30px}
/* ＋ add-sub-quest at the end of the row */
.bw-subadd{position:absolute;width:40px;height:40px;display:grid;place-items:center;border:1px dashed color-mix(in srgb,#ECC94B 48%,var(--line-2));border-radius:9px;color:#ECC94B;font-size:18px;cursor:pointer;background:color-mix(in srgb,#ECC94B 5%,var(--void-2,#0e1013));transition:background .12s,transform .12s}
.bw-subadd:hover{background:color-mix(in srgb,#ECC94B 16%,transparent);transform:scale(1.06)}
/* WANT — hero crystal card */
.bw-wantcard{flex-direction:column;gap:0;padding:14px 15px 15px;position:absolute;border:none;border-radius:0;--wc:#2DD4BF;
  clip-path:polygon(18px 0, calc(100% - 18px) 0, 100% 18px, 100% 100%, 0 100%, 0 18px);
  background:linear-gradient(165deg,color-mix(in srgb,#2DD4BF 17%,#0b0f12),#0a0c0f 66%);box-shadow:inset 0 0 0 1px color-mix(in srgb,#2DD4BF 50%,transparent),0 16px 40px -18px rgba(0,0,0,.8)}
.bw-subw.bw-wantcard{--wc:#5FB0A8;clip-path:polygon(12px 0,100% 0,100% 100%,0 100%,0 12px);background:linear-gradient(165deg,color-mix(in srgb,#5FB0A8 13%,#0b0f12),#0a0c0f 66%);box-shadow:inset 0 0 0 1px color-mix(in srgb,#5FB0A8 42%,transparent)}
.bw-wanthd{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.bw-wantgem{flex:none;font-size:15px;color:var(--wc);text-shadow:0 0 10px color-mix(in srgb,var(--wc) 70%,transparent)}
.bw-wantcard .bw-gemlbl{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--wc);font-weight:700}
.bw-wantpct{margin-left:auto;font-family:var(--disp);font-weight:800;font-size:15px;color:var(--wc)}
.bw-wantt{font-family:var(--sans);font-size:16px;font-weight:800;color:var(--ink);line-height:1.15;letter-spacing:.01em;word-break:break-word;margin-bottom:9px}
.bw-gembar.wbar{margin-top:0}
.bw-wantmeta{font-family:var(--mono);font-size:9.5px;color:var(--ink-4);margin:5px 0 9px}
.bw-wantcard .bw-gal{margin-top:2px}
.bw-wantcard .bw-add{margin-top:9px}
.bw-gem .bw-grip{top:9px;right:24px;z-index:2}
.bw-gemhd{display:flex;align-items:center;gap:9px}
.bw-gemdia{flex:none;width:22px;height:22px;transform:rotate(45deg);border-radius:4px;background:linear-gradient(135deg,var(--gemc),color-mix(in srgb,var(--gemc) 45%,#fff));box-shadow:0 0 12px -2px var(--gemc)}
.bw-gemlbl{font-family:var(--sans);font-size:14px;font-weight:600;color:var(--ink);letter-spacing:.01em}
.bw-sigil{height:108px;margin:6px 0 8px;display:grid;place-items:center}
.bw-sigil svg{width:100%;height:100%;filter:drop-shadow(0 0 6px color-mix(in srgb,var(--gemc) 45%,transparent))}
.bw-gemname{font-family:var(--sans);font-size:17px;font-weight:700;color:var(--ink);line-height:1.15;letter-spacing:.01em;text-wrap:balance}
/* level detail on the gem */
.bw-gemlv{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:10px}
.bw-gemlvn{font-family:var(--sans);font-size:11.5px;font-weight:700;color:var(--gemc)}
.bw-gemxpn{font-family:var(--mono);font-size:8.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.bw-gembar{height:4px;border-radius:3px;background:rgba(255,255,255,.09);overflow:hidden;margin-top:5px}
.bw-gembar i{display:block;height:100%;border-radius:3px;transition:width .3s}
/* ══ pulled-out image nodes + drag ghost ══ */
.bw-imgnode{position:absolute;box-sizing:border-box;border-radius:10px;overflow:hidden;line-height:0;border:1px solid rgba(255,255,255,.08);box-shadow:0 14px 34px -16px rgba(0,0,0,.85);cursor:grab}
.bw-imgnode-img{display:block;width:100%;height:auto;pointer-events:none;-webkit-user-drag:none}
.bw-imgnode:hover{border-color:color-mix(in srgb,var(--accent) 55%,transparent)}
.bw-imgnode-x{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:6px;border:none;background:rgba(6,7,10,.7);color:#fff;font-size:14px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s}
.bw-imgnode:hover .bw-imgnode-x{opacity:1}
.bw-imgnode-x:hover{background:var(--warn)}
.bw-imgnode-rs{position:absolute;right:0;bottom:0;width:20px;height:20px;z-index:3;cursor:nwse-resize;opacity:0;transition:opacity .12s;background:linear-gradient(135deg,transparent 46%,rgba(6,7,10,.75) 46%);border-bottom-right-radius:10px}
.bw-imgnode-rs::after{content:'';position:absolute;right:4px;bottom:4px;width:8px;height:8px;border-right:2px solid color-mix(in srgb,var(--accent-2) 85%,transparent);border-bottom:2px solid color-mix(in srgb,var(--accent-2) 85%,transparent);border-bottom-right-radius:2px}
.bw-imgnode:hover .bw-imgnode-rs{opacity:1}
.bw-imgghost{position:fixed;z-index:470;width:120px;height:90px;border-radius:8px;background-size:cover;background-position:center;pointer-events:none;box-shadow:0 12px 30px -10px rgba(0,0,0,.8);opacity:.85;border:2px solid var(--accent)}
/* ── card images (multi) ── */
.bw-gal{display:flex;flex-wrap:wrap;gap:5px}
.bw-th{width:52px;height:40px;border-radius:6px;background-size:cover;background-position:center;cursor:pointer;border:1px solid var(--line-2);transition:border-color .12s}
.bw-th:hover{border-color:var(--bwc,var(--accent))}
.bw-th.cover{border-color:color-mix(in srgb,var(--bwc,var(--accent)) 60%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--bwc,var(--accent)) 40%,transparent)}
.bw-thadd{width:52px;height:40px;border-radius:6px;border:1px dashed var(--line-2);display:grid;place-items:center;cursor:pointer;color:var(--ink-4);font-size:15px}
.bw-thadd:hover{border-color:var(--bwc,var(--accent));color:var(--bwc,var(--accent))}
.bw-imgempty{display:flex;align-items:center;justify-content:center;gap:6px;border:1px dashed var(--line-2);border-radius:8px;padding:8px;font-family:var(--mono);font-size:10px;color:var(--ink-4);cursor:pointer;opacity:0;transition:opacity .12s,border-color .12s,color .12s}
.bw-card:hover .bw-imgempty{opacity:.8}
.bw-imgempty:hover{border-color:var(--bwc,var(--accent));color:var(--bwc,var(--accent));opacity:1}
/* ── quest as a slim BAR when it has sub-quests (spans the sub-quest row below) ── */
.bw-questbar{flex-direction:row;align-items:center;gap:10px;height:46px;padding:0 30px 0 14px;clip-path:none;border-radius:9px;border-left:2px solid color-mix(in srgb,#ECC94B 70%,transparent);box-shadow:none;background:color-mix(in srgb,#ECC94B 5%,var(--void-2,#0e1013))}
.bw-questbar:hover{background:color-mix(in srgb,#ECC94B 9%,var(--void-2,#0e1013))}
.bw-questbar .bw-grip{top:50%;transform:translateY(-50%);right:11px}
.bw-questbar .bw-type{flex:none;align-self:center}
.bw-questbar .bw-ct{flex:1 1 auto;min-width:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700}
.bw-barmeta{flex:none;font-family:var(--mono);font-size:10px;color:var(--ink-4)}
/* add buttons reveal only on hover — the board reads as clean structure at rest, controls surface on touch */
.bw-barbtn{flex:none;display:inline-flex;align-items:center;gap:3px;font-family:var(--sans);font-size:12px;font-weight:700;color:var(--ink-4);background:none;border:none;cursor:pointer;padding:2px 4px;opacity:0;transition:color .12s,opacity .12s}
.bw-barbtn i{font-style:normal;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase}
.bw-barbtn:hover{color:#ECC94B}
.bw-barvice:hover{color:#E5484D}
.bw-questbar:hover .bw-barbtn{opacity:1}
.bw-questbar .bw-add{opacity:0}
.bw-questbar:hover .bw-add{opacity:.7}
/* expand caret + inline planning panel — a quest bar opens into type/heatmap/actions in place */
.bw-qcaret{flex:none;background:none;border:none;color:var(--ink-4);font-size:12px;cursor:pointer;padding:2px 4px;opacity:0;transition:color .12s,transform .18s,opacity .12s}
.bw-questbar:hover .bw-qcaret,.bw-qcaret.open{opacity:.7}
.bw-qcaret:hover{color:#ECC94B}
.bw-qcaret.open{transform:rotate(180deg);color:#ECC94B}
.bw-questbar:has(.bw-qexp){height:auto;min-height:48px;flex-wrap:wrap;align-items:center;align-content:flex-start;padding-bottom:16px;z-index:20}
.bw-qexp{flex:0 0 100%;width:100%;margin-top:6px;padding:2px 6px 0;border-top:1px solid var(--line);--dc:#ECC94B}
.bw-qexp .bw-dstats{padding:12px 0;gap:18px}
.bw-qexp .bw-dlbl{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin:12px 0 6px}
.bw-dsub{display:flex;align-items:center;gap:7px}
.bw-dsub-empty{color:var(--ink-4);font-style:italic}
.bw-dsubchk{flex:none;width:16px;height:16px;border-radius:5px;border:1.5px solid color-mix(in srgb,#ECC94B 42%,var(--line-2));background:none;color:#ECC94B;font-size:10px;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0}
.bw-dsubchk.on{background:color-mix(in srgb,#ECC94B 22%,transparent);border-color:#ECC94B}
.bw-dsubadd{align-self:flex-start;margin-top:6px;background:none;border:1px dashed color-mix(in srgb,#ECC94B 40%,var(--line-2));border-radius:7px;color:#ECC94B;font-family:var(--sans);font-size:11px;padding:4px 10px;cursor:pointer;transition:background .12s}
.bw-dsubadd:hover{background:color-mix(in srgb,#ECC94B 14%,transparent)}
/* ── sub-quest magnet nodes (a row beneath the quest bar) ── */
.bw-substep{flex-direction:row;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border-left-width:2px;--bwc:#ECC94B;background:color-mix(in srgb,#ECC94B 5%,var(--void-2,#0e1013))}
.bw-substept{flex:1 1 auto;min-width:0;font-family:var(--sans);font-size:11.5px;color:var(--ink-2,#aeb4bd);line-height:1.25;word-break:normal;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bw-substept.done{color:var(--ink-4);text-decoration:line-through}
.bw-substep .bw-stx{opacity:0}
.bw-substep:hover .bw-stx{opacity:.55}
/* ── quest sub-steps (break into sub-quests) ── */
.bw-steps{display:flex;flex-direction:column;gap:2px;padding:7px 0 2px;border-top:1px solid var(--line);margin-top:2px}
.bw-steplbl{font-family:var(--mono);font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin-bottom:3px}
.bw-steplbl em{font-style:normal;color:var(--ink-3)}
.bw-strow{display:flex;align-items:center;gap:6px}
.bw-stchk{flex:none;width:14px;height:14px;border-radius:4px;border:1.5px solid var(--line-2);background:none;color:var(--good,#57C888);font-size:9px;line-height:1;display:grid;place-items:center;cursor:pointer;padding:0}
.bw-stchk.on{border-color:var(--good,#57C888);background:color-mix(in srgb,var(--good,#57C888) 16%,transparent)}
.bw-stt{flex:1;min-width:0;font-family:var(--sans);font-size:11.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bw-stt.done{color:var(--ink-4);text-decoration:line-through}
.bw-stx{flex:none;background:none;border:none;color:var(--ink-4);font-size:12px;line-height:1;cursor:pointer;opacity:0}
.bw-strow:hover .bw-stx{opacity:.55}
.bw-stx:hover{color:var(--warn);opacity:1}
.bw-stin{background:none;border:none;border-bottom:1px solid transparent;outline:none;color:var(--ink);font-family:var(--sans);font-size:11.5px;padding:3px 0;margin-top:2px}
.bw-stin::placeholder{color:var(--ink-4)}
.bw-stin:focus{border-bottom-color:var(--bwc,var(--accent))}
/* ── lightbox ── */
.bw-lb{position:fixed;inset:0;z-index:500;background:rgba(6,7,10,.94);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:30px}
.bw-lb-img{flex:1;width:100%;max-width:900px;background-size:contain;background-position:center;background-repeat:no-repeat}
.bw-lb-bar{flex:none;display:flex;align-items:center;gap:12px;font-family:var(--sans)}
.bw-lb-nav{background:none;border:1px solid var(--line-2);color:var(--ink);border-radius:8px;width:34px;height:34px;font-size:18px;cursor:pointer}
.bw-lb-nav:hover{border-color:var(--accent);color:var(--accent)}
.bw-lb-n{font-family:var(--mono);font-size:12px;color:var(--ink-3)}
.bw-lb-sp{width:20px}
.bw-lb-rm{background:none;border:1px solid color-mix(in srgb,var(--warn) 45%,transparent);color:var(--warn);border-radius:8px;padding:8px 14px;font-size:12px;font-weight:600;cursor:pointer}
.bw-lb-rm:hover{background:color-mix(in srgb,var(--warn) 14%,transparent)}
.bw-lb-x{background:none;border:1px solid var(--line-2);color:var(--ink);border-radius:8px;padding:8px 14px;font-size:12px;cursor:pointer}
.bw-lb-x:hover{border-color:var(--ink-2)}

/* ── void spawn chooser (click empty canvas → pick what to create here) ── */
.bw-spawn{position:fixed;z-index:100061;min-width:150px;background:linear-gradient(180deg,#0E1319,#0B0F14);border:1px solid var(--line-2);border-radius:11px;padding:6px;box-shadow:0 22px 55px -12px rgba(0,0,0,.8);display:flex;flex-direction:column;gap:2px;animation:bwSpawnIn .1s ease}
@keyframes bwSpawnIn{from{opacity:0;transform:translateY(-4px) scale(.97)}to{opacity:1;transform:none}}
.bw-spawn-hd{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);padding:5px 8px 4px}
.bw-spawn-o{display:flex;align-items:center;gap:10px;text-align:left;font-family:var(--sans);font-size:13px;color:var(--ink-2);background:none;border:1px solid transparent;border-radius:8px;padding:8px 10px;cursor:pointer;transition:background .1s,color .1s,border-color .1s}
.bw-spawn-o:hover{color:#fff;background:rgba(255,255,255,.05);border-color:var(--line-2)}
.bw-so-g{width:22px;text-align:center;font-size:14px;opacity:.9}
.bw-so-quest .bw-so-g{color:#ECC94B}.bw-so-subwant .bw-so-g{color:#5FB0A8}.bw-so-habit .bw-so-g{color:#3ED66B}.bw-so-virtue .bw-so-g{color:#8E7BF6}.bw-so-vice .bw-so-g{color:#E5484D}
.bw-so-quest:hover{border-color:rgba(236,201,75,.4)}.bw-so-subwant:hover{border-color:rgba(95,176,168,.4)}.bw-so-habit:hover{border-color:rgba(62,214,107,.4)}.bw-so-virtue:hover{border-color:rgba(142,123,246,.4)}.bw-so-vice:hover{border-color:rgba(229,72,77,.4)}

/* ── bottom-right node search → focus the rhizome ── */
.bw-search{position:absolute;bottom:30px;right:30px;z-index:6;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.bw-search-tab{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink-2);background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:9px;padding:9px 13px;cursor:pointer;box-shadow:0 12px 30px -14px rgba(0,0,0,.8);transition:color .12s,border-color .12s}
.bw-search-tab:hover{color:#fff;border-color:var(--accent-2)}
.bw-search-panel{width:308px;max-width:42vw;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:12px;overflow:hidden;box-shadow:0 20px 50px -18px rgba(0,0,0,.85)}
.bw-search-in{display:flex;align-items:center;gap:6px;padding:10px;border-bottom:1px solid var(--line)}
.bw-search-in input{flex:1;min-width:0;background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:8px;padding:8px 10px;color:var(--ink);font-family:var(--sans);font-size:13px}
.bw-search-x{flex:none;background:none;border:none;color:var(--ink-4);font-size:14px;cursor:pointer;padding:4px 6px}
.bw-search-x:hover{color:var(--ink)}
.bw-search-res{max-height:min(52vh,420px);overflow-y:auto;padding:6px}
.bw-srow{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:8px;padding:8px 10px;cursor:pointer;transition:background .1s,border-color .1s}
.bw-srow:hover{background:rgba(255,255,255,.05);border-color:var(--line-2)}
.bw-srg{width:18px;text-align:center;font-size:13px;flex:none}
.bw-srg-want,.bw-srg-subwant{color:#2DD4BF}.bw-srg-quest{color:#ECC94B}.bw-srg-habit{color:#3ED66B}.bw-srg-vice{color:#E5484D}.bw-srg-virtue{color:#8E7BF6}
.bw-srt{flex:1;min-width:0;font-family:var(--sans);font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bw-srk{flex:none;font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.bw-srempty{font-family:var(--sans);font-size:12px;color:var(--ink-4);padding:14px 10px;text-align:center}

/* ── vice/virtue PATTERN·FACET children (smaller nested gems) ── */
.bw-gemchild{display:block;width:100%;margin-top:9px;font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:7px;padding:6px 8px;cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.bw-gemchild:hover{color:var(--ink);border-color:var(--line-2);background:rgba(255,255,255,.06)}
.bw-gemchild-c{padding:8px 9px 9px}
.bw-gemchild-c .bw-gemhd-sm{gap:6px}
.bw-gemchild-c .bw-gemhd-sm .bw-gemdia{width:8px;height:8px}
.bw-gemchild-c .bw-gemhd-sm .bw-gemlbl{font-size:7.5px;letter-spacing:.1em}
.bw-gemchild-c .bw-sigil-sm{height:46px;margin:2px 0 4px}
.bw-gemchild-c .bw-gemname-sm{font-size:11px;font-weight:600;line-height:1.1}
.bw-gemchild-c .bw-gembar{height:3px}
.bw-gemchild-c .bw-carddel{top:5px;right:6px;font-size:9px}
.bw-gemchild-c .bw-grip{top:6px;right:18px;font-size:10px}
/* clearer link handle */
.bw-grip{cursor:grab}
.bw-card:hover .bw-grip{opacity:.9}
.bw-grip:hover{opacity:1 !important;color:var(--accent-2)}

/* ── Today priorities: expandable sub-quests ── */
.ag-qexp{flex:none;width:16px;height:16px;display:grid;place-items:center;background:none;border:none;color:var(--ink-3);font-size:10px;cursor:pointer;transition:transform .14s,color .12s;transform:rotate(0deg)}
.ag-qexp.open{transform:rotate(90deg);color:var(--accent-2)}
.ag-qexp.empty{opacity:.35}
.ag-qexp:hover{color:var(--ink)}
.ag-qsteps{flex:none;font-family:var(--mono);font-size:10px;color:var(--ink-4);background:rgba(255,255,255,.05);border-radius:5px;padding:2px 6px;font-variant-numeric:tabular-nums}
.ag-qsteps.full{color:#3ED66B;background:color-mix(in srgb,#3ED66B 15%,transparent)}
/* declutter: XP/kleos reward only on hover */
.ag-qrow .ag-rew{opacity:0;transition:opacity .12s}
.ag-qrow:hover .ag-rew{opacity:.8}
/* complete-quest check (right side); glows green once all sub-quests are done */
.ag-qdone{flex:none;width:22px;height:22px;border:1.5px solid var(--line-2);background:none;color:transparent;border-radius:6px;cursor:pointer;display:grid;place-items:center;font-size:12px;line-height:1;opacity:.45;transition:all .12s}
.ag-qrow:hover .ag-qdone{opacity:1}
.ag-qdone:hover{border-color:#3ED66B;color:#3ED66B}
.ag-qdone.ready{opacity:1;border-color:#3ED66B;color:#3ED66B;background:color-mix(in srgb,#3ED66B 14%,transparent)}
.ag-subwrap{margin:0 0 8px 22px;padding:4px 0 4px 12px;display:flex;flex-direction:column;gap:2px;border-left:1px solid var(--line-2);animation:agSubIn .16s ease}
@keyframes agSubIn{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.ag-subq{display:flex;align-items:flex-start;gap:8px;padding:2px 0}
.ag-subq-kid{padding-left:16px}
.ag-subchk{flex:none;width:16px;height:16px;margin-top:1px;border-radius:5px;border:1px solid var(--line-2);background:rgba(255,255,255,.03);color:var(--accent-2);font-size:10px;line-height:1;cursor:pointer;display:grid;place-items:center;transition:background .12s,border-color .12s}
.ag-subchk.on{background:color-mix(in srgb,var(--accent) 22%,transparent);border-color:var(--accent-2)}
.ag-subchk:hover{border-color:var(--accent-2)}
.ag-subqt{flex:1;min-width:0;font-family:var(--sans);font-size:12.5px;color:var(--ink-2);line-height:1.35;white-space:normal;overflow-wrap:break-word}
.ag-subqt.done{color:var(--ink-4);text-decoration:line-through}
.ag-subnone{font-family:var(--sans);font-size:11.5px;color:var(--ink-4);font-style:italic;padding:2px 0}
.ag-subin{margin-top:3px;background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:7px;padding:5px 9px;color:var(--ink);font-family:var(--sans);font-size:12px}
/* optimistic (just-typed) rows — appear instantly, dimmed until the server confirms */
.ag-opt{opacity:.55;animation:agSubIn .12s ease}
.ag-opt .ag-subchk,.ag-opt .ag-drchk{border-style:dashed}
.ag-subin:focus{outline:none;border-color:var(--accent-2)}

/* ══ VICE / VIRTUE as tessellating HEXAGONS (habits stay loop-gems) ══ */
.bw-vice.bw-gem,.bw-virtue.bw-gem{
  clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);
  height:198px;justify-content:center;align-items:center;text-align:center;gap:1px;padding:0 30px}
.bw-vice.bw-gem::before,.bw-virtue.bw-gem::before{content:"";position:absolute;inset:0;clip-path:inherit;box-shadow:none;
  background:linear-gradient(160deg,color-mix(in srgb,var(--gemc) 20%,transparent),transparent 60%);pointer-events:none}
.bw-vice.bw-gem{box-shadow:none;background:color-mix(in srgb,#E5484D 13%,#0b0c10)}
.bw-virtue.bw-gem{box-shadow:none;background:color-mix(in srgb,#8E7BF6 14%,#0b0c10)}
.bw-vice.bw-gem,.bw-virtue.bw-gem{outline:none}
.bw-vice.bw-gem>*,.bw-virtue.bw-gem>*{position:relative;z-index:1}
.bw-vice.bw-gem .bw-gemhd,.bw-virtue.bw-gem .bw-gemhd{justify-content:center}
.bw-vice.bw-gem .bw-sigil,.bw-virtue.bw-gem .bw-sigil{height:72px;margin:3px 0 3px}
.bw-vice.bw-gem .bw-gemname,.bw-virtue.bw-gem .bw-gemname{font-size:13.5px;max-width:118px}
.bw-vice.bw-gem .bw-gemlv,.bw-virtue.bw-gem .bw-gemlv{justify-content:center;gap:7px;margin-top:3px}
.bw-vice.bw-gem .bw-gembar,.bw-virtue.bw-gem .bw-gembar{display:none}
.bw-vice.bw-gem .bw-gemchild,.bw-virtue.bw-gem .bw-gemchild{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);width:auto;margin:0;padding:3px 9px;white-space:nowrap}
.bw-vice.bw-gem .bw-grip,.bw-virtue.bw-gem .bw-grip{top:16px;right:auto;left:50%;transform:translateX(30px)}
.bw-vice.bw-gem .bw-carddel,.bw-virtue.bw-gem .bw-carddel{top:16px;right:auto;left:50%;transform:translateX(52px)}
/* smaller pattern/facet child hexes */
.bw-gemchild-c.bw-gem{height:120px;padding:0 20px}
.bw-gemchild-c.bw-gem .bw-sigil-sm{height:40px;margin:2px 0}
.bw-gemchild-c.bw-gem .bw-gemname-sm{font-size:10.5px;max-width:74px}
.bw-gemchild-c.bw-gem .bw-grip{top:12px;transform:translateX(20px)}
.bw-gemchild-c.bw-gem .bw-carddel{top:12px;transform:translateX(36px)}
/* hex controls: grip/del ride the mid-height edges (top & bottom are points) */
.bw-vice.bw-gem .bw-grip,.bw-virtue.bw-gem .bw-grip,.bw-gemchild-c.bw-gem .bw-grip{top:50%;left:6px;right:auto;transform:translateY(-50%)}
.bw-vice.bw-gem .bw-carddel,.bw-virtue.bw-gem .bw-carddel,.bw-gemchild-c.bw-gem .bw-carddel{top:50%;right:6px;left:auto;transform:translateY(-50%)}
.bw-vice.bw-gem .bw-gemchild,.bw-virtue.bw-gem .bw-gemchild{bottom:28px}

/* ══ VICE/VIRTUE hexagon — REDESIGN v2 (SVG embroidered frame + centred content + base XP) ══ */
.bw-vice.bw-gem::before,.bw-virtue.bw-gem::before{display:none !important}
.bw-hex{background:transparent !important;box-shadow:none !important;padding:0 !important;overflow:visible}
.bw-hex .bw-hexf{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;filter:drop-shadow(0 10px 22px rgba(0,0,0,.5))}
.bw-hex .bw-hexin{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 24px;gap:2px}
.bw-hex .bw-hexlbl{font-family:var(--mono);font-size:8.5px;letter-spacing:.24em;font-weight:700;color:var(--gemc);text-transform:uppercase;opacity:.92}
.bw-hex .bw-hexsig{height:66px !important;margin:3px 0 2px !important;width:100%}
.bw-hex .bw-hexname{font-family:var(--sans);font-size:13.5px;font-weight:700;color:var(--ink);line-height:1.14;letter-spacing:.01em;max-width:122px;text-wrap:balance;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.bw-hex .bw-hexlv{display:flex;flex-direction:column;align-items:center;line-height:1.1;margin-top:4px}
.bw-hex .bw-hexlv b{font-family:var(--sans);font-size:11.5px;font-weight:800;color:var(--gemc);letter-spacing:.02em}
.bw-hex .bw-hexlv span{font-family:var(--mono);font-size:8px;color:var(--ink-3);font-variant-numeric:tabular-nums;margin-top:1px}
.bw-hex .bw-grip{top:50% !important;left:5px !important;right:auto !important;transform:translateY(-50%) !important;z-index:3}
.bw-hex .bw-carddel{top:50% !important;left:auto !important;right:5px !important;transform:translateY(-50%) !important;z-index:3}
.bw-hex .bw-gemchild{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);width:auto;margin:0;padding:3px 11px;white-space:nowrap;z-index:3;opacity:0;pointer-events:none;transition:opacity .14s;background:color-mix(in srgb,var(--gemc) 12%,#0b0c10);border-color:color-mix(in srgb,var(--gemc) 40%,transparent)}
.bw-hex:hover .bw-gemchild{opacity:1;pointer-events:auto}
/* smaller child hexes */
.bw-gemchild-c.bw-hex{height:130px}
.bw-gemchild-c .bw-hexin{padding:0 16px}
.bw-gemchild-c .bw-hexsig{height:40px !important;margin:1px 0 !important}
.bw-gemchild-c .bw-hexlbl{font-size:7px;letter-spacing:.18em}
.bw-gemchild-c .bw-hexname{font-size:10.5px;max-width:76px;-webkit-line-clamp:2}
/* search rows: drag onto canvas */
.bw-srow{cursor:grab}
.bw-srdrag{flex:none;color:var(--ink-4);font-size:11px;opacity:0;transition:opacity .12s}
.bw-srow:hover .bw-srdrag{opacity:.7}
.bw-stage.bw-dropzone{outline:2px dashed color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:-8px}

/* ══ RUNE v3 — bigger, concentric rings, perimeter XP, ambient float+glow ══ */
.bw-vice.bw-gem,.bw-virtue.bw-gem{height:238px !important}
.bw-gemchild-c.bw-hex{height:152px !important}
.bw-hex .bw-hexsig{height:76px !important;margin:4px 0 3px !important}
.bw-gemchild-c .bw-hexsig{height:44px !important}
.bw-hex .bw-hexname{font-size:14px;max-width:138px}
.bw-hex .bw-hexlv{margin-top:5px}
.bw-hex .bw-hexlv b{font-size:14px;letter-spacing:.06em}
.bw-hex .bw-hexlbl{font-size:9px;letter-spacing:.26em}
/* type label now reads as a caption BELOW the name (shape sits centred above the word) */
.bw-hex .bw-hexname + .bw-hexlbl{margin-top:4px;opacity:.62}
.bw-gemchild-c .bw-hexname + .bw-hexlbl{margin-top:2px}
@keyframes bwRuneFloat{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-7px) scale(1.014)}}
@keyframes bwRuneGlow{0%,100%{filter:drop-shadow(0 8px 16px rgba(0,0,0,.5)) drop-shadow(0 0 4px color-mix(in srgb,var(--gemc) 34%,transparent))}50%{filter:drop-shadow(0 13px 22px rgba(0,0,0,.55)) drop-shadow(0 0 17px color-mix(in srgb,var(--gemc) 66%,transparent))}}
.bw-hex{animation:bwRuneFloat 5.6s ease-in-out infinite;will-change:transform}
.bw-hex .bw-hexf{animation:bwRuneGlow 4.2s ease-in-out infinite}
.bw-hex .bw-hexsig{animation:none !important}
.bw-hex.bw-dragging,.bw-hex:active{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.bw-hex,.bw-hex .bw-hexf{animation:none}}
/* node-line brightness slider */
.bw-lineset{display:flex;align-items:center;gap:6px;margin-right:8px;color:var(--ink-4)}
.bw-lineset span{font-size:14px;line-height:1}
.bw-lineset input[type=range]{width:80px;height:3px;accent-color:var(--accent-2);cursor:pointer}
/* stop accidental text highlighting on the board (panels + inputs stay selectable) */
.bw-ov{user-select:none;-webkit-user-select:none}
.bw-ov input,.bw-ov textarea,.bw-karyna,.bw-side,.bw-search-panel{user-select:text;-webkit-user-select:text}
/* auto-plan (Karyna) + multi-line chat */
.bwk-msg{white-space:pre-wrap}
.bw-barplan{color:var(--accent-2)}
.bw-barplan:hover{color:var(--accent)}

/* ══ CRYSTAL-SHARD variant (long-titled vice/virtue) ══ */
.bw-shard.bw-hex{height:290px !important;clip-path:polygon(50% 0,100% 16%,100% 84%,50% 100%,0 84%,0 16%) !important}
.bw-shard .bw-hexin{padding:0 22px}
.bw-shard .bw-hexlbl{font-size:8.5px;letter-spacing:.24em}
.bw-shard .bw-hexsig{height:58px !important;margin:3px 0 5px !important}
.bw-shard .bw-hexname{font-size:13px;max-width:130px;-webkit-line-clamp:4;line-height:1.16}
.bw-shard .bw-hexlv{margin-top:6px}
.bw-shard .bw-grip{left:8px !important}
.bw-shard .bw-carddel{right:8px !important}

/* ══ BLADE variant (long-titled vice/virtue) — horizontal faceted blade ══ */
.bw-blade.bw-hex{height:104px !important;clip-path:polygon(0 13%,5% 0,88% 0,100% 50%,88% 100%,5% 100%,0 87%) !important}
.bw-blade .bw-bladein{position:absolute;inset:0;z-index:1;display:flex;align-items:center;gap:8px;padding:0 46px 0 12px;text-align:left}
.bw-blade .bw-bladesig{height:66px !important;width:66px;flex:none;margin:0 !important}
.bw-blade .bw-bladetxt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.bw-blade .bw-bladetxt .bw-hexlbl{font-size:8px;letter-spacing:.22em}
.bw-blade .bw-bladetxt .bw-hexname{font-size:13.5px;max-width:none;text-align:left;-webkit-line-clamp:2;line-height:1.16}
.bw-blade .bw-bladelv{flex:none;align-self:center}
.bw-blade .bw-bladelv b{font-family:var(--sans);font-size:12px;font-weight:800;color:var(--gemc);white-space:nowrap}
.bw-blade .bw-grip{top:6px !important;left:14px !important;right:auto !important;transform:none !important}
.bw-blade .bw-carddel{bottom:6px !important;top:auto !important;left:14px !important;right:auto !important;transform:none !important}
.bw-blade .bw-gemchild{left:auto !important;right:50px !important;bottom:6px !important;transform:none !important}

/* ══ SUB-QUEST hierarchy — size + accent intensity by depth (sub-forces read at a glance) ══ */
.bw-substep{border-left-style:solid;border-left-color:var(--bwc)}
.bw-submark{flex:none;line-height:1;color:var(--bwc);opacity:.9}
.bw-sd0{--bwc:#ECC94B;border-left-width:3px !important;background:color-mix(in srgb,#ECC94B 9%,var(--void-2,#0e1013)) !important;box-shadow:inset 0 0 0 1px color-mix(in srgb,#ECC94B 22%,transparent)}
.bw-sd0 .bw-substept{color:var(--ink);font-size:12px;font-weight:600}
.bw-sd0 .bw-submark{font-size:11px}
.bw-sd1{--bwc:color-mix(in srgb,#ECC94B 66%,#868b94);border-left-width:2px !important;background:color-mix(in srgb,#ECC94B 5%,var(--void-2,#0e1013)) !important}
.bw-sd1 .bw-substept{color:var(--ink-2);font-size:11px}
.bw-sd1 .bw-submark{font-size:9.5px}
.bw-sd2,.bw-sd3{--bwc:color-mix(in srgb,#ECC94B 42%,#787d86);border-left-width:1.5px !important;background:color-mix(in srgb,#ECC94B 3%,var(--void-2,#0e1013)) !important}
.bw-sd2 .bw-substept,.bw-sd3 .bw-substept{color:var(--ink-3);font-size:10.5px}
.bw-sd2 .bw-submark,.bw-sd3 .bw-submark{font-size:8.5px}

/* ══ session logging on vice/virtue (⧗ hours) ══ */
.bw-hex .bw-hexlv{flex-direction:row !important;gap:8px}
.bw-loghr{flex:none;background:none;border:1px solid var(--line-2);color:var(--ink-3);font-size:11px;line-height:1;padding:2px 6px;border-radius:6px;cursor:pointer;transition:color .12s,border-color .12s;z-index:2;position:relative}
.bw-loghr:hover{color:var(--gemc);border-color:var(--gemc)}
.bw-hexlog{font-family:var(--mono);font-size:9.5px;color:var(--gemc);letter-spacing:.03em;margin-top:5px;opacity:.95;font-variant-numeric:tabular-nums;white-space:nowrap}
.bw-blade .bw-bladelv{display:flex;flex-direction:column;align-items:center;gap:4px}
.bw-blade .bw-hexlog{margin-top:2px;font-size:9px}
.bw-riotsync:hover{color:#5FB0A8;border-color:#5FB0A8}

/* ══ habit-building/breaking quests read GREEN ══ */
.bw-questbar.bw-qhabit{border-left-color:#3ED66B !important;background:color-mix(in srgb,#3ED66B 8%,var(--void-2,#0e1013)) !important}
.bw-questbar.bw-qhabit .bw-type,.bw-questbar.bw-qhabit .bw-tglyph{color:#3ED66B}

/* ══ sub-quest: link grip, branch ＋, quick date chip ══ */
.bw-subgrip{position:static !important;top:auto !important;right:auto !important;order:-1;opacity:0;font-size:10px;color:var(--ink-4);cursor:grab}
.bw-substep:hover .bw-subgrip{opacity:.6}
.bw-subbranch{flex:none;background:none;border:none;color:var(--ink-4);font-size:13px;line-height:1;cursor:pointer;opacity:0;padding:0 2px}
.bw-substep:hover .bw-subbranch{opacity:.6}
.bw-subbranch:hover{color:#ECC94B;opacity:1}
.bw-subdate{flex:none;background:none;border:1px solid transparent;border-radius:5px;color:var(--ink-4);font-size:9.5px;font-family:var(--mono);padding:1px 4px;cursor:pointer;line-height:1.3;opacity:.45;transition:opacity .12s,color .12s,border-color .12s}
.bw-substep:hover .bw-subdate{opacity:.9}
.bw-subdate.set{opacity:1;border-color:var(--line-2);color:var(--ink-3)}
.bw-subdate.set.soon{color:#ECC94B;border-color:color-mix(in srgb,#ECC94B 42%,transparent)}
.bw-subdate.set.over{color:#E5484D;border-color:color-mix(in srgb,#E5484D 48%,transparent)}
/* quick date picker */
.bw-datepop{position:fixed;z-index:100062;min-width:238px;background:linear-gradient(180deg,#0E1319,#0B0F14);border:1px solid var(--line-2);border-radius:11px;padding:11px;box-shadow:0 18px 44px -12px rgba(0,0,0,.8);display:flex;flex-direction:column;gap:8px}
.bw-dp-hd{font-family:var(--mono);font-size:8.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-4);padding:0 1px}
.bw-dp-row{display:flex;gap:6px;align-items:center}
.bw-dp-row:first-of-type button{flex:1}
.bw-dp-row button{font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--ink-2);background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:7px;padding:6px 9px;cursor:pointer;white-space:nowrap;transition:color .12s,border-color .12s,background .12s}
.bw-dp-row button:hover{color:#fff;border-color:var(--accent-2);background:color-mix(in srgb,var(--accent-2,#2DD4BF) 12%,transparent)}
.bw-dp-in{flex:1;min-width:0;color-scheme:dark;background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:7px;padding:6px 8px;color:var(--ink);font-family:var(--sans);font-size:12px}
.bw-dp-in:focus{outline:none;border-color:var(--accent)}
.bw-dp-clear{color:var(--ink-4) !important;flex:none}

/* ══ Platonic-solid symbols (glowing rotating wireframes) ══ */
.bw-solid{display:block;width:100%;height:100%;overflow:visible}
.bw-sigil .bw-solid,.bw-hexsig .bw-solid{filter:drop-shadow(0 0 5px color-mix(in srgb,var(--gemc,#8aa) 60%,transparent))}
.bw-tglyph-solid{display:inline-flex;width:16px;height:16px;vertical-align:middle;flex:none}
.bw-tglyph-solid .bw-solid{width:16px;height:16px}
.bw-wantgem-solid{display:inline-flex;width:22px;height:22px;flex:none;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--wc,#2DD4BF) 60%,transparent))}
.bw-wantgem-solid .bw-solid{width:22px;height:22px}
.bw-solid{animation:none !important}

/* ══ solid TYPE BADGE at the top of each card (symbol lives in the header; sigil stays in the body) ══ */
.bw-hex .bw-hexlbl,.bw-gemhd{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.bw-solbadge{display:inline-flex;width:18px;height:18px;flex:none}
.bw-solbadge .bw-solid{width:18px;height:18px;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--gemc,#8aa) 62%,transparent))}
.bw-solbadge-sm{width:13px;height:13px}
.bw-solbadge-sm .bw-solid{width:13px;height:13px}
.bw-solbadge-hd{width:20px;height:20px}
.bw-solbadge-hd .bw-solid{width:20px;height:20px}

/* ═══════════════ TODAY · DOPAMINE + BALANCE PASS ═══════════════ */
/* ── HERO SCOREBOARD (top-left): CHAMFERED sigil-card · esoteric geometry watermark · glowing karma ── */
.ag-tstrip{--chm:polygon(0 14px,14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%);border:none!important;border-radius:0!important;background:none!important;padding:0!important;margin:0 0 20px!important;position:relative;clip-path:var(--chm);filter:drop-shadow(0 12px 20px rgba(0,0,0,.55))}
.ag-tstrip::before{content:"";position:absolute;inset:0;clip-path:var(--chm);background:color-mix(in srgb,var(--accent) 24%,var(--line-2));z-index:0}
.ag-tstrip::after{content:"";position:absolute;inset:1.4px;clip-path:var(--chm);background:radial-gradient(140% 160% at 0% 0%,color-mix(in srgb,var(--accent) 13%,var(--void-2)) 0%,var(--void-2) 52%);z-index:0}
.agt-in{position:relative;z-index:1;padding:15px 18px!important;background:none!important;border:none!important;overflow:hidden}
.agt-geo{position:absolute;right:-30px;top:-28px;width:174px;height:174px;color:var(--accent);opacity:.06;pointer-events:none;z-index:0}
.agt-top,.agt-metrics,.agt-bar,.agt-barl{position:relative;z-index:1}
.agt-gl{font-style:normal;color:var(--gold);margin-right:6px;font-size:9px;opacity:.9;text-shadow:0 0 6px color-mix(in srgb,var(--gold) 60%,transparent)}
.agt-top{margin-bottom:14px!important}
.agt-metrics{display:grid!important;grid-template-columns:1.35fr 1fr .9fr;gap:0!important;margin-bottom:14px!important;align-items:stretch}
.agt-m{padding:2px 18px;border-left:1px solid var(--line);gap:6px;justify-content:center}
.agt-m:first-child{padding-left:0;border-left:none}
.agt-m:first-child .agt-v{font-size:32px;line-height:.9}
.agt-kpair{gap:12px;align-items:baseline}
.agt-kpair .k-g,.agt-v.k-g{color:#3ED66B!important;text-shadow:0 0 18px color-mix(in srgb,#3ED66B 55%,transparent)}
.agt-kpair .k-r,.agt-v.k-r{color:#E5484D!important;text-shadow:0 0 18px color-mix(in srgb,#E5484D 48%,transparent)}
.agt-l{font-size:8px!important;letter-spacing:.15em!important;color:var(--ink-4)!important}
.agt-bar{height:8px!important;border-radius:99px!important;background:color-mix(in srgb,var(--line-2) 85%,transparent)!important;margin:2px 0 8px!important;overflow:hidden}
.agt-bar i{border-radius:99px!important;background:linear-gradient(90deg,var(--accent),var(--gold))!important;box-shadow:0 0 16px color-mix(in srgb,var(--gold) 70%,transparent)!important;transition:width .6s cubic-bezier(.2,.85,.25,1)}
.agt-barl{font-size:9px!important;letter-spacing:.12em}
/* reward states — the day pays you back in glow (recolors the chamfered frame) */
.ag-tstrip.pos::before{background:color-mix(in srgb,#3ED66B 34%,var(--line-2))}
.ag-tstrip.pos .agt-geo{color:#3ED66B}
.ag-tstrip.perfect::before{background:color-mix(in srgb,var(--gold) 62%,transparent)}
.ag-tstrip.perfect::after{background:radial-gradient(140% 160% at 0% 0%,color-mix(in srgb,var(--gold) 13%,var(--void-2)) 0%,var(--void-2) 55%)}
.ag-tstrip.perfect{filter:drop-shadow(0 0 26px color-mix(in srgb,var(--gold) 42%,transparent)) drop-shadow(0 12px 20px rgba(0,0,0,.5))}
.ag-tstrip.perfect .agt-geo{color:var(--gold);opacity:.1}
.ag-tstrip.perfect .agt-bar i{background:linear-gradient(90deg,var(--gold),#fff)!important;animation:agtPerfect 2.4s ease-in-out infinite}
@keyframes agtPerfect{0%,100%{box-shadow:0 0 14px color-mix(in srgb,var(--gold) 60%,transparent)}50%{box-shadow:0 0 24px color-mix(in srgb,var(--gold) 95%,transparent)}}
@media (prefers-reduced-motion:reduce){.ag-tstrip.perfect .agt-bar i{animation:none}}

/* ── THE RITE: an inviting vow card; the CTA is clean + flat, not a filled pill ── */
.ag-rite-box{border-radius:12px;background:radial-gradient(130% 140% at 100% 0%,color-mix(in srgb,var(--accent-2) 8%,transparent),transparent 58%),rgba(255,255,255,.02)}
.ag-rite-vow{min-height:50px;font-size:14.5px}
.ag-rite-btn:not(.ghost){background:none!important;color:var(--accent-2)!important;border:1px solid color-mix(in srgb,var(--accent-2) 42%,var(--line-2))!important;border-radius:7px;box-shadow:none!important;font-weight:600;padding:8px 15px;transition:background .12s,border-color .12s}
.ag-rite-btn:not(.ghost):hover{background:color-mix(in srgb,var(--accent-2) 12%,transparent)!important;border-color:var(--accent-2)!important;filter:none;transform:none}

/* ── DONE / DID-IT → clean empty checkbox (like quest sub-quests) instead of a labeled pill ── */
.ag-logchk{flex:none;margin-left:auto;width:22px;height:22px;border:1.5px solid var(--line-2);background:none;border-radius:6px;cursor:pointer;display:grid;place-items:center;font-size:12px;line-height:1;color:transparent;transition:background .12s,border-color .12s,color .12s}
.ag-logchk.build:hover{border-color:#3ED66B;color:#3ED66B}
.ag-logchk.build.on{border-color:#3ED66B;background:#3ED66B;color:#0b0c10}
.ag-logchk.vice:hover{border-color:#E5484D;color:#E5484D}
.ag-logchk.vice.on{border-color:#E5484D;background:#E5484D;color:#0b0c10}
/* countable vice — tap the count to +1, subtle borderless − to remove one (no ugly rectangle) */
.ag-vct{flex:none;margin-left:auto;display:inline-flex;align-items:center;gap:2px}
.ag-vct-n{min-width:34px;height:24px;padding:0 9px;border:1px solid color-mix(in srgb,#E5484D 42%,var(--line-2));background:none;border-radius:7px;color:#E5484D;font-family:var(--sans);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer;transition:background .12s,border-color .12s}
.ag-vct-n:hover{background:color-mix(in srgb,#E5484D 14%,transparent)}
.ag-vct.on .ag-vct-n{background:color-mix(in srgb,#E5484D 22%,transparent);border-color:#E5484D}
.ag-vct-m{width:18px;height:24px;border:none;background:none;color:var(--ink-4);font-size:15px;line-height:1;cursor:pointer;opacity:.35;transition:opacity .12s,color .12s;padding:0}
.ag-vct-m:hover{opacity:1;color:#E5484D}

/* ── AUTO-ORGANIZE → flat text button, no box ── */
.ag-organize{margin-left:auto;background:none!important;border:none!important;color:var(--ink-3)!important;font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.06em;padding:3px 4px!important;cursor:pointer;transition:color .12s}
.ag-organize:hover{color:var(--accent-2)!important;background:none!important}

/* ── MOMENTUM (bottom-right): framed card · glowing trend line · karma pops ── */
.ag-perf{margin-top:18px!important;padding:14px 15px 12px!important;border-top:none!important;border:1px solid var(--line-2);border-radius:12px;background:radial-gradient(130% 170% at 100% 100%,color-mix(in srgb,var(--accent-2) 8%,var(--void-2)),var(--void-2) 58%)}
.ag-perf-hd{font-size:9px!important;margin-bottom:11px!important}
.ag-perf-karma b{font-size:12px}
.ag-perf-karma .g{text-shadow:0 0 12px color-mix(in srgb,#3ED66B 55%,transparent)}
.ag-wave-line{stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 5px rgba(0,0,0,.5))}
.ag-perf-svg.wave .ag-perf-zero{stroke:rgba(255,255,255,.34);stroke-width:1;stroke-dasharray:3 3;opacity:1}
/* champion-gold style karma chart: y-axis · plot · round dots · daily event rows */
.ag-perf-chart{display:flex;gap:8px;align-items:stretch}
.ag-perf-yax{display:flex;flex-direction:column;justify-content:space-between;flex:none;width:30px;padding:3px 0;text-align:right;font-family:var(--mono);font-size:8.5px;font-variant-numeric:tabular-nums;color:var(--ink-4)}
.ag-perf-yax .g{color:#3ED66B}.ag-perf-yax .r{color:#E5484D}
.ag-perf-plot{position:relative;flex:1;min-width:0;height:108px}
.ag-perf-svg.wave{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.ag-perf-dots{position:absolute;inset:0;pointer-events:none}
.ag-perf-dot{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--void-2,#0e1114);border:1.5px solid var(--dc);transform:translate(-50%,-50%);box-shadow:0 0 5px color-mix(in srgb,var(--dc) 70%,transparent)}
.ag-perf-ev{display:flex;align-items:center;gap:8px;margin-top:7px;height:16px}
.ag-perf-evl{flex:none;width:30px;text-align:right;font-family:var(--disp);font-size:7.5px;font-weight:600;letter-spacing:.13em;color:var(--ink-4)}
.ag-perf-ev.good .ag-perf-evl{color:#3ED66B}
.ag-perf-ev.vice .ag-perf-evl{color:#E5484D}
.ag-perf-evtrack{position:relative;flex:1;min-width:0;height:100%;border-top:1px solid var(--line)}
.ag-perf-evd{position:absolute;top:50%;border-radius:50%;background:var(--dc);transform:translate(-50%,-50%);box-shadow:0 0 6px color-mix(in srgb,var(--dc) 75%,transparent);opacity:.9}

/* ── CLARITY: a colored tick on every section header so "what is what" reads at a glance ── */
.ag-grp{position:relative;padding-left:0!important}
.ag-grp::before{display:none}
/* the want line that organizes each habit group — made legible, not a whisper */
.ag-group-hd{font-size:12px!important;font-weight:700!important;color:var(--ink-2)!important;opacity:1!important;margin-bottom:8px!important;letter-spacing:.01em}
.ag-group-hd[data-groupdrag]{cursor:grab}
.ag-group-hd[data-groupdrag]:active{cursor:grabbing}
.ag-grpgrip{color:var(--ink-4);font-size:13px;letter-spacing:-2px;opacity:.45;transition:opacity .12s,color .12s}
.ag-group-hd:hover .ag-grpgrip{opacity:.9;color:var(--ink-2)}
.ag-group.ag-grpdragging{opacity:.5}
.ag-group.ag-grpdragging .ag-group-hd{cursor:grabbing}
.ag-group{margin-bottom:20px!important}

/* ── MAP SPOTLIGHT — when a connection map is open, dim every left card not wired to the focused node ── */
.ag-mapdim{opacity:.24;filter:saturate(.45);transition:opacity .2s,filter .2s}
.ag-qcard .ag-qrow.ag-mapdim{opacity:1;filter:none}
.ag-mapfoc{transition:box-shadow .2s}
.ag-hcard.ag-mapfoc,.ag-blade.ag-mapfoc,.ag-qcard.ag-mapfoc{box-shadow:0 0 0 1px color-mix(in srgb,var(--cmc,var(--accent-2)) 60%,transparent),0 0 20px -4px color-mix(in srgb,var(--accent-2) 50%,transparent)}

/* ── GUTTER CLEANUP — thin subtle scrollbars + a hairline divider between the two Today panels ── */
.ag-tasks,.ag-cardmap,.ag-cal{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--line-2) 90%,transparent) transparent}
.ag-tasks::-webkit-scrollbar,.ag-cardmap::-webkit-scrollbar,.ag-cal::-webkit-scrollbar{width:8px;background:transparent}
.ag-tasks::-webkit-scrollbar-track,.ag-cardmap::-webkit-scrollbar-track,.ag-cal::-webkit-scrollbar-track{background:transparent}
.ag-tasks::-webkit-scrollbar-thumb,.ag-cardmap::-webkit-scrollbar-thumb,.ag-cal::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:99px;border:2px solid transparent;background-clip:padding-box}
.ag-tasks::-webkit-scrollbar-thumb:hover,.ag-cardmap::-webkit-scrollbar-thumb:hover,.ag-cal::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--accent) 30%,var(--line-2))}
/* the split reads as two intentional panels, divided by a hairline */
.ag-split{gap:0!important}
.ag-cardmap,.ag-cal{border-left:1px solid var(--line);padding-left:26px!important}
.ag-tasks{padding-right:14px!important}

/* ── VICE ↔ VICE links (linked/sub vices) — red-tinted chips ── */
.ag-blade-links.vice{margin-top:5px}
.ag-cc.vice{border-color:color-mix(in srgb,#E5484D 34%,var(--line-2))}
.ag-cc.vice .ag-cc-nm{color:#E5484D}
.ag-cc-add.vice{color:#E5484D;border-color:color-mix(in srgb,#E5484D 34%,var(--line-2))}
.ag-cc-add.vice:hover{background:color-mix(in srgb,#E5484D 12%,transparent);border-color:#E5484D}

/* ── LOG / JOURNAL (bottom-right) — drag a habit/vice/quest in to journal about it ── */
/* right-panel view toggle — Calendar ⇄ Log */
/* framed bar — matches the connection-map header (.ag-cm-top): bordered, accent-tinted, pill toggles */
.ag-rtoggle{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:8px 10px;border:1px solid var(--line-2);border-radius:9px;background:color-mix(in srgb,var(--accent) 4%,var(--void-2,#0e1114));flex:0 0 auto}
/* borderless calendar header (replaces the toggle bar) + log stacked below */
.ag-calhd{display:flex;align-items:center;gap:8px;margin:0 0 10px;flex:0 0 auto}
.ag-calhd .ag-rbar-mo{flex:1;font-size:13px;color:var(--ink-2);font-weight:700}
.ag-calhd .ag-navs{display:inline-flex;gap:1px;flex:none}
.ag-calhd .ag-nav{background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:16px;padding:0 6px;line-height:1;width:auto;height:auto}
.ag-calhd .ag-nav:hover{color:var(--accent)}
.ag-logblk{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.ag-logblk-lab{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin:0 0 10px}
.ag-logblk-lab em{font-style:normal;color:var(--ink-3);margin-left:5px}
.ag-rtab{background:none;border:1px solid var(--line-2);border-radius:6px;color:var(--ink-3);font-family:var(--disp);font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:5px 12px;cursor:pointer;transition:background .12s,color .12s,border-color .12s}
.ag-rtab.on{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-2);border-color:color-mix(in srgb,var(--accent) 40%,var(--line-2))}
.ag-rtab:not(.on):hover{color:var(--ink-2);border-color:var(--ink-4)}
.ag-rtab em{font-style:normal;opacity:.75;margin-left:5px}
.ag-rtab.drag-over{border-color:var(--accent-2)!important;background:color-mix(in srgb,var(--accent-2) 22%,transparent)!important;color:var(--accent-2)!important;box-shadow:0 0 14px -2px color-mix(in srgb,var(--accent-2) 55%,transparent)}
/* right side of the framed bar: month title + nav (calendar) or entry count (log) — fills the bar like the map header */
.ag-rbar-sp{flex:1}
.ag-rbar-mo{font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.03em;color:var(--ink-3);white-space:nowrap}
.ag-rtoggle .ag-navs{display:inline-flex;gap:1px;flex:none;margin-left:4px}
.ag-rtoggle .ag-nav{background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:15px;padding:0 5px;line-height:1;width:auto;height:auto}
.ag-rtoggle .ag-nav:hover{color:var(--accent)}
/* Quests tab — gold octahedron sigil + yellow edge (matches the map's quest node) */
.qx-oct{display:grid;place-items:center;justify-self:center;width:26px;height:26px}
.qx-oct svg{width:23px;height:23px;filter:drop-shadow(0 0 3px color-mix(in srgb,#ECC94B 45%,transparent))}
.qx-oct-lg{width:30px;height:30px}.qx-oct-lg svg{width:28px;height:28px}
.hbx-list.qt .hbx-row{box-shadow:inset 2px 0 0 color-mix(in srgb,#ECC94B 38%,transparent)}
.hbx-list.qt .hbx-row:hover{background:color-mix(in srgb,#ECC94B 5%,transparent)}
.hbx-list.qt .hbx-row.sel{background:color-mix(in srgb,#ECC94B 10%,transparent);box-shadow:inset 3px 0 0 #ECC94B}
.hbx-list.qt .hbx-row.sel .hbx-t{color:#ECC94B}
.ag-rtab em{font-style:normal;font-family:var(--mono);color:var(--ink-4);margin-left:3px}
.ag-rlog{overflow-y:auto}
.ag-rlog .ag-jrn{margin-top:0}
.ag-jrn{margin-top:14px}
.ag-jrn-drop{position:relative;border:none;border-radius:0;padding:0;margin-bottom:12px;transition:background .15s}
/* @-mention popup — choose a vice/virtue/habit/quest to link as a tag */
.ag-jrn-atpop{position:absolute;left:0;right:0;top:100%;margin-top:4px;z-index:40;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:8px;box-shadow:0 12px 30px -12px rgba(0,0,0,.75);padding:5px;display:flex;flex-direction:column;gap:2px;max-height:260px;overflow-y:auto}
.ag-jrn-ato{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:none;border:none;border-left:2px solid var(--tc);border-radius:0 6px 6px 0;padding:7px 10px;cursor:pointer;color:var(--ink);font-family:var(--sans);font-size:13px;transition:background .1s}
.ag-jrn-ato:hover{background:color-mix(in srgb,var(--tc) 12%,transparent)}
.ag-jrn-atk{flex:none;font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.1em;color:var(--tc);border:1px solid color-mix(in srgb,var(--tc) 40%,transparent);border-radius:4px;padding:2px 5px}
.ag-jrn-atn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-jrn-atnone{font-family:var(--sans);font-size:12px;color:var(--ink-4);padding:8px 10px}
.ag-jrn-drop.drag-over{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}
.ag-jrn.drag-over,.ag-logblk.drag-over{outline:2px dashed var(--accent-2);outline-offset:5px;border-radius:10px;background:color-mix(in srgb,var(--accent) 6%,transparent)}
.ag-cal.drag-over{background:color-mix(in srgb,var(--accent) 4%,transparent)}
.ag-jrn.drag-over .ag-jrn-drop{border-color:var(--accent-2);border-style:solid;background:color-mix(in srgb,var(--accent) 10%,transparent)}
.ag-jrn.drag-over .ag-jrn-hint{color:var(--accent-2)}
.ag-jrn-drop.linked{border-style:solid;border-color:color-mix(in srgb,var(--accent) 40%,var(--line-2))}
.ag-jrn-hint{display:none}
.ag-jrn-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:9px}
.ag-jrn-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--tc,var(--accent-2));background:color-mix(in srgb,var(--tc,var(--accent)) 12%,transparent);border:1px solid color-mix(in srgb,var(--tc,var(--accent)) 40%,transparent);border-left:2px solid var(--tc,var(--accent));border-radius:5px;padding:3px 5px 3px 9px}
.ag-jrn-x,.ag-jrn-edel{background:none;border:none;color:var(--ink-4);cursor:pointer;font-size:11px;padding:0 3px;line-height:1}
.ag-jrn-x:hover,.ag-jrn-edel:hover{color:#E5484D}
.ag-jrn-in{width:100%;box-sizing:border-box;background:none;border:none;border-bottom:1px solid var(--line-2);border-radius:0;color:var(--ink);font-family:var(--sans);font-size:13px;line-height:1.5;padding:6px 2px;resize:none;outline:none;transition:border-color .15s}
.ag-jrn-in::placeholder{color:var(--ink-4)}
.ag-jrn-in:focus{border-bottom-color:var(--accent-2)}
.ag-jrn-chiptag{font-family:var(--mono);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--tc,var(--accent-2));opacity:.85;margin-right:2px}
.ag-jrn-row{display:flex;align-items:center;justify-content:space-between;margin-top:7px}
.ag-jrn-tip{font-family:var(--mono);font-size:8.5px;letter-spacing:.06em;color:var(--ink-4)}
.ag-jrn-add{font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--accent-2);background:none;border:1px solid color-mix(in srgb,var(--accent-2) 42%,var(--line-2));border-radius:7px;padding:6px 14px;cursor:pointer;transition:background .12s,border-color .12s}
.ag-jrn-add:hover{background:color-mix(in srgb,var(--accent-2) 12%,transparent);border-color:var(--accent-2)}
.ag-jrn-e{border-top:1px solid var(--line);padding:9px 2px}
.ag-jrn-etags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:5px}
.ag-jrn-elink{display:inline-flex;align-items:center;font-family:var(--sans);font-size:10px;font-weight:600;color:var(--tc,var(--accent-2));background:color-mix(in srgb,var(--tc,var(--accent)) 10%,transparent);border:1px solid color-mix(in srgb,var(--tc,var(--accent)) 30%,transparent);border-radius:4px;padding:2px 7px;cursor:pointer;letter-spacing:.02em}
.ag-jrn-elink.v{color:#E5484D}
.ag-jrn-elink:hover{background:color-mix(in srgb,var(--tc,var(--accent)) 20%,transparent)}
.ag-jrn-eb{font-family:var(--sans);font-size:12.5px;line-height:1.5;color:var(--ink-2,#c7ccd3);white-space:pre-wrap;word-break:break-word}
.ag-jrn-em{display:flex;align-items:center;justify-content:space-between;margin-top:5px;font-family:var(--mono);font-size:8.5px;letter-spacing:.06em;color:var(--ink-4)}
/* ── functional journalling: Karyna drafts + approve + reflect ── */
.ag-jrn-etitle{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink,#ECEEF1);margin-bottom:3px;letter-spacing:.01em}
.ag-jrn-reflect{display:block;width:100%;margin:0 0 9px;padding:8px 10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;color:var(--accent,#2DD4BF);background:color-mix(in srgb,var(--accent) 9%,transparent);border:1px dashed color-mix(in srgb,var(--accent) 38%,transparent);border-radius:7px;cursor:pointer;text-align:left}
.ag-jrn-reflect:hover{background:color-mix(in srgb,var(--accent) 16%,transparent)}
.ag-jrn-drafts{margin-bottom:6px}
.ag-jrn-draft{border-top:none;border-left:2px solid var(--accent,#2DD4BF);background:color-mix(in srgb,var(--accent) 6%,transparent);border-radius:0 7px 7px 0;padding:9px 10px;margin-bottom:7px}
.ag-jrn-draftm{color:var(--accent,#2DD4BF)}
.ag-jrn-badge{font-family:var(--mono);font-size:8.5px;letter-spacing:.08em;color:var(--accent,#2DD4BF)}
.ag-jrn-ok{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.04em;color:#08090B;background:var(--accent,#2DD4BF);border:0;border-radius:5px;padding:3px 10px;cursor:pointer;margin-right:6px}
.ag-jrn-ok:hover{filter:brightness(1.1)}

/* ── ONE PANEL — the karma chart now lives inside the hero card, divided by a hairline ── */
.ag-tstrip .ag-perf{margin:13px 0 0!important;padding:13px 0 0!important;border:none!important;border-top:1px solid color-mix(in srgb,var(--accent) 15%,var(--line))!important;border-radius:0!important;background:none!important}
.ag-tstrip .ag-perf-hd{color:var(--ink-4)}
.ag-perf-dot{cursor:help;pointer-events:auto;transition:transform .1s,box-shadow .1s}
.ag-perf-dot::after{content:"";position:absolute;inset:-7px;border-radius:50%}
.ag-perf-dot:hover{transform:translate(-50%,-50%) scale(1.7);box-shadow:0 0 10px var(--dc);z-index:2}
.ag-perf-plot{height:118px}
/* styled in-app popover for the karma-graph dots */
.ag-perf-pop{position:fixed;z-index:99998;pointer-events:none;min-width:150px;max-width:280px;background:color-mix(in srgb,var(--void-2,#0e1114) 96%,var(--accent));border:1px solid color-mix(in srgb,var(--accent) 34%,var(--line-2));border-radius:8px;padding:9px 11px;box-shadow:0 12px 30px -8px rgba(0,0,0,.85);opacity:0;transform:translateY(4px);transition:opacity .1s,transform .1s}
.ag-perf-pop.on{opacity:1;transform:translateY(0)}
.ag-perf-pop .ppd{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.ag-perf-pop .ppdate{font-family:var(--disp);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2,#c7ccd3)}
.ag-perf-pop .ppn{display:inline-flex;gap:8px;font-family:var(--sans);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
.ag-perf-pop .ppn .g{color:#3ED66B}.ag-perf-pop .ppn .r{color:#E5484D}.ag-perf-pop .ppn .ppz{color:var(--ink-4)}
.ag-perf-pop .pprow{display:flex;gap:8px;font-size:11px;line-height:1.4;margin-top:4px}
.ag-perf-pop .pplbl{flex:none;font-family:var(--mono);font-size:8px;font-weight:600;letter-spacing:.1em;padding-top:2px;width:30px}
.ag-perf-pop .pprow.g .pplbl{color:#3ED66B}.ag-perf-pop .pprow.v .pplbl{color:#E5484D}
.ag-perf-pop .ppitems{color:var(--ink-2,#c7ccd3);word-break:break-word}
.ag-perf-pop .ppnone{font-size:11px;color:var(--ink-4)}

/* ── HERO PANEL v2 — terminal-minimal stats · flower not clipped · integrated collapsible Rite ── */
.agt-geo{right:12px!important;top:10px!important;width:116px!important;height:116px!important;opacity:.05!important;animation:agtGeoPulse 4.5s ease-in-out infinite}
@keyframes agtGeoPulse{0%,100%{opacity:.04;transform:scale(1)}50%{opacity:.13;transform:scale(1.05)}}
@media (prefers-reduced-motion:reduce){.agt-geo{animation:none}}
/* kleos + xp earned today — a clear readout band in the hero */
.agt-earned{display:flex;align-items:center;gap:18px;margin:2px 0 12px;padding:9px 12px;border-radius:8px;background:color-mix(in srgb,var(--gold) 6%,transparent);border:1px solid color-mix(in srgb,var(--gold) 16%,var(--line))}
.agt-e{display:inline-flex;align-items:baseline;gap:5px;font-family:var(--mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4)}
.agt-e b{font-family:var(--sans);font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:0}
.agt-e.kleos{color:var(--gold)}.agt-e.kleos b{color:var(--gold);text-shadow:0 0 10px color-mix(in srgb,var(--gold) 45%,transparent)}
.agt-e.xp{color:var(--accent-2)}.agt-e.xp b{color:var(--accent-2);text-shadow:0 0 10px color-mix(in srgb,var(--accent-2) 45%,transparent)}
.agt-e-t{margin-left:auto;font-family:var(--mono);font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4)}
.agt-day{font-size:26px!important}
.agt-metrics{grid-template-columns:1.15fr 1fr .8fr!important;margin-bottom:12px!important}
.agt-m{padding:2px 16px!important;gap:4px!important}
.agt-m:first-child .agt-v{font-size:26px!important}
.agt-v{font-size:20px!important;font-weight:600!important}
.agt-kpair{gap:9px!important}
.agt-l{font-family:var(--mono)!important;font-size:8px!important;font-weight:500!important;letter-spacing:.1em!important;text-transform:lowercase!important;color:var(--ink-4)!important}
.agt-gl{display:none!important}
.agt-barl{font-family:var(--mono)!important;font-size:8px!important;letter-spacing:.1em!important;text-transform:lowercase}
.ag-perf-hd{font-family:var(--mono)!important;font-size:8px!important;letter-spacing:.12em!important;text-transform:uppercase;color:var(--ink-4)!important}
/* collapsed Rite status line */
.agt-rite{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--accent) 15%,var(--line));cursor:pointer;font-family:var(--mono);font-size:9px}
.agt-rite-k{flex:none;color:var(--gold);font-weight:600;letter-spacing:.12em}
.agt-rite-v{flex:none;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3)}
.agt-rite.clocked .agt-rite-v{color:var(--accent-2)}
.agt-rite.sealed .agt-rite-v{color:#3ED66B}
.agt-rite-vow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--sans);font-size:11px;letter-spacing:0;color:var(--ink-3)}
.agt-rite-cta{flex:none;margin-left:auto;color:var(--accent-2);letter-spacing:.08em;text-transform:uppercase}
.agt-rite:hover .agt-rite-cta{text-decoration:underline}
.agt-in .ag-grp{margin-top:12px!important;padding-top:12px!important;border-top:1px solid color-mix(in srgb,var(--accent) 15%,var(--line))!important;color:var(--gold)!important;display:flex;align-items:center;gap:7px}
.agt-in .ag-grp::before{display:none!important}   /* drop the generic section tick on the in-panel Rite header */
.agt-in .ag-rite-box{margin-bottom:0}
/* the Rite sigil (gematria oath glyph) + clean collapse caret */
.agt-rite-sig{flex:none;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--gold) 55%,transparent))}
.agt-rite-sig svg{width:100%;height:100%;display:block}
.agt-rite-hide{margin-left:auto;background:none;border:none;color:var(--ink-4);cursor:pointer;font-size:13px;line-height:1;padding:2px 5px;border-radius:5px;transition:color .12s,background .12s}
.agt-rite-hide:hover{color:var(--accent-2);background:color-mix(in srgb,var(--accent) 12%,transparent)}
/* ── MORE GLOW — the panel breathes, the momentum line burns ── */
.ag-tstrip{filter:drop-shadow(0 0 22px color-mix(in srgb,var(--accent) 22%,transparent)) drop-shadow(0 12px 20px rgba(0,0,0,.5))!important}
.ag-tstrip.pos{filter:drop-shadow(0 0 24px color-mix(in srgb,#3ED66B 26%,transparent)) drop-shadow(0 12px 20px rgba(0,0,0,.5))!important}
.ag-wave-line{filter:drop-shadow(0 0 3px color-mix(in srgb,#3ED66B 85%,transparent)) drop-shadow(0 0 9px color-mix(in srgb,#3ED66B 45%,transparent))!important}

/* ── DOPAMINE FX — completion burst + level-up flare ── */
.fx-burst{position:fixed;z-index:99999;pointer-events:none;transform:translate(-50%,-50%)}
.fx-p{position:absolute;left:0;top:0;width:6px;height:6px;border-radius:50%;background:var(--fc);box-shadow:0 0 8px var(--fc);transform:translate(-50%,-50%);animation:fxP .72s cubic-bezier(.15,.7,.3,1) forwards}
@keyframes fxP{0%{opacity:1;transform:translate(-50%,-50%) translate(0,0) scale(1)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) scale(.35)}}
.fx-ring{position:absolute;left:0;top:0;width:22px;height:22px;border-radius:50%;border:2px solid var(--fc);box-shadow:0 0 14px var(--fc);transform:translate(-50%,-50%) scale(.4);animation:fxRing .55s ease-out forwards}
@keyframes fxRing{0%{opacity:.9;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(-50%,-50%) scale(3.4)}}
/* COMPLETION POP — the completed element bounces once, satisfying + clear */
.fx-pop{animation:fxPop .42s cubic-bezier(.2,1.5,.35,1)}
@keyframes fxPop{0%{transform:scale(1)}30%{transform:scale(1.14)}55%{transform:scale(.97)}100%{transform:scale(1)}}
/* rising gain label — "+20 XP" / "✓" floats up and fades from the completed item */
.fx-gain{position:fixed;z-index:99999;pointer-events:none;transform:translate(-50%,0);font-family:var(--sans);font-size:14px;font-weight:800;letter-spacing:.02em;color:var(--fc);text-shadow:0 0 10px color-mix(in srgb,var(--fc) 60%,transparent),0 1px 2px rgba(0,0,0,.6);white-space:nowrap;animation:fxGain 1.1s cubic-bezier(.2,.7,.3,1) forwards}
@keyframes fxGain{0%{opacity:0;transform:translate(-50%,4px) scale(.8)}18%{opacity:1;transform:translate(-50%,-8px) scale(1.05)}100%{opacity:0;transform:translate(-50%,-42px) scale(1)}}
@media (prefers-reduced-motion:reduce){.fx-pop{animation:none}.fx-gain{display:none!important}}
/* cinematic LEVEL UP — sigil blaze + light rays + shockwaves + screen flash */
.fx-lvup{position:fixed;inset:0;z-index:99999;pointer-events:none;display:flex;align-items:center;justify-content:center;overflow:hidden}
.fx-lvup-flash{position:absolute;inset:0;background:radial-gradient(closest-side at 50% 42%,color-mix(in srgb,var(--fc) 42%,transparent),transparent 62%);opacity:0;animation:fxFlash 1.9s ease-out forwards}
@keyframes fxFlash{0%{opacity:0}7%{opacity:1}42%{opacity:.3}100%{opacity:0}}
.fx-lvup-rays{position:absolute;left:50%;top:42%;width:150vmax;height:150vmax;transform:translate(-50%,-50%);mix-blend-mode:screen;opacity:0;background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--fc) 24%,transparent) 0deg 3.5deg,transparent 3.5deg 12deg);animation:fxRays 2s ease-out forwards}
@keyframes fxRays{0%{opacity:0;transform:translate(-50%,-50%) rotate(-22deg) scale(.15)}18%{opacity:.55}100%{opacity:0;transform:translate(-50%,-50%) rotate(28deg) scale(1)}}
.fx-lvup-ring{position:absolute;left:50%;top:42%;width:64px;height:64px;border-radius:50%;border:3px solid var(--fc);box-shadow:0 0 26px var(--fc);transform:translate(-50%,-50%) scale(.2);opacity:0}
.fx-lvup-ring.r1{animation:fxLvRing 1.5s ease-out forwards}
.fx-lvup-ring.r2{animation:fxLvRing 1.5s ease-out .16s forwards}
.fx-lvup-ring.r3{animation:fxLvRing 1.5s ease-out .34s forwards}
@keyframes fxLvRing{0%{opacity:.85;transform:translate(-50%,-50%) scale(.2)}100%{opacity:0;transform:translate(-50%,-50%) scale(7.5)}}
.fx-lvup-core{position:relative;top:-7vh;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center}
.fx-lvup-sig{width:100px;height:100px;filter:drop-shadow(0 0 22px var(--fc));animation:fxLvSig 2.1s cubic-bezier(.2,.8,.25,1) forwards}
.fx-lvup-sig svg{width:100%;height:100%;display:block}
@keyframes fxLvSig{0%{opacity:0;transform:scale(.25) rotate(-45deg)}24%{opacity:1;transform:scale(1.18) rotate(0)}40%{transform:scale(1)}86%{opacity:1}100%{opacity:0;transform:scale(1.06)}}
.fx-lvup-t{font-family:var(--disp);font-weight:800;font-size:46px;letter-spacing:.02em;color:var(--fc);text-shadow:0 0 34px var(--fc),0 3px 14px rgba(0,0,0,.85);animation:fxLvSlam 2.1s cubic-bezier(.2,.9,.2,1) forwards}
@keyframes fxLvSlam{0%{opacity:0;letter-spacing:.55em;transform:scale(1.5);filter:blur(9px)}12%{opacity:1;letter-spacing:.02em;transform:scale(1);filter:blur(0)}82%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-12px)}}
.fx-lvup-n{font-family:var(--sans);font-weight:700;font-size:17px;color:var(--ink);text-shadow:0 1px 9px rgba(0,0,0,.75);animation:fxLvFade 2.1s ease forwards}
.fx-lvup-lv{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);animation:fxLvFade 2.1s ease forwards}
.fx-lvup-lv b{font-family:var(--disp);font-size:21px;color:var(--fc);text-shadow:0 0 16px var(--fc);margin-left:2px}
@keyframes fxLvFade{0%,12%{opacity:0}22%{opacity:1}82%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.fx-burst,.fx-lvup{display:none!important}}

/* ── STREAK FLAME — grows + intensifies with the run ── */
.ag-flame{display:inline-flex;align-items:center;gap:3px;flex:none;line-height:1}
.ag-flame svg{width:14px;height:18px;display:block;transform-origin:50% 90%;filter:drop-shadow(0 0 4px rgba(255,140,0,.45));animation:flameFlick 1.5s ease-in-out infinite}
.ag-flame .fl-o{fill:#FF7A18}
.ag-flame .fl-i{fill:#FFD24A}
.ag-flame b{font-family:var(--mono);font-size:11px;font-weight:700;color:#FF9A3C;font-variant-numeric:tabular-nums}
.ag-flame.t2 svg{width:16px;height:21px}
.ag-flame.t3 svg{width:19px;height:25px;filter:drop-shadow(0 0 7px rgba(255,110,0,.7))}
.ag-flame.t3 .fl-o{fill:#FF5E1A}
.ag-flame.t3 b,.ag-flame.t4 b{font-size:12px;color:#FFB347}
.ag-flame.t4 svg{width:23px;height:30px;filter:drop-shadow(0 0 12px rgba(255,80,0,.9))}
.ag-flame.t4 .fl-o{fill:#FF3D2E}
.ag-flame.t4 .fl-i{fill:#FFE96A}
@keyframes flameFlick{0%,100%{transform:scale(1) rotate(-1.5deg)}45%{transform:scale(1.06,1.13) rotate(1.5deg)}70%{transform:scale(.98,1.04) rotate(-.5deg)}}
@media (prefers-reduced-motion:reduce){.ag-flame svg{animation:none}}

/* ── PROFILE HUB — tab bar + clickable HUD + Stats pane ── */
.topstat{cursor:pointer;transition:filter .12s}
.topstat:hover{filter:brightness(1.14)}
.prof-tabbar2{display:none !important;gap:12px;padding:18px 26px 8px;position:relative;z-index:5;justify-content:flex-start}
.prof-tabbar2.show{display:inline-flex !important}
.prof-tabbar2 b{cursor:pointer}
.pg-tab-hint{font-family:var(--mono);font-size:9px;letter-spacing:.06em;color:var(--ink-4);margin-left:12px;align-self:center}
#view-profstats{padding:0}
.ps-wrap{max-width:1120px;margin:0 auto;padding:16px 26px 44px}
.ps-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:12px;margin-bottom:20px}
.ps-kpi{background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 6%,var(--void-2,#0e1013)),var(--void-1,#0b0c0e));border:1px solid var(--line-2);border-radius:12px;padding:16px 14px;text-align:center}
.ps-kpi b{display:block;font-family:var(--sans);font-size:22px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.ps-kpi span{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);margin-top:6px;display:block}
.ps-lbl{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin:20px 0 10px}
.ps-hist,.ps-log{display:flex;flex-direction:column;gap:4px}
.ps-none{font-family:var(--sans);font-size:13px;color:var(--ink-4);padding:22px;text-align:center}

/* ══ COLOSSEUM → Polymarket market cards (matches quest-market-preview) ══ */
.pm-list{display:grid !important;grid-template-columns:repeat(auto-fill,minmax(302px,1fr));gap:14px !important;align-items:start}
.cf-post.pm{display:flex;flex-direction:column;padding:15px 16px 14px;background:linear-gradient(180deg,var(--void-2,#0e1013),var(--void-1,#0b0c0e))}
.cf-post.pm.closed{opacity:.62}
.cf-mtop{display:flex;align-items:flex-start;gap:10px;margin-bottom:11px}
.cf-post.pm .cf-av{width:32px;height:32px;border-radius:50%;flex:none;display:grid;place-items:center;font-family:var(--mono);font-size:12px;font-weight:700;color:var(--ink-2);background:linear-gradient(150deg,#2a2f38,#181b21);border:1px solid var(--line-2)}
.cf-post.pm.you .cf-av{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#08110F;border:none}
.cf-who{flex:1;min-width:0}
.cf-name{font-family:var(--sans);font-size:13.5px;font-weight:700;color:var(--ink)}
.cf-tier{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;color:var(--ink-4);margin-top:2px}
.cf-implied{text-align:right;flex:none}
.cf-ipct{font-family:var(--sans);font-size:24px;font-weight:800;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}
.cf-ipct.up{color:var(--good,#57C888)}.cf-ipct.down{color:var(--warn)}
.cf-ilbl{font-family:var(--mono);font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);margin-top:3px}
.cf-barwrap{margin:0 0 12px}
.cf-bar{height:7px;border-radius:4px;overflow:hidden;display:flex;gap:2px;background:var(--void,#0a0b0d)}
.cf-bar .f{background:var(--good,#57C888)}.cf-bar .a{background:var(--warn)}
.cf-barends{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9.5px;margin-top:5px}
.cf-barends .ef{color:var(--good,#57C888)}.cf-barends .ea{color:var(--warn)}
.cf-post.pm .cf-claim{font-family:var(--sans);font-size:14px;font-weight:600;color:var(--ink);line-height:1.4;margin:0 0 10px;padding:0}
.cf-stakes{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:11px}
.cf-stake{border-radius:9px;padding:9px 12px;cursor:pointer;background:rgba(255,255,255,.012);display:flex;flex-direction:column;gap:2px;font-family:inherit;text-align:left;transition:background .13s,border-color .13s}
.cf-stake.for{border:1px solid color-mix(in srgb,var(--good,#57C888) 34%,var(--line-2))}
.cf-stake.for:hover{background:color-mix(in srgb,var(--good,#57C888) 12%,transparent);border-color:var(--good,#57C888)}
.cf-stake.against{border:1px solid color-mix(in srgb,var(--warn) 34%,var(--line-2))}
.cf-stake.against:hover{background:color-mix(in srgb,var(--warn) 12%,transparent);border-color:var(--warn)}
.cf-stake:disabled{cursor:default;opacity:.85}
.cf-sside{font-family:var(--mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;font-weight:700}
.cf-stake.for .cf-sside{color:var(--good,#57C888)}.cf-stake.against .cf-sside{color:var(--warn)}
.cf-sside span{color:var(--ink-4);letter-spacing:0;text-transform:none;font-weight:500}
.cf-smult{font-family:var(--sans);font-size:18px;font-weight:800;font-variant-numeric:tabular-nums}
.cf-stake.for .cf-smult{color:var(--good,#57C888)}.cf-stake.against .cf-smult{color:var(--warn)}
.cf-spool{font-family:var(--mono);font-size:10px;color:var(--ink-4)}
.cf-youacts{display:flex;gap:8px;margin-bottom:11px}
.cf-proofbtn{flex:1;background:var(--accent);border:none;border-radius:8px;color:#08110F;font-family:var(--sans);font-size:12px;font-weight:700;padding:9px;cursor:pointer}
.cf-proofbtn:hover{background:var(--accent-2)}
.cf-youacts .cf-vote{flex:1;width:auto;height:auto;padding:9px;font-family:var(--sans);font-size:12px;font-weight:600}
.cf-settled{margin:0 0 11px;padding:11px;border-radius:9px;text-align:center;font-family:var(--sans);font-size:13px;font-weight:700}
.cf-settled.hit{background:color-mix(in srgb,var(--good,#57C888) 14%,transparent);color:var(--good,#57C888)}
.cf-settled.miss{background:color-mix(in srgb,var(--warn) 12%,transparent);color:var(--warn)}
.cf-post.pm .cf-tagline{padding:0 0 10px}
.cf-foot{display:flex;justify-content:space-between;align-items:center;padding-top:10px;border-top:1px solid var(--line-2);font-family:var(--mono);font-size:10.5px;color:var(--ink-4)}
.cf-vol{color:var(--ink-2);font-weight:600}

/* ══ FEED → same card layout/grid as the Colosseum ══ */
.feed-list{display:grid !important;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px !important;align-items:start}
.feed-card{background:var(--void-2,#0e1013) !important;border:1px solid var(--line) !important;border-radius:14px !important;overflow:hidden}
.feed-card .fc-head{display:flex;align-items:center;gap:11px;padding:12px 14px}
.feed-card .fc-av{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-size:11px;font-weight:700;color:var(--ink);background:linear-gradient(135deg,var(--accent-dim,#153f3a),var(--void,#0a0b0d));border:1px solid var(--line-2);flex:none}
.feed-card .fc-name{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink)}
.feed-card .fc-sub{font-family:var(--mono);font-size:10px;color:var(--ink-4)}
.feed-card .fc-photo-wrap{aspect-ratio:16/10;background:#08090b;overflow:hidden}
.feed-card .fc-img{width:100%;height:100%;object-fit:cover;display:block}
.feed-card .fc-cap{padding:8px 14px 3px;font-family:var(--sans);font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.feed-card .fc-foot{display:flex;align-items:center;justify-content:space-between;padding:8px 14px 14px;font-family:var(--mono);font-size:11px;color:var(--ink-4)}

/* profile avatar sitting IN the nav rail (below the main tabs) */
.sb-avnav{display:grid !important;place-items:center;overflow:hidden;background-size:cover;background-position:center;border-radius:50%;font-family:var(--mono);font-size:12px;font-weight:700;color:var(--ink);border:1.5px solid var(--line-2)}
.sb-avnav.has-pfp{border-color:var(--line-2)}
.sb-avnav.on,.sb-avnav:hover{border-color:var(--accent-2)}
#navChat{cursor:pointer}

/* Chat / Messenger view */
#view-chat{overflow:hidden}
.chat-shell{display:flex;height:calc(100vh - 44px)}
.chat-list{flex:0 0 300px;border-right:1px solid var(--line-2);padding:20px 16px;overflow-y:auto}
.chat-list-h{font-family:var(--sans);font-size:16px;font-weight:800;color:var(--ink);margin-bottom:16px}
.chat-none{font-family:var(--sans);font-size:13px;line-height:1.6;color:var(--ink-4)}
.chat-main{flex:1;display:grid;place-items:center}
.chat-empty{text-align:center;max-width:340px;padding:24px}
.chat-empty-i{font-size:50px;color:color-mix(in srgb,var(--accent) 48%,transparent);margin-bottom:14px;line-height:1}
.chat-empty-t{font-family:var(--sans);font-size:21px;font-weight:800;color:var(--ink);letter-spacing:.02em;margin-bottom:8px}
.chat-empty-s{font-family:var(--sans);font-size:13.5px;line-height:1.6;color:var(--ink-4)}

/* Colosseum market sparkline */
.cf-chart{height:28px;margin:0 0 11px}
.cf-spark{width:100%;height:100%;display:block}
/* nav-rail profile icon + compass render at the standard icon size */
#navProfile .fic,.sb-nav a[data-view="today"] .fic{width:20px;height:20px}

/* ══ CHAT / MESSENGER — real chat layout ══ */
#view-chat{overflow:hidden}
.chat-shell{display:flex;height:calc(100vh - 44px)}
.chat-list{flex:0 0 288px;border-right:1px solid var(--line-2);overflow-y:auto;padding:8px}
.chat-list-h{font-family:var(--sans);font-size:16px;font-weight:800;color:var(--ink);padding:12px 12px 10px}
.chat-conv{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;cursor:pointer;transition:background .12s}
.chat-conv:hover{background:rgba(255,255,255,.03)}
.chat-conv.on{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.chat-cav{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-size:13px;font-weight:700;color:var(--ink);background:linear-gradient(135deg,var(--accent-dim,#153f3a),var(--void,#0a0b0d));border:1px solid var(--line-2)}
.chat-cmid{flex:1;min-width:0}
.chat-cname{font-family:var(--sans);font-size:13.5px;font-weight:700;color:var(--ink)}
.chat-cprev{font-family:var(--sans);font-size:12px;color:var(--ink-4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1px}
.chat-ctime{flex:none;font-family:var(--mono);font-size:9.5px;color:var(--ink-4)}
.chat-main{flex:1;display:flex;flex-direction:column;min-width:0}
.chat-thread-h{display:flex;align-items:center;gap:11px;padding:14px 20px;border-bottom:1px solid var(--line-2);flex:none}
.chat-thmid b{display:block;font-family:var(--sans);font-size:14px;font-weight:700;color:var(--ink)}
.chat-thmid span{font-family:var(--mono);font-size:10px;color:var(--ink-4)}
.chat-thread{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:9px}
.chat-day{align-self:center;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin:6px 0 10px}
.chat-brow{display:flex;flex-direction:column;max-width:76%}
.chat-brow.them{align-self:flex-start;align-items:flex-start}
.chat-brow.me{align-self:flex-end;align-items:flex-end}
.chat-bubble{font-family:var(--sans);font-size:14px;line-height:1.4;padding:9px 13px;border-radius:15px}
.chat-bubble.them{background:var(--void-2,#0e1013);border:1px solid var(--line-2);color:var(--ink);border-bottom-left-radius:5px}
.chat-bubble.me{background:linear-gradient(160deg,var(--accent),color-mix(in srgb,var(--accent) 70%,#0a0b0d));color:#08110F;font-weight:500;border-bottom-right-radius:5px}
.chat-btime{font-family:var(--mono);font-size:8.5px;color:var(--ink-4);margin-top:3px;padding:0 4px}
.chat-composer{flex:none;display:flex;gap:10px;padding:14px 20px;border-top:1px solid var(--line-2)}
.chat-in{flex:1;background:var(--void-1,#0b0c0e);border:1px solid var(--line-2);border-radius:22px;color:var(--ink);font-family:var(--sans);font-size:14px;padding:11px 16px;outline:none}
.chat-in::placeholder{color:var(--ink-4)}
.chat-send{flex:none;background:var(--accent);border:none;border-radius:22px;color:#08110F;font-family:var(--sans);font-size:13px;font-weight:700;padding:0 20px;cursor:pointer;opacity:.55}

/* ══ PORTFOLIO — your Colosseum positions ══ */
#view-portfolio{overflow-y:auto}
#view-portfolio .board{width:min(100%,1100px);align-self:center;margin:0;padding:0 28px 70px}
#view-portfolio .board-head{text-align:left;padding:26px 0 6px}
#view-portfolio .board-title{font-family:var(--sans);font-size:24px;font-weight:800;color:var(--ink)}
#view-portfolio .board-sub{display:block;font-family:var(--sans);font-size:12.5px;color:var(--ink-4);margin:5px 0 22px}
.pf-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:8px}
.pf-kpi{background:linear-gradient(180deg,var(--void-2,#0e1013),var(--void-1,#0b0c0e));border:1px solid var(--line-2);border-radius:12px;padding:16px}
.pf-kpi b{display:block;font-family:var(--sans);font-size:21px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.pf-kpi span{font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);margin-top:5px;display:block}
.pf-lbl{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin:22px 0 11px;display:flex;gap:8px;align-items:center}
.pf-lbl em{font-style:normal;color:var(--ink-4);font-weight:500}
.pf-list{display:flex;flex-direction:column;gap:8px}
.pf-row{display:flex;align-items:center;gap:13px;padding:13px 15px;background:var(--void-2,#0e1013);border:1px solid var(--line-2);border-radius:11px;cursor:pointer;transition:border-color .12s}
.pf-row:hover{border-color:var(--line)}
.pf-row.won{border-left:3px solid var(--good,#57C888)}
.pf-row.lost{border-left:3px solid var(--warn)}
.pf-tag{flex:none;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.08em;padding:5px 9px;border-radius:6px}
.pf-tag.back{color:var(--good,#57C888);background:color-mix(in srgb,var(--good,#57C888) 12%,transparent)}
.pf-tag.fade{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent)}
.pf-tag.you{color:var(--accent-2);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.pf-mid{flex:1;min-width:0}
.pf-q{font-family:var(--sans);font-size:14px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf-sub{font-family:var(--mono);font-size:10px;color:var(--ink-4);margin-top:3px}
.pf-nums{flex:none;text-align:right}
.pf-stake{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--ink)}
.pf-ret{font-family:var(--mono);font-size:11px;color:var(--ink-3);margin-top:2px}
.pf-none{font-family:var(--sans);font-size:13px;color:var(--ink-4);padding:18px;text-align:center;border:1px dashed var(--line-2);border-radius:11px}

/* ══════════ PLAN VIEW · clean 50/50 + Karyna as a slide-in COPILOT ══════════ */
/* drop Karyna's fixed column → the Today/Quests split fills the width (clean 50/50) */
#sub-overview{grid-template-columns:minmax(0,1fr) !important}
#sub-overview .ov-main{grid-column:1/-1 !important}
/* Karyna is a GLOBAL FLOATING COPILOT — a labeled bar launcher that opens a floating
   chat box anchored bottom-right (NOT a full-height side panel, NO scrim). */
.ov-chat#ovPlan{position:fixed !important;right:24px !important;bottom:96px !important;top:auto !important;left:auto !important;
  width:min(400px,calc(100vw - 48px)) !important;height:min(600px,72vh) !important;margin:0 !important;padding:0 !important;
  grid-row:auto !important;grid-column:auto !important;z-index:646 !important;
  background:linear-gradient(180deg,#0E1319,#0B0F14) !important;border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line)) !important;border-left:1px solid color-mix(in srgb,var(--accent) 32%,var(--line)) !important;
  box-shadow:0 24px 64px rgba(0,0,0,.62) !important;clip-path:var(--chamfer);
  display:flex !important;flex-direction:column;order:0 !important;min-height:0 !important;
  opacity:0;transform:translateY(16px) scale(.98);transform-origin:100% 100%;pointer-events:none;
  transition:opacity .2s ease,transform .22s cubic-bezier(.2,.7,.2,1)}
.ov-chat#ovPlan.copilot-open{opacity:1 !important;transform:none !important;pointer-events:auto !important}
/* no full-screen scrim — the app stays visible/usable behind the floating box */
.ov-copilot-scrim{display:none !important}
/* launcher — a CIRCLE: Karyna's face + a cool segmented accent ring border.
   Supports corner notification badges (number + orb), hidden until populated. */
.ov-copilot-fab{position:fixed;right:24px;bottom:24px;z-index:645;width:60px;height:60px;padding:0;border:none;background:none;border-radius:50%;
  cursor:pointer;display:grid;place-items:center;overflow:visible;filter:drop-shadow(0 12px 30px rgba(0,0,0,.6));transition:transform .16s}
.ov-copilot-fab:hover{transform:scale(1.07)}
/* clean circular portrait with a double accent ring (no mask/conic → no square artifacts) */
.ov-copilot-face{position:relative;z-index:1;width:100%;height:100%;border-radius:50%;
  background:#05070A url(/img/karyna.png) center 16%/cover no-repeat;transform:scaleX(-1);
  box-shadow:0 0 0 2px var(--accent),0 0 0 5px color-mix(in srgb,var(--accent) 20%,transparent),inset 0 0 0 1px rgba(255,255,255,.08)}
.ov-copilot-fab.on{transform:scale(1.04)}
.ov-copilot-fab.on .ov-copilot-face{box-shadow:0 0 0 3px var(--accent),0 0 18px color-mix(in srgb,var(--accent) 55%,transparent)}
/* notification NUMBER badge — top-right corner. Set text + add .on (or data-count) to show. */
.ov-copilot-badge{position:absolute;top:-2px;right:-2px;z-index:4;min-width:20px;height:20px;padding:0 5px;border-radius:11px;
  background:var(--warn,#E5484D);color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;line-height:20px;text-align:center;
  border:2px solid var(--void-2,#0e1013);box-shadow:0 2px 7px rgba(0,0,0,.5);display:none}
.ov-copilot-badge.on{display:block}
/* notification ORB — a pulsing status dot, bottom-right. Add .on to show; set --orb for colour. */
.ov-copilot-orb{position:absolute;bottom:1px;right:1px;z-index:4;width:13px;height:13px;border-radius:50%;
  background:var(--orb,var(--good,#3ED66B));border:2px solid var(--void-2,#0e1013);box-shadow:0 0 9px var(--orb,var(--good,#3ED66B));display:none}
.ov-copilot-orb.on{display:block;animation:ovp-pulse 2.2s ease-in-out infinite}
@keyframes copRing{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.ov-copilot-fab::before{animation:none}}
@media(max-width:560px){.ov-chat#ovPlan{right:8px !important;bottom:78px !important;width:calc(100vw - 16px) !important;height:64vh !important}.ov-copilot-fab{right:8px;bottom:8px}}

/* ══ TALLER TOP — breathing room for the NAV RAIL (logo off the window edge) without dumping that
   same room above the content. Old code padded the whole .app by 26px → too much room above the
   header. Now: only a small app pad (just enough for the fixed HUD to clear the DAY/STREAK stripe),
   the nav rail gets its height from its own padding, and content sits near-normal — like Plan. ══ */
.app{padding-top:8px !important;box-sizing:border-box !important;height:100vh !important}
.sidebar{padding-top:26px !important}
/* HUD pulled up + tight so its stat row clears the DAY/STREAK stripe below (no overlap, no clipped edge) */
.topstat{top:8px !important}
/* modest right gap so the last stat never gets clipped at the window edge; no top padding (was overlapping) */
#topStat{padding:0 8px 0 0 !important;gap:13px !important}
/* Make the TOP (greeting + HUD band) taller so the full-width DAY/STREAK stripe sits clearly BELOW the
   HUD instead of colliding with it. Bar stays full width — only the header band grows. */
.lch-greet{margin-bottom:52px !important}
.ts-res{padding-bottom:0 !important}

/* ══ KARYNA COPILOT · Karyna ⇄ Journal tabs (journal folded in from the calendar) ══ */
.ovp-tabs{display:flex;gap:4px;padding:8px 2px 6px;flex:none}
.ovp-tab{flex:1;font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--ink-4);background:none;border:none;border-radius:7px;padding:7px 8px;cursor:pointer;transition:background .12s,color .12s}
.ovp-tab:hover{color:var(--ink-2)}
.ovp-tab.on{color:var(--accent);background:color-mix(in srgb,var(--accent) 13%,transparent)}
.ovp-chatwrap{flex:1;min-height:0;display:flex;flex-direction:column}
/* pin the composer to the BOTTOM: messages fill the space above, the input sits at the bottom
   even when the chat is empty (margin-top:auto guarantees it regardless of msgs flex behaviour) */
.ov-chat#ovPlan .ovp-chatwrap{flex:1 1 auto !important;min-height:0 !important;display:flex !important;flex-direction:column !important}
.ov-chat#ovPlan .ovp-chatwrap .ovp-msgs{flex:1 1 auto !important;min-height:0 !important;overflow-y:auto !important}
.ov-chat#ovPlan .ovp-chatwrap .ovp-bar{flex:0 0 auto !important;margin-top:auto !important}
.ovp-journal{flex:1;min-height:0;overflow-y:auto;padding:10px 2px 22px}
.ovp-journal .ag-grp{margin-top:2px}
/* ══ KARYNA COMPOSER — match the Map view's clean composer (.bwk-in): rounded-rect input
   + a matching rounded-rect accent send with a CENTERED glyph, aligned in one row ══ */
.ov-chat#ovPlan .ovp-bar{display:flex !important;gap:8px !important;align-items:flex-end !important;padding:12px 14px 14px !important;border-top:1px solid var(--line) !important;background:transparent !important}
.ov-chat#ovPlan .ovp-bar textarea{flex:1 1 auto !important;min-width:0 !important;background:var(--void,#0a0b0d) !important;border:1px solid var(--line-2) !important;border-radius:10px !important;color:var(--ink) !important;font-family:var(--sans) !important;font-size:13px !important;line-height:1.42 !important;padding:11px 13px !important;min-height:44px !important;max-height:160px !important;resize:none !important;overflow-y:auto !important}
.ov-chat#ovPlan .ovp-bar textarea::placeholder{color:var(--ink-4)}
.ov-chat#ovPlan .ovp-bar textarea:focus{outline:none !important;border-color:var(--accent) !important}
.ov-chat#ovPlan .ovp-send{flex:none !important;align-self:flex-end !important;width:44px !important;height:44px !important;min-height:0 !important;border-radius:10px !important;background:var(--accent-2,#2DD4BF) !important;color:#08110F !important;border:none !important;display:grid !important;place-items:center !important;padding:0 !important;clip-path:none !important;cursor:pointer !important;transition:background .12s !important}
.ov-chat#ovPlan .ovp-send:hover{background:var(--accent,#2DD4BF) !important}
.ov-chat#ovPlan .ovp-send .fic{width:17px !important;height:17px !important;display:block !important;color:#08110F !important}

/* ══ HUD REDESIGN — Emblem + live karma orb (dopamine), compact 2 rows so it clears the DAY stripe ══
   The level medal sits inside a circular XP ring that FILLS toward the next level (tier-coloured,
   glowing — so no separate XP bar). Row 1 = rank · XP text. Row 2 (the hero) = karma orb + net number
   that PULSES on every log, then kleos + streak. ── */
.topstat{align-items:center !important;gap:15px !important}
/* SLICK RANK BADGE — circular portrait + a thick glowing tier-coloured XP ring + a level chip.
   (Dropped the thin hex outline — it read cheap.) Tier colour drives ring, chip, and outer glow. */
.ts-emblem{position:relative;width:52px;height:52px;flex:none;--tcol:var(--accent,#2DD4BF);
  filter:drop-shadow(0 0 9px color-mix(in srgb,var(--tcol) 50%,transparent))}
.ts-ring{position:absolute;inset:0;width:52px;height:52px;transform:rotate(-90deg)}   /* fill from 12 o'clock */
.ts-ring circle{fill:none;stroke-width:3.5}
.ts-ring-bg{stroke:rgba(255,255,255,.07)}
.ts-ring-fg{stroke:var(--tcol);stroke-linecap:round;transition:stroke-dashoffset .7s cubic-bezier(.2,.7,.2,1),stroke .3s;filter:drop-shadow(0 0 4px var(--tcol))}
/* circular portrait inside the ring (was a hex clip) */
.topstat .ts-emblem .ts-medal{position:absolute !important;inset:5px !important;width:auto !important;height:auto !important;
  border-radius:50% !important;clip-path:none !important;overflow:hidden;background:#0a0d12 !important;filter:none !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.10),inset 0 6px 14px rgba(0,0,0,.5)}
.topstat .ts-emblem .ts-medal::before{display:none !important}
.topstat .ts-emblem .ts-medal::after{clip-path:none !important;border-radius:50% !important;inset:0 !important;background-size:cover !important;background-position:center top !important}
.topstat .ts-emblem .ts-medal b{font-size:16px !important;color:#fff}
/* level chip — bottom-centre, tier-coloured, glowing (League-style badge) */
.ts-lvchip{position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);z-index:4;display:block;
  font-family:var(--mono);font-size:9.5px;font-weight:700;line-height:1;letter-spacing:.02em;color:#06090d;white-space:nowrap;
  background:var(--tcol);padding:2px 7px;border-radius:6px;border:1px solid rgba(0,0,0,.4);
  box-shadow:0 0 9px color-mix(in srgb,var(--tcol) 60%,transparent),0 2px 4px rgba(0,0,0,.55)}
.ts-rankcol{display:flex;flex-direction:column;gap:9px}
/* row 1 — rank + precise XP, on one baseline */
.ts-line1{display:flex;align-items:center;gap:9px}
.ts-line1 .ts-rank{font-family:var(--sans);font-size:15.5px;font-weight:700;letter-spacing:.01em}
/* VP shown as a subtle tier-tinted chip (colour set inline to the rank tier) */
.ts-xptxt{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.03em;white-space:nowrap;padding:2px 7px;border-radius:5px;background:color-mix(in srgb,currentColor 13%,transparent)}
/* row 2 — karma is the hero, then kleos + streak. Spread out with bigger numbers. */
.ts-karma{display:flex;align-items:center;gap:11px;--kc:#3ED66B}
/* karma symbol — a glowing ☯ that pulses on each log (its own icon, not a plain dot) */
.ts-korb{flex:none;align-self:center;font-size:17px;line-height:1;color:var(--kc);text-shadow:0 0 9px var(--kc);transform-origin:center}
.ts-korb.pulse{animation:tsKorbPulse .7s ease}
@keyframes tsKorbPulse{0%{transform:scale(1)}42%{transform:scale(1.7);text-shadow:0 0 18px var(--kc),0 0 7px var(--kc)}100%{transform:scale(1)}}
.ts-knum{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--kc);line-height:1;letter-spacing:-.01em}
/* today's momentum — sits right beside the big number */
.ts-kmom{font-family:var(--mono);font-size:12px;font-weight:700;margin-left:-2px;align-self:center}
.ts-karma em{font-style:normal;font-family:var(--sans);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
/* karma help — hover explains, click opens the wiki (a normal HUD click still opens the profile) */
.ts-khelp{margin-left:2px;width:15px;height:15px;flex:none;align-self:center;display:grid;place-items:center;padding:0;line-height:1;
  border-radius:50%;border:1px solid var(--line-2);background:none;color:var(--ink-4);font-family:var(--mono);font-size:9.5px;font-weight:700;cursor:help;transition:color .12s,border-color .12s,background .12s}
.ts-khelp:hover{color:var(--ink);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.ts-ksep{color:var(--ink-4);font-size:10px;opacity:.6}
.ts-kleos,.ts-karma .ts-streak{display:inline-flex;align-items:center;gap:4px;font-size:12px}
.ts-kleos{color:var(--gold,#C7A038)}
.ts-kleos b,.ts-karma .ts-streak b{font-family:var(--mono);font-size:14px;font-weight:700}
.ts-karma .ts-streak b{color:var(--ink)}
@media(prefers-reduced-motion:reduce){.ts-korb.pulse{animation:none}}

/* quest cards now header by the WANT they climb toward (not the identity). Muted prompt when unlinked. */
.camp-serves{cursor:pointer}
.camp-serves:hover .cs-lab{text-decoration:underline}
.camp-serves.none .cs-lab{color:var(--ink-4);font-style:italic;opacity:.85}

/* WANT HERO — momentum: velocity toward the want + the #1 blocker (with its weekday pattern) */
.lhm-mom{display:flex;flex-direction:column;gap:5px;margin:12px 0 4px;max-width:640px}
.lhm-vel{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.01em}
.lhm-block{font-family:var(--sans);font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.lhm-block b{color:var(--ink);font-weight:700}

/* HOME · Today's Habits — Today-tab parity: want-group headers, drill sub-steps, expand caret */
.td-wgrp{display:flex;align-items:center;gap:8px;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);padding:12px 2px 6px;border-bottom:1px solid var(--line);margin-top:4px}
.td-wgrp:first-child{margin-top:0}
.td-wgrp .td-wgt{color:var(--ink-2)}
.td-wgrp em{margin-left:auto;font-style:normal;font-family:var(--mono);font-size:10px;color:var(--ink-4)}
.td-wgrp[data-go-want-board]:hover .td-wgt{color:var(--accent)}
.td-caret{flex:none;display:inline-flex;align-items:center;gap:3px;background:none;border:1px solid var(--line-2);border-radius:6px;color:var(--ink-4);font-size:9px;padding:2px 6px;cursor:pointer;margin-left:4px;transition:color .12s,border-color .12s}
.td-caret:hover,.td-caret.on{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.td-caret i{font-style:normal;font-family:var(--mono);font-weight:700;font-size:9px}
.td-drills{display:flex;flex-direction:column;gap:2px;margin:1px 0 8px 34px;padding-left:10px;border-left:1px solid var(--line-2)}
.td-drill{display:flex;align-items:center;gap:9px;padding:3px 0}
.td-drchk{flex:none;width:17px;height:17px;border-radius:5px;border:1px solid var(--line-2);background:none;color:var(--good,#3ED66B);font-size:10px;display:grid;place-items:center;cursor:pointer;transition:background .12s,border-color .12s}
.td-drchk.on{background:color-mix(in srgb,var(--good,#3ED66B) 20%,transparent);border-color:var(--good,#3ED66B)}
.td-drt{font-family:var(--sans);font-size:12.5px;color:var(--ink-2)}
.td-drt.done{color:var(--ink-4);text-decoration:line-through}

/* HOME · TODAY — quests (choose focus) + Do (good) / Don't (vices), like the Today tab */
.td-sec{margin-bottom:15px}
.td-sech{display:flex;align-items:center;gap:8px;font-family:var(--sans);font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:5px 2px;border-bottom:1px solid var(--line);margin-bottom:5px}
.td-sech.do{color:var(--good,#3ED66B)}
.td-sech.dont{color:var(--bad,#E5484D)}
.td-sech em{margin-left:auto;font-style:normal;font-family:var(--mono);font-size:10px;font-weight:600;color:var(--ink-4);letter-spacing:0;text-transform:none}
.td-qrow{display:flex;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px solid var(--line-3)}
.td-qrow.pri{background:linear-gradient(90deg,color-mix(in srgb,#ECC94B 8%,transparent),transparent 70%)}
.td-qstar{flex:none;background:none;border:none;color:var(--ink-4);font-size:14px;cursor:pointer;padding:0;line-height:1;transition:color .12s}
.td-qstar.on{color:#ECC94B;text-shadow:0 0 8px color-mix(in srgb,#ECC94B 60%,transparent)}
.td-qt{flex:1;min-width:0;font-family:var(--sans);font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.td-qt:hover{color:var(--accent)}
.td-qdl{flex:none;font-family:var(--mono);font-size:9.5px;letter-spacing:.03em;color:var(--ink-4);white-space:nowrap}
.td-qdl.tl-overdue{color:var(--bad,#E5484D)}.td-qdl.tl-soon,.td-qdl.tl-today{color:#ECC94B}
.td-qlog{flex:none;width:23px;height:23px;border-radius:6px;border:1px solid var(--line-2);background:none;color:var(--ink-3);font-size:14px;display:grid;place-items:center;cursor:pointer;transition:color .12s,border-color .12s}
.td-qlog:hover{color:var(--accent);border-color:var(--accent)}
.td-qmore{width:100%;text-align:left;background:none;border:none;color:var(--ink-4);font-family:var(--sans);font-size:11px;padding:7px 2px;cursor:pointer}
.td-qmore:hover{color:var(--ink-2)}

/* Home Today's Habits — light link into the full Today tab */
.lch-seclink{float:right;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--accent-2,#2DD4BF);cursor:pointer;letter-spacing:.01em}
.lch-seclink:hover{color:var(--accent)}

/* ── The Man You're Becoming — Home traits duality (virtues rising · vices eating at you) ── */
.lch-forge{margin:16px 0 4px}
.frg-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:9px}
.frg-title{font-family:var(--sans);font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.frg-link{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--accent-2,#2DD4BF);cursor:pointer;letter-spacing:.01em}
.frg-link:hover{color:var(--accent)}
.frg-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:720px){.frg-grid{grid-template-columns:1fr}}
.frg-col{border:1px solid var(--line-2);border-radius:12px;background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 2%,transparent),transparent);padding:11px 12px 6px;position:relative;overflow:hidden}
.frg-col::before{content:'';position:absolute;inset:0 auto 0 0;width:2px}
.frg-col.asc::before{background:linear-gradient(180deg,#3ED66B,transparent)}
.frg-col.shd::before{background:linear-gradient(180deg,#E5484D,transparent)}
.frg-colh{display:flex;align-items:center;gap:7px;font-family:var(--sans);font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid var(--line-3)}
.frg-colh em{margin-left:auto;font-style:normal;font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.02em;text-transform:none;color:var(--ink-4)}
.frg-arw{font-size:13px;line-height:1;font-weight:900}
.frg-arw.up{color:#3ED66B}.frg-arw.dn{color:#E5484D}
.frg-row{display:flex;align-items:center;gap:10px;padding:8px 3px;border-bottom:1px solid var(--line-3);cursor:pointer;transition:background .12s}
.frg-row:last-child{border-bottom:none}
.frg-row:hover{background:color-mix(in srgb,var(--rc,var(--accent)) 8%,transparent)}
.frg-sig{flex:none;width:30px;height:30px;display:grid;place-items:center}
.frg-sig svg,.frg-sig canvas{width:28px;height:28px}
.frg-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.frg-name{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.frg-meter{display:flex;gap:3px}
.frg-seg{flex:1;height:4px;border-radius:2px;background:var(--line-2);overflow:hidden}
.frg-seg.on{background:var(--rc,var(--accent))}
.frg-seg i{display:block;height:100%;background:var(--rc,var(--accent))}
.frg-gripbar{height:4px;border-radius:2px;background:var(--line-2);overflow:hidden}
.frg-gripbar i{display:block;height:100%;background:linear-gradient(90deg,#E5484D,#F5842A)}
.frg-side{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right}
.frg-stage{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.01em}
.frg-mom{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.02em}
.frg-mom.up{color:#3ED66B}.frg-mom.flat{color:var(--ink-4)}.frg-mom.none{color:var(--ink-4);opacity:.75}
.frg-grip{font-family:var(--mono);font-size:10px;font-weight:600;color:#E5484D;letter-spacing:.02em}
.frg-grip b{font-size:12px}
.frg-clean{font-family:var(--mono);font-size:10.5px;font-weight:700;color:#3ED66B;letter-spacing:.02em}
.frg-spark{width:52px;height:15px;display:block}
.frg-empty{padding:12px 3px;font-family:var(--sans);font-size:12px;color:var(--ink-4)}
.frg-empty a{color:var(--accent-2,#2DD4BF);cursor:pointer;font-weight:600}
.frg-empty a:hover{color:var(--accent)}

/* ══ Home hero rebuild — wants as "stocks" (row 1) · trait tiles (row 2) · compact rite (top-right) ══ */
/* hero-main is now a vertical stack of two rows, not a framed carousel */
.lch-hero-main{min-height:0 !important;border:none !important;overflow:visible !important;display:flex !important;flex-direction:column !important;gap:11px !important;background:none !important;position:static !important}

/* ── Row 1: WANT STOCK CARDS ── */
.lch-stocks{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;padding:1px 1px 5px;scrollbar-width:thin;scroll-snap-type:x proximity}
.lch-stocks::-webkit-scrollbar{height:6px}.lch-stocks::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}
.stk{flex:0 0 auto;width:196px;display:flex;flex-direction:column;gap:7px;text-align:left;cursor:pointer;scroll-snap-align:start;
  padding:11px 12px 10px;border:1px solid var(--line-2);border-radius:12px;background:linear-gradient(180deg,color-mix(in srgb,var(--rc,var(--accent)) 9%,transparent),color-mix(in srgb,var(--ink) 3%,transparent));
  position:relative;overflow:hidden;transition:border-color .12s,transform .12s}
.stk::before{content:'';position:absolute;inset:0 auto 0 0;width:3px;background:var(--rc,var(--accent))}
.stk:hover{border-color:var(--rc,var(--accent));transform:translateY(-1px)}
.stk-top{display:flex;align-items:center;gap:6px;min-width:0}
.stk-star{flex:none;background:none;border:none;color:var(--ink-4);font-size:12px;line-height:1;cursor:pointer;padding:0;transition:color .12s}
.stk-star.on{color:#ECC94B;text-shadow:0 0 7px color-mix(in srgb,#ECC94B 55%,transparent)}
.stk-tick{flex:1;min-width:0;font-family:var(--sans);font-size:11.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stk-mid{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.stk-price{font-family:var(--mono);font-size:25px;font-weight:700;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}
.stk-price small{font-size:12px;font-weight:600;color:var(--ink-3);margin-left:1px}
.stk-chg{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.01em;white-space:nowrap}
.stk-chg.up{color:#3ED66B}.stk-chg.down{color:#E9603A}.stk-chg.flat{color:var(--ink-4)}
.stk-foot{display:flex;align-items:center;gap:8px}
.stk-spark{width:56px;height:16px;flex:none}
.stk-vol{font-family:var(--mono);font-size:9.5px;letter-spacing:.02em;color:var(--ink-4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stk-empty{align-items:flex-start;justify-content:center;gap:5px;width:auto;min-width:230px}
.stk-empty .stk-emptytxt{font-family:var(--sans);font-size:11px;font-weight:500;color:var(--ink-4);text-transform:none;letter-spacing:0}

/* ── Row 2: TRAIT TILE STRIP (virtues lvl · vices grip) ── */
.lch-traitstrip{display:flex;gap:7px;overflow-x:auto;overflow-y:hidden;padding:1px 1px 4px;scrollbar-width:thin}
.lch-traitstrip::-webkit-scrollbar{height:5px}.lch-traitstrip::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}
.trs-tile{flex:0 0 auto;display:flex;align-items:center;gap:7px;cursor:pointer;
  padding:6px 9px 6px 7px;border:1px solid var(--line-2);border-radius:9px;background:color-mix(in srgb,var(--rc,var(--accent)) 7%,transparent);
  transition:border-color .12s,background .12s}
.trs-tile:hover{border-color:var(--rc,var(--accent));background:color-mix(in srgb,var(--rc,var(--accent)) 14%,transparent)}
.trs-tile.vice{border-style:dashed}
.trs-sig{flex:none;width:22px;height:22px;display:grid;place-items:center}
.trs-sig svg,.trs-sig canvas{width:20px;height:20px}
.trs-name{font-family:var(--sans);font-size:12px;font-weight:700;color:var(--ink);white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.trs-badge{flex:none;font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.02em;padding:2px 5px;border-radius:5px;line-height:1}
.trs-badge.lv{color:var(--rc,var(--accent));background:color-mix(in srgb,var(--rc,var(--accent)) 16%,transparent)}
.trs-badge.grip{color:#E5484D;background:color-mix(in srgb,#E5484D 15%,transparent)}
.trs-empty{display:inline-flex;font-family:var(--sans);font-size:12px;color:var(--accent-2,#2DD4BF);cursor:pointer;font-weight:600;padding:4px 2px}
.trs-empty:hover{color:var(--accent)}

/* ── Compact DAILY RITE — status tile, tap to expand ── */
.rite-stattile{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;cursor:pointer;padding:11px 13px;text-align:left}
.rite-stattile .rst-h{flex:none;font-family:var(--sans);font-size:10.5px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:#0A0A0B !important;writing-mode:vertical-rl;transform:rotate(180deg);opacity:.55}
.rst-rows{flex:1;display:flex;flex-direction:column;gap:5px;min-width:0}
.rst-row{display:flex;align-items:center;gap:8px;min-width:0}
.rst-row .rst-dot{flex:none;width:11px;height:11px;border-radius:50%;border:1.5px solid rgba(10,10,11,.35);box-sizing:border-box}
.rst-row.on .rst-dot{background:#1e9e57 !important;border-color:#1e9e57 !important;box-shadow:0 0 7px rgba(30,158,87,.5)}
.rst-row.active .rst-dot{border-color:#c98a2a !important;background:transparent;box-shadow:0 0 6px rgba(201,138,42,.5)}
.rst-row .rst-lab{font-family:var(--sans);font-size:13px;font-weight:700;color:#14130F !important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rst-row.on .rst-lab{color:#1a1814 !important}
.rst-caret{flex:none;font-size:12px;color:#0A0A0B !important;opacity:.5;transition:transform .18s}
.lch-hero-rite.open .rst-caret{transform:rotate(90deg)}
.rite-body{display:none;padding:0 13px 13px}
.lch-hero-rite.open .rite-body{display:block}
.lch-hero-rite.open .rite-stattile{border-bottom:1px solid rgba(10,10,11,.12)}

.lch-hero-rite .rite-card{padding:0 !important;overflow:hidden}

/* ══ Home hero v3 — KEEP the banner (left) · wants WATCHLIST + compact rite (right) ══ */
.lch-hero-main{min-height:0 !important;border:none !important;overflow:visible !important;display:flex !important;flex-direction:column !important;gap:10px !important;background:none !important;position:static !important}
.lhm-frame{position:relative;flex:none;height:288px;display:flex;border:1px solid var(--line-2);border-radius:12px;overflow:hidden}
.lhm-frame .lhm-slide,.lhm-frame .lhm-poster{height:100%}
@media(max-width:1050px){.lhm-frame{height:240px}}
/* right column: compact rite on top, watchlist filling below */
.lch-hero-rite{display:flex !important;flex-direction:column;gap:10px}
.lch-hero-rite .rite-card{flex:none}
/* WANTS WATCHLIST — slim "stock" rows */
.lch-watchlist{flex:1;min-height:120px;display:flex;flex-direction:column;gap:1px;border:1px solid var(--line-2);border-radius:12px;background:color-mix(in srgb,var(--ink) 2.5%,transparent);padding:5px;overflow-y:auto;scrollbar-width:thin}
.lch-watchlist::-webkit-scrollbar{width:6px}.lch-watchlist::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}
.wl-h{display:flex;justify-content:space-between;align-items:baseline;padding:4px 7px 6px;font-family:var(--sans);font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.wl-h span{font-family:var(--mono);font-size:8.5px;font-weight:500;letter-spacing:.02em;text-transform:none;color:var(--ink-4)}
.wl-row{display:flex;align-items:center;gap:8px;width:100%;text-align:left;cursor:pointer;background:none;border:none;border-radius:8px;padding:8px;transition:background .12s}
.wl-row:hover{background:color-mix(in srgb,var(--rc,var(--accent)) 11%,transparent)}
.wl-row.on{background:color-mix(in srgb,var(--rc,var(--accent)) 16%,transparent);box-shadow:inset 2px 0 0 var(--rc,var(--accent))}
.wl-dot{flex:none;width:7px;height:7px;border-radius:50%}
.wl-tick{flex:1;min-width:110px;font-family:var(--sans);font-size:12px;font-weight:700;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;line-height:1.24;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.wl-spark{width:40px;height:14px;flex:none}
.wl-price{flex:none;font-family:var(--mono);font-size:14px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;min-width:40px;text-align:right}
.wl-price small{font-size:9px;font-weight:600;color:var(--ink-3);margin-left:1px}
.wl-chg{flex:none;font-family:var(--mono);font-size:11px;font-weight:700;min-width:36px;text-align:right}
.wl-chg.up{color:#3ED66B}.wl-chg.down{color:#E9603A}.wl-chg.flat{color:var(--ink-4)}
.wl-empty{width:100%;background:none;border:1px dashed var(--line-2);border-radius:8px;color:var(--ink-4);font-family:var(--sans);font-size:12px;padding:16px;cursor:pointer}
.wl-empty:hover{color:var(--accent);border-color:var(--accent)}

/* ══ Home hero v4 — banner full-width; wants WATCHLIST + compact rite OVERLAY the banner's right (matches the scribble); traits move to the bottom-right ══ */
.lch-hero{display:block !important;position:relative}
.lch-hero-main{width:100% !important}
.lch-hero-rite{position:absolute !important;top:0;right:0;width:342px;max-width:46%;height:288px;display:flex !important;flex-direction:column;gap:8px;padding:10px;
  background:linear-gradient(90deg,rgba(9,9,12,0),rgba(9,9,12,.80) 18%,rgba(9,9,12,.96));border-radius:0 12px 12px 0;box-sizing:border-box;z-index:3}
.lch-hero-rite .rite-card{flex:none}
.lch-watchlist{flex:1;min-height:0;background:rgba(255,255,255,.03);border-color:rgba(255,255,255,.1);border-radius:0;clip-path:polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%)}
.wl-h{color:rgba(255,255,255,.62)}
@media(max-width:820px){
  .lch-hero{display:block !important}
  .lch-hero-rite{position:static !important;width:auto;max-width:none;height:auto;background:none;padding:0;border-radius:0;margin-top:10px}
  .lch-watchlist{min-height:140px}
}
/* Traits now live in the bottom-right column (where Trends was) — tiles WRAP, no horizontal scroll */
.lch-col .lch-traitstrip{flex-wrap:wrap;overflow:visible !important;padding:0;gap:8px;align-content:flex-start}

/* ══ Home hero v5 — polish: banner title fit · dark-glass rite · roomier watchlist · FAB clearance ══ */
/* 1. banner title must never clip: keep the copy in the left half (clear of the overlay), cap size, clamp to 2 lines */
.lch-hero-main .lhm-body{padding:18px 22px !important;max-width:58% !important}
.lch-hero-main .lhm-name{font-size:25px !important;line-height:1.22 !important;padding-bottom:4px;overflow:visible !important;display:block !important;-webkit-line-clamp:unset !important}
.lch-hero-main .lhm-desc{margin-top:8px !important;max-width:100% !important}
.lch-hero-main .lhm-actions{margin-top:13px !important}
.lch-hero-main .lhm-mom{margin-top:8px}
@media(max-width:820px){.lch-hero-main .lhm-body{max-width:100% !important}}

/* 2. Daily Rite tile → dark glass, belongs to the overlay (was a bright white slab) */
.lch-hero-rite .rite-card{background:rgba(18,19,24,.66) !important;border:1px solid rgba(255,255,255,.13) !important;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);border-radius:10px !important}
.lch-hero-rite .rite-card,.lch-hero-rite .rite-card *{color:#E6E8EB !important}
.lch-hero-rite .rst-h{color:rgba(255,255,255,.42) !important}
.lch-hero-rite .rst-caret{color:rgba(255,255,255,.5) !important}
.lch-hero-rite .hcard-sub,.lch-hero-rite .rite-step,.lch-hero-rite .rite-mini,.lch-hero-rite .fc-hint,.lch-hero-rite .rite-state-sub{color:rgba(255,255,255,.5) !important}
.lch-hero-rite .rite-vow,.lch-hero-rite .rite-cap{background:rgba(255,255,255,.06) !important;border-color:rgba(255,255,255,.14) !important;color:#fff !important}
.lch-hero-rite .rite-vow::placeholder,.lch-hero-rite .rite-cap::placeholder{color:rgba(255,255,255,.4) !important}
.lch-hero-rite .rite-card .btn{background:var(--accent,#2DD4BF) !important;color:#08131a !important;border-color:transparent !important}
.lch-hero-rite .rite-card .btn.ghost{background:rgba(255,255,255,.08) !important;color:#E6E8EB !important;border:1px solid rgba(255,255,255,.18) !important}
.lch-hero-rite .rst-dot{border-color:rgba(255,255,255,.38) !important}
.lch-hero-rite .rst-row.on .rst-dot{background:#3ED66B !important;border-color:#3ED66B !important;box-shadow:0 0 8px rgba(62,214,107,.55)}
.lch-hero-rite .rst-row.active .rst-dot{border-color:#F0B23C !important;box-shadow:0 0 7px rgba(240,178,60,.55)}
.lch-hero-rite.open .rite-stattile{border-bottom:1px solid rgba(255,255,255,.12) !important}

/* 3. watchlist rows — more room for the want name, smaller spark, a touch more air */
.lch-hero-rite{width:404px !important;max-width:54% !important}
.wl-row{padding:9px 8px !important;gap:7px;align-items:flex-start}
.wl-tick{font-size:12.5px}
.wl-spark{width:30px !important}
.wl-price{min-width:34px}
.wl-chg{min-width:32px;font-size:10.5px}

/* 4. clear the Karyna portrait FAB so the last trait row isn't covered */
.lch-cols{padding-bottom:84px}

/* ══ Daily Rite → lives IN the white bar: pulsing red/green indicator + click the bar to expand ══ */
.lch-ritebar{position:relative}
.lch-substripe{cursor:pointer;user-select:none}
.strip-rite{margin-left:auto !important;display:flex;align-items:center;gap:8px;padding-right:12px;letter-spacing:.14em !important}
.strip-rite .sr-lab{color:#0A0A0B}
.strip-rite .sr-dot{width:9px;height:9px;border-radius:50%;flex:none}
.strip-rite .sr-caret{font-size:10px;color:rgba(10,10,11,.5);transition:transform .18s;font-family:var(--sans)}
.lch-ritebar.open .strip-rite .sr-caret{transform:rotate(90deg)}
.sr-fresh .sr-dot{background:#E5484D;animation:srPulseR 1.4s ease-in-out infinite}
.sr-fresh .sr-lab{color:#b02a20}
.sr-clocked .sr-dot{background:#E08A1E;animation:srPulseA 1.4s ease-in-out infinite}
.sr-clocked .sr-lab{color:#9a5e12}
.sr-sealed .sr-dot{background:#1f9152;animation:srPulseG 2.2s ease-in-out infinite}
.sr-sealed .sr-lab{color:#137a41}
@keyframes srPulseR{0%,100%{box-shadow:0 0 0 0 rgba(229,72,77,.55)}50%{box-shadow:0 0 0 6px rgba(229,72,77,0)}}
@keyframes srPulseA{0%,100%{box-shadow:0 0 0 0 rgba(224,138,30,.55)}50%{box-shadow:0 0 0 6px rgba(224,138,30,0)}}
@keyframes srPulseG{0%,100%{box-shadow:0 0 0 0 rgba(31,145,82,.5)}50%{box-shadow:0 0 0 5px rgba(31,145,82,0)}}
/* the panel drops open below the bar (paper, continues the white bar) */
.rite-panel{max-height:0;overflow:hidden;transition:max-height .28s ease;background:var(--ink);border-radius:0 0 9px 9px}
.lch-ritebar.open .rite-panel{max-height:560px}
#ritePanel .rite-card{background:transparent !important;border:none !important;padding:14px 18px 18px !important}
#ritePanel .rite-body{display:block !important}

/* ══ Home stats row — consistency graph (left) + donut charts (right); traits move full-width below ══ */
.lch-statcols{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr) !important;padding-bottom:0 !important}
@media(max-width:820px){.lch-statcols{grid-template-columns:1fr !important}}
/* consistency graph */
.lch-consistency{border:1px solid var(--line-2);border-radius:12px;background:color-mix(in srgb,var(--ink) 2.5%,transparent);padding:14px 15px 11px}
.cons-kpis{display:flex;gap:26px;margin-bottom:15px}
.cons-kpi b{font-family:var(--mono);font-size:23px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;display:block;line-height:1;margin-bottom:3px}
.cons-kpi b small{font-size:12px;color:var(--ink-3)}
.cons-kpi span{font-family:var(--sans);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4)}
.cons-bars{display:flex;align-items:flex-end;gap:3px;height:92px}
.cons-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%}
.cons-track{flex:1;width:100%;display:flex;align-items:flex-end;min-height:0}
.cons-track i{width:100%;border-radius:2px;display:block}
.cons-track .cl-0{background:rgba(255,255,255,.06)}
.cons-track .cl-1{background:color-mix(in srgb,var(--accent) 38%,transparent)}
.cons-track .cl-2{background:color-mix(in srgb,var(--accent) 68%,transparent)}
.cons-track .cl-3{background:var(--accent)}
.cons-lab{font-family:var(--mono);font-size:8px;color:var(--ink-4);height:9px;line-height:1}
/* donut pies */
.lch-pies{display:flex;flex-direction:row;gap:10px;align-items:stretch}
.pie-card{flex:1 1 0;min-width:0;position:relative;border:0;border-radius:0;background:transparent;padding:2px 4px 4px}
.pie-card::before{display:none}
.pie-card>*{position:relative;z-index:1}
.pc-want{--pcedge:#2DD4BF}.pc-good{--pcedge:#3ED66B}.pc-bad{--pcedge:#E5484D}
.pie-h{display:flex;align-items:center;gap:9px;font-family:var(--sans);font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);margin-bottom:12px}
.pie-h::before{display:none}
.pie-concept{font-family:var(--sans);font-size:10.5px;font-weight:500;letter-spacing:.01em;color:var(--ink-3);margin:-6px 0 13px}
/* legend row glyph — the category symbol, coloured per item */
.pie-gly{flex:none;width:16px;text-align:center;font-size:12.5px;line-height:1}
/* three donuts side by side — donut on top, legend below, per card */
.lch-pies .pie-unit{flex-direction:column;align-items:center;gap:12px}
.lch-pies .pie-svg{width:108px;height:108px}
.lch-pies .pie-legend{width:100%;gap:8px}
.pie-unit{display:flex;align-items:center;gap:20px}
.pie-svg{width:120px;height:120px;flex:none}
.pie-legend{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.pie-row{display:flex;align-items:center;gap:9px;font-family:var(--sans);font-size:13px;cursor:default}
.pie-row .pie-sw{width:10px;height:10px;border-radius:3px;flex:none}
.pie-name{flex:1;min-width:0;color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pie-val{flex:none;font-family:var(--mono);font-size:13.5px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.pie-pct{flex:none;min-width:34px;text-align:right;font-family:var(--mono);font-size:11px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.pie-row.more{color:var(--ink-3);font-size:11px;font-family:var(--mono);padding-left:19px}
.pie-row:hover .pie-name{color:#fff}
.pie-chips{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:5px 10px;align-content:center}
.pie-chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:12.5px;font-weight:700;color:var(--ink-2);cursor:default;font-variant-numeric:tabular-nums;transition:color .12s}
.pie-chip .pie-sw{width:9px;height:9px;border-radius:2px;flex:none}
.pie-chip:hover{color:var(--ink)}
.pie-chip.more{color:var(--ink-4);font-weight:600}
/* action breakdown — ONE card with a tab switcher (not 3 stacked rows) */
.pie-tabs{display:flex;gap:4px;margin-bottom:14px}
.pie-tab{flex:1;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-4);background:rgba(255,255,255,.03);border:1px solid var(--line-2);border-radius:7px;padding:6px 4px;cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.pie-tab:hover{color:var(--ink-2)}
.pie-tab.on{color:var(--ink);border-color:color-mix(in srgb,var(--accent-2,#2DD4BF) 45%,var(--line-2));background:color-mix(in srgb,var(--accent-2,#2DD4BF) 12%,transparent)}
/* action breakdown — readable ranked bar list (name · bar · count · %). High contrast, no faint text. */
.brk-total{font-family:var(--sans);font-size:12px;color:var(--ink-2);margin-bottom:15px}
.brk-total b{font-family:var(--mono);font-size:17px;font-weight:700;color:var(--ink);margin-right:3px}
.brk-list{display:flex;flex-direction:column;gap:13px}
.brk-row{display:flex;flex-direction:column;gap:6px;cursor:default}
.brk-top{display:flex;align-items:baseline;gap:10px}
.brk-lbl{flex:1;min-width:0;font-family:var(--sans);font-size:13.5px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brk-v{flex:none;font-family:var(--mono);font-size:14px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.brk-p{flex:none;font-family:var(--mono);font-size:11px;color:var(--ink-2);min-width:34px;text-align:right;font-variant-numeric:tabular-nums}
.brk-track{height:6px;border-radius:3px;background:rgba(255,255,255,.06);overflow:hidden}
.brk-track i{display:block;height:100%;border-radius:3px;min-width:4px}
.brk-more{font-family:var(--mono);font-size:11px;color:var(--ink-3);padding-top:2px}
.brk-empty{color:var(--ink-3);font-size:12px;padding:14px 0}
.brk-row:hover .brk-lbl{color:#fff}
/* home momentum — reuse the Today karma chart, flush in the panel (no plopped-on card bg) */
.hm-perf{margin-top:4px !important;background:none !important;border:none !important;padding:6px 0 0 !important}
.hm-perf .ag-perf-plot{height:150px}
.hm-perf .ag-perf-yax{color:var(--ink-3)}
.pie-ctr-b{fill:var(--ink);font-family:var(--mono);font-size:21px;font-weight:700}
.pie-ctr-s{fill:var(--ink-2);font-family:var(--sans);font-size:9px;letter-spacing:.05em;text-transform:uppercase}
.pie-leg{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.pie-li{display:flex;align-items:center;gap:8px;font-family:var(--sans);font-size:11.5px}
.pie-sw{width:9px;height:9px;border-radius:2px;flex:none}
.pie-ll{flex:1;min-width:0;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pie-lv{flex:none;min-width:22px;text-align:right;font-family:var(--mono);font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.pie-lp{flex:none;min-width:30px;text-align:right;font-family:var(--mono);font-size:9.5px;color:var(--ink-4);font-variant-numeric:tabular-nums}
.pie-li{cursor:default}
.pie-li.more{color:var(--ink-4);font-size:10px}
.pie-sw.more-sw{background:var(--line-2)}
.pie-arc{transition:opacity .13s,stroke-width .13s}
.pie-svg:hover .pie-arc{opacity:.32}
.pie-arc:hover{opacity:1 !important;stroke-width:17.5}
.pie-empty{color:var(--ink-4);font-family:var(--sans);font-size:12px;padding:24px 0;text-align:center}
/* traits strip full-width below the stats row */
.lch-sec-traits{margin-top:24px}
.launcher{padding-bottom:92px}

/* ══ v6 polish — wants square icons · banner title fit · cooler seal-the-rite pill ══ */
/* wants watchlist rows get a square sigil icon (replaces the plain dot) */
.wl-sig{flex:none;width:21px;height:21px;display:grid;place-items:center}
.wl-sig svg,.wl-sig canvas{width:19px;height:19px}
.wl-row{gap:8px}
/* realm line-icon (leads the watchlist row; tinted with the realm colour via currentColor) */
.realm-ic{display:block}
.wl-realm{flex:none;width:20px;height:20px;display:grid;place-items:center;opacity:.92}
.wl-realm .realm-ic{width:18px;height:18px}
/* banner title smaller so the 2-line clamp always fits the fixed 288 frame (no clipping) */
.lch-hero-main .lhm-name{font-size:22px !important;line-height:1.16 !important}
.lch-hero-main .lhm-desc{font-size:12px !important}
/* seal-the-rite → a cooler tinted pill badge, colored by state */
.strip-rite{margin-left:auto !important;gap:7px !important;padding:3px 10px 3px 9px !important;border-radius:20px;border:1px solid transparent;transition:background .15s,filter .15s}
.strip-rite .sr-caret{margin-left:1px}
.sr-fresh{background:rgba(229,72,77,.12);border-color:rgba(229,72,77,.34)}
.sr-clocked{background:rgba(224,138,30,.14);border-color:rgba(224,138,30,.36)}
.sr-sealed{background:rgba(31,145,82,.13);border-color:rgba(31,145,82,.34)}
.lch-substripe:hover .strip-rite{filter:brightness(1.06)}

/* ══ v7 — Momentum: time-filter pills · action graph (sg-) · trend reader (trd-) ══ */
.sec-sub{margin-left:8px;font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.02em;text-transform:none;color:var(--ink-4)}
/* Week / Month / Year filter */
.stat-range{margin-left:auto;display:inline-flex;gap:2px;background:color-mix(in srgb,var(--ink) 6%,transparent);border:1px solid var(--line-2);border-radius:8px;padding:2px}
.stat-range button{font-family:var(--sans);font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--ink-4);background:none;border:none;border-radius:6px;padding:4px 10px;cursor:pointer;transition:background .12s,color .12s}
.stat-range button:hover{color:var(--ink-2)}
.stat-range button.on{background:var(--accent);color:#08131a}
/* action graph */
.lch-consistency{border:1px solid var(--line-2);border-radius:12px;background:color-mix(in srgb,var(--ink) 2.5%,transparent);padding:14px 15px 11px}
/* ══ THE SYSTEM dashboard — its own tab (Energy → Focus → Motivation, gated in order) ══ */
#view-system{overflow-y:auto}
.sysd-wrap{max-width:920px;margin:0 auto;padding:10px 6px 70px}
.sysd-eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-4);margin-bottom:9px}
.sysd-hero h1{font-family:var(--disp,var(--sans));font-weight:800;font-size:clamp(28px,4vw,40px);line-height:1.02;text-transform:uppercase;letter-spacing:.01em;color:var(--ink);margin:0 0 13px}
.sysd-hero p{font-family:var(--sans);font-size:15px;line-height:1.6;color:var(--ink-2);max-width:70ch;margin:0 0 26px}
.sysd-hero p b{color:var(--ink)}
.sysd-directive{display:flex;gap:14px;align-items:center;padding:16px 18px;margin:0 0 26px;position:relative;background:var(--brd-2);clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%)}
.sysd-directive::before{content:"";position:absolute;inset:1px;z-index:0;background:color-mix(in srgb,#E5484D 8%,var(--void-2));clip-path:polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%)}
.sysd-directive.done::before{background:color-mix(in srgb,#3ED66B 8%,var(--void-2))}
.sysd-directive>*{position:relative;z-index:1}
.sysd-dnum{flex:none;width:38px;height:38px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:700;font-size:18px;color:#0a0b0d;background:#E5484D;transform:skewX(-10deg)}
.sysd-directive.done .sysd-dnum{background:#3ED66B}
.sysd-dh{font-family:var(--sans);font-size:14px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;color:var(--ink);margin-bottom:3px}
.sysd-dt{font-family:var(--sans);font-size:13px;line-height:1.5;color:var(--ink-2)}
.sysd-pillars{display:flex;flex-direction:column;gap:14px}
.sysd-pillar{position:relative;padding:18px 20px 16px;background:var(--brd-2);clip-path:polygon(0 0,100% 0,100% calc(100% - 15px),calc(100% - 15px) 100%,0 100%);transition:opacity .18s}
.sysd-pillar::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%)}
.sysd-pillar>*{position:relative;z-index:1}
.sysd-pillar.gate{background:var(--sc)}
.sysd-pillar.gate::before{background:color-mix(in srgb,var(--sc) 9%,var(--void-2))}
.sysd-pillar.locked{opacity:.45}
.sysd-phd{display:flex;align-items:center;gap:13px;margin-bottom:13px}
.sysd-pnum{flex:none;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:700;font-size:15px;color:#0a0b0d;background:var(--sc);transform:skewX(-10deg)}
.sysd-pk{flex:1;font-family:var(--sans);font-size:17px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;color:var(--ink);display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.sysd-pk span{font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.sysd-plv{flex:none;text-align:right;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);line-height:1.25}
.sysd-plv b{display:block;font-size:23px;font-weight:700;color:var(--sc);letter-spacing:0;line-height:1.05}
.sysd-lock{flex:none;font-family:var(--sans);font-size:11px;color:var(--ink-3)}
.sysd-ptrack{height:9px;border-radius:5px;background:rgba(255,255,255,.07);overflow:hidden;margin-bottom:13px}
.sysd-ptrack i{display:block;height:100%;background:var(--sc);border-radius:5px;min-width:4px;box-shadow:0 0 12px -2px var(--sc)}
.sysd-xp{height:4px;border-radius:2px;background:rgba(255,255,255,.06);overflow:hidden;margin:0 0 15px}
.sysd-xp i{display:block;height:100%;background:var(--sc);border-radius:2px;opacity:.65}
.sysd-suggest{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line-2)}
.sysd-slbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);margin-right:2px}
.sysd-diag{font-family:var(--sans);font-size:12.5px;font-weight:600;margin:0 0 15px;padding:9px 12px;border-radius:8px;line-height:1.45}
.sysd-diag.bad{color:#E5484D;background:color-mix(in srgb,#E5484D 11%,transparent)}
.sysd-diag.warn{color:#ECC94B;background:color-mix(in srgb,#ECC94B 10%,transparent)}
.sysd-diag.good{color:#3ED66B;background:color-mix(in srgb,#3ED66B 10%,transparent)}
.sysd-proto{border-top:1px solid var(--line-2);padding-top:13px}
.sysd-plbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin-bottom:10px}
.sysd-item{display:flex;align-items:center;gap:11px;padding:7px 0;font-family:var(--sans);font-size:13.5px}
.sysd-item+.sysd-item{border-top:1px solid rgba(255,255,255,.05)}
.sysd-ick{flex:none;width:19px;height:19px;display:flex;align-items:center;justify-content:center;border-radius:5px;font-size:11px;font-weight:700}
.sysd-item.held .sysd-ick{background:color-mix(in srgb,#3ED66B 20%,transparent);color:#3ED66B}
.sysd-item.slip .sysd-ick{background:color-mix(in srgb,#E5484D 22%,transparent);color:#E5484D}
.sysd-item.un .sysd-ick{background:rgba(255,255,255,.06);color:var(--ink-4)}
.sysd-il{flex:1;min-width:0;color:var(--ink);font-weight:500}
.sysd-item.un .sysd-il{color:var(--ink-3)}
.sysd-itrack{flex:none;width:84px;height:5px;border-radius:3px;background:rgba(255,255,255,.07);overflow:hidden}
.sysd-itrack i{display:block;height:100%;border-radius:3px;min-width:3px}
.sysd-idet{flex:none;min-width:58px;text-align:right;font-family:var(--mono);font-size:11px;color:var(--ink-2)}
.sysd-track{flex:none;font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--sc);background:none;border:1px solid color-mix(in srgb,var(--sc) 40%,var(--line-2));border-radius:6px;padding:3px 10px;cursor:pointer;transition:background .12s}
.sysd-track:hover{background:color-mix(in srgb,var(--sc) 13%,transparent)}
@media(max-width:600px){.sysd-itrack{width:52px}.sysd-idet{min-width:44px}}
/* ══ merged HOME bar (WHITE) — Day + Energy/Focus/Motivation; expand → 7/3 split: stats · Daily Rite ══ */
.sysbar{margin-bottom:0}
.sb-head{display:flex;align-items:center;gap:16px;cursor:pointer;padding:12px 16px;background:#EDEFF1;color:#0A0A0B;transition:background .12s;clip-path:polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%)}
.sb-head:hover{background:#E3E6E9}
.lch-ritebar.open .sb-head{clip-path:none}
.sb-day{flex:none;font-family:var(--disp,var(--sans));font-weight:800;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#0A0A0B;padding-right:15px;margin-right:2px;border-right:1px solid rgba(10,10,11,.18)}
.sb-pill{display:flex;align-items:center;gap:8px;flex:1 1 0;min-width:0}
.sb-pk{flex:none;font-family:var(--sans);font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:rgba(10,10,11,.6)}
.sb-track{flex:1;min-width:26px;height:6px;border-radius:3px;background:rgba(10,10,11,.12);overflow:hidden}
.sb-track i{display:block;height:100%;background:var(--sc);border-radius:3px;min-width:3px}
.sb-pv{flex:none;min-width:34px;text-align:right;font-family:var(--mono);font-size:12px;font-weight:700;color:var(--sc)}
.sb-head .strip-rite{margin-left:auto !important;flex:none;display:flex;align-items:center;gap:7px;padding:4px 2px 4px 12px;border-radius:0;border:0}
.sb-head .strip-rite .sr-lab{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.sb-head .strip-rite .sr-dot{width:9px;height:9px;border-radius:50%;flex:none}
.sb-head .strip-rite .sr-caret{font-size:10px;color:rgba(10,10,11,.5);transition:transform .18s;font-family:var(--sans)}
.lch-ritebar.open .sb-head .strip-rite .sr-caret{transform:rotate(90deg)}
.sb-head .sr-fresh .sr-dot{background:#E5484D;animation:srPulseR 1.4s ease-in-out infinite}
.sb-head .sr-fresh .sr-lab{color:#c0392b}
.sb-head .sr-clocked .sr-dot{background:#E08A1E;animation:srPulseA 1.4s ease-in-out infinite}
.sb-head .sr-clocked .sr-lab{color:#9a5e12}
.sb-head .sr-sealed .sr-dot{background:#1f9152;animation:srPulseG 2.2s ease-in-out infinite}
.sb-head .sr-sealed .sr-lab{color:#137a41}
/* expanded 7/3 row — stats left · Daily Rite (squarish, its own card) right */
.lch-expand{display:none}
.lch-ritebar.open .lch-expand{display:flex;align-items:stretch;gap:0;background:#F4F5F7;clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%)}
.sys-detail{flex:7 1 0;min-width:0;padding:16px 18px;color:#0A0A0B;border-right:1px solid rgba(10,10,11,.1)}
.lch-expand #ritePanel{flex:3 1 0;min-width:260px;max-height:none !important;overflow:visible;border-radius:0}
.sb-detail{padding:0}
.sb-dhd{font-family:var(--disp,var(--sans));font-weight:800;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(10,10,11,.55);margin-bottom:10px}
.sb-drow{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 0;font-family:var(--sans);font-size:13.5px}
.sb-drow+.sb-drow{border-top:1px solid rgba(10,10,11,.08)}
.sb-drow b{color:#0A0A0B;font-weight:700}
.sb-drow span{color:rgba(10,10,11,.58);font-size:12px}
.sb-full{margin-top:14px;background:none;border:none;color:#0d7a5f;font-family:var(--sans);font-size:12px;font-weight:700;cursor:pointer;padding:0}
.sb-full:hover{text-decoration:underline}
/* System detail as 3 columns (Energy · Focus · Motivation) — linked habits + anti-habits, daily checkmarks */
.syc-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-top:6px}
.syc-col{min-width:0}
.syc-hd{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding-bottom:6px;margin-bottom:4px;border-bottom:1px solid rgba(10,10,11,.14)}
.syc-nm{font-family:var(--disp,var(--sans));font-weight:800;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#0A0A0B}
.syc-lv{font-family:var(--mono);font-size:11px;color:rgba(10,10,11,.55)}
.syc-lv.none{color:rgba(10,10,11,.34);font-style:italic}
.syc-slbl{font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin:9px 0 3px}
.syc-slbl.grn{color:#1f9152}
.syc-slbl.red{color:#c0392b}
.syc-row{display:flex;align-items:center;gap:8px;padding:3px 0}
.syc-ck{flex:none;width:19px;height:19px;border-radius:5px;border:1px solid rgba(10,10,11,.3);background:#fff;color:transparent;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s,color .12s}
.syc-ck.on{background:#1f9152;border-color:#1f9152;color:#fff}
.syc-ck:hover{border-color:#0A0A0B}
.syc-t{flex:1;min-width:0;font-family:var(--sans);font-size:12.5px;color:#0A0A0B;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.syc-row.on .syc-t{color:rgba(10,10,11,.48);text-decoration:line-through}
.syc-unlink{flex:none;width:17px;height:17px;border:none;background:none;color:rgba(10,10,11,.22);font-size:14px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s,color .12s;display:flex;align-items:center;justify-content:center}
.syc-row:hover .syc-unlink{opacity:1}
.syc-unlink:hover{color:#E5484D}
/* anti-habit row — ＋ logs a slip (counts up), tally taps to undo */
.syc-slsub{font-family:var(--sans);font-size:9.5px;font-weight:400;letter-spacing:0;text-transform:none;color:rgba(10,10,11,.4);margin-left:5px}
.syc-slip{flex:none;width:19px;height:19px;border-radius:5px;border:1px solid rgba(229,72,77,.4);background:#fff;color:#E5484D;font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}
.syc-slip:hover{background:#E5484D;color:#fff;border-color:#E5484D}
.syc-tally{flex:none;min-width:24px;height:18px;padding:0 6px;border-radius:9px;border:none;background:rgba(229,72,77,.12);color:#E5484D;font-family:var(--mono);font-size:11px;font-weight:600;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}
.syc-tally:hover{background:rgba(229,72,77,.22)}
.syc-tally.zero{background:none;color:rgba(10,10,11,.28);cursor:default;font-weight:400}
.syc-row.anti.did .syc-t{color:#B23036}
.syc-none{font-family:var(--sans);font-size:11px;color:rgba(10,10,11,.44);padding:2px 0 4px;line-height:1.35}
@media(max-width:720px){.syc-cols{grid-template-columns:1fr;gap:10px}}
@media(max-width:720px){.sb-head{flex-wrap:wrap}.sb-day{border-right:none}.sb-pill{flex:1 1 40%}.sb-head .strip-rite{flex:1 1 100%;margin-left:0 !important;justify-content:center;margin-top:4px}.lch-ritebar.open .lch-expand{flex-wrap:wrap}.sys-detail{flex:1 1 100%;border-right:none;border-bottom:1px solid rgba(10,10,11,.1)}.lch-expand #ritePanel{flex:1 1 100%}}
/* ══ BASE LEVELS strip (Home HUD) — Happiness + Distraction baselines ══ */
.lch-base{position:relative;margin:0 0 16px;padding:14px 16px 15px;background:var(--brd-2);clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%)}
.lch-base::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%)}
.lch-base>*{position:relative;z-index:1}
.base-hd{display:flex;align-items:baseline;gap:11px;flex-wrap:wrap;font-family:var(--disp,var(--sans));font-weight:800;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);margin-bottom:14px}
.base-hd span{font-family:var(--sans);font-weight:500;font-size:10.5px;letter-spacing:.01em;text-transform:none;color:var(--ink-2)}
.base-row{display:flex;gap:24px}
.base-meter{flex:1 1 0;min-width:0;position:relative;padding-left:12px}
.base-meter::before{content:"";position:absolute;left:0;top:2px;width:4px;height:14px;background:var(--bc);transform:skewX(-15deg)}
.base-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}
.base-lbl{font-family:var(--sans);font-size:12.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ink)}
.base-v{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--bc)}
.base-v small{font-size:11px;color:var(--ink-3);margin-left:1px}
.base-track{height:7px;border-radius:4px;background:rgba(255,255,255,.07);overflow:hidden;margin-bottom:7px}
.base-track i{display:block;height:100%;background:var(--bc);border-radius:4px;min-width:4px;box-shadow:0 0 10px -2px var(--bc)}
.base-sub{font-family:var(--sans);font-size:11px;color:var(--ink-2)}
@media(max-width:640px){.base-row{gap:14px}}
.sg-kpis{display:flex;gap:28px;margin-bottom:15px}
.sg-kpi b{font-family:var(--mono);font-size:23px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;display:block;line-height:1;margin-bottom:3px}
.sg-kpi b small{font-size:12px;color:var(--ink-3)}
.sg-kpi span{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#c9ced6}
.sg-bars{display:flex;align-items:flex-end;gap:3px;height:104px}
.sg-col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;height:100%}
.sg-track{flex:1 1 auto;width:100%;display:flex;align-items:flex-end;min-height:0}
.sg-track i{width:100%;border-radius:2px 2px 0 0;display:block;min-height:2px}
.sg-track .sg-l0{background:rgba(255,255,255,.07)}
.sg-track .sg-l1{background:color-mix(in srgb,var(--accent) 38%,transparent)}
.sg-track .sg-l2{background:color-mix(in srgb,var(--accent) 66%,transparent)}
.sg-track .sg-l3{background:var(--accent)}
.sg-lab{font-family:var(--mono);font-size:8px;color:var(--ink-4);height:9px;line-height:1;white-space:nowrap}
/* karma momentum — diverging bars (virtue up / vice down, netting to karma) */
.k-g{color:#3ED66B !important}.k-r{color:#E5484D !important}
.kg-bars{display:flex;align-items:stretch;gap:3px;height:124px}
.kg-col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;height:100%;cursor:default}
.kg-up{flex:1;width:100%;display:flex;align-items:flex-end;min-height:0}
.kg-up i{width:100%;background:#3ED66B;border-radius:2px 2px 0 0;display:block;transition:opacity .12s}
.kg-mid{height:1px;width:100%;background:var(--line-2);flex:none}
.kg-dn{flex:1;width:100%;display:flex;align-items:flex-start;min-height:0}
.kg-dn i{width:100%;background:#E5484D;border-radius:0 0 2px 2px;display:block;opacity:.9;transition:opacity .12s}
.kg-col:hover .kg-up i,.kg-col:hover .kg-dn i{opacity:1;filter:brightness(1.15)}
.kg-lab{font-family:var(--mono);font-size:8px;color:var(--ink-4);height:9px;line-height:1;margin-top:4px;white-space:nowrap;flex:none}
.kg-wrap{position:relative}
.kg-fit{position:absolute;left:0;top:0;width:100%;height:calc(100% - 13px);pointer-events:none;z-index:2;overflow:hidden;display:block}
/* trend reader */
.lch-trendreader{margin-top:12px;border:1px solid var(--line-2);border-radius:12px;background:color-mix(in srgb,var(--ink) 2.5%,transparent);padding:11px 14px 13px}
.trd-h{font-family:var(--sans);font-size:10px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin-bottom:9px}
.trd-line{display:flex;align-items:center;gap:9px;padding:5px 0;font-family:var(--sans);font-size:13px;color:var(--ink-2)}
.trd-dot{flex:none;width:8px;height:8px;border-radius:50%}
.trd-good .trd-dot{background:#3ED66B;box-shadow:0 0 7px rgba(62,214,107,.5)}
.trd-bad .trd-dot{background:#E5484D;box-shadow:0 0 7px rgba(229,72,77,.5)}
.trd-good span{color:var(--ink)}
.trd-bad span{color:var(--ink-2)}
.trd-empty{font-family:var(--sans);font-size:12px;color:var(--ink-4);padding:6px 0}

/* ── Map: vice habit (breaking) reads RED + inhibits; ◇/⊘ toggles virtue↔vice ── */
.bw-vicehab{border-color:rgba(229,72,77,.5) !important}
.bw-vicehab .bw-gemlbl{color:#E5484D !important}
.bw-vicehab .bw-gemxpn{color:#E5484D !important}
.bw-habflip{position:absolute;top:6px;right:25px;width:18px;height:18px;display:grid;place-items:center;background:none;border:none;color:var(--ink-4);font-size:12px;line-height:1;padding:0;cursor:pointer;transition:color .12s}
.bw-habflip:hover{color:var(--rc,#E5484D)}

/* link-to-existing list: vices read red */
.cga-eopt.vice{color:#E5484D !important}
.cga-eopt.vice:hover{border-color:rgba(229,72,77,.4) !important;background:rgba(229,72,77,.08) !important}
/* create-new virtue/vice toggle in the map habit spawner */
.cga-hvv{display:flex;gap:6px;margin:2px 0 8px}
.cga-hvvb{flex:1;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--ink-4);background:color-mix(in srgb,var(--ink) 5%,transparent);border:1px solid var(--line-2);border-radius:7px;padding:5px 8px;cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.cga-hvvb:hover{color:var(--ink-2)}
.cga-hvvb.on{color:#3ED66B;border-color:rgba(62,214,107,.5);background:rgba(62,214,107,.08)}
.cga-hvvb.vice.on{color:#E5484D;border-color:rgba(229,72,77,.5);background:rgba(229,72,77,.08)}

/* vice habit card — fully RED like the vice hexagons (not just the border) */
.bw-vicehab{background:linear-gradient(180deg,rgba(229,72,77,.15),rgba(229,72,77,.04)) !important;border-color:rgba(229,72,77,.55) !important}
.bw-vicehab .bw-gemname{color:#F4A6A8 !important}
.bw-vicehab .bw-gemlvn{color:#E5484D !important}
/* the "border" on a gem card is an inset box-shadow ring — .bw-habit.bw-gem paints it GREEN;
   override to RED for vice habits so the ring matches the red block (was a green ring around a red card) */
.bw-vicehab.bw-gem{box-shadow:inset 0 0 0 1px color-mix(in srgb,#E5484D 50%,transparent) !important}
/* deadline control on the quest panel */
.bw-ddline{display:flex;align-items:center;gap:9px;margin:2px 0 10px}
.bw-ddl-lbl{font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-4)}
.bw-ddl-btn{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--ink-2);background:color-mix(in srgb,var(--ink) 6%,transparent);border:1px solid var(--line-2);border-radius:7px;padding:4px 10px;cursor:pointer;transition:border-color .12s,color .12s}
.bw-ddl-btn:hover{border-color:var(--accent);color:var(--accent)}
.bw-ddl-btn.soon{color:#ECC94B;border-color:rgba(236,201,75,.4)}
.bw-ddl-btn.over{color:#E5484D;border-color:rgba(229,72,77,.45)}
/* ── habit-based (cadence) quest — pace bar + soft streak + window; fails only if the window closes short ── */
.bw-hq-make{margin-left:auto;font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--ink-3);background:none;border:1px dashed color-mix(in srgb,#3ED66B 40%,var(--line-2));border-radius:7px;padding:4px 9px;cursor:pointer;transition:color .12s,background .12s}
.bw-hq-make:hover{color:#3ED66B;background:color-mix(in srgb,#3ED66B 12%,transparent)}
.bw-hq{margin:4px 0 12px;padding:11px 12px;border:1px solid color-mix(in srgb,var(--hqc,#3ED66B) 30%,var(--line-2));border-radius:10px;background:color-mix(in srgb,var(--hqc,#3ED66B) 7%,transparent)}
.bw-hq-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.bw-hq-cad{font-family:var(--mono);font-size:10px;letter-spacing:.04em;color:var(--ink-3)}
.bw-hq-pace{font-family:var(--sans);font-size:10.5px;font-weight:700;letter-spacing:.02em;color:#3ED66B}
.bw-hq-pace.soon{color:#ECC94B}.bw-hq-pace.over{color:#E5484D}.bw-hq-pace.done{color:#3ED66B}
.bw-hq-bar{display:flex;gap:3px;margin-bottom:8px}
.bw-hqseg{flex:1;height:8px;border-radius:3px;background:rgba(255,255,255,.07)}
.bw-hqseg.on{background:var(--hqc,#3ED66B)}
.bw-hqseg.due{background:none;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,#ECC94B 70%,transparent)}
.bw-hq-meta{display:flex;align-items:center;gap:10px;font-family:var(--sans);font-size:11.5px;color:var(--ink-2)}
.bw-hq-meta b{color:var(--ink);font-size:13px}
.bw-hq-streak{font-family:var(--mono);font-size:10.5px;color:var(--ink-3)}
.bw-hq-streak.risk{color:#E5484D}
.bw-hq-left{margin-left:auto;font-family:var(--mono);font-size:10px;letter-spacing:.05em;color:var(--ink-4);text-transform:uppercase}
.bw-hq-edit{margin-top:9px;background:none;border:none;color:var(--ink-4);font-family:var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;padding:0}
.bw-hq-edit:hover{color:var(--accent-2)}
.bw-hqpop{position:fixed;z-index:100062;min-width:216px;background:linear-gradient(180deg,#0E1319,#0B0F14);border:1px solid var(--line-2);border-radius:11px;padding:11px;box-shadow:0 18px 44px -12px rgba(0,0,0,.8);display:flex;flex-direction:column;gap:8px}
.bw-hqp-row{display:flex;align-items:center;gap:6px;font-family:var(--sans);font-size:12px;color:var(--ink-2)}
.bw-hqp-row input,.bw-hqp-row select{color-scheme:dark;background:rgba(255,255,255,.05);border:1px solid var(--line-2);border-radius:6px;color:var(--ink);font-family:var(--sans);font-size:12px;padding:4px 7px}
.bw-hqp-row input{width:52px;text-align:center}
.bw-hqp-row select{flex:1;min-width:0}
.bw-hqp-row input:focus,.bw-hqp-row select:focus{outline:none;border-color:var(--accent)}
.bw-hqp-hint{font-family:var(--mono);font-size:9.5px;letter-spacing:.04em;color:var(--accent-2,#2DD4BF);padding:0 2px}
.bw-hqp-tgt{font-family:var(--mono);font-size:10.5px;color:#3ED66B;padding:1px 2px}
.bw-hqp-save{flex:1;background:var(--accent-2);border:none;border-radius:7px;color:#08110F;font-weight:700;font-size:12px;padding:6px 0;cursor:pointer}
.bw-hqp-clear{background:none;border:1px solid var(--line-2);border-radius:7px;color:var(--ink-4);font-size:11.5px;padding:6px 11px;cursor:pointer}
.bw-hqp-clear:hover{color:#E5484D;border-color:rgba(229,72,77,.4)}
/* connect-port pulse — invites you to drag it to link (fires when a drop can't auto-link) */
@keyframes bwPortPulse{0%,100%{box-shadow:0 0 0 0 rgba(45,212,191,.6),0 0 0 3px rgba(0,0,0,.4)}50%{box-shadow:0 0 0 8px rgba(45,212,191,0),0 0 0 3px rgba(0,0,0,.4)}}
.bw-porthot{opacity:1 !important;animation:bwPortPulse .8s ease-in-out 3;border-color:var(--accent-2,#2DD4BF) !important}

/* ── Board chrome: find → bottom-left · Karyna → collapsed "board mode" launcher above it ── */
.bw-search{left:30px !important;right:auto !important;bottom:30px !important;align-items:flex-start !important}
.bw-karyna{bottom:84px !important;left:30px !important}
.bw-karyna.bwmin{width:auto !important;max-width:none}
.bw-karyna.bwmin .bwk-body,.bw-karyna.bwmin .bwk-in,.bw-karyna.bwmin .bwk-acts{display:none !important}
.bw-karyna.bwmin .bwk-hd{cursor:pointer;border-bottom:none}
.bw-karyna.bwmin .bwk-hd:hover{background:color-mix(in srgb,var(--accent-2,#2DD4BF) 12%,transparent)}
/* habit card — what it feeds / inhibits + traits it touches */
.bw-gemconn{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.01em;margin-top:5px;padding-top:5px;border-top:1px solid var(--line-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bw-gemconn.good{color:#3ED66B}
.bw-gemconn.vice{color:#E5484D}
.bw-gemconn.trait{color:#a99bf9}
.bw-gemconn.none{color:var(--ink-4);border-top-color:var(--line-3)}
.bw-gemconn+.bw-gemconn{border-top:none;margin-top:2px;padding-top:0}

/* ── WEEK PLANNER + DAY TIMELINE ─────────────────────────────────────────── */
.ov-week,.ov-day{padding:4px 2px}
.pdt-head,.pw-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:2px 4px 14px;flex-wrap:wrap}
.pdt-title,.pw-title{font-family:var(--sans);font-size:16px;font-weight:700;color:var(--ink)}
.pdt-sub,.pw-sub{font-family:var(--mono);font-size:10.5px;color:var(--ink-3)}
/* day timeline */
.pdt-body{display:grid;grid-template-columns:1fr 220px;gap:16px;align-items:start}
.pdt-grid{border-left:1px solid var(--line)}
.pdt-row{display:grid;grid-template-columns:42px 1fr;min-height:34px;border-top:1px solid var(--line-3)}
.pdt-hr{font-family:var(--mono);font-size:10px;color:var(--ink-4);padding:5px 8px 0 0;text-align:right}
.pdt-slot{display:flex;flex-wrap:wrap;gap:6px;padding:4px 0}
.pdt-rail{background:var(--void-2);border:1px solid var(--line);border-radius:9px;padding:11px;position:sticky;top:6px}
.pdt-railhd{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin-bottom:9px}
.pdt-railnone{font-family:var(--sans);font-size:11px;color:var(--ink-4);padding:4px 2px}
.pdt-rail .pdt-chip{width:100%;margin-bottom:6px}
.pdt-chip{display:flex;align-items:center;gap:7px;background:var(--void-1);border:1px solid var(--line-2);border-left:3px solid var(--rc,var(--accent));border-radius:6px;padding:5px 8px;max-width:100%}
.pdt-chip.done{opacity:.5}
.pdt-chip.vice{border-left-color:#E5484D}
.pdt-chip.quest{border-left-style:double;border-left-width:4px}
.pdt-t{flex:1;min-width:0;font-family:var(--sans);font-size:12.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pdt-chip.done .pdt-t{text-decoration:line-through}
.pdt-ck{flex:none;width:18px;height:18px;border-radius:5px;border:1px solid var(--line-2);background:none;color:var(--ink-3);font-size:11px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.pdt-ck.on{background:#1f9152;border-color:#1f9152;color:#fff}
.pdt-ck.vice{border-color:rgba(229,72,77,.5);color:#E5484D}
.pdt-ck.vice:hover{background:#E5484D;color:#fff}
.pdt-qmk{flex:none;color:var(--rc,var(--accent));font-size:10px}
.pdt-time{flex:none;font-family:var(--mono);font-size:10.5px;color:var(--ink-3);background:none;border:1px solid var(--line);border-radius:5px;padding:2px 6px;cursor:pointer;line-height:1.3}
.pdt-time:hover{border-color:var(--accent);color:var(--ink)}
/* week grid */
.pw-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.pw-col{background:var(--void-2);border:1px solid var(--line);border-radius:9px;padding:9px;min-height:150px;display:flex;flex-direction:column}
.pw-col.today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.pw-colhd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px}
.pw-colhd b{font-family:var(--sans);font-size:12px;font-weight:700;color:var(--ink)}
.pw-colhd span{font-family:var(--mono);font-size:10px;color:var(--ink-4)}
.pw-items{flex:1;display:flex;flex-direction:column;gap:5px}
.pw-empty{font-family:var(--sans);font-size:11px;color:var(--ink-4);padding:2px 4px}
.pw-col .pdt-chip{padding:4px 6px;gap:5px}
.pw-col .pdt-t{font-size:11px}
.pw-rm{flex:none;width:14px;height:14px;border:none;background:none;color:var(--ink-4);font-size:12px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s}
.pw-col .pdt-chip:hover .pw-rm{opacity:1}
.pw-rm:hover{color:#E5484D}
.pw-add{margin-top:8px;border:1px dashed var(--line-2);background:none;color:var(--ink-3);border-radius:6px;padding:4px;font-size:14px;line-height:1;cursor:pointer}
.pw-add:hover{border-color:var(--accent);color:var(--ink)}
/* popovers */
.plan-timepop,.plan-addpop{position:fixed;z-index:9999;background:var(--void-1);border:1px solid var(--line-2);border-radius:9px;padding:11px;box-shadow:0 14px 36px rgba(0,0,0,.55)}
.plan-timein{background:var(--void-2);border:1px solid var(--line-2);color:var(--ink);font-family:var(--mono);font-size:13px;padding:6px 8px;border-radius:6px}
.plan-timeacts{display:flex;gap:6px;justify-content:flex-end;margin-top:9px}
.plan-timeacts button{background:none;border:1px solid var(--line-2);color:var(--ink-2);border-radius:6px;padding:4px 11px;font-family:var(--sans);font-size:12px;cursor:pointer}
.plan-timeacts button.pri{background:var(--accent);border-color:var(--accent);color:#04201c;font-weight:600}
.plan-addpop{max-height:300px;overflow:auto;min-width:210px}
.pap-hd{font-family:var(--mono);font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px}
.pap-item{display:block;width:100%;text-align:left;background:none;border:none;color:var(--ink);padding:6px 8px;border-radius:5px;font-family:var(--sans);font-size:12.5px;cursor:pointer}
.pap-item:hover{background:var(--void-2)}
.pap-none{font-family:var(--sans);font-size:11.5px;color:var(--ink-4);padding:4px}
.plan-err{padding:24px;color:#E5484D;font-family:var(--mono);font-size:12px;line-height:1.7}
.plan-err small{display:block;margin-top:8px;color:var(--ink-3);font-size:10.5px}
.ov-week,.ov-day{min-height:220px}
/* ── PLAN OVERLAY (day timeline / week, opened from the Today calendar) ─────── */
.plan-overlay{position:fixed;inset:0;z-index:9800;background:rgba(6,7,9,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:38px 20px;overflow:auto}
.plan-sheet{width:100%;max-width:1120px;background:var(--void-1);border:1px solid var(--line-2);border-radius:12px;box-shadow:0 24px 70px rgba(0,0,0,.6);overflow:hidden}
.plan-hd{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--void-2)}
.plan-close{flex:none;width:28px;height:28px;border-radius:7px;border:1px solid var(--line-2);background:none;color:var(--ink-2);font-size:14px;cursor:pointer}
.plan-close:hover{border-color:#E5484D;color:#E5484D}
.plan-nav{flex:none;width:28px;height:28px;border-radius:7px;border:1px solid var(--line-2);background:none;color:var(--ink-2);font-size:16px;line-height:1;cursor:pointer}
.plan-nav:hover{border-color:var(--accent);color:var(--ink)}
.plan-htitle{font-family:var(--sans);font-size:16px;font-weight:700;color:var(--ink);min-width:150px;text-align:center}
.plan-modes{margin-left:auto;display:flex;gap:2px;background:var(--void-1);border:1px solid var(--line-2);border-radius:8px;padding:2px}
.plan-modes button{border:none;background:none;color:var(--ink-3);font-family:var(--sans);font-size:12px;font-weight:600;padding:5px 14px;border-radius:6px;cursor:pointer}
.plan-modes button.on{background:var(--accent);color:#04201c}
.plan-obody{padding:16px 18px}
.pdt-subline{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);margin:0 2px 12px}
.pdt-dot{flex:none;width:10px;height:10px;border-radius:50%;border:1.5px solid var(--line-2);box-sizing:border-box}
.pdt-dot.on{background:#1f9152;border-color:#1f9152}
.ag-weekbtn{width:auto !important;padding:0 9px !important;font-size:11px !important;letter-spacing:.02em}
.plan-obody{min-height:140px}
/* ── HELM-style time-grid (day + week) ─────────────────────────────────────── */
.pq-legend{display:flex;align-items:center;gap:14px;margin:0 2px 12px;font-family:var(--mono);font-size:10.5px;color:var(--ink-3)}
.pq-lg.needle{color:var(--accent)} .pq-lg.habit{color:var(--ink-2)}
.pq-lg-sp{flex:1} .pq-lg-hint{color:var(--ink-4)}
.pq-wrap{display:grid;grid-template-columns:1fr 210px;gap:14px;align-items:start}
.pq-cal{display:flex;max-height:66vh;overflow-y:auto;border:1px solid var(--line);border-radius:9px;background:var(--void-2)}
.pq-hours{flex:none;width:38px;border-right:1px solid var(--line)}
.pq-hr{position:relative;box-sizing:border-box;border-top:1px solid var(--line-3)}
.pq-hr span{position:absolute;top:-1px;right:5px;font-family:var(--mono);font-size:9px;color:var(--ink-4);background:var(--void-2);padding:0 2px}
.pq-events{position:relative;flex:1;min-width:0;background:repeating-linear-gradient(to bottom,transparent,transparent 45px,var(--line-3) 45px,var(--line-3) 46px)}
.pq-blk{position:absolute;box-sizing:border-box;display:flex;align-items:center;gap:5px;overflow:hidden;padding:2px 6px;border-radius:5px;background:color-mix(in srgb,var(--rc) 20%,var(--void-1));border-left:3px solid var(--rc);cursor:pointer;min-width:0}
.pq-blk.needle{background:color-mix(in srgb,var(--rc) 30%,var(--void-1));border-left-width:4px}
.pq-blk.vice{--rc:#E5484D}
.pq-blk.done{opacity:.5}
.pq-blk .pq-mk{flex:none;font-size:10px;color:var(--rc)}
.pq-blk.done .pq-mk{color:#3ED66B}
.pq-blk .pq-t{flex:1;min-width:0;font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pq-blk.done .pq-t{text-decoration:line-through}
.pq-time{flex:none;font-family:var(--mono);font-size:9px;color:var(--ink-3);background:rgba(0,0,0,.25);border:none;border-radius:4px;padding:1px 4px;cursor:pointer}
.pq-time:hover{color:var(--ink);background:rgba(0,0,0,.45)}
.pq-now{position:absolute;left:0;right:0;height:2px;background:#E5484D;z-index:5;pointer-events:none;box-shadow:0 0 6px rgba(229,72,77,.6)}
.pq-now::before{content:'';position:absolute;left:-3px;top:-2px;width:6px;height:6px;border-radius:50%;background:#E5484D}
.pq-rail{background:var(--void-2);border:1px solid var(--line);border-radius:9px;padding:10px;position:sticky;top:0}
/* week */
.pqw-head{display:grid;grid-template-columns:38px repeat(7,1fr);gap:0;margin-bottom:0;border:1px solid var(--line);border-bottom:none;border-radius:9px 9px 0 0;overflow:hidden}
.pqw-corner{background:var(--void-2)}
.pqw-dh{padding:7px 4px;text-align:center;font-family:var(--mono);font-size:10px;color:var(--ink-3);background:var(--void-2);border-left:1px solid var(--line)}
.pqw-dh b{color:var(--ink);font-family:var(--sans);font-weight:700;font-size:11px}
.pqw-dh.today{color:var(--accent)} .pqw-dh.today b{color:var(--accent)}
.pqw-body{display:flex;max-height:66vh;overflow-y:auto;border:1px solid var(--line);border-radius:0 0 9px 9px;background:var(--void-2)}
.pqw-cols{flex:1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-width:0}
.pqw-col{position:relative;border-left:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent,transparent 45px,var(--line-3) 45px,var(--line-3) 46px)}
.pqw-col.today{background:color-mix(in srgb,var(--accent) 5%,transparent),repeating-linear-gradient(to bottom,transparent,transparent 45px,var(--line-3) 45px,var(--line-3) 46px)}
.pqw-col .pq-blk .pq-time{display:none}
.pqw-col .pq-blk{padding:2px 4px;gap:3px}
.pqw-untimed{position:absolute;bottom:4px;left:3px;right:3px;font-family:var(--mono);font-size:9px;color:var(--ink-3);background:var(--void-1);border:1px dashed var(--line-2);border-radius:5px;padding:3px;cursor:pointer}
.pqw-untimed:hover{border-color:var(--accent);color:var(--ink)}
/* inline calendar view toggle (Day/Week/Month in the Today right column) */
.ag-calviews{display:inline-flex;gap:1px;background:var(--void-1);border:1px solid var(--line-2);border-radius:7px;padding:2px;margin-right:6px;vertical-align:middle}
.ag-cvb{border:none;background:none;color:var(--ink-3);font-family:var(--sans);font-size:10.5px;font-weight:600;padding:3px 9px;border-radius:5px;cursor:pointer}
.ag-cvb.on{background:var(--accent);color:#04201c}
.ag-cal-grid{display:flex;flex-direction:column;min-height:0}
.ag-cal-grid .pq-cal{max-height:60vh}
/* ── unscheduled strip — collapsible header + flatter density (tsk today.calendar refine) ── */
.pq-untimed{margin:6px 0 8px;border:1px solid var(--line-3);border-radius:8px;padding:6px 8px;background:color-mix(in srgb,#fff 2%,transparent)}
.pq-untimed.min{padding:5px 8px}
.pq-untimed-hd{display:flex;align-items:center;gap:7px;width:100%;background:none;border:none;padding:0;cursor:pointer;text-align:left;font-family:var(--mono);font-size:10px;letter-spacing:.06em;color:var(--ink-3)}
.pq-untimed-hd.static{cursor:default}
.pq-untimed-cav{flex:none;font-size:9px;color:var(--ink-4);width:9px}
.pq-untimed-k{text-transform:uppercase;color:var(--ink-2);font-weight:600}
.pq-untimed-ct{flex:none;min-width:16px;text-align:center;padding:0 5px;border-radius:8px;background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent);font-weight:700;font-size:9.5px}
.pq-untimed-hint{color:var(--ink-4);font-size:9.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pq-untimed-none{color:var(--ink-4)}
.pq-untimed-lbl{font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-bottom:6px}
.pq-untimed-vices{display:flex;flex-wrap:wrap;gap:4px;margin:7px 0 5px;padding-bottom:6px;border-bottom:1px dashed var(--line-3)}
.pq-untimed-vices .pdt-chip{padding:1px 6px 1px 2px;font-size:10px;opacity:.9}
.pq-untimed-vices .pdt-chip .pdt-time{display:none}
.pq-untimed-row{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.pq-untimed-row .pdt-chip{flex:0 1 auto;max-width:100%}
/* drag-to-timeslot */
.pq-blk{cursor:grab;user-select:none;-webkit-user-select:none;-webkit-user-drag:none} .pq-untimed-row .pdt-chip{cursor:grab;user-select:none;-webkit-user-select:none}
.pq-ghost{position:fixed;z-index:10000;pointer-events:none;background:var(--accent);color:#04201c;font-family:var(--sans);font-size:11px;font-weight:700;padding:3px 9px;border-radius:5px;box-shadow:0 6px 20px rgba(0,0,0,.55);max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.pq-dragging,body.pq-dragging *{cursor:grabbing !important;user-select:none !important}
/* subtle 15-min snap slot (replaces the old whole-column highlight) */
.pq-snap{position:absolute;left:2px;right:2px;z-index:5;pointer-events:none;border-radius:5px;background:color-mix(in srgb,var(--accent) 20%,transparent);border:1px dashed color-mix(in srgb,var(--accent) 75%,transparent);display:flex;align-items:flex-start;justify-content:flex-end;padding:1px 5px;font-family:var(--sans);font-size:9.5px;font-weight:700;color:var(--accent)}
/* resize handle — drag a block's bottom edge to change its length */
.pq-rz{position:absolute;left:0;right:38px;bottom:0;height:6px;cursor:ns-resize;z-index:6}
.pq-rz::after{content:"";position:absolute;left:50%;bottom:1px;transform:translateX(-50%);width:22px;height:2px;border-radius:2px;background:color-mix(in srgb,#fff 32%,transparent);opacity:0;transition:opacity .1s}
.pq-blk:hover .pq-rz::after,.pq-blk.pq-resizing .pq-rz::after{opacity:1}
.pq-blk.pq-resizing{cursor:ns-resize;z-index:8}
.pqw-col .pq-rz{display:none}
/* left-card→calendar drop (HTML5 drag): subtle left-accent only, not a whole-column flood */
.pq-events.pq-droptarget,.pqw-col.pq-droptarget{box-shadow:inset 3px 0 0 color-mix(in srgb,var(--accent) 60%,transparent)}
.pq-backnote{color:#ECC94B;font-weight:600}

/* ── YOUR WANTS watchlist (home.watchlist): sticky header, rows scroll UNDER it, contained to the hero-banner height (tsk_ms4d2kn715) ── */
.lch-hero-rite .lch-watchlist{padding-top:0;overflow-y:auto;overscroll-behavior:contain}
.lch-hero-rite .wl-h{position:sticky;top:0;z-index:3;margin:0 -5px 4px;padding:10px 12px 7px;background:rgba(14,15,19,.95);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-bottom:1px solid rgba(255,255,255,.08)}

/* ── TODAY quest detail: WORKING WEEK + DEADLINE control (tsk_ms2n6w0246r deadline · tsk_ms2nvbrlsh week) ── */
.ag-cd-when{margin:6px 0 2px}
.ag-cd-wkrow{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.ag-cd-wkb{font-family:var(--mono);font-size:10px;letter-spacing:.03em;color:var(--ink-3);border:1px solid var(--line-2);border-radius:6px;padding:5px 10px;background:none;cursor:pointer;transition:background .12s,color .12s,border-color .12s}
.ag-cd-wkb:hover{border-color:var(--tc);color:var(--tc);background:color-mix(in srgb,var(--tc) 10%,transparent)}
.ag-cd-wkb.on{color:var(--tc);border-color:color-mix(in srgb,var(--tc) 55%,var(--line-2));background:color-mix(in srgb,var(--tc) 16%,transparent)}
.ag-cd-wkb.ext{color:var(--ink-4);letter-spacing:.06em}
.ag-cd-wkb.ext:hover{color:#ECC94B;border-color:color-mix(in srgb,#ECC94B 45%,var(--line-2));background:color-mix(in srgb,#ECC94B 10%,transparent)}
.ag-cd-dwrap{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4)}
.ag-cd-dlbl{color:var(--ink-4)}
/* native deadline picker (our own calendar, not the browser default input) */
.ag-cd-datebtn{font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:none;color:var(--ink-2,#e8e8ea);background:color-mix(in srgb,#fff 4%,transparent);border:1px solid var(--line-2);border-radius:6px;padding:4px 9px;cursor:pointer}
.ag-cd-datebtn:hover,.ag-cd-datebtn.on{border-color:var(--tc);color:var(--ink)}
.ag-cd-calwrap{margin-top:9px}
.ag-cd-calwrap .qd-cal.ag-dlcal{position:static;width:100%;max-width:288px;z-index:1}
.ag-cd-calwrap .ag-dlcal .qdc-cell{aspect-ratio:auto;min-height:30px}

/* ── Day Log (Today strip) — wake / work-start / work-end, localStorage per date ── */
.ag-daylog{margin-top:8px;padding:8px 9px;border:1px solid var(--line-2);border-radius:8px;background:color-mix(in srgb,#fff 3%,transparent)}
.ag-daylog-hd{display:flex;align-items:baseline;gap:7px;margin-bottom:7px}
.ag-daylog-k{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4)}
.ag-daylog-sub{font-family:var(--mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);opacity:.65}
.ag-daylog-row{display:flex;gap:8px;flex-wrap:wrap}
.ag-daylog-f{display:flex;flex-direction:column;gap:3px;flex:1 1 82px;min-width:82px}
.ag-daylog-lb{font-family:var(--mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.ag-daylog-in{font-family:var(--mono);font-size:12px;color:var(--ink-2,#e8e8ea);background:color-mix(in srgb,#fff 4%,transparent);border:1px solid var(--line-2);border-radius:6px;padding:5px 7px;cursor:pointer;color-scheme:dark;width:100%}
.ag-daylog-in:hover{border-color:color-mix(in srgb,#ECC94B 45%,var(--line-2))}
.ag-daylog-in:focus{outline:none;border-color:#ECC94B}
/* day performance REPORT — DAY LOG recall (wake / work-start / work-end) for a past date (drillCol) */
.ag-dlog-rep{display:flex;gap:8px;margin:0 0 14px}
.ag-dlog-i{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px;background:color-mix(in srgb,#fff 3%,transparent);border:1px solid var(--line-2);border-radius:7px}
.ag-dlog-i b{font-family:var(--mono);font-size:14px;font-weight:600;color:var(--ink,#e8eaed)}
.ag-dlog-i small{font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3,#8a9099)}

/* ── CARRIED OVER strip (overdue-but-open quests · reschedule/drop) — top of Today ── */
/* CARRIED OVER — now tucked inside the right calendar panel (cd630), so it must fit the narrower column, not full-bleed */
.ag-odw{margin:8px 0 12px;padding:8px 10px;border:1px solid color-mix(in srgb,#E5484D 32%,var(--line-2));border-radius:9px;background:color-mix(in srgb,#E5484D 7%,var(--void-1,transparent))}
.ag-odw-hd{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;cursor:pointer}
.ag-odw-k{font-family:var(--mono);font-size:9px;letter-spacing:.15em;text-transform:uppercase;color:#E9603A;font-weight:600}
.ag-odw-sub{font-family:var(--mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);opacity:.7}
.ag-odw-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:5px 0;border-top:1px solid color-mix(in srgb,#fff 6%,transparent)}
.ag-odw-row:first-of-type{border-top:none}
.ag-odw-mk{flex:none;font-size:10px;color:var(--rc,#E9603A)}
.ag-odw-t{flex:1;min-width:0;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-odw-age{flex:none;font-family:var(--mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:#E9603A}
.ag-odw-acts{flex:none;display:flex;align-items:center;gap:5px}
.ag-odw-btn{font-family:var(--mono);font-size:10px;color:var(--ink-2,#e8e8ea);background:color-mix(in srgb,#fff 5%,transparent);border:1px solid var(--line-2);border-radius:6px;padding:4px 8px;cursor:pointer;white-space:nowrap}
.ag-odw-btn:hover{border-color:#ECC94B;color:#ECC94B}
.ag-odw-btn.ghost{opacity:.75}
.ag-odw-btn.ghost:hover{border-color:#E5484D;color:#E5484D;opacity:1}
.ag-odw-date{font-family:var(--mono);font-size:10px;color:var(--ink-2,#e8e8ea);background:color-mix(in srgb,#fff 4%,transparent);border:1px solid var(--line-2);border-radius:6px;padding:3px 5px;cursor:pointer;color-scheme:dark}
.ag-odw-date:hover{border-color:color-mix(in srgb,#ECC94B 45%,var(--line-2))}
.ag-odw-ct{font-family:var(--mono);font-size:9px;letter-spacing:.06em;color:#E9603A;font-weight:600}
.ag-odw-tog{margin-left:auto;flex:none;font-size:11px;line-height:1;color:var(--ink-3,#9a9aa0);background:transparent;border:0;border-radius:0;padding:0;cursor:pointer}
.ag-odw-tog:hover{color:#E9603A}
.ag-odw.min{padding-bottom:8px}
.ag-odw.min .ag-odw-hd{margin-bottom:0}
@media(max-width:640px){.ag-odw-row{flex-wrap:wrap}.ag-odw-t{flex:1 1 100%}}

/* ── WORK-BLOCK instances (drag-to-schedule · gold accent · removable) ── */
.pq-blk.wblk{--rc:#ECC94B;background:color-mix(in srgb,var(--rc) 26%,var(--void-1));border-left-width:4px;border-left-style:solid}
.pq-blk.wblk .pq-mk{color:var(--rc)}
.pq-blk.wblk .wblk-x{flex:none;margin-left:auto;font-family:var(--mono);font-size:11px;line-height:1;color:var(--ink-3,#8a9099);background:none;border:none;padding:0 2px;cursor:pointer}
.pq-blk.wblk .wblk-x:hover{color:#E5484D}
/* HOME sysbar — pin-picker (choose which traits surface on Home) + undo toast (non-destructive un-pin) */
.syc-pinbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:2px 0 12px;padding-bottom:11px;border-bottom:1px solid rgba(10,10,11,.1)}
.syc-pinlbl{font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(10,10,11,.42);margin-right:2px}
.syc-pinchip{font-family:var(--sans);font-size:11px;font-weight:600;line-height:1;padding:5px 10px;border-radius:20px;cursor:pointer;
  border:1px solid rgba(10,10,11,.18);background:transparent;color:rgba(10,10,11,.6);transition:background .12s,color .12s,border-color .12s}
.syc-pinchip:hover{border-color:rgba(10,10,11,.4);color:rgba(10,10,11,.85)}
.syc-pinchip.on{background:#0a0a0b;border-color:#0a0a0b;color:#fff}
.syc-pinchip.on:hover{background:#26262b;border-color:#26262b}
.syc-pinnone{font-family:var(--sans);font-size:11px;color:rgba(10,10,11,.4)}
/* Notion-style trait filter — removable chips + "add trait" button + popover */
.syc-fchip{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:11px;font-weight:600;line-height:1;
  padding:5px 7px 5px 10px;border-radius:20px;cursor:pointer;background:#0a0a0b;border:1px solid #0a0a0b;color:#fff;transition:background .12s,border-color .12s}
.syc-fchip:hover{background:#26262b;border-color:#26262b}
.syc-fchip-x{font-style:normal;font-size:9px;line-height:1;display:grid;place-items:center;width:14px;height:14px;border-radius:50%;
  background:rgba(255,255,255,.16);color:rgba(255,255,255,.82);transition:background .12s}
.syc-fchip:hover .syc-fchip-x{background:rgba(255,255,255,.3);color:#fff}
.syc-addwrap{position:relative;display:inline-flex}
.syc-fadd{display:inline-flex;align-items:center;gap:5px;font-family:var(--sans);font-size:11px;font-weight:600;line-height:1;
  padding:5px 11px;border-radius:20px;cursor:pointer;background:transparent;color:rgba(10,10,11,.55);
  border:1px dashed rgba(10,10,11,.28);transition:background .12s,color .12s,border-color .12s}
.syc-fadd:hover{border-color:rgba(10,10,11,.5);color:rgba(10,10,11,.85)}
.syc-fadd.on{border-style:solid;border-color:#0a0a0b;color:#0a0a0b;background:rgba(10,10,11,.05)}
.syc-fadd-p{font-style:normal;font-weight:700}
.syc-pop{position:absolute;z-index:9000;top:calc(100% + 6px);left:0;min-width:180px;max-width:240px;max-height:280px;overflow:auto;
  background:#fff;border:1px solid rgba(10,10,11,.14);border-radius:10px;padding:7px;box-shadow:0 12px 32px rgba(0,0,0,.18);
  display:none;flex-direction:column;gap:2px}
.syc-pop.open{display:flex}
.syc-pop-hd{font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(10,10,11,.42);margin:1px 4px 6px}
.syc-pop-list{display:flex;flex-direction:column;gap:1px}
.syc-popitem{display:block;width:100%;text-align:left;font-family:var(--sans);font-size:12px;font-weight:500;line-height:1;
  padding:7px 8px;border-radius:6px;cursor:pointer;background:transparent;border:1px solid transparent;color:rgba(10,10,11,.8);transition:background .12s}
.syc-popitem:hover{background:rgba(10,10,11,.06)}
.syc-popempty{font-family:var(--sans);font-size:11px;color:rgba(10,10,11,.4);padding:6px 8px}
.ov-toast-undo{pointer-events:auto;display:flex;align-items:center;gap:14px}
.ov-undo{font-family:var(--disp);font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink);background:none;border:none;border-left:1px solid var(--line);padding:2px 0 2px 14px;cursor:pointer}
.ov-undo:hover{color:#3ED66B}

/* ══ quest → want connector: collapsible macro/sub want tree (Task A tsk_ms2nqtuc5z2) ══ */
/* macro wants show first, collapsed; ▸ expands their sub-wants; link a macro OR a sub-want */
.cx-wtreelist{padding:3px 0}
.cx-wtrow{gap:5px}
.cx-wcar{background:none;border:none;color:var(--ink-4);font-size:10px;cursor:pointer;padding:2px 3px;transition:transform .12s,color .12s;flex:none;line-height:1}
.cx-wcar.open{transform:rotate(90deg);color:var(--accent)}
.cx-wcar:hover{color:var(--accent)}
.cx-wcar-sp{width:14px;flex:none}
.cx-wtt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.cx-wsub{font-size:12px;color:var(--ink-3)}
.cx-wsub .cx-wdia{opacity:.65}
.cx-wtrow.cur{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.cx-wtrow.cur .cx-wtt{color:var(--accent)}
.cx-wcur{flex:none;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-2);opacity:.85;padding-right:10px}

/* ══ daily-action habit search results (Task B tsk_ms2rnz674z1) ══ */
.qs-habres{margin:3px 0 4px;border:1px solid var(--line);border-radius:8px;background:var(--void-2,#0e1013);overflow:hidden;max-height:198px;overflow-y:auto}
.qs-habopt{display:flex;align-items:center;gap:8px;padding:8px 11px;font-family:var(--sans);font-size:12px;color:var(--ink-2);cursor:pointer;border-bottom:1px solid rgba(255,255,255,.04);transition:background .12s,color .12s}
.qs-habopt:last-child{border-bottom:none}
.qs-habopt:hover{background:color-mix(in srgb,#3ED66B 12%,transparent);color:var(--ink)}
.qs-habico{flex:none;color:#3ED66B;font-size:12px}
.qs-habnm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qs-habvv{flex:none;color:var(--warn,#E5484D);font-style:normal;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase}

/* ══ PROFILE — level-unlock avatar frames (data-lex profile.header.level-frame) ══
   LoL-style tiered frames on the Profile-tab header avatar (.pg-av). Set by
   levelBorderTier(level) in game.js → 'lvframe lvtier-N'. Monochrome low tiers →
   accent + apex spin at the top. Rings drawn as pseudo-elements OUTSIDE the 88px
   circle (inset negative) so the avatar/pfp is never clipped. Only the profile
   header is framed for now; HUD emblem / feed / colosseum avatars reuse later. */
.pg-av.lvframe{position:relative;overflow:visible}
.pg-av.lvframe::before,.pg-av.lvframe::after{content:"";position:absolute;border-radius:50%;pointer-events:none;z-index:0}
/* helper: a W-px gradient ring via radial mask (keeps only the outer ring opaque) */
.pg-av.lvtier-4::before,.pg-av.lvtier-5::before{
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));border:0}

/* Tier 1 · Lv 1-4 — Iron: plain, dim thin ring (near-current look) */
.pg-av.lvtier-1{border-color:var(--line-2)}
.pg-av.lvtier-1::before{inset:-4px;border:1px solid var(--line)}

/* Tier 2 · Lv 5-9 — Steel: solid brighter grey ring */
.pg-av.lvtier-2{border-color:var(--ink-4)}
.pg-av.lvtier-2::before{inset:-5px;border:2px solid var(--ink-4)}

/* Tier 3 · Lv 10-19 — Silver: bright ink ring + soft outer halo */
.pg-av.lvtier-3{border-color:var(--ink-3)}
.pg-av.lvtier-3::before{inset:-6px;border:2px solid var(--ink-2);box-shadow:0 0 0 1px var(--line),0 0 10px -3px var(--ink-2)}

/* Tier 4 · Lv 20-29 — Accent: teal gradient ring + glow */
.pg-av.lvtier-4{border-color:transparent}
.pg-av.lvtier-4::before{inset:-6px;
  background:conic-gradient(from 90deg,var(--accent),#0F8F82,var(--accent-2),#0F8F82,var(--accent));
  box-shadow:0 0 12px -2px var(--accent-glow)}

/* Tier 5 · Lv 30+ — Apex: slowly-spinning accent gradient ring + outer halo ring + strong glow */
@keyframes lvspin{to{transform:rotate(360deg)}}
.pg-av.lvtier-5{border-color:transparent}
.pg-av.lvtier-5::before{inset:-7px;
  background:conic-gradient(from 0deg,var(--accent),var(--accent-2),#0F8F82,var(--accent-2),var(--accent));
  box-shadow:0 0 18px -2px var(--accent-glow);animation:lvspin 7s linear infinite}
.pg-av.lvtier-5::after{inset:-11px;border:1px solid color-mix(in srgb,var(--accent-2) 40%,transparent)}
@media(prefers-reduced-motion:reduce){.pg-av.lvtier-5::before{animation:none}}

/* home.quests.big-card — star moved inline into the timeline row, LEFT of the overdue/deadline chip (was floating top-right, read off-balance); grip now sits alone in the corner. Full quest title shows on hover via title= (card title truncates with ellipsis). */
.camp-primary .cq-grip{right:11px}
.camp-star.camp-star-inline{position:static;top:auto;right:auto;order:0;flex:none;font-size:14px;padding:0;margin:0 1px 0 0}

/* home.watchlist.row.icon + home.watchlist.icon-picker — the per-want icon is now a click target (Notion-style picker) */
.wl-realm{cursor:pointer;border-radius:5px;transition:background .12s,opacity .12s}
.wl-realm:hover{opacity:1;background:rgba(255,255,255,.08)}
.wl-icpick{position:fixed;z-index:9000;background:#0d0d0f;border:1px solid rgba(255,255,255,.16);border-radius:10px;padding:9px;box-shadow:0 12px 34px rgba(0,0,0,.6);width:196px}
.wl-icpick-h{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-4,#8a8a92);margin:1px 2px 8px}
.wl-icpick-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.wl-icpick-btn{display:grid;place-items:center;width:24px;height:24px;padding:0;border:1px solid transparent;border-radius:6px;background:rgba(255,255,255,.05);color:#e9e9ee;cursor:pointer;transition:background .12s,border-color .12s}
.wl-icpick-btn:hover{background:rgba(255,255,255,.14)}
.wl-icpick-btn.on{border-color:#fff;background:rgba(255,255,255,.18)}
.wl-icpick-btn .realm-ic{width:16px;height:16px}

/* ── shell.levelup.overlay — player account level-up celebration (League-style modal) ── */
.lvup-ov{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(120% 120% at 50% 40%,rgba(45,212,191,.10),rgba(6,8,10,.86) 60%,rgba(6,8,10,.94));
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:lvupOvIn .3s ease-out both}
.lvup-fx{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.lvup-fx .fx-lvup-flash{position:absolute;inset:0;background:radial-gradient(closest-side at 50% 44%,color-mix(in srgb,var(--acc) 40%,transparent),transparent 62%);opacity:0;animation:fxFlash 1.9s ease-out forwards}
.lvup-fx .fx-lvup-rays{position:absolute;left:50%;top:44%;width:150vmax;height:150vmax;transform:translate(-50%,-50%);mix-blend-mode:screen;opacity:0;background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--acc) 20%,transparent) 0deg 3.5deg,transparent 3.5deg 12deg);animation:fxRays 2.2s ease-out forwards}
.lvup-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:13px;text-align:center;padding:8px 18px;width:min(340px,86vw);animation:lvupCard .5s cubic-bezier(.2,.8,.25,1) both}
.lvup-badge{position:relative;width:104px;height:114px;display:grid;place-items:center;filter:drop-shadow(0 0 26px var(--accent-glow))}
.lvup-badge::before{content:"";position:absolute;inset:0;background:linear-gradient(160deg,var(--accent-2),var(--acc));clip-path:polygon(50% 0,100% 26%,100% 74%,50% 100%,0 74%,0 26%)}
.lvup-badge::after{content:"";position:absolute;inset:3px;background:#0b0e11;clip-path:polygon(50% 0,100% 26%,100% 74%,50% 100%,0 74%,0 26%)}
.lvup-badge b{position:relative;font-family:var(--disp);font-weight:800;font-size:44px;color:#fff;text-shadow:0 0 18px var(--accent-glow)}
.lvup-t{font-family:var(--disp);font-weight:800;font-size:34px;letter-spacing:.06em;color:var(--acc);text-shadow:0 0 30px var(--accent-glow)}
.lvup-sub{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3,#9a9aa2);margin-top:-7px}
.lvup-rewards{display:flex;flex-direction:column;gap:7px;width:100%;margin-top:3px}
.lvup-rw{display:flex;align-items:center;gap:9px;padding:9px 13px;border:1px solid var(--line-2,rgba(255,255,255,.1));border-radius:10px;background:color-mix(in srgb,var(--acc) 6%,transparent);text-align:left}
.lvup-rw-ic{color:var(--acc);font-size:13px;flex:none}
.lvup-rw-t{font-family:var(--sans);font-size:13px;color:var(--ink,#e9e9ee);font-weight:600}
.lvup-next{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--ink-4,#8a8a92)}
.lvup-cont{margin-top:6px;padding:11px 30px;border:none;border-radius:10px;background:var(--acc);color:var(--ink-on-accent,#04110f);font-family:var(--disp);font-weight:700;font-size:14px;letter-spacing:.04em;cursor:pointer;box-shadow:0 8px 26px -8px var(--accent-glow)}
.lvup-cont:hover{background:var(--accent-2)}
@keyframes lvupOvIn{from{opacity:0}to{opacity:1}}
@keyframes lvupCard{from{opacity:0;transform:translateY(14px) scale(.94)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.lvup-ov{animation:none}.lvup-card{animation:none}.lvup-fx{display:none}}

/* ══════════ MINDSCAPE — knowledge map (left) + notebook you can ask (right) ══════════ */
#view-mind{padding:0}
.mind-wrap{display:flex;gap:18px;height:calc(100vh - 132px);min-height:520px;padding:8px 2px}
.mind-map{flex:0 0 600px;max-width:56%;overflow:auto;border:1px solid var(--line);border-radius:12px;
  background:radial-gradient(120% 80% at 50% 0%,rgba(45,212,191,.05),transparent 60%),var(--panel,#0E1114);position:relative}
.mind-book{flex:1 1 auto;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:2px 4px 30px}
.mind-load,.mind-none{color:var(--ink-4);font-family:var(--mono);font-size:12px;padding:22px}
.mind-canvas{position:relative;margin:auto}
.mind-edges{position:absolute;left:0;top:0;pointer-events:none}
.mind-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:3px;
  background:none;border:none;cursor:pointer;padding:4px;transition:opacity .15s,transform .12s;z-index:2}
.mind-node:hover{transform:translate(-50%,-50%) scale(1.06)}
.mind-node.dim{opacity:.32}
.mind-dot{border-radius:50%;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--tc) 90%,#fff),var(--tc));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--tc) 16%,transparent),0 0 14px color-mix(in srgb,var(--tc) 40%,transparent)}
.mind-node.sel .mind-dot{box-shadow:0 0 0 3px var(--tc),0 0 20px color-mix(in srgb,var(--tc) 65%,transparent)}
.mind-nm{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-2,#c7ccd3);max-width:120px;text-align:center;line-height:1.15;text-shadow:0 1px 4px #000}
.mind-node.sel .mind-nm{color:var(--ink,#ECEEF1)}
.mind-ct{font-family:var(--mono);font-size:9px;color:var(--tc);letter-spacing:.05em}
.mind-empty{padding:40px 30px;max-width:420px;margin:auto;text-align:center}
.mind-empty-h{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--ink,#ECEEF1);margin-bottom:8px}
.mind-empty-b{font-family:var(--sans);font-size:13px;line-height:1.55;color:var(--ink-3,#878D96)}
/* ── notebook / ask ── */
.mind-askwrap{position:sticky;top:0;z-index:3;background:linear-gradient(180deg,var(--void,#0B0C0E) 72%,transparent);padding-bottom:8px}
.mind-ask{display:flex;gap:8px}
.mind-askin{flex:1;background:var(--panel,#0E1114);border:1px solid var(--line);border-radius:10px;padding:11px 13px;
  color:var(--ink,#ECEEF1);font-family:var(--sans);font-size:14px;outline:none}
.mind-askin:focus{border-color:var(--accent,#2DD4BF)}
.mind-asksend{background:var(--accent,#2DD4BF);color:#08090B;border:0;border-radius:10px;width:44px;font-size:18px;font-weight:700;cursor:pointer}
.mind-answer:empty{display:none}
.mind-answer{margin-top:9px;background:color-mix(in srgb,var(--accent) 7%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 26%,var(--line));
  border-radius:10px;padding:12px 14px}
.mind-thinking{font-family:var(--mono);font-size:11px;color:var(--accent,#2DD4BF);letter-spacing:.05em}
.mind-ansbody{font-family:var(--sans);font-size:13.5px;line-height:1.6;color:var(--ink-1,#ECEEF1);white-space:pre-wrap}
.mind-selhd{display:flex;align-items:center;gap:8px;font-family:var(--sans);font-size:13px;color:var(--ink-2);padding:2px 2px 4px}
.mind-selhd b{color:var(--ink,#ECEEF1)}
.mind-seldot{width:9px;height:9px;border-radius:50%}
.mind-clear{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--ink-4);background:none;border:1px solid var(--line);border-radius:6px;padding:3px 8px;cursor:pointer}
.mind-clear:hover{color:var(--ink-2);border-color:var(--ink-4)}
.mind-themes{display:flex;flex-wrap:wrap;gap:7px;padding:2px 0 6px}
.mind-theme{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink-2,#c7ccd3);
  background:color-mix(in srgb,var(--tc) 9%,transparent);border:1px solid color-mix(in srgb,var(--tc) 30%,transparent);border-radius:20px;padding:5px 11px;cursor:pointer}
.mind-theme:hover{background:color-mix(in srgb,var(--tc) 18%,transparent)}
.mind-tdot{width:8px;height:8px;border-radius:50%;background:var(--tc)}
.mind-tc{font-family:var(--mono);font-size:10px;color:var(--tc)}
.mind-cards{display:flex;flex-direction:column;gap:9px}
.mind-card{background:var(--panel,#0E1114);border:1px solid var(--line);border-radius:10px;padding:11px 13px}
.mind-ct2{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink,#ECEEF1);margin-bottom:3px}
.mind-cb{font-family:var(--sans);font-size:13px;line-height:1.55;color:var(--ink-2,#c7ccd3);white-space:pre-wrap;word-break:break-word}
.mind-cm{display:flex;align-items:center;gap:7px;margin-top:7px;font-family:var(--mono);font-size:9px;color:var(--ink-4);flex-wrap:wrap}
.mind-chips{display:inline-flex;gap:5px;flex-wrap:wrap}
.mind-chip{font-family:var(--sans);font-size:10px;font-weight:600;color:var(--tc,var(--accent-2));background:color-mix(in srgb,var(--tc,var(--accent)) 10%,transparent);
  border:1px solid color-mix(in srgb,var(--tc,var(--accent)) 30%,transparent);border-radius:5px;padding:2px 7px;cursor:pointer}
@media(max-width:900px){.mind-wrap{flex-direction:column;height:auto}.mind-map{flex:none;max-width:100%;height:440px}}

/* ══ MINDSCAPE v2 — force-layout map, circle nodes, sources, HUD clearance ══ */
.mind-wrap{height:calc(100vh - 150px) !important}
.mind-book{padding-top:52px !important}   /* clear the fixed top-right HUD */
.mind-map{flex:0 0 620px !important;max-width:58% !important;overflow:hidden !important}
.mind-canvas{margin:0 !important;position:relative;width:100% !important;height:100% !important}
.mind-edges{position:absolute;left:0;top:0;pointer-events:none}
.mind-dot{border-radius:50% !important;clip-path:none !important}
.mind-node{z-index:2}
.mind-node .mind-nm{pointer-events:none}
/* section headers */
.mind-sec{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--ink-4);margin:13px 0 6px}
/* source cards (deep docs, expandable) */
.mind-src{border:1px solid var(--line);border-radius:9px;margin-bottom:7px;overflow:hidden;background:var(--panel,#0E1114)}
.mind-src-h{display:flex;align-items:center;gap:9px;padding:10px 12px;cursor:pointer}
.mind-src-h:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}
.mind-src-kind{font-family:var(--mono);font-size:8px;letter-spacing:.08em;color:var(--accent,#2DD4BF);border:1px solid color-mix(in srgb,var(--accent) 34%,transparent);border-radius:4px;padding:2px 6px;flex:none;text-transform:uppercase}
.mind-src-t{flex:1;font-family:var(--sans);font-size:13px;font-weight:600;color:var(--ink,#ECEEF1)}
.mind-src-tw{color:var(--ink-4);font-size:12px}
.mind-src.open .mind-src-h{border-bottom:1px solid var(--line)}
.mind-src-body{white-space:pre-wrap;font-family:var(--mono);font-size:11.5px;line-height:1.55;color:var(--ink-2,#c7ccd3);padding:10px 12px;max-height:440px;overflow:auto}
.mind-src-chips{display:flex;flex-wrap:wrap;gap:5px;padding:0 12px 11px}
/* dissect button on a selected topic */
.mind-dissect{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--accent,#2DD4BF);background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 34%,transparent);border-radius:6px;padding:4px 10px;cursor:pointer;white-space:nowrap}
.mind-dissect:hover{background:color-mix(in srgb,var(--accent) 20%,transparent)}
.mind-selhd .mind-clear{margin-left:6px}

/* ══════════ ATLAS — clean personal consciousness graph ══════════ */
#view-mind{padding:0 !important}
.atlas-wrap{display:flex;gap:0;height:calc(100vh - 96px);min-height:520px}
.atlas-graph{flex:1 1 auto;min-width:0;position:relative;overflow:hidden;
  background:radial-gradient(120% 90% at 50% 0%,rgba(45,212,191,.04),transparent 60%),var(--void,#0B0C0E);
  background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:38px 38px}
.atlas-side{flex:0 0 372px;max-width:44%;border-left:1px solid var(--line);background:var(--panel,#0E1114);overflow-y:auto;padding:52px 18px 26px}
.atlas-load,.atlas-side-empty{color:var(--ink-4);font-family:var(--sans);font-size:13px;line-height:1.6;padding:24px}
.atlas-canvas{position:absolute;left:0;top:0}
.atlas-edges{position:absolute;left:0;top:0;pointer-events:none}
.atlas-rel{fill:var(--accent-2,#6EE7D4);font-family:var(--mono);font-size:9px;text-anchor:middle;paint-order:stroke;stroke:#0B0C0E;stroke-width:3px}
.atlas-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:none;cursor:pointer;padding:5px;z-index:2;transition:transform .12s,opacity .15s;max-width:150px}
.atlas-node:hover{transform:translate(-50%,-50%) scale(1.07)}
.atlas-node.dim{opacity:.28}
.atlas-dot{border-radius:50%;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--tc) 92%,#fff),var(--tc));box-shadow:0 0 0 3px color-mix(in srgb,var(--tc) 14%,transparent),0 0 13px color-mix(in srgb,var(--tc) 38%,transparent)}
.atlas-node.sel .atlas-dot{box-shadow:0 0 0 3px var(--tc),0 0 20px color-mix(in srgb,var(--tc) 62%,transparent)}
.atlas-nm{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-2,#c7ccd3);text-align:center;line-height:1.15;text-shadow:0 1px 5px #000;pointer-events:none}
.atlas-nm i{font-style:normal;font-family:var(--mono);font-size:9px;color:var(--tc);opacity:.9}
.atlas-node.sel .atlas-nm{color:var(--ink,#ECEEF1)}
.atlas-empty{max-width:400px;margin:auto;text-align:center;padding:60px 24px;position:absolute;left:50%;top:34%;transform:translate(-50%,-50%)}
.atlas-empty-h{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--ink,#ECEEF1);margin-bottom:8px}
.atlas-empty-b{font-family:var(--sans);font-size:13px;line-height:1.55;color:var(--ink-3,#878D96)}
.atlas-add{position:absolute;left:16px;bottom:16px;z-index:4;display:flex;gap:6px}
.atlas-addbtn,.atlas-addgo{font-family:var(--mono);font-size:11px;color:var(--accent,#2DD4BF);background:color-mix(in srgb,var(--accent) 10%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 34%,transparent);border-radius:7px;padding:7px 12px;cursor:pointer}
.atlas-addin{font-family:var(--sans);font-size:13px;background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:7px 11px;color:var(--ink);outline:none;width:200px}
.atlas-addin:focus{border-color:var(--accent)}
/* node page (side) */
.atlas-d-h{display:flex;align-items:center;margin-bottom:8px}
.atlas-d-type{font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--tc,#2DD4BF);border:1px solid color-mix(in srgb,var(--tc,#2DD4BF) 40%,transparent);border-radius:5px;padding:3px 8px}
.atlas-d-x{margin-left:auto;background:none;border:none;color:var(--ink-4);font-size:14px;cursor:pointer}
.atlas-d-title{font-family:var(--sans);font-size:20px;font-weight:700;color:var(--ink,#ECEEF1);line-height:1.2;margin-bottom:12px}
.atlas-d-body{width:100%;min-height:110px;resize:vertical;background:var(--void,#0B0C0E);border:1px solid var(--line);border-radius:9px;padding:11px 13px;color:var(--ink-1,#ECEEF1);font-family:var(--sans);font-size:13.5px;line-height:1.6;outline:none}
.atlas-d-body:focus{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.atlas-d-sec{font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--ink-4);margin:16px 0 8px}
.atlas-d-none{font-family:var(--sans);font-size:12px;color:var(--ink-4)}
.atlas-lnk{display:flex;align-items:baseline;gap:8px;width:100%;text-align:left;background:none;border:none;border-left:2px solid var(--tc,#888);padding:6px 0 6px 10px;margin-bottom:2px;cursor:pointer;border-radius:0 6px 6px 0}
.atlas-lnk:hover{background:color-mix(in srgb,var(--tc,#2DD4BF) 8%,transparent)}
.atlas-rel-l{font-family:var(--mono);font-size:9.5px;color:var(--ink-4);white-space:nowrap;flex:none}
.atlas-lnk-t{font-family:var(--sans);font-size:13px;color:var(--ink-1,#ECEEF1)}
.atlas-newlink{display:flex;gap:6px;margin-top:9px;flex-wrap:wrap}
.atlas-nl-t{flex:1 1 130px}.atlas-nl-r{flex:1 1 110px}
.atlas-nl-t,.atlas-nl-r{background:var(--void);border:1px solid var(--line);border-radius:7px;padding:7px 10px;color:var(--ink);font-family:var(--sans);font-size:12px;outline:none;min-width:0}
.atlas-nl-t:focus,.atlas-nl-r:focus{border-color:var(--accent)}
.atlas-nl-go{background:color-mix(in srgb,var(--accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--accent) 36%,transparent);color:var(--accent);border-radius:7px;padding:0 12px;font-family:var(--mono);font-size:11px;cursor:pointer}
.atlas-d-acts{display:flex;gap:8px;margin-top:18px}
.atlas-d-dissect{flex:1;font-family:var(--mono);font-size:11px;color:#08090B;background:var(--accent,#2DD4BF);border:0;border-radius:8px;padding:9px;cursor:pointer;font-weight:700}
.atlas-d-dissect:hover{filter:brightness(1.08)}
.atlas-d-del{font-family:var(--mono);font-size:10px;color:var(--ink-4);background:none;border:1px solid var(--line);border-radius:8px;padding:0 12px;cursor:pointer}
.atlas-answer:empty{display:none}
.atlas-answer{margin-top:12px;background:color-mix(in srgb,var(--accent) 7%,var(--void));border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));border-radius:9px;padding:11px 13px}
.atlas-thinking{font-family:var(--mono);font-size:11px;color:var(--accent,#2DD4BF)}
.atlas-ansbody{font-family:var(--sans);font-size:13px;line-height:1.6;color:var(--ink-1,#ECEEF1);white-space:pre-wrap}
@media(max-width:900px){.atlas-wrap{flex-direction:column;height:auto}.atlas-graph{height:56vh}.atlas-side{flex:none;max-width:100%;border-left:0;border-top:1px solid var(--line);padding-top:16px}}
/* force circular atlas nodes (a global chamfer squares them otherwise) */
.atlas-dot{border-radius:50% !important;clip-path:none !important}

/* ══ GLOBAL HUD GUTTER — the fixed top-right level/HUD must never overlap page content ══ */
.center#main{padding-top:58px !important}
/* the home greeting already sits in its own band — pull it back up so the gutter doesn't double there */
#view-home{margin-top:-46px}
/* atlas no longer needs its own top pad (the global gutter covers it) */
.atlas-side{padding-top:16px !important}
.mind-book{padding-top:0 !important}

/* ══ BOOK TAB — Map / Journal switch ══ */
.atlas-tabs{display:flex;gap:6px;padding:2px 4px 10px;flex:none}
.atlas-tabs button{font-family:var(--sans);font-size:12.5px;font-weight:700;letter-spacing:.02em;color:var(--ink-4);background:none;border:none;border-radius:8px;padding:7px 14px;cursor:pointer;transition:color .12s,background .12s}
.atlas-tabs button:hover{color:var(--ink-2)}
.atlas-tabs button.on{color:var(--accent,#2DD4BF);background:color-mix(in srgb,var(--accent) 13%,transparent)}
.atlas-wrap{height:calc(100vh - 96px - 42px) !important}
/* journal list occupies the graph column, scrolls */
.atlas-graph.is-journal{overflow-y:auto;overflow-x:hidden;background:var(--void,#0B0C0E);background-image:none}
.ajr-wrap{max-width:640px;margin:0 auto;padding:8px 22px 60px}
.ajr-sec{font-family:var(--mono);font-size:9px;letter-spacing:.16em;color:var(--accent,#2DD4BF);margin:6px 0 12px;text-transform:uppercase}
.ajr-card{border:1px solid var(--line);border-radius:11px;background:var(--panel,#0E1114);padding:14px 16px;margin-bottom:12px}
.ajr-card.draft{border-color:color-mix(in srgb,var(--accent) 38%,var(--line));background:color-mix(in srgb,var(--accent) 5%,var(--panel))}
.ajr-t{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--ink,#ECEEF1);line-height:1.3;margin-bottom:6px}
.ajr-b{font-family:var(--sans);font-size:13.5px;line-height:1.62;color:var(--ink-2,#c7ccd3);white-space:pre-wrap}
.ajr-m{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}
.ajr-day{font-family:var(--mono);font-size:10px;color:var(--ink-4);flex:none}
.ajr-chips{display:flex;gap:6px;flex-wrap:wrap;flex:1 1 auto;min-width:0}
.ajr-chip{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--tc,#a99bf9);border:1px solid color-mix(in srgb,var(--tc,#a99bf9) 40%,transparent);border-radius:20px;padding:2px 10px;white-space:nowrap}
.ajr-ok{font-family:var(--mono);font-size:10px;font-weight:700;color:#08090B;background:var(--accent,#2DD4BF);border:0;border-radius:7px;padding:5px 11px;cursor:pointer}
.ajr-ok:hover{filter:brightness(1.08)}
.ajr-x{font-family:var(--mono);font-size:11px;color:var(--ink-4);background:none;border:1px solid var(--line);border-radius:7px;padding:4px 9px;cursor:pointer;flex:none}
.ajr-x:hover{color:#E5484D;border-color:color-mix(in srgb,#E5484D 40%,var(--line))}
.ajr-none{font-family:var(--sans);font-size:13px;line-height:1.6;color:var(--ink-4);text-align:center;padding:48px 20px}

/* ══ KARYNA PANEL — one identity only (header portrait); drop the per-message avatar repetition ══ */
.ovp-av{display:none !important}
.ovp-airow{display:block !important}
.ovp-msg.ai{margin-left:0 !important}

/* ── enlarge (⛶) — expand the floating panel to a real workspace. Sits flush next to the ▾ toggle. ── */
.ovp-max{margin-left:auto;background:none;border:none;color:var(--ink-4);font-size:12px;cursor:pointer;padding:4px 7px;border-radius:5px;line-height:1;transition:color .12s,background .12s}
.ovp-max:hover{color:var(--ink-2);background:rgba(255,255,255,.06)}
.ovp-head .ovp-min{margin-left:0 !important}   /* only ONE auto-margin in the header, else the two buttons split the gap */
.ovp-head button.ovp-max:not(:first-of-type){margin-left:0 !important}   /* clear+enlarge cluster together (only the first carries the auto-margin) */
.ov-chat#ovPlan.ovp-max{width:min(940px,94vw) !important;max-width:94vw !important;height:min(90vh,940px) !important;right:3vw !important;bottom:5vh !important}
@media(max-width:560px){.ov-chat#ovPlan.ovp-max{width:calc(100vw - 12px) !important;height:90vh !important;right:6px !important;bottom:6px !important}}

/* ── rich text: render Karyna's structured replies (and journal/source reads) with real structure ── */
.ov-chat#ovPlan .ovp-msg.ai .rx-p,.atlas-read .rx-p{margin:0 0 9px;line-height:1.62;font-size:13.5px}
.ov-chat#ovPlan .ovp-msg.ai .rx-p:last-child,.atlas-read .rx-p:last-child{margin-bottom:0}
.ov-chat#ovPlan .ovp-msg.ai .rx-h,.atlas-read .rx-h{font-family:var(--sans);font-weight:700;color:var(--ink,#ECEEF1);margin:13px 0 6px;font-size:14.5px;line-height:1.3}
.ov-chat#ovPlan .ovp-msg.ai .rx-ul,.ov-chat#ovPlan .ovp-msg.ai .rx-ol,.atlas-read .rx-ul,.atlas-read .rx-ol{margin:4px 0 10px;padding-left:20px}
.ov-chat#ovPlan .ovp-msg.ai li,.atlas-read li{margin:3px 0;line-height:1.55;font-size:13.5px}
.ov-chat#ovPlan .ovp-msg.ai .rx-q,.atlas-read .rx-q{border-left:2px solid var(--accent,#2DD4BF);margin:9px 0;padding:5px 0 5px 13px;color:var(--ink,#ECEEF1);font-style:italic;background:color-mix(in srgb,var(--accent) 6%,transparent);border-radius:0 6px 6px 0}
.ov-chat#ovPlan .ovp-msg.ai code,.atlas-read code{font-family:var(--mono);font-size:12px;background:rgba(255,255,255,.07);padding:1px 5px;border-radius:4px}
.ov-chat#ovPlan .ovp-msg.ai strong,.atlas-read strong{color:var(--ink,#ECEEF1);font-weight:700}
.ov-chat#ovPlan .ovp-msg.ai a,.atlas-read a{color:var(--accent,#2DD4BF)}

/* ── unified map: satellite (journal/source) nodes + in-panel reader ── */
.atlas-node.atlas-sat{max-width:112px}
.atlas-node.atlas-sat .atlas-nm{font-size:9.5px;color:var(--ink-3,#878D96);max-width:104px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.atlas-node.atlas-sat .atlas-dot{opacity:.9}
/* dynamic feel: draggable nodes, pannable canvas */
.atlas-graph{cursor:grab}
.atlas-graph.atlas-grabbing{cursor:grabbing}
.atlas-node{cursor:grab}
.atlas-graph.atlas-grabbing .atlas-node{cursor:grabbing}
.atlas-canvas{will-change:transform}
/* labels: minimal at rest — only big hubs; reveal any node on hover or when selected/adjacent.
   Absolutely positioned BELOW the dot so the node box = the dot → edges connect to the dot centre, not the text. */
.atlas-nm{display:none;position:absolute;top:calc(100% + 2px);left:50%;transform:translateX(-50%);max-width:132px;white-space:normal}
.atlas-node{gap:0 !important}

/* ══ CODEX: 50/50 document pane + notes (your words + AI analysis) + composer + search ══ */
.atlas-side{flex:1 1 46% !important;max-width:540px !important;min-width:360px}
@media(max-width:900px){.atlas-side{max-width:100% !important;min-width:0}}
.atlas-search{margin-left:auto;background:var(--void,#0B0C0E);border:1px solid var(--line);border-radius:8px;padding:6px 11px;color:var(--ink-1);font-family:var(--sans);font-size:12px;outline:none;width:200px;max-width:32vw}
.atlas-search:focus{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.atlas-d-def{font-family:var(--sans);font-size:13px;line-height:1.55;color:var(--ink-3,#878D96);margin:2px 0 4px;font-style:italic}
.atlas-write{display:flex;align-items:flex-end;gap:8px;margin:4px 0 18px;border-bottom:1px solid var(--line);padding-bottom:6px;transition:border-color .12s}
.atlas-write:focus-within{border-bottom-color:color-mix(in srgb,var(--accent) 55%,var(--line))}
.atlas-write-in{flex:1;background:none;border:none;resize:none;overflow:hidden;color:var(--ink-1,#ECEEF1);font-family:var(--sans);font-size:14px;line-height:1.6;outline:none;padding:3px 0;min-height:24px}
.atlas-write-in::placeholder{color:var(--ink-4)}
.atlas-write-go{flex:none;background:none;border:none;color:var(--ink-4);font-size:15px;cursor:pointer;padding:2px 4px;line-height:1;transition:color .12s}
.atlas-write-go:hover{color:var(--accent,#2DD4BF)}
.atlas-write.busy{border-bottom:none;padding:8px 0}
.atlas-note{border:1px solid var(--line);border-radius:10px;background:var(--panel,#0E1114);padding:12px 13px;margin-bottom:10px}
.atlas-note-t{font-family:var(--sans);font-size:14px;font-weight:700;color:var(--ink,#ECEEF1);margin-bottom:5px}
.atlas-note-b{font-family:var(--sans);font-size:13.5px;line-height:1.62;color:var(--ink-1,#ECEEF1)}
.atlas-note-b .rx-p{margin:0 0 7px}
.atlas-note-an{margin-top:10px;padding-top:9px;border-top:1px dashed var(--line)}
.atlas-note-anh{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--accent-2,#6EE7D4);margin-bottom:5px;text-transform:uppercase}
.atlas-note-an .rx-p{font-size:12.5px;color:var(--ink-2,#c7ccd3);margin:0 0 6px;line-height:1.55}
.atlas-note-m{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:11px}
.atlas-note-day{font-family:var(--mono);font-size:9.5px;color:var(--ink-4)}
.atlas-realm{font-family:var(--mono);font-size:9px;letter-spacing:.05em;color:var(--ink-3,#878D96);border:1px solid var(--line);border-radius:20px;padding:2px 8px;text-transform:lowercase}
.atlas-realm.tag{color:var(--accent-2,#6EE7D4);border-color:color-mix(in srgb,var(--accent-2,#6EE7D4) 30%,transparent)}
.atlas-note-x{margin-left:auto;background:none;border:none;color:var(--ink-4);font-size:11px;cursor:pointer}
.atlas-note-x:hover{color:#E5484D}
.atlas-side-emptyh{font-family:var(--sans);font-size:16px;font-weight:700;color:var(--ink,#ECEEF1);margin-bottom:8px}
.atlas-node.lbl .atlas-nm,.atlas-node.sel .atlas-nm,.atlas-node.near .atlas-nm,.atlas-node:hover .atlas-nm{display:block}
.atlas-node.dim .atlas-nm{display:none !important}
.atlas-node:hover,.atlas-node.sel{z-index:6}
.atlas-node.dim{opacity:.32}
/* learn action + tighter, more minimal node panel */
.atlas-d-learn{font-family:var(--mono);font-size:11px;color:var(--accent-2,#6EE7D4);background:none;border:1px solid color-mix(in srgb,var(--accent-2,#6EE7D4) 34%,transparent);border-radius:8px;padding:0 14px;cursor:pointer}
.atlas-d-learn:hover{background:color-mix(in srgb,var(--accent-2,#6EE7D4) 10%,transparent)}
.atlas-side{padding:52px 16px 26px !important}
.atlas-d-sec{margin:14px 0 6px !important;opacity:.72}
.atlas-lnk{padding:5px 0 5px 9px !important;margin-bottom:1px !important}
.atlas-lnk-t{font-size:12.5px !important}
/* keep legend + add-concept out of the bottom-left (LEX inspect lives there) */
.atlas-legend{left:auto !important;right:14px !important;bottom:14px !important}
.atlas-legend span[data-atlaskind]{cursor:pointer;padding:2px 7px;border-radius:5px;transition:background .12s,color .12s}
.atlas-legend span[data-atlaskind]:hover{color:var(--ink-2,#c7ccd3);background:rgba(255,255,255,.05)}
.atlas-legend span.on{color:var(--ink,#ECEEF1);background:rgba(255,255,255,.1)}
.atlas-legend-clr{cursor:pointer;color:var(--ink-4);border-left:1px solid var(--line);padding-left:9px !important;margin-left:3px}
.atlas-add{left:auto !important;right:14px !important;top:12px !important;bottom:auto !important}
/* animated "thinking" — shimmer text + bouncing dots (like a live thought, not a static line) */
@keyframes ovpShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes ovpDot{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.ovp-think{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:13px;font-weight:600;background:linear-gradient(90deg,#59626e 20%,#e9f4f0 50%,#59626e 80%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:ovpShimmer 1.6s linear infinite}
.ovp-td{display:inline-flex;gap:3px}
.ovp-td i{width:4px;height:4px;border-radius:50%;background:var(--accent,#2DD4BF);display:inline-block;animation:ovpDot 1s ease-in-out infinite}
.ovp-td i:nth-child(2){animation-delay:.18s}
.ovp-td i:nth-child(3){animation-delay:.36s}
/* one-click: save the whole conversation into journal + Mindscape */
.ovp-reflect{flex:none;margin:0 14px 9px;font-family:var(--mono);font-size:11px;letter-spacing:.02em;color:var(--accent,#2DD4BF);background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid color-mix(in srgb,var(--accent) 26%,transparent);border-radius:8px;padding:8px 12px;cursor:pointer;text-align:center;transition:background .12s}
.ovp-reflect:hover{background:color-mix(in srgb,var(--accent) 16%,transparent)}
.ovp-reflect:disabled{opacity:.55;cursor:default}
.atlas-read{font-family:var(--sans);font-size:13.5px;line-height:1.62;color:var(--ink-2,#c7ccd3);margin:8px 0 6px}

/* ── Mindscape: recent-discussions panel (top-left) + tier legend (bottom-left) ── */
.atlas-recent{position:absolute;left:14px;top:12px;z-index:5;width:210px;max-width:38%;background:color-mix(in srgb,var(--panel,#0E1114) 82%,transparent);border:1px solid var(--line);border-radius:10px;padding:9px 10px;backdrop-filter:blur(3px)}
.atlas-recent-h{font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;color:var(--ink-4);margin-bottom:7px}
.atlas-recent-i{display:block;width:100%;text-align:left;background:none;border:none;border-left:2px solid #63C7F5;padding:4px 0 4px 8px;margin-bottom:3px;color:var(--ink-2,#c7ccd3);font-family:var(--sans);font-size:11.5px;line-height:1.3;cursor:pointer;border-radius:0 5px 5px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atlas-recent-i:hover{background:rgba(99,199,245,.1);color:var(--ink,#ECEEF1)}
.atlas-recent-i.draft{border-left-color:var(--accent,#2DD4BF);opacity:.85}
.atlas-legend{position:absolute;left:14px;bottom:14px;z-index:5;display:flex;gap:11px;flex-wrap:wrap;background:color-mix(in srgb,var(--panel,#0E1114) 78%,transparent);border:1px solid var(--line);border-radius:8px;padding:6px 10px}
.atlas-legend span{font-family:var(--mono);font-size:9.5px;color:var(--ink-3,#878D96);display:flex;align-items:center;gap:5px}
.atlas-legend span::before{content:"";width:8px;height:8px;border-radius:50%}
.atlas-legend span[data-lk="want"]::before{background:#2DD4BF}
.atlas-legend span[data-lk="virtue"]::before{background:#a99bf9}
.atlas-legend span[data-lk="habit"]::before{background:#3ED66B}
.atlas-legend span[data-lk="quest"]::before{background:#ECC94B}
.atlas-legend span[data-lk="journal"]::before{background:#63C7F5}

/* ── chat: confirmations for what the conversation wrote to journal/Mindscape ── */
.ovp-donewrap{display:flex;flex-direction:column;gap:4px;margin-top:9px}
.ovp-did{font-family:var(--mono);font-size:10.5px;color:#3ED66B;background:color-mix(in srgb,#3ED66B 9%,transparent);border:1px solid color-mix(in srgb,#3ED66B 26%,transparent);border-radius:6px;padding:4px 9px;align-self:flex-start}
