@import '_content/ScorecardBuilder.Web/ScorecardBuilder.Web.21x3dfd1h9.bundle.scp.css';

/* /Components/Layout/MainLayout.razor.rz.scp.css */
.app[b-i18pzlogrz]{
    display:grid;
    grid-template-columns:300px 1fr;
    min-height:100vh;
    background:var(--bg);
    transition:grid-template-columns .16s ease;
}
/* COLLAPSED NAVIGATION — an app-wide state, set on <html> by js/nav.js.
   68px is the icon rail: an 18px glyph inside the sidebar's own 1.12 zoom, centred, with enough
   padding either side to stay a comfortable click target. Everything the rail hides is still in
   the DOM and still reachable — see NavMenu.razor.css. */
html.nav-collapsed .app[b-i18pzlogrz]{grid-template-columns:68px 1fr;}
@media(prefers-reduced-motion:reduce){.app[b-i18pzlogrz]{transition:none;}}
.side[b-i18pzlogrz]{
    background:var(--surface);
    border-right:1px solid var(--line);
    position:sticky;
    top:0;
    height:100vh;
    overflow:auto;
}
.main[b-i18pzlogrz]{min-width:0;}
.content[b-i18pzlogrz]{
    max-width:1240px;
    margin:0 auto;
    padding:30px 26px 70px;
    zoom:1.15;              /* guaranteed uniform enlargement of ALL page content (Leon: bigger) */
}
@media(max-width:820px){
    /* The phone layout stacks the nav above the content, so there is no side column to reclaim —
       the collapsed state is switched off entirely rather than producing a 68px stripe. */
    .app[b-i18pzlogrz],html.nav-collapsed .app[b-i18pzlogrz]{grid-template-columns:1fr;}
    .side[b-i18pzlogrz]{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line);}
}

#blazor-error-ui[b-i18pzlogrz]{
    display:none;
    position:fixed;bottom:0;left:0;right:0;
    background:var(--red-bg);color:var(--red);
    border-top:1px solid var(--red);
    padding:10px 16px;font-size:13px;font-weight:600;z-index:60;
}
#blazor-error-ui .reload[b-i18pzlogrz]{color:var(--red);font-weight:800;margin-left:8px;}
#blazor-error-ui .dismiss[b-i18pzlogrz]{cursor:pointer;float:right;}

/* ══ SCORECARD FOCUS WORKSPACE ═════════════════════════════════════════════════════════════════
   An APPLICATION-level takeover, not the browser Fullscreen API: the address bar, tabs and back
   button all stay. Two things change, and between them they are the whole feature —

     1. the navigation column goes, and
     2. the content's reading-width cap goes.

   (2) is the one that actually matters. 1240px is the right measure for prose; on a management grid
   it was throwing away ~170px at 1920 and every one of those pixels is a week column. Set on <html>
   by js/scorecardfit.js so the meeting room can later launch the same workspace over its own
   navigation without either page owning an overlay. */
/* ⚠ ONE COLUMN, NOT "0 1fr". With the sidebar display:none'd there is only ONE grid item left, so
   a two-column template puts .main in the ZERO-width first column and the grid pane measures 0 —
   which made the fit calculation fall back to a single week and stacked every frozen summary column
   on top of the others. Collapsing the template to a single track is the fix. */
html.sc-focus .app[b-i18pzlogrz] { grid-template-columns: 1fr; }
html.sc-focus .side[b-i18pzlogrz] { display: none; }
html.sc-focus .content[b-i18pzlogrz] { max-width: none; padding: 12px 16px 40px; }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.brand[b-rr2rwh9xoq]{
    display:flex;align-items:center;gap:11px;
    padding:20px 18px 18px;border-bottom:1px solid var(--line);
}
.brand .mark-img[b-rr2rwh9xoq]{
    width:34px;height:34px;border-radius:9px;flex:none;display:block;
}
.brand .name[b-rr2rwh9xoq]{font-weight:800;font-size:20px;letter-spacing:-.01em;color:var(--ink);}
.brand .pag[b-rr2rwh9xoq]{display:block;height:22px;width:auto;max-width:100%;margin-top:5px;object-fit:contain;}
/* Text stand-in when a tenant has no LogoUrl (the normal state for a new tenant). Occupies the
   same slot as the logo so the sidebar does not reflow. */
.brand .pag-name[b-rr2rwh9xoq]{display:block;margin-top:5px;font-size:13px;font-weight:700;line-height:22px;
  color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}

.brand[b-rr2rwh9xoq],.nav[b-rr2rwh9xoq],.foot[b-rr2rwh9xoq]{zoom:1.12;}   /* match the content enlargement (Leon: bigger) */
.nav[b-rr2rwh9xoq]{display:flex;flex-direction:column;padding:12px 10px;gap:2px;}
[b-rr2rwh9xoq] .link{
    display:flex;align-items:center;gap:11px;
    padding:10px 12px;border-radius:9px;
    color:var(--muted);font-weight:600;font-size:18px;text-decoration:none;
}
[b-rr2rwh9xoq] .link:hover{background:var(--surface2);color:var(--ink);}
[b-rr2rwh9xoq] .link.active{background:var(--accent-soft);color:var(--accent);}
[b-rr2rwh9xoq] .link .ic{width:18px;text-align:center;font-size:15.5px;}

.foot[b-rr2rwh9xoq]{margin-top:auto;padding:16px 18px;border-top:1px solid var(--line);}
.foot .q[b-rr2rwh9xoq]{font-size:13px;color:var(--muted);font-style:italic;line-height:1.5;}

/* ══ THE COLLAPSE TOGGLE ═══════════════════════════════════════════════════════════════════════
   Sits above the brand and stays in the same place in both states, so the control that changes the
   sidebar does not itself move when it is used. */
.navtoggle[b-rr2rwh9xoq]{
    position:absolute;top:10px;right:8px;z-index:2;
    width:26px;height:26px;padding:0;
    display:flex;align-items:center;justify-content:center;
    background:var(--surface);border:1px solid var(--line);border-radius:8px;
    color:var(--muted);cursor:pointer;line-height:1;
}
.navtoggle:hover[b-rr2rwh9xoq],.navtoggle:focus-visible[b-rr2rwh9xoq]{color:var(--accent);border-color:var(--accent);}
.navtoggle-ic[b-rr2rwh9xoq]{font-size:12px;display:block;transition:transform .16s ease;}
html.nav-collapsed .navtoggle[b-rr2rwh9xoq]{right:auto;left:50%;transform:translateX(-50%);}
html.nav-collapsed .navtoggle-ic[b-rr2rwh9xoq]{transform:rotate(180deg);}
@media(prefers-reduced-motion:reduce){.navtoggle-ic[b-rr2rwh9xoq]{transition:none;}}

/* ══ THE COLLAPSED RAIL ════════════════════════════════════════════════════════════════════════
   ⚠ CLIPPED, NOT REMOVED. Every label keeps its box in the accessibility tree — display:none would
   take the seven link names away from a screen reader as well as from the eye, and the point of the
   rail is to save WIDTH, not to publish less navigation. */
html.nav-collapsed .lbl[b-rr2rwh9xoq],
html.nav-collapsed .brandtext[b-rr2rwh9xoq],
html.nav-collapsed .whoami[b-rr2rwh9xoq],
html.nav-collapsed .foot .q[b-rr2rwh9xoq]{
    position:absolute;width:1px;height:1px;margin:-1px;padding:0;
    overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;
}
html.nav-collapsed .brand[b-rr2rwh9xoq]{
    padding:44px 0 14px;justify-content:center;gap:0;
}
html.nav-collapsed .nav[b-rr2rwh9xoq]{padding:12px 8px;}
html.nav-collapsed .nav[b-rr2rwh9xoq]  .link{justify-content:center;gap:0;padding:10px 0;}
html.nav-collapsed .nav[b-rr2rwh9xoq]  .link .ic{width:auto;font-size:17px;}
html.nav-collapsed .foot[b-rr2rwh9xoq]{padding:12px 8px;}
html.nav-collapsed .foot[b-rr2rwh9xoq]  .signout{text-align:center !important;justify-content:center;}

/* The phone layout stacks the nav above the content — there is no side column to reclaim, so the
   control that reclaims it does not belong on screen. */
@media(max-width:820px){.navtoggle[b-rr2rwh9xoq]{display:none;}}

/* Section label inside the nav (Resources). Follows the collapsed-rail rule: the text stays in the DOM, clipped. */
.navsec[b-rr2rwh9xoq]{margin:10px 8px 2px;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:800}
html.nav-collapsed .navsec[b-rr2rwh9xoq]{height:0;margin:6px 0 0;overflow:hidden;border-top:1px solid var(--line)}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-tu62m4w34a],
.components-reconnect-repeated-attempt-visible[b-tu62m4w34a],
.components-reconnect-failed-visible[b-tu62m4w34a],
.components-pause-visible[b-tu62m4w34a],
.components-resume-failed-visible[b-tu62m4w34a],
.components-rejoining-animation[b-tu62m4w34a] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-tu62m4w34a],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-tu62m4w34a],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-tu62m4w34a],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-tu62m4w34a],
#components-reconnect-modal.components-reconnect-retrying[b-tu62m4w34a],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-tu62m4w34a],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-tu62m4w34a],
#components-reconnect-modal.components-reconnect-failed[b-tu62m4w34a],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-tu62m4w34a] {
    display: block;
}


#components-reconnect-modal[b-tu62m4w34a] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-tu62m4w34a 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-tu62m4w34a 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-tu62m4w34a 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-tu62m4w34a]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-tu62m4w34a 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-tu62m4w34a {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-tu62m4w34a {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-tu62m4w34a {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-tu62m4w34a] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-tu62m4w34a] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-tu62m4w34a] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-tu62m4w34a] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-tu62m4w34a] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-tu62m4w34a] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-tu62m4w34a] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-tu62m4w34a 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-tu62m4w34a] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-tu62m4w34a {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/AdjustAgenda.razor.rz.scp.css */
/* Adjust agenda — app.css tokens only (light + dark already defined there). */
.aa[b-shzvy155zq] { max-width: 1040px; }
.aa h1[b-shzvy155zq] { font-size: clamp(26px, 3.4vw, 34px); font-weight: 800; letter-spacing: -.02em; margin: 6px 0 4px; text-wrap: balance; }
.aa-msg[b-shzvy155zq] { padding: 24px 0; }
.aa-lock[b-shzvy155zq] { margin: 14px 0; padding: 12px 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface2); font-size: 16px; }
label[b-shzvy155zq] { display: block; font-size: 14px; font-weight: 700; color: var(--muted); margin-bottom: 4px; }
input[b-shzvy155zq], select[b-shzvy155zq] { font: inherit; font-size: 17px; color: var(--ink); background: var(--surface); border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; width: 100%; }
input:disabled[b-shzvy155zq], select:disabled[b-shzvy155zq] { opacity: .6; }
.aa-grid[b-shzvy155zq] { display: grid; grid-template-columns: repeat(2, minmax(0, 220px)); gap: 12px; margin-top: 16px; }
.aa-table tr.aa-conflict td[b-shzvy155zq] { background: var(--red-bg); }
.aa-confmsg[b-shzvy155zq] { color: var(--red); font-weight: 700; font-size: 14.5px; font-style: normal; margin-top: 2px; }
@media (max-width: 700px) { .aa-grid[b-shzvy155zq] { grid-template-columns: minmax(0, 1fr); } }
.aa-min[b-shzvy155zq] { width: 84px; text-align: right; font-variant-numeric: tabular-nums; }
.aa-math[b-shzvy155zq] { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; margin: 16px 0; }
@media (max-width: 860px) { .aa-math[b-shzvy155zq] { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.aa-math > div[b-shzvy155zq] { background: var(--surface2); padding: 10px 14px; }
.aa-math .k[b-shzvy155zq] { font-size: 13.5px; font-weight: 700; color: var(--muted); }
.aa-math .v[b-shzvy155zq] { font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; }
.aa-math .n[b-shzvy155zq] { font-size: 13px; color: var(--muted); }
.aa-fit[b-shzvy155zq] { border-radius: 10px; padding: 12px 16px; font-weight: 700; border: 1px solid var(--line); margin-bottom: 14px; }
.aa-fit small[b-shzvy155zq] { display: block; font-weight: 500; color: var(--ink); font-size: 15px; margin-top: 2px; }
.aa-fit.ok[b-shzvy155zq] { background: var(--green-bg); color: var(--green); border-color: var(--green); }
.aa-fit.cut[b-shzvy155zq] { background: var(--red-bg); color: var(--red); border-color: var(--red); }
.aa-fit.add[b-shzvy155zq] { background: var(--amber-bg); color: var(--amber); border-color: var(--amber); }
.aa-tablewrap[b-shzvy155zq] { overflow-x: auto; }
.aa-table[b-shzvy155zq] { border-collapse: collapse; width: 100%; min-width: 640px; font-variant-numeric: tabular-nums; }
.aa-table th[b-shzvy155zq] { font-size: 13px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--line); }
.aa-table td[b-shzvy155zq] { padding: 7px 8px; border-bottom: 1px solid var(--line); font-size: 16.5px; vertical-align: middle; }
.aa-table .r[b-shzvy155zq] { text-align: right; }
.aa-table td.t[b-shzvy155zq] { font-family: var(--mono); font-size: 14.5px; color: var(--muted); white-space: nowrap; }
.aa-table td.neg[b-shzvy155zq] { color: var(--red); font-weight: 700; }
.aa-table td.pos[b-shzvy155zq] { color: var(--green); font-weight: 700; }
.aa-table tr.aa-el td[b-shzvy155zq] { background: var(--accent-soft); }
.aa-table tr.aa-brk td[b-shzvy155zq] { background: var(--surface2); }
.aa-table tr.aa-brk td.t[b-shzvy155zq] { color: var(--ink); font-weight: 700; }
.aa-brk-t[b-shzvy155zq] { font-weight: 700; }
.aa-table tr.aa-cont td[b-shzvy155zq] { color: var(--muted); }
.aa-cont-s[b-shzvy155zq] { color: var(--muted); font-size: 14.5px; }
.aa-brk-s[b-shzvy155zq] { font-size: 14px; color: var(--muted); }
.aa-tag[b-shzvy155zq] { font-size: 12.5px; font-weight: 700; border-radius: 6px; padding: 1px 7px; margin-left: 6px; white-space: nowrap; font-style: normal; }
.aa-tag.el[b-shzvy155zq] { background: var(--accent); color: var(--surface); }
.aa-tag.man[b-shzvy155zq] { background: var(--amber-bg); color: var(--amber); }
.aa-problems[b-shzvy155zq] { color: var(--red); font-weight: 600; margin: 12px 0 0; }
.aa-foot[b-shzvy155zq] { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: space-between; margin-top: 16px; }
.aa-actions[b-shzvy155zq] { display: flex; flex-wrap: wrap; gap: 8px; }
.aa-saved[b-shzvy155zq] { color: var(--green); font-weight: 700; }
.aa-blk-h[b-shzvy155zq] { font-size: 13px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin: 16px 0 6px; }
.aa-blk-h + .aa-math[b-shzvy155zq] { margin-top: 0; }
.aa-math[b-shzvy155zq] { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.aa-math .over[b-shzvy155zq] { background: var(--red-bg); } .aa-math .over .k[b-shzvy155zq], .aa-math .over .v[b-shzvy155zq] { color: var(--red); }
.aa-math .ok .v[b-shzvy155zq] { color: var(--green); }
.aa-sched[b-shzvy155zq] { list-style: none; margin: 0 0 12px; padding: 0; display: grid; gap: 4px; font-variant-numeric: tabular-nums; font-size: 16px; }
.aa-sched li.late[b-shzvy155zq] { color: var(--red); font-weight: 600; }
.aa-fit .aa-hint[b-shzvy155zq] { color: var(--muted); }
/* /Components/Pages/Admin/TemplateDayPlan.razor.rz.scp.css */
.dp[b-rc2bvr0zrg] { margin: 4px 0 16px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface2); }
.dp-h[b-rc2bvr0zrg] { font-weight: 800; font-size: 17px; margin-bottom: 10px; }
.dp-sub[b-rc2bvr0zrg] { font-weight: 700; margin-bottom: 6px; }
label[b-rc2bvr0zrg] { display: block; font-size: 13.5px; font-weight: 700; color: var(--muted); margin-bottom: 4px; }
input[b-rc2bvr0zrg], select[b-rc2bvr0zrg] { font: inherit; font-size: 16.5px; color: var(--ink); background: var(--surface); border: 1px solid var(--line); border-radius: 8px; padding: 7px 10px; width: 100%; }
.dp-grid[b-rc2bvr0zrg] { display: grid; grid-template-columns: repeat(2, minmax(0, 200px)); gap: 12px; }
@media (max-width: 720px) { .dp-grid[b-rc2bvr0zrg] { grid-template-columns: minmax(0, 1fr); } }
.dp-math[b-rc2bvr0zrg] { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; margin: 14px 0 10px; }
@media (max-width: 860px) { .dp-math[b-rc2bvr0zrg] { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.dp-math > div[b-rc2bvr0zrg] { background: var(--surface); padding: 9px 12px; }
.dp-math .k[b-rc2bvr0zrg] { font-size: 13px; font-weight: 700; color: var(--muted); }
.dp-math .n[b-rc2bvr0zrg] { font-size: 13px; color: var(--muted); }
.dp-math .v[b-rc2bvr0zrg] { font-size: 20px; font-weight: 800; font-variant-numeric: tabular-nums; }
.dp-math .over[b-rc2bvr0zrg] { background: var(--red-bg); } .dp-math .over .v[b-rc2bvr0zrg], .dp-math .over .k[b-rc2bvr0zrg] { color: var(--red); }
.dp-math .under[b-rc2bvr0zrg] { background: var(--amber-bg); } .dp-math .under .v[b-rc2bvr0zrg], .dp-math .under .k[b-rc2bvr0zrg] { color: var(--amber); }
.dp-math .ok[b-rc2bvr0zrg] { background: var(--green-bg); } .dp-math .ok .v[b-rc2bvr0zrg], .dp-math .ok .k[b-rc2bvr0zrg] { color: var(--green); }
.dp-status[b-rc2bvr0zrg] { margin: 0; padding: 10px 14px; border-radius: 10px; border: 1px solid var(--line); font-weight: 700; }
.dp-status small[b-rc2bvr0zrg] { display: block; font-weight: 500; color: var(--ink); font-size: 14.5px; margin-top: 2px; }
.dp-status.ok[b-rc2bvr0zrg] { background: var(--green-bg); color: var(--green); border-color: var(--green); }
.dp-status.over[b-rc2bvr0zrg] { background: var(--red-bg); color: var(--red); border-color: var(--red); }
.dp-status.under[b-rc2bvr0zrg] { background: var(--amber-bg); color: var(--amber); border-color: var(--amber); }
.dp-status.none[b-rc2bvr0zrg] { background: var(--surface); color: var(--muted); font-weight: 600; }
.dp-blk-h[b-rc2bvr0zrg] { font-size: 13px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin: 14px 0 6px; }
.dp-blk-h + .dp-math[b-rc2bvr0zrg] { margin-top: 0; }
.dp-sched[b-rc2bvr0zrg] { list-style: none; margin: 0 0 10px; padding: 0; display: grid; gap: 4px; font-variant-numeric: tabular-nums; }
.dp-sched li[b-rc2bvr0zrg] { font-size: 15.5px; }
.dp-sched li.late[b-rc2bvr0zrg] { color: var(--red); font-weight: 600; }
.dp-status .dp-hint[b-rc2bvr0zrg] { color: var(--muted); }
/* /Components/Pages/L10Room.razor.rz.scp.css */
/* L10 meeting room — ported from the mockup, scoped, at the 18px readability scale. */
.app[b-l10room]{display:grid;grid-template-columns:320px 1fr;min-height:100vh;background:var(--bg);color:var(--ink);zoom:1.12;}
.rail[b-l10room]{background:var(--surface);border-right:1px solid var(--line);padding:20px 16px;position:sticky;top:0;align-self:start;height:100vh;overflow:auto;}
.mt[b-l10room]{font-size:15px;color:var(--muted);font-weight:700;line-height:1.4;}
.mt b[b-l10room]{color:var(--ink);font-size:17px;display:block;letter-spacing:-.01em;}
.exit[b-l10room]{display:inline-block;margin-bottom:12px;color:var(--muted);text-decoration:none;font-size:15px;font-weight:700;}
.exit:hover[b-l10room]{color:var(--accent);}

.timer[b-l10room]{margin:14px 0;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface2);text-align:center;}
.timer .now[b-l10room]{font-size:15px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:800;}
.timer .clock[b-l10room]{font-family:var(--mono);font-size:34px;font-weight:800;letter-spacing:-.02em;margin:4px 0 2px;font-variant-numeric:tabular-nums;}
.timer .clock.danger[b-l10room]{color:var(--red);}
.timer .budget[b-l10room]{font-size:15px;color:var(--muted);}
.timer .bar[b-l10room]{height:6px;border-radius:99px;background:var(--line);overflow:hidden;margin-top:9px;}
.timer .fill[b-l10room]{height:100%;background:var(--accent);border-radius:99px;transition:width .5s linear;}
.timer .fill.over[b-l10room]{background:var(--red);}

.agenda[b-l10room]{display:flex;flex-direction:column;gap:4px;margin-top:6px;}
.ag[b-l10room]{display:flex;align-items:center;gap:9px;padding:10px 10px;border-radius:10px;cursor:pointer;border:1px solid transparent;text-align:left;background:transparent;color:inherit;font-family:inherit;width:100%;}
.ag:hover[b-l10room]{background:var(--surface2);}
.ag.on[b-l10room]{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,transparent);}
.ag .num[b-l10room]{width:22px;height:22px;border-radius:50%;background:var(--surface2);color:var(--muted);font-size:15px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:none;font-family:var(--mono);}
.ag.on .num[b-l10room]{background:var(--accent);color:#fff;}
.ag.done .num[b-l10room]{background:var(--green);color:#fff;}
.ag .lab[b-l10room]{flex:1;font-size:16.5px;font-weight:700;line-height:1.2;}
.ag .min[b-l10room]{font-size:15px;color:var(--muted);font-family:var(--mono);}
.rtag[b-l10room]{font-size:15px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:2px 5px;border-radius:5px;margin-left:6px;display:inline-block;}
.r-review[b-l10room]{background:var(--accent-soft);color:var(--accent);} .r-measure[b-l10room]{background:var(--amber-bg);color:var(--amber);} .r-decide[b-l10room]{background:var(--green-bg);color:var(--green);}
.prev[b-l10room]{margin-top:18px;padding:13px;border:1px dashed var(--line);border-radius:12px;font-size:15px;color:var(--muted);}
.prev b[b-l10room]{color:var(--ink);}
.live[b-l10room]{display:flex;align-items:center;gap:7px;margin-top:14px;font-size:15px;color:var(--muted);font-weight:700;}
.live .pip[b-l10room]{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px var(--green-bg);}

.main[b-l10room]{padding:26px 32px 100px;max-width:1320px;}
.sec-head[b-l10room]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:4px;}
.sec-head h1[b-l10room]{font-size:31px;font-weight:800;letter-spacing:-.02em;margin:0;}
.sec-head .min[b-l10room]{font-family:var(--mono);color:var(--muted);font-size:17.5px;}
.sec-sub[b-l10room]{color:var(--muted);font-size:17.5px;margin:0 0 20px;}
.navbtns[b-l10room]{display:flex;justify-content:space-between;margin-top:30px;gap:12px;}

.btn[b-l10room]{border:1px solid var(--line);background:var(--surface);color:var(--ink);font-weight:700;font-size:16.5px;padding:10px 16px;border-radius:10px;cursor:pointer;font-family:inherit;}
.btn:hover[b-l10room]{background:var(--surface2);}
.btn.primary[b-l10room]{background:var(--accent);color:#fff;border-color:var(--accent);}
.btn.primary:hover[b-l10room]{filter:brightness(1.06);}
.btn.sm[b-l10room]{padding:6px 11px;font-size:15px;}
.btn:disabled[b-l10room]{opacity:.4;cursor:default;}
.mini[b-l10room]{border:1px solid var(--red);border-radius:9px;padding:3px 10px;font-size:15px;font-weight:800;cursor:pointer;background:transparent;font-family:inherit;color:var(--red);}
.mini:hover[b-l10room]{background:var(--red-bg);}
.mini.resolve[b-l10room]{color:var(--accent);border-color:var(--accent);}
.mini.resolve:hover[b-l10room]{background:var(--accent-soft);}

.grid[b-l10room]{display:grid;gap:14px;}
.cols3[b-l10room]{grid-template-columns:repeat(3,1fr);} .cols2[b-l10room]{grid-template-columns:repeat(2,1fr);}
@media(max-width:900px){.cols3[b-l10room],.cols2[b-l10room]{grid-template-columns:1fr;}}
[b-l10room] .card{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:16px;box-shadow:var(--shadow);}
[b-l10room] .card + .card{margin-top:14px;}
.who[b-l10room]{font-size:15px;color:var(--muted);font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em;}
[b-l10room] .card p{margin:8px 0 0;font-size:16.5px;color:var(--muted);line-height:1.5;}
[b-l10room] .card p b{color:var(--ink);font-weight:600;}
[b-l10room] .grpname{font-size:15px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:16px 0 6px;}
[b-l10room] .grpname:first-child{margin-top:0;}
.deptsub[b-l10room]{font-size:13.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:18px 0 4px;padding:6px 12px;background:var(--surface2);border-radius:7px;}
.deptsub2[b-l10room]{display:inline-block;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:10px 0 2px;padding:3px 10px;background:color-mix(in srgb,var(--surface2) 55%,transparent);border:1px solid var(--line);border-radius:6px;}
/* Q2 Financial Rocks: editable numbers, auto-summed totals. Actuals color red (below goal) / green (at/above). */
/* Company-as-a-whole summary line - colored roll-up; department detail sits plain below it */
.finhead[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:7px;font-weight:800;font-size:14.5px;margin:6px 0 6px;background:var(--green-bg);border-radius:10px;padding:9px 12px;}
.fintot[b-l10room]{font-weight:600;font-size:13px;color:var(--muted);display:inline-flex;flex-wrap:wrap;align-items:center;gap:5px;}
.finkind[b-l10room]{font-weight:800;font-size:13px;color:var(--ink);}
.finrow[b-l10room]{display:flex;gap:10px;padding:7px 0;border-top:1px solid var(--line);align-items:center;flex-wrap:wrap;}
.fincat[b-l10room]{font-weight:800;min-width:64px;color:var(--accent);}
.finline[b-l10room]{flex:1;min-width:0;display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.finlbl[b-l10room]{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:800;}
[b-l10room] .finslash{color:var(--muted);opacity:.6;}
[b-l10room] .finin{width:94px;padding:4px 7px;border:1px solid var(--line);border-radius:6px;font-family:var(--mono);font-size:13px;background:var(--surface);color:var(--ink);font-weight:700;}
[b-l10room] .finin.neg{color:var(--red);border-color:color-mix(in srgb,var(--red) 40%,var(--line));}
[b-l10room] .finin.pos{color:var(--green);border-color:color-mix(in srgb,var(--green) 40%,var(--line));}
.finpct[b-l10room]{margin-left:auto;font-weight:800;font-family:var(--mono);font-size:13px;white-space:nowrap;color:var(--muted);}
.finmargin[b-l10room]{flex-basis:100%;font-family:var(--mono);font-size:12px;font-weight:700;color:var(--accent);opacity:.9;white-space:nowrap;margin:2px 0 0 74px;}
[b-l10room] .finpend{font-style:italic;color:var(--amber);font-weight:700;font-family:inherit;}
/* Rate-the-quarter optional comment: present but deliberately understated (dashed, muted, empty) */
.raterow .ratecmt[b-l10room]{flex:1;min-width:80px;font-size:13px;line-height:1.4;padding:5px 8px;border:1px dashed var(--line);opacity:.6;height:auto;min-height:32px;background:transparent;resize:none;field-sizing:content;overflow-y:hidden;}
.raterow .ratecmt:focus[b-l10room]{opacity:1;border-color:var(--accent);}
.rocknote[b-l10room]{font-size:12px;color:var(--muted);font-style:italic;font-weight:500;background:transparent;border-left:2px solid var(--line);border-radius:0;padding:1px 0 1px 8px;margin-top:3px;}
/* V/TO: let the numbers that matter stand out; live annual-progress callout */
.vtotext[b-l10room]{color:var(--ink);font-size:16px;line-height:1.65;}
.vtonum[b-l10room]{color:var(--accent);font-weight:800;font-variant-numeric:tabular-nums;}
.vtoprogress[b-l10room]{margin-top:10px;padding:12px 16px;background:var(--green-bg);border-radius:10px;max-width:420px;}
.vtoproglabel[b-l10room]{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--green);font-weight:800;margin-bottom:8px;}
.vtoproghead[b-l10room]{display:grid;grid-template-columns:1fr 80px 80px;gap:8px;margin-bottom:2px;}
.vtoproghead span[b-l10room]{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:right;}
.vtoprogrow[b-l10room]{display:grid;grid-template-columns:1fr 80px 80px;gap:8px;align-items:baseline;padding:3px 0;}
.vtoprogname[b-l10room]{font-weight:800;color:var(--ink);font-size:14.5px;}
.vtoprogpct[b-l10room]{font-size:15px;font-weight:800;color:var(--green);font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;}
.vtoprogtot[b-l10room]{border-top:1px solid color-mix(in srgb,var(--green) 28%,transparent);margin-top:4px;padding-top:6px;}
.vtoprogtot .vtoprogname[b-l10room]{color:var(--green);}
/* Marketing strategy: bold headers with indented sub-items */
.vtomkt[b-l10room]{font-size:15px;line-height:1.5;color:var(--ink);}
.vtomkthead[b-l10room]{font-weight:800;font-size:15.5px;color:var(--ink);margin:2px 0;}
.vtomktsub[b-l10room]{font-weight:600;color:var(--muted);font-size:13.5px;}
.vtomktitem[b-l10room]{padding-left:20px;margin:1px 0;}
.vtomktgap[b-l10room]{height:10px;}
/* 1-Year plan: annual goals synced from the pacing tool */
.vtoyr[b-l10room]{font-size:15px;line-height:1.4;}
.vtoyrline[b-l10room]{margin-top:4px;color:var(--ink);}
.vtoyrlabel[b-l10room]{font-weight:800;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;margin-right:6px;}
.vtoyrbreak[b-l10room]{padding-left:8px;margin:2px 0;display:flex;flex-wrap:wrap;gap:3px 18px;}
.vtoyrdept[b-l10room]{color:var(--muted);font-size:14px;}
.vtosrc[b-l10room]{font-size:11.5px;color:var(--muted);font-style:italic;margin-top:8px;}
/* Q2 financial review - one clean, full-width row per line: COMPANY summary + each department */
[b-l10room] .finsection{margin-top:6px;}
[b-l10room] .finsec-head{font-size:13.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:16px 0 4px;padding:6px 12px;background:var(--surface2);border-radius:7px;}
/* SIX COLUMNS NOW — the trailing one is GAP (sales / GM still to make). Added by narrowing the two
   goal/actual columns rather than widening the table: the card must not get materially wider or the
   room scrolls sideways. The gap column is the narrowest because it carries two short figures. */
[b-l10room] .fintable{--fincols:minmax(92px,.78fr) minmax(136px,1.3fr) minmax(136px,1.3fr) minmax(84px,.85fr) minmax(78px,.78fr) minmax(96px,.95fr);}
[b-l10room] .finhdr2{display:grid;grid-template-columns:var(--fincols);gap:14px;padding:2px 12px 5px;}
[b-l10room] .finhdr2 span{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
[b-l10room] .finhdr2 span:nth-child(n+4){text-align:right;}
[b-l10room] .finrow2{display:grid;grid-template-columns:var(--fincols);gap:14px;align-items:center;padding:8px 12px;border-top:1px solid var(--line);}
[b-l10room] .finrow2.fincompany{background:var(--green-bg);border-radius:10px;border-top:0;margin-bottom:3px;}
[b-l10room] .fincat2{font-size:18px;font-weight:800;color:var(--ink);display:flex;flex-direction:column;line-height:1.15;}
[b-l10room] .fincompany .fincat2{color:var(--green);}
[b-l10room] .fincapt{font-size:10px;font-weight:700;color:var(--muted);text-transform:none;letter-spacing:0;margin-top:1px;}
[b-l10room] .fincell{display:flex;align-items:center;gap:6px;min-width:0;}
[b-l10room] .fincell .finin{flex:1;min-width:0;width:auto;}
[b-l10room] .fincellro{font-family:var(--mono);font-weight:800;font-size:14px;}
[b-l10room] .fingm2{font-family:var(--mono);font-size:12.5px;font-weight:800;color:var(--accent);white-space:nowrap;text-align:right;}
[b-l10room] .finach2{font-family:var(--mono);font-size:12.5px;font-weight:800;color:var(--muted);white-space:nowrap;text-align:right;}
@media(max-width:820px){[b-l10room] .fintable{overflow-x:auto;}[b-l10room] .finhdr2,[b-l10room] .finrow2{min-width:700px;}}
[b-l10room] .fin-under{color:var(--red);font-weight:800;font-family:var(--mono);}
[b-l10room] .fin-over{color:var(--green);font-weight:800;font-family:var(--mono);}
.rockmeta[b-l10room]{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:3px;}
.rockmeta .m[b-l10room]{margin:0;}
.row.subrock[b-l10room]{padding:3px 0;}
.row.subrock .t[b-l10room]{font-weight:500;font-size:16px;color:var(--ink);}
/* Rock-review partial %: the "½" becomes an editable percentage that drives the score */
.pctwrap[b-l10room]{display:inline-flex;align-items:center;gap:2px;font-weight:800;color:var(--accent);font-size:15px;}
.pctin[b-l10room]{width:48px;padding:5px 4px;border:1.5px solid var(--accent);border-radius:8px;font-size:15px;font-weight:800;text-align:center;font-family:inherit;color:var(--accent);background:var(--surface);appearance:textfield;-moz-appearance:textfield;}
.pctin[b-l10room]::-webkit-outer-spin-button,.pctin[b-l10room]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
/* Rock-review status on the LEFT (matches the to-do checkbox cadence): Done checkbox, Not done, Partial */
.row.rockrow[b-l10room]{align-items:flex-start;}
.rockstat[b-l10room]{display:flex;align-items:center;gap:7px;flex:0 0 auto;margin-top:2px;}
.rockstat .chk[b-l10room]{width:22px;height:22px;font-size:16px;}
.ministate[b-l10room]{font-size:13px;font-weight:700;padding:5px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--muted);cursor:pointer;font-family:inherit;white-space:nowrap;}
.ministate:hover[b-l10room]{border-color:var(--accent);color:var(--accent);}
.ministate.on[b-l10room]{background:var(--surface2);color:var(--ink);border-color:var(--muted);font-weight:800;}
[b-l10room] .hint{color:var(--accent);cursor:help;font-size:14px;font-weight:700;opacity:.75;}
[b-l10room] .hint:hover{opacity:1;}
/* Financial rock pacing tool (Set Rocks) - one clean table per section */
.pacesectionhead[b-l10room]{font-size:13.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);margin:18px 0 6px;padding-bottom:5px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.paceset-btn[b-l10room]{text-transform:none;letter-spacing:0;font-weight:700;flex:none;}
.pacesection:first-of-type .pacesectionhead[b-l10room]{margin-top:6px;}
.pacescroll[b-l10room]{overflow-x:auto;}
table.pace2[b-l10room]{width:100%;border-collapse:collapse;min-width:600px;}
table.pace2 th[b-l10room]{font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);text-align:right;padding:0 8px 7px;white-space:nowrap;}
table.pace2 th:first-child[b-l10room]{text-align:left;}
table.pace2 td[b-l10room]{padding:4px 8px;text-align:right;font-size:13.5px;vertical-align:middle;}
td.pacemetric[b-l10room]{text-align:left;font-weight:700;color:var(--muted);font-size:12.5px;padding-left:18px;}
tr.pacegrp td[b-l10room]{background:var(--surface2);font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);padding:5px 10px;text-align:left;}
/* Company total = summary roll-up: green background */
tr.pacegrp.pacetot td[b-l10room]{background:var(--green-bg);color:var(--green);}
tr.pacetotrow td[b-l10room]{font-weight:800;color:var(--ink);font-family:var(--mono);font-variant-numeric:tabular-nums;background:var(--green-bg);}
tr.pacetotrow td.pacemetric[b-l10room]{font-family:inherit;color:var(--green);}
.pacegoal[b-l10room],.paceact[b-l10room],.paceset[b-l10room]{text-align:right;border-radius:7px;font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;font-size:13px;background:var(--surface);padding:4px 6px;}
.pacegoal[b-l10room]{width:98px;border:1px solid var(--line);color:var(--ink);}
.paceact[b-l10room]{width:96px;border:1px solid var(--line);color:var(--green);}
.paceset[b-l10room]{width:96px;border:1.5px solid var(--accent);color:var(--accent);font-weight:800;}
.pacegap[b-l10room]{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:800;}
.gap-ok[b-l10room]{color:var(--green);} .gap-short[b-l10room]{color:var(--amber);} .gap-over[b-l10room]{color:var(--green);}
/* GM cell: dollar with its linked, editable margin % tucked to the lower-right */
.gmcell[b-l10room]{display:inline-flex;flex-direction:row;align-items:flex-end;justify-content:flex-end;gap:5px;}
.pacepct[b-l10room]{width:46px;text-align:right;border:1px dashed color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:6px;padding:2px 4px;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:11px;font-weight:700;color:var(--muted);background:transparent;align-self:flex-end;}
.pacepcttot[b-l10room]{font-size:11px;font-weight:800;color:var(--green);opacity:.9;font-family:var(--mono);font-variant-numeric:tabular-nums;align-self:flex-end;}
/* single margin % lever per dept, sits in the group-header row */
td.pacegrpmargin[b-l10room]{text-align:right;white-space:nowrap;font-size:11px;font-weight:700;text-transform:none;letter-spacing:0;}
.pacemarginlbl[b-l10room]{color:var(--muted);font-weight:700;font-size:10px;text-transform:uppercase;letter-spacing:.05em;margin-right:5px;}
.pacemargin[b-l10room]{width:54px;text-align:right;border:1.5px dashed color-mix(in srgb,var(--accent) 55%,var(--line));border-radius:7px;padding:2px 6px;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:12px;font-weight:800;color:var(--accent);background:var(--surface);}
.pacemargin:focus[b-l10room]{outline:none;border-style:solid;}
/* derived GM (Sales × margin%) - read-only, visually softer than the editable cells */
td.gmproj[b-l10room]{color:var(--muted);font-style:italic;}
/* actual GM % achieved in a booked quarter, shown under the GM $ (goal margin lives on the dept header) */
.gmwrap[b-l10room]{display:flex;flex-direction:column;align-items:flex-end;gap:1px;}
.pacemarginact[b-l10room]{font-size:10.5px;font-weight:700;color:var(--muted);font-family:var(--mono);font-variant-numeric:tabular-nums;}
/* Written Contract: margin/GM not knowable until finalization */
.pacemarginna[b-l10room]{font-size:10.5px;font-weight:700;font-style:italic;color:var(--muted);text-transform:none;letter-spacing:0;}
td.pacenanote[b-l10room]{text-align:left;font-size:12px;font-style:italic;color:var(--muted);padding-left:18px;}

.row[b-l10room]{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line);flex-wrap:wrap;}
.row:first-child[b-l10room]{border-top:0;}
.grow[b-l10room]{flex:1;min-width:0;}
.grow .t[b-l10room]{font-weight:600;font-size:17.5px;}
.grow .t.done[b-l10room]{text-decoration:line-through;color:var(--muted);}
.grow .m[b-l10room]{font-size:15px;color:var(--muted);font-family:var(--mono);}
/* Internal reference codes (TD-/IDS-/QR-…): tiny, muted, tucked under the title. Not for the casual reader. */
/* internal identifiers (IDS-000221, QR-2026-…, DEC-…) are meaningless to the room - hidden everywhere */
.idcode[b-l10room]{display:none;}
.linkhint[b-l10room]{font-size:12px;line-height:1;color:var(--accent);opacity:.75;font-weight:700;}
.pill[b-l10room]{display:inline-block;padding:3px 10px;border-radius:999px;font-size:15px;font-weight:800;white-space:nowrap;}
.p-green[b-l10room]{background:var(--green-bg);color:var(--green);} .p-amber[b-l10room]{background:var(--amber-bg);color:var(--amber);}
.p-red[b-l10room]{background:var(--red-bg);color:var(--red);} .p-accent[b-l10room]{background:var(--accent-soft);color:var(--accent);} .p-muted[b-l10room]{background:var(--surface2);color:var(--muted);}
.lbl[b-l10room]{font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800;margin-right:5px;}
/* Scorecard weekly actual: mono so columns of numbers line up; the prior week sits under it as
   muted reference only - it is deliberately not editable, you edit that week in that week's L10. */
.scval[b-l10room]{width:126px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;}
/* Period-to-date strip under a metric. "—" is a real answer here: it means we have no rule for
   aggregating this metric, not that the number is zero. */
.scqtd[b-l10room]{display:flex;flex-wrap:wrap;gap:4px 20px;margin:2px 0 10px;padding-left:2px;font-size:13px;color:var(--muted);}
.scqtd b[b-l10room]{font-family:var(--mono);font-weight:800;color:var(--ink);margin-left:4px;}
.scnote[b-l10room]{font-style:italic;opacity:.75;margin-left:4px;}
.scprev[b-l10room]{display:block;font-size:13px;color:var(--muted);font-weight:600;margin-top:2px;white-space:nowrap;font-variant-numeric:tabular-nums;}
/* THE GOAL IS THE NUMBER THAT MAKES THE ACTUAL MEAN ANYTHING. It used to render inside .m -
   15px, muted, mono - i.e. indistinguishable from a reference code, sitting under a 17.5px
   semibold metric name and losing every time. It now reads as a peer of the name: same size,
   heavier, in ink, with a small uppercase GOAL tag so it is still obvious WHICH number it is
   without a full sentence. Deliberately NOT accent-coloured - a goal is not a status. */
.scgoal[b-l10room]{display:flex;align-items:baseline;gap:7px;margin-top:3px;}
.scgoal .scgoalv[b-l10room]{font-size:14.5px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;}
.scgoal .scgoallbl[b-l10room]{font-size:13px;font-weight:600;color:var(--muted);}
/* THE REVIEW ROWS ON ONE GRID (2026-09-29): metric+goal · actual · status · IDS · + — fixed tracks, so every
   row's columns line up whether or not it offers IDS; the financial cards' type scale, no monospace. */
.row.scrv[b-l10room]{display:grid;grid-template-columns:minmax(0,1fr) 150px 150px 112px 34px;gap:4px 14px;align-items:center;padding:8px 0;font-family:var(--font)}
.scrv .t[b-l10room]{font-size:15.5px;font-weight:700;color:var(--ink);line-height:1.3}
.scrv-act[b-l10room],.scrv-st[b-l10room]{display:flex;flex-direction:column;align-items:flex-end;gap:1px;min-width:0}
.scrv-st[b-l10room]{align-items:stretch}
.scrv-k[b-l10room]{font-size:13px;font-weight:600;color:var(--muted)}
.scrv .scval[b-l10room]{width:auto;font-size:16px;font-weight:800;color:var(--ink)}
.scrv .statuspick[b-l10room]{width:100%;max-width:none;height:34px;padding:0 26px 0 10px;line-height:32px;font-size:14px;font-weight:700}
.scrv-ids[b-l10room]{justify-self:end}
.scrv .capmini[b-l10room]{justify-self:end}
@media(max-width:620px){
    .row.scrv[b-l10room]{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px 12px}
    .scrv-name[b-l10room]{grid-column:1/-1}
    .scrv-act[b-l10room]{align-items:flex-start}
    .scrv-ids[b-l10room]{justify-self:start}
}
/* No goal set is a QUIET state. "goal -" must not shout the absence of a target; it stays exactly
   as it rendered before, in .m, so the eye skips it and lands on the metrics that do have one. */

.chk[b-l10room]{width:20px;height:20px;border:2px solid var(--line);border-radius:6px;cursor:pointer;flex:none;display:flex;align-items:center;justify-content:center;font-size:15px;color:#fff;background:transparent;}
.chk.on[b-l10room]{background:var(--green);border-color:var(--green);}
.field[b-l10room]{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-family:inherit;font-size:16.5px;background:var(--bg);color:var(--ink);}
textarea.field[b-l10room]{min-height:62px;resize:none;field-sizing:content;}
.sel[b-l10room]{max-width:150px;}
.addrow[b-l10room]{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap;padding-top:11px;border-top:1px dashed var(--line);}
.addrow .field[b-l10room]{flex:1;min-width:130px;}

/* To-do priority indicator — a small cycling button beside the to-do, NOT a row colour.
   Colouring the whole row was rejected: a row already carries meaning here (done, linked,
   confidential) and a second full-row treatment would fight the first. This is a 22px control that
   sits in the row's flex line and cannot be mistaken for the row's own state.

   ACCESSIBILITY. Colour is the LAST cue, never the only one. The glyph differs per state (○ / ! / ‼)
   so the control survives greyscale and colour-blindness; title/aria-label carry the same sentence
   in words; and it is a real <button>, so it takes keyboard focus and Enter/Space. The palette
   reuses --red/--amber (and their -bg pairs), which are already defined for light, dark, and both
   explicit data-theme overrides — so the dot follows the theme with no new variables.

   flex:0 0 auto keeps it from being squeezed by the to-do text, which is the flex:1 sibling. */
.pridot[b-l10room]{flex:0 0 auto;width:22px;height:22px;border-radius:50%;border:1px solid var(--line);
        background:var(--surface);color:var(--muted);cursor:pointer;padding:0;
        font-size:13px;font-weight:800;line-height:1;
        display:inline-flex;align-items:center;justify-content:center;}
.pridot:hover[b-l10room]{border-color:var(--accent);}
.pridot:focus-visible[b-l10room]{outline:2px solid var(--accent);outline-offset:2px;}

/* Normal is deliberately quiet — it is the default state of most to-dos and must not add noise. */
.pridot.pri-normal[b-l10room]{color:var(--muted);}
.pridot.pri-important[b-l10room]{color:var(--amber);border-color:var(--amber);background:var(--amber-bg);}
.pridot.pri-priority[b-l10room]{color:var(--red);border-color:var(--red);background:var(--red-bg);}
.due[b-l10room]{font-family:var(--mono);font-size:15px;color:var(--muted);border:1px solid var(--line);border-radius:7px;padding:5px 8px;background:var(--bg);}
/* height:auto + min-height (NOT height:40px) is load-bearing: an explicit height beats
   field-sizing:content, which pinned every answer to one scrolling line. Now the box keeps
   its 40px resting size and grows to fit as someone types a second/third line. */
.edit[b-l10room]{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:16.5px;font-family:inherit;line-height:1.4;background:var(--surface);color:var(--ink);width:100%;height:auto;min-height:40px;resize:none;field-sizing:content;}
.edit:focus[b-l10room]{outline:2px solid var(--accent);outline-offset:1px;}
/* No scrollbar flash while the box grows. Browsers without field-sizing (Firefox) fall back to
   the rows="2" default height and still scroll - no worse than before, just not auto-growing. */
textarea.edit[b-l10room]{overflow-y:hidden;}
/* equal-height person cards in the segue/headline grids. min-width:0 is load-bearing: grid items
   default to min-width:auto, so a long answer would widen the card and shove the next person's
   column off screen instead of wrapping. */
.grid.cols3 > .card[b-l10room],.grid.cols2 > .card[b-l10room]{align-self:stretch;display:flex;flex-direction:column;min-width:0;}
/* field-sizing:content grows a textarea's HEIGHT (wanted) but an input's WIDTH (not wanted -
   an input can't wrap, so it just stretches the card). Keep inputs at their box width. */
input.edit[b-l10room]{field-sizing:fixed;}

.bdgs[b-l10room]{display:inline-flex;gap:5px;align-items:center;flex-wrap:wrap;margin-left:8px;}
.bdg[b-l10room]{font-size:15px;font-weight:800;padding:2px 7px;border-radius:6px;background:var(--surface2);color:var(--muted);border:1px solid var(--line);white-space:nowrap;}
.bdg.ids[b-l10room]{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 40%,var(--line));background:var(--amber-bg);}
.rockchip[b-l10room]{font-size:15px;font-weight:800;padding:2px 8px;border-radius:6px;background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);font-family:var(--mono);white-space:nowrap;}

