/* FCF-96: styles for focus-rhythm-charts.js (Report › Review lenses). All classes are prefixed rc-.
   Tokens come from the app (--rv-muted, --border, --soft, --surface, --win, --rv-bad, --warn, --group-*) with light fallbacks,
   so the charts also render standalone. Dark theme = body.dark, as in focus.css. */
.rc{
  --rc-muted:var(--rv-muted,#6b6b6b);--rc-border:var(--border,#ececec);--rc-soft:var(--soft,#f7f7f7);--rc-surface:var(--surface,#fff);
  --rc-good:var(--win,#3d7a2e);--rc-bad:var(--rv-bad,#b3261e);--rc-warn:var(--warn,#a35d00);
  --rc-grid:rgba(0,0,0,.08);--rc-strong:rgba(0,0,0,.28);--rc-edge:rgba(255,255,255,.55);
  --rc-now:#c62828;--rc-now-ink:#fff;--rc-needle:#111420;--rc-ring:#fff;--rc-dot-ring:#111420;--rc-score:#F2C14E;
  --rc-bed:#3b82f6;--rc-wake:#0d9488;--rc-amber:#9a5b00;--rc-violet:#7c3aed;--rc-green:#3d7a2e;
  --rc-ym-na:rgba(0,0,0,.035);--rc-ym-0:rgba(0,0,0,.09);--rc-ym-1:#F2D06B;--rc-ym-2:#F4A44C;--rc-ym-3:#E4573D;--rc-ym-4:#B3242A;--rc-ym-5:#6E0F1E;
  color:inherit;font-variant-numeric:tabular-nums;min-width:0;max-width:100%;box-sizing:border-box
}
body.dark .rc{
  --rc-muted:var(--rv-muted,#a0a0a0);--rc-border:var(--border,#383838);--rc-soft:var(--soft,#292929);--rc-surface:var(--surface,#202020);
  --rc-good:var(--win,#8fd47a);--rc-bad:var(--rv-bad,#ff8a80);--rc-warn:var(--warn,#f0b35a);
  --rc-grid:rgba(255,255,255,.1);--rc-strong:rgba(255,255,255,.34);--rc-edge:rgba(0,0,0,.35);
  --rc-now:#ff8a80;--rc-now-ink:#111420;--rc-needle:#fff;--rc-ring:#202020;--rc-dot-ring:#f3f3f3;
  --rc-bed:#7db0fa;--rc-wake:#2dd4bf;--rc-amber:#f0b35a;--rc-violet:#b69cff;--rc-green:#8fd47a;
  --rc-ym-na:rgba(255,255,255,.05);--rc-ym-0:rgba(255,255,255,.13)
}
.rc *,.rc *::before,.rc *::after{box-sizing:border-box}

/* ----- shared frame ----- */
.rc-scroll{overflow-x:auto;overflow-y:hidden;max-width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:thin;border-radius:4px}
.rc-scroll:focus-visible{outline:2px solid var(--rv-focus,#2f6fb0);outline-offset:2px}
.rc-empty{display:flex;align-items:center;justify-content:center;min-height:56px;padding:14px;border:1px dashed var(--rc-border);border-radius:6px;color:var(--rc-muted);font-size:12px}
.rc-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.rc-dot{display:inline-block;flex:none;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:baseline}

/* ----- svg ----- */
.rc-svg{display:block;width:100%;min-width:var(--rc-minw,0);height:auto;fill:none;stroke:none;stroke-width:1}
.rc-svg text{fill:currentColor;stroke:none;font:11px/1 -apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;font-variant-numeric:tabular-nums}
.rc-svg text.rc-tm{fill:var(--rc-muted)}
.rc-svg text.rc-tsm,.rc-svg .rc-tsm{font-size:10.5px}
.rc-svg text.rc-tlg{font-size:14px}
.rc-svg text.rc-tb{font-weight:700}
.rc-svg text.rc-tctr{font-size:20px}
.rc-svg text.rc-halo{paint-order:stroke;stroke:var(--rc-surface);stroke-width:3px;stroke-linejoin:round}
.rc-svg .rc-grid{stroke:var(--rc-grid);stroke-width:1;shape-rendering:crispEdges}
.rc-svg .rc-seg{stroke:var(--rc-surface);stroke-width:1.5;stroke-linejoin:round}
.rc-svg .rc-arc:hover .rc-seg,.rc-svg .rc-tile:hover>.rc-seg{stroke:var(--rc-needle);stroke-width:1}
.rc-svg .rc-pt:hover .rc-beddot,.rc-svg .rc-pt:hover .rc-wakedot{stroke:var(--rc-needle);stroke-width:1.5}
.rc-svg .rc-chip rect{fill:var(--rc-surface);stroke:var(--rc-strong);stroke-width:1}
.rc-svg .rc-chip text{fill:currentColor;font-size:10.5px;font-weight:600}

/* energy spark / guides / crashes */
.rc-svg .rc-l7{stroke:currentColor;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.rc-svg .rc-guide{stroke:var(--rc-muted);stroke-width:1;stroke-dasharray:4 3;opacity:.8}
.rc-svg .rc-crash{stroke:var(--rc-bad);stroke-width:2;stroke-linecap:round}
.rc-svg .rc-enddot{stroke:var(--rc-surface);stroke-width:2}

/* period bars */
.rc-svg .rc-bar{stroke:none}
.rc-svg .rc-faded{opacity:.5}
.rc-svg .rc-running{stroke:currentColor;stroke-width:1.2;stroke-dasharray:3 2}
.rc-svg .rc-avg{stroke:var(--rc-muted);stroke-width:1.25;stroke-dasharray:5 3}
.rc-svg .rc-target{fill:var(--rc-good);opacity:.14}

/* bedtime */
.rc-svg .rc-sleepbar{fill:var(--rc-bed);opacity:.24}
.rc-svg .rc-bedline{stroke:var(--rc-bed);stroke-width:1.75;stroke-linejoin:round}
.rc-svg .rc-wakeline{stroke:var(--rc-wake);stroke-width:1.75;stroke-linejoin:round}
.rc-svg .rc-beddot{fill:var(--rc-bed);stroke:var(--rc-surface);stroke-width:1}
.rc-svg .rc-wakedot{fill:var(--rc-wake);stroke:var(--rc-surface);stroke-width:1}
.rc-svg .rc-ref{stroke-width:1.25}
.rc-svg .rc-ref-ceil{stroke:var(--rc-green);stroke-dasharray:5 3}
.rc-svg .rc-ref-median{stroke:var(--rc-amber)}
.rc-svg .rc-ref-mean{stroke:var(--rc-violet);stroke-dasharray:2 3}
.rc-svg .rc-ref-wake{stroke:var(--rc-wake);stroke-dasharray:1 3}
.rc-svg .rc-lead{stroke-width:1;opacity:.75}
.rc-svg .rc-lead.rc-ref-ceil{stroke:var(--rc-green)}.rc-svg .rc-lead.rc-ref-median{stroke:var(--rc-amber)}.rc-svg .rc-lead.rc-ref-mean{stroke:var(--rc-violet)}.rc-svg .rc-lead.rc-ref-wake{stroke:var(--rc-wake)}
.rc-svg g.rc-chip.rc-ref-ceil rect{stroke:var(--rc-green)}.rc-svg g.rc-chip.rc-ref-median rect{stroke:var(--rc-amber)}.rc-svg g.rc-chip.rc-ref-mean rect{stroke:var(--rc-violet)}.rc-svg g.rc-chip.rc-ref-wake rect{stroke:var(--rc-wake)}

/* year map */
.rc-svg .rc-ym{shape-rendering:crispEdges}
.rc-svg .rc-ym:hover{stroke:var(--rc-needle);stroke-width:1}
.rc-ym-na{fill:var(--rc-ym-na);background:var(--rc-ym-na)}
.rc-ym-0{fill:var(--rc-ym-0);background:var(--rc-ym-0)}
.rc-ym-1{fill:var(--rc-ym-1);background:var(--rc-ym-1)}
.rc-ym-2{fill:var(--rc-ym-2);background:var(--rc-ym-2)}
.rc-ym-3{fill:var(--rc-ym-3);background:var(--rc-ym-3)}
.rc-ym-4{fill:var(--rc-ym-4);background:var(--rc-ym-4)}
.rc-ym-5{fill:var(--rc-ym-5);background:var(--rc-ym-5)}
.rc-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:8px 0 0 28px;font-size:10px;color:var(--rc-muted)}
.rc-ymkey{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.rc-ymkey i{display:inline-block;width:11px;height:11px;border-radius:2px;box-shadow:inset 0 0 0 1px var(--rc-grid)}

/* score line */
.rc-svg .rc-band-good{fill:var(--rc-good);opacity:.15}
.rc-svg .rc-score{stroke:var(--rc-score);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.rc-svg .rc-scoredot{fill:var(--rc-score);stroke:var(--rc-dot-ring);stroke-width:1}

/* sparkline */
.rc-spark{margin:0;width:210px;max-width:100%}
.rc-spark .rc-svg{width:100%;height:auto;min-width:0}
.rc-spark-label{font-size:11px;font-weight:600;margin:0 0 2px}
.rc-spark-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 8px;margin-top:2px;font-size:10px;color:var(--rc-muted)}
.rc-spark-foot b{color:inherit;font-weight:700}

/* sunburst */
.rc-sunburst{max-width:440px;margin:0 auto}
.rc-sunburst .rc-svg{min-width:0}

/* ----- week timeline ----- */
.rc-wk{--rc-gut:34px;min-width:620px;font-size:10px;color:inherit}
.rc-wk-head{display:grid;grid-template-columns:var(--rc-gut) repeat(var(--rc-n,7),minmax(0,1fr));position:sticky;top:0;z-index:2;background:var(--rc-surface);border-bottom:1px solid var(--rc-border)}
.rc-wk-day{padding:5px 2px 6px;text-align:center;font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:2px solid transparent}
.rc-wk-day.rc-today{font-weight:800;border-bottom-color:var(--rc-now)}
.rc-wk-body{position:relative;display:grid;grid-template-columns:var(--rc-gut) repeat(var(--rc-n,7),minmax(0,1fr))}
.rc-wk-gutter{position:relative}
.rc-wk-hl{position:absolute;right:5px;transform:translateY(-50%);font-size:9.5px;line-height:1;color:var(--rc-muted)}
.rc-wk-hl.first{transform:none}.rc-wk-hl.last{transform:translateY(-100%)}
.rc-wk-col{position:relative;border-left:1px solid var(--rc-border)}
.rc-wk-col.rc-today{background:var(--rc-soft)}
.rc-wk-lines{position:absolute;left:var(--rc-gut);right:0;top:0;bottom:0;pointer-events:none}
.rc-wk-lines i{position:absolute;left:0;right:0;height:1px;background:var(--rc-grid)}
.rc-blk{position:absolute;left:2px;right:2px;min-height:.35%;border-radius:3px;overflow:hidden;padding:1px 4px;line-height:11px;font-size:10px;font-weight:600;box-shadow:inset 0 0 0 1px var(--rc-edge);cursor:default}
/* labels keep a solid backing of the block colour so the ink contrast holds over stripes and dots */
.rc-blk-t,.rc-blk-c{display:block;width:fit-content;max-width:100%;background-color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc-blk-c{font-size:9.5px;font-weight:500;opacity:.9}
/* FCF-300: the agent's sessions in a narrow lane on the right of each day (Rhythm › Timeline, lane view All / Side by side) */
.rc-wk-col.rc-has-agent .rc-blk{right:calc(28% + 2px)}
.rc-wk-col.rc-has-agent .rc-blk.rc-agent{left:auto;right:2px;width:calc(28% - 3px);padding:1px 2px;opacity:.9;outline:1px dashed var(--rc-strong);outline-offset:-1px}
.rc-now{position:absolute;left:0;right:0;height:0;border-top:2px solid var(--rc-now);z-index:3;pointer-events:none}
.rc-now span{position:absolute;left:0;top:-9px;padding:1px 4px;border-radius:3px;background:var(--rc-now);color:var(--rc-now-ink);font-size:9.5px;font-weight:700;line-height:14px}
/* same-colour categories: stripes and dots on top of the block colour */
.rc-pat-1{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.28) 0 3px,transparent 3px 7px)}
.rc-pat-2{background-image:repeating-linear-gradient(-45deg,rgba(0,0,0,.28) 0 3px,transparent 3px 7px)}
.rc-pat-3{background-image:repeating-linear-gradient(90deg,rgba(255,255,255,.28) 0 2px,transparent 2px 6px)}
.rc-pat-4{background-image:radial-gradient(rgba(0,0,0,.3) 1.1px,transparent 1.6px);background-size:6px 6px}

/* ----- day rows ----- */
.rc-dr{min-width:420px;font-size:10px}
.rc-dr-axis,.rc-dr-row{display:grid;grid-template-columns:78px minmax(0,1fr);align-items:center;column-gap:6px}
.rc-dr-axis{height:16px}
.rc-dr-ticks{position:relative;height:100%}
.rc-dr-ticks span{position:absolute;bottom:2px;transform:translateX(-50%);font-size:9.5px;line-height:1;color:var(--rc-muted)}
.rc-dr-ticks span.first{transform:none}.rc-dr-ticks span.last{transform:translateX(-100%)}
.rc-dr-row{margin-bottom:2px}
.rc-dr-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10.5px}
.rc-dr-row.rc-weekend .rc-dr-label{color:var(--rc-muted)}
.rc-dr-row.rc-today .rc-dr-label{font-weight:800}
.rc-dr-track{position:relative;border-radius:2px;background-color:var(--rc-soft);background-image:linear-gradient(to right,var(--rc-grid) 1px,transparent 1px);background-size:12.5% 100%;box-shadow:inset -1px 0 0 var(--rc-grid)}
.rc-dr-row.rc-today .rc-dr-track{box-shadow:0 0 0 1px var(--rc-strong)}
.rc-dseg{position:absolute;top:0;bottom:0;display:block;min-width:1px}

/* ----- energy gauge ----- */
.rc-gauge{padding:2px 0}
.rc-gauge-val{display:flex;align-items:baseline;gap:4px;line-height:1.1}
.rc-gauge-val b{font-size:26px;font-weight:700;letter-spacing:-.3px}
.rc-gauge-val span{font-size:12px;color:var(--rc-muted)}
.rc-gauge-zone{display:flex;align-items:center;margin:6px 0 12px;font-size:12px;font-weight:600}
.rc-gauge-zone .rc-dot{width:10px;height:10px;margin-right:7px}
.rc-gauge-bar{position:relative;height:12px;border-radius:6px;background:var(--rc-soft);box-shadow:inset 0 0 0 1px var(--rc-border)}
.rc-gauge-bar i{position:absolute;top:0;bottom:0;display:block}
.rc-gauge-bar i:first-of-type{border-radius:6px 0 0 6px}.rc-gauge-bar i:nth-last-of-type(1){border-radius:0 6px 6px 0}
.rc-needle{position:absolute;top:-4px;bottom:-4px;width:4px;margin-left:-2px;border-radius:2px;background:var(--rc-needle);box-shadow:0 0 0 2px var(--rc-ring)}
.rc-gauge-ticks{position:relative;height:16px;margin-top:6px;font-size:10px;color:var(--rc-muted)}
.rc-gauge-ticks span{position:absolute;transform:translateX(-50%);white-space:nowrap}

/* ----- diverging ----- */
.rc-diverging{display:grid;gap:2px}
.rc-div-row{display:grid;grid-template-columns:minmax(72px,.9fr) minmax(90px,1.7fr) minmax(96px,auto);align-items:center;gap:8px;padding:4px 0;font-size:11px}
.rc-div-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc-div-track{position:relative;height:10px;border-radius:3px;background:var(--rc-soft)}
.rc-div-track::after{content:'';position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--rc-strong)}
.rc-div-bar{position:absolute;top:0;bottom:0;display:block;min-width:2px}
.rc-div-bar.rc-pos{background:var(--rc-good);border-radius:0 3px 3px 0}
.rc-div-bar.rc-neg{background:var(--rc-bad);border-radius:3px 0 0 3px}
.rc-div-val{text-align:right;white-space:nowrap;font-size:11px}

/* ----- tables ----- */
.rc-table{width:100%;border-collapse:collapse;font-size:11px}
.rc-table th,.rc-table td{padding:7px 8px;text-align:left;border-bottom:1px solid var(--rc-border);white-space:nowrap;font-weight:400}
.rc-table thead th{position:sticky;top:0;font-size:10px;font-weight:600;letter-spacing:.3px;color:var(--rc-muted);background:var(--rc-surface)}
.rc-table tbody th{font-weight:600;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.rc-table .rc-num{text-align:right}
.rc-table tbody tr:last-child th,.rc-table tbody tr:last-child td{border-bottom:0}
.rc-table tbody tr:hover{background:var(--rc-soft)}
.rc-grp th,.rc-grp td{padding-top:9px}
.rc-grp .rc-num{font-weight:600}
.rc-cat th{padding-left:22px;font-weight:400}
.rc-cat .rc-dot{width:6px;height:6px}
.rc-barcell{width:34%;min-width:80px}
.rc-tbar{display:block;height:6px;border-radius:3px;background:var(--rc-soft);box-shadow:inset 0 0 0 1px var(--rc-border);overflow:hidden}
.rc-tbar i{display:block;height:100%;border-radius:3px}
.rc-delta.rc-good{color:var(--rc-good);font-weight:600}
.rc-delta.rc-bad{color:var(--rc-bad);font-weight:600}
.rc-delta.rc-neutral{color:var(--rc-muted)}
.rc-delta.rc-good::before{content:'\25B2\00a0';font-size:8px;vertical-align:1px}
.rc-delta.rc-bad::before{content:'\25BC\00a0';font-size:8px;vertical-align:1px}

/* ----- record chips ----- */
.rc-chips{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.rc-rchip{display:flex;align-items:flex-start;gap:9px;min-width:0;padding:10px 11px;border:1px solid var(--rc-border);border-radius:8px;background:var(--rc-soft)}
.rc-chip-ic{flex:none;font-size:18px;line-height:1.2}
.rc-chip-body{display:flex;flex-direction:column;gap:1px;min-width:0}
.rc-chip-l{font-size:10px;letter-spacing:.3px;color:var(--rc-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rc-chip-v{font-size:15px;font-weight:700;line-height:1.25;overflow-wrap:anywhere}
.rc-chip-s{font-size:10.5px;color:var(--rc-muted);overflow-wrap:anywhere}

/* ----- small screens ----- */
@media(max-width:800px){
  .rc-wk-day{font-size:10px}
  .rc-div-row{grid-template-columns:minmax(64px,.8fr) minmax(70px,1.4fr) auto;gap:6px}
  .rc-chips{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px}
  .rc-rchip{padding:8px 9px}
  .rc-gauge-val b{font-size:22px}
  .rc-legend{margin-left:0}
}
/* FCF-169: on iPhone every chart fits the screen width instead of scrolling sideways.
   SVG charts scale with their viewBox; the week grid and day rows share the width; tables wrap and shrink. */
@media(max-width:600px){
  .rc-svg{min-width:0}
  /* wide SVG charts (500-720 wide) shrink to about 60%, so their text is drawn larger to stay readable (about 9-10px on screen) */
  .rc-scroll>.rc-svg text{font-size:16px}
  .rc-scroll>.rc-svg text.rc-tsm,.rc-scroll>.rc-svg .rc-tsm{font-size:15px}
  .rc-scroll>.rc-svg text.rc-tlg{font-size:19px}
  .rc-wk,.rc-dr{min-width:0}
  .rc-wk{--rc-gut:26px}
  .rc-wk-day{font-size:9px;padding:5px 0 6px}
  .rc-table{font-size:10px;table-layout:fixed}
  .rc-table th,.rc-table td{padding:6px 4px;white-space:normal;overflow-wrap:anywhere}
  .rc-table thead th{font-size:9px;letter-spacing:0}
  .rc-table tbody th{max-width:none}
  .rc-table tr>:first-child{width:36%}
}
@media(max-width:400px){.rc-div-row{grid-template-columns:minmax(0,1fr) auto;row-gap:2px}.rc-div-track{grid-column:1/-1;order:3}}
@media(prefers-reduced-motion:reduce){.rc *{animation:none!important;transition:none!important}}
/* FCF-196: multiLine (Years side by side). Line colours are tokens set for both themes on the card (focus-lenses.css). */
.rc-svg .rc-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.rc-svg .rc-line-dash{stroke-width:1.6;stroke-dasharray:5 4}
.rc-svg .rc-ldot{stroke:var(--rc-surface);stroke-width:1}
.rc-ymkey i.rc-key-dash{opacity:.75}
/* FCF-287: the mark on what the value tip (#chart-tip in focus.css) describes; the other bars of the chart step back. */
.rc-svg:has(.rc-bar.rc-hot) .rc-bar:not(.rc-hot){opacity:.35}
.rc-svg .rc-hot:not(.rc-bar){stroke:currentColor;stroke-width:1.5}
.rc .rc-hot:not(svg *){outline:2px solid currentColor;outline-offset:-2px}
/* FCF-199: mood colours (Awful … Great = rc-md-0 … rc-md-6), one set per theme so a cell, bar or dot always stands out
   from the card; dots carry a ring in the card's own colour so they read on any category block. */
.rc{--rc-md-0:#b91c1c;--rc-md-1:#e5484d;--rc-md-2:#e8a317;--rc-md-3:#9ca3af;--rc-md-4:#84cc16;--rc-md-5:#22a35a;--rc-md-6:#15703d;--rc-md-na:rgba(0,0,0,.04);--rc-mood-ring:#fff}
body.dark .rc{--rc-md-0:#ff6b6b;--rc-md-1:#ff8f8f;--rc-md-2:#f5c04a;--rc-md-3:#a1a1aa;--rc-md-4:#bef264;--rc-md-5:#4ade80;--rc-md-6:#22c55e;--rc-md-na:rgba(255,255,255,.06);--rc-mood-ring:#111420}
.rc-md-0{--md:var(--rc-md-0)}.rc-md-1{--md:var(--rc-md-1)}.rc-md-2{--md:var(--rc-md-2)}.rc-md-3{--md:var(--rc-md-3)}.rc-md-4{--md:var(--rc-md-4)}.rc-md-5{--md:var(--rc-md-5)}.rc-md-6{--md:var(--rc-md-6)}.rc-md-na{--md:var(--rc-md-na)}
.rc-svg .rc-mdbar,.rc-svg .rc-mdcell{fill:var(--md)}
.rc-ymkey i[class*="rc-md-"]{background:var(--md)}
.rc-mood,.rc-mood-d{position:absolute;z-index:4;display:block;border-radius:50%;background:var(--md);box-shadow:0 0 0 1.5px var(--rc-mood-ring),0 0 0 2.5px var(--rc-strong);pointer-events:auto}
.rc-mood{right:3px;width:9px;height:9px;margin-top:-4.5px}
.rc-mood-d{top:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px}
