/* ══════════════════════════════════════════════════════════════
   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{
  /* surfaces → near-black */
  --void:#0A0A0B; --void-1:#0C0C0E; --void-2:#101012;
  /* ink → white / greys */
  --text:#FFFFFF; --text-2:#B7B7BD; --text-3:#6C6C74;
  /* glass + hairlines */
  --glass:rgba(255,255,255,.03); --glass-2:rgba(255,255,255,.05);
  --brd:rgba(255,255,255,.10); --brd-2:rgba(255,255,255,.20);
  /* chrome accents → white (identity color comes from inline styles) */
  --violet:#FFFFFF; --cyan:#FFFFFF; --green:#B7B7BD; --blue:#8FB2C4;
  --gold:#C7A038; --rose:#C9799F;
  /* global chrome accent = WHITE (no cycling). Identity colour is applied only
     to identity-owned things (campaign cards, hero) inline by game.js. */
  --acc:#FFFFFF;
  /* aliases so the mock-derived class names resolve (were undefined → invisible borders) */
  --ink:#FFFFFF; --ink-2:#B7B7BD; --ink-3:#6C6C74; --ink-4:#3A3A40;
  --line:rgba(255,255,255,.10); --line-2:rgba(255,255,255,.22); --line-3:rgba(255,255,255,.05);
  --panel:#101012; --panel-2:#151518; --raise:#1A1A1E; --black:#0A0A0B;
  /* type */
  --disp:'Oswald',sans-serif; --mono:'Oswald',sans-serif; --sans:'Inter',sans-serif;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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