/* NRV brand (near-black + lime) — shared calendar + Quick View styles for the
   athlete app and the coach Builder. Everything is scoped under .nrv-brand so
   the coach page (light/dark legacy theme, same generic class names) is only
   restyled where the brand applies. Compliance colours follow TrainingPeaks'
   code (green / yellow / orange / red / grey), with NRV lime as "done". */
.nrv-brand {
  --bg:#0f0f0e; --surface:#181816; --surface2:#22221f; --line:#2e2e2a; --line-soft:rgba(46,46,42,.6); --line-hi:#4a4a44;
  --faint:#45453f; --text:#f3f2ec; --text-2:#cfcec7; --muted:#97968e;
  /* lime: --lime is the FILL (buttons, pills, today); --lime-text is lime used as text / icon on the page;
     --lime-rgb feeds borders and tints (rgba(var(--lime-rgb), a)); --lime-bar = bars and chart fills */
  --lime:#c8f542; --lime-ink:#141413; --lime-soft:rgba(200,245,66,.12); --lime-text:#c8f542; --lime-rgb:200,245,66; --lime-bar:#c8f542;
  --done:#c8f542; --partial:#f5c84c; --off:#f08a3c; --missed:#e5534b; --unplanned:#9aa6b2; --planned:#6b6b64;
  --done-text:#c8f542; --partial-text:#f5c84c; --off-text:#f08a3c; --on-strong:#141413;   /* on-strong: text on a missed / rest fill */
  --partial-rgb:245,200,76; --off-rgb:240,138,60; --missed-rgb:229,83,75; --accent-rgb:111,180,255;
  --t-done:rgba(200,245,66,.065); --t-partial:rgba(245,200,76,.08); --t-off:rgba(240,138,60,.09); --t-missed:rgba(229,83,75,.09);
  --t-rest:rgba(var(--accent-rgb),.06); --rest:var(--accent);
  --atl:#ff6fae; --note-ink:#ecd9a0; --missed-ink:#f0a6a1;
  --prof-easy:#55554e; --prof-mid:#6fb4ff;
  /* names the shared workout view and the coach page read */
  --card:var(--surface); --panel:var(--surface2); --border:#3a3a35; --accent:#6fb4ff; --accent-bg:rgba(111,180,255,.12);
  --ok:#c8f542; --ok-bg:rgba(200,245,66,.12); --warn:#f5c84c; --warn-bg:rgba(245,200,76,.12);
  --danger:#ff6262; --danger-bg:rgba(229,83,75,.14); --mono:ui-monospace,Menlo,monospace;
  /* translucent sticky bars, faint panel shade, shadows, modal scrim, toggle knob */
  --bar-bg:#0f0f0e; --bar-blur:none; --shade:rgba(255,255,255,.02); --hover:rgba(255,255,255,.04); --shadow:rgba(0,0,0,.55); --scrim:rgba(0,0,0,.62); --knob:#f3f2ec;
  --safe-t: env(safe-area-inset-top, 0px); --safe-b: env(safe-area-inset-bottom, 0px);
  --sum-w: 214px;
  color:var(--text);
}
/* Light theme (html[data-theme="light"], set by /ui/shared/nrv-theme.js). Lime stays the brand
   FILL; lime as text, borders and thin lines turns olive (lime on white is ~1.3:1). Compliance
   colours are darkened to >= 3:1 on white as stripes/icons (amber ~2.6:1, it can't go further and
   stay yellow); their *-text variants are >= 4.5:1 for text. */
:root[data-theme="light"].nrv-brand, :root[data-theme="light"] .nrv-brand {
  --bg:#f3f3ee; --surface:#ffffff; --surface2:#ebeae4; --line:#dcdbd3; --line-soft:rgba(220,219,211,.75); --line-hi:#b5b4aa;
  --faint:#c4c3ba; --text:#141413; --text-2:#3e3d38; --muted:#68675f;
  --lime:#c8f542; --lime-ink:#141413; --lime-soft:rgba(200,245,66,.38); --lime-text:#4a6b00; --lime-rgb:106,150,0; --lime-bar:#8cbf00;
  --done:#6a9600; --partial:#d19a00; --off:#e0661a; --missed:#d53b32; --unplanned:#76828e; --planned:#94938a;
  --done-text:#4a6b00; --partial-text:#8a6400; --off-text:#b14c0c; --on-strong:#ffffff;
  --partial-rgb:209,154,0; --off-rgb:224,102,26; --missed-rgb:213,59,50; --accent-rgb:31,111,209;
  --t-done:rgba(200,245,66,.17); --t-partial:rgba(245,200,76,.15); --t-off:rgba(240,138,60,.11); --t-missed:rgba(213,59,50,.07);
  --t-rest:rgba(var(--accent-rgb),.06);
  --atl:#d1307a; --note-ink:#6b5000; --missed-ink:#a3241d;
  --prof-easy:#cfcec6; --prof-mid:#4a8fe0;
  --border:#d2d1c8; --accent:#1f6fd1; --accent-bg:rgba(31,111,209,.1);
  --ok:#4f7a00; --ok-bg:rgba(106,150,0,.12); --warn:#8f6200; --warn-bg:rgba(209,154,0,.14);
  --danger:#c9302a; --danger-bg:rgba(213,59,50,.09);
  --bar-bg:#ffffff; --bar-blur:none; --shade:rgba(0,0,0,.022); --hover:rgba(0,0,0,.04); --shadow:rgba(20,20,19,.16); --scrim:rgba(20,20,19,.38); --knob:#ffffff;
}
/* the NRV wordmark (both apps' headers, athlete login): lime on dark, the black wordmark on
   light. content:url() swaps the image (Safari, Chrome); the filter is the fallback elsewhere
   (black silhouette of the lime file = the same mark) and leaves the black file unchanged. */
:root[data-theme="light"] img[src$="/nrv-logo-clean.png"] { content:url("/ui/shared/nrv-logo-light.png"); filter:brightness(0); }
body.nrv-brand { background:var(--bg); color:var(--text); -webkit-font-smoothing:antialiased; }
.nrv-brand [hidden] { display:none !important; }
.nrv-brand a { color:var(--lime-text); }

/* ---------- primitives ---------- */
.nrv-brand .muted { color:var(--muted); font-size:13px; }
.nrv-brand .card { background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:14px 16px; margin-bottom:10px; color:var(--text); }
.nrv-brand .row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.nrv-brand .spread { justify-content:space-between; }
.nrv-brand .pill { font-size:11px; font-weight:700; padding:3px 9px; border-radius:99px; background:var(--surface2); color:var(--muted); white-space:nowrap; }
.nrv-brand .pill.lime { background:var(--lime); color:var(--lime-ink); }
.nrv-brand .pill.sm { font-size:10px; padding:1px 7px; }
.nrv-brand .pill.ok { background:var(--ok-bg); color:var(--ok); }
.nrv-brand .pill.warn { background:var(--warn-bg); color:var(--warn); }
.nrv-brand .pill.danger { background:var(--danger-bg); color:var(--danger); }
.nrv-brand .pill.info { background:var(--accent-bg); color:var(--accent); }
.nrv-brand .banner { background:var(--warn-bg); color:var(--warn); border-radius:12px; padding:10px 14px; font-size:13.5px; }
.nrv-brand .stats { display:flex; gap:8px; flex-wrap:wrap; }
.nrv-brand .stat { background:var(--panel); border-radius:10px; padding:7px 11px; text-align:center; min-width:56px; }
.nrv-brand .stat b { display:block; font-size:16px; }
.nrv-brand .stat span { font-size:10px; color:var(--muted); text-transform:uppercase; letter-spacing:.5px; }
.nrv-brand button { font:inherit; color:inherit; }
.nrv-brand .btn, .nrv-brand button.primary { background:var(--lime); color:var(--lime-ink); border:none; border-radius:12px; padding:13px 18px;
  font-weight:800; font-size:15px; width:100%; cursor:pointer; }