.note-panel[b-l10room]{flex-basis:100%;margin-top:8px;background:var(--surface2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;}
.note-entry[b-l10room]{padding:7px 0;border-top:1px solid var(--line);}
.note-entry:first-child[b-l10room]{border-top:0;padding-top:0;}
.note-meta[b-l10room]{font-size:15px;color:var(--muted);}
.note-meta b[b-l10room]{color:var(--ink);font-weight:700;}
.note-text[b-l10room]{font-size:15px;color:var(--ink);margin-top:2px;line-height:1.45;}
.note-add[b-l10room]{display:flex;gap:7px;align-items:center;margin-top:9px;padding-top:9px;border-top:1px dashed var(--line);flex-wrap:wrap;}
.note-add .field[b-l10room]{flex:1;min-width:120px;}
/* Reassign pickers on to-do / IDS rows: small and quiet until you go looking for them. */
.ownersel[b-l10room]{max-width:140px;flex:none;font-size:13px;padding:3px 6px;}
/* The issue title is a textarea (editable + wraps), but it must still READ as the row's heading. */
.idstitle[b-l10room]{font-weight:700;font-size:16.5px;border-color:transparent;background:transparent;padding:2px 6px;}
.idstitle:hover[b-l10room]{border-color:var(--line);background:var(--surface);}
.idstitle.done[b-l10room]{text-decoration:line-through;opacity:.55;}
/* The draft box is a textarea so a long note wraps instead of scrolling sideways, but it sits in a
   compact row next to a select and a button - override the 64px min-height textarea.field carries
   so it rests at one line and grows only as the note gets longer. */
.note-add textarea.field[b-l10room]{min-height:36px;resize:none;overflow-y:hidden;line-height:1.4;}
.notetoggle[b-l10room]{border:1px solid var(--line);background:var(--surface2);color:var(--muted);border-radius:7px;font-size:15px;font-weight:800;padding:3px 10px;cursor:pointer;font-family:inherit;flex-basis:100%;text-align:left;margin-top:8px;}
.notetoggle.on[b-l10room]{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:var(--accent-soft);}
/* IDS: disposition menu, folds, and history trail */
/* BOUNDED ISSUE ROW. The card gives the section its edge; the row needs its own, or twelve
   issues read as one wall of dropdowns. Background bounds it, the left bar RANKS it by priority
   (High red, Medium amber, Low neutral) - a bar rather than a tinted fill so twelve rows do not
   turn into twelve competing colours. .row's shared top border is dropped here: the gap between
   rows is now the separator. */
.row.idsrow[b-l10room]{align-items:flex-start;background:var(--surface2);border-top:none;border-radius:9px;
            border-left:4px solid var(--line);padding:10px 12px;margin:7px 0;}
.row.idsrow.ip-high[b-l10room]{border-left-color:var(--red);}
.row.idsrow.ip-med[b-l10room]{border-left-color:var(--amber);}
.row.idsrow.ip-low[b-l10room]{border-left-color:var(--line);}
.row.idsrow.dragging[b-l10room]{opacity:.5;}
/* Title, then owner/priority/status, then the actions - one continuous line under the title
   instead of controls far left and actions far right with dead space between. */
.idsmeta[b-l10room]{row-gap:6px;}
.idsacts[b-l10room]{display:inline-flex;align-items:center;gap:7px;flex:none;margin-left:4px;}
/* The two IDS cards read as siblings with a clear break, not one list with subheadings. */
.idsblock + .idsblock[b-l10room]{margin-top:16px;}
.idssub[b-l10room]{color:var(--muted);font-size:14.5px;margin:-2px 0 10px;}
.idsfold[b-l10room]{background:none;border:none;color:var(--accent);font-weight:800;font-size:13px;cursor:pointer;padding:12px 0 4px;font-family:inherit;letter-spacing:.02em;}
.idshistlink[b-l10room]{background:none;border:none;color:var(--muted);font-size:12px;cursor:pointer;text-decoration:underline;padding:0;font-family:inherit;font-weight:600;}
.dispmenu[b-l10room]{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:11px 13px;margin:2px 0 8px;background:var(--accent-soft);border-radius:10px;}
.dispbtn[b-l10room]{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:7px 12px;font-size:13.5px;font-weight:700;color:var(--ink);cursor:pointer;font-family:inherit;white-space:nowrap;}
.dispbtn:hover[b-l10room]{border-color:var(--accent);color:var(--accent);}
.dispghost[b-l10room]{color:var(--muted);margin-left:auto;}
.dispgroup[b-l10room]{display:inline-flex;align-items:center;gap:6px;}
.displbl[b-l10room]{font-size:12px;font-weight:800;color:var(--accent);}
.ideventrow[b-l10room]{display:flex;gap:9px;align-items:baseline;padding:2px 0;font-size:13px;}
.idsevt[b-l10room]{font-weight:800;color:var(--accent);font-size:11.5px;white-space:nowrap;text-transform:uppercase;letter-spacing:.03em;flex:none;min-width:120px;}
.idsevt.done[b-l10room]{color:var(--green);}
.idsnotes[b-l10room]{flex-basis:100%;margin:4px 0 4px 2px;display:flex;flex-direction:column;gap:3px;}
.idsnote[b-l10room]{font-size:13.5px;color:var(--ink);line-height:1.4;padding-left:9px;border-left:2px solid color-mix(in srgb,var(--accent) 30%,var(--line));display:flex;align-items:center;gap:6px;}
.idsnote b[b-l10room]{color:var(--accent);font-weight:700;flex:none;}
/* These are textareas, not inputs: a note is prose and routinely runs past one line. line-height
   + field-sizing keep them looking like a single dashed line until there's a reason to be taller. */
.idsnoteedit[b-l10room]{flex:1;min-width:0;font-family:inherit;font-size:13.5px;line-height:1.4;color:var(--ink);background:transparent;border:1px solid transparent;border-radius:6px;padding:2px 6px;resize:none;field-sizing:content;overflow-y:hidden;}
.idsnoteedit:hover[b-l10room]{border-color:var(--line);background:#fff;}
.idsnoteedit:focus[b-l10room]{outline:none;border-color:var(--accent);background:#fff;}
.idsnotedel[b-l10room]{flex:none;border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:13px;line-height:1;padding:2px 4px;border-radius:5px;}
/* An imported description / history note (ImportedNotes): the source's own text, read-only, line breaks kept so
   Identify / Discuss / Solve and dated updates read as written. No author label — the importer is not its author. */
.impnotetext[b-l10room]{flex:1;min-width:0;padding:2px 6px;white-space:pre-wrap;word-break:break-word;}
/* "Show N more" / "Show less" under a note list — the IDS history link's quiet style, aligned with the notes. */
.notesmore[b-l10room]{align-self:flex-start;background:none;border:none;color:var(--accent);font-size:12.5px;font-weight:700;cursor:pointer;padding:2px 0 2px 11px;font-family:inherit;}
.notesmore:hover[b-l10room]{text-decoration:underline;}
/* IDS Short-Term / Long-Term tabs (only for a team with a V/TO Long-Term Issues list). */
.idstabs[b-l10room]{display:flex;gap:4px;margin:0 0 10px;border-bottom:1px solid var(--line);}
.idstab[b-l10room]{background:none;border:none;border-bottom:3px solid transparent;margin-bottom:-1px;padding:7px 12px;font-family:inherit;font-size:14px;font-weight:700;color:var(--muted);cursor:pointer;}
.idstab.on[b-l10room]{color:var(--accent);border-bottom-color:var(--accent);}
.idstab:hover[b-l10room]{color:var(--accent);}
.idsnotedel:hover[b-l10room]{color:var(--red);background:var(--red-bg);}
.idsnoteadd[b-l10room]{flex-basis:100%;display:flex;gap:7px;align-items:center;margin:3px 0 8px;flex-wrap:wrap;}
.idsnoteadd .field[b-l10room]{flex:1;min-width:150px;}
/* Potential-rock inline note */
.potnote[b-l10room]{flex-basis:100%;font-size:13px;padding:5px 8px;border:1px dashed var(--line);border-radius:7px;margin-top:4px;color:var(--muted);background:transparent;min-height:32px;}
.potnote:focus[b-l10room]{border-color:var(--accent);color:var(--ink);}

.raterow[b-l10room]{display:flex;align-items:center;gap:12px;padding:9px 0;border-top:1px solid var(--line);flex-wrap:wrap;}
.raterow:first-of-type[b-l10room]{border-top:0;}
.ratename[b-l10room]{width:80px;font-weight:700;font-size:16.5px;flex:none;}
.rate[b-l10room]{display:flex;gap:5px;flex-wrap:wrap;}
.rate button[b-l10room]{width:34px;height:34px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-weight:800;cursor:pointer;font-family:inherit;color:var(--ink);font-size:15px;}
.rate button.on[b-l10room]{background:var(--accent);color:#fff;border-color:var(--accent);}
.ratesummary[b-l10room]{margin-top:11px;font-size:15px;color:var(--muted);}
.ratesummary b[b-l10room]{color:var(--ink);}

/* scoped per-block capture "+" (matches the Quarterly) — NO global floating FAB */
[b-l10room] .blockhead{display:flex;align-items:center;justify-content:space-between;gap:10px;}
/* "+" drawn with two CSS bars = mathematically dead-center, no font-metric drift */
[b-l10room] .capmini{width:30px;height:30px;border-radius:50%;border:0;background:var(--accent);cursor:pointer;box-shadow:var(--shadow);flex:none;
    position:relative;font-size:0;padding:0;line-height:0;}
[b-l10room] .capmini::before,[b-l10room] .capmini::after{content:"";position:absolute;top:50%;left:50%;background:#fff;border-radius:1px;transform:translate(-50%,-50%);}
[b-l10room] .capmini::before{width:13px;height:2.5px;}
[b-l10room] .capmini::after{width:2.5px;height:13px;}
[b-l10room] .capmini:hover{filter:brightness(1.08);}

.statuspick.st-g[b-l10room]{color:var(--green);border-color:color-mix(in srgb,var(--green) 45%,var(--line));}
.statuspick.st-r[b-l10room]{color:var(--red);border-color:color-mix(in srgb,var(--red) 45%,var(--line));}
.statuspick.st-a[b-l10room]{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 45%,var(--line));}
.statuspick.st-m[b-l10room]{color:var(--muted);}

.seglabel[b-l10room]{display:block;font-size:15px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:11px 0 4px;}
.edit + .seglabel[b-l10room]{margin-top:12px;}

/* attendees + roles (matches the Quarterly check-in exactly) */
.att[b-l10room]{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line);}
.att:first-of-type[b-l10room]{border-top:0;}
/* ABSENT MUST BE AS LEGIBLE AS PRESENT. Opacity alone made an absent row read as "faded", which is
   indistinguishable from "not filled in yet"; the muted rail on the left says it is a state someone
   chose. Opacity is kept but lifted — .5 was dim enough to make the name hard to read. */
.att.absent[b-l10room]{opacity:.62;border-left:3px solid var(--muted);padding-left:9px;margin-left:-12px;}
.att.dragging[b-l10room]{opacity:.4;}
.dh[b-l10room]{cursor:grab;color:var(--muted);font-size:18px;flex:none;user-select:none;line-height:1;}
.att-nm[b-l10room]{min-width:130px;font-size:17.5px;}
.roles[b-l10room]{display:flex;gap:6px;flex-wrap:wrap;align-items:center;flex:1;}
.rolechip[b-l10room]{display:inline-flex;align-items:center;gap:2px;background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:999px;font-size:15px;font-weight:700;padding:2px 4px 2px 10px;}
.rolechip.standing[b-l10room]{background:transparent;color:var(--muted);border-style:dashed;
                   border-color:var(--line);font-weight:600;padding:2px 10px;}
.rolechip .rx[b-l10room]{border:0;background:transparent;color:var(--accent);cursor:pointer;font-weight:800;font-size:17.5px;line-height:1;padding:0 3px;}
.rolesel[b-l10room]{border:1px dashed var(--line);border-radius:999px;font-size:15px;font-weight:700;color:var(--muted);background:transparent;padding:5px 10px;cursor:pointer;font-family:inherit;}
/* PRESENT / ABSENT pill. Fixed width so the column reads straight down a list whose .roles cell
   grows and wraps — a header rule over this position would drift, this does not. Green fill for
   present matches the tick it replaces; outline+muted for absent so the two states are equally
   legible rather than one being the other's absence. */
.att-state[b-l10room]{flex:none;width:104px;text-align:center;border-radius:999px;font-family:inherit;
           font-size:14px;font-weight:800;letter-spacing:.01em;padding:5px 0;cursor:pointer;
           border:1.5px solid var(--line);background:transparent;color:var(--muted);white-space:nowrap;}
.att-state.on[b-l10room]{background:var(--green);border-color:var(--green);color:#fff;}
.att-state:hover[b-l10room]{border-color:var(--accent);}
.att-state.on:hover[b-l10room]{filter:brightness(.95);}
/* Pushed-down provenance and the pusher's own "sent" tag. Muted and small: they are facts about
   where a thing came from or went, not calls to action. */
.pushfrom[b-l10room]{font-size:13px;font-weight:600;color:var(--muted);margin-top:2px;}
.pushfrom b[b-l10room]{color:var(--ink);}
.pushtag[b-l10room]{font-size:12.5px;font-weight:700;color:var(--muted);border:1px dashed var(--line);
         border-radius:999px;padding:1px 9px;white-space:nowrap;}
/* A refusal must not read like another inbox item. Red rail, not a red card: the work is still
   real, it is the plan that was rejected. */
.declinedback[b-l10room]{border-left:4px solid var(--red);}
.declinedback .grpname[b-l10room]{color:var(--red);}
/* The lineage above a rock — reference, never a control. Muted, dashed left rule, one line. */
.ancestry[b-l10room]{font-size:13px;color:var(--muted);border-left:2px dashed var(--line);
          padding:2px 0 2px 10px;margin:0 0 4px 2px;line-height:1.5;}
.ancestry b[b-l10room]{color:var(--ink);font-weight:700;}
[b-l10room] .src{font-size:15px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:6px;background:var(--surface2);color:var(--muted);border:1px solid var(--line);}
.who.name[b-l10room]{color:var(--ink);font-size:16.5px;font-weight:800;}
.role-sub[b-l10room]{font-size:15px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin:2px 0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* uniform segue cards regardless of role-title length */
.grid.cols3 > .card[b-l10room]{min-height:196px;}
/* grid cards must NOT inherit the stacked-card top margin — gap handles spacing.
   (This is what made the upper-left segue card look taller than the rest.) */
.grid > .card[b-l10room]{margin-top:0 !important;}
.overlay[b-l10room]{position:fixed;inset:0;background:rgba(14,24,34,.32);z-index:25;}
.drawer[b-l10room]{position:fixed;top:0;right:0;height:100vh;width:410px;max-width:92vw;background:var(--surface);border-left:1px solid var(--line);box-shadow:var(--shadow);z-index:26;padding:22px;overflow:auto;}
.drawer h2[b-l10room]{margin:0 0 4px;font-size:22px;}
.drawer .sub[b-l10room]{color:var(--muted);font-size:15px;margin:0 0 16px;}
.types[b-l10room]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px;}
.type[b-l10room]{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:7px 11px;font-size:15px;font-weight:700;cursor:pointer;color:var(--ink);}
.type.on[b-l10room]{background:var(--accent);color:#fff;border-color:var(--accent);}
.flabel[b-l10room]{display:block;font-size:15px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:12px 0 5px;}
.create[b-l10room]{margin-top:18px;width:100%;border:0;border-radius:10px;padding:13px;background:var(--accent);color:#fff;font-weight:800;font-size:17.5px;cursor:pointer;}
.toast[b-l10room]{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:13px 18px;border-radius:12px;font-size:16.5px;font-weight:600;box-shadow:var(--shadow);z-index:40;max-width:90vw;text-align:center;}

@media(max-width:820px){.app[b-l10room]{grid-template-columns:1fr;}.rail[b-l10room]{position:static;height:auto;}}

/* Rock Review row. Still wraps on narrow widths rather than overflowing; no effect when there
   is room. The per-row STATUS/CONFIDENCE labels are gone (see the markup), so the row is one
   line: title · owner · due, then the two controls, then +. */
/* ── THE ROCK CARD: CONTENT FIRST, CONTROLS SECOND ──────────────────────────────────────────────
   ⚠ THE TITLE USED TO LOSE THE FIGHT FOR WIDTH. The row was one flex line — title in .grow next to
   an owner picker, status, confidence, a date box and three buttons — so on a real screen the
   controls took their fixed widths first and the rock's name was squeezed into whatever was left.
   PAG's production room rendered "Training for / Delivery Crews to / Build Skills / / Knowledge —
   1x a / month" as five stacked lines beside a comfortable row of dropdowns. The most important
   thing on the screen was the narrowest thing on the screen, and it made every card enormous.

   flex-basis:100% gives the title its own line and pushes the controls to the next one. That is the
   whole change: one property, no markup restructure, and the controls keep their column widths. */
.rockrev[b-l10room]{flex-wrap:wrap;row-gap:6px;padding:9px 0;}
.rockrev .grow[b-l10room]{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 8px;min-width:0;}
/* ⚠ THE WORKING ROW ONLY. Scoped to .rkwork — the room's own editable rock — rather than to every
   .grow inside .rockrev, which also restyled the routed COMPANY rows at the top of the board and
   made them taller for nothing. Those are read at a glance, not worked, and their compact single
   line was already right. */
.rockrev.rkwork .grow[b-l10room]{flex:1 0 100%;}
.rockrev .grow .t[b-l10room]{font-size:16.5px;line-height:1.3;}
/* The meta is prose here, not a code - mono was for the PublicId, which is display:none. */
.rockrev .grow .m[b-l10room]{font-family:inherit;}
/* Fixed widths so the two controls form COLUMNS down the list. That column position is what
   replaces the labels - it only works if every row agrees on the width. */
.rockrev .rkstatus[b-l10room]{width:152px;flex:none;}
.rockrev .rkconf[b-l10room]{width:120px;flex:none;}
/* ⚠ A NAME MUST BE READABLE. .sel caps every select at 150px, which rendered PAG's owner picker as
   "Ethonne Moro" — a truncated person is worse than a wide control. Wide enough for a real full
   name, capped so one long name cannot stretch the row, and the title attribute already carries the
   full value for the rare case that still clips.

   ⚠ WORKING ROWS ONLY, MEASURED. Widening the delegated picker on a routed CONTEXT row too cost the
   title 56px of width, which pushed it from two lines to three and put those rows back up from 92px
   to 116px — the exact regression this polish pass exists to undo. A context row is read at a
   glance and its picker keeps the global 150px; its name truncation is pre-existing behaviour and
   is left exactly as it was rather than paid for in height. */
.rockrev.rkwork .rkowner[b-l10room]{width:auto;min-width:200px;max-width:280px;flex:none;}

/* ── ACTIONS, SET APART FROM REPORTING FIELDS ───────────────────────────────────────────────────
   Owner / status / confidence / due say what the room REPORTS about this rock; +, Send to and
   Remove CHANGE where it lives. Read as one strip they are indistinguishable. A gap separates them
   without adding labels, which would put the row's height straight back. margin-left:auto pushes
   the group to the trailing edge on a wide row and collapses harmlessly when the line wraps. */
.rockrev.rkwork .rkactions[b-l10room]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto;}

/* ⚠ AN ACTION, NOT ANOTHER DATA FIELD. Semantically still a native select — keyboard, screen reader
   and the existing handler are untouched — but it sits beside + and Remove rather than beside the
   owner and status pickers, so it should not wear their chrome. Accent text on a quiet ground reads
   as a menu; "Send to… ▾" says it opens something. */
.rockrev .rksend[b-l10room]{max-width:none;width:auto;border:1px solid var(--line);background:var(--surface2);
                 color:var(--accent);font-weight:700;font-size:13px;border-radius:8px;padding:5px 9px;cursor:pointer;}
.rockrev .rksend:hover[b-l10room]{border-color:var(--accent);}

/* MEDIUM — the controls wrap among themselves; the title keeps its own full-width line. */
@media (max-width:900px){
    .rockrev .rkowner[b-l10room]{min-width:170px;}
    .rockrev .rkstatus[b-l10room]{width:130px;}
    .rockrev .rkconf[b-l10room]{width:104px;}
}
/* NARROW — everything stacks. min-width:0 on the selects is what stops a long option string
   forcing the row wider than the viewport and scrolling the whole page sideways. */
@media (max-width:620px){
    .rockrev .rkowner[b-l10room],.rockrev.rkwork .rkowner[b-l10room],.rockrev .rkstatus[b-l10room],.rockrev .rkconf[b-l10room],.rockrev .rkdue[b-l10room],.rockrev .rksend[b-l10room]{
        width:100%;max-width:none;min-width:0;flex:1 0 100%;
    }
    /* The action group takes the full width too, so + / Send to / Remove sit on their own line
       rather than being squeezed against the trailing edge. */
    .rockrev.rkwork .rkactions[b-l10room]{margin-left:0;flex:1 0 100%;}
}

/* WorkCards (WWView) embed. Icon matches LevelTen's 🏔️ affordance; the panel is a large
   centred sheet rather than a full-screen takeover, so the room stays visible behind it. */
.wwview-btn[b-l10room]{background:none;border:1px solid var(--line);border-radius:8px;padding:2px 7px;cursor:pointer;
            font-size:15px;line-height:1.5;flex:none;}
.wwview-btn:hover[b-l10room]{border-color:var(--accent);background:var(--accent-soft);}
.wwview-panel[b-l10room]{position:fixed;inset:3vh 3vw;background:var(--surface);border:1px solid var(--line);
              border-radius:14px;box-shadow:var(--shadow);z-index:60;display:flex;flex-direction:column;overflow:hidden;}
.wwview-head[b-l10room]{display:flex;align-items:center;justify-content:space-between;gap:12px;
             padding:12px 16px;border-bottom:1px solid var(--line);flex:none;}
.wwview-title[b-l10room]{font-weight:800;font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wwview-frame[b-l10room]{flex:1;width:100%;border:0;background:var(--bg);}

/* Company logo at the top of the meeting rail. max-width so a wide wordmark cannot push the
   rail out; object-fit:contain so any aspect ratio sits correctly in the box rather than
   stretching. Sized generously - this is the one piece of branding in a screen-shared room. */
.roomlogo[b-l10room]{display:block;max-width:100%;max-height:46px;width:auto;object-fit:contain;margin:0 0 14px;}
.roomlogo-name[b-l10room]{font-weight:800;font-size:16px;color:var(--ink);margin:0 0 14px;}

/* OWNER OF A FINANCIAL RESPONSIBILITY, in the Financials card's row label.

   Quiet on purpose: the row is a scoreboard and the name is context for it, not a heading. It says
   WHO ANSWERS for this line — the same person whose rock carries the On Track / Off Track that the
   room will ask about. It is not a status and must not read like one, so no colour. */
[b-l10room] .finowner {
    display: block;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .01em;
    color: var(--muted, #6b7580);
    margin-top: 1px;
}

/* OWNER-DECLARED STATUS, inside the Financials row label.

   ⚠ THIS IS THE ONLY PLACE THESE EIGHT ROCKS CAN BE DECLARED. They render once — here — rather than
   also as ordinary rock rows, so the control has to live in the card or their owners have nowhere to
   answer at all.

   Stacked under the owner instead of becoming a sixth grid column: the financial table's five
   columns are already dense, and a new column would push the numbers off the edge on a laptop. It
   also keeps the reading order the meeting actually uses — who owns this, what do they say, then
   what do the numbers say.

   Tinted by value so a row's declaration is scannable down the card, using the same status
   vocabulary the rock rows use. The tint says what the OWNER chose; it is never derived from the
   goal/actual figures on the same row. */
[b-l10room] .finstatus {
    margin-top: 3px;
    font-size: 13px;
    font-weight: 800;
    padding: 1px 6px;
    border-radius: 6px;
    border: 1px solid var(--line);
    background-color: var(--surface);
    color: var(--ink);
    max-width: 116px;
}
/* Status fills: the shared global treatment in app.css ("ROCK STATUS, ONE TREATMENT EVERYWHERE"). */

/* ── FINANCIALS: COMPANY, THEN CHANNELS ─────────────────────────────────────────────────────────
   The card was two Written/Finished tables with the same four categories in each, so a reader
   chasing one channel found it twice, far apart. It is now the company's own commitment followed by
   each channel with both halves together. These rules add the channel grouping only; the five-column
   grid, its figures and its inputs are untouched. */
[b-l10room] .finchan { padding: 2px 0 4px; }
[b-l10room] .finchan + .finchan { border-top: 1px solid var(--line); margin-top: 2px; }

[b-l10room] .finchanhead {
    display: flex;
    align-items: baseline;
    gap: 9px;
    padding: 5px 12px 1px;
}
[b-l10room] .finchanname {
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--ink);
}
/* The channel owner sits on the header line, not stacked under it — one line for "who answers for
   this channel" keeps the block short. Only drawn when both stages share an owner; when they differ
   (PAG's Contract) each row names its own instead, and this is absent rather than wrong. */
[b-l10room] .finchanowner { display: inline; margin-top: 0; }

/* A stage row indents under its channel and drops to normal weight: the channel is the heading, the
   stage is the row. Without this the two read as equals and the grouping is invisible. */
[b-l10room] .fincat2stage { font-size: 14px; font-weight: 600; padding-left: 12px; }

/* ── PERSON SECTION RHYTHM ──────────────────────────────────────────────────────────────────────
   A person can now hold two financial rocks back to back, each followed by four evidence cards, and
   the run reads as one undifferentiated stripe unless the boundaries are drawn. Restraint on
   purpose: a little space and one hairline, no new containers, no colour, no smaller type.

   The rock row stays the landmark — it carries the owner's declaration, and the evidence beneath it
   must never compete with that. */
[b-l10room] .row.rockrev { margin-top: 10px; }

/* The gap BEFORE a rock that follows a summary is the one that matters: it separates "the previous
   rock and its evidence" from "the next rock". Adjacent-sibling so a rock following another rock
   directly (a completion rock after a completion rock) keeps its ordinary tighter rhythm. */
[b-l10room] .rmc + .row.rockrev {
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid var(--line);
}


/* GAP CELL — what is still to make. Same mono/12.5px/right-aligned treatment as the GM % and
   ACHIEVED columns beside it, so the four numeric columns read as one family rather than the new one
   shouting. Ink rather than accent or muted: it is the section's most actionable figure, but it is a
   fact to read, not an alarm. nowrap keeps "sales / GM" on one line — the abbreviated K/M formatting
   exists so it fits. An em dash where no goal exists (PAG's Contract Written GM), never a zero:
   "nothing to report" and "nothing left to do" are different statements. */
[b-l10room] .fingap2{font-family:var(--mono);font-size:12.5px;font-weight:800;color:var(--ink);white-space:nowrap;text-align:right;}

/* PERIOD CONTEXT IN THE SECTION BAR. Pushed right on the same line as the section name, so it costs
   no height at all. Wraps under the name on a narrow card rather than forcing the bar wider. */
[b-l10room] .finsec-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
[b-l10room] .finperiod {
    margin-left: auto;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    color: var(--muted);
    font-variant-numeric: tabular-nums;
}

/* ── PERSON HEADER BAND ─────────────────────────────────────────────────────────────────────────
   A CHAPTER DIVIDER, not a label between rows. Rock Review reads top to bottom as one long list, and
   a person carrying two financial rocks plus their summaries runs most of a screen — so without a
   real break Michael bleeds into Jai bleeds into Scot and the reader loses track of whose review
   they are in.

   Four things do the work, in order of how much they contribute:

     1. WHITESPACE. The 40px above is the single biggest signal and the cheapest — it is what makes
        the break unmistakable before any colour is read.
     2. The band belongs DOWNWARD. 40px above, 6px below: the header and the rocks under it read as
        one unit, rather than the header looking attached to the rock above it.
     3. A teal left accent, repeated down the page, so the eye can find the next person by shape.
     4. A teal-tinted ground, one step stronger than the old --surface2.

   ⚠ NO BOX AROUND THE PERSON. The band is the divider; the rocks below keep their own width, ground
   and spacing. Boxing each person, tinting their rows, or alternating backgrounds would turn a
   meeting agenda into a dashboard and bury the rocks the room is there to discuss.

   ⚠ AND NO STATUS COLOUR. --accent-soft is the teal-family surface token, not green/amber/red:
   status belongs to the rock rows, and a coloured band would read as a judgement on the person. */
[b-l10room] .personband {
    display: flex;
    align-items: baseline;
    gap: 10px;
    /* The chapter break. Asymmetric on purpose — see note 2 above. */
    margin: 40px 0 6px;
    padding: 9px 14px;
    background: var(--accent-soft);
    border-left: 4px solid var(--accent);
    border-radius: 4px 8px 8px 4px;
}

/* Deliberately NO bottom rule: a line here would separate the header from the rocks it introduces,
   which is the opposite of the relationship we want. The tinted ground already ends the band. */

[b-l10room] .personband .pbname {
    font-size: 14px;
    font-weight: 800;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--accent);
}

/* The count sits at the far right so a long name cannot push it out of alignment, and stays muted:
   stronger than before, but subordinate to the name — it answers "how much of this is there", not
   "who is this". Singular/plural comes from the markup. */
[b-l10room] .personband .pbcount {
    margin-left: auto;
    font-size: 11.5px;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--muted);
}

/* ⚠ NO SPECIAL CASE FOR THE FIRST PERSON, deliberately. An earlier :first-of-type rule to tighten it
   was DEAD — bands are interleaved with .row siblings, so :first-of-type matched a rock row, not the
   first band — and removing it is the right fix rather than reaching for :first-child, because every
   person genuinely should read the same. One grammar, seven identical chapter openings. */

/* ══ SUB-ROCKS ═════════════════════════════════════════════════════════════════════════════════
   A rock's independently owned commitments. The chip lives in the action strip; the panel expands
   BENEATH the row, never inside it.

   ⚠ THE COLLAPSED ROW MUST NOT GET TALLER. This is the constraint 274aea0 bought and this feature
     does not get to spend. .subchip is a .btn.sm in the .rkactions strip that already exists — it
     inherits that strip's height and its 8px gap, adds no line box of its own, and the panel is a
     SIBLING of the row rather than a child, so an unopened panel contributes exactly nothing. The
     measured row height is unchanged with the chip present; see the density comparison in the
     report. */
.rockrev .subchip[b-l10room]{font-weight:700;white-space:nowrap;}
/* Attention is a BORDER, not a fill: a filled chip competes with the status control beside it, and
   the status control is the thing the room is actually reading. */
.rockrev .subchip.attn[b-l10room]{border-color:var(--red);color:var(--red);}

/* ── THE PANEL ───────────────────────────────────────────────────────────────────────────────
   Indented under the parent on the same dashed rail .rocksteps and .ancestry use, so the room reads
   it as "belonging to the row above" without a box drawing a second card around it. */
.subpanel[b-l10room]{margin:2px 0 10px 30px;border-left:2px solid var(--line);padding:6px 0 6px 12px;}
.subhead[b-l10room]{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:6px;}
.subttl[b-l10room]{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--muted);}
.subsum[b-l10room]{font-size:13px;color:var(--muted);}
.subsum.attn[b-l10room]{color:var(--red);font-weight:600;}

/* ONE SUB-ROCK, COMPACT: title · owner · status · confidence · due · "+". Status and confidence are
   controls only where the room may declare for that Sub-Rock (SubRockRow); elsewhere they are text. */
.subkids[b-l10room]{display:flex;flex-direction:column;gap:4px;margin:4px 0 8px}
.subkid[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:6px 10px;font-size:14px;
        background:var(--surface);border:1px solid var(--line);border-radius:8px}
.subkid .skname[b-l10room]{flex:1 1 220px;min-width:0;font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.subkid .skowner .rc-owner[b-l10room]{font-size:14px}
.subkid .skconf[b-l10room],.subkid .skdue[b-l10room]{color:var(--muted);font-weight:600}
.subkid .skdue.over[b-l10room]{color:var(--red);font-weight:700}
.subkid .skstatus select[b-l10room],.subkid .skconf select[b-l10room]{height:30px;font-size:14px;padding:0 22px 0 8px;width:auto;max-width:100%}
.subkid .skstatus select[b-l10room]{font-weight:800;border-width:2px}
.subkid .skacts:empty[b-l10room]{display:none}
.subkid .skacts .sk-plus[b-l10room]{width:30px;height:30px;font-size:18px}

/* ── THE MULTI-ROW CREATION WORKSPACE ────────────────────────────────────────────────────────
   A grid, because the room is comparing four commitments against each other while it types them —
   four stacked forms would lose that. Columns line up with the read-only list above. */
.subcreate[b-l10room]{margin-top:8px;}
.scrow[b-l10room]{display:grid;grid-template-columns:minmax(0,1fr) 138px 150px 150px 32px;gap:8px;align-items:center;
       margin-bottom:6px;}
.scrow .field[b-l10room]{min-width:0;max-width:none;width:100%;}
.schead[b-l10room]{font-size:10.5px;font-weight:800;letter-spacing:.08em;color:var(--muted);margin-bottom:2px;}
/* A refused date is outlined, not hidden: the room needs to see WHICH row it must fix. */
.scrow .field.bad[b-l10room]{border-color:var(--red);}
.scmsg[b-l10room]{font-size:12.5px;margin:2px 0 8px;line-height:1.4;}
/* Advisory amber, refusal red — the difference between "consider this" and "this will not save". */
.scmsg.warn[b-l10room]{color:var(--amber,#b45309);}
.scmsg.bad[b-l10room]{color:var(--red);font-weight:600;}
.scadd[b-l10room]{margin:2px 0 10px;}
.scfoot[b-l10room]{display:flex;gap:8px;align-items:center;}

/* MEDIUM — the owner and date columns give ground first; the title keeps as much width as it can. */
@media (max-width:900px){
    .scrow[b-l10room]{grid-template-columns:minmax(0,1fr) 124px 128px 132px 32px;}
}
/* NARROW — everything stacks, matching what .rockrev already does at this width. min-width:0 is
   what stops a long option string forcing the panel wider than the viewport and scrolling the whole
   page sideways, which is the failure mode this room already had to fix once. */
@media (max-width:620px){
    .subpanel[b-l10room]{margin-left:12px;padding-left:8px;}
    .subkid[b-l10room]{gap:4px 10px;padding:6px 8px}
    .subkid .skname[b-l10room]{flex-basis:100%}
    .scrow[b-l10room]{grid-template-columns:1fr;gap:6px;}
    .scrow .field[b-l10room]{width:100%;}
    .scfoot[b-l10room]{flex-wrap:wrap;}
    .scfoot .create[b-l10room]{flex:1 0 100%;}
}

/* ⚠ THE CHIP SHRINKS BEFORE THE ROW WRAPS. Measured: the chip replaced "⛰ break down" one-for-one,
   but its label is longer once it carries counts and a warning ("Sub-Rocks 0/4 · ⚠ 1 ▾"), and on the
   narrower ROUTED row that extra width was enough to tip the strip onto a second line — 93px → 117px
   at 1440. Letting it shrink and ellipsis keeps the row on one line; the full label stays available
   in the title attribute, which already carries the whole summary. flex-shrink alone is not enough:
   min-width:0 is what lets a flex item go below its content width at all. */
.rockrev .subchip[b-l10room]{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* ── THE COMPACT EVIDENCE BADGE ─────────────────────────────────────────────────────────────────
   The same roll-up as the chip, on rows that have no action strip to put a chip in.

   ⚠ IT LIVES INSIDE .m, NOT ON THE ROW'S FLEX AXIS. That is the whole reason it costs nothing: .m
     is the metadata line inside .grow, and on a borrowed row it carries only "Owner · due Sep 30"
     because .idcode is display:none. Adding a span there cannot wrap the status/confidence strip,
     and the title above keeps its own line at full width. Measured delta: 0px.

   ⚠ IT IS NOT STYLED AS A BUTTON. The row is read-only; a button-looking control would promise an
     action the room does not have here. It reads as metadata — same muted colour and size as the
     owner and due date beside it — and only the underline-on-hover says it opens something.

   The Rock's own wording stays the priority: the badge is flex:none but sits AFTER the owner and
   date in a line with a thousand pixels spare, so it never competes with the title for width. */
.rockrev .grow .m .subbadge-sep[b-l10room]{color:var(--muted);}
.rockrev .grow .m .subbadge[b-l10room]{
    display:inline;padding:0;border:0;background:none;font:inherit;color:var(--muted);
    cursor:pointer;white-space:nowrap;
}
.rockrev .grow .m .subbadge:hover[b-l10room]{color:var(--accent);text-decoration:underline;}
/* Attention is carried by colour and weight only — no border, no fill, nothing that would add a
   box and therefore a line-height of its own. */
.rockrev .grow .m .subbadge.attn[b-l10room]{color:var(--red);font-weight:700;}

/* ── ADOPTED DEPARTMENT ROCK ────────────────────────────────────────────────────────────────────
   A Rock in THIS team's quarterly plan that this team does not own. The visual job is one
   distinction and only one: "this is in our plan, and somebody upstairs still answers for it."

   ⚠ NO OWNER COLUMN, DELIBERATELY. Every other Rock Review row has an owner control in the same
     horizontal position. Leaving that space empty here is the point — there is no receiving-team
     owner, and drawing a control that implied one is exactly the defect the first production
     walkthrough produced (a same-title duplicate owned by an arbitrary person). */
.rockrev.deptplan[b-l10room]{align-items:flex-start;}
.rockrev.deptplan .deptfrom[b-l10room]{color:var(--muted);}
.rockrev.deptplan .deptfrom b[b-l10room]{color:var(--fg);font-weight:600;}
/* The status/confidence the OWNING room reports, shown read-only in the same columns the editable
   controls occupy elsewhere, so the row still scans as a Rock Review row. */
.rockrev.deptplan .rkro[b-l10room]{color:var(--muted);}
.rockrev.deptplan .rkro.rv-status--ontrack[b-l10room]{color:var(--st-on-ink)} .rockrev.deptplan .rkro.rv-status--atrisk[b-l10room]{color:var(--st-risk-ink)}
.rockrev.deptplan .rkro.rv-status--offtrack[b-l10room]{color:var(--st-off-ink)} .rockrev.deptplan .rkro.rv-status--done[b-l10room]{color:var(--st-done-ink)}

/* The action strip sits on its own line rather than competing with the title for the row's flex
   axis. "+ Create Sub-Rocks" carries a word, not just an icon: it is a first-class action the room
   has never seen before, and a bare + would be a guess. The chip beside it is view/manage ONLY —
   one creation control per Rock, never two. */
.rockrev.deptplanacts[b-l10room]{padding-top:0;border-top:0;gap:8px;flex-wrap:wrap;}
.rockrev.deptplanacts .grow[b-l10room]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;}
.subcreatebtn[b-l10room]{white-space:nowrap;flex:0 0 auto;}
/* Same shrink rule the chip already carries on an ordinary row: the label grows when it gains
   counts and a warning, and it must give way before the row wraps. */
.rockrev.deptplanacts .subchip[b-l10room]{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rockrev.deptplan .ancestry[b-l10room]{margin-top:2px;}

/* ⚠ THE TITLE STOPS COMPETING WITH THE STATUS COLUMNS BEFORE IT BECOMES UNREADABLE.
   Measured at 900px: .rkstatus and .rkconf hold fixed widths, the sidebar holds its own, and what
   was left for .grow squeezed "Training for Delivery Crews to Build Skills / Knowledge — 1x a
   month" down to ONE WORD PER LINE — a 598px row saying almost nothing. This row carries more text
   than any other in Rock Review (title + "From <team> · <owner> · due" + ancestry), so the generic
   row rules are not enough for it.
   Below 1100 the judgement columns move UNDER the title and read as a labelled pair instead. The
   row gets taller by one short line and every word stays legible, which is the right trade. */
@media (max-width:1100px){
  .rockrev.deptplan[b-l10room]{flex-wrap:wrap;}
  .rockrev.deptplan .grow[b-l10room]{flex:1 1 100%;min-width:0;}
  .rockrev.deptplan .rkro[b-l10room]{width:auto;flex:0 0 auto;margin-top:4px;font-size:13px;}
  .rockrev.deptplan .rkstatus[b-l10room]::before{content:"status:\00a0";color:var(--muted);}
  .rockrev.deptplan .rkstatus.rv-status-ro[b-l10room]::before{color:inherit;}
  .rockrev.deptplan .rkconf[b-l10room]::before{content:"confidence:\00a0";color:var(--muted);margin-left:10px;}
}

@media (max-width:900px){
  .rockrev.deptplanacts .grow[b-l10room]{gap:6px;}
  .subcreatebtn[b-l10room]{font-size:13px;}
}
@media (max-width:620px){
  /* The action strip stacks before the title does. Losing a line here is cheaper than a title that
     wraps mid-word on a phone. */
  .rockrev.deptplanacts .grow[b-l10room]{align-items:stretch;}
}

/* "How do Rocks cascade?" — contextual link to the Rock Playbook beside Rock Review, Potential Rocks and the rock editor. */
[b-l10room] .playbook-link{font-size:13px;font-weight:700;color:var(--accent);text-decoration:underline;text-underline-offset:2px;white-space:nowrap;margin-left:auto}
[b-l10room] .blockhead .playbook-link + .capmini{margin-left:0}
[b-l10room] .blockhead:has(> .playbook-link){flex-wrap:wrap}   /* phone: the Playbook link drops to its own line rather than widening the page */

/* ── ROCK KINDS IN THE ROCK REVIEW (RockClassification) ─────────────────────────────────────────
   A stripe on the LEFT EDGE says what kind of Rock this is — Company-derived blue at every level of
   its branch, Team-only gold, Individual purple. The row's BACKGROUND stays the status tone
   (rk-green / rk-yellow / rk-pink / Done), so kind and status never compete for the same channel.
   The one exception is the SELECTED Company branch: dark blue ground, white text, at every level.
   Colours are theme tokens in app.css (light + dark). Scoped selectors carry the component attribute,
   which is what lets them outrank app.css's tone and Done rules without !important. */
.row.rockrev.rkkind-co[b-l10room],.row.rockrev.rkkind-team[b-l10room],.row.rockrev.rkkind-ind[b-l10room],
.subkid.rkkind-co[b-l10room],.subkid.rkkind-team[b-l10room],.subkid.rkkind-ind[b-l10room],.ckid.rkkind-co[b-l10room],.ckid.rkkind-team[b-l10room],.ckid.rkkind-ind[b-l10room]{
    border-left:5px solid var(--rk-stripe);border-radius:8px}
.row.rockrev.rkkind-co[b-l10room],.row.rockrev.rkkind-team[b-l10room],.row.rockrev.rkkind-ind[b-l10room]{padding-left:10px}
.rkkind-co[b-l10room]{--rk-stripe:var(--rk-co)} .rkkind-team[b-l10room]{--rk-stripe:var(--rk-team)} .rkkind-ind[b-l10room]{--rk-stripe:var(--rk-ind)}
.subkid.rkkind-co[b-l10room],.subkid.rkkind-team[b-l10room],.subkid.rkkind-ind[b-l10room],.ckid.rkkind-co[b-l10room],.ckid.rkkind-team[b-l10room],.ckid.rkkind-ind[b-l10room]{padding-left:8px}

.rkkindtag[b-l10room]{display:inline-flex;align-items:center;font:inherit;font-size:11px;font-weight:800;letter-spacing:.05em;
    text-transform:uppercase;border-radius:999px;padding:1px 8px;margin-right:7px;vertical-align:2px;
    border:1px solid transparent;line-height:1.5}
.rkkindtag.co[b-l10room]{background:var(--rk-co-soft);color:var(--rk-co-ink);border-color:var(--rk-co);cursor:pointer}
.rkkindtag.co:hover[b-l10room]{box-shadow:0 0 0 2px var(--rk-co-soft)}
.rkkindtag.co:focus-visible[b-l10room],.rkfilter:focus-visible[b-l10room],.rkprogress:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:2px}
.rkkindtag.team[b-l10room]{background:var(--rk-team-soft);color:var(--rk-team-ink);border-color:var(--rk-team)}
.rkkindtag.ind[b-l10room]{background:var(--rk-ind-soft);color:var(--rk-ind-ink);border-color:var(--rk-ind)}

.rklineage[b-l10room]{flex:1 0 100%;font-size:13px;line-height:1.4;color:var(--muted);margin-top:2px}
.rklineage b[b-l10room]{color:var(--ink);font-weight:700}
.rklineage .rkverb[b-l10room]{font-weight:800;color:var(--ink);margin-right:3px}

/* THE SELECTED BRANCH — dark blue, white text, everywhere in the row that is text. Form controls keep
   their own surface and ink so they stay legible as controls. Listed out (not *) so the rules that
   already recolour Done rows' secondary text are outranked explicitly, not by accident. */
.row.rockrev.rkbranch-on[b-l10room],.row.rockrev.rkbranch-on.rock-card--done[b-l10room],.subkid.rkbranch-on[b-l10room],.ckid.rkbranch-on[b-l10room]{
    background:var(--rk-co-sel);color:#fff;border-left-color:#fff;border-color:var(--rk-co-sel)}
.row.rockrev.rkbranch-on .grow .t[b-l10room],.row.rockrev.rkbranch-on .grow .m[b-l10room],.row.rockrev.rkbranch-on .grow .m b[b-l10room],
.row.rockrev.rkbranch-on .rklineage[b-l10room],.row.rockrev.rkbranch-on .rklineage b[b-l10room],.row.rockrev.rkbranch-on .rklineage .rkverb[b-l10room],
.row.rockrev.rkbranch-on .rkro[b-l10room],.row.rockrev.rkbranch-on .ctxrock[b-l10room],.row.rockrev.rkbranch-on .deptfrom[b-l10room],
.row.rockrev.rkbranch-on .deptfrom b[b-l10room],.row.rockrev.rkbranch-on .rkdelegate .lbl[b-l10room],
.row.rockrev.rkbranch-on.rock-card--done .grow .m[b-l10room],.row.rockrev.rkbranch-on.rock-card--done .rkro[b-l10room],
.subkid.rkbranch-on .skname[b-l10room],.subkid.rkbranch-on .skowner[b-l10room],.subkid.rkbranch-on .skdue[b-l10room],.subkid.rkbranch-on .skstatus[b-l10room],
.ckid.rkbranch-on .ckname[b-l10room],.ckid.rkbranch-on .ckmeta[b-l10room],.ckid.rkbranch-on .ckarrow[b-l10room]{color:#fff}
.row.rockrev.rkbranch-on .rkkindtag.co[b-l10room]{background:#fff;color:var(--rk-co-sel);border-color:#fff}
.row.rockrev.rkbranch-on .ctxrock[b-l10room]{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.5)}

/* FILTER BOXES — four across, two by two on a phone. Each carries its kind's colour on the left edge. */
.rkfilters[b-l10room]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0 8px}
.rkfilter[b-l10room]{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 12px;min-height:64px;
    border:1px solid var(--line);border-left:5px solid var(--rk-f);border-radius:10px;background:var(--surface);
    color:var(--ink);cursor:pointer;text-align:left;font:inherit}
.rkfilter .n[b-l10room]{font-size:24px;font-weight:800;line-height:1}
.rkfilter .l[b-l10room]{font-size:13px;font-weight:700;color:var(--muted)}
.rkfilter.on[b-l10room]{background:var(--surface2);box-shadow:inset 0 0 0 2px var(--rk-f)}
.rkfilter.on .l[b-l10room]{color:var(--ink)}
.rkf-all[b-l10room]{--rk-f:var(--accent)} .rkf-co[b-l10room]{--rk-f:var(--rk-co)} .rkf-team[b-l10room]{--rk-f:var(--rk-team)} .rkf-ind[b-l10room]{--rk-f:var(--rk-ind)}
.rkbranchbar[b-l10room]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px;padding:8px 12px;margin:0 0 8px;
    border-radius:8px;background:var(--rk-co-sel);color:#fff}
.rkbranchbar b[b-l10room]{color:#fff}
.rkbranchbar .btn[b-l10room]{background:#fff;color:var(--rk-co-sel);border-color:#fff}
.rklimit[b-l10room]{font-size:14px;padding:8px 12px;margin:0 0 8px;border-radius:8px;background:var(--amber-bg);color:var(--ink);
    border:1px solid var(--amber)}
.pbwarn[b-l10room]{margin-left:10px;font-size:13px;font-weight:800;color:var(--amber)}

/* PROGRESS — the metric cards' disclosure. Quiet by design: it is evidence under the Rock. */
.rkprogress[b-l10room]{display:inline-flex;align-items:center;gap:4px;margin:4px 0 2px 2px;padding:3px 10px;font:inherit;
    font-size:13px;font-weight:700;color:var(--accent);background:transparent;border:1px solid var(--line);
    border-radius:999px;cursor:pointer}
.rkprogress:hover[b-l10room]{background:var(--accent-soft)}

@media(max-width:820px){
    .rkfilters[b-l10room]{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:420px){
    .main[b-l10room]{padding:18px 12px 80px}   /* a 320px phone keeps 296px for the meeting, not 256px */
    .rkfilter .n[b-l10room]{font-size:20px}
    .rkkindtag[b-l10room]{margin-bottom:2px}
}

/* COMPACT ROWS (routed / borrowed / adopted — not .rkwork) keep their one-line control strip, but the
   title column no longer collapses to whatever the fixed-width controls leave: it claims 260px and the
   strip wraps under it instead. With the kind tag and source badge on the title line, a long Company
   Rock title ("$10.8M sales / $3.024M GM (28%) by Dec 31") otherwise ran under the delegate picker. */
.row.rockrev:not(.rkwork) .grow[b-l10room]{flex:1 1 260px}
.rockrev .grow .t[b-l10room]{overflow-wrap:break-word;min-width:0}

/* SELECTED BRANCH — EVERY piece of text stays readable, not only the title. Plain text and inline
   labels go white; buttons and chips become islands on the ordinary surface so their own colours
   (including the red "needs attention" chip) keep their contrast. Verified per element by
   tests/ui-smokes/rock-review.mjs in both themes. */
.row.rockrev.rkbranch-on .displbl[b-l10room],.row.rockrev.rkbranch-on .dispgroup[b-l10room],.row.rockrev.rkbranch-on .leadonlybox[b-l10room],
.row.rockrev.rkbranch-on a:not(.btn)[b-l10room]{color:#fff}
.row.rockrev.rkbranch-on .btn:not(.primary)[b-l10room],.row.rockrev.rkbranch-on .subchip[b-l10room],.row.rockrev.rkbranch-on .subbadge[b-l10room]{
    background:var(--surface)}

/* ══ ROCK REVIEW CASCADE (RockCascade) — the Rock Playbook's visual language, applied to real Rocks ══
   Cards: 12px radius, a 5px ORIGIN edge (blue Company-derived / gold Team / purple Individual), bold
   owner, text for kind, team, relationship, status and due date. A vertical rail with station dots
   carries the branch down. Status is a small secondary pill — it never replaces the origin colour.
   The selected branch is dark blue with white text at every level. Tokens only: light + dark. */
.rc[b-l10room]{margin-top:6px}
.rc-rail[b-l10room]{position:relative;margin:8px 0 0;padding:0 0 0 20px;border-left:3px solid var(--rk-co)}
.rc-station[b-l10room]{position:relative;margin:0 0 18px}
.rc-station--nested[b-l10room]{margin:14px 0 4px 8px;padding-left:16px;border-left:3px solid var(--rk-co)}
.rc-station__head[b-l10room]{display:flex;align-items:center;gap:10px;margin:0 0 6px}
.rc-station__head h4[b-l10room]{margin:0;font-size:17px;font-weight:800;line-height:1.3;color:var(--ink)}
.rc-station__dot[b-l10room]{position:absolute;left:-29px;top:4px;width:15px;height:15px;border-radius:50%;background:var(--surface);border:3px solid var(--rk-co)}
.rc-station--nested>.rc-station__head .rc-station__dot[b-l10room]{left:-25px}
.rc-station__intro[b-l10room]{font-size:15px;line-height:1.5;color:var(--ink);margin:0 0 10px;max-width:72ch}
.rc-grid[b-l10room]{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}


.rc-card[b-l10room]{display:flex;flex-direction:column;gap:6px;min-width:0;cursor:pointer;color:var(--ink);background:var(--surface);
    border:1px solid var(--line);border-left:5px solid var(--rc-edge);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow)}
.rc-card:hover[b-l10room]{border-color:var(--rc-edge)}
.rc-card.rc-co[b-l10room]{--rc-edge:var(--rk-co);--rc-soft:var(--rk-co-soft);--rc-ink:var(--rk-co-ink)}
.rc-card.rc-team[b-l10room]{--rc-edge:var(--rk-team);--rc-soft:var(--rk-team-soft);--rc-ink:var(--rk-team-ink)}
.rc-card.rc-ind[b-l10room]{--rc-edge:var(--rk-ind);--rc-soft:var(--rk-ind-soft);--rc-ink:var(--rk-ind-ink)}
.rc-card__top[b-l10room]{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.rc-card__kind[b-l10room]{font-size:12.5px;font-weight:800;border-radius:999px;padding:2px 10px;background:var(--rc-soft);color:var(--rc-ink)}
.rc-card__team[b-l10room]{font-size:13px;font-weight:700;color:var(--muted)}
.rc-card__title[b-l10room]{all:unset;display:block;font-weight:700;font-size:15.5px;line-height:1.35;color:inherit;cursor:pointer;overflow-wrap:anywhere}
.rc-card__title:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}
.rc-card__rel[b-l10room]{font-size:14px;line-height:1.4;color:var(--muted)}
.rc-card__rel b[b-l10room]{color:var(--ink)}
.rc-card__meta[b-l10room]{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 10px;font-size:14px}
.rc-owner[b-l10room]{all:unset;font-weight:800;color:inherit;cursor:pointer;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.rc-owner:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:2px;border-radius:3px}
.rc-role[b-l10room]{color:var(--muted)}
.rc-due[b-l10room]{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.rc-card__foot[b-l10room]{display:flex;justify-content:space-between;align-items:center;gap:8px}
.rc-status[b-l10room]{font-size:13px;font-weight:800;border-radius:999px;padding:1px 9px;border:1px solid var(--line);background:var(--surface2);color:var(--ink)}
.rc-kids[b-l10room]{font-size:13px;font-weight:700;color:var(--muted)}

/* SELECTED — the branch being followed. Company-derived goes dark blue with white text; a selected
   Team or Individual Rock keeps its own colour and gains a strong ring. */
.rc-card.rc-co.rc-card--sel[b-l10room],.rc-card.rc-co.rc-card--path[b-l10room]{background:var(--rk-co-sel);border-color:var(--rk-co-sel);border-left-color:#fff;color:#fff}
.rc-card.rc-co.rc-card--sel .rc-card__kind[b-l10room],.rc-card.rc-co.rc-card--path .rc-card__kind[b-l10room]{background:#fff;color:var(--rk-co-sel)}
.rc-card.rc-co.rc-card--sel .rc-card__team[b-l10room],.rc-card.rc-co.rc-card--sel .rc-card__rel[b-l10room],.rc-card.rc-co.rc-card--sel .rc-card__rel b[b-l10room],
.rc-card.rc-co.rc-card--sel .rc-role[b-l10room],.rc-card.rc-co.rc-card--sel .rc-due[b-l10room],.rc-card.rc-co.rc-card--sel .rc-kids[b-l10room],
.rc-card.rc-co.rc-card--path .rc-card__team[b-l10room],.rc-card.rc-co.rc-card--path .rc-card__rel[b-l10room],.rc-card.rc-co.rc-card--path .rc-card__rel b[b-l10room],
.rc-card.rc-co.rc-card--path .rc-role[b-l10room],.rc-card.rc-co.rc-card--path .rc-due[b-l10room],.rc-card.rc-co.rc-card--path .rc-kids[b-l10room]{color:#fff}
.rc-card.rc-team.rc-card--sel[b-l10room],.rc-card.rc-ind.rc-card--sel[b-l10room]{background:var(--rc-soft);box-shadow:0 0 0 3px var(--rc-edge)}

/* THE OPEN BRANCH beneath a selected card: its work panel, then its children, indented on the rail. */
.rc-open[b-l10room]{margin:12px 0 0}
.rc-panel[b-l10room]{background:var(--surface2);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:0 0 6px}
.rc-panel__lbl[b-l10room]{font-size:13px;font-weight:800;color:var(--muted);margin:0 0 2px}
/* The card above already shows title, owner and due; inside the panel only the controls remain.
   (A Department Rock's second row carries its actions in .grow, so it keeps it.) */
.rc-panel .row.rockrev:not(.deptplanacts)>.grow[b-l10room]{display:none}
.rc-panel .row.rockrev[b-l10room]{margin-top:4px}
/* Sub-Rocks are cards in the cascade; the panel keeps only their summary and "+ Add sub-Rock". */

/* PROGRESS — deliberately quiet: evidence under a Rock, never competing with it. */
.rc-progress[b-l10room]{margin:8px 0 2px}
.rc-progress__body[b-l10room]{margin-top:8px;padding:10px 12px;border:1px dashed var(--line);border-radius:10px;background:var(--surface)}
.rc-progress__status[b-l10room]{font-size:14px;margin:0 0 8px;color:var(--ink)}

/* RECONCILIATION — do the portions add back up? */
.rc-recon[b-l10room]{margin:12px 0 4px;overflow-x:auto}
.rc-recon table[b-l10room]{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums;background:var(--surface);border:1px solid var(--line);border-radius:10px}
.rc-recon th[b-l10room],.rc-recon td[b-l10room]{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.rc-recon thead th[b-l10room]{font-size:13px;font-weight:800;color:var(--muted)}
.rc-recon td:nth-child(n+3)[b-l10room],.rc-recon th[scope=col]:nth-child(n+3)[b-l10room]{text-align:right}
.rc-recon__total th[b-l10room],.rc-recon__total td[b-l10room]{font-weight:800;border-top:2px solid var(--ink)}
.rc-recon__parent th[b-l10room],.rc-recon__parent td[b-l10room]{color:var(--muted)}
.rc-recon__check[b-l10room]{margin-top:8px;font-weight:700;font-size:14.5px}
.rc-recon__check.ok[b-l10room]{color:var(--green)}
.rc-recon__check.bad[b-l10room]{color:var(--red)}

/* ONE PERSON'S ROCK REVIEW */
.rc-person__bar[b-l10room]{margin:6px 0 10px}
.rc-person__name[b-l10room]{margin:0 0 2px;font-size:22px;font-weight:800}
.rc-person__sub[b-l10room]{margin:0 0 6px;color:var(--muted);font-size:15px}
.rc-person__group[b-l10room]{margin-top:16px;padding-left:20px;border-left:3px solid var(--line)}
.rc-person__group .rc-station__dot[b-l10room]{left:-29px}
.rc-person__rock[b-l10room]{margin:0 0 14px;max-width:760px}
.rc-subs[b-l10room]{margin:8px 0 0 18px;padding-left:14px;border-left:3px solid var(--rk-co)}
.rc-subs__lbl[b-l10room]{font-size:14px;font-weight:800;margin:0 0 6px;color:var(--ink)}

@media(max-width:640px){
    .rc-rail[b-l10room]{padding-left:14px}
    .rc-station__dot[b-l10room]{left:-23px}
    .rc-station--nested[b-l10room]{margin-left:0;padding-left:10px}
    .rc-grid[b-l10room]{grid-template-columns:minmax(0,1fr)}
    .rc-subs[b-l10room]{margin-left:4px;padding-left:10px}
}
.rc-panel__name[b-l10room]{color:var(--ink)}
.rc-panel__ro[b-l10room]{font-size:14px;color:var(--ink);margin:2px 0 4px}
/* A READ-ONLY panel offers no creation: the old Leadership view never gave another team's portion a
   panel, so the redesign must not start offering "+ Add sub-Rock" there. The writer's own authority
   check is unchanged; this only keeps the panel honest with its "Read-only here" line. */
.rc-panel--ro .subpanel .btn[b-l10room],.rc-panel--ro .subpanel .subcreate[b-l10room]{display:none}

/* THE CASCADE NEVER WIDENS THE PAGE. Its width comes from the room column, never from its content:
   without this, the reconciliation table's minimum width travelled up through every ancestor and
   pushed the whole meeting room 159px wider on a phone. Wide content scrolls inside its own box. */
.rc[b-l10room]{contain:inline-size;min-width:0;max-width:100%}
.rc-recon[b-l10room]{max-width:100%}
/* On a phone the reconciliation drops its Owner column — every portion card above names its owner. */
@media(max-width:640px){ .rc-recon th:nth-child(2)[b-l10room],.rc-recon td:nth-child(2)[b-l10room]{display:none} .rc-recon th[b-l10room],.rc-recon td[b-l10room]{padding:6px 7px} }

/* ══ OPERATIONAL REVIEW CARDS — declaration | evidence | supporting work ══════════════════════════ */
.sr-only[b-l10room]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.rv-list[b-l10room]{display:flex;flex-direction:column;gap:8px}
.rv-list__head[b-l10room]{margin:6px 0 0;font-size:17px;font-weight:800}

/* COMPACT BY DEFAULT: title band · one control row · one evidence strip (≈100px). Opening a card adds
   the complete evidence, notes, actions and work beneath the same summary. */
.rv-card[b-l10room]{background:var(--surface);border:1px solid var(--line);border-left:6px solid var(--rc-edge);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}
.rv-card.rc-co[b-l10room]{--rc-edge:var(--rk-co);--rc-soft:var(--rk-co-soft);--rc-ink:var(--rk-co-ink)}
.rv-card.rc-team[b-l10room]{--rc-edge:var(--rk-team);--rc-soft:var(--rk-team-soft);--rc-ink:var(--rk-team-ink)}
.rv-card.rc-ind[b-l10room]{--rc-edge:var(--rk-ind);--rc-soft:var(--rk-ind-soft);--rc-ink:var(--rk-ind-ink)}
.rv-sum[b-l10room]{cursor:pointer}
.rv-sum:hover .rv-title[b-l10room]{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.rv-head[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:5px 12px;background:var(--rc-soft);min-width:0}
.rv-head .rc-card__kind[b-l10room]{font-size:13px;padding:1px 8px}
.rv-head .rc-card__kind[b-l10room]{flex:none;background:var(--surface);color:var(--rc-ink);border:1px solid var(--rc-edge)}
/* The title keeps real width: at a narrow room width the route / PublicId / due wrap BELOW it rather than
   squeezing it into a one-letter column. */
.rv-title[b-l10room]{all:unset;flex:1 1 260px;min-width:0;font-size:16.5px;font-weight:800;line-height:1.3;color:var(--ink);overflow-wrap:anywhere;cursor:pointer}
.rv-title:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px}
.rv-where[b-l10room]{flex:0 1 auto;display:flex;flex-wrap:wrap;gap:2px 8px;margin-left:auto;font-size:14px;font-weight:700;color:var(--rc-ink);white-space:nowrap}
.rv-team[b-l10room],.rv-route[b-l10room]{color:var(--rc-ink)}
.rv-due[b-l10room]{color:var(--ink);font-weight:600}.rv-due b[b-l10room]{font-weight:800}
/* SELECTED Company branch (its cascade is open): the title band goes dark blue with white text. */
.rv-card.rc-co.rv-card--sel[b-l10room],.rv-card.rc-co.rv-card--path[b-l10room]{border-left-color:var(--rk-co-sel)}
.rv-card.rc-co.rv-card--sel .rv-head[b-l10room],.rv-card.rc-co.rv-card--path .rv-head[b-l10room]{background:var(--rk-co-sel)}
.rv-card.rc-co.rv-card--sel .rv-head *[b-l10room],.rv-card.rc-co.rv-card--path .rv-head *[b-l10room]{color:#fff}
.rv-card.rc-co.rv-card--sel .rv-head .rc-card__kind[b-l10room],.rv-card.rc-co.rv-card--path .rv-head .rc-card__kind[b-l10room]{background:#fff;color:var(--rk-co-sel);border-color:#fff}
.rv-card--open[b-l10room]{box-shadow:0 0 0 2px var(--rc-edge),var(--shadow)}

.rv-ctl[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:6px 12px 0}
.rv-owner[b-l10room]{font-size:14.5px;font-weight:700}
.rv-field[b-l10room]{display:inline-flex;align-items:center;gap:6px;font-size:14px;cursor:default}
.rv-field>span[b-l10room]{color:var(--muted);font-weight:700}
.rv-field select[b-l10room]{width:auto;min-width:0;field-sizing:content;padding:2px 26px 2px 8px;font-size:14px;height:30px;line-height:1.2}
.rv-field--conf>b[b-l10room]{color:var(--ink)}
.rv-field--conf[b-l10room]{color:var(--muted)}
.rv-field__after[b-l10room]{color:var(--muted);font-weight:600}
.rv-status[b-l10room]{border-width:2px;font-weight:800}
.rv-status-ro[b-l10room]{padding:1px 9px;border-radius:999px;border:2px solid var(--line)}
/* DONE — the whole review card, title band and body, goes the darker Done green; the Company / Team /
   Individual accent edge and kind badge stay, so the kind is still apparent. Secondary text steps up
   (--muted → --done-muted) to keep contrast on the green. */
.rv-card.rock-card--done[b-l10room]{background:var(--done-card);border-color:var(--done-card-line);border-left-color:var(--rc-edge);--muted:var(--done-muted)}
.rv-card.rock-card--done .rv-head[b-l10room]{background:var(--done-head)}
.rv-card.rock-card--done .rv-where[b-l10room],.rv-card.rock-card--done .rv-team[b-l10room],.rv-card.rock-card--done .rv-route[b-l10room]{color:var(--ink)}
.rc-card.rock-card--done[b-l10room]{background:var(--done-card);border-color:var(--done-card-line);--muted:var(--done-muted)}
.subkid.rock-card--done[b-l10room]{background:var(--done-card);border-color:var(--done-card-line);--muted:var(--done-muted)}
.rv-acts[b-l10room]{margin-left:auto;display:inline-flex;flex-wrap:wrap;align-items:center;gap:5px;cursor:default}
.rv-mini[b-l10room]{font:inherit;font-size:14px;font-weight:700;color:var(--accent);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:2px 10px;cursor:pointer;white-space:nowrap;text-decoration:none}
.rv-mini--main[b-l10room]{color:var(--rc-ink,var(--accent));border-color:var(--rc-edge,var(--line))}
.rv-mini:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:2px}
.rv-mini-note[b-l10room]{font-size:14px;color:var(--muted);font-weight:700}
/* The connected system (WorkCards' mountain): a real button when linked, a dimmed mark when not. */
.rv-wc[b-l10room]{font:inherit;font-size:16px;line-height:1;width:30px;height:26px;display:inline-grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer;padding:0}
button.rv-wc:hover[b-l10room]{border-color:var(--accent)}
button.rv-wc:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:2px}
.rv-wc--off[b-l10room]{cursor:not-allowed;opacity:.38;filter:grayscale(1);border-style:dashed}
/* The row inside an open card keeps its own mountain; the compact row already shows it. */
.rv-more .wwview-btn[b-l10room]{display:none}
.rv-tally[b-l10room]{font-size:14px;font-weight:700;color:var(--muted);margin:0 0 2px}
/* The section "+": the same capture control, now saying what it adds. */
[b-l10room] .capmini.rv-secplus{width:auto;border-radius:999px;font-size:13.5px;font-weight:800;color:#fff;line-height:30px;padding:0 12px 0 28px}
[b-l10room] .capmini.rv-secplus::before,[b-l10room] .capmini.rv-secplus::after{left:15px}
.rv-indep[b-l10room]{font-size:13px;font-weight:700;color:var(--rk-ind-ink);margin:-2px 0 0}
.rv-plus[b-l10room]{flex:none}
/* The open card's row keeps its Sub-Rocks panel; its own "+" is already on the compact row. */
.rv-more .rkactions>.capmini[b-l10room]{display:none}
.rv-blocks[b-l10room]{padding:2px 12px 10px;cursor:default}
.rv-blocks__bar[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:2px 0 6px}
@media(max-width:560px){ [b-l10room] .capmini.rv-secplus{padding:0;width:30px} .rv-secplus__t[b-l10room]{display:none} }
.rv-sect[b-l10room]{margin-top:10px}
.rv-owner-head[b-l10room]{margin:6px 0 0;font-size:14.5px;font-weight:800}
/* Owner groups in a team's Rock Review (visual only): a prominent name and a restrained per-person left accent. */
.rv-ogrp[b-l10room]{border-left:4px solid var(--og,#64748b);padding-left:10px;margin:16px 0 8px}
.rv-ogrp > .rv-owner-head[b-l10room]{font-size:18px;font-weight:800;margin:0 0 6px;color:var(--ink)}
.rv-ogrp--0[b-l10room]{--og:#2563eb}.rv-ogrp--1[b-l10room]{--og:#0f766e}.rv-ogrp--2[b-l10room]{--og:#7c3aed}.rv-ogrp--3[b-l10room]{--og:#c2410c}
.rv-ogrp--4[b-l10room]{--og:#be185d}.rv-ogrp--5[b-l10room]{--og:#4d7c0f}.rv-ogrp--6[b-l10room]{--og:#0369a1}.rv-ogrp--7[b-l10room]{--og:#a16207}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .rv-ogrp--0[b-l10room]{--og:#60a5fa}:root:not([data-theme="light"]) .rv-ogrp--1[b-l10room]{--og:#2dd4bf}:root:not([data-theme="light"]) .rv-ogrp--2[b-l10room]{--og:#a78bfa}:root:not([data-theme="light"]) .rv-ogrp--3[b-l10room]{--og:#fb923c}:root:not([data-theme="light"]) .rv-ogrp--4[b-l10room]{--og:#f472b6}:root:not([data-theme="light"]) .rv-ogrp--5[b-l10room]{--og:#a3e635}:root:not([data-theme="light"]) .rv-ogrp--6[b-l10room]{--og:#38bdf8}:root:not([data-theme="light"]) .rv-ogrp--7[b-l10room]{--og:#facc15}}
:root[data-theme="dark"] .rv-ogrp--0[b-l10room]{--og:#60a5fa}:root[data-theme="dark"] .rv-ogrp--1[b-l10room]{--og:#2dd4bf}:root[data-theme="dark"] .rv-ogrp--2[b-l10room]{--og:#a78bfa}:root[data-theme="dark"] .rv-ogrp--3[b-l10room]{--og:#fb923c}:root[data-theme="dark"] .rv-ogrp--4[b-l10room]{--og:#f472b6}:root[data-theme="dark"] .rv-ogrp--5[b-l10room]{--og:#a3e635}:root[data-theme="dark"] .rv-ogrp--6[b-l10room]{--og:#38bdf8}:root[data-theme="dark"] .rv-ogrp--7[b-l10room]{--og:#facc15}

.rv-strip[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:0 14px;padding:4px 12px 7px;font-size:13px;line-height:1.5;font-variant-numeric:tabular-nums}
.rv-sm[b-l10room]{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:0 5px}
.rv-sm__t[b-l10room]{margin-right:3px}
.rv-sm__dot[b-l10room]{color:var(--muted)}
.rv-sm__t[b-l10room]{font-weight:800}
.rv-sm__k[b-l10room]{color:var(--muted)}
.rv-chk[b-l10room]{font-size:12.5px;font-weight:800;padding:0 7px;border-radius:999px;white-space:nowrap}
.rv-chk--warn[b-l10room]{background:var(--amber-bg);color:var(--amber)}
.rv-chk--ok[b-l10room]{background:var(--green-bg);color:var(--green)}
.rv-strip__none[b-l10room]{color:var(--muted);font-style:italic}
.rv-sc[b-l10room]{display:inline-flex;align-items:baseline;gap:8px}
.rv-sc__lbl[b-l10room]{font-size:11.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.rv-sc__q[b-l10room]{font-weight:700}
.rv-mini--sc[b-l10room]{color:var(--ink);font-size:12.5px;padding:1px 8px}

/* EXPANDED: everything the compact card summarises. */
.rv-exp[b-l10room]{border-top:1px solid var(--line);padding:10px 12px 12px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.rv-exp>*[b-l10room]{max-width:100%}
.rv-exp>.rv-evid[b-l10room],.rv-exp>.rv-more[b-l10room],.rv-exp>.rv-detail[b-l10room]{align-self:stretch}
.rv-exp__who[b-l10room]{font-size:14px}
.rv-rel[b-l10room]{font-size:14px;color:var(--ink)}
/* R39: the Rock's saved "How do we know this is done?" — exact text, line breaks kept, readable, never a tall panel. */
.rv-done[b-l10room]{align-self:stretch;font-size:16px;line-height:1.45;color:var(--ink);border-left:3px solid var(--line);padding:2px 0 2px 10px;margin:2px 0}
.rv-done__q[b-l10room]{display:block;font-size:14px;font-weight:600;color:var(--muted);text-transform:none}
.rv-done__a[b-l10room]{display:block;white-space:pre-wrap;overflow-wrap:anywhere}
.rv-done__none[b-l10room]{display:block;font-style:italic;color:var(--muted)}
.rv-lbl[b-l10room]{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}
.rv-ro[b-l10room]{font-size:13.5px;color:var(--muted)}
.rv-evid__table[b-l10room]{overflow-x:auto}
.rv-evid__table table[b-l10room]{width:100%;max-width:760px;border-collapse:collapse;font-size:14.5px;font-variant-numeric:tabular-nums}
.rv-evid__table th[b-l10room],.rv-evid__table td[b-l10room]{padding:5px 7px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
.rv-evid__table th[scope=row][b-l10room]{text-align:left;font-weight:800}
.rv-evid__table thead th[b-l10room]{font-size:12.5px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.rv-actual[b-l10room]{font-weight:800}
.rv-rate td[b-l10room]{color:var(--muted)}
.rv-pace[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:8px;font-size:14px}
.rv-pace__bar[b-l10room]{display:inline-block;width:120px;height:8px;border-radius:4px;background:var(--surface2);border:1px solid var(--line);overflow:hidden}
.rv-pace__bar>span[b-l10room]{display:block;height:100%;background:var(--rk-co)}
.rv-check[b-l10room]{margin-top:8px;font-size:14px;font-weight:700;padding:6px 10px;border-radius:8px}
.rv-check--warn[b-l10room]{background:var(--amber-bg);color:var(--amber)}
.rv-check--ok[b-l10room]{background:var(--green-bg);color:var(--green)}
.rv-evid__none[b-l10room]{font-size:14.5px;color:var(--muted)}
.rv-work__row[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.rv-work__note[b-l10room]{font-size:14px}
.rv-toggle[b-l10room]{font:inherit;font-size:14px;font-weight:700;color:var(--accent);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 12px;cursor:pointer}
.rv-toggle--main[b-l10room]{color:var(--rc-ink,var(--accent));border-color:var(--rc-edge,var(--line))}
.rv-toggle:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:2px}
/* The compact row owns status and confidence; the full row under "Notes & actions" keeps everything else. */
.rv-more .rkstatus[b-l10room],.rv-more .rkconf[b-l10room]{display:none}
.rv-more .row.rockrev:not(.deptplanacts)>.grow[b-l10room]{display:none}
.rv-children[b-l10room]{margin:0 0 4px 18px;padding:4px 0 4px 14px;border-left:3px solid var(--rk-co);display:flex;flex-direction:column;gap:8px}
.rv-children__head[b-l10room]{margin:0;font-size:15.5px;font-weight:800}
.rv-children__intro[b-l10room]{font-size:14px;margin-top:-4px}
.rv-cofold[b-l10room]{margin-top:8px}
.rc-rail--under[b-l10room]{margin:-2px 0 8px 18px}
@media(max-width:820px){
    .rv-children[b-l10room]{margin-left:6px;padding-left:10px}
    .rc-rail--under[b-l10room]{margin-left:6px}
}
@media(max-width:640px){ .rc-recon th:nth-child(5)[b-l10room],.rc-recon td:nth-child(5)[b-l10room],.rc-recon th:nth-child(6)[b-l10room],.rc-recon td:nth-child(6)[b-l10room]{display:none} }
/* PHONE: the band wraps (kind + team above the title), controls stack two to a line, secondary
   controls take their own line — nothing scrolls sideways. */
@media(max-width:560px){
    .rv-head[b-l10room]{flex-wrap:wrap}
    .rv-title[b-l10room]{flex-basis:100%;order:3;font-size:16px}
    .rv-head .rc-card__kind[b-l10room]{order:1}
    .rv-where[b-l10room]{white-space:normal;flex-wrap:wrap}
    .rv-ctl[b-l10room]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px 10px}
    .rv-owner[b-l10room]{grid-column:1/-1;min-width:0;overflow-wrap:anywhere}
    .rv-where[b-l10room]{flex-basis:100%;justify-content:space-between;order:2}
    /* status and confidence: a small caption over a full-width select, side by side */
    .rv-field--status[b-l10room],.rv-field--conf[b-l10room]{display:flex;flex-direction:column;align-items:stretch;gap:1px;min-width:0}
    .rv-field--status>.sr-only[b-l10room],.rv-field--conf>.sr-only[b-l10room]{position:static;width:auto;height:auto;margin:0;clip:auto;overflow:visible;white-space:normal;
        font-size:11.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
    .rv-field--status select[b-l10room],.rv-field--conf select[b-l10room]{width:100%}
    .rv-field__after[b-l10room]{display:none}
    .rv-acts[b-l10room]{gap:6px}
    .rv-mini[b-l10room]{padding:2px 9px;max-width:100%;white-space:normal;text-align:left}   /* a pill with its disclosure cue wraps inside the card, never past it */
    .rv-acts[b-l10room]{grid-column:1/-1;margin-left:0}
    .rv-strip[b-l10room]{gap:3px 14px}
}

/* PHONE: every figure stays on screen — each measure becomes a small labelled block, never a sideways scroll. */
@media(max-width:560px){
  .rv-evid__table thead[b-l10room]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .rv-evid__table table[b-l10room],.rv-evid__table tbody[b-l10room]{display:block}
  .rv-evid__table tr[b-l10room]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 8px;padding:8px 0;border-bottom:1px solid var(--line)}
  .rv-evid__table th[scope=row][b-l10room]{grid-column:1/-1;border:0;padding:0}
  .rv-evid__table td[b-l10room]{border:0;padding:0;text-align:left;white-space:normal;display:flex;flex-direction:column}
  .rv-evid__table td[data-l][b-l10room]::before{content:attr(data-l);font-size:11.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
  .rv-evid__table td.rv-rate__vs[b-l10room]{grid-column:span 1;justify-content:flex-end}
}

/* ══ FOCUSED BRANCH (Follow cascade) · PORTIONS · SUPPORTING ROCKS ═══════════════════════════════ */
.rv-branch[b-l10room]{margin:-2px 0 8px 18px;padding:8px 0 4px 14px;border-left:3px solid var(--rk-co-sel);display:flex;flex-direction:column;gap:8px}
.rv-branch__route[b-l10room]{font-size:14px}
.rv-branch__h[b-l10room]{margin:4px 0 0;font-size:15px;font-weight:800}
.rv-portions[b-l10room]{display:flex;flex-direction:column;gap:6px}
.rv-portion[b-l10room]{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--rc-edge,var(--rk-co));border-radius:9px}
.rv-portion.rc-co[b-l10room]{--rc-edge:var(--rk-co)} .rv-portion.rc-team[b-l10room]{--rc-edge:var(--rk-team)} .rv-portion.rc-ind[b-l10room]{--rc-edge:var(--rk-ind)}
.rv-portion--open[b-l10room]{box-shadow:0 0 0 2px var(--rc-edge)}
.rv-portion__main[b-l10room]{display:grid;grid-template-columns:minmax(150px,1.1fr) minmax(0,2fr) auto;gap:2px 14px;align-items:center;padding:7px 10px;cursor:pointer}
.rv-portion__who[b-l10room]{display:flex;flex-direction:column;min-width:0}
.rv-portion__ch[b-l10room]{font-size:14px;color:var(--muted);font-weight:700}
.rv-portion__fig[b-l10room]{display:flex;flex-wrap:wrap;gap:0 14px;font-size:13.5px;font-variant-numeric:tabular-nums}
.rv-portion__act[b-l10room]{grid-column:2}
.rv-portion__decl[b-l10room]{grid-column:3;grid-row:1 / span 2;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px 10px;font-size:13.5px}
.rv-portion__decl .rv-field--conf[b-l10room]{color:var(--muted)}
.rv-portion>.rockfoldsub[b-l10room],.rv-portion>.rv-sup[b-l10room]{margin:0 10px 8px}
.rv-pgrp[b-l10room]{display:flex;flex-direction:column;gap:6px}
.rv-pgrp__head[b-l10room]{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;max-width:100%;text-align:left;white-space:normal}
.rv-pgrp__head>span[b-l10room]{min-width:0;overflow-wrap:anywhere}
.rv-pgrp__head>span:nth-child(2)[b-l10room]{flex:1 1 12em}   /* a long name stays beside its chevron; the chip and the cue wrap after it */
.rv-sup[b-l10room]{display:flex;flex-direction:column;gap:3px;margin:0 0 4px 22px}
.rv-sup__row.rock-card--done[b-l10room]{background:var(--done-card);border-color:var(--done-card-line);border-left-color:var(--rc-edge,var(--rk-co));--muted:var(--done-muted)}
.rv-fin-head[b-l10room]{margin:8px 0 2px;font-size:20px;font-weight:800;color:var(--ink);letter-spacing:-.01em}
.rv-sup__row[b-l10room]{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:4px 12px;padding:4px 10px;border:1px solid var(--line);border-left:4px solid var(--rc-edge,var(--rk-co));border-radius:7px;background:var(--surface);font-size:14px}
.rv-sup__row.rc-co[b-l10room]{--rc-edge:var(--rk-co)} .rv-sup__row.rc-team[b-l10room]{--rc-edge:var(--rk-team)} .rv-sup__row.rc-ind[b-l10room]{--rc-edge:var(--rk-ind)}
.rv-sup__name[b-l10room]{all:unset;cursor:pointer;font-weight:700;overflow-wrap:anywhere}
.rv-sup__name:hover[b-l10room]{text-decoration:underline}
.rv-sup__name:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:2px;border-radius:3px}
.rv-sup__due[b-l10room]{color:var(--muted);font-size:14px;white-space:nowrap}
.rv-sup__st[b-l10room]{font-size:13.5px;font-weight:800;white-space:nowrap}
.rv-sup__nest[b-l10room]{margin-left:18px}
.rv-sup__panel[b-l10room]{margin:2px 0 6px}
@media(max-width:700px){
    .rv-portion__main[b-l10room]{grid-template-columns:minmax(0,1fr)}
    .rv-portion__act[b-l10room],.rv-portion__decl[b-l10room]{grid-column:auto;grid-row:auto;justify-content:flex-start}
    .rv-branch[b-l10room]{margin-left:6px;padding-left:10px}
    .rv-sup[b-l10room]{margin-left:8px}
    .rv-sup__row[b-l10room]{grid-template-columns:minmax(0,1fr) auto}
}

.rv-pid[b-l10room]{font-size:13px;font-weight:700;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.rv-card.rc-co.rv-card--sel .rv-head .rv-pid[b-l10room]{color:#fff}
.rv-note[b-l10room]{padding:2px 12px 4px;font-size:14px;color:var(--ink);overflow-wrap:anywhere}
.rv-note b[b-l10room]{font-weight:700;color:var(--muted)}
.rv-portion__team[b-l10room]{font-size:14px;color:var(--muted)}
.rv-card--open .rv-note[b-l10room]{display:none}

/* ══ EVIDENCE ROWS · FINANCIAL REVIEW · QUARTER · TEAM NAVIGATION ════════════════════════════════ */
[b-l10room] .qp{margin:4px 0 12px;font-family:var(--font)}
[b-l10room] .qp-count{font-size:20px;font-weight:800;color:var(--ink);letter-spacing:-.01em;font-variant-numeric:tabular-nums}
[b-l10room] .qp-text{font-size:15px;font-weight:500;color:var(--ink);line-height:1.45}
[b-l10room] .qp-bar{height:10px;border-radius:5px;background:var(--surface2);border:1px solid var(--line);overflow:hidden;margin:6px 0 6px}
[b-l10room] .qp-bar>span{display:block;height:100%;background:var(--rk-co)}
[b-l10room] .fx{display:flex;flex-direction:column;gap:6px}
[b-l10room] .fx-row{display:grid;grid-template-columns:100px minmax(0,1fr);gap:4px 12px;align-items:start;padding:6px 0;border-top:1px solid var(--line)}
[b-l10room] .fx-row:first-of-type{border-top:0}
[b-l10room] .fx-lbl{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:15px;font-weight:800;color:var(--ink)}
[b-l10room] .fx-owner{font-size:14px;font-weight:600;color:var(--muted)}
[b-l10room] .fx-st select{font-size:14px;padding:2px 20px 2px 6px;height:30px;width:100px}
/* Nine figures on ONE line where the width allows: each takes its natural width and the row wraps
   only when it must (1100px, phone). */
[b-l10room] .fx-grid{display:flex;flex-wrap:wrap;gap:4px 8px}
[b-l10room] .fx-c{display:flex;flex-direction:column;min-width:0}
[b-l10room] .fx-k{font-size:13px;color:var(--muted);font-weight:600;white-space:nowrap}
[b-l10room] .fx-v{font-size:14.5px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
[b-l10room] .fx-v .finin{font:inherit;padding:0;border:0;background:none;width:auto;min-width:0;max-width:100%}
[b-l10room] .fx-v input.finin{border:1px solid var(--line);border-radius:6px;padding:0 4px;width:7.2ch;background:var(--surface)}
[b-l10room] .fx-lin,[b-l10room] .fx-v .finlin{font:inherit;font-weight:800;color:var(--accent);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
[b-l10room] .fx-lin[aria-expanded=true]{text-decoration-style:solid}
[b-l10room] .fx-behind .fx-lin,[b-l10room] .fx-v .fin-under,[b-l10room] .fx-v .neg{color:var(--red)}
[b-l10room] .fx-ahead .fx-lin,[b-l10room] .fx-v .fin-over,[b-l10room] .fx-v .pos{color:var(--green)}
[b-l10room] .fx-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;font-size:15px;color:var(--ink);padding:4px 0}
[b-l10room] .fx-line .fx-lbl{font-size:15px}
[b-l10room] .fx-dot{color:var(--muted)}
[b-l10room] .fx-warn{font-size:14.5px;font-weight:700;color:var(--amber);background:var(--amber-bg);border-radius:8px;padding:5px 10px;grid-column:1/-1}
[b-l10room] .fx-drill,[b-l10room] .finlinrow{grid-column:1/-1}
[b-l10room] .fx-pace{grid-column:1/-1;font-size:14.5px;background:var(--surface2);border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:4px 0}
[b-l10room] .fx-how{font-size:14px;color:var(--muted);margin-top:4px}
[b-l10room] .fx-note{grid-column:1/-1;font-size:14px;color:var(--muted)}
/* LEADERSHIP FINANCIALS — Company only on the front page (Written, Finalized), a line opens its drill-down
   beneath it. Type: the app font; 13px floor for supporting text, weight carries the hierarchy. */
[b-l10room] .fxfin{display:flex;flex-direction:column;gap:10px;margin:2px 0 8px;font-family:var(--font);
    /* FIXED money columns, so every line — and the Scorecard's "92.3% of Quarter" column header — align. */
    --fx-cols:minmax(186px,1fr) 100px 100px minmax(150px,1.3fr) 100px minmax(130px,1fr)}
[b-l10room] .fxfin-fold{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:16px;font-weight:800;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-left:6px solid var(--rk-co);border-radius:10px;padding:10px 14px;cursor:pointer}
[b-l10room] .fxfin-fold:hover{border-color:var(--rk-co)}
[b-l10room] .fxfin-fold:focus-visible,[b-l10room] .fx-name:focus-visible,[b-l10room] .fx-scroll:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
[b-l10room] .fx-stage{container-type:inline-size;background:var(--surface);border:1px solid var(--line);border-left:6px solid var(--rk-co);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}
[b-l10room] .fx-shead{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:8px 14px;background:var(--rk-co-soft)}
[b-l10room] .fx-shead .fx-kind{flex:none;font-size:13px;font-weight:800;padding:1px 8px;border-radius:999px;background:var(--surface);color:var(--rk-co-ink);border:1px solid var(--rk-co)}
/* A Done financial Company Rock: the whole card goes the Done green, as every Rock card does. */
[b-l10room] .fx-stage.rock-card--done{background:var(--done-card);border-color:var(--done-card-line);border-left-color:var(--rk-co);--muted:var(--done-muted)}
[b-l10room] .fx-stage.rock-card--done .fx-shead{background:var(--done-head)}
[b-l10room] .fx-stage.rock-card--done .fx-shead .fx-owner{color:var(--ink)}
[b-l10room] .fx-stage.rock-card--done .fx-line2:hover,[b-l10room] .fx-stage.rock-card--done .fx-line2.fx-open{background:color-mix(in srgb,var(--done-head) 45%,transparent)}
[b-l10room] .fx-sname{margin:0;font-size:18px;font-weight:800;color:var(--ink);letter-spacing:-.01em}
[b-l10room] .fx-shead .fx-owner{font-size:14.5px;font-weight:700;color:var(--rk-co-ink)}
[b-l10room] .fx-shead .fx-st{margin-left:auto}
[b-l10room] .fx-cl{border-top:1px solid var(--line)}
[b-l10room] .fx-shead + .fx-cl{border-top:0}
[b-l10room] .fx-line2{display:grid;grid-template-columns:var(--fx-cols);gap:6px 12px;align-items:center;padding:10px 14px;cursor:pointer}
[b-l10room] .fx-line2:hover{background:var(--surface2)}
[b-l10room] .fx-line2.fx-open{background:var(--surface2)}
[b-l10room] .fx-name{display:flex;align-items:center;gap:8px;font:inherit;font-size:15.5px;font-weight:800;color:var(--ink);background:none;border:0;padding:0;text-align:left;cursor:pointer}
[b-l10room] .fx-chev{display:inline-block;width:1ch;color:var(--accent)}
[b-l10room] .fx-line2 .fx-v{font-size:16px;font-weight:700}
[b-l10room] .fx-line2 .fx-k{font-size:13px;font-weight:600;white-space:nowrap}
[b-l10room] .fx-line2 .fx-rate .fx-k,[b-l10room] .fx-line2 .fx-rate .fx-v{white-space:normal}
[b-l10room] .fx-line2 .fx-v{white-space:nowrap}
[b-l10room] .fx-line2.fx-behind .fx-pct{color:var(--red)}
[b-l10room] .fx-line2.fx-ahead .fx-pct{color:var(--green)}
[b-l10room] .fx-line2 .fx-v input.finin{width:10ch;font-size:15px}
[b-l10room] .fx-stage>.fx-warn{margin:0 14px 10px}
/* THE PACE, STATED — neutral evidence, not a warning: ink on the surface band with a thin pace-coloured edge. */
[b-l10room] .fx-pacenote{font-size:14.5px;font-weight:600;color:var(--ink);background:var(--surface2);border-left:4px solid var(--amber);border-radius:6px;padding:5px 10px}
[b-l10room] .fx-stage>.fx-pacenote,[b-l10room] .fx-cl>.fx-pacenote{margin:0 14px 10px}
/* THE SCORECARD'S VIEW of the same blocks: no Rock chrome; the quarter's share sits once, above the % column. */
[b-l10room] .fx-stage--sc{border-left-color:var(--accent)}
[b-l10room] .fx-stage--sc .fx-shead{background:var(--surface2)}
[b-l10room] .fx-colhead{display:grid;grid-template-columns:var(--fx-cols);gap:0 12px;padding:6px 14px 0}
[b-l10room] .fx-colq{grid-column:4;justify-self:start;font-size:13.5px;font-weight:800;color:var(--ink);background:var(--accent-soft);border-radius:4px;padding:1px 7px;white-space:nowrap}
[b-l10room] .fx-colhead + .fx-cl{border-top:0}
[b-l10room] .fx-scroll-roll{padding:6px 14px 12px;border-top:1px solid var(--line)}
/* THE SELECTED LINE — whichever line's weekly history is open (Company or a vertical) is marked, so the
   history below always reads against a visible row. */
[b-l10room] .fx-line2.fx-sel{background:var(--accent-soft);box-shadow:inset 4px 0 0 var(--accent)}
[b-l10room] .fx-roll tr[data-line]{cursor:pointer}
[b-l10room] .fx-roll tr[data-line]:hover>*{background:var(--surface2)}
[b-l10room] .fx-roll tr.fx-vsel>*{background:var(--accent-soft)}
[b-l10room] .fx-roll tr.fx-vsel>th{box-shadow:inset 4px 0 0 var(--accent)}
[b-l10room] .fx-vbtn{all:unset;cursor:pointer;display:inline-flex;align-items:baseline;gap:6px;font:inherit;color:inherit}
[b-l10room] .fx-vbtn:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px}
[b-l10room] .fx-vbtn .fx-chev{font-size:13px}
[b-l10room] .fx-hist{display:flex;flex-direction:column;gap:2px}
[b-l10room] .fx-histh{margin:6px 0 0;font-size:15.5px;font-weight:800;color:var(--ink)}
[b-l10room] .fx-histwrap{padding:4px 14px 14px;background:var(--surface2);border-top:1px solid var(--line)}
/* THE QUARTER BESIDE THE GOAL (PaceCompare): "92.3% of quarter complete" set strong above "77.3% of goal
   achieved — behind pace", two lines in the space of one labelled figure. The goal figure takes the pace
   colour; the quarter line is always ink on a soft band so it cannot be skipped. */
[b-l10room] .pc{display:flex;flex-direction:column;gap:1px;min-width:0;line-height:1.3}
[b-l10room] .pc-q{align-self:flex-start;max-width:100%;font-size:13.5px;font-weight:800;color:var(--ink);background:var(--accent-soft);border-radius:4px;padding:0 6px;overflow-wrap:anywhere}
[b-l10room] .pc-g{font-size:14px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
[b-l10room] .pc-g b{font-size:15.5px;font-weight:800}
[b-l10room] .pc--behind .pc-g b{color:var(--red)}
[b-l10room] .pc--ahead .pc-g b{color:var(--green)}
/* Where the Rock's header carries the quarter (QuarterChip), the row's figure is an ordinary labelled value:
   "% of goal achieved  77.3% · behind pace". */
[b-l10room] .fx-v.pc{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:0 4px}
[b-l10room] .fx-v.pc b{font-weight:800}
[b-l10room] .fx-v.pc--behind b{color:var(--red)}
[b-l10room] .fx-v.pc--ahead b{color:var(--green)}
[b-l10room] .fx-v.pc .pc-w{font-size:14px;font-weight:600;color:var(--muted)}
/* THE QUARTER, IN THE ROCK'S HEADER — right after the Company Rock badge, so the progress context comes from
   the Rock itself: "Company Rock · 92.3% of quarter complete · Written · owner … status". */
[b-l10room] .qchip{flex:none;font-size:13.5px;font-weight:800;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:1px 9px;white-space:nowrap}
.rv-card.rc-co.rv-card--sel .rv-head .qchip[b-l10room],.rv-card.rc-co.rv-card--path .rv-head .qchip[b-l10room]{color:var(--rk-co-sel);background:#fff;border-color:#fff}
[b-l10room] .fx-cl>.fx-challenge{margin:0 14px 10px}
[b-l10room] .fx-stage>.finovnote{margin:0 14px 10px;font-size:14px}
[b-l10room] .fx-cl>.fx-drill{padding:4px 14px 14px;display:flex;flex-direction:column;gap:12px;background:var(--surface2);border-top:1px solid var(--line)}
[b-l10room] .fx-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;width:100%;max-width:100%;contain:inline-size}
[b-l10room] .fx-roll{border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums;color:var(--ink);background:var(--surface)}
[b-l10room] .fx-roll{width:100%;max-width:820px}
[b-l10room] .fx-roll th,[b-l10room] .fx-roll td{padding:4px 10px;text-align:right;white-space:nowrap}
[b-l10room] .fx-roll thead th{font-size:13px;font-weight:800;color:var(--muted);border-bottom:2px solid var(--line);text-transform:none}
[b-l10room] .fx-roll th[scope=row],[b-l10room] .fx-roll thead th:first-child{text-align:left}
[b-l10room] .fx-roll th[scope=row]{white-space:normal;min-width:150px}
[b-l10room] .fx-roll tbody + tbody tr.fx-vs>*{border-top:1px solid var(--line)}
[b-l10room] .fx-roll .fx-vname{font-weight:800;font-size:14.5px}
[b-l10room] .fx-roll .fx-vm{font-weight:600;color:var(--muted)}
[b-l10room] .fx-roll .fx-vg th[scope=row]{padding-left:22px}
[b-l10room] .fx-roll .fx-vown{font-size:13px;font-weight:600;color:var(--muted);margin-left:6px}
[b-l10room] .fx-roll .fx-st select{height:26px;font-size:13px;width:auto;margin-left:6px;padding:0 18px 0 4px}
[b-l10room] .fx-roll .fx-vtot tr.fx-vs>*{border-top:2px solid var(--ink)}
[b-l10room] .fx-roll .fx-vtot td,[b-l10room] .fx-roll .fx-vtot .fx-vname{font-weight:800}
[b-l10room] .fx-roll td{font-weight:600}
[b-l10room] .fx-roll .finin{font:inherit;padding:0;border:0;background:none;width:auto;min-width:0}
[b-l10room] .fx-roll input.finin{border:1px solid var(--line);border-radius:6px;padding:0 4px;width:10ch;background:var(--surface);text-align:right}
[b-l10room] .fx-roll .finlin{font:inherit;font-weight:700;color:var(--accent);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
[b-l10room] .fx-roll .fin-under,[b-l10room] .fx-roll .neg{color:var(--red)}
[b-l10room] .fx-roll .fin-over,[b-l10room] .fx-roll .pos{color:var(--green)}
[b-l10room] .fx-star{font-size:14px;color:var(--ink);font-weight:500}
[b-l10room] .fx-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.rv-evrows[b-l10room]{padding:2px 12px 8px;cursor:default}
.rv-teams[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:2px 0 6px}
.rv-teams__lbl[b-l10room]{font-size:14px;font-weight:800;color:var(--muted);margin-right:4px}
.rv-team-btn[b-l10room]{display:inline-flex;align-items:center;gap:6px;font-size:14.5px;font-weight:700;color:var(--accent);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 12px;text-decoration:none}
.rv-team-btn:hover[b-l10room]{border-color:var(--accent)}
.rv-team-btn:focus-visible[b-l10room],.rv-return__btn:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:2px}
.rv-return[b-l10room]{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px}
.rv-return__btn[b-l10room]{font-size:15px;font-weight:800;color:#fff;background:var(--accent);border-radius:999px;padding:6px 14px;text-decoration:none}
.rv-return__btn + .rv-return__btn[b-l10room]{background:var(--surface);color:var(--accent);border:1px solid var(--accent)}
.rv-teamlink[b-l10room]{text-decoration:none;white-space:normal;max-width:100%}   /* phone: a long team name wraps inside the card */
@container (max-width:855px){   /* the six-column line needs ≈828px of line content (≈856px of stage) */
    [b-l10room] .fx-colhead{display:block}
    [b-l10room] .fx-line2{grid-template-columns:repeat(4,minmax(0,1fr))}
    [b-l10room] .fx-line2 .fx-name{grid-column:1/-1}
}
@container (max-width:480px){
    [b-l10room] .fx-line2{grid-template-columns:repeat(2,minmax(0,1fr))}
    [b-l10room] .fx-line2 .fx-pc{grid-column:1/-1}
}
@media(max-width:700px){
    [b-l10room] .fx-row{grid-template-columns:minmax(0,1fr)}
    [b-l10room] .fx-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
    [b-l10room] .fx-grid .fx-pc{grid-column:1/-1}   /* the quarter-beside-goal comparison takes its own row on a phone */
    [b-l10room] .fx-line2{padding:10px 12px}
    [b-l10room] .fx-cl>.fx-drill{padding:4px 10px 12px}
    [b-l10room] .fx-shead{padding:8px 12px}
    [b-l10room] .qp-count{font-size:18px}
    [b-l10room] .fx-roll th,[b-l10room] .fx-roll td{padding:4px 6px}
    [b-l10room] .fx-roll th[scope=row]{min-width:120px}
    [b-l10room] .fx-roll .fx-st select{margin-left:0}
}

/* ── TEAM ROOM, TWO DIMENSIONS (2026-09-30) ─────────────────────────────────────────────────────────────────────────
   The summary's buckets are mutually exclusive and add up to Total (2026-10-01). The chip on a card names
   the Company Rock a Scorecard-connected Rock rolls up into — team rooms only, beside the header's where-line. */
.rkfilter .l2[b-l10room]{font-size:12px;font-weight:600;line-height:1.3;color:var(--muted)}
.rv-coctx[b-l10room]{margin:0 0 6px}
.rv-children__of[b-l10room]{margin:-4px 0 8px;font-size:13px;color:var(--muted)}
.rv-conn[b-l10room]{flex:0 1 auto;display:inline-flex;align-items:center;gap:4px;padding:1px 9px;border:1px solid var(--rc-edge,var(--accent));
         border-radius:999px;font-size:13px;font-weight:700;color:var(--rc-ink,var(--accent));background:var(--surface);white-space:nowrap;
         max-width:100%;overflow:hidden;text-overflow:ellipsis}
@media (max-width:640px){.rv-conn[b-l10room]{white-space:normal}}

/* ── ONE DISCLOSURE PATTERN (2026-10-01) ─────────────────────────────────────────────────────────────
   ▸ / ▾ at the start, the words (DiscCue: Open / Collapse, Show details / Hide details) at the end, the
   whole control clickable. Inside a pill the cue takes the pill's size; on a selected or on-path compact
   card it takes the card's white ink. */
.rv-chev[b-l10room]{display:inline-block;width:1ch;margin-right:5px;color:var(--accent);flex:none}
.rv-mini[b-l10room]  .disc-cue,.rkprogress[b-l10room]  .disc-cue,.rc-kids[b-l10room]  .disc-cue{font-size:inherit;padding-left:8px}
.rv-sup__name[b-l10room]  .disc-cue{font-size:12.5px;padding-left:8px;font-weight:700}
.rc-card--sel .rc-kids[b-l10room]  .disc-cue,.rc-card--path .rc-kids[b-l10room]  .disc-cue{color:#fff}
/* A Financials line has no spare column (six fixed columns, ≈855px): its cue sits directly under the line's name. */
[b-l10room] .fx-nm{display:flex;flex-direction:column;align-items:flex-start;gap:0}
[b-l10room] .fx-nm .disc-cue{padding-left:0;font-size:13px;line-height:1.2}
[b-l10room] .fx-vbtn .disc-cue{font-size:13px;padding-left:8px}
.rv-cofold[b-l10room]  .disc-cue,.rockfold[b-l10room]  .disc-cue{font-size:13px}

/* ── Review 6 Components (Quarterly) — approved redesign 2026-10-07 ─────────────────────────────── */
.r6c[b-l10room] { padding: 18px 22px 8px; }
.r6c-intro[b-l10room] { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 2px 0 16px; border-bottom: 1px solid var(--line); }
.r6c-model[b-l10room] { display: block; width: clamp(180px, 34vw, 280px); height: auto; aspect-ratio: 1 / 1; }
.r6c-head[b-l10room] { display: flex; align-items: center; gap: 10px; }
.r6c-head .r6c-title[b-l10room] { margin: 0; }
.r6c-item[b-l10room] { border-bottom: 1px solid var(--line); }
.r6c-item:last-child[b-l10room] { border-bottom: 0; }
.r6c-row[b-l10room] { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 14px; padding: 12px 2px; }
.r6c-text[b-l10room] { min-width: 0; }
.r6c-name[b-l10room] { all: unset; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; font-weight: 700; font-size: 1.05em; color: var(--ink); }
.r6c-name:hover[b-l10room], .r6c-name:focus-visible[b-l10room] { color: var(--accent); }
.r6c-name:focus-visible[b-l10room] { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.r6c-chev[b-l10room] { font-size: .7em; color: var(--muted); transition: transform .15s; }
.r6c-item.open .r6c-chev[b-l10room] { transform: rotate(90deg); }
.r6c-q[b-l10room] { margin-top: 2px; color: var(--ink); opacity: .82; font-weight: 400; font-size: .95em; line-height: 1.4; }
.r6c-rate[b-l10room] { width: auto; min-width: 0; }
.r6c-detail[b-l10room] { margin: 0 2px 12px; max-width: 780px; padding: 8px 12px; border-left: 3px solid var(--accent); border-radius: 0 6px 6px 0; background: var(--surface2); color: var(--ink); font-size: .95em; line-height: 1.5; }
@media (max-width: 560px) {
    .r6c[b-l10room] { padding: 14px 14px 6px; }
    .r6c-row[b-l10room] { grid-template-columns: minmax(0, 1fr) auto; row-gap: 8px; }
    .r6c-text[b-l10room] { grid-column: 1 / -1; }
}

/* ── Review Schedule (2026-10-07, mockup review-schedule-mockup-v3) — every rule scoped under .rs ── */
.rs[b-l10room] { min-width: 0; }
.rs-top[b-l10room] { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin: -4px 0 14px; }
.rs-sub[b-l10room] { margin: 0; color: var(--muted); }
.rs-card[b-l10room] { background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 18px 20px; margin: 0 0 14px; box-shadow: 0 1px 2px rgba(20, 35, 50, .03); min-width: 0; }
.rs-kicker[b-l10room] { font-size: .72em; font-weight: 800; color: var(--accent); letter-spacing: .09em; text-transform: uppercase; margin-bottom: 13px; }
.rs-kicker-flat[b-l10room] { display: block; margin: 0; }
.rs-grid[b-l10room] { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; }
.rs-box[b-l10room] { background: var(--surface2); border: 1px solid var(--line); border-radius: 11px; padding: 14px; min-width: 0; }
.rs-h3[b-l10room] { margin: 0 0 4px; font-size: 1.05em; font-weight: 800; }
.rs-meta[b-l10room] { font-size: .85em; color: var(--muted); line-height: 1.45; }
.rs-pulse-meta[b-l10room] { margin-bottom: 6px; }
.rs-line[b-l10room] { margin-top: 10px; font-size: .95em; }
.rs-small[b-l10room] { font-size: .78em; color: var(--muted); }
.rs-block[b-l10room] { display: block; margin-top: 2px; font-weight: 400; letter-spacing: 0; text-transform: none; }
.rs-muted[b-l10room] { color: var(--muted); }
.rs-people[b-l10room] { margin-top: 12px; }
.rs-person[b-l10room] { display: grid; grid-template-columns: minmax(0, 1fr) auto 28px; align-items: center; gap: 8px; padding: 7px 0; border-top: 1px solid var(--line); }
.rs-person:first-child[b-l10room] { border-top: 0; }
.rs-dt[b-l10room] { display: inline-flex; gap: 6px; }
.rs-in[b-l10room] { border: 1px solid var(--line); background: var(--surface); border-radius: 8px; padding: 6px 8px; font: inherit; font-size: .9em; color: var(--ink); width: 100%; min-width: 0; box-sizing: border-box; }
.rs-day[b-l10room] { width: 4.6em; }
.rs-time[b-l10room] { width: 7.6em; }
.rs-inline[b-l10room] { width: auto; display: inline-block; }
.rs-x[b-l10room] { border: 0; background: transparent; color: var(--muted); font-size: 1.25em; line-height: 1; cursor: pointer; padding: 0 4px; }
.rs-x:hover[b-l10room], .rs-x:focus-visible[b-l10room] { color: #a12828; }
.rs .btn:not(.primary)[b-l10room] { border-color: var(--accent); color: var(--accent); }
.rs-link[b-l10room] { all: unset; cursor: pointer; color: var(--accent); font-weight: 700; font-size: .85em; text-decoration: none; margin-left: 6px; }
.rs-link:focus-visible[b-l10room] { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.rs-removed[b-l10room] { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.rs-removed .rs-link[b-l10room] { margin-left: 0; color: var(--muted); font-weight: 600; }
.rs-split[b-l10room] { display: flex; justify-content: space-between; gap: 16px; align-items: center; }
.rs-form[b-l10room], .rs-adjust[b-l10room], .rs-actions[b-l10room] { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 10px; }
.rs-form .rs-in[b-l10room], .rs-adjust .rs-in[b-l10room] { width: auto; flex: 0 1 220px; }
.rs-ooo[b-l10room] { display: flex; align-items: center; gap: 4px; margin-bottom: 4px; }
.rs-conflict[b-l10room] { margin-top: 12px; padding: 10px 12px; border-left: 3px solid #b7791f; border-radius: 0 8px 8px 0; background: var(--surface2); font-size: .9em; }
.rs-teamrow[b-l10room] { display: grid; grid-template-columns: minmax(140px, 1.1fr) minmax(0, 220px) minmax(0, 246px) minmax(0, 246px); gap: 13px; align-items: center; padding: 14px 0; border-top: 1px solid var(--line); }
/* iPad landscape / narrow desktop (2026-10-15): the columns shrink instead of pushing the page sideways. */
.rs-teamrow > *[b-l10room] { min-width: 0; }
.rs-teamrow select[b-l10room], .rs-teamrow input[b-l10room] { max-width: 100%; }
.rs-pulse-meta + .rs-teamrow[b-l10room] { border-top: 0; }
.rs-teamname[b-l10room] { font-weight: 800; }
.rs-owner[b-l10room] { font-size: .85em; color: var(--muted); margin-top: 3px; }
.rs-label[b-l10room] { font-size: .62em; letter-spacing: .07em; text-transform: uppercase; font-weight: 800; color: var(--muted); margin-bottom: 4px; }
.rs-value[b-l10room] { font-size: .9em; padding: 6px 0; }
.rs-finance[b-l10room] { display: grid; grid-template-columns: minmax(0, 1fr) 150px 246px; gap: 13px; align-items: center; }
.rs-historyhead[b-l10room] { all: unset; box-sizing: border-box; width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 12px; cursor: pointer; }
.rs-historyhead:focus-visible[b-l10room] { outline: 2px solid var(--accent); outline-offset: 4px; border-radius: 6px; }
.rs-chev[b-l10room] { font-weight: 800; color: var(--accent); white-space: nowrap; font-size: .9em; }
.rs-history[b-l10room] { margin-top: 12px; }
.rs-month[b-l10room] { border-top: 1px solid var(--line); padding: 10px 0; }
.rs-month summary[b-l10room] { cursor: pointer; font-weight: 750; }
.rs-past[b-l10room] { padding: 8px 0 3px 16px; font-size: .85em; color: var(--muted); }
.rs-past a[b-l10room] { color: var(--accent); font-weight: 700; text-decoration: none; }
.rs-more-card[b-l10room] { padding-top: 12px; padding-bottom: 12px; }
.rs-more summary[b-l10room] { cursor: pointer; font-weight: 700; color: var(--muted); font-size: .9em; }
.rs-more + .rs-more[b-l10room] { margin-top: 10px; }
@media (max-width: 820px) {
    .rs-grid[b-l10room], .rs-teamrow[b-l10room], .rs-finance[b-l10room] { grid-template-columns: minmax(0, 1fr); }
    .rs-split[b-l10room] { align-items: flex-start; flex-direction: column; }
    .rs-card[b-l10room] { padding: 14px; }
}
@media (max-width: 420px) {
    .rs-person[b-l10room] { grid-template-columns: minmax(0, 1fr) 28px; }
    .rs-person .rs-dt[b-l10room] { grid-column: 1; grid-row: 2; }
    .rs-person .rs-x[b-l10room] { grid-column: 2; grid-row: 1; }
}
/* Meeting owner picker: reads as the name, with a subtle ▾ — not a form dropdown. */
.rs-pick[b-l10room] { position: relative; display: inline-flex; align-items: center; gap: 2px; }
.rs-pick-sel[b-l10room] { appearance: none; -webkit-appearance: none; border: 0; background: transparent; font: inherit; color: var(--ink); font-weight: 600;
    padding: 0 2px; margin: 0; cursor: pointer; field-sizing: content; max-width: 14em; border-radius: 4px; }
.rs-pick-sel:hover[b-l10room] { color: var(--accent); }
.rs-pick-sel:focus-visible[b-l10room] { outline: 2px solid var(--accent); outline-offset: 1px; }
.rs-pick-ind[b-l10room] { font-size: .75em; color: var(--muted); pointer-events: none; }
.rs-pick-text[b-l10room] { color: inherit; }
.rs-owner-note[b-l10room] { font-size: .78em; color: var(--muted); margin-top: 3px; font-style: italic; }

/* ── REVIEW PREVIOUS QUARTER: three views, the Quarterly outcome on the shared Rock cards (2026-10-12) ───────────── */
.pq-views[b-l10room]{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0 0;}
.pq-view[b-l10room]{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:8px 16px;font-size:15px;font-weight:700;cursor:pointer;min-height:40px;}
.pq-view.on[b-l10room]{background:var(--accent);border-color:var(--accent);color:#fff;}
/* A historical card carries no weekly "Done" fill: the Quarterly decision is the labelled choice below, not a colour. */
.rv-weekly-lbl[b-l10room]{font-size:12px;color:var(--muted);margin-right:6px;font-weight:600;}
.rv-outcome-row[b-l10room]{margin:8px 0 2px;}
.rv-outcome-row--sub[b-l10room]{flex-basis:100%;margin:6px 0 0;}
.qo[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:8px 10px;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:8px;background:var(--surface);}
.qo--done[b-l10room]{border-left-color:var(--green);}
.qo--partial[b-l10room]{border-left-color:var(--amber);}
.qo--notdone[b-l10room]{border-left-color:var(--red);}
.qo-lbl[b-l10room]{font-size:13px;font-weight:800;color:var(--ink);text-transform:uppercase;letter-spacing:.04em;}
.qo-seg[b-l10room]{display:inline-flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.qo-btn[b-l10room]{border:0;border-right:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:15px;font-weight:700;padding:7px 14px;min-height:38px;cursor:pointer;}
.qo-btn:last-child[b-l10room]{border-right:0;}
.qo-btn.on[b-l10room]{color:#fff;}
.qo-btn--done.on[b-l10room]{background:var(--green);}
.qo-btn--partial.on[b-l10room]{background:var(--amber);}
.qo-btn--notdone.on[b-l10room]{background:var(--red);}
.qo-btn:disabled[b-l10room]{cursor:default;opacity:.8;}
.qo-pct[b-l10room]{font-size:14px;display:inline-flex;align-items:center;gap:6px;}
.qo-pct .pctin[b-l10room]{width:64px;}
.qo-state[b-l10room]{font-size:14px;color:var(--muted);font-weight:600;}
.qo-clear[b-l10room]{border:0;background:none;color:var(--accent);font-size:14px;text-decoration:underline;cursor:pointer;padding:4px;}
.qo-cap[b-l10room]{margin-left:auto;}
.qo-carry[b-l10room]{flex-basis:100%;margin:2px 0 0;font-size:14px;color:var(--ink);}
.qo .rocknote[b-l10room]{flex-basis:100%;margin:2px 0 0;}
.pq-source[b-l10room]{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:14px;color:var(--muted);margin:2px 0 10px;}
.pq-source b[b-l10room]{color:var(--ink);}
.pq-unmapped[b-l10room]{border:1px dashed var(--line);border-radius:10px;padding:12px 14px;margin:8px 0;}
.pq-unmapped p[b-l10room]{margin:0 0 8px;overflow-wrap:anywhere;}
.pq-plan-wrap[b-l10room]{overflow-x:auto;margin:6px 0;max-width:100%;container-type:inline-size;}
.pq-qy[b-l10room]{min-width:0;max-width:100%;}
.pq-plan[b-l10room]{border-collapse:collapse;width:100%;min-width:640px;font-size:14.5px;}
.pq-plan th[b-l10room],.pq-plan td[b-l10room]{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;}
.pq-plan td.num[b-l10room]{text-align:right;font-variant-numeric:tabular-nums;}
.pq-goal[b-l10room]{color:var(--muted);}
.pq-warn td[b-l10room]{color:var(--amber);font-size:13px;}
.pq-owners[b-l10room]{margin:8px 0;font-size:14px;}
@media(max-width:620px){
  .qo[b-l10room]{padding:8px;}
  .qo-seg[b-l10room]{width:100%;}
  .qo-btn[b-l10room]{flex:1;padding:8px 6px;font-size:14px;}
  .qo-cap[b-l10room]{margin-left:0;}
  .pq-view[b-l10room]{flex:1;padding:8px 10px;font-size:14px;}
}
/* A historical (Quarterly) card or Sub-Rock keeps the shared class but never the weekly "Done" fill: last quarter's
   weekly status is a labelled fact on the card, and the Quarterly's own decision is the labelled outcome choice. */
.rv-card.rv-card--hist.rock-card--done[b-l10room]{background:var(--surface);border-color:var(--line);border-left-color:var(--rc-edge);--muted:inherit;--green:inherit;--red:inherit}
.subkid.subkid--hist.rock-card--done[b-l10room]{background:var(--surface);border-color:var(--line);--muted:inherit;--green:inherit;--red:inherit}
.pq-wb[b-l10room]{text-decoration:none;white-space:normal;max-width:100%;display:inline-block;text-align:center}
.rv-card.rv-card--hist.rock-card--done .rv-head[b-l10room]{background:var(--rc-soft)}
.rv-card.rv-card--hist.rock-card--done .rv-where[b-l10room],.rv-card.rv-card--hist.rock-card--done .rv-team[b-l10room],.rv-card.rv-card--hist.rock-card--done .rv-route[b-l10room]{color:inherit}
.pq-title[b-l10room]{white-space:normal;min-width:0;flex:1 1 auto;overflow-wrap:anywhere}
.pq-source span[b-l10room]{overflow-wrap:anywhere;min-width:0}
/* Quarter Scorecard: the quarter's results first; large-screen readable, wraps on phones. */
.pq-cal[b-l10room]{font-size:14px;color:var(--muted);margin:0 0 10px;overflow-wrap:anywhere}
.pq-res-wrap[b-l10room]{overflow-x:auto;margin:6px 0 10px;max-width:100%;container-type:inline-size}   /* its 720 px table scrolls inside; never widens the page */
.pq-res[b-l10room]{border-collapse:collapse;width:100%;min-width:720px;font-size:16px}
.pq-res th[b-l10room],.pq-res td[b-l10room]{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.pq-res thead th[b-l10room]{font-size:13.5px;color:var(--muted);font-weight:700}
.pq-res td.num[b-l10room],.pq-res th.num[b-l10room]{text-align:right;font-variant-numeric:tabular-nums}
.pq-res-actual[b-l10room]{font-weight:800}
.pq-res-sec th[b-l10room]{background:var(--surface-2,#f4f5f7);font-size:14px}
.pq-res-none[b-l10room]{color:var(--muted);font-weight:400;font-size:14px}
.pq-res-status[b-l10room]{font-weight:700;white-space:nowrap}
.pq-res-status--green[b-l10room]{color:var(--green,#1b7f3b)}
.pq-res-status--yellow[b-l10room]{color:var(--amber,#9a6700)}
.pq-res-status--red[b-l10room]{color:var(--red,#b42318)}
.pq-res-status--gray[b-l10room]{color:var(--muted)}
.pq-res-partial[b-l10room]{color:var(--amber,#9a6700)}
.pq-plan.pq-goals[b-l10room]{min-width:0}
/* QUARTERLY TABLES ON AN IPAD OR PHONE (2026-10-17, Leon — PAG #3): a .pq-stack table that would not fit its box turns
   each row into a labelled card (each cell's data-label), so every figure, the Proposed box and the Approve button stay
   in view with no sideways scrolling. Same markup, same controls; only the layout changes. The width is the table's own
   box (container query), so the iPad landscape layout with the agenda rail counts as narrow too. */
@container (max-width:819px){
  .pq-stack[b-l10room]{min-width:0}
  .pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) thead[b-l10room]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .pq-stack:not(.pq-stack--sm):not(.pq-stack--q4)[b-l10room],.pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) tbody[b-l10room]{display:block}
  .pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) tbody tr[b-l10room]{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px 16px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 10px}
  .pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) tbody th[scope="row"][b-l10room]{grid-column:1/-1;border:0;padding:0;font-size:17px;font-weight:800}
  .pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) tbody td[b-l10room]{border:0;padding:0;text-align:left;min-width:0;overflow-wrap:anywhere}
  .pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) tbody td[data-label][b-l10room]::before{content:attr(data-label);display:block;font-size:13px;font-weight:700;color:var(--muted)}
  .pq-stack .pq-res-cov[b-l10room]{grid-column:1/-1}
  .pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) tbody tr.pq-res-sec[b-l10room],.pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) tbody tr.pq-warn[b-l10room]{display:block;border:0;border-radius:0;padding:0;margin:4px 0 8px}
  .pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) tbody tr.pq-res-sec th[b-l10room],.pq-stack:not(.pq-stack--sm):not(.pq-stack--q4) tbody tr.pq-warn td[b-l10room]{display:block;border:0;border-radius:8px;padding:6px 10px}
}
/* The financial plan matrix (Actual / Target × Q1–Q4, Year) fits an iPad; on a phone each row is a card under the line's name. */
@container (max-width:559px){
  .pq-stack--sm[b-l10room]{min-width:0}
  .pq-stack--sm[b-l10room],.pq-stack--sm thead[b-l10room],.pq-stack--sm tbody[b-l10room],.pq-stack--sm thead tr[b-l10room]{display:block}
  .pq-stack--sm thead th:not(:first-child)[b-l10room]{display:none}
  .pq-stack--sm thead th:first-child[b-l10room]{display:block;border:0;padding:0 0 6px;font-size:17px}
  .pq-stack--sm tbody tr[b-l10room]{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px 16px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 10px}
  .pq-stack--sm tbody th[scope="row"][b-l10room]{grid-column:1/-1;border:0;padding:0;font-weight:800}
  .pq-stack--sm tbody td[b-l10room],.pq-stack--sm tbody td.num[b-l10room]{border:0;padding:0;text-align:left;min-width:0;overflow-wrap:anywhere}
  .pq-stack--sm tbody td[data-label][b-l10room]::before{content:attr(data-label);display:block;font-size:13px;font-weight:700;color:var(--muted)}
}
/* ANNUAL REVIEW & Q4 TARGETS = an inline, live Q4 planning calculator per plan line (PAG #3 Section 10, Leon 2026-10-17).
   Facts in small type; the starting gap, the proposed-target input and the projected result large and side by side (stacked
   in that order on a narrow box, so the input and its result are always seen together). Container queries on the list. */
.q4c-list[b-l10room]{container-type:inline-size;display:grid;gap:12px;margin-top:8px}
.q4c[b-l10room]{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface)}
.q4c-head[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:8px}
.q4c-name[b-l10room]{font-size:18px;font-weight:800}
.q4c-facts[b-l10room]{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px 14px;margin-bottom:10px}
.q4c-facts>div[b-l10room]{min-width:0}
.q4c-lbl[b-l10room]{display:block;font-size:13px;font-weight:700;color:var(--muted)}
.q4c-sub[b-l10room]{font-weight:400}
.q4c-v[b-l10room]{display:block;font-size:16px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.q4c-note[b-l10room]{display:block;font-size:13px;color:var(--muted);font-weight:400}
.q4c-calc[b-l10room]{display:grid;grid-template-columns:1fr 1.2fr 1.3fr;gap:10px;align-items:stretch}
.q4c-box[b-l10room]{border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:0;display:flex;flex-direction:column;gap:2px}
.q4c-inbox[b-l10room]{border-color:var(--accent);border-width:2px}
.q4c-big[b-l10room]{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;line-height:1.25}
.q4c-input[b-l10room]{font-size:22px !important;font-weight:700;width:100%;min-height:46px;font-variant-numeric:tabular-nums}
.q4c-line[b-l10room]{font-size:15px}
.q4c-result.q4c-ok[b-l10room]{border-color:var(--green,#1b7f3b)}
.q4c-result.q4c-ok .q4c-big[b-l10room]{color:var(--green,#1b7f3b)}
.q4c-result.q4c-short[b-l10room]{border-color:var(--amber,#9a6700)}
.q4c-result.q4c-short .q4c-big[b-l10room]{color:var(--amber,#9a6700)}
.q4c-good[b-l10room]{color:var(--green,#1b7f3b)}
.q4c-foot[b-l10room]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 22px;margin-top:10px;font-variant-numeric:tabular-nums}
.q4c-foot b[b-l10room]{display:block;font-size:16px}
.q4c-foot .wtr-actions[b-l10room]{margin-left:auto}
@container (max-width:700px){
  .q4c-facts[b-l10room]{grid-template-columns:repeat(3,minmax(0,1fr))}
  .q4c-calc[b-l10room]{grid-template-columns:1fr 1fr}
  .q4c-calc>.q4c-box:first-child[b-l10room]{grid-column:1/-1}
}
@container (max-width:440px){
  .q4c-facts[b-l10room]{grid-template-columns:repeat(2,minmax(0,1fr))}
  .q4c-calc[b-l10room]{grid-template-columns:1fr}
  .q4c-foot .wtr-actions[b-l10room]{margin-left:0}
}
.pq-detail-btn[b-l10room]{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;padding:8px 14px;font-size:15px;font-weight:700;cursor:pointer;min-height:40px;margin:6px 0 8px}


/* PHONE WIDTH (2026-10-13, Concept #106 rehearsal at 390 px). The room column has no min-width, so one row that cannot
   shrink widens the whole page sideways. These rows now wrap instead: attendee roles (Check-In), long source chips on an
   Issue (IDS), block headings with a link (Accountability Chart), and the Finish row when its warnings show (Decisions).
   Desktop and iPad are unchanged. */
@media (max-width:620px){
    .att[b-l10room]{flex-wrap:wrap;}
    .att-nm[b-l10room]{min-width:0;}
    .rolesel[b-l10room]{min-width:0;max-width:200px;}
    .row.idsrow[b-l10room]{flex-wrap:wrap;}
    .idsmeta .pill[b-l10room]{white-space:normal;max-width:100%;}
    [b-l10room] .blockhead{flex-wrap:wrap;}
    .navbtns[b-l10room]{flex-wrap:wrap;}
}

/* "Owner to confirm" (2026-10): an imported To-Do still with its temporary placeholder owner (ImportedNotes.OwnerToConfirm).
   Compact and clickable — clicking confirms the current owner with an ordinary note; reassigning clears it. */
.ownerconfirm[b-l10room]{flex:none;border:1px dashed var(--amber);color:var(--amber);background:transparent;border-radius:999px;
    font-size:13px;font-weight:700;padding:3px 9px;cursor:pointer;font-family:inherit;white-space:nowrap;}
.ownerconfirm:hover[b-l10room]{background:var(--amber-bg);}
.ownerconfirm:disabled[b-l10room]{cursor:default;opacity:.7;}

/* TO-DO ROWS (To-Dos, Next Steps, Conclude — 2026-10-13). The title keeps at least 240 px; when the owner, "Owner to confirm",
   due date and status do not fit beside it (iPad, phone), they wrap under the title instead of squeezing it to a sliver. */
.tdrow[b-l10room]{flex-wrap:wrap;}
.tdrow > .tdtitle[b-l10room],.tdrow > .grow[b-l10room]{flex:1 1 240px;min-width:0;}

/* Set Financial Rocks (2026-10-14): one block per measure, wrapping on narrow screens. */
.finrocks-grid[b-l10room]{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:10px;}
.finm[b-l10room]{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--surface);min-width:0;}
.finm-name[b-l10room]{font-weight:700;font-size:1.05em;margin-bottom:6px;}
.finm-dl[b-l10room]{display:block;margin:0;}
.finm-dl dt[b-l10room]{color:var(--muted);font-weight:600;font-size:.85em;margin-top:8px;text-transform:uppercase;letter-spacing:.03em;}
.finm-dl dd[b-l10room]{margin:2px 0 0;min-width:0;overflow-wrap:break-word;}
.finm-src[b-l10room]{color:var(--muted);font-size:.85em;}
.finm-miss[b-l10room]{color:var(--muted);font-style:italic;}
.finm-rock[b-l10room]{margin-top:6px;font-size:.92em;overflow-wrap:anywhere;}
.finm-propose[b-l10room]{margin-top:8px;display:flex;flex-direction:column;gap:6px;}
.finm-propose label[b-l10room]{display:flex;flex-direction:column;gap:4px;font-weight:600;}
.finm-actions[b-l10room]{display:flex;flex-wrap:wrap;gap:8px;}
.finm-err[b-l10room]{color:var(--red);font-weight:600;}
.finm .btn[b-l10room]{margin-top:8px;}
/* Review Previous Quarter financials (2026-10-15, WhirlWind #102): components beneath a target in smaller type; notes are context only. */
.pqfin-comps[b-l10room]{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-size:.82em;color:var(--muted);font-weight:400;justify-content:flex-end;}
.pqfin-comp[b-l10room]{white-space:nowrap;}
.pqfin-note[b-l10room]{display:block;margin-top:4px;font-size:.82em;color:var(--muted);font-weight:400;font-style:italic;overflow-wrap:anywhere;text-align:left;}
.pr-sugg[b-l10room]{margin:2px 0 6px;font-size:.85em;color:var(--muted);}
.pr-sugg summary[b-l10room]{cursor:pointer;display:inline-block;list-style:none;}
.pr-sugg summary[b-l10room]::-webkit-details-marker{display:none;}
.pr-sugg select[b-l10room]{max-width:220px;margin-left:6px;font-size:.95em;}
.pr-noteby[b-l10room]{font-size:.85em;color:var(--muted);font-weight:600;}

/* Schedule Next Quarterly / Annual (WhirlWind #102, 2026-10-15) — nq-* only. */
.nq-form[b-l10room] { flex-direction: column; align-items: stretch; }
.nq-row[b-l10room] { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.nq-row .rs-in[b-l10room] { flex: 0 1 auto; width: auto; }
.nq-row .rs-label[b-l10room] { min-width: 52px; }
/* Quarter & Year financial plan calculator/editor (2026-10-15, WhirlWind #102 phase 2). */
.pqplan[b-l10room]{margin-top:12px;}
.pqplan-calc[b-l10room]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:6px 14px;margin:8px 0;}
.pqplan-calc dt[b-l10room]{color:var(--muted);font-weight:600;font-size:.85em;}
.pqplan-calc dd[b-l10room]{margin:0;font-variant-numeric:tabular-nums;}
.pqplan-edit[b-l10room]{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 12px;margin:8px 0 12px;}
.pqplan-edit label[b-l10room]{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:.9em;min-width:0;}
.pqplan-wide[b-l10room]{grid-column:1/-1;}
/* ── #102 IDS+AC (2026-10-15): Accountability Chart tree. New ids102-/ac102- rules only. ── */
.ac102-sub[b-l10room]{color:var(--muted);margin:4px 0 12px;}
.ac102-tree[b-l10room]{display:flex;flex-wrap:wrap;justify-content:center;gap:0;overflow-x:auto;padding-bottom:6px;}
.ac102-node[b-l10room]{display:flex;flex-direction:column;align-items:center;position:relative;padding:18px 6px 0;}
.ac102-tree > .ac102-node[b-l10room]{padding-top:0;}
/* connectors: each child draws its half of the sibling bar plus a stub up to it */
.ac102-kids > .ac102-node[b-l10room]::before,.ac102-kids > .ac102-node[b-l10room]::after{content:"";position:absolute;top:0;width:50%;height:18px;border-top:2px solid var(--line);}
.ac102-kids > .ac102-node[b-l10room]::before{right:50%;}
.ac102-kids > .ac102-node[b-l10room]::after{left:50%;border-left:2px solid var(--line);}
.ac102-kids > .ac102-node:first-child[b-l10room]::before,.ac102-kids > .ac102-node:last-child[b-l10room]::after{border-top:0 none;}
.ac102-kids > .ac102-node:only-child[b-l10room]::before{display:none;}
.ac102-kids[b-l10room]{display:flex;flex-wrap:wrap;justify-content:center;position:relative;padding-top:18px;}
.ac102-kids[b-l10room]::before{content:"";position:absolute;top:0;left:50%;height:18px;border-left:2px solid var(--line);}
.ac102-seat[b-l10room]{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:170px;max-width:230px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px;}
.ac102-seat.open[b-l10room]{border-color:var(--red);}
.ac102-name[b-l10room]{font-weight:700;color:var(--ink);line-height:1.25;}
.ac102-sync[b-l10room]{display:inline-block;margin-left:4px;font-size:.72em;font-weight:600;color:var(--green);border:1px solid var(--green);border-radius:999px;padding:0 6px;vertical-align:middle;}
.ac102-holders[b-l10room]{display:flex;flex-wrap:wrap;gap:4px;}
.ac102-holder[b-l10room]{background:var(--surface2);border-radius:999px;padding:2px 9px;font-size:.9em;color:var(--ink);}
.ac102-open[b-l10room]{color:var(--red);font-weight:700;font-size:.9em;}
.ac102-gwc[b-l10room]{max-width:100%;}
@media (max-width:620px){
  .ac102-tree[b-l10room]{display:block;}
  .ac102-node[b-l10room]{align-items:stretch;padding:8px 0 0;}
  .ac102-kids[b-l10room]{display:block;padding:0 0 0 14px;margin-left:10px;border-left:2px solid var(--line);}
  .ac102-kids[b-l10room]::before,.ac102-kids > .ac102-node[b-l10room]::before,.ac102-kids > .ac102-node[b-l10room]::after{display:none;}
  .ac102-seat[b-l10room]{max-width:none;min-width:0;}
}

/* IDS ROW CONTROLS (2026-10-15, Leon — #102 IDS cleanup): Owner, Priority and Status share one height, font, padding,
   radius and baseline; a long name is cut with an ellipsis (full name on hover) instead of overflowing; High priority is
   soft yellow with dark text (Medium/Low stay neutral); long titles wrap; "Suggested by" sits in the meta line, compact. */
.idsmeta[b-l10room]{align-items:center;}
.idsmeta select.field.sel[b-l10room]{height:34px;box-sizing:border-box;font-size:14.5px;line-height:1.2;padding:4px 26px 4px 10px;border-radius:8px;vertical-align:middle;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;min-width:0;}
.idsmeta .ownersel[b-l10room]{max-width:min(190px,100%);flex:0 1 auto;}
.idsmeta .idspri[b-l10room]{max-width:112px;}
.idsmeta .idsstat[b-l10room]{max-width:136px;}
.idsmeta .idspri.idspri-high[b-l10room]{background-color:#fff4c2;color:#3a2c00;border-color:#e6c65c;}
.idstitle[b-l10room]{width:100%;white-space:pre-wrap;overflow-wrap:anywhere;height:auto;min-height:36px;field-sizing:content;resize:none;overflow:hidden;}
.idsmeta .idssugg[b-l10room]{margin:0;font-size:14px;display:inline-flex;align-items:center;max-width:100%;}
.idsmeta .idssugg summary[b-l10room]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px;padding:2px 4px;}
.idsmeta .idssugg.set summary[b-l10room]{font-style:italic;}
.idsmeta .idssugg select[b-l10room]{height:34px;max-width:min(200px,60vw);}

/* COMPACT SUGGESTED BY + TIGHTER POTENTIAL ROCK CARDS (2026-10-15, Leon — #102) */
.pr-sugg-sel[b-l10room]{display:block;width:150px;max-width:100%;height:30px;box-sizing:border-box;margin:5px 0 0;padding:2px 24px 2px 8px;font-size:14px;border-radius:8px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;}
.pr-sugg-sel.unset[b-l10room]{color:var(--muted);}
[data-candidate].row[b-l10room]{padding-top:6px;padding-bottom:6px;margin-bottom:4px;}

/* LIVE TEXT BOXES (2026-10-15, #102): the shared boxes are rendered by Shared/LiveText.razor, a child component, so the
   room's scoped rules for them are repeated with ::deep (same declarations, same order; nothing else changes). */
[b-l10room] .edit{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:16.5px;font-family:inherit;line-height:1.4;background:var(--surface);color:var(--ink);width:100%;height:auto;min-height:40px;resize:none;field-sizing:content;}
[b-l10room] .edit:focus{outline:2px solid var(--accent);outline-offset:1px;}
[b-l10room] textarea.edit{overflow-y:hidden;}
[b-l10room] input.edit{field-sizing:fixed;}
[b-l10room] .idstitle{font-weight:700;font-size:16.5px;border-color:transparent;background:transparent;padding:2px 6px;}
[b-l10room] .idstitle:hover{border-color:var(--line);background:var(--surface);}
[b-l10room] .idstitle.done{text-decoration:line-through;opacity:.55;}
[b-l10room] .idsnoteedit{flex:1;min-width:0;font-family:inherit;font-size:13.5px;line-height:1.4;color:var(--ink);background:transparent;border:1px solid transparent;border-radius:6px;padding:2px 6px;resize:none;field-sizing:content;overflow-y:hidden;}
[b-l10room] .idsnoteedit:hover{border-color:var(--line);background:#fff;}
[b-l10room] .idsnoteedit:focus{outline:none;border-color:var(--accent);background:#fff;}
[b-l10room] .edit + .seglabel{margin-top:12px;}
[b-l10room] .idstitle{width:100%;white-space:pre-wrap;overflow-wrap:anywhere;height:auto;min-height:36px;field-sizing:content;resize:none;overflow:hidden;}
[b-l10room] .lt-conflict{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:14px;margin:4px 0;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);}
/* Rate-the-Quarter comment is a LiveText too (2026-10-16, PAG3 row 35): its scoped rules repeated with ::deep, same declarations. */
.raterow[b-l10room]  .ratecmt{flex:1;min-width:80px;font-size:13px;line-height:1.4;padding:5px 8px;border:1px dashed var(--line);opacity:.6;height:auto;min-height:32px;background:transparent;resize:none;field-sizing:content;overflow-y:hidden;}
.raterow[b-l10room]  .ratecmt:focus{opacity:1;border-color:var(--accent);}

/* REVENUE BY BUSINESS LINE (2026-10-15, Leon — #102): five equal cards, one shared panel (Quarter & Year + Review V/TO).
   Explicit resets on the card so no browser or global button style leaks in. */
.rbl[b-l10room]{margin-top:14px;}
.rbl-head[b-l10room]{margin-bottom:10px;}
.rbl-title[b-l10room]{font-size:18px;font-weight:700;color:var(--ink);}
.rbl-sub[b-l10room]{font-size:14px;color:var(--muted);margin-top:2px;}
.rbl-grid[b-l10room]{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;align-items:stretch;}
.rbl-card[b-l10room]{appearance:none;-webkit-appearance:none;box-sizing:border-box;width:100%;height:100%;min-width:0;margin:0;display:flex;flex-direction:column;align-items:stretch;gap:6px;
  padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;line-height:1.2;}
.rbl-card:hover[b-l10room]{border-color:var(--accent);}
.rbl-card:focus-visible[b-l10room]{outline:2px solid var(--accent);outline-offset:2px;}
.rbl-card.on[b-l10room]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);}
.rbl-label[b-l10room]{font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rbl-ytd[b-l10room]{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;}
.rbl-bar[b-l10room]{display:block;height:5px;border-radius:3px;background:var(--line);overflow:hidden;}
.rbl-bar>span[b-l10room]{display:block;height:100%;background:var(--accent);}
.rbl-pct[b-l10room]{font-size:13.5px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;}
@media (max-width:1180px){ .rbl-grid[b-l10room]{grid-template-columns:repeat(3,minmax(0,1fr));} }
@media (max-width:640px){
    .rbl-grid[b-l10room]{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
    .rbl-card[b-l10room]{padding:10px;gap:5px;}
    .rbl-label[b-l10room]{font-size:11.5px;letter-spacing:.02em;}
    .rbl-ytd[b-l10room]{font-size:17px;}
    .rbl-pct[b-l10room]{font-size:12px;white-space:normal;}
}
@media (max-width:340px){ .rbl-grid[b-l10room]{grid-template-columns:1fr;} }

/* FINANCIAL GOAL CHECKBOX (2026-10-17, Leon): compact, sized like .btn.sm so it sits in the card's existing action row. */
.fg-box[b-l10room]{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--line,#d5dbe3);border-radius:8px;
  font-size:15px;font-weight:600;color:var(--ink-2,#3b4652);background:#fff;cursor:pointer;white-space:nowrap;line-height:1.2}
.fg-box input[b-l10room]{width:17px;height:17px;margin:0;accent-color:#0f5f73;cursor:pointer}
.fg-box.on[b-l10room]{border-color:#0f5f73;color:#0f5f73;background:#eef6f8}
.fg-box:has(input:disabled)[b-l10room]{cursor:default;opacity:.7}
.fg-measure[b-l10room]{max-width:240px;font-size:15px}

/* HELPFUL LINKS in the room rail (2026-10-17): compact, same size as the rail's other links; opens in a new tab. */
.hl-rail[b-l10room]{margin:0}
.hl-rail summary[b-l10room]{cursor:pointer;list-style:none}
.hl-rail summary[b-l10room]::-webkit-details-marker{display:none}
.hl-rail[open] summary[b-l10room]{font-weight:700}
.hl-head[b-l10room]{margin:8px 0 2px 4px;font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3,#5b6672)}
.hl-link[b-l10room]{display:block;margin:2px 0 2px 4px;padding:3px 0;font-size:15px;line-height:1.3;color:#0f5f73;text-decoration:none;overflow-wrap:anywhere}
.hl-link:hover[b-l10room]{text-decoration:underline}

/* Q4 card company totals (PAG financial reconciliation 2026-10-17): compact, same type scale as the card's facts. */
.q4c-tot[b-l10room]{width:100%;border-collapse:collapse;margin:6px 0 10px;font-size:15px}
.q4c-tot th[b-l10room],.q4c-tot td[b-l10room]{padding:5px 8px;border-bottom:1px solid var(--line,#e3e7ec);text-align:right;white-space:nowrap}
.q4c-tot th:first-child[b-l10room],.q4c-tot td:first-child[b-l10room]{text-align:left;white-space:normal}
.q4c-tot th[b-l10room]{font-size:13px;font-weight:700;color:var(--ink-3,#5b6672);text-transform:uppercase;letter-spacing:.03em}
@container (max-width: 640px){ .q4c-tot[b-l10room]{font-size:14px} .q4c-tot th[b-l10room],.q4c-tot td[b-l10room]{padding:4px 5px;white-space:normal} }

/* REVIEW SCHEDULE GROUPS (2026-10-17, Leon — PAG #3): group headers in the Team meeting pulse; the cadence column fits its
   inline editor; the editor wraps on narrow screens. */
.rs-group[b-l10room] { margin-top: 14px; }
.rs-group:first-of-type[b-l10room] { margin-top: 6px; }
.rs-grouphead[b-l10room] { display: flex; align-items: center; gap: 8px; padding: 8px 0 4px; border-bottom: 2px solid var(--line); font-size: .8em; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); }
.rs-group .rs-teamrow:first-of-type[b-l10room] { border-top: 0; }
.rs-editbtn[b-l10room] { margin-top: 2px; }
.rs-adjust[data-rs="row-cadence-form"][b-l10room] { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.rs-adjust[data-rs="row-cadence-form"] .rs-in[b-l10room] { flex: 1 1 110px; min-width: 0; }
.rs-adjust[data-rs="row-cadence-form"] .rs-min[b-l10room] { flex: 0 1 80px; }

/* PAG SECTION 6 REVIEW (2026-10-17): totals, pending and surplus styling for Q3 Results / Year-to-Date. */
.pq-res tr.pq-total th[b-l10room], .pq-res tr.pq-total td[b-l10room] { font-weight: 800; border-top: 2px solid var(--line); }
.pq-pending[b-l10room] { display: inline-block; padding: 1px 8px; border-radius: 10px; background: #fff4e5; color: #8a5300; font-weight: 700; font-size: .9em; }
.pq-src[b-l10room] { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 8px; background: var(--surface2, #f1f4f7); color: var(--muted); font-size: .75em; font-weight: 700; }
.pq-up[b-l10room] { color: #13703c; font-weight: 700; }
.pq-down[b-l10room] { color: #a8322d; font-weight: 700; }
.pq-res[b-l10room] { font-size: .9em; }
.pq-res th[b-l10room], .pq-res td[b-l10room] { padding: 7px 6px; }
.pq-res td.num[b-l10room] { white-space: nowrap; }
.pq-res thead th[b-l10room] { white-space: nowrap; }

/* MERGE PREVIEW (2026-10-17, Leon — PAG #3): compact confirm panel under the "Merge into…" picker. */
.mg-preview[b-l10room] { flex-basis: 100%; margin: 6px 0 4px; padding: 10px 12px; border: 1px solid var(--accent, #0f5f73); border-radius: 10px; background: #f3f8fa; display: grid; gap: 8px; }
.mg-head[b-l10room] { font-size: .8em; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--accent, #0f5f73); }
.mg-line[b-l10room] { font-size: .9em; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.mg-field[b-l10room] { display: grid; gap: 3px; }
.mg-lbl[b-l10room] { font-size: .72em; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.mg-small[b-l10room] { font-size: .82em; color: var(--muted); }
.mg-actions[b-l10room] { display: flex; gap: 8px; flex-wrap: wrap; }
/* Year-to-Date: eight columns of company-size dollars must fit the desktop card (2026-10-17, check L8). */
.pq-ytdtab[b-l10room] { font-size: .82em; table-layout: auto; width: 100%; }
.pq-ytdtab th[b-l10room], .pq-ytdtab td[b-l10room] { padding: 6px 4px; }
.pq-ytdtab thead th[b-l10room] { white-space: normal; }
.pq-ytdtab td[data-label="Still to go"][b-l10room] { white-space: normal; min-width: 92px; }
.pq-ytdtab th[scope="row"][b-l10room] { min-width: 88px; }
/* Q4 planning blocks in Set the Rocks (2026-10-17). */
.str-q4more[b-l10room] { margin-top: 14px; }
.str-q4more > summary[b-l10room] { cursor: pointer; list-style: none; }
.str-q4more > summary[b-l10room]::-webkit-details-marker { display: none; }
.str-q4more > summary[b-l10room]::before { content: "▸ "; }
.str-q4more[open] > summary[b-l10room]::before { content: "▾ "; }
.str-q4more > .card[b-l10room] { box-shadow: none; border: 0; padding: 0; margin-top: 8px; }

/* COMPACT TEAM MEETING PULSE (2026-10-18, Leon — PAG #3 Section 3): one table-style line per meeting. Dates are text buttons;
   the picker shows only for the cell being edited. Below 820px each row stacks into a short labelled block. */
.rs-trow[b-l10room] { display: grid; grid-template-columns: minmax(170px, 1.25fr) minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr); gap: 10px; align-items: center; padding: 7px 0; border-top: 1px solid var(--line); }
.rs-trow > *[b-l10room] { min-width: 0; }
.rs-thead[b-l10room] { border-top: 0; padding: 6px 0 4px; font-size: .64em; letter-spacing: .07em; text-transform: uppercase; font-weight: 800; color: var(--muted); }
.rs-group .rs-trow:first-of-type[b-l10room], .rs-thead + .rs-group .rs-trow:first-of-type[b-l10room] { border-top: 0; }
.rs-tcell[b-l10room] { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: .9em; }
.rs-tmeet[b-l10room] { display: block; }
.rs-tmeet .rs-teamname[b-l10room] { font-size: 1em; line-height: 1.25; }
.rs-tmeet .rs-owner[b-l10room] { font-size: .8em; margin-top: 1px; }
.rs-tval[b-l10room] { white-space: nowrap; }
.rs-mlabel[b-l10room] { display: none; }
.rs-linkbtn[b-l10room] { background: none; border: 0; padding: 2px 4px; color: var(--accent); font: inherit; font-size: .85em; font-weight: 700; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.rs-datebtn[b-l10room] { background: none; border: 1px dashed transparent; border-radius: 6px; padding: 3px 6px; margin-left: -6px; font: inherit; color: var(--ink); cursor: pointer; text-align: left; white-space: nowrap; }
.rs-datebtn:hover[b-l10room], .rs-datebtn:focus-visible[b-l10room] { border-color: var(--line); background: var(--soft, rgba(0,0,0,.03)); }
.rs-datebtn.rs-muted[b-l10room] { color: var(--muted); }
.rs-pick[b-l10room] { display: flex; align-items: center; gap: 4px; min-width: 0; }
.rs-pick .rs-in[b-l10room] { min-width: 0; max-width: 220px; padding: 4px 6px; }
.rs-trow .rs-adjust[data-rs="row-cadence-form"] .rs-in[b-l10room] { padding: 4px 6px; }
.rs-trow .rs-small[b-l10room] { flex-basis: 100%; }
.rs-group[b-l10room] { margin-top: 10px; }
.rs-grouphead[b-l10room] { padding: 6px 0 3px; }
.rs-finrow[b-l10room] { border-top: 0; }
@media (max-width: 820px) {
    .rs-thead[b-l10room] { display: none; }
    .rs-trow[b-l10room] { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 4px 12px; padding: 9px 0; }
    .rs-tmeet[b-l10room] { grid-column: 1 / -1; }
    .rs-tcell:not(.rs-tmeet)[b-l10room] { flex-direction: column; align-items: flex-start; gap: 0; }
    .rs-mlabel[b-l10room] { display: block; font-size: .66em; letter-spacing: .06em; text-transform: uppercase; font-weight: 800; color: var(--muted); }
    .rs-tval[b-l10room], .rs-datebtn[b-l10room] { white-space: normal; }
    .rs-tcell[data-rs-cadence]:has(.rs-adjust)[b-l10room], .rs-tcell:has(.rs-pick)[b-l10room] { grid-column: 1 / -1; }
    .rs-pick .rs-in[b-l10room] { max-width: none; flex: 1 1 auto; }
    .rs-tnone[b-l10room] { display: none; }
}

/* SECTION 6 Q3 RESULTS — ONE COMPACT TABLE (2026-10-18, Leon). Readable type (16px body, 14px+ labels); compact through spacing:
   one shared header, a slim group row per measure, tight rows. Under 600px of table box each line becomes a two-column labelled
   block (no sideways scroll, no tiny text). */
.pq-res1[b-l10room]{border-collapse:collapse;width:100%;font-size:16px}
.pq-res1 th[b-l10room],.pq-res1 td[b-l10room]{padding:4px 8px;border-bottom:1px solid var(--line);text-align:left;line-height:1.3}
.pq-res1 thead th[b-l10room]{font-size:14px;font-weight:800;color:var(--muted);border-bottom:2px solid var(--line);white-space:nowrap}
.pq-res1 thead th:not(:first-child)[b-l10room],.pq-res1 td.num[b-l10room]{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pq-res1 tbody th[scope="row"][b-l10room]{font-weight:600;padding-left:18px}
.pq-res1 tr.pq-grp th[b-l10room]{padding:10px 8px 3px;border-bottom:1px solid var(--line);font-size:15px;font-weight:800;letter-spacing:.02em;color:var(--accent)}
.pq-res1 tbody:first-of-type tr.pq-grp th[b-l10room]{padding-top:4px}
.pq-res1 .pq-grpnote[b-l10room]{font-weight:500;color:var(--muted);letter-spacing:0;font-size:14px}
.pq-res1 tr.pq-total th[b-l10room],.pq-res1 tr.pq-total td[b-l10room]{font-weight:800;border-bottom-width:2px}
.pq-res1-card .blockhead[b-l10room]{margin-bottom:4px}
.pq-sources[b-l10room]{margin-top:8px;font-size:15px}
.pq-sources summary[b-l10room]{cursor:pointer;font-weight:700;color:var(--muted)}
.pq-sources p[b-l10room],.pq-sources ul[b-l10room]{margin:6px 0}
@container (max-width:599px){
  .pq-res1 thead[b-l10room]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .pq-res1[b-l10room],.pq-res1 tbody[b-l10room]{display:block}
  .pq-res1 tbody tr[b-l10room]{display:grid;grid-template-columns:1fr 1fr;gap:2px 14px;padding:6px 0;border-bottom:1px solid var(--line)}
  .pq-res1 tbody tr.pq-grp[b-l10room]{display:block;padding:10px 0 2px}
  .pq-res1 tbody tr.pq-grp th[b-l10room]{display:block;border:0;padding:0}
  .pq-res1 tbody th[scope="row"][b-l10room]{grid-column:1/-1;border:0;padding:0}
  .pq-res1 tbody td[b-l10room]{border:0;padding:0;text-align:left!important;white-space:normal}
  .pq-res1 tbody td[data-label][b-l10room]::before{content:attr(data-label);display:block;font-size:14px;font-weight:700;color:var(--muted)}
  .pq-res1 tr.pq-total th[b-l10room],.pq-res1 tr.pq-total td[b-l10room]{border:0}
}

/* Section 6 final corrections (2026-10-18): Written (teal) / Finished (amber) accents on the group row only; "recorded only" lines;
   flagged totals; the reliable subtotal; money right-aligned in every column incl. Still to go. */
.pq-res1 tbody.pq-tone-written tr.pq-grp th[b-l10room]{color:#0f6f74;box-shadow:inset 3px 0 0 #2a9d8f}
.pq-res1 tbody.pq-tone-finished tr.pq-grp th[b-l10room]{color:#8a5a00;box-shadow:inset 3px 0 0 #d4a017}
.pq-res1 tr.pq-grp th[b-l10room]{padding-left:10px}
.pq-res1 tr.pq-unrel th[b-l10room],.pq-res1 tr.pq-unrel td[b-l10room]{color:var(--muted)}
.pq-res1 td.pq-nm[b-l10room]{font-style:italic;font-size:15px}
.pq-res1 tr.pq-subtotal th[b-l10room],.pq-res1 tr.pq-subtotal td[b-l10room]{font-weight:700;background:var(--surface-2,#f6f7f9)}
.pq-rowflag[b-l10room]{display:inline-block;margin-left:6px;font-size:14px;font-weight:600;color:var(--muted)}
.pq-rowflag--warn[b-l10room]{color:#8a5a00}
.pq-unrelnote[b-l10room]{font-size:15px;margin:8px 0 0;color:var(--muted)}
.pq-ytd1 td[data-label="Still to go"][b-l10room]{text-align:right}
.pq-goalstat[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
.pq-goalpill[b-l10room]{font-weight:700}
.pq-goalpill.is-done[b-l10room]{color:var(--green,#1b7f3b)}
.pq-goalnote[b-l10room]{flex-basis:100%;font-size:14px;color:var(--muted)}
@container (max-width:599px){
  .pq-res1 tbody.pq-tone-written tr.pq-grp th[b-l10room],.pq-res1 tbody.pq-tone-finished tr.pq-grp th[b-l10room]{box-shadow:none;border-left:3px solid currentColor;padding-left:8px}
  .pq-res1 tr.pq-subtotal[b-l10room]{background:var(--surface-2,#f6f7f9)}
}
/* YTD fit (2026-10-18): label column wraps, flags sit under the label; under 760px of table box the 8-column YTD stacks into
   labelled 3-across blocks (Q3 Results keeps its table down to 600px). */
.pq-res1 tbody th[scope="row"][b-l10room]{white-space:normal;min-width:130px}
.pq-res1 .pq-rowflag[b-l10room]{display:block;margin:1px 0 0}
.pq-ytd1 th[b-l10room],.pq-ytd1 td[b-l10room]{padding-left:3px;padding-right:3px}
.pq-ytd1[b-l10room]{font-size:15px}
.pq-ytd1 tbody th[scope="row"][b-l10room]{min-width:120px}
@container (max-width:759px){
  .pq-ytd1 thead[b-l10room]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .pq-ytd1[b-l10room],.pq-ytd1 tbody[b-l10room]{display:block}
  .pq-ytd1 tbody tr[b-l10room]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px 14px;padding:6px 0;border-bottom:1px solid var(--line)}
  .pq-ytd1 tbody tr.pq-grp[b-l10room]{display:block;padding:10px 0 2px}
  .pq-ytd1 tbody tr.pq-grp th[b-l10room]{display:block;border:0;padding:0 0 0 8px}
  .pq-ytd1 tbody th[scope="row"][b-l10room]{grid-column:1/-1;border:0;padding:0}
  .pq-ytd1 tbody td[b-l10room]{border:0;padding:0;text-align:left!important;white-space:normal}
  .pq-ytd1 tbody td[data-label][b-l10room]::before{content:attr(data-label);display:block;font-size:14px;font-weight:700;color:var(--muted)}
}
@container (max-width:479px){ .pq-ytd1 tbody tr[b-l10room]{grid-template-columns:repeat(2,minmax(0,1fr))} }
.pq-teamgrade[b-l10room]{margin:4px 0 10px;font-size:16px}
.pq-rockresult[b-l10room]{font-size:17px;margin:2px 0 8px}
/* Potential Rock compact line 2 (2026-10-18): Suggested by + Merge into… side by side; an open merge preview takes the full width. */
.pr-line2[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:4px 0 0}
.pr-line2 > *[b-l10room]{margin:0!important}
.pr-line2 .pr-merge[b-l10room]{display:contents!important}
.pr-line2 .mg-preview[b-l10room]{flex-basis:100%}
.wtr-goal-list[b-l10room]{display:grid;gap:2px}
.wtr-goal[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:6px 0;border-top:1px solid var(--line)}
.wtr-goal:first-child[b-l10room]{border-top:0}
.wtr-goal-name[b-l10room]{flex:1 1 260px;font-weight:600}
.wtr-goal-meta[b-l10room]{color:var(--muted);font-size:15px}
.wtr-goal-link[b-l10room]{font-size:15px;color:var(--accent);font-weight:600}
.str-target[b-l10room]{margin:2px 0 8px;font-size:16px}.str-target.is-over[b-l10room]{color:#8a5a00}
.str-merge[b-l10room]{margin:6px 0}
.pq-ytd1 thead th[b-l10room]{white-space:normal;vertical-align:bottom;line-height:1.2}
/* DEPARTMENT QUARTERLY — Company → team accountability (2026-10-18, WW #116). Compact read-only rows; stacked on narrow screens. */
.cx-card[b-l10room]{margin-top:14px}
.cx-card > summary[b-l10room]{cursor:pointer}
.cx-hint[b-l10room]{font-size:15px;color:var(--muted);margin:4px 0 8px}
.cx-sub[b-l10room]{font-size:15px;font-weight:800;margin:12px 0 4px}
.cx-wrap[b-l10room]{container-type:inline-size;max-width:100%}
.cx-tab[b-l10room]{border-collapse:collapse;width:100%;font-size:16px}
.cx-tab th[b-l10room],.cx-tab td[b-l10room]{padding:5px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.cx-tab thead th[b-l10room]{font-size:14px;color:var(--muted);font-weight:800}
.cx-tab tbody th[b-l10room]{font-weight:600}
.cx-tab td span[b-l10room]{display:block}
.cx-muted[b-l10room]{color:var(--muted)}
@container (max-width:640px){
  .cx-tab thead[b-l10room]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .cx-tab[b-l10room],.cx-tab tbody[b-l10room]{display:block}
  .cx-tab tbody tr[b-l10room]{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px;padding:6px 0;border-bottom:1px solid var(--line)}
  .cx-tab tbody th[b-l10room]{grid-column:1/-1;border:0;padding:0}
  .cx-tab tbody td[b-l10room]{border:0;padding:0}
  .cx-tab tbody td[data-label][b-l10room]::before{content:attr(data-label);display:block;font-size:14px;font-weight:700;color:var(--muted)}
}
.cx-measure[b-l10room]{display:block;font-size:14px;font-weight:500;color:var(--muted)}
.cx-fin[b-l10room]{margin-top:8px}
.cx-fin > summary[b-l10room]{cursor:pointer;font-weight:700;color:var(--muted)}
/* Compact roadmap (2026-10-18, WW #116) */
.wtr-rm-item[b-l10room]{padding:4px 0;border-top:1px solid var(--line)}
.wtr-rm-item > summary.wtr-rm-sum[b-l10room]{cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px 0;list-style-position:inside}
.wtr-rm-item > summary .wtr-rm-title[b-l10room]{font-weight:600;flex:1 1 240px}
.wtr-rm-item[open] > summary[b-l10room]{margin-bottom:6px}
.pq-ytd1 td[data-pq-remaining][b-l10room]{white-space:normal}.pq-ytd1 td[data-pq-remaining] span[b-l10room]{white-space:normal}

/* GARRET'S Q4 FORECAST (2026-10-18) — collapsed, compact, readable type */
.q4fc[b-l10room]{margin:8px 0;border:1px solid var(--line);border-radius:10px;padding:6px 10px}
.q4fc > summary[b-l10room],.q4fc-grp > summary[b-l10room],.q4fc-line > summary[b-l10room]{cursor:pointer;font-weight:700}
.q4fc-draft[b-l10room]{display:inline-block;margin-left:6px;font-size:13px;font-weight:700;color:#8a5a00;background:rgba(212,160,23,.12);border-radius:6px;padding:1px 6px}
.q4fc-src[b-l10room]{font-size:15px;color:var(--muted);margin:6px 0}
.q4fc-grp[b-l10room]{margin:6px 0 2px;border-top:1px solid var(--line);padding-top:4px}
.q4fc-wrap[b-l10room]{container-type:inline-size;max-width:100%}
.q4fc-tab[b-l10room]{border-collapse:collapse;width:100%;font-size:15px}
.q4fc-tab th[b-l10room],.q4fc-tab td[b-l10room]{padding:4px 6px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
.q4fc-tab th[scope="row"][b-l10room],.q4fc-tab thead th:first-child[b-l10room]{text-align:left}
.q4fc-tab thead th[b-l10room]{font-size:14px;color:var(--muted);white-space:normal}
.q4fc-excl th[b-l10room],.q4fc-excl td[b-l10room]{color:var(--muted)}
.q4fc-flag[b-l10room]{display:block;font-size:13px;font-weight:700;color:#8a5a00}
.q4fc-note[b-l10room],.q4fc-cmt[b-l10room]{font-size:15px;margin:4px 0}
.q4fc-cmt[b-l10room]{color:var(--muted)}
.q4fc-sch[b-l10room]{font-size:15px;margin:6px 0}
.q4fc-sch ul[b-l10room]{margin:4px 0 0 18px}
.q4fc-line[b-l10room]{margin:6px 0 2px;font-size:15px}
.q4fc-line-body[b-l10room]{margin:4px 0}
@container (max-width:640px){
  .q4fc-tab thead[b-l10room]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .q4fc-tab[b-l10room],.q4fc-tab tbody[b-l10room]{display:block}
  .q4fc-tab tbody tr[b-l10room]{display:grid;grid-template-columns:1fr 1fr;gap:2px 10px;padding:6px 0;border-bottom:1px solid var(--line)}
  .q4fc-tab tbody th[b-l10room]{grid-column:1/-1;border:0;padding:0;text-align:left}
  .q4fc-tab tbody td[b-l10room]{border:0;padding:0;text-align:left;white-space:normal}
  .q4fc-tab tbody td[data-label][b-l10room]::before{content:attr(data-label);display:block;font-size:13px;font-weight:700;color:var(--muted)}
}
.q4fc-tab td[b-l10room]{white-space:normal}.q4fc-tab td[data-q4fc-value][b-l10room],.q4fc-tab td[data-label="Approved Q4"][b-l10room],.q4fc-tab td[data-label="Proposed Q4"][b-l10room]{white-space:nowrap}

/* DEPARTMENT QUARTERLY (WW #116 final) — compact work rows, connected highlight, roadmap source notes. */
.cx-tab tr.cx-hl > th[b-l10room], .cx-tab tr.cx-hl > td[b-l10room]{background:var(--accent-soft, rgba(37,99,235,.08))}
.cx-conn[b-l10room]{background:var(--accent-soft, rgba(37,99,235,.12));color:var(--accent-ink, var(--accent))}
.cx-work[b-l10room]{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:8px 0;background:var(--card, transparent)}
.cx-work-head[b-l10room]{font-size:16px;line-height:1.35;overflow-wrap:anywhere}
.cx-meta[b-l10room]{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:15px;color:var(--muted);margin-top:4px}
.cx-meta b[b-l10room]{color:var(--ink, inherit)}
.cx-dod[b-l10room]{font-size:15px;margin-top:4px}
.cx-flag[b-l10room]{color:var(--warn-ink, #8a5a00);font-weight:600}
.cx-decide[b-l10room]{border-style:dashed}
.cx-person[b-l10room]{margin:10px 0 4px}
.cx-person-name[b-l10room]{font-weight:700;font-size:16px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.cx-ms[b-l10room]{list-style:none;margin:6px 0 0;padding:0;font-size:15px}
.cx-ms li[b-l10room]{margin:2px 0}
.cx-split-row[b-l10room]{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 2fr;gap:6px;margin:6px 0}
.cx-pct[b-l10room]{max-width:110px}
.cx-src[b-l10room]{font-size:15px;margin:4px 0 6px;overflow-wrap:anywhere}
.cx-contrib[b-l10room]{margin-top:4px}
.linkbtn[b-l10room]{background:none;border:0;padding:0 2px;cursor:pointer;color:inherit;font:inherit}
.sr-only[b-l10room]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media (max-width: 720px){
  .cx-split-row[b-l10room]{grid-template-columns:1fr}
  .cx-meta[b-l10room]{gap:2px 10px}
  .cx-pct[b-l10room]{max-width:none}
}
/* WW #116: the room's capture "+" on Rock rows — a narrow right-hand column / the row head's right edge. */
.cx-pluscol[b-l10room]{width:40px;text-align:right;white-space:nowrap;}
.cx-work-head[b-l10room]{position:relative;padding-right:38px;}
.cx-work-head .cx-plus[b-l10room]{position:absolute;right:0;top:0;}
/* WW #116 roadmap: an item that became a finalized Rock (from the Rock record) — subtle green edge + a small "Q4 Rock" label. */
.wtr-rm-final[b-l10room]{border-left:4px solid var(--green, #2e7d32);background:color-mix(in srgb, var(--green, #2e7d32) 6%, transparent);}
.cx-q4[b-l10room]{background:color-mix(in srgb, var(--green, #2e7d32) 16%, transparent);color:var(--green, #2e7d32);font-weight:700;}
/* WORK THE ROCKS CARDS = THE SET THE ROCKS / ROCK REVIEW CARD (WW #116, Leon 2026-10-19): rv-card edge + title band; compact body. */
.cx-work.rv-card[b-l10room]{padding:0;margin:10px 0;background:var(--surface);border:1px solid var(--line);border-left:6px solid var(--rc-edge)}
.cx-work .rc-card__kind[b-l10room]{order:-2}.cx-work .cx-life[b-l10room]{order:-1}
.cx-work .cx-work-head.rv-head[b-l10room]{padding:6px 46px 6px 12px;gap:4px 10px}
.cx-work .cx-work-head .cx-plus[b-l10room]{right:8px;top:5px}
.cx-rock-title[b-l10room]{flex:1 1 240px;min-width:0;font-size:16.5px;font-weight:800;line-height:1.3;color:var(--ink);overflow-wrap:anywhere}
.cx-life[b-l10room]{flex:none;font-size:12.5px;font-weight:800;border-radius:999px;padding:1px 8px;background:var(--green-bg);color:var(--green);border:1px solid var(--green)}
.cx-how[b-l10room]{flex-basis:100%;font-size:14px;font-weight:700;color:var(--rc-ink)}
.cx-rock-body[b-l10room]{padding:6px 12px 8px}
.cx-rock-body .cx-meta[b-l10room]{margin-top:0}
.cx-rock-body .wtr-actions[b-l10room]{margin-top:6px}
.row.cx-pot[b-l10room]{border-left:6px solid var(--muted);border-radius:10px;padding-left:8px}
.cx-pot-chip[b-l10room]{display:inline-block;font-size:12.5px;font-weight:800;border-radius:999px;padding:1px 8px;margin-bottom:4px;color:var(--muted);border:1px solid var(--muted);background:var(--surface)}
@media (max-width:640px){.cx-work .rv-where[b-l10room]{margin-left:0}.cx-rock-title[b-l10room]{flex-basis:100%}}
/* Q3 OUTCOMES (WW #116, Leon 2026-10-19): symbol + word before the title; subtle row tint; Unknown stays neutral. */
.cx-tab tr.cx-oc-done>*[b-l10room],.cx-tab tr.cx-oc-done.cx-hl>*[b-l10room]{background:color-mix(in srgb,var(--green) 9%,transparent)}
.cx-tab tr.cx-oc-part>*[b-l10room],.cx-tab tr.cx-oc-part.cx-hl>*[b-l10room]{background:color-mix(in srgb,#d4a017 13%,transparent)}
.cx-tab tr.cx-oc-not>*[b-l10room],.cx-tab tr.cx-oc-not.cx-hl>*[b-l10room]{background:color-mix(in srgb,#d0506a 10%,transparent)}
.cx-oc-mark[b-l10room]{display:inline-flex;align-items:center;gap:4px;margin-right:6px;font-size:13px;font-weight:800;white-space:nowrap;vertical-align:1px}
.cx-oc-sym[b-l10room]{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;font-size:13px;line-height:1;color:#fff;background:#8a96a3}
.cx-oc-done .cx-oc-sym[b-l10room]{background:var(--green)}.cx-oc-done .cx-oc-word[b-l10room]{color:var(--green)}
.cx-oc-part .cx-oc-sym[b-l10room]{background:#c99300}.cx-oc-part .cx-oc-word[b-l10room]{color:#8a6500}
.cx-oc-not .cx-oc-sym[b-l10room]{background:#d0506a}.cx-oc-not .cx-oc-word[b-l10room]{color:#a8324c}
.cx-oc-unk .cx-oc-word[b-l10room]{color:var(--muted)}
.cx-oc-sum[b-l10room]{font-size:15px;font-weight:700;margin:2px 0 6px}
.cx-oc-sumi.cx-oc-done[b-l10room]{color:var(--green)}.cx-oc-sumi.cx-oc-part[b-l10room]{color:#8a6500}.cx-oc-sumi.cx-oc-not[b-l10room]{color:#a8324c}
.cx-q4link[b-l10room]{font-weight:700;color:var(--accent);text-decoration:none}.cx-q4link:hover[b-l10room]{text-decoration:underline}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .cx-oc-part .cx-oc-word[b-l10room],:root:not([data-theme="light"]) .cx-oc-sumi.cx-oc-part[b-l10room]{color:#f2c94c}:root:not([data-theme="light"]) .cx-oc-not .cx-oc-word[b-l10room],:root:not([data-theme="light"]) .cx-oc-sumi.cx-oc-not[b-l10room]{color:#f08ba0}}
/* Company Rock groups (WW #116): one small heading row per group, display only. */
.cx-tab tr.cx-grp-row>th[b-l10room]{background:transparent;padding:10px 6px 4px;font-size:14px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line)}
/* Leadership commitments by accountable owner (WW #116). */
.cx-owner-grp[b-l10room]{margin-top:10px}.cx-owner-head[b-l10room]{font-size:16px;font-weight:800;margin:6px 0 2px;display:flex;align-items:center;gap:8px}
/* Drag to reorder team-owned Rocks (order only). */
.cx-dragrow[b-l10room]{display:flex;gap:6px;align-items:stretch}.cx-dragbody[b-l10room]{flex:1;min-width:0}
.cx-handle[b-l10room]{cursor:grab;user-select:none;padding:14px 4px 0;color:var(--muted,#667);font-size:18px;line-height:1}
.cx-dragrow.dragging[b-l10room]{opacity:.5}
/* Plan Q4 Rocks (WW #116): Make a To-Do(s), merge preview, unfinished previous-quarter decisions, converted Rocks. */
.pl-form[b-l10room]{margin-top:10px}.pl-mtrow[b-l10room]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,12em) 10em auto;gap:6px;align-items:center;margin:6px 0}
.pl-confirm[b-l10room]{display:flex;gap:8px;align-items:flex-start;margin:8px 0;font-weight:600}.pl-err[b-l10room]{color:var(--bad,#b42318);font-weight:700;margin:6px 0}
.pl-mg-pair[b-l10room]{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}.pl-mg-side[b-l10room]{border:1px solid var(--line,#d0d5dd);border-radius:10px;padding:10px}
.pl-mg-side.is-keep[b-l10room]{border:2px solid var(--accent,#1d6f8a)}.pl-mg-side.is-away[b-l10room]{opacity:.9}.pl-mg-facts[b-l10room],.pl-mg-what[b-l10room]{margin:6px 0 0 18px;padding:0}
.pl-merged[b-l10room]{border-top:1px dashed var(--line,#d0d5dd);margin-top:10px;padding-top:8px}
.pl-prev[b-l10room]{border-left:6px solid var(--line,#d0d5dd);padding:8px 10px;margin:8px 0;border-radius:8px;background:var(--card2,transparent)}
.pl-prev-head[b-l10room]{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.pl-prev-state[b-l10room]{margin-top:6px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pl-warn[b-l10room]{background:#fef0c7;color:#7a2e0e}.pl-conv[b-l10room]{border-top:1px solid var(--line,#d0d5dd);padding:10px 0}.pl-view summary[b-l10room]{cursor:pointer;font-weight:600}
@media (max-width:640px){.pl-mtrow[b-l10room]{grid-template-columns:1fr}.pl-mg-pair[b-l10room]{grid-template-columns:1fr}}
.cx-fin-fold>summary[b-l10room]{cursor:pointer;display:list-item;list-style:revert}
/* COMPACT Q4 TABLE + Set the Rocks folds (PAG #3, Leon 2026-10-20) */
.q4t[b-l10room]{font-size:15px}
.q4t td[b-l10room],.q4t th[b-l10room]{padding:3px 4px}
.q4t tbody th[scope="row"][b-l10room]{padding-left:10px}
.q4t .q4t-prop[b-l10room]{min-width:0}
.q4t thead th[b-l10room]{white-space:normal;vertical-align:bottom}
.q4t .q4t-sub[b-l10room]{display:block;font-size:13px;font-weight:500;color:var(--muted)}
[data-q4-targets][b-l10room]{min-width:0;max-width:100%}
.q4t .q4t-in[b-l10room]{width:108px;height:32px;min-height:0;padding:2px 6px;text-align:right;font-size:15px}
.q4t .q4t-diff[b-l10room]{display:block;font-size:13px;color:var(--muted);white-space:nowrap}
.q4t .q4t-diff.q4c-ok[b-l10room]{color:#1b7a3d}.q4t .q4t-diff.q4c-short[b-l10room]{color:#b4441c}
.q4t .q4t-act[b-l10room]{white-space:nowrap;text-align:right}
.q4t .q4t-act .btn[b-l10room]{padding:2px 8px;min-height:0;height:30px}
.q4t .q4t-pill[b-l10room]{margin-left:6px;font-size:12px}
.q4t tr.q4t-detail td[b-l10room]{background:var(--panel,#f6f8fa);font-size:14px;padding:6px 10px}
.q4t .q4t-facts[b-l10room]{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:center}
.str-finfold>summary[b-l10room]{cursor:pointer;display:list-item;list-style:revert}
.vto-plan[b-l10room]{margin-bottom:12px;padding:10px 14px}
.vto-plan-t td[b-l10room],.vto-plan-t th[b-l10room]{padding:3px 8px}
.vto-plan-t td b[b-l10room]{display:block}
.vto-plan-t .vto-plan-ytd[b-l10room]{display:block;font-size:13px;color:var(--muted);font-weight:500}
.vto-goals[b-l10room]{margin-top:8px}
.vto-goals-h[b-l10room]{font-size:15px;font-weight:800;margin:4px 0}
.vto-goal[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:3px 0;border-bottom:1px solid var(--line)}
.vto-goal-n[b-l10room]{flex:1 1 260px;font-weight:600}
.vto-goal.is-done .vto-goal-n[b-l10room]{color:var(--muted)}
.vto-goal .btn[b-l10room]{height:30px;min-height:0;padding:2px 10px}
.vto-goal-link[b-l10room]{font-size:14px;color:var(--muted)}
.routed-prev[b-l10room]{margin-top:10px}
.routed-prev>summary[b-l10room]{cursor:pointer;display:list-item;list-style:revert;margin:0}
.q4t .q4t-qs span[b-l10room]{display:block;font-size:13px;line-height:1.25}
.q4t .q4t-gm[b-l10room]{display:flex;gap:4px;align-items:center;justify-content:flex-end;margin-top:3px}
.q4t .q4t-gmin[b-l10room]{width:64px;height:28px;min-height:0;padding:2px 4px;text-align:right;font-size:14px}
.q4t .q4t-gm .q4t-sub[b-l10room]{display:inline}
.q4t .q4t-sub.q4c-short[b-l10room]{color:#b4441c}.q4t .q4t-sub.q4c-ok[b-l10room]{color:#1b7a3d}
[data-q4-targets] .str-q4more[b-l10room]{margin-top:10px}
[data-q4-targets] .str-q4more>summary[b-l10room]{cursor:pointer;display:list-item;list-style:revert}
.q4t .q4t-sub[b-l10room]{white-space:normal}
.q4t td.q4t-prop[b-l10room]{white-space:normal;width:120px}
.q4t .q4t-gm[b-l10room]{flex-wrap:wrap;justify-content:flex-end}
.q4t .q4t-gm .q4t-sub[b-l10room]{display:block;width:100%;text-align:right}
.q4t thead th[b-l10room]{font-size:13px}
.q4t[b-l10room]{font-size:14px}
.q4t td[b-l10room],.q4t th[b-l10room]{padding:3px 3px}
.q4t .q4t-in[b-l10room]{width:96px;font-size:14px}
.q4t td.q4t-prop[b-l10room]{width:104px}
.q4t .q4t-act .btn[b-l10room]{padding:2px 6px}

/* R34 reporting order (RockReviewParts shares this scope) */
.rv-porder[b-l10room] { margin: 4px 0 10px; }
.rv-porder__panel[b-l10room] { margin-top: 6px; padding: 6px 10px 8px; border: 1px solid var(--line, #d4d4d8); border-radius: 10px; background: var(--card, #fff); max-width: 420px; }
.rv-porder__list[b-l10room] { margin: 0 0 8px; padding-left: 1.6em; }
.rv-porder__list li[b-l10room] { display: flex; align-items: center; gap: 8px; min-height: 38px; border-top: 1px solid var(--line); }
.rv-porder__list li:first-child[b-l10room] { border-top: 0; }
.rv-porder__list li.dragging[b-l10room] { opacity: .4; }
.rv-porder__name[b-l10room] { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.rv-porder__list .rv-mini[b-l10room] { min-width: 40px; min-height: 36px; }
.rv-porder__actions[b-l10room] { display: flex; flex-wrap: wrap; gap: 8px; }

/* R39 Leadership weekly To-Do list: per person a compact header, one-line Leadership Rocks, then the To-Dos as before. */
.ltr-person[b-l10room] { padding: 4px 0 10px; border-bottom: 1px solid var(--line); }
.ltr-person:last-child[b-l10room] { border-bottom: 0; }
.ltr-head[b-l10room] { display: flex; align-items: center; gap: 10px; margin: 10px 0 6px; padding: 6px 10px; border-radius: 8px; background: var(--accent-soft, #e6f2f4); border-left: 4px solid var(--accent); }
.ltr-name[b-l10room] { font-weight: 800; font-size: 17px; letter-spacing: .02em; text-transform: uppercase; color: var(--accent-ink, var(--ink)); flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.ltr-count[b-l10room] { font-size: 14px; color: var(--muted); white-space: nowrap; }
.ltr-head .capmini[b-l10room] { margin-left: 0; }
.ltr-rocks[b-l10room] { list-style: none; margin: 0 0 6px; padding: 0; }
.ltr-rock[b-l10room] { margin: 0 0 4px; border: 1px solid var(--line); border-left: 4px solid var(--rc-edge, #7c3aed); border-radius: 8px; background: var(--card, #fff); }
.ltr-rock.ltr-fin[b-l10room] { border-left-color: #15803d; }
.ltr-line[b-l10room] { display: flex; align-items: center; gap: 8px; padding: 2px 8px 2px 6px; min-height: 40px; contain: inline-size; }
.ltr-toggle[b-l10room] { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 6px; background: none; border: 0; padding: 4px; margin: 0; font: inherit; color: inherit; text-align: left; cursor: pointer; border-radius: 6px; }
.ltr-toggle:focus-visible[b-l10room] { outline: 2px solid var(--accent); outline-offset: 1px; }
.ltr-caret[b-l10room] { flex: none; color: var(--muted); font-size: 14px; width: 14px; }
.ltr-title[b-l10room] { flex: 1 1 auto; min-width: 0; font-size: 17px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ltr-due[b-l10room] { flex: none; font-size: 15px; white-space: nowrap; }
.ltr-due b[b-l10room] { font-weight: 800; }
.ltr-line .capmini[b-l10room] { flex: none; margin-left: 0; }
.ltr-details[b-l10room] { padding: 2px 12px 8px 30px; font-size: 15px; }
.ltr-meta[b-l10room] { display: flex; flex-wrap: wrap; gap: 2px 14px; color: var(--muted); }
.ltr-meta b[b-l10room] { color: var(--ink); }
@media (max-width: 640px) { .ltr-due[b-l10room] { font-size: 14px; } .ltr-details[b-l10room] { padding-left: 12px; } }
/* R39 Rock Review ordering: a subtle grip on Leadership person heads and Rock cards; the open card's Move up/down is the
   touch and keyboard path. The cards themselves are unchanged. */
.rv-grip[b-l10room] { font-size: 16px; padding: 0 2px; opacity: .55; cursor: grab; }
.rv-grip:hover[b-l10room], .rv-grip:active[b-l10room] { opacity: 1; }
.rv-owner-head--ord[b-l10room] { display: flex; align-items: center; gap: 6px; }
.rv-ord.dragging[b-l10room], .rv-owner-head.dragging[b-l10room] { opacity: .4; }
.rv-move[b-l10room] { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.rv-move .btn[b-l10room] { min-height: 36px; }
/* R36 TEAM ROCKS — compact collapsed bars, Leadership weekly only */
.trr-bar[b-l10room]{border:1px solid var(--line);border-radius:10px;margin:6px 0;background:var(--surface)}
.trr-sum[b-l10room]{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:9px 12px 9px 30px;cursor:pointer;list-style:none;font-size:16px}
.trr-sum[b-l10room]::-webkit-details-marker{display:none}
.trr-sum[b-l10room]::before{content:"▸";position:absolute;left:12px;top:11px;color:var(--muted);font-size:14px}
.trr-bar[open]>.trr-sum[b-l10room]::before{content:"▾"}
.trr-sum:focus-visible[b-l10room]{outline:3px solid var(--accent);outline-offset:2px;border-radius:10px}
.trr-name[b-l10room]{font-weight:800}
.trr-routed[b-l10room]{font-size:14px;color:var(--muted)}
.trr-summary[b-l10room]{font-size:15px;color:var(--muted);margin-left:auto}
.trr-body[b-l10room]{padding:0 12px 10px;border-top:1px solid var(--line)}
.trr-row[b-l10room]{padding:8px 0;border-bottom:1px solid var(--line)}
.trr-row:last-of-type[b-l10room]{border-bottom:0}
.trr-title[b-l10room]{font-weight:700;font-size:16px;overflow-wrap:anywhere}
.trr-meta[b-l10room]{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:15px;margin-top:2px}
.trr-st[b-l10room]{font-weight:800;border-radius:999px;padding:1px 9px;font-size:14px;background:var(--line);color:var(--muted)}
.trr-st--OnTrack[b-l10room]{background:var(--green-bg);color:var(--green)}
.trr-st--Done[b-l10room]{background:var(--green-bg);color:var(--green)}
.trr-st--AtRisk[b-l10room]{background:var(--amber-bg);color:var(--amber)}
.trr-st--OffTrack[b-l10room]{background:var(--red-bg);color:var(--red)}
.trr-date[b-l10room]{color:var(--muted)}
.trr-stale[b-l10room]{font-style:italic}
.trr-rel[b-l10room]{color:var(--muted)}
.trr-room[b-l10room]{display:inline-block;margin-top:8px;font-weight:700;color:var(--accent);text-decoration:none;font-size:15px}
.trr-room:hover[b-l10room]{text-decoration:underline}
@media (max-width:600px){.trr-summary[b-l10room]{margin-left:0;flex-basis:100%}}
/* /Components/Pages/RockPlaybookPage.razor.rz.scp.css */
/* Rock Playbook — scoped to the page's OWN chrome only: the tabs, the "what you are deciding" guide, the notice and
   the rules. The examples are the production Rock Review and Scorecard, styled by their own stylesheets
   (L10Room.razor.css through RockReviewParts' shared scope, ScorecardGrid, PeriodHistory) — nothing here restyles them.
   Tokens only (app.css), so light and dark both work. */
.rp-h1[b-uuv5zeix4s]{font-size:clamp(24px,3vw,32px);font-weight:800;margin:8px 0 4px}

.rp-tabs[b-uuv5zeix4s]{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 12px}
.rp-tab[b-uuv5zeix4s]{display:inline-flex;align-items:center;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;
        padding:8px 16px;font-weight:700;font-size:15px;text-decoration:none}
.rp-tab:hover[b-uuv5zeix4s]{border-color:var(--accent)}
.rp-tab.on[b-uuv5zeix4s]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.rp-tab:focus-visible[b-uuv5zeix4s]{outline:2px solid var(--accent);outline-offset:2px}

.rp-guide[b-uuv5zeix4s]{margin:0 0 14px}
.rp-guide__h[b-uuv5zeix4s]{font-size:18px;font-weight:800;margin:0 0 4px}
.rp-guide__intro[b-uuv5zeix4s]{margin:0 0 10px;color:var(--muted);line-height:1.5}
.rp-decide[b-uuv5zeix4s]{margin:0;padding-left:22px;display:grid;gap:8px}
.rp-decide li[b-uuv5zeix4s]{line-height:1.5}
.rp-decide b[b-uuv5zeix4s]{display:block}

.rp-example[b-uuv5zeix4s]{scroll-margin-top:12px}
.rp-meta[b-uuv5zeix4s]{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:4px 0 8px}
.rp-notice[b-uuv5zeix4s]{display:flex;align-items:flex-start;gap:10px;margin:0 0 10px;padding:10px 12px;border:1px solid var(--line);border-left:5px solid var(--accent);
           border-radius:10px;background:var(--accent-soft);line-height:1.45}
.rp-notice span[b-uuv5zeix4s]{flex:1}
.rp-notice__x[b-uuv5zeix4s]{flex:none;background:none;border:0;font-size:20px;line-height:1;color:var(--muted);cursor:pointer;padding:0 4px}

.rp-teach[b-uuv5zeix4s]{margin-top:34px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
@media (max-width:420px){.rp-teach[b-uuv5zeix4s]{grid-template-columns:1fr}}
.rp-teach__h[b-uuv5zeix4s]{grid-column:1/-1;font-size:18px;font-weight:800;margin:0}
.rp-teach__item p[b-uuv5zeix4s]{margin:0;color:var(--ink);line-height:1.5}
.rp-teach__item--target[b-uuv5zeix4s]{outline:2px solid var(--accent);outline-offset:2px}
.rp-anchor[b-uuv5zeix4s]{color:var(--muted);text-decoration:none;font-weight:400}
.rp-anchor:hover[b-uuv5zeix4s]{color:var(--accent)}
.rp-foot[b-uuv5zeix4s]{grid-column:1/-1;margin:6px 0 0;font-size:13.5px}

/* THE EXAMPLES AT THE MEETING ROOM'S SCALE. Every shell page sits in .content{zoom:1.15} (MainLayout.razor.css); the meeting room
   draws its own layout at .app{zoom:1.12} (L10Room.razor.css). The examples ARE the room's Rock Review and Scorecard,
   so the frame scales them back by 1.12 / 1.15 — the cards then render at exactly the size, border weight and
   wrapping they have in a meeting. If either zoom changes, change this ratio with it. */
.rp-example[b-uuv5zeix4s]  .rr-frame{zoom:calc(1.12 / 1.15)}
/* /Components/Shared/DiscCue.razor.rz.scp.css */
/* Right-hand end of whatever control holds it (the control is a flex row; margin-left:auto pushes the cue to its end). */
.disc-cue[b-y6qnqp9bxz] {
    margin-left: auto;
    padding-left: 12px;
    flex: none;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
    color: var(--accent);
    white-space: nowrap;
}
/* /Components/Shared/FinancialRocksCard.razor.rz.scp.css */

/* Override layer: an overridden actual is visually distinct; the note shows the sheet value + revert. */
.finin.finov[b-u6qqmj8vno]{background:color-mix(in srgb,var(--accent) 14%,transparent);border-color:var(--accent);font-weight:700;}
.finin.finro[b-u6qqmj8vno]{display:inline-block;min-width:70px;text-align:right;}
.finovnote[b-u6qqmj8vno]{grid-column:1 / -1;font-size:11px;color:var(--muted);margin:1px 0 3px 8px;display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
/* --ink, not --text: --text is defined nowhere, so this declaration was invalid at
   computed-value time and `color` (inherited) fell back to inherit — i.e. .finovnote's own
   --muted. The bold that marks the overridden sheet value has never been darker than the
   note around it. */
.finovnote b[b-u6qqmj8vno]{color:var(--ink);}
.finrevert[b-u6qqmj8vno]{font-size:10.5px;font-weight:700;color:var(--accent);background:none;border:1px solid var(--accent);border-radius:6px;padding:0 6px;cursor:pointer;}

/* Drilldown: an actual that has contributors is a button that looks like the figure. */
[b-u6qqmj8vno] .finlin { font: inherit; background: none; border: none; padding: 0; cursor: pointer; text-decoration: underline dotted var(--muted); text-underline-offset: 3px; }
/* A button carries no intrinsic shrink: as a flex item beside its slash it must be allowed to
   wrap and to keep its own width, or two department figures print over each other. */
[b-u6qqmj8vno] .fincell { flex-wrap: wrap; }
[b-u6qqmj8vno] .fincell .finin.finlin { flex: 0 1 auto; min-width: 0; width: auto; white-space: nowrap; font-family: var(--mono); font-size: 14px; font-weight: 800; }
[b-u6qqmj8vno] .finlin:hover, [b-u6qqmj8vno] .finlin:focus-visible { color: var(--accent); outline: none; }
[b-u6qqmj8vno] .finlinrow { grid-column: 1 / -1; }
.findisc[b-u6qqmj8vno]{color:var(--amber);}
.findisc b[b-u6qqmj8vno]{color:var(--amber);}
.finderived[b-u6qqmj8vno]{font-style:italic;}
.findsig[b-u6qqmj8vno]{font-size:10px;opacity:.7;margin-left:2px;}

/* R23: Sales / GM status pickers on one row (separate Rocks). */
.finstlbl[b-u6qqmj8vno] { font-size: 12px; font-weight: 700; color: var(--muted, #667); margin: 0 3px 0 6px; }
/* /Components/Shared/LunchBreaks.razor.rz.scp.css */
/* Lunch & Breaks — app.css tokens only (light + dark already defined there). */
.lb[b-u0obajpivz] { margin: 16px 0; padding: 14px 16px 12px; border: 1px solid var(--line); border-left: 4px solid var(--accent); border-radius: 12px; background: var(--surface); }
.lb-h[b-u0obajpivz] { margin: 0; font-size: 18px; font-weight: 800; letter-spacing: -.01em; }
.lb-copy[b-u0obajpivz] { margin: 2px 0 12px; color: var(--muted); font-size: 15.5px; }
.lb-empty[b-u0obajpivz] { margin: 0 0 10px; color: var(--muted); font-style: italic; }
.lb-row[b-u0obajpivz] { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; padding: 8px 0; border-top: 1px solid var(--line); }
.lb-row:first-of-type[b-u0obajpivz] { border-top: 0; }
.lb-draft[b-u0obajpivz] { background: var(--surface2); border-radius: 10px; padding: 8px 10px; border-top: 0; margin-top: 4px; }
.lb-name[b-u0obajpivz] { font: inherit; font-size: 16.5px; font-weight: 700; color: var(--ink); background: var(--surface); border: 1px solid var(--line); border-radius: 8px; padding: 7px 10px; width: 12em; max-width: 100%; }
.lb-f[b-u0obajpivz] { display: inline-flex; align-items: center; gap: 8px; margin: 0; }
.lb-l[b-u0obajpivz] { font-size: 15px; font-weight: 600; color: var(--muted); }
.lb-f input[b-u0obajpivz] { font: inherit; font-size: 16.5px; color: var(--ink); background: var(--surface); border: 1px solid var(--line); border-radius: 8px; padding: 7px 10px; }
.lb-min[b-u0obajpivz] { width: 4.2em; text-align: right; font-variant-numeric: tabular-nums; }
.lb-unit[b-u0obajpivz] { color: var(--muted); }
.lb-ends[b-u0obajpivz] { white-space: nowrap; font-variant-numeric: tabular-nums; }
.lb-ends b[b-u0obajpivz] { font-size: 16.5px; }
.lb-link[b-u0obajpivz] { font: inherit; font-size: 15px; font-weight: 700; color: var(--accent); background: none; border: 0; padding: 6px 0; cursor: pointer; text-decoration: underline; margin-left: auto; }
.lb-hint[b-u0obajpivz] { flex-basis: 100%; margin: 0; font-size: 14.5px; color: var(--muted); }
.lb-actions[b-u0obajpivz] { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; }
.lb-add[b-u0obajpivz] { font: inherit; font-size: 16px; font-weight: 700; color: var(--accent); background: var(--surface); border: 1.5px dashed var(--accent); border-radius: 10px; padding: 8px 16px; cursor: pointer; }
.lb-add:hover[b-u0obajpivz] { background: var(--accent-soft); }
input:disabled[b-u0obajpivz] { opacity: .6; }
/* /Components/Shared/NeedsAttention.razor.rz.scp.css */
/* Pale red from the existing --red / --red-bg tokens (light and dark both defined in app.css). Subtle by
   design: one tinted panel with plain-language statuses, not a wall of alarm colour. */
.attn[b-8qgslnuyej] { margin: 18px 0 22px; padding: 14px 16px; border: 1px solid var(--red); border-left: 4px solid var(--red);
        border-radius: 12px; background: var(--red-bg); }
.attn-h[b-8qgslnuyej] { margin: 0 0 8px; font-size: 18px; font-weight: 800; color: var(--ink); }
.attn-h .cnt[b-8qgslnuyej] { font-size: 14px; font-weight: 700; color: var(--red); margin-left: 4px; }
.attn-cat + .attn-cat[b-8qgslnuyej] { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line); }
.attn-cat-h[b-8qgslnuyej] { font-size: 13.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); margin-bottom: 4px; }
.attn-item[b-8qgslnuyej] { display: flex; flex-wrap: wrap; gap: 2px 10px; align-items: baseline; padding: 6px 0;
             color: var(--ink); text-decoration: none; }
.attn-item:hover .attn-title[b-8qgslnuyej] { text-decoration: underline; }
.attn-title[b-8qgslnuyej] { font-weight: 700; font-size: 15.5px; }
.attn-status[b-8qgslnuyej] { font-weight: 700; font-size: 14px; color: var(--red); }
.attn-detail[b-8qgslnuyej] { flex-basis: 100%; font-size: 13px; color: var(--muted); }
.attn-more[b-8qgslnuyej] { display: inline-block; margin-top: 4px; font-size: 14px; font-weight: 600; color: var(--accent); }
/* /Components/Shared/PeriodHistory.razor.rz.scp.css */
/* THE PERIOD HISTORY — one look wherever a line is opened (Rock Review's Financials, the Scorecard section's
   Financials, a metric opened in the room's scorecard). Same type scale as the financial cards; 13px floor. */
.ph[b-oqnrfgca9h]{font-family:var(--font);color:var(--ink)}
.ph-thru[b-oqnrfgca9h]{font-size:14.5px;font-weight:800;margin:6px 0 6px}
.ph-gap[b-oqnrfgca9h]{font-weight:700;color:var(--amber)}
.ph-scroll[b-oqnrfgca9h]{overflow-x:auto;-webkit-overflow-scrolling:touch;width:100%;max-width:100%;contain:inline-size}
.ph-scroll:focus-visible[b-oqnrfgca9h]{outline:3px solid var(--accent);outline-offset:2px}
.ph-t[b-oqnrfgca9h]{border-collapse:collapse;min-width:100%;font-size:14px;font-variant-numeric:tabular-nums;color:var(--ink);background:var(--surface)}
.ph-t th[b-oqnrfgca9h],.ph-t td[b-oqnrfgca9h]{padding:4px 6px;border:1px solid var(--line);text-align:right;white-space:nowrap}
.ph-t thead th[b-oqnrfgca9h]{font-weight:800;vertical-align:bottom}
.ph-p[b-oqnrfgca9h]{display:block;font-size:14px}
.ph-d[b-oqnrfgca9h]{display:block;font-size:13px;font-weight:500;color:var(--muted);white-space:normal}
.ph-d>span[b-oqnrfgca9h]{display:inline-block;white-space:nowrap}
.ph-t .ph-rh[b-oqnrfgca9h]{text-align:left;font-weight:700;white-space:normal;min-width:104px;max-width:130px;position:sticky;left:0;background:var(--surface);z-index:1}
.ph-t td[b-oqnrfgca9h]{font-weight:600;font-size:13.5px}
.ph-t .ph-fut[b-oqnrfgca9h]{color:var(--muted);font-weight:500}
.ph-t .ph-nr[b-oqnrfgca9h]{color:var(--amber);font-weight:700;font-size:13px;white-space:normal}
.ph-t .ph-hi[b-oqnrfgca9h]{background:var(--green-bg)}
.ph-t .ph-lo[b-oqnrfgca9h]{background:var(--amber-bg)}
.ph-t td.ph-cmp[b-oqnrfgca9h]{white-space:normal;line-height:1.3}
.ph-t td.ph-cmp>span[b-oqnrfgca9h]{display:inline-block;white-space:nowrap}
.ph-t .ph-ok[b-oqnrfgca9h]{background:var(--green-bg);color:var(--green);font-weight:700}
.ph-t .ph-bad[b-oqnrfgca9h]{background:var(--red-bg);color:var(--red);font-weight:700}
.ph-t .ph-q[b-oqnrfgca9h]{color:var(--muted)}
.ph-sr[b-oqnrfgca9h]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* /Components/Shared/RockMetricCards.razor.rz.scp.css */
/* The Financial Rock Summary: a thin quarter strip, then four cards.

   Deliberately quiet — this is evidence for a conversation about the rock, not the headline of the
   page, and it must stay visually subordinate to the rock row above it, which carries the owner's
   declaration. */
.rmc[b-i0ddrsh9wu] {
    margin: 6px 0 10px 14px;
}

/* ── THE QUARTER STRIP ──────────────────────────────────────────────────────────────────────────
   One line, full width of the summary. It was a card, which spent a quarter of the width restating
   the same contextual number under every financial rock in the room — 76.9% is a fact about the
   calendar, not about this rock. As a strip it still leads (every "% of goal" below is only readable
   against it) and it returns a whole column to the rock's own figures. */
.rmcq[b-i0ddrsh9wu] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0 7px;
    padding: 1px 2px 5px;
    font-size: 11.5px;
    color: var(--muted);
    font-variant-numeric: tabular-nums;
}

/* Prominent enough to scan down a page of rocks, but smaller than any card's headline figure: it is
   context for them, not competition with them. */
.rmcqpct[b-i0ddrsh9wu] { font-size: 15px; font-weight: 800; color: var(--ink); }
.rmcqlab[b-i0ddrsh9wu] { font-weight: 600; }
.rmcqsep[b-i0ddrsh9wu] { opacity: .5; }
.rmcqfact[b-i0ddrsh9wu] { white-space: nowrap; }

/* The bar takes the rest of the line rather than a fixed width, so it reads as a track across the
   summary. min-width keeps it honest when the facts wrap on a narrow screen. */
.rmcbar[b-i0ddrsh9wu] {
    flex: 1 1 90px;
    min-width: 90px;
    height: 4px;
    border-radius: 2px;
    background: var(--line);
    overflow: hidden;
    align-self: center;
}
/* Muted fill: this is context, and a red/green bar here would read as a verdict on the rock. */
.rmcbarfill[b-i0ddrsh9wu] { display: block; height: 100%; background: var(--muted); border-radius: 2px; }

/* ── THE FOUR CARDS ─────────────────────────────────────────────────────────────────────────────
   auto-fit rather than a hard repeat(4, 1fr): a rock linked only to a sales metric renders fewer
   cards, and they should share the width rather than leave columns empty. With all four present —
   the normal case — this is four equal columns. */
.rmc-cards[b-i0ddrsh9wu] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(168px, 1fr));
    align-items: stretch;
    gap: 8px;
}

.rmcard[b-i0ddrsh9wu] {
    background: var(--surface2);
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 9px 11px;
}

/* Both gap cards are the ask, so both carry the accent edge — they are one question asked about two
   different currencies, and giving only one of them the marker would rank them. */
.rmcgap[b-i0ddrsh9wu], .rmcgapgm[b-i0ddrsh9wu] { border-left: 3px solid var(--accent); }

.rmch[b-i0ddrsh9wu] {
    font-size: 9.5px; text-transform: uppercase; letter-spacing: .07em;
    font-weight: 800; color: var(--muted); margin-bottom: 3px;
}
.rmcbig[b-i0ddrsh9wu] {
    font-size: 19px; font-weight: 800; color: var(--ink);
    font-variant-numeric: tabular-nums; line-height: 1.15;
}
.rmcline[b-i0ddrsh9wu] { font-size: 11.5px; color: var(--muted); margin-top: 2px; font-variant-numeric: tabular-nums; }
.rmcline b[b-i0ddrsh9wu] { color: var(--ink); }
.rmc-good[b-i0ddrsh9wu] { color: var(--green); }
.rmc-bad[b-i0ddrsh9wu] { color: var(--red); }
.rmc-mute[b-i0ddrsh9wu] { color: var(--muted); }

/* Narrow screens: the cards stack and the strip keeps its full-width role above them. */
@media (max-width: 620px) {
    .rmc-cards[b-i0ddrsh9wu] { grid-template-columns: 1fr; }
    .rmcqpct[b-i0ddrsh9wu] { font-size: 14px; }
}

/* Drilldown: the headline figure is a button that looks like the figure. */
.rmclin[b-i0ddrsh9wu] { font: inherit; color: inherit; background: none; border: none; padding: 0; cursor: pointer;
          text-decoration: underline dotted var(--muted); text-underline-offset: 4px; }
.rmclin:hover[b-i0ddrsh9wu], .rmclin:focus-visible[b-i0ddrsh9wu] { color: var(--accent); outline: none; }
/* /Components/Shared/RockReviewParts.razor.rz.scp.css */
/* Deliberately empty. RockReviewParts shares L10Room's CSS scope (CssScope in ScheduleTraction.Web.csproj), so the
   Rock Review is styled by L10Room.razor.css — one stylesheet for the room and the Rock Playbook. This file only
   exists so the build gives RockReviewParts a scope at all. */
/* /Components/Shared/ScorecardGrid.razor.rz.scp.css */
/* The weekly scorecard grid. Sticky on BOTH axes so the metric name and the week heading stay put
   while the sheet is read — the single biggest thing that makes a 13-column grid usable. */

.scgwrap[b-knqmkocq4m] {
    /* THE GRID SCROLLS INSIDE THIS BOX, and that is the whole mechanism. The page body must never
       scroll sideways; this element owns the overflow so the toolbar, nav and everything around it
       stay still while the sheet moves under them. */
    overflow: auto;
    max-height: calc(100vh - 230px);
    border: 1px solid var(--line);
    border-radius: 13px;
    background: var(--surface);
    /* Momentum scrolling on trackpads/touch, and a visible scrollbar so the affordance is obvious —
       a grid that scrolls but looks like it does not is how W13 went unnoticed. */
    scrollbar-color: var(--muted) var(--surface2);
}
.scg-week .scgwrap[b-knqmkocq4m] { max-height: none; }

.scg[b-knqmkocq4m] {
    border-collapse: separate;   /* separate, not collapse: a collapsed border does not paint
                                    reliably on a sticky cell — the line vanishes while scrolling */
    border-spacing: 0;
    font-size: 12.5px;
    font-variant-numeric: tabular-nums;
    /* ⚠ ALWAYS A DEFINITE WIDTH, IN BOTH MODES.
       Recent mode fills its container (100%); All-13 states its total in pixels through an inline
       style the component computes from ScorecardGridMetrics. Both are definite, which is what
       table-layout:fixed requires — see the note beside .scg-all below for what happened when
       All-13 used max-content instead. */
    width: 100%;
    /* ⚠ FIXED, NOT AUTO. Under auto layout a column width is a SUGGESTION the browser may exceed:
       the 260px metric column rendered at 299px because the longest metric name asked for more,
       and those stolen pixels pushed W13 out from behind the sticky column at 1440. Fixed layout
       makes every declared width authoritative, which is what a 21-column grid needs — and the
       metric column already wraps, so nothing is truncated by holding it to its stated width. */
    table-layout: fixed;
}

/* ── FALLBACK GEOMETRY ────────────────────────────────────────────────────────────────────────
   The real numbers arrive as custom properties on .scgwrap, emitted from ScorecardGridMetrics.
   These defaults exist only so the grid is not shapeless if it is ever rendered without them (a
   static snapshot, a test harness); they are deliberately the same values, and CSS never does
   arithmetic on them beyond reading the offsets C# already computed. */
.scgwrap[b-knqmkocq4m] {
    --scg-metric-w: 190px;
    --scg-week-w: 66px;
    --scg-hist-w: 54px;
    --scg-sum-total-w: 464px;
    --scg-s1-w: 86px; --scg-s1-right: 378px;
    --scg-s2-w: 76px; --scg-s2-right: 302px;
    --scg-s3-w: 64px; --scg-s3-right: 238px;
    --scg-s4-w: 76px; --scg-s4-right: 162px;
    --scg-s5-w: 76px; --scg-s5-right:  86px;
    --scg-s6-w: 86px; --scg-s6-right:   0px;
}

.scg th[b-knqmkocq4m], .scg td[b-knqmkocq4m] {
    padding: 4px 8px;
    border-bottom: 1px solid var(--line);
    white-space: nowrap;
    background: var(--surface);
}

/* ── The two sticky axes ─────────────────────────────────────────────────────────────────────
   Each needs its OWN z-index, and the corner must sit above both. An explicit background on every
   sticky cell is not decoration: a transparent one lets rows scroll visibly underneath. */
.scg thead th[b-knqmkocq4m] { position: sticky; top: 0; z-index: 2; }
.scg .scg-name[b-knqmkocq4m] {
    position: sticky; left: 0; z-index: 1;
    text-align: left; font-weight: 600; color: var(--ink);
    /* Fixed, not min/max: a sticky column whose width depends on content shifts as you scroll.
       260px is chosen against the narrow end of the target range: at 1440 the metric column plus
       the seven summary columns come to 862px inside a ~938px pane, which leaves room for W13 to
       sit beside QTD when scrolled fully right. Widening this pushes W13 back off-screen. */
    /* width ONLY. A min-width here defeats table-layout:fixed — it stops the column
       compressing, so the table overflows its pane instead of fitting it, which is the whole
       thing this design is trying to avoid. */
    width: var(--scg-metric-w);
    white-space: normal;                 /* a metric name may wrap; a week heading may not */
    border-right: 2px solid var(--line);
}
.scg thead .scg-corner[b-knqmkocq4m] { z-index: 3; }

.scg thead th[b-knqmkocq4m] {
    font-size: 10px; text-transform: uppercase; letter-spacing: .04em;
    color: var(--muted); font-weight: 700; text-align: right;
    border-bottom: 2px solid var(--line);
    vertical-align: bottom;
}
/* Summary headings WRAP rather than widen their column. "Pace Goal" on one line would steal
   ~40px from the week zone for no gain; on two short lines it costs nothing. */
.scg thead .scg-num[b-knqmkocq4m] { white-space: normal; line-height: 1.15; }
.scg thead .scg-name[b-knqmkocq4m] { text-align: left; }

/* WEEK COLUMNS GET A REAL MINIMUM. This is the rule that guarantees all thirteen exist at a
   readable size and that the sheet scrolls instead of compressing. */
.scg-wk[b-knqmkocq4m] { width: var(--scg-week-w); }
.scg-wknum[b-knqmkocq4m] { display: block; font-size: 11px; color: var(--ink); font-weight: 800; }
.scg-wkspan[b-knqmkocq4m] { display: block; font-size: 9px; font-weight: 500; }

/* A week that has not finished is dimmed rather than hidden: it still accepts a number, it just is
   not part of "completed weeks" yet. */
.scg-future[b-knqmkocq4m] { color: var(--muted); background: var(--surface2); }

.scg-num[b-knqmkocq4m], .scg-cell[b-knqmkocq4m] { text-align: right; }
.scg-cell[b-knqmkocq4m] { width: var(--scg-week-w); }
/* SIZED TO THE WIDEST STRING THE COLUMN ACTUALLY RENDERS — see ScorecardGridMetrics for the
   measurements. The left padding is trimmed to 2px because every figure here is right-aligned:
   that buys back 6px of content per column, which is a whole extra week visible at 1920. */
/* No width here: each frozen summary column states its own below.
   ⚠ QUALIFIED WITH th/td ON PURPOSE. `.scg th, .scg td { padding: 4px 8px }` above is (0,2,1) once
   the scope attribute is added, so a bare `.scg-num` loses the cascade and the trim silently does
   nothing — which is exactly what happened: the columns were SIZED for 10px of padding and rendered
   with 16px, leaving "REMAINING", "NEEDED/WK", a bold "($12.35M)" and "-123.4%" each spilling a few
   pixels into their neighbour. The left padding is the one to trim because every figure in these
   columns is right-aligned, so those 6px are dead space in front of the number. */
.scg th.scg-num[b-knqmkocq4m], .scg td.scg-num[b-knqmkocq4m] { padding-left: 2px; }
.scg-sep[b-knqmkocq4m] { border-left: 2px solid var(--line); }
.scg-total[b-knqmkocq4m] { font-weight: 800; color: var(--ink); }
.scg-goal[b-knqmkocq4m] { color: var(--muted); }
.scg-muted[b-knqmkocq4m] { color: var(--muted); }
.scg-under[b-knqmkocq4m] { color: var(--red); }
.scg-over[b-knqmkocq4m] { color: var(--green); }

/* ── Entry affordance ──────────────────────────────────────────────────────────────────────────
   An editable cell must LOOK editable without turning 55 rows × 13 weeks into a wall of boxes.
   A faint dotted floor reads as "you can type here" at a glance and disappears into the grid at
   arm's length; hover and focus then commit to a real field. */
.scg-in[b-knqmkocq4m] {
    width: 100%; text-align: right;
    font: inherit; font-variant-numeric: tabular-nums;
    background: transparent; color: var(--ink);
    border: 1px solid transparent;
    border-bottom: 1px dashed color-mix(in srgb, var(--accent) 34%, transparent);
    border-radius: 5px; padding: 2px 4px;
    transition: background-color .12s, border-color .12s;
}
.scg-in.scg-pub[b-knqmkocq4m] { border-bottom-style: dotted; }
.scg-in.scg-ov[b-knqmkocq4m] { border-bottom: 2px solid var(--amber); font-style: italic; }
.scg-in.scg-wh[b-knqmkocq4m] { border-bottom: 2px dashed var(--red); }
.scg-withheld[b-knqmkocq4m] { color: var(--amber); cursor: help; font-size: 12px; }
.scg-in[b-knqmkocq4m]::placeholder { color: color-mix(in srgb, var(--muted) 55%, transparent); }
.scg-in:hover[b-knqmkocq4m] { border-color: var(--line); border-bottom-color: var(--accent); background: var(--surface2); }
.scg-in:focus[b-knqmkocq4m] {
    border: 1px solid var(--accent); outline: none;
    background: var(--surface);
    box-shadow: 0 0 0 2px var(--accent-soft);
}
/* A cell nobody can type into is visibly a RESULT, not an empty input: no floor, muted ink, and a
   help cursor because its tooltip explains where the number came from. */
.scg-ro[b-knqmkocq4m] { color: var(--muted); }
.scg-ro span[b-knqmkocq4m] { cursor: help; }

/* ── Rows ──────────────────────────────────────────────────────────────────────────────────── */
.scg-row:hover th[b-knqmkocq4m], .scg-row:hover td[b-knqmkocq4m] { background: var(--surface2); }

/* A borrowed metric reads as reference, not as this scorecard's own work. */
.scg-inc .scg-mname[b-knqmkocq4m] { font-weight: 500; }
.scg-from[b-knqmkocq4m] {
    display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 999px;
    font-size: 9.5px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase;
    background: var(--surface2); color: var(--muted);
}

/* The "?" beside a calculated metric. Deliberately small and quiet — it explains on demand and
   never occupies a line of its own. */
.scg-info[b-knqmkocq4m] {
    margin-left: 5px; width: 16px; height: 16px; line-height: 14px; padding: 0;
    border-radius: 50%; border: 1px solid var(--line); background: var(--surface2);
    color: var(--muted); font-size: 10px; font-weight: 800; cursor: pointer;
}
.scg-info:hover[b-knqmkocq4m], .scg-info:focus-visible[b-knqmkocq4m] { color: var(--accent); border-color: var(--accent); }
.scg-infopop[b-knqmkocq4m] {
    display: block; margin-top: 3px; font-size: 11px; font-weight: 500;
    color: var(--muted); white-space: normal;
}

/* ── Section bands ─────────────────────────────────────────────────────────────────────────────
   A manager scanning 55 rows needs to find "Written Sales" without reading. The band is a tinted
   full-width strip with a coloured left edge and a rule above it — structure, not decoration. The
   table itself stays monochrome so the NUMBERS are what carry colour (red/green pace), which is the
   only place colour means something here. */
.scg-sec th[b-knqmkocq4m], .scg-sec td[b-knqmkocq4m] {
    border-top: 2px solid var(--line);
    border-bottom: 1px solid var(--line);
    padding-top: 7px; padding-bottom: 6px;
    background: var(--surface2);
}
.scg-sec .scg-name[b-knqmkocq4m] { z-index: 1; }          /* stays above the scrolling body like any name cell */
.scg-secname[b-knqmkocq4m] {
    font-size: 10.5px; text-transform: uppercase; letter-spacing: .07em; font-weight: 800;
    border-left: 4px solid var(--line);      /* overridden per section below */
    padding-left: 10px !important;
}

/* Colour by TOKEN, so every band is correct in light and dark without a second rule. Delivery /
   Install carries its own key precisely so it does not band with PPP or Third Party Finance. */
.sc-c-accent .scg-secname[b-knqmkocq4m] { color: var(--accent); border-left-color: var(--accent); }
.sc-c-green  .scg-secname[b-knqmkocq4m] { color: var(--green);  border-left-color: var(--green); }
.sc-c-amber  .scg-secname[b-knqmkocq4m] { color: var(--amber);  border-left-color: var(--amber); }
.sc-c-red    .scg-secname[b-knqmkocq4m] { color: var(--red);    border-left-color: var(--red); }
.sc-c-muted  .scg-secname[b-knqmkocq4m] { color: var(--muted);  border-left-color: var(--muted); }

/* The faintest possible wash across the band, keyed to the section's own colour. At 7% it reads as
   grouping and never as highlighting — the row underneath still looks like an ordinary row. */
.sc-c-accent.scg-sec th[b-knqmkocq4m], .sc-c-accent.scg-sec td[b-knqmkocq4m] { background: color-mix(in srgb, var(--accent) 7%, var(--surface2)); }
.sc-c-green.scg-sec  th[b-knqmkocq4m], .sc-c-green.scg-sec  td[b-knqmkocq4m] { background: color-mix(in srgb, var(--green) 7%, var(--surface2)); }
.sc-c-amber.scg-sec  th[b-knqmkocq4m], .sc-c-amber.scg-sec  td[b-knqmkocq4m] { background: color-mix(in srgb, var(--amber) 7%, var(--surface2)); }
.sc-c-red.scg-sec    th[b-knqmkocq4m], .sc-c-red.scg-sec    td[b-knqmkocq4m] { background: color-mix(in srgb, var(--red) 7%, var(--surface2)); }

.scg-act[b-knqmkocq4m] { width: 68px; text-align: center; }

/* A rollup that is missing somebody. A DOTTED UNDERLINE, not a colour: the figure is real and
   correct for whoever has reported, so it must not read as an error — it reads as "ask about this",
   with the tooltip naming how many are in. */
.scg-partial[b-knqmkocq4m] { border-bottom: 1px dotted var(--amber); cursor: help; }

/* The MEETING view is a single week and genuinely fits, so it may fill its container. Its four
   summary columns carry no .scg-sN class — they are not frozen, there is nothing to scroll — so
   they take the ordinary currency width rather than becoming auto columns that share the slack. */
.scg-week .scg[b-knqmkocq4m] { width: 100%; }
.scg-week .scg-num[b-knqmkocq4m] { width: var(--scg-s2-w); }
.scg-week .scg .scg-name[b-knqmkocq4m] { width: auto; min-width: 240px; max-width: 340px; }

/* On a phone the metric column gives ground first — but it does so by moving the VARIABLE, not by
   declaring a second width, so the fit measurement and the frozen offsets follow it. */
@media (max-width: 820px) {
    .scgwrap[b-knqmkocq4m] { --scg-metric-w: 160px; }
    .scg[b-knqmkocq4m] { font-size: 11.5px; }
}


/* ══ THREE ZONES ═══════════════════════════════════════════════════════════════════════════════
   LEFT frozen metric · CENTRE adaptive weeks · RIGHT management summary.
   In Recent mode the table fits its container, so the right zone needs no stickiness to stay on
   screen — it is simply always there. All-13 mode opts back into a content-width table. */
.scg-all .scg[b-knqmkocq4m] { width: max-content; min-width: 100%; }

/* The view control above the grid. */
.scgbar[b-knqmkocq4m] { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0 0 8px; }
.scgseg[b-knqmkocq4m] { display: inline-flex; border: 1px solid var(--line); border-radius: 999px; overflow: hidden; }
.scgsegbtn[b-knqmkocq4m] {
    padding: 5px 13px; font-size: 12.5px; font-weight: 700; min-height: 30px;
    background: var(--surface); color: var(--muted); border: none; cursor: pointer;
}
.scgsegbtn:hover[b-knqmkocq4m] { color: var(--ink); background: var(--surface2); }
.scgsegbtn.on[b-knqmkocq4m] { background: var(--accent); color: #fff; }
.scgbarnote[b-knqmkocq4m] { font-size: 12px; color: var(--muted); }

/* ── Collapsed history ────────────────────────────────────────────────────────────────────────
   A CONTROL, not a label: it pages the week window. Narrow on purpose — every pixel it takes is a
   pixel the weeks or the summary lose. */
/* th/td-qualified for the same cascade reason as .scg-num: unqualified, the generic 4px 8px won
   and the chip's button rendered 38px wide inside a 54px column, cutting "‹ W1-W12" off mid-label. */
.scg th.scg-hist[b-knqmkocq4m], .scg td.scg-hist[b-knqmkocq4m] { width: var(--scg-hist-w); text-align: center; padding: 0; }
.scghistbtn[b-knqmkocq4m] {
    position: relative;                  /* the gap marker hangs off this — see .scggap */
    width: 100%; padding: 4px 1px; min-height: 34px;
    background: var(--surface2); border: none; border-right: 1px solid var(--line);
    color: var(--muted); font: inherit; font-size: 10.5px; font-weight: 800; cursor: pointer;
    white-space: nowrap;
}
.scghistbtn:hover[b-knqmkocq4m], .scghistbtn:focus-visible[b-knqmkocq4m] { color: var(--accent); background: var(--accent-soft); }
/* A collapsed ELAPSED week with nothing entered is a reporting gap, and hiding it silently is the
   one thing this whole window must not do. Amber, not red: it is a prompt, not a failure.
   ⚠ OUT OF THE FLOW, and that is the point. Inline it was 16px of a 50px chip, which pushed
   "‹ W1-W12" past the edge and cut off BOTH the week number and the marker itself — the window was
   hiding exactly the signal it exists to raise. In the corner it costs no width, so the longest
   label fits and the marker is always visible. The button's aria-label already says a week has no
   value entered, so nothing here is the only carrier of that fact. */
.scggap[b-knqmkocq4m] {
    position: absolute; top: 2px; right: 2px;
    margin: 0; width: 11px; height: 11px; line-height: 11px;
    border-radius: 50%; background: var(--amber); color: var(--surface);
    font-size: 8px; font-weight: 900;
}
.scg-histcell[b-knqmkocq4m] { color: var(--muted); text-align: center; font-size: 11px; }


/* The slack absorber — see the note in the markup. No width declared ON PURPOSE: under
   table-layout:fixed exactly one such column soaks up the remainder, which is what keeps every
   other column at the width it asked for. */
.scg-flex[b-knqmkocq4m] { padding: 0; border-bottom: 1px solid var(--line); background: var(--surface); }
.scg-sec .scg-flex[b-knqmkocq4m] { background: inherit; }


/* ══ THE RIGHT ZONE IS FROZEN TOO ══════════════════════════════════════════════════════════════
   THIS is the guarantee, and it is structural rather than arithmetic. The adaptive week window
   trims columns so that scrolling is usually unnecessary; this makes the management summary visible
   EVEN WHEN IT IS NOT — a mis-measured fit, a very narrow laptop, or All-13 mode can no longer push
   QTD…Needed/wk off the screen.

   ⚠ EACH OFFSET IS THE TOTAL WIDTH OF THE COLUMNS TO ITS RIGHT, AND IS NOT WRITTEN DOWN HERE.
   ScorecardGridMetrics.StickyRight(i) sums Width(j) for every j to the right of i and the component
   hands the answer over as --scg-sN-right. This file used to carry a hardcoded 72px step beside
   72px columns; All-13 mode then sized "REMAINING" and "NEEDED/WK" to their text (84px, 87px) under
   automatic layout and those two frozen columns overlapped their neighbours by 12px and 15px,
   covering figures. A width and its offset can no longer be changed independently.

   z-index above the body rows, below the header row, and each carries an opaque background — a
   transparent sticky cell shows the weeks sliding underneath it. */
.scg-s1[b-knqmkocq4m], .scg-s2[b-knqmkocq4m], .scg-s3[b-knqmkocq4m], .scg-s4[b-knqmkocq4m], .scg-s5[b-knqmkocq4m], .scg-s6[b-knqmkocq4m] {
    position: sticky; z-index: 1; background: var(--surface);
}
/* WIDTH AND OFFSET COME IN PAIRS, from the same array in ScorecardGridMetrics. The columns are
   deliberately unequal — "% Goal" holds "-123.4%" and has no business being as wide as a currency
   column — and the offsets are sums over those widths, so unequal costs nothing here. */
.scg-s1[b-knqmkocq4m] { width: var(--scg-s1-w); right: var(--scg-s1-right); }
.scg-s2[b-knqmkocq4m] { width: var(--scg-s2-w); right: var(--scg-s2-right); }
.scg-s3[b-knqmkocq4m] { width: var(--scg-s3-w); right: var(--scg-s3-right); }
.scg-s4[b-knqmkocq4m] { width: var(--scg-s4-w); right: var(--scg-s4-right); }
.scg-s5[b-knqmkocq4m] { width: var(--scg-s5-w); right: var(--scg-s5-right); }
.scg-s6[b-knqmkocq4m] { width: var(--scg-s6-w); right: var(--scg-s6-right); }

/* The header cells of the same columns sit above BOTH axes. */
.scg thead .scg-s1[b-knqmkocq4m], .scg thead .scg-s2[b-knqmkocq4m], .scg thead .scg-s3[b-knqmkocq4m], .scg thead .scg-s4[b-knqmkocq4m],
.scg thead .scg-s5[b-knqmkocq4m], .scg thead .scg-s6[b-knqmkocq4m] { z-index: 3; }

/* Section bands keep their tint under the frozen summary rather than showing white gaps. */
.scg-sec .scg-s1[b-knqmkocq4m], .scg-sec .scg-s2[b-knqmkocq4m], .scg-sec .scg-s3[b-knqmkocq4m], .scg-sec .scg-s4[b-knqmkocq4m],
.scg-sec .scg-s5[b-knqmkocq4m], .scg-sec .scg-s6[b-knqmkocq4m] { background: inherit; }
/* Hover likewise, so a row highlights across all three zones. */
.scg-row:hover .scg-s1[b-knqmkocq4m], .scg-row:hover .scg-s2[b-knqmkocq4m], .scg-row:hover .scg-s3[b-knqmkocq4m], .scg-row:hover .scg-s4[b-knqmkocq4m],
.scg-row:hover .scg-s5[b-knqmkocq4m], .scg-row:hover .scg-s6[b-knqmkocq4m] { background: var(--surface2); }

/* ⚠ table-layout:fixed NEEDS A DEFINITE WIDTH — AND ALL-13 NOW HAS ONE.
   With width:max-content Chrome silently falls back to AUTO layout and sizes every column from its
   content. That is the defect this file used to carry: in All-13 the last two summary columns grew
   to fit "REMAINING" and "NEEDED/WK" while their sticky offsets still assumed the declared 72px, so
   they sat on top of the columns beside them at every scroll position but the far right.

   Both modes are definite now. Recent uses width:100%; All-13 takes an inline pixel width the
   component computes as metric + weeks×week + summary, from the same constants as the columns
   themselves — so the table is exactly as wide as its columns, fixed layout stays in force, and
   every column renders at the width its offset was calculated from. min-width:100% only matters on
   a pane wider than the whole quarter, where the .scg-flex spacer absorbs the difference and the
   summary columns keep their declared widths. */
.scg[b-knqmkocq4m] { width: 100%; table-layout: fixed; }
.scg-all .scg[b-knqmkocq4m] { min-width: 100%; table-layout: fixed; }   /* width: inline, from the component */

/* ── THE WEEK BEING REPORTED ON ───────────────────────────────────────────────────────────────
   Every unfinished week is dimmed, so the current one needs something of its own or it reads as
   just another week that has not started. An accent rule under the heading and a tinted column —
   quiet enough not to compete with the red/green pace figures, which are the only other colour in
   the grid. */
.scg thead .scg-now[b-knqmkocq4m] { box-shadow: inset 0 -3px 0 var(--accent); }
.scg thead .scg-now .scg-wknum[b-knqmkocq4m] { color: var(--accent); }
.scg-cell.scg-now[b-knqmkocq4m] { background: color-mix(in srgb, var(--accent) 5%, var(--surface)); }
.scg-row:hover .scg-cell.scg-now[b-knqmkocq4m] { background: color-mix(in srgb, var(--accent) 9%, var(--surface2)); }

/* ══ SECTION-ORIENTED REVIEW ═══════════════════════════════════════════════════════════════════
   A section is a full-width row styled as a card. It is a ROW and not a <div> on purpose: the
   frozen metric column, the frozen summary, the adaptive week window and the editing behaviour are
   all properties of this one table's geometry, and lifting sections out of it would mean
   re-implementing every one of them per section. See the note in the markup. */
.scsec-head > th[b-knqmkocq4m] {
    padding: 0;
    background: var(--surface2);
    border-top: 2px solid var(--line);
    border-bottom: 1px solid var(--line);
}
.scsecbtn[b-knqmkocq4m] {
    /* Sticks to the left edge so the section is still named when the sheet is scrolled right —
       the row spans every column, so without this the heading slides away behind the frozen
       metric column. */
    position: sticky; left: 0;
    display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
    width: max-content; max-width: 100%;
    padding: 11px 14px;
    background: none; border: none; cursor: pointer; text-align: left;
    font: inherit; color: var(--ink);
}
.scsecbtn:hover .scsecname[b-knqmkocq4m], .scsecbtn:focus-visible .scsecname[b-knqmkocq4m] { color: var(--accent); }
.scsecbtn:focus-visible[b-knqmkocq4m] { outline: 2px solid var(--accent); outline-offset: -2px; }
.scsecname[b-knqmkocq4m] {
    font-size: 14px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase;
}
.scsecmeta[b-knqmkocq4m] { font-size: 12px; color: var(--muted); font-weight: 600; }
.scsecdot[b-knqmkocq4m] { opacity: .5; margin: 0 2px; }
/* Pace reads as a verdict, so it carries the same red/green the figures do — and nothing else in
   the header does, which keeps the verdict the only coloured thing in the overview. */
.scsecpace.behind[b-knqmkocq4m] { color: var(--red); font-weight: 800; }
.scsecpace.onpace[b-knqmkocq4m] { color: var(--green); font-weight: 800; }
/* ⚠ NOT GREEN, AND NOT RED. "Not reported" is the absence of a verdict, so it must not borrow the
   colour of either one — an empty scorecard glowing green is the single most misleading thing this
   header could do. */
.scsecpace.unreported[b-knqmkocq4m] { color: var(--muted); font-weight: 700; font-style: italic; }
.scsecgap[b-knqmkocq4m] { color: var(--amber); font-weight: 800; }
.scsecopen[b-knqmkocq4m] {
    font-size: 12px; font-weight: 800; color: var(--accent);
    letter-spacing: .03em; margin-left: auto; white-space: nowrap;
}
.scsecchev[b-knqmkocq4m] { display: inline-block; color: var(--accent); width: 1ch; margin-right: 2px; }
.scsecopen[b-knqmkocq4m]  .disc-cue { padding-left: 0; font-size: 13px; }

/* The open section keeps a coloured left edge down its header so the eye can find where it began. */
.scsec-head.on > th[b-knqmkocq4m] { background: var(--surface); border-bottom: 2px solid var(--accent); }
.scsec-head.on .scsecname[b-knqmkocq4m] { color: var(--accent); }

/* ── DONE WITH THIS SECTION ───────────────────────────────────────────────────────────────────
   Closes from the BOTTOM, where the reading ended. */
.scsec-foot > td[b-knqmkocq4m] {
    padding: 0; background: var(--surface2);
    border-top: 2px solid var(--line); border-bottom: 2px solid var(--line);
}
.scsecdone[b-knqmkocq4m] {
    position: sticky; left: 0;
    display: inline-flex; align-items: center; gap: 7px;
    margin: 9px 14px; padding: 7px 15px;
    font: inherit; font-size: 12.5px; font-weight: 700;
    color: var(--accent); background: var(--surface);
    border: 1px solid var(--accent); border-radius: 999px; cursor: pointer;
}
.scsecdone:hover[b-knqmkocq4m], .scsecdone:focus-visible[b-knqmkocq4m] { background: var(--accent-soft); }
.scsecdone:focus-visible[b-knqmkocq4m] { outline: 2px solid var(--accent); outline-offset: 2px; }
.scsectick[b-knqmkocq4m] { font-weight: 900; }

/* ── SUB-GROUP BANDS (Retail / Apartment / Contract / TOTAL) ──────────────────────────────────
   Quieter than a section by design: this is chunking WITHIN a section, so it must read as a rule
   with a word on it, never as a second level of section heading. The label comes from
   ScorecardMetric.GroupLabel — the component never parses a display name. */
.scg-band > th[b-knqmkocq4m] {
    /* text-align:left explicitly: a bare <th> centres, which put the band label out over the week
       columns instead of above the metric names it heads. */
    padding: 0; text-align: left; background: var(--surface);
    border-top: 1px solid var(--line); border-bottom: none;
}
.scg-bandname[b-knqmkocq4m] {
    position: sticky; left: 0;
    display: inline-block; padding: 7px 0 3px 14px;
    font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
    color: var(--muted);
}

/* ── RESULT AND CONTRIBUTOR ROWS ──────────────────────────────────────────────────────────────
   Derived from the calculation graph (ScorecardSectionView), never from the name. A TOTAL must read
   as the RESULT of the rows above it rather than as one more unrelated line, so it gets weight and
   a rule; hovering it lights up the very metrics it is computed from. */
.scg-result > .scg-name[b-knqmkocq4m] { font-weight: 800; }
.scg-result > th[b-knqmkocq4m], .scg-result > td[b-knqmkocq4m] { border-top: 1px solid var(--line); }
.scg-rollup[b-knqmkocq4m] {
    display: inline-block; margin-right: 5px;
    color: var(--accent); font-weight: 900; cursor: help;
    transform: rotate(180deg) translateY(-2px);
}
.scg-contrib > .scg-name .scg-mname[b-knqmkocq4m] { padding-left: 11px; }

/* ── THE SECTION OVERVIEW ─────────────────────────────────────────────────────────────────────
   With every section closed there is not one data cell on screen, so a row of week and summary
   headings above a stack of cards labels nothing. Hidden only in that state.

   ⚠ SAFE ONLY BECAUSE NOTHING NEEDS ALIGNING HERE. table-layout:fixed takes its column widths from
   the first row, so display:none on the header would normally collapse the geometry — but every row
   in the overview is a full-width colspan card, and the header returns the moment a section opens. */
.scg-overview thead[b-knqmkocq4m] { display: none; }
.scg-overview .scg[b-knqmkocq4m] { border-top: none; }

/* ── NOT APPLICABLE ───────────────────────────────────────────────────────────────────────────
   ⚠ THREE STATES THAT MUST NOT LOOK ALIKE:
       0     a reported zero — real data, rendered normally
       —     applicable but not reported — a gap somebody owes
       N/A   not part of this seat — nobody owes it, and nothing is outstanding
   So N/A gets its own quiet treatment rather than the em dash: the row recedes, the cells carry a
   faint dot instead of an entry box, and a single badge on the NAME says why once, rather than
   thirteen times across the week columns. */
.scg-na > .scg-name .scg-mname[b-knqmkocq4m] { color: var(--muted); font-weight: 500; }
.scg-na > td[b-knqmkocq4m] { background: color-mix(in srgb, var(--muted) 4%, var(--surface)); }
.scg-row.scg-na:hover > td[b-knqmkocq4m] { background: color-mix(in srgb, var(--muted) 7%, var(--surface2)); }
.scg-nabadge[b-knqmkocq4m] {
    display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 999px;
    font-size: 9.5px; font-weight: 800; letter-spacing: .04em;
    background: var(--surface2); color: var(--muted); cursor: help;
}
.scg-namark[b-knqmkocq4m] { color: var(--muted); opacity: .45; cursor: help; }
.scsecna[b-knqmkocq4m] { color: var(--muted); font-weight: 700; }
.scg-band-na > th[b-knqmkocq4m] { background: color-mix(in srgb, var(--muted) 4%, var(--surface)); }
.scg-bandna[b-knqmkocq4m] { margin-left: 8px; font-size: 10px; font-weight: 700; letter-spacing: .04em;
              text-transform: uppercase; color: var(--muted); }
.scg-bandshow[b-knqmkocq4m] { margin-left: 8px; background: none; border: none; padding: 0; cursor: pointer;
                font: inherit; font-size: 10px; font-weight: 800; letter-spacing: .04em;
                text-transform: uppercase; color: var(--accent); }
.scg-bandshow:hover[b-knqmkocq4m] { text-decoration: underline; }

/* ── Lineage (drilldown) ─────────────────────────────────────────────────────────────────────── */
/* A value with contributors is a button that looks like the value, with a dotted underline that
   says "there is more here". Same font, same alignment as the span it replaces. */
.scg-lin[b-knqmkocq4m] { font: inherit; color: inherit; background: none; border: none; padding: 0; cursor: pointer;
           text-decoration: underline dotted var(--muted); text-underline-offset: 3px; font-variant-numeric: tabular-nums; }
.scg-lin:hover[b-knqmkocq4m], .scg-lin:focus-visible[b-knqmkocq4m] { color: var(--accent); text-decoration-color: var(--accent); outline: none; }
.scg-linrow td[b-knqmkocq4m] { padding: 0 8px 6px; background: var(--surface); }
.scg-ovprompt[b-knqmkocq4m] { border: 1px solid var(--amber); background: var(--amber-bg); border-radius: 8px; padding: 8px 12px; margin: 0 0 8px; font-size: 13px; }

/* ── Meeting rooms: repeated section header + per-section previous-week reveal ────────────────────
   The header is a row of the SAME table, so it aligns with the values by construction. The wrapper
   already scrolls sideways on a narrow screen; the Metric cell stays sticky-left like every metric name. */
.scg-rephead th[b-knqmkocq4m] { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted);
    background: var(--surface2, var(--surface)); border-bottom: 1px solid var(--line); padding: 4px 6px; white-space: normal; line-height: 1.25; }
.scg-rephead .scg-repmetric[b-knqmkocq4m] { text-align: left; }
.scg-replabel[b-knqmkocq4m] { margin-right: 8px; }
.scg-revealbar[b-knqmkocq4m] { display: inline-flex; gap: 6px; flex-wrap: wrap; vertical-align: middle; }
.scg-reveal[b-knqmkocq4m] { font: inherit; font-size: 11px; font-weight: 600; text-transform: none; letter-spacing: 0; color: var(--accent);
    background: none; border: 1px solid var(--line); border-radius: 999px; padding: 1px 8px; cursor: pointer; }
.scg-reveal:hover[b-knqmkocq4m], .scg-reveal:focus-visible[b-knqmkocq4m] { border-color: var(--accent); outline: none; }
.scg-week .scg-prev[b-knqmkocq4m] { color: var(--muted); }
.scg-week .scg-wkpad[b-knqmkocq4m] { background: transparent; }
/* Every week column in the room is a WEEK-width column (ScorecardGridMetrics.WeekW), including the
   latest week's editable cell, so a full currency figure is never clipped. */
.scg-week .scg-wkcol[b-knqmkocq4m], .scg-week .scg-cell[b-knqmkocq4m] { width: var(--scg-week-w); }
.scg-week .scg-cell .scg-in[b-knqmkocq4m] { width: 100%; box-sizing: border-box; }
/* NARROW SCREENS: the meeting page itself is wider than a phone (pre-existing room layout), so the
   scorecard caps its OWN scroll box at the viewport — the metric table then scrolls sideways inside it
   while the sticky metric name stays readable. */
@media (max-width: 720px) {
    .scgwrap.scg-week[b-knqmkocq4m] { max-width: calc(100vw - 48px); }
}

/* HELD FOR REVIEW (2026-09-26): the published number stays; the tag opens why the latest sync held the sheet's value. */
.scg-cell[b-knqmkocq4m] { position: relative; }
.scg-held[b-knqmkocq4m] { display: block; margin-top: 2px; font-size: 13px; line-height: 1.2; text-align: right; }
.scg-held > summary[b-knqmkocq4m] { cursor: pointer; list-style: none; display: inline-block; padding: 1px 6px; border-radius: 999px;
    background: var(--amber-bg); color: var(--amber); font-weight: 700; white-space: nowrap; }
.scg-held > summary[b-knqmkocq4m]::-webkit-details-marker { display: none; }
.scg-held[open] > summary[b-knqmkocq4m] { outline: 2px solid var(--amber); }
.scg-heldwhy[b-knqmkocq4m] { position: absolute; right: 0; z-index: 20; width: min(360px, 80vw); margin-top: 4px; padding: 10px 12px;
    background: var(--surface, #fff); color: var(--ink, inherit); border: 1px solid var(--amber); border-radius: 8px;
    box-shadow: 0 6px 18px rgba(0,0,0,.18); font-size: 15px; font-weight: 400; text-align: left; white-space: normal; }
.scg-in.scg-heldcell[b-knqmkocq4m] { box-shadow: inset 0 0 0 2px var(--amber); }

/* OPEN A METRIC (Week mode): the name is the control; its whole-quarter history opens in the row beneath. */
.scg-histbtn[b-knqmkocq4m] { all: unset; cursor: pointer; display: inline-flex; align-items: baseline; gap: 6px; font: inherit; font-weight: 700; color: var(--ink); }
.scg-histbtn:hover[b-knqmkocq4m] { text-decoration: underline; text-underline-offset: 3px; }
.scg-histbtn:focus-visible[b-knqmkocq4m] { outline: 3px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.scg-histchev[b-knqmkocq4m] { color: var(--accent); font-size: 13px; width: 1ch; }
.scg-histrow > td[b-knqmkocq4m] { padding: 6px 10px 12px; background: var(--surface2); border-top: 1px solid var(--line); }

/* ── MEETING ROOM (Week mode) — THE FINANCIAL CARDS' TYPE SCALE (2026-09-29) ───────────────────────────
   The room's scorecard read like a different application beside the Financials: 10px mini-caps headings,
   9–11px badges. In the room it now uses the same family, weights and 13px floor as the financial blocks —
   sentence-case headings, 14px figures. The full /scorecard grid keeps its own dense scale. */
.scg-week .scg[b-knqmkocq4m] { font-family: var(--font); font-size: 14px; }
.scg-week .scg thead th[b-knqmkocq4m], .scg-week .scg-rephead th[b-knqmkocq4m] { font-size: 13px; text-transform: none; letter-spacing: 0; font-weight: 700; color: var(--muted); }
.scg-week .scg-mname[b-knqmkocq4m], .scg-week .scg-histbtn[b-knqmkocq4m] { font-size: 14.5px; }
.scg-week .scsecname[b-knqmkocq4m] { font-size: 15px; text-transform: none; letter-spacing: 0; }
.scg-week .scsecmeta[b-knqmkocq4m], .scg-week .scsecopen[b-knqmkocq4m] { font-size: 13px; letter-spacing: 0; }
.scg-week .scg-reveal[b-knqmkocq4m] { font-size: 13px; }
.scg-week .scg-from[b-knqmkocq4m], .scg-week .scg-nabadge[b-knqmkocq4m] { font-size: 12.5px; text-transform: none; letter-spacing: 0; font-weight: 700; }
.scg-week .scg-bandname[b-knqmkocq4m], .scg-week .scg-bandna[b-knqmkocq4m], .scg-week .scg-bandtoggle[b-knqmkocq4m] { font-size: 13px; text-transform: none; letter-spacing: 0; }
.scg-week .scg-info[b-knqmkocq4m] { width: 19px; height: 19px; line-height: 17px; font-size: 13px; }
.scg-week .scg-infopop[b-knqmkocq4m], .scg-week .scg-withheld[b-knqmkocq4m] { font-size: 13px; }
.scg-week .scg-num[b-knqmkocq4m], .scg-week .scg-cell[b-knqmkocq4m] { font-size: 14px; font-variant-numeric: tabular-nums; }
.scg-week .mini[b-knqmkocq4m] { font-size: 13px; }
/* PHONE: the room's grid scrolls inside its own box instead of widening the page (it overflowed 103px at 390px
   before). inline-size containment keeps the table's width from reaching the page's minimum width. */
.scgwrap.scg-week[b-knqmkocq4m] { contain: inline-size; width: 100%; }
/* /Components/Shared/SessionGuard.razor.rz.scp.css */
/* Non-blocking session banner: pinned bottom-right, narrow, never a modal, never over the room's
   own top bar. Large type per house rule. Phone width: full-width strip with 16px gutters. */
.stsg[b-c4tg4o44hd] {
    position: fixed; right: 16px; bottom: 16px; z-index: 900;
    max-width: 520px; width: calc(100vw - 32px);
    background: var(--surface); color: var(--ink);
    border: 1px solid var(--line); border-left: 5px solid var(--accent);
    border-radius: 12px; box-shadow: 0 8px 28px rgba(0,0,0,.18);
    padding: 14px 16px; font-size: 18px; line-height: 1.45;
    display: flex; flex-direction: column; gap: 10px;
}
.stsg-warn[b-c4tg4o44hd] { border-left-color: var(--amber); background: var(--amber-bg); }
.stsg-info[b-c4tg4o44hd] { border-left-color: var(--accent); }
.stsg-recovered[b-c4tg4o44hd] { bottom: auto; top: 16px; max-height: 70vh; overflow: auto; }
.stsg-title[b-c4tg4o44hd] { font-weight: 800; }
.stsg-text[b-c4tg4o44hd] { display: block; }
.stsg-msg[b-c4tg4o44hd] { margin-top: 6px; color: var(--muted); font-size: 16.5px; }
.stsg-actions[b-c4tg4o44hd] { display: flex; flex-wrap: wrap; gap: 8px; }
.stsg-actions .btn[b-c4tg4o44hd] { font-size: 17px; text-decoration: none; }
.stsg-draft[b-c4tg4o44hd] { display: flex; flex-direction: column; gap: 4px; }
.stsg-draft-label[b-c4tg4o44hd] { font-weight: 700; font-size: 16px; color: var(--muted); }
.stsg-draft textarea[b-c4tg4o44hd] { width: 100%; font: inherit; font-size: 16.5px; }
@media (max-width: 600px) {
    .stsg[b-c4tg4o44hd] { right: 16px; left: 16px; width: auto; max-width: none; }
}