.nrv-brand button.primary { width:auto; padding:9px 16px; font-size:14px; border-radius:10px; }
.nrv-brand .btn.sm { width:auto; padding:8px 16px; font-size:13.5px; border-radius:10px; }
.nrv-brand .btn:disabled, .nrv-brand button:disabled { opacity:.5; cursor:default; }
.nrv-brand .btn.ghost, .nrv-brand button.ghost { background:none; color:var(--text); border:1px solid var(--line); border-radius:12px;
  padding:9px 14px; cursor:pointer; font-weight:inherit; width:auto; }
.nrv-brand button.ghost.sm { padding:6px 12px; font-size:13px; border-radius:10px; }
.nrv-brand button.ghost:hover:not(:disabled) { border-color:var(--line-hi); }
.nrv-brand button.ghost.lime { border-color:rgba(var(--lime-rgb),.55); color:var(--lime-text); }
.nrv-brand .spin { display:inline-block; width:14px; height:14px; border:2px solid var(--muted); border-top-color:transparent;
  border-radius:50%; animation:nc-sp 0.8s linear infinite; vertical-align:-2px; }
@keyframes nc-sp { to { transform:rotate(360deg); } }
/* form controls: inside brand surfaces only (sheets, the coach band) — the coach
   page's legacy modals keep their own compact inputs */
.nrv-brand :is(.sheet, .nc-ui) :is(input:not([type=checkbox]):not([type=radio]), textarea, select) {
  font:inherit; color:var(--text); background:var(--surface2); border:1px solid var(--line); border-radius:12px;
  padding:12px 14px; width:100%; outline:none; }
.nrv-brand :is(.sheet, .nc-ui) :is(input, textarea, select):focus { border-color:rgb(var(--lime-rgb)); }
.nrv-brand :is(.sheet, .nc-ui) textarea { min-height:76px; resize:vertical; font-family:inherit; font-size:14px; line-height:1.5; }
.nrv-brand :is(.sheet, .nc-ui) select { padding:11px 12px; }
.nrv-brand input[type=checkbox] { accent-color:var(--lime); }
.nrv-brand h3 { font-size:11.5px; font-weight:800; text-transform:uppercase; letter-spacing:1.1px; color:var(--muted); margin:18px 0 8px; }
.nrv-brand h1.big { font-size:26px; font-weight:850; font-style:italic; text-transform:uppercase; letter-spacing:.3px; margin:4px 0 2px; }
.nrv-brand .seg { display:inline-flex; background:var(--surface2); border-radius:10px; padding:3px; }
.nrv-brand .seg button { background:none; border:none; color:var(--muted); font-weight:700; font-size:13px; padding:7px 12px; border-radius:8px; cursor:pointer; }
.nrv-brand .seg button.on { background:var(--surface); color:var(--text); }
.nrv-brand .seg.wrap { flex-wrap:wrap; }
.nrv-brand .form-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.nrv-brand .form-grid label { font-size:12px; color:var(--muted); display:block; }
.nrv-brand .form-grid .full { grid-column:1 / -1; }
.nrv-brand table { color:var(--text); }
.nrv-brand details summary { color:var(--muted); }

/* ---------- sheets: full screen on the phone, centred "Quick View" on a computer ---------- */
.nrv-brand .sheet { position:fixed; inset:0; z-index:50; background:var(--bg); overflow-y:auto; -webkit-overflow-scrolling:touch;
  animation:nc-up .2s ease-out; text-align:left; }
.nrv-brand .sheet-in { min-height:100%; padding-bottom:calc(24px + var(--safe-b)); }
@keyframes nc-up { from { transform:translateY(20px); opacity:0; } to { transform:none; opacity:1; } }
.nrv-brand .sheet .bar { position:sticky; top:0; z-index:5; display:flex; align-items:center; gap:10px; padding:calc(10px + var(--safe-t)) 12px 10px;
  background:var(--bar-bg); backdrop-filter:var(--bar-blur, blur(12px)); -webkit-backdrop-filter:var(--bar-blur, blur(12px)); border-bottom:1px solid var(--line); }
.nrv-brand .sheet .bar b { flex:1; font-size:15px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.nrv-brand .sheet .bar-x { display:flex; gap:6px; align-items:center; }
.nrv-brand .sheet .body { padding:14px 16px 10px; }
.nrv-brand .back { background:none; border:none; color:var(--lime-text); font-size:16px; font-weight:700; padding:6px 8px; cursor:pointer; }
.nrv-brand .sheet .x { display:none; background:none; border:1px solid var(--line); color:var(--text); border-radius:10px; width:34px; height:34px; cursor:pointer; font-size:15px; }

/* ---------- calendar (TrainingPeaks layout) ---------- */
.nrv-brand .calbar { position:sticky; top:var(--hdr, 0px); z-index:15; background:var(--bar-bg); backdrop-filter:var(--bar-blur, blur(12px));
  -webkit-backdrop-filter:var(--bar-blur, blur(12px)); padding:10px 12px 8px; border-bottom:1px solid var(--line); }
.nrv-brand .calrow { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.nrv-brand .calrow h1 { font-size:21px; margin:0; }
.nrv-brand .calrow-r { display:flex; align-items:center; gap:8px; }
.nrv-brand .legend { display:flex; gap:12px; font-size:11.5px; color:var(--muted); margin-top:6px; overflow-x:auto; white-space:nowrap; scrollbar-width:none; }
.nrv-brand .legend::-webkit-scrollbar { display:none; }
.nrv-brand .legend span { display:inline-flex; align-items:center; gap:5px; }
.nrv-brand .legend i { width:9px; height:9px; border-radius:3px; background:var(--c); display:inline-block; }
.nrv-brand .legend i.dash { background:none; border:1.5px dashed var(--planned); }
.nrv-brand .calhead { display:none; }
.nrv-brand .weeks { padding:0 12px; }
.nrv-brand .sent { height:1px; }
/* phone: one week = summary card + 7 day rows */
.nrv-brand .wk { display:flex; flex-direction:column; padding:12px 0 6px; border-bottom:1px solid var(--line); }
.nrv-brand .ws { order:-1; background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:10px 12px; margin-bottom:4px; }
.nrv-brand .wk.cur .ws { border-color:rgba(var(--lime-rgb),.45); }
.nrv-brand .ws-t { font-weight:800; font-size:13px; text-transform:uppercase; letter-spacing:.6px; margin-bottom:6px; }
.nrv-brand .ws-pmc { display:flex; gap:6px; margin-bottom:8px; }
.nrv-brand .ws-pmc span { flex:1; background:var(--surface2); border-radius:9px; padding:5px 6px; text-align:center; }
.nrv-brand .ws-pmc b { display:block; font-size:16px; line-height:1.1; }
.nrv-brand .ws-pmc i { font-style:normal; font-size:9.5px; color:var(--muted); text-transform:uppercase; letter-spacing:.4px; }
.nrv-brand .ws-pmc b.c { color:var(--lime-text); } .nrv-brand .ws-pmc b.a { color:var(--atl); } .nrv-brand .ws-pmc b.f { color:var(--accent); } .nrv-brand .ws-pmc b.n { color:var(--off-text); }
.nrv-brand .ws-l { display:flex; align-items:baseline; gap:6px; font-size:12.5px; padding:2px 0; }
.nrv-brand .ws-l span { color:var(--muted); flex:1; }
.nrv-brand .ws-l b { font-weight:750; font-variant-numeric:tabular-nums; }
.nrv-brand .ws-l em { font-style:normal; color:var(--muted); font-variant-numeric:tabular-nums; }
.nrv-brand .ws-bar { height:5px; background:var(--surface2); border-radius:4px; overflow:hidden; margin:3px 0 4px; }
.nrv-brand .ws-bar i { display:block; height:100%; background:var(--lime-bar); border-radius:4px; }
.nrv-brand .ws-sp { border-top:1px solid var(--line); margin-top:6px; padding-top:6px; display:flex; flex-direction:column; gap:3px; }
.nrv-brand .ws-sp div { display:flex; align-items:center; gap:6px; font-size:12px; font-variant-numeric:tabular-nums; }
.nrv-brand .ws-sp svg { width:14px; height:14px; color:var(--muted); flex:none; }
.nrv-brand .ws-sp span:first-of-type { flex:1; }
.nrv-brand .ws-sp em { font-style:normal; color:var(--muted); }
.nrv-brand .ws-note { font-size:10.5px; color:var(--muted); margin-top:5px; }
.nrv-brand .dc { display:grid; grid-template-columns:44px minmax(0,1fr); gap:10px; padding:7px 0; border-bottom:1px solid var(--line-soft); }
.nrv-brand .dc:last-of-type { border-bottom:none; }
.nrv-brand .dh { display:flex; flex-direction:column; align-items:center; padding-top:3px; color:var(--muted); font-size:11px; line-height:1.2; }
.nrv-brand .dh .dw { text-transform:uppercase; font-weight:700; letter-spacing:.4px; font-size:10.5px; }
.nrv-brand .dh .dn { font-size:18px; font-weight:800; color:var(--text); }
.nrv-brand .dh .dm { display:none; }
.nrv-brand .dc.today .dh .dn { color:var(--lime-ink); background:var(--lime); border-radius:99px; min-width:30px; text-align:center; padding:1px 6px; margin-top:2px; }
.nrv-brand .dc.today .dh .dw { color:var(--lime-text); }
.nrv-brand .dc.empty .dx::before { content:'—'; color:var(--faint); font-size:13px; line-height:30px; }
.nrv-brand .dx { min-width:0; }
/* workout card */
.nrv-brand .wo { position:relative; background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--st);
  border-radius:9px; padding:7px 9px 8px; margin-bottom:6px; cursor:pointer; --st:var(--planned); font-size:13px; color:var(--text); }
.nrv-brand .wo:hover { border-top-color:var(--line-hi); border-right-color:var(--line-hi); border-bottom-color:var(--line-hi); }
.nrv-brand .wo:active { transform:scale(.99); }
.nrv-brand .wo.s-done { --st:var(--done); background:linear-gradient(var(--t-done), var(--t-done)), var(--surface); }
.nrv-brand .wo.s-partial { --st:var(--partial); background:linear-gradient(var(--t-partial), var(--t-partial)), var(--surface); }
.nrv-brand .wo.s-off { --st:var(--off); background:linear-gradient(var(--t-off), var(--t-off)), var(--surface); }
.nrv-brand .wo.s-missed { --st:var(--missed); background:linear-gradient(var(--t-missed), var(--t-missed)), var(--surface); }
.nrv-brand .wo.s-unplanned { --st:var(--unplanned); }
.nrv-brand .wo.s-planned { border-style:dashed; border-left-style:solid; }
.nrv-brand .wo.s-rest { --st:var(--rest); background:linear-gradient(var(--t-rest), var(--t-rest)), var(--surface); }
.nrv-brand .wo-h { display:flex; align-items:center; gap:6px; }
.nrv-brand .wo-h svg { width:16px; height:16px; flex:none; color:var(--st); }
.nrv-brand .wo.s-planned .wo-h svg { color:var(--text); }
.nrv-brand .wo-h b { flex:1; min-width:0; font-size:13px; font-weight:750; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.nrv-brand .wo-v { display:flex; flex-wrap:wrap; gap:1px 9px; margin-top:3px; font-variant-numeric:tabular-nums; }
.nrv-brand .wo-v b { font-weight:750; }
.nrv-brand .wo.s-planned .wo-v, .nrv-brand .wo.s-missed .wo-v { color:var(--text-2); }
.nrv-brand .wo-pl { color:var(--muted); font-size:11.5px; margin-top:1px; font-variant-numeric:tabular-nums; }
.nrv-brand .wo-x { color:var(--missed); font-size:11.5px; font-weight:700; margin-top:2px; }
.nrv-brand .wo-d { color:var(--muted); font-size:11.5px; line-height:1.35; margin-top:4px; display:-webkit-box; -webkit-line-clamp:2;
  -webkit-box-orient:vertical; overflow:hidden; }
.nrv-brand svg.prof { display:block; width:100%; height:20px; margin-top:5px; }
.nrv-brand svg.prof.big { height:64px; margin:2px 0 10px; }
.nrv-brand .wo-f { display:flex; flex-wrap:wrap; gap:4px 8px; margin-top:5px; align-items:center; }
.nrv-brand .wo-f .cm { display:inline-flex; align-items:center; gap:3px; color:var(--muted); font-size:11.5px; font-weight:700; }
.nrv-brand .wo-f .cm svg { width:13px; height:13px; }
.nrv-brand .wo-f .cm.new { color:var(--lime-text); }
.nrv-brand .wo-f .ck { font-size:10.5px; font-weight:800; color:var(--lime-ink); background:var(--lime); border-radius:99px; padding:1px 7px; }
.nrv-brand .ev { display:flex; align-items:center; gap:6px; flex-wrap:wrap; border:1px solid rgba(var(--lime-rgb),.5); background:var(--lime-soft);
  border-radius:9px; padding:6px 8px; margin-bottom:6px; font-size:12.5px; }
.nrv-brand .ev b { flex:1; min-width:0; }
.nrv-brand .ev .ev-p { font-size:10px; font-weight:900; background:var(--lime); color:var(--lime-ink); border-radius:5px; padding:1px 6px; }
.nrv-brand .nt { display:flex; gap:6px; align-items:flex-start; background:rgba(var(--partial-rgb),.09); border:1px solid rgba(var(--partial-rgb),.3);
  border-radius:9px; padding:6px 8px; margin-bottom:6px; font-size:12px; color:var(--note-ink); cursor:pointer; }
.nrv-brand .nt svg { width:13px; height:13px; flex:none; margin-top:1px; }
.nrv-brand .nt.un { background:rgba(var(--missed-rgb),.1); border-color:rgba(var(--missed-rgb),.4); color:var(--missed-ink); }
.nrv-brand .nt.un i { font-style:normal; font-size:11px; line-height:14px; }
.nrv-brand .dh .add { display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; border-radius:7px;
  border:1px solid var(--line); background:none; color:var(--muted); font-size:15px; line-height:1; cursor:pointer; padding:0; margin-top:4px; }
.nrv-brand .dh .add:hover { color:var(--lime-text); border-color:rgb(var(--lime-rgb)); }
.nrv-brand .dc.drop { outline:2px dashed rgb(var(--lime-rgb)); outline-offset:-3px; background:rgba(var(--lime-rgb),.06); }
.nrv-brand .wo[data-drag="1"] { cursor:grab; -webkit-touch-callout:none; -webkit-user-select:none; user-select:none; }
.nrv-brand .wo.dragging { opacity:.4; }
.nrv-brand .nc-ghost { position:fixed; z-index:80; pointer-events:none; opacity:.92; transform:rotate(-2deg) scale(1.03);
  box-shadow:0 10px 30px var(--shadow); margin:0; }
body.nc-dragging { -webkit-user-select:none; user-select:none; }
.nrv-brand .hl { font-size:11px; color:var(--muted); margin:2px 0 4px; font-variant-numeric:tabular-nums; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ---------- quick view ---------- */
.nrv-brand .qv-h { display:flex; gap:12px; align-items:flex-start; --st:var(--planned); }
.nrv-brand .qv-h.s-done { --st:var(--done); } .nrv-brand .qv-h.s-partial { --st:var(--partial); } .nrv-brand .qv-h.s-off { --st:var(--off); }
.nrv-brand .qv-h.s-missed { --st:var(--missed); } .nrv-brand .qv-h.s-unplanned { --st:var(--unplanned); } .nrv-brand .qv-h.s-rest { --st:var(--rest); }
.nrv-brand .qv-ic { width:44px; height:44px; border-radius:12px; border:2px solid var(--st); display:flex; align-items:center; justify-content:center; flex:none; color:var(--st); }
.nrv-brand .qv-h.s-planned .qv-ic { color:var(--text); border-style:dashed; }
.nrv-brand .qv-ic svg { width:24px; height:24px; }
.nrv-brand .qv-h h1 { font-size:21px; font-weight:850; margin:2px 0 0; line-height:1.15; }
.nrv-brand .badge { font-size:11px; font-weight:800; padding:3px 9px; border-radius:99px; color:var(--lime-ink); background:var(--st); }
.nrv-brand .qv-h.s-planned .badge { background:var(--surface2); color:var(--text); }
.nrv-brand :is(.qv-h.s-missed, .qv-h.s-rest) .badge { color:var(--on-strong); }
.nrv-brand .qv-tabs { margin:14px 0 2px; }
.nrv-brand .qv-grid { display:grid; grid-template-columns:minmax(0,1fr); gap:0 22px; }
.nrv-brand table.pvc, .nrv-brand table.mam { width:100%; border-collapse:collapse; font-size:13.5px; font-variant-numeric:tabular-nums; }
.nrv-brand table.pvc th, .nrv-brand table.mam th { text-align:right; font-size:10.5px; text-transform:uppercase; letter-spacing:.6px; color:var(--muted); font-weight:800; padding:6px 8px; }
.nrv-brand table.pvc th:first-child, .nrv-brand table.mam th:first-child { text-align:left; padding-left:0; }
.nrv-brand table.pvc td, .nrv-brand table.mam td { padding:7px 8px; border-top:1px solid var(--line); text-align:right; white-space:nowrap; }
.nrv-brand table.pvc td:first-child, .nrv-brand table.mam td:first-child { text-align:left; color:var(--muted); padding-left:0; white-space:normal; }
.nrv-brand table.pvc td.pv { color:var(--text-2); }
.nrv-brand table.pvc td.dv { font-weight:750; }
.nrv-brand td.c-done { color:var(--done-text) !important; } .nrv-brand td.c-partial { color:var(--partial-text) !important; } .nrv-brand td.c-off { color:var(--off-text) !important; }
.nrv-brand table.mam td .u { color:var(--muted); font-size:11px; margin-left:2px; }
.nrv-brand .feel .fl { display:flex; align-items:center; gap:10px; margin:6px 0; }
.nrv-brand .feel .fl > span { width:96px; flex:none; font-size:12.5px; color:var(--muted); }
.nrv-brand .faces, .nrv-brand .rpe { display:flex; gap:4px; flex:1; }
.nrv-brand .faces i { font-style:normal; font-size:20px; filter:grayscale(1); opacity:.35; flex:1; text-align:center; }
.nrv-brand .faces i.on { filter:none; opacity:1; }
.nrv-brand .rpe i { font-style:normal; flex:1; text-align:center; font-size:11.5px; font-weight:800; padding:5px 0; border-radius:6px;
  background:var(--surface2); color:var(--muted); }
.nrv-brand .rpe i.on { background:hsl(var(--h),75%,55%); color:#111; }
.nrv-brand .why { border-left:3px solid rgb(var(--lime-rgb)); padding:2px 0 2px 12px; margin:8px 0; font-size:14px; line-height:1.45; }
.nrv-brand .why p { margin:0 0 4px; } .nrv-brand .why p + p { color:var(--muted); font-size:13px; }
.nrv-brand .cnote { background:var(--lime-soft); border-radius:10px; padding:9px 12px; font-size:14px; line-height:1.45; white-space:pre-wrap; }
.nrv-brand pre.desc { white-space:pre-wrap; font-family:inherit; font-size:14px; line-height:1.5; margin:0; color:var(--text); background:none; padding:0; }
.nrv-brand ol.steps { margin:0; padding-left:20px; font-size:13.5px; line-height:1.45; }
.nrv-brand ol.steps li { margin:3px 0; }
.nrv-brand ol.steps li.k-wu, .nrv-brand ol.steps li.k-cd, .nrv-brand ol.steps li.k-rest { color:var(--text-2); }
.nrv-brand .thread { display:flex; flex-direction:column; gap:8px; }
.nrv-brand .cmt { background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:8px 12px; font-size:14px; max-width:92%; }
.nrv-brand .cmt.me { align-self:flex-end; background:rgba(var(--lime-rgb),.08); border-color:rgba(var(--lime-rgb),.25); }
.nrv-brand .cmt .by { font-size:11.5px; color:var(--muted); margin-bottom:3px; }
.nrv-brand .cmt .by b { color:var(--text); }
.nrv-brand .cmt .tx { white-space:pre-wrap; line-height:1.45; }

/* ---------- computer: TP grid (7 days + weekly summary), Quick View modal ---------- */
@media (min-width: 900px) {
  .nrv-brand .calbar { padding:12px 20px 0; }
  .nrv-brand .calrow h1 { font-size:24px; }
  .nrv-brand .legend { margin:6px 0 8px; }
  .nrv-brand .calhead { display:grid; grid-template-columns:repeat(7, minmax(0,1fr)) var(--sum-w); border-top:1px solid var(--line); }
  .nrv-brand .calhead div { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.8px; color:var(--muted); padding:7px 8px; }
  .nrv-brand .calhead div:last-child { padding-left:12px; }
  .nrv-brand .weeks { padding:0 20px; }
  .nrv-brand .wk { display:grid; grid-template-columns:repeat(7, minmax(0,1fr)) var(--sum-w); padding:0; }
  .nrv-brand .wk.cur { background:rgba(var(--lime-rgb),.025); }
  .nrv-brand .ws { order:0; border:none; border-radius:0; background:var(--shade); border-left:1px solid var(--line); margin:0; padding:10px 12px; }
  .nrv-brand .wk.cur .ws { border-left:1px solid var(--line); }
  .nrv-brand .ws-t { display:none; }
  .nrv-brand .dc { display:block; min-height:150px; padding:6px 6px 8px; border-bottom:none; border-left:1px solid var(--line); }
  .nrv-brand .dc:first-child { border-left:none; }
  .nrv-brand .dc.past { background:var(--shade); }
  .nrv-brand .dh { flex-direction:row; justify-content:space-between; align-items:center; padding:0 2px 5px; }
  .nrv-brand .dh .dw { display:none; }
  .nrv-brand .dh .dn { font-size:13px; font-weight:700; color:var(--muted); }
  .nrv-brand .dh .add { margin:0 0 0 6px; width:18px; height:18px; font-size:13px; border-radius:5px; opacity:0; }
  .nrv-brand .dc:hover .dh .add { opacity:1; }
  .nrv-brand .dh .dm { display:none; font-size:11px; font-weight:800; text-transform:uppercase; color:var(--text); order:-1; margin-right:auto; }
  .nrv-brand .dh .dm.on { display:inline; }
  .nrv-brand .dh .dm.on + .dn, .nrv-brand .dh .dm.on ~ .dn { color:var(--text); }
  .nrv-brand .dc.today .dh .dn { margin:0; font-size:12.5px; padding:1px 8px; min-width:0; }
  .nrv-brand .dc.empty .dx::before { content:none; }
  .nrv-brand .wo { font-size:12px; padding:6px 7px 7px; }
  .nrv-brand .wo-h b { font-size:12.5px; }
  .nrv-brand .wo-h svg { width:15px; height:15px; }
  .nrv-brand .wo-pl, .nrv-brand .wo-d, .nrv-brand .wo-x { font-size:11px; }
  .nrv-brand .ev, .nrv-brand .nt { font-size:11.5px; }
  /* Quick View */
  .nrv-brand .sheet { background:var(--scrim); padding:36px 24px; animation:nc-fade .15s ease-out; }
  @keyframes nc-fade { from { opacity:0; } to { opacity:1; } }
  .nrv-brand .sheet-in { max-width:1060px; margin:0 auto; min-height:0; background:var(--bg); border:1px solid var(--line); border-radius:18px;
    overflow:clip; padding-bottom:10px; box-shadow:0 20px 60px var(--shadow); }
  .nrv-brand .sheet .bar { padding:12px 16px; position:sticky; top:0; }
  .nrv-brand .sheet .back { display:none; }
  .nrv-brand .sheet .x { display:block; }
  .nrv-brand .sheet .body { padding:18px 24px 14px; }
  .nrv-brand .qv-grid { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .nrv-brand .qv-grid.one { grid-template-columns:minmax(0,1fr); }
}
@media (min-width: 1400px) { .nrv-brand { --sum-w: 240px; } }
