    /* BehaviorDash brand palette (approved):
       Blue #123D73 primary/nav/buttons - Green #8CCB32 accent/progress/active
       Orange #FF7A22 CTAs/highlights/selected controls - Coral #E84B32 tiny accent only
       Navy #10243E text/dark UI/footer - Soft Ice #F4F8F7 app background - White cards.
       Green/Orange/Coral fail white-text contrast as solid fills (checked against
       WCAG AA), so anywhere one of those is a solid background, pair it with
       Navy text, not white - never plain color-only status either, per the
       existing shape/dash chart rules. */
    :root{ --bg:#F4F8F7; --surface:#ffffff; --ink:#10243E; --muted:#5C6B78; --line:#DCE6E3;
      --brand:#123D73; --brand-2:#10243E; --sidebar:#10243E; --sidebar-2:#123D73;
      --error:#E84B32; --error-text:#8b2d1e; --error-bg:#fdedeb; --ok:#8CCB32; --ok-text:#4d701c; --ok-bg:#f4faeb;
      --warn:#FF7A22; --warn-text:#8c4313; --warn-bg:#fff2e9; --panel:#F8FAFA; --accent:#FF7A22;
      /* v57: shared elevation/radius scale for the Schedule redesign - kept as
         tokens (not one-off values) so Calendar, Staffing Board, Staff Time,
         Availability, the appointment drawer, and School Calendar all read as
         one consistent system instead of each screen inventing its own. */
      --radius-sm:8px; --radius-md:12px; --radius-lg:16px;
      --shadow-sm:0 1px 2px rgba(16,36,62,.07); --shadow-md:0 4px 14px rgba(16,36,62,.10); --shadow-lg:0 20px 48px rgba(16,36,62,.22); }
    *{box-sizing:border-box}
    body{margin:0;font-family:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;color:var(--ink);background:var(--bg)}
    .hidden{display:none!important}
    /* Fixed and centred with no overflow handling clipped anything taller than
       the viewport at BOTH ends — the two-factor gate lost its own heading.
       margin:auto centres when it fits and scrolls from the top when it does
       not; align-items:center alone cannot do that. */
    #login{position:fixed;inset:0;background:radial-gradient(1100px 600px at 25% -10%,#123D73,#10243E);display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;padding:24px 16px;z-index:1000}
    #login .box{background:#fff;border-radius:18px;padding:34px;width:90%;max-width:370px;box-shadow:0 30px 60px rgba(0,0,0,.4);margin:auto}
    /* The mandatory two-factor gate needs more room than a sign-in form. */
    #login .box.mfa-gate{max-width:min(560px,92vw)}
    .mfa-gate__lede{margin:0 0 18px;color:var(--muted);font-size:14px;line-height:1.5}
    .mfa-gate__field{display:block;margin-bottom:10px}
    .mfa-gate__field input{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
      font-size:22px;letter-spacing:.3em;text-align:center}
    @media (min-width:720px) and (min-height:620px){
      #login .box.mfa-gate .sec-enroll__qr{float:right;margin:0 0 12px 20px}
    }
    #login h2{margin:0 0 2px;font-size:20px}
    #login .box p{margin-top:0}
    #login input{width:100%;margin-bottom:10px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;font-size:15px}
    #login button{width:100%;padding:12px;border:none;border-radius:10px;background:var(--brand);color:#fff;font-weight:600;font-size:15px;cursor:pointer}
    .layout{display:flex;min-height:100vh}
    .sidebar{width:230px;background:var(--sidebar);color:#cbd5e1;display:flex;flex-direction:column;padding:18px 12px;position:sticky;top:0;height:100vh}
    .brand{display:flex;align-items:center;gap:9px;font-weight:700;color:#fff;font-size:17px;padding:6px 10px 18px}
    .brand .brand-icon{width:32px;height:32px;object-fit:contain;display:block;filter:drop-shadow(0 2px 3px rgba(0,0,0,.4))}
    .nav{display:flex;flex-direction:column;gap:3px;flex:1}
    .nav .tab{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:10px;cursor:pointer;color:#cbd5e1;font-weight:500;font-size:14px}
    .nav .tab .ic{width:18px;text-align:center;opacity:.9;font-style:normal}
    .nav .tab:hover{background:var(--sidebar-2);color:#fff}
    .nav .tab.active{background:var(--brand);color:#fff}
    .side-link{color:#94a3b8;text-decoration:none;font-size:13px;padding:11px 12px;border-top:1px solid #1b3a5e;margin-top:8px}
    .side-link:hover{color:#fff}
    .main-col{flex:1;min-width:0;display:flex;flex-direction:column}
    .topbar{background:var(--surface);border-bottom:1px solid var(--line);padding:14px 24px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:5}
    .topbar .org{font-weight:600}
    .topbar .spacer{margin-left:auto}
    .topbar .user{color:var(--muted);font-size:13px}
    .topbar .link{background:none;border:none;color:var(--brand);cursor:pointer;font-size:13px;font-weight:600}
    main{max-width:980px;width:100%;margin:0 auto;padding:24px}
    .card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px;margin-bottom:18px;box-shadow:0 1px 3px rgba(15,23,42,.05)}
    h2{font-size:16px;margin:0 0 14px;font-weight:600}
    table{width:100%;border-collapse:collapse;font-size:14px}
    th,td{text-align:left;padding:10px;border-bottom:1px solid var(--line);vertical-align:top}
    th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:600}
    tr:last-child td{border-bottom:none}
    input,select{padding:10px 12px;font-size:14px;border:1px solid var(--line);border-radius:9px;outline:none;background:#fff;font-family:inherit}
    input:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
    /* textarea is absent from the rule above, so browsers fall back to their
       monospace default - most visibly on the reviewer comment box. */
    textarea{font-family:inherit}
    button{padding:10px 15px;font-size:14px;font-weight:600;color:#fff;background:var(--brand);border:none;border-radius:9px;cursor:pointer;font-family:inherit}
    button:hover:not(:disabled){background:var(--brand-2)}
    button.sm{padding:6px 10px;font-size:12px;border-radius:7px}
    button.danger{background:var(--error-bg);color:var(--error-text)} button.danger:hover{background:#fbdcd7}
    button.gray{background:#eef2f7;color:#475569} button.gray:hover{background:#e2e8f0}
    .row-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}
    .muted{color:var(--muted)}
    .msg{font-size:13px;margin-top:8px;min-height:16px}.msg.error{color:var(--error-text)}.msg.ok{color:var(--ok-text)}.msg.warning{color:var(--warn-text)}
    .load-warning{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:12px 22px 0;padding:10px 12px;border:1px solid #f1c9c3;border-radius:10px;background:var(--error-bg);color:var(--error-text);font-size:12px;line-height:1.45}
    .load-warning button{flex:0 0 auto;background:#fff;color:var(--error-text);border:1px solid #e8b2aa;border-radius:8px;padding:6px 10px;font:700 12px inherit;cursor:pointer}
    .pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;background:#eef2ff;color:var(--brand)}
    .behaviors{margin:10px 0 0;padding:14px;background:var(--panel);border:1px solid var(--line);border-radius:10px}
    .ticker{background:#10243E;color:#e2e8f0;overflow:hidden;white-space:nowrap}
    .ticker-track{display:inline-block;padding:8px 0;animation:tick 34s linear infinite}
    .ticker-item{display:inline-block;padding:0 30px;font-size:13px}
    .ticker-item.alert{color:#f5aea3;font-weight:600}
    @keyframes tick{from{transform:translateX(100%)}to{transform:translateX(-100%)}}
    .nav .tab .bi{font-size:17px;width:20px;text-align:center;opacity:.92}
    .kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px}
    .kpi{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;align-items:center;gap:14px;box-shadow:0 1px 3px rgba(15,23,42,.05)}
    .kpi .ico{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;color:#fff;flex-shrink:0}
    .kpi .num{font-size:24px;font-weight:700;line-height:1}
    .kpi .lbl{font-size:12px;color:var(--muted);margin-top:4px}
    /* Green/amber/red icon badges use Navy glyphs, not white - Dash Green,
       Dash Orange and Eye Coral don't clear WCAG contrast for white text/icons
       at these sizes (checked against the approved swatches). */
    .ico.blue{background:linear-gradient(135deg,#2C5A93,#123D73)}
    .ico.green{background:linear-gradient(135deg,#A8DC5F,#8CCB32);color:#10243E}
    .ico.amber{background:linear-gradient(135deg,#FF9955,#FF7A22);color:#10243E}
    .ico.red{background:linear-gradient(135deg,#F07A69,#E84B32);color:#10243E}
    .ico.violet{background:linear-gradient(135deg,#2C5A93,#10243E)}
    .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#2C5A93,#123D73);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
    .page-title{font-size:21px;font-weight:700;margin:0 0 3px}
    .page-sub{color:var(--muted);font-size:13px;margin:0 0 18px}
    .home-hero{max-width:660px;margin:2px 0 18px;display:flex;align-items:center;gap:16px}
    .home-hero img{height:72px;width:auto;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 3px 6px rgba(16,36,62,.18))}
    .home-hero h1{font-size:21px;margin:0 0 3px;font-weight:700;color:var(--ink)}
    .home-hero p{margin:0;color:var(--muted);font-size:13px}
    details summary{cursor:pointer}
    @media(max-width:720px){ .sidebar{width:150px} main{padding:16px} }

    /* v51 scheduling workspace. This stays in BehaviorDash's existing card,
       color and type system while giving the schedule enough horizontal room
       to behave like a real calendar instead of a seven-column list. */
    main.schedule-mode{max-width:1320px}
    .sched-shell{display:flex;flex-direction:column;gap:12px}
    .sched-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
    .sched-toolbar .sched-spacer{margin-left:auto}
    .sched-segment{display:inline-flex;flex-wrap:wrap;padding:4px;background:#eef3f5;border:1px solid var(--line);border-radius:13px;gap:2px}
    .sched-segment button{background:transparent;color:var(--muted);box-shadow:none;padding:8px 14px;font-size:12.5px}
    .sched-segment button:hover{background:#fff;color:var(--ink)}
    .sched-segment button.active{background:var(--brand);color:#fff;box-shadow:0 2px 6px rgba(18,61,115,.28)}
    .sched-segment button.active .bi{opacity:1}
    .sched-title{font-size:18px;font-weight:700;min-width:180px}
    .sched-filter{font-size:12px;padding:7px 9px}
    .sched-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:12px}
    .sched-metric{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#fff}
    .sched-metric strong{display:block;font-size:17px;line-height:1.15}
    .sched-metric span{display:block;color:var(--muted);font-size:11px;margin-top:2px}
    .sched-legend{display:flex;align-items:center;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:11px;margin-top:9px}
    .sched-legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px}
    .schedule-grid-card{padding:0;overflow:hidden}
    .schedule-grid-scroll{overflow:auto;max-height:690px;background:#fff}
    .schedule-timegrid{--hour-height:58px;display:grid;grid-template-columns:62px minmax(0,1fr);min-width:720px;position:relative}
    .schedule-timegrid.week{min-width:1050px}
    .schedule-timegrid-head{position:sticky;top:0;z-index:8;background:#fff;border-bottom:1px solid var(--line);display:grid;box-shadow:0 2px 5px rgba(16,36,62,.05)}
    .schedule-timegrid-head.day{grid-template-columns:1fr}
    .schedule-timegrid-head.week{grid-template-columns:repeat(7,minmax(132px,1fr))}
    .schedule-timegrid-corner{position:sticky;top:0;left:0;z-index:10;background:#fff;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
    .schedule-day-head{padding:10px 8px;text-align:center;border-left:1px solid var(--line);cursor:pointer}
    .schedule-day-head:hover{background:#f8fbfb}
    .schedule-day-head .dow{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}
    .schedule-day-head .daynum{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;margin:3px auto 0;font-size:14px;font-weight:700}
    .schedule-day-head.today .daynum{background:var(--brand);color:#fff}
    .schedule-time-axis{position:relative;background:#fbfdfd;border-right:1px solid var(--line)}
    .schedule-time-label{position:absolute;right:8px;transform:translateY(-50%);font-size:10.5px;color:var(--muted);white-space:nowrap}
    .schedule-days{display:grid;position:relative;background:#fff}
    .schedule-days.day{grid-template-columns:1fr}
    .schedule-days.week{grid-template-columns:repeat(7,minmax(132px,1fr))}
    .schedule-day-track{position:relative;border-left:1px solid var(--line);background-image:linear-gradient(to bottom,var(--line) 1px,transparent 1px),linear-gradient(to bottom,rgba(220,230,227,.45) 1px,transparent 1px);background-size:100% var(--hour-height),100% calc(var(--hour-height)/2);cursor:crosshair}
    .schedule-day-track:hover{background-color:#fbfdff}
    .schedule-event{position:absolute;z-index:3;border:1px solid rgba(16,36,62,.1);border-left:4px solid var(--event-accent);border-radius:7px;padding:4px 6px;background:var(--event-bg);color:var(--ink);overflow:hidden;cursor:pointer;box-shadow:0 1px 2px rgba(16,36,62,.08);text-align:left;min-height:23px}
    .schedule-event:hover:not(:disabled),.schedule-event:focus{z-index:6;background:var(--event-bg);box-shadow:0 4px 12px rgba(16,36,62,.18);outline:2px solid rgba(18,61,115,.18)}
    .schedule-event.cancelled{opacity:.5;text-decoration:line-through}
    .schedule-event.conflict{box-shadow:inset 0 0 0 1px #E84B32,0 1px 2px rgba(16,36,62,.08)}
    .schedule-event .event-time{font-size:10px;font-weight:700;white-space:nowrap}
    .schedule-event .event-title{font-size:11px;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .schedule-event .event-meta{font-size:9.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
    .schedule-now-line{position:absolute;left:0;right:0;height:2px;background:#E84B32;z-index:5;pointer-events:none}
    .schedule-now-line:before{content:"";position:absolute;left:-5px;top:-4px;width:9px;height:9px;border-radius:50%;background:#E84B32}
    .schedule-empty-hint{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);color:var(--muted);font-size:12px;text-align:center;pointer-events:none}
    .sched-month{display:grid;grid-template-columns:repeat(7,minmax(115px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line);min-width:850px}
    .sched-month-head{padding:8px;text-align:center;color:var(--muted);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#f8fbfb}
    .sched-month-day{min-height:116px;padding:6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;cursor:pointer;overflow:hidden}
    .sched-month-day:hover{background:#fbfdff}
    .sched-month-day.outside{background:#f8faf9;color:#9aa6ad}
    .sched-month-day.today{box-shadow:inset 0 0 0 2px var(--brand)}
    .sched-month-date{font-size:11px;font-weight:700;margin-bottom:4px}
    .sched-month-event{display:block;width:100%;border:0;border-left:3px solid var(--event-accent);background:var(--event-bg);color:var(--ink);padding:3px 5px;margin:2px 0;border-radius:5px;font-size:9.5px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .sched-month-event:hover:not(:disabled){background:var(--event-bg);filter:brightness(.97)}
    .sched-drawer-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
    .sched-drawer-grid label,.sched-field label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:4px;font-weight:600}
    .sched-drawer-grid input,.sched-drawer-grid select,.sched-field input,.sched-field select,.sched-field textarea{width:100%}
    .sched-field{margin-top:9px}
    .sched-scope{display:grid;gap:5px;margin-top:6px}
    .sched-scope label{display:flex;gap:8px;align-items:flex-start;padding:8px 9px;border:1px solid var(--line);border-radius:8px;cursor:pointer;font-size:12px}
    .sched-scope label:has(input:checked){border-color:var(--brand);background:#eff6ff}
    .sched-scope input{margin-top:2px}
    @media(max-width:900px){
      .sched-metrics{grid-template-columns:repeat(2,1fr)}
      .sched-toolbar .sched-spacer{display:none}
      .sched-title{order:-1;width:100%}
    }
    @media(max-width:720px){
      main.schedule-mode{padding:10px}
      .sched-metrics{grid-template-columns:1fr 1fr}
      .sched-drawer-grid{grid-template-columns:1fr}
      .schedule-grid-scroll{max-height:72vh}
    }

    /* ============================================================
       v57: Schedule redesign - one shared visual system applied across
       Calendar, Staffing Board, My Schedule, Staff Time, Availability,
       School Calendar and the appointment drawer. Everything here is
       either a new class (safe to add) or scoped under main.schedule-mode
       (only active while the Schedule tab is open), so nothing here
       touches Students/Staff/Assessments/etc. Nothing below changes a
       data query, a status value, or a permission check - visual only.
       ============================================================ */
    .sched-segment button{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
    .sched-segment button .bi{font-size:13px;opacity:.85}
    button.icon-only{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
    .sched-toolbar-nav{row-gap:8px}
    .sched-toolbar-filters{margin-top:8px;padding-top:10px;border-top:1px solid var(--line)}
    /* Filter pills - the Schola/Teamup-style "All 12 · Student 4 · Staff 3"
       quick filter, translated into BehaviorDash's own navy/white palette
       instead of Schola's pastel chips. Replaces the old plain <select> for
       activity category; status and staff keep their dropdowns (too many
       values to read comfortably as a pill row) but share the same
       .sched-filter treatment below so the whole bar reads as one system. */
    .filter-pills{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
    .filter-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:12.5px;font-weight:700;cursor:pointer;transition:background .12s,border-color .12s,color .12s,box-shadow .12s;box-shadow:var(--shadow-sm)}
    .filter-pill:hover{border-color:#b9c8d3;color:var(--ink);box-shadow:var(--shadow-md)}
    .filter-pill.active{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 3px 10px rgba(18,61,115,.3)}
    .filter-pill .count{background:#eef2f7;color:var(--ink);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:800}
    .filter-pill.active .count{background:rgba(255,255,255,.24);color:#fff}
    .sched-filter{border-radius:999px;padding:8px 14px}
    /* Stat cards - Calendar's summary row, restyled as icon-badge dashboard
       stat cards (Schola's Attendance-screen cards) - a colored circle per
       stat, bigger numbers, more air - instead of plain bordered numbers,
       using the same warn/error tokens as everywhere else in the app
       instead of new colors. */
    .sched-metric{display:flex;align-items:center;gap:13px;border:1px solid rgba(16,36,62,.06);border-radius:var(--radius-lg);padding:14px 16px;background:var(--tint-bg,#fff);box-shadow:var(--shadow-sm);transition:box-shadow .15s,transform .15s}
    .sched-metric:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
    .sched-metric .bi{font-size:18px;color:var(--tint-text,var(--brand));flex:0 0 auto;width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.62)}
    .sched-metric strong{font-size:20px;color:var(--tint-text,var(--ink))}
    .sched-metric span{color:var(--ink);opacity:.72}
    /* Hero banner - one shared header for every Schedule sub-tab, translating
       the "clear, colorful workspace header" pattern from the reference into
       BehaviorDash's own navy gradient and existing status-dot colors. */
    .sched-hero{background:linear-gradient(120deg,#0c2a4d,#123D73 55%,#1b4d8c);border-radius:var(--radius-lg);padding:24px 28px;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;box-shadow:var(--shadow-md)}
    .sched-hero-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#a9c9ea;font-weight:700}
    .sched-hero-text h1{margin:5px 0 5px;font-size:27px;color:#fff;font-weight:800}
    .sched-hero-text p{margin:0;color:#cfe0f0;font-size:13px;max-width:480px}
    .sched-hero-side{display:flex;flex-direction:column;align-items:flex-end;gap:5px}
    .sched-hero-stat{font-size:12.5px;font-weight:700;color:#fff;display:flex;align-items:center;gap:7px;justify-content:flex-end}
    .sched-hero-stat .dot{width:8px;height:8px;border-radius:50%;background:#8CCB32;flex:0 0 auto}
    .sched-hero-stat .dot.warn{background:#FF7A22}
    .sched-hero-stat.sub{font-weight:600;color:#bcd4ea;font-size:11.5px}
    .sched-hero-cta{margin-top:6px;background:#fff;color:var(--brand);border-radius:11px;padding:9px 16px;font-weight:700;display:inline-flex;align-items:center;gap:7px;box-shadow:0 8px 20px rgba(8,21,38,.22)}
    .sched-hero-cta:hover{background:#eef6ff;color:#10243E}
    @media(max-width:720px){ .sched-hero{padding:18px} .sched-hero-side{align-items:flex-start;width:100%} .sched-hero-stat{justify-content:flex-start} }
    /* Appointment cards - used on Calendar's list fallback, Staffing Board's
       activity list, and My Schedule - one class instead of a long inline
       style string repeated at every call site. A faint category-color
       wash on the card plus a colored icon badge and a staff avatar chip
       give each row real visual identity instead of a plain white box with
       a thin colored edge. */
    .appt-card{cursor:pointer;display:flex;gap:13px;align-items:flex-start;padding:14px 16px;border-radius:var(--radius-lg);border:1px solid var(--line);border-left:4px solid var(--accent,var(--brand));margin-bottom:10px;background:var(--accent-tint,#fff);box-shadow:var(--shadow-sm);transition:box-shadow .15s,transform .15s}
    .appt-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
    .appt-card.cancelled{opacity:.55}
    .appt-card.now{background:#fbfdff;box-shadow:0 0 0 2px rgba(18,61,115,.14)}
    .appt-card.alert{border-color:#E84B32}
    .appt-icon-badge{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;background:var(--accent-badge,#eef2f7);color:var(--accent-text,var(--brand));font-size:16px}
    .appt-card .appt-time{font-weight:700;font-size:13.5px}
    .appt-card .appt-now-tag{color:#4d701c;font-weight:700}
    .appt-card .appt-title{font-size:13.5px;font-weight:600;margin-top:2px}
    .appt-card .appt-meta{display:flex;align-items:center;gap:7px;font-size:11.5px;margin-top:6px}
    /* Small colored initials badge for staff - Staffing Board headers, Staff
       Time rows, and the meta line of every appointment card. */
    /* V251 G43: .avatar-badge retired with admin.html's avatarHtml(); see §48. */
    /* Calendar grid/month event chips - same accent-driven look as before,
       just softer edges and a hover lift to match the appointment cards. */
    .schedule-event{border-radius:8px;box-shadow:var(--shadow-sm)}
    .schedule-event:hover:not(:disabled),.schedule-event:focus{box-shadow:var(--shadow-md)}
    .sched-month-event{border-radius:6px;transition:filter .12s}
    /* Appointment detail drawer - a real right-side sliding panel (the
       "modern detail drawer" pattern from the Schola/Teamup references)
       instead of the old centered popup. apptDetailHtml/drawerActionsHtml
       and every action inside are unchanged; only the container moved. */
    .appt-drawer-overlay{position:fixed;inset:0;background:rgba(16,36,62,.42);z-index:80;display:flex;justify-content:flex-end}
    .appt-drawer{background:#fff;width:100%;max-width:440px;height:100%;overflow:auto;padding:18px 26px 30px;box-shadow:var(--shadow-lg);position:relative;animation:appt-drawer-in .2s ease-out}
    .appt-drawer::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:var(--accent,var(--brand))}
    @keyframes appt-drawer-in{from{transform:translateX(28px);opacity:0}to{transform:translateX(0);opacity:1}}
    .appt-drawer-head{display:flex;justify-content:flex-end;margin-bottom:2px}
    @media(max-width:640px){ .appt-drawer{max-width:100%} }
    /* Tables inside the Schedule tab only (Staffing Board grid, Staff Time
       grid) - a touch more breathing room and a hover row, without
       reaching outside main.schedule-mode into Students/Staff/etc. */
    main.schedule-mode table{border-radius:var(--radius-sm);overflow:hidden}
    main.schedule-mode th{background:#fbfdfd}
    main.schedule-mode tbody tr:hover td{background:#f8fbfd}
    /* A rounder, more spacious card language across the whole Schedule tab
       (18px vs the app-wide 14px) - one of the clearest, most immediate
       differences from the rest of BehaviorDash and from the pre-redesign
       Schedule screens, without touching the .card radius anywhere else
       in the app. */
    main.schedule-mode .card{border-radius:var(--radius-lg)}
    /* New-event "what are you scheduling?" picker and the fields step that
       follows it - same activity-type icons the rest of the app already
       uses, just presented as a real picker grid instead of plain gray
       buttons, and the fields step grouped into labeled rows instead of
       unlabeled inputs run together. */
    .type-pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}
    .type-chip{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-md);border:1px solid var(--line);background:#fff;text-align:left;color:var(--ink);font-weight:600;font-size:12.5px;box-shadow:var(--shadow-sm);cursor:pointer;transition:box-shadow .15s,border-color .15s}
    .type-chip:hover:not(:disabled){box-shadow:var(--shadow-md);border-color:#c9d6e0}
    .type-chip-icon{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:14px;flex:0 0 auto;background:var(--chip-bg,#eef2f7);color:var(--chip-color,var(--brand))}
    .sched-form-card{border:1px solid var(--line);border-radius:var(--radius-md);padding:16px;background:#fbfdfd}
    .sched-form-foot{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);display:flex;gap:8px;align-items:center}
    /* v52 availability workspace. Weekly hours and dated exceptions are
       intentionally separate: a repeating work pattern should not have to
       be rewritten for one day of PTO, training, or another exception. */
    .availability-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:14px;align-items:start}
    .availability-day{display:grid;grid-template-columns:34px minmax(90px,1fr) minmax(110px,145px) 18px minmax(110px,145px);gap:8px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}
    .availability-day:last-child{border-bottom:none}
    .availability-day input[type="checkbox"]{width:18px;height:18px;margin:0;accent-color:var(--brand)}
    .availability-day input[type="time"]{width:100%}
    .availability-day.off{color:var(--muted)}
    .availability-day.off input[type="time"]{opacity:.45}
    .availability-exception{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}
    .availability-exception:last-child{border-bottom:none}
    .availability-status{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 8px;font-size:10.5px;font-weight:700;background:#eef2f7;color:#475569}
    .availability-status.available{background:var(--ok-bg);color:var(--ok-text)}
    .availability-status.time_off,.availability-status.outside_hours{background:var(--warn-bg);color:var(--warn-text)}
    .availability-status.conflict{background:var(--error-bg);color:var(--error-text)}
    .availability-cell-off{background:#f5f7f7!important;color:#8a979d}
    .availability-cell-time-off{background:var(--warn-bg)!important;color:var(--warn-text)}
    @media(max-width:900px){.availability-layout{grid-template-columns:1fr}}
    @media(max-width:560px){
      .availability-day{grid-template-columns:30px 1fr 1fr;gap:6px}
      .availability-day .availability-day-name{grid-column:2/4}
      .availability-day .availability-to{display:none}
    }
    /* v53 school-calendar overlays. These are deliberately quieter than
       appointment cards: the school day is context surrounding the work,
       while a coral outline is reserved for an actual appointment conflict. */
    .school-calendar-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:2px 0 14px}
    .school-timezone{display:flex;align-items:center;gap:9px;border:1px solid var(--line);background:#fff;border-radius:11px;padding:9px 12px;color:var(--brand)}
    .school-timezone i{font-size:18px}.school-timezone b{display:block;font-size:12px}.school-timezone span{display:block;color:var(--muted);font-size:10px;margin-top:1px}
    .school-calendar-strip{display:flex;align-items:flex-start;gap:12px;justify-content:space-between;border:1px solid #d8e3ef;background:#f7faff;border-radius:10px;padding:9px 11px;margin-bottom:10px;font-size:12px}
    .school-calendar-strip-items{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
    .school-calendar-chip{display:inline-flex;align-items:center;gap:5px;border-left:3px solid var(--school-color);background:#fff;border-radius:6px;padding:4px 7px;color:var(--ink);font-size:10.5px;box-shadow:0 1px 2px rgba(16,36,62,.05)}
    .school-day-head-chips{display:flex;justify-content:center;gap:3px;flex-wrap:wrap;margin-top:4px}
    .school-day-head-chips span,.school-month-chip{display:block;border-left:3px solid var(--school-color);background:color-mix(in srgb,var(--school-color) 10%,white);color:var(--ink);border-radius:4px;padding:2px 4px;font-size:8.5px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .school-month-chip{margin:2px 0;font-weight:700}
    .sched-month-event.school-conflict{box-shadow:inset 0 0 0 1px #E84B32}
    .school-calendar-form{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:9px;margin-top:12px}
    .school-calendar-form label,.school-impact-resolution label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:4px;font-weight:600}
    .school-calendar-form input,.school-calendar-form select,.school-calendar-form textarea{width:100%}
    .school-calendar-form .school-title-field{grid-column:span 2}.school-calendar-form .school-detail-field{grid-column:span 2}
    .school-calendar-effects{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px}.school-calendar-effects label{display:flex;align-items:center;gap:6px}
    .school-rule-card{display:flex;align-items:flex-start;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}
    .school-rule-card:last-child{border-bottom:none}.school-rule-icon{width:34px;height:34px;border-radius:9px;background:color-mix(in srgb,var(--school-color) 12%,white);color:var(--school-color);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
    .school-rule-actions{display:flex;gap:5px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
    .school-impact-panel{border:1px solid #f1c9c3}.school-impact-list{margin-top:11px;border-top:1px solid var(--line)}
    .school-impact-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 5px;border-bottom:1px solid var(--line);cursor:pointer}.school-impact-row:hover{background:#f8fbfb}
    .school-impact-resolution{margin-top:12px;padding:11px;border-radius:9px;background:var(--error-bg);border:1px solid #f1c9c3}.school-impact-resolution textarea{width:100%}
    @media(max-width:900px){.school-calendar-form{grid-template-columns:repeat(2,1fr)}.school-calendar-hero{flex-direction:column}.school-calendar-strip{flex-direction:column}.school-calendar-strip-items{justify-content:flex-start}}
    @media(max-width:560px){.school-calendar-form{grid-template-columns:1fr}.school-calendar-form .school-title-field,.school-calendar-form .school-detail-field{grid-column:auto}.school-rule-card{flex-wrap:wrap}.school-rule-actions{width:100%;justify-content:flex-start}}
    /* v54 school-year planning workspace. It deliberately combines the
       familiar density of a paper school calendar with BehaviorDash's live
       scheduling data instead of presenting another stack of admin cards. */
    .school-planner-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding:12px 14px;margin-bottom:10px}
    .school-planner-filters{display:flex;gap:9px;align-items:flex-end;flex-wrap:wrap}
    .school-planner-filters label,.school-bulk-options label{display:block;font-size:9.5px;text-transform:uppercase;letter-spacing:.055em;color:var(--muted);font-weight:700;margin-bottom:4px}
    .school-planner-filters select{min-width:122px;max-width:190px}
    .school-planner-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
    .school-planner-tabs{display:inline-flex;align-items:center;gap:3px;background:#eaf0f5;border-radius:10px;padding:4px;margin-bottom:10px}
    .school-planner-tabs button{border:0;background:transparent;color:#4c5f70;font:inherit;font-size:12px;font-weight:700;padding:7px 11px;border-radius:7px;cursor:pointer}
    .school-planner-tabs button i{margin-right:4px}.school-planner-tabs button.active{background:#fff;color:var(--brand);box-shadow:0 1px 4px rgba(16,36,62,.13)}
    .school-year-metrics{margin-bottom:10px}
    /* v55: pulled back toward a plain, printable paper calendar - a quiet
       heading instead of a dark gradient banner, dates-only day cells (one
       thin color strip, no dot clutter or "+N" badges), and a settings
       popover so one-time org prefs (year start/week start) don't have to
       occupy the toolbar on every visit. */
    .school-year-sheet{background:#fff;border:1px solid #d7e1ea;border-radius:10px;overflow:hidden;padding:16px}
    .school-year-heading{margin:0 0 12px;display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap;border-bottom:2px solid #123D73;padding-bottom:8px}
    .school-year-heading h2{color:#123D73;margin:0;font-size:22px;letter-spacing:-.01em}
    .school-year-heading span{font-size:11px;color:var(--muted)}
    .school-year-legend{display:flex;align-items:center;gap:12px;flex-wrap:wrap;color:#506271;font-size:9.5px;margin:0 1px 12px}
    .school-year-legend span{display:flex;align-items:center;gap:4px}.school-year-legend i{width:7px;height:7px;border-radius:50%;display:inline-block}
    /* v55.1: rebuilt to match the actual reference structure - six months
       stacked left, six months stacked right, and a wide center column
       holding the complete, editable Important Dates list. The split is
       deliberate: the grids answer "what day of the week does this fall
       on", the center column answers "what is this" - not two competing
       ways to show the same thing. Editing a row here re-renders from the
       same rules array the month grids read, so the color strip on the
       grid updates in the same pass, automatically. */
    /* Column widths per spec: side calendars ~29% each, center ~42% - keeps
       the month grids readable instead of squeezed thin next to the list. */
    .school-year-3col{display:grid;grid-template-columns:minmax(190px,29fr) minmax(320px,42fr) minmax(190px,29fr);gap:16px;align-items:start}
    .school-year-side{display:flex;flex-direction:column;gap:14px;min-width:0;position:sticky;top:14px;align-self:start}
    .school-year-center{min-width:0;border-left:1px solid #e3e9ef;border-right:1px solid #e3e9ef;padding:0 16px}
    /* The months stay put (sticky, above) while a long dates list scrolls
       in its own lane - a school with a packed calendar doesn't turn the
       whole page into one long scroll. Scrollbar kept thin/quiet so the
       three columns still read as one sheet, not three separate panels. */
    .school-year-center-scroll{max-height:min(82vh,900px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#c3d0dc transparent}
    .school-year-center-scroll::-webkit-scrollbar{width:7px}
    .school-year-center-scroll::-webkit-scrollbar-thumb{background:#c3d0dc;border-radius:6px}
    .school-year-center-scroll::-webkit-scrollbar-track{background:transparent}
    .school-center-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;position:sticky;top:0;background:#fff;padding-top:2px;z-index:1}
    .school-center-head h3{margin:0;font-size:14px;color:#123D73}
    .school-center-head span{font-size:10px;font-weight:800;background:#e7eef5;color:#405b74;padding:3px 7px;border-radius:999px;white-space:nowrap}
    .school-center-month{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:#123D73;padding:11px 0 4px;border-bottom:2px solid #d6e3ef}
    .school-center-month:first-child{padding-top:0}
    .school-center-row{padding:8px 0 8px 9px;border-bottom:1px solid #edf1f4;border-left:3px solid var(--school-color)}
    .school-center-body b{font-size:12.5px;color:#10243E}
    .school-center-type{font-size:9px;font-weight:800;color:#506271;background:#f1f4f6;border-radius:999px;padding:2px 6px;margin-left:5px;white-space:nowrap}
    .school-center-detail{font-size:10.5px;color:var(--muted);margin-top:2px}
    .school-center-conflict{display:inline-block;font-size:9.5px;color:var(--error-text);font-weight:800;margin-top:3px}
    .school-center-row .school-rule-actions{margin-top:4px;justify-content:flex-start}
    .school-center-empty{text-align:center;padding:34px 10px;color:var(--muted);font-size:12px}
    .school-center-empty i{font-size:26px;color:#86a2bb;display:block;margin-bottom:8px}
    @media(max-width:1180px){.school-year-3col{grid-template-columns:1fr}.school-year-center{border-left:0;border-right:0;padding:8px 0;order:-1}}
    .school-year-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 14px}
    .school-year-month{min-width:0;border:1px solid #d7e1ea;border-radius:6px;overflow:hidden;background:#fff}
    .school-year-month-title{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;background:#f1f5f9;color:#123D73;border-bottom:1px solid #d4e0ea}
    .school-year-month-title b{font-size:12.5px;font-weight:800}.school-year-month-title span{font-size:9px;color:#647889;font-weight:700}
    .school-year-weekdays,.school-year-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
    .school-year-weekdays{background:#fff;border-bottom:1px solid #edf1f4}.school-year-weekdays span{text-align:center;padding:4px 0;font-size:8px;font-weight:800;color:#8695a3;text-transform:uppercase}
    .school-year-day{appearance:none;border:0;border-right:1px solid #edf1f4;border-bottom:1px solid #edf1f4;background:#fff;color:#263d50;min-width:0;height:34px;padding:4px 0 0;display:flex;align-items:flex-start;justify-content:center;cursor:pointer;font:inherit;text-align:center;position:relative}
    .school-year-day:nth-child(7n){border-right:0}.school-year-day:nth-last-child(-n+7){border-bottom:0}.school-year-day.empty{background:#fbfcfd;cursor:default}.school-year-day.weekend{background:#fafbfc}.school-year-day:hover:not(.empty){background:#edf6ff;box-shadow:inset 0 0 0 1px #7aa6d2}.school-year-day.today{box-shadow:inset 0 0 0 2px #123D73}
    .school-year-day.has-rule::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--school-color)}
    .school-year-day-number{font-size:11.5px;line-height:1}.school-year-day.has-rule .school-year-day-number{font-weight:800;color:#123D73}
    .school-important-dates{padding:0 16px 14px;overflow:hidden}.school-list-head{margin:0 -16px;padding:13px 16px;background:#f5f8fb;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:center}.school-list-head h2{margin:0}.school-list-head p{margin:3px 0 0;font-size:11px;color:var(--muted)}.school-list-head>span{font-size:10px;font-weight:800;background:#e7eef5;color:#405b74;padding:4px 8px;border-radius:999px;white-space:nowrap}
    .school-date-month{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#123D73;padding:16px 0 5px;border-bottom:2px solid #d6e3ef}
    .school-date-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto auto;gap:11px;align-items:center;padding:8px 0;border-bottom:1px solid #edf1f4;border-left:3px solid var(--school-color);padding-left:9px}
    .school-date-number{text-align:center;line-height:1}.school-date-number b{display:block;color:#718191;font-size:8px;text-transform:uppercase}.school-date-number strong{display:block;font-size:18px;color:#123D73;margin-top:2px}.school-date-main{min-width:0}.school-date-main>div{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.school-date-main>div span{font-size:9px;font-weight:800;color:#506271;background:#f1f4f6;border-radius:999px;padding:3px 6px}.school-date-main p{font-size:10.5px;color:var(--muted);margin:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .school-date-impact{font-size:9.5px;color:var(--muted);white-space:nowrap}.school-date-impact.attention{color:var(--error-text);font-weight:800}.school-empty{text-align:center;padding:38px}.school-empty i{font-size:30px;color:#86a2bb}.school-empty h2{margin:8px 0 2px}.school-empty p{margin:0;color:var(--muted);font-size:12px}
    .link-action{border:0;background:none;padding:0;font:inherit;font-size:11px;font-weight:700;color:#506271;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
    .link-action+.link-action{margin-left:10px}.link-action.danger{color:var(--error-text)}.link-action:hover{color:var(--brand)}.link-action.danger:hover{opacity:.8}
    .school-settings-wrap{position:relative}
    .school-settings-wrap .icon-only{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center}
    .school-settings-pop{position:absolute;top:36px;right:0;z-index:20;background:#fff;border:1px solid #d7e1ea;border-radius:9px;box-shadow:0 6px 18px rgba(16,36,62,.14);padding:11px;display:flex;flex-direction:column;gap:9px;min-width:170px;max-width:230px}
    .school-settings-pop select{width:100%}
    /* Specificity note: .school-planner-filters label (above, in the main
       toolbar rules) is class+element and beats a plain .school-settings-check
       class selector, which silently forced this one back to that rule's
       uppercase/9.5px/muted styling. Matching it with label.school-settings-check
       (also class+element, later in the file) is what actually wins here. */
    label.school-settings-check{display:flex;flex-direction:column;gap:2px;font-size:12px;font-weight:600;color:var(--ink);text-transform:none;letter-spacing:normal;border-top:1px solid var(--line);padding-top:9px;cursor:pointer}
    .school-settings-check input{margin-right:2px}
    .school-settings-check span{font-size:10px;font-weight:400;color:var(--muted);text-transform:none;letter-spacing:normal;margin-left:20px}
    .school-setup-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(390px,1.08fr);gap:12px;align-items:start}.school-setup-grid>.school-bulk-card{margin:0}
    .school-bulk-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.school-bulk-head span{font-size:9px;font-weight:800;color:#ff6d23;text-transform:uppercase;letter-spacing:.1em}.school-bulk-head h2{font-size:16px;margin:1px 0 3px}.school-bulk-head p{font-size:11px;color:var(--muted);margin:0;max-width:520px}.school-bulk-head>i{font-size:24px;color:#ff7624;background:#fff0e6;border-radius:10px;padding:8px 10px}
    .school-format-box{background:#f5f8fb;border:1px solid #dce6ef;border-radius:8px;padding:8px 10px;margin:11px 0 8px;font-size:10.5px}.school-format-box b{display:block;font-size:9px;text-transform:uppercase;color:#52687a;margin-bottom:3px}.school-format-box code{display:block;color:#123D73;font-weight:700;white-space:normal}.school-format-box span{display:block;color:var(--muted);margin-top:3px}
    .school-bulk-card>textarea{width:100%;resize:vertical;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;background:#fbfcfd}.school-bulk-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.school-bulk-options select{width:100%}.school-bulk-buttons{display:flex;gap:7px;margin-top:10px}
    .school-bulk-preview{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.school-preview-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px}.school-preview-summary span{color:var(--warn-text)}.school-import-errors{margin:7px 0}.school-import-error{font-size:10.5px;color:var(--error-text);background:var(--error-bg);padding:5px 7px;border-bottom:1px solid #f3d1cc}.school-import-error:first-child{border-radius:6px 6px 0 0}.school-import-error:last-child{border-radius:0 0 6px 6px;border-bottom:0}
    .school-bulk-preview table{width:100%;border-collapse:collapse;margin-top:8px;font-size:10.5px}.school-bulk-preview th,.school-bulk-preview td{text-align:left;padding:5px 6px;border-bottom:1px solid #edf1f4}.school-bulk-preview th{font-size:8.5px;text-transform:uppercase;color:var(--muted)}.school-preview-type{display:inline-flex;border-left:3px solid var(--school-color);background:#f5f7f9;padding:2px 5px;border-radius:4px;font-size:9px;font-weight:700;white-space:nowrap}.school-import-footer{display:flex;align-items:center;gap:8px;margin-top:9px}
    /* v56: download-a-template / upload-it-back row, sitting above the
       still-available paste box (now tucked behind <details> since most
       people will use the template instead once it exists). */
    .school-bulk-template-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:12px}
    .school-bulk-file-label{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
    .school-bulk-reference{display:flex;flex-direction:column;gap:6px;font-size:10.5px;color:var(--muted);margin-top:9px}
    .school-bulk-reference b{color:#52687a;font-weight:700}
    .school-bulk-reference-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
    .school-bulk-type-key{margin:0;gap:10px}
    .school-bulk-paste{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
    .school-bulk-paste>summary{cursor:pointer;font-size:12px;font-weight:700;color:#123D73;list-style:none}
    .school-bulk-paste>summary::-webkit-details-marker{display:none}
    .school-bulk-paste>summary::before{content:"▸ ";font-size:10px}
    .school-bulk-paste[open]>summary::before{content:"▾ "}
    /* v56: adding/editing one date opens as an overlay on top of whatever
       view is already on screen (Year Planner, Important Dates, or the
       import tab) instead of navigating away from it - same visual
       language as the existing session-detail modal (.sess-overlay above)
       so it reads as a natural part of the app, not a new pattern. */
    .school-day-overlay{position:fixed;inset:0;background:rgba(16,36,62,.45);display:flex;align-items:center;justify-content:center;z-index:400;padding:20px}
    .school-day-modal{background:#fff;border-radius:16px;max-width:640px;width:100%;max-height:85vh;overflow:auto;padding:22px 24px;box-shadow:0 20px 60px rgba(0,0,0,.28)}
    .school-day-modal .card{padding:0}
    @media(max-width:1100px){.school-year-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.school-setup-grid{grid-template-columns:1fr}.school-planner-toolbar{align-items:flex-start;flex-direction:column}.school-planner-actions{justify-content:flex-start}}
    @media(max-width:760px){.school-year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.school-date-row{grid-template-columns:42px minmax(0,1fr)}.school-date-impact,.school-date-row .school-rule-actions{grid-column:2}.school-date-row .school-rule-actions{justify-content:flex-start}.school-year-heading{align-items:flex-start;flex-direction:column}.school-planner-filters>div{flex:1 1 135px}.school-planner-filters select{width:100%;max-width:none}.school-planner-actions button{flex:1 1 auto}}
    @media(max-width:500px){.school-year-grid{grid-template-columns:1fr}.school-planner-tabs{display:grid;grid-template-columns:1fr;width:100%}.school-bulk-options{grid-template-columns:1fr}.school-planner-actions{width:100%}}
    /* Printing a session recap: everything else on the page is hidden and
       only #print-area is shown, laid out for a clean printed/PDF page
       rather than the on-screen modal chrome (buttons, overlay, etc). Kept
       deliberately compact - charts run two-up instead of stacked
       full-width, and every element here is sized down from its on-screen
       equivalent - so a recap prints as one page (two at most with a long
       note), not four or five.
       Note: #login/#app-shell/#sess-overlay/#goal-overlay are hidden with
       display:none (not just visibility:hidden), which fully removes them -
       and everything nested in them - from the page layout. Just making
       them invisible still left their full height in the document flow,
       and the whole admin console (sidebar, every dashboard tab/table, all
       of it) is tall enough on its own to force several extra blank
       printed pages even though nothing on them is visible - that was the
       real cause of "it prints 4-5 pages" reports, not the chart sizing.
       #print-area is kept as its own top-level element (a direct sibling,
       not nested inside #app-shell/#sess-overlay/#goal-overlay) precisely
       so hiding those can never hide it too. */
    #print-area{ display:none; }
    @media print {
      /* V250 Workstream I. Page furniture on a printed clinical record —
         see app/admin.html's setPrintPageFurniture() for why this is here
         and why no paged-media library was adopted to get it. The two
         custom properties are set from JavaScript immediately before
         window.print(); the empty-string fallbacks mean a print path that
         does not set them (or a browser that ignores margin boxes) prints
         exactly what it printed before. */
      @page{ margin:0.45in;
        @top-left{ content: var(--print-head, ""); font-size:8.5px; color:#5C6B78; }
        @bottom-left{ content: var(--print-foot, ""); font-size:8.5px; color:#5C6B78; }
        @bottom-right{ content: "Page " counter(page) " of " counter(pages); font-size:8.5px; color:#5C6B78; }
      }
      #login, #app-shell, #sess-overlay, #goal-overlay{ display:none !important; }
      #print-area{ display:block; width:100%; padding:0; font-family:inherit; color:#10243E; font-size:12px; line-height:1.35; }
      #print-area h1{ font-size:16px; margin:0 0 1px; }
      #print-area h2{ font-size:11.5px; font-weight:600; color:#5C6B78; margin:0 0 8px; }
      #print-area table{ width:100%; border-collapse:collapse; font-size:11px; margin-bottom:8px !important; }
      #print-area td, #print-area th{ padding:3px 4px; }
      #print-area .sm-note{ margin-bottom:8px !important; padding:8px 10px !important; font-size:11.5px !important; }
      #print-area img.sm-sig{ max-width:130px !important; margin-bottom:8px; }
      #print-area .chart-grid{ display:flex; flex-wrap:wrap; gap:2px 18px; }
      #print-area .chart-block{ flex:1 1 46%; max-width:47%; margin-bottom:4px !important; page-break-inside:avoid; }
      #print-area .chart-block > div:first-child{ font-size:10px !important; }
      #print-area .chart-block svg text{ font-size:8px !important; }
      /* Session Export section headers ("Session Statistics", "Goals worked
         on", etc.) - sized down for print, same idea as h1/h2 above. */
      #print-area .sess-h{ font-size:12.5px !important; margin:10px 0 4px !important; }
      /* Deliberately NOT page-break-inside:avoid here - a section can
         easily run taller than one page, and "avoid" on something that
         tall just pushes the whole thing onto the next page, leaving the
         rest of the current page blank. "avoid" only goes on the small,
         genuinely one-piece .card blocks below (one per target) and
         .chart-block above. */
      #print-area .card{ page-break-inside:avoid; margin-top:6px !important; padding:8px 10px !important; font-size:11.5px !important; }
      /* v249 (Workstream 12, Awards/Certificates). printCertificate()'s own
         layout - a single centered page, not the Session Recap's h1/h2/
         table conventions above (a certificate has neither a table nor the
         recap's own two-line title). Hierarchy is carried by size/weight/
         ink alone, same as the rest of the product - no color chip, no
         border, no corner accent. */
      #print-area .certificate-print{ text-align:center; padding:56px 24px 24px; }
      #print-area .certificate-print h1{ font-size:26px; margin:8px 0 22px; color:#123D73; font-weight:800; }
      #print-area .certificate-eyebrow{ font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:#5C6B78; margin:0 0 2px; }
      #print-area .certificate-line{ font-size:13px; color:#5C6B78; margin:14px 0 2px; }
      #print-area .certificate-name{ font-size:23px; font-weight:700; margin:2px 0 4px; }
      #print-area .certificate-target{ font-size:16px; font-weight:600; margin:2px 0 4px; }
      #print-area .certificate-date{ font-size:12px; color:#5C6B78; margin:26px 0 4px; }
      #print-area .certificate-signoff{ font-size:12px; margin:2px 0; }
    }
    /* v55.2: rebuilt around the actual reference layout - one portrait
       page, six months stacked left, six months stacked right, and a wide
       center column carrying the complete, readable Important Dates text.
       The month grids stay dates-only (plus a soft color tint) precisely
       so the center column is where descriptions get read - that split is
       the whole point of the layout, not an accident of space.
       Deliberately NOT inside @media print: printSchoolYear() needs these
       rules active for a moment while #print-area is still on-screen (off
       to the side, see the position:fixed rule just below) so it can
       measure real rendered heights and split the Important Dates list at
       an actual boundary - "fit what fits, continue the rest on a clean
       page 2" - rather than shrinking fonts until everything crams onto
       one page regardless of how much text there is. The scoping selector
       (body.print-school-calendar, only ever set by printSchoolYear()
       itself) keeps this invisible to every other screen. Once measuring
       is done, printSchoolYear() adds a second class (.print-ready) right
       before calling window.print() - the two-class selector below has
       higher specificity than the off-screen rule regardless of source
       order, so the real printout reliably gets normal in-page position,
       never the off-screen one. */
    /* v55.3: the printed page must always be plain white paper, regardless
       of the app's own on-screen background (a pale mint-gray, --bg above) -
       without forcing it here, that tone can bleed through onto the actual
       printout and read as a dingy/gray page instead of clean white. Forced
       on both <body> itself and #print-area/the sheet, since either one
       left unset is enough for the tint to show through. */
    body.print-school-calendar{background:#fff}
    body.print-school-calendar #print-area{display:block;position:fixed;top:0;left:-10000px;width:7.8in;font-size:9px;color:#10243E;background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}
    body.print-school-calendar.print-ready #print-area{position:static;left:auto;width:100%}
    body.print-school-calendar #print-area .school-year-print{background:#fff}
    /* Logo centered above the org name/title (its own row) instead of a
       small icon squeezed beside the text - bigger and more prominent,
       reads as the page's masthead rather than an afterthought. */
    body.print-school-calendar #print-area .school-year-print>header{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-align:center;margin-bottom:9px}
    body.print-school-calendar #print-area .school-year-print>header img{max-height:46px;max-width:190px;margin-bottom:2px}
    body.print-school-calendar #print-area .school-year-print>header span{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.1em;color:#5C6B78}
    body.print-school-calendar #print-area .school-year-print>header h1{font-size:19px;margin:0;color:#123D73;font-weight:800}
    body.print-school-calendar #print-area .school-year-print>header p{font-size:7.5px;margin:1px 0 0;color:#5C6B78}
    body.print-school-calendar #print-area .school-year-legend{justify-content:center;margin:0 0 6px;font-size:7px;gap:9px}
    /* Column widths per spec: side calendars ~29% each, center ~42% -
       readable dates without the grids going microscopic. */
    body.print-school-calendar #print-area .school-print-3col{display:grid;grid-template-columns:29fr 42fr 29fr;gap:12px;align-items:start}
    body.print-school-calendar #print-area .school-print-side{display:flex;flex-direction:column;gap:5px}
    body.print-school-calendar #print-area .school-print-month{border:1px solid #9eb2c5;border-radius:2px;page-break-inside:avoid}
    body.print-school-calendar #print-area .school-print-month h3{font-size:9.5px;margin:0;padding:3px 6px;background:#123D73;color:#fff;text-align:center;font-weight:700}
    body.print-school-calendar #print-area .school-print-weekdays,body.print-school-calendar #print-area .school-print-days{display:grid;grid-template-columns:repeat(7,1fr)}
    body.print-school-calendar #print-area .school-print-weekdays b{text-align:center;font-size:6.5px;padding:1.5px 0;background:#e4edf5;color:#334d65}
    body.print-school-calendar #print-area .school-print-day{height:17.5px;border-right:1px solid #d9e0e6;border-bottom:1px solid #d9e0e6;padding:1.5px 3px;overflow:hidden}
    body.print-school-calendar #print-area .school-print-day:nth-child(7n){border-right:0}body.print-school-calendar #print-area .school-print-day.weekend{background:#f6f8fa}
    body.print-school-calendar #print-area .school-print-day[style*="--school-color"]{background:color-mix(in srgb,var(--school-color) 18%,white)}
    body.print-school-calendar #print-area .school-print-day b{display:block;font-size:8px;line-height:1;font-weight:700}
    body.print-school-calendar #print-area .school-year-print>footer{font-size:6.5px;color:#667786;margin-top:6px;text-align:center}
    /* Center column: this is where the readable text lives - one compact
       entry per row (date, title, type/time/location/detail), grouped by
       nothing but chronology, same order as the month grids beside it. */
    body.print-school-calendar #print-area .school-print-center{border-left:1px solid #d9e0e6;border-right:1px solid #d9e0e6;padding:0 13px;overflow:hidden}
    body.print-school-calendar #print-area .school-print-list-row{border-bottom:1px dotted #c7d2dc;padding:4px 0 4px 8px;border-left:3px solid var(--school-color);page-break-inside:avoid}
    body.print-school-calendar #print-area .school-print-list-date{display:block;font-size:8px;font-weight:800;color:#506271;text-transform:uppercase;letter-spacing:.03em}
    body.print-school-calendar #print-area .school-print-list-title{display:block;font-size:11.5px;font-weight:800;color:#10243E;margin-top:1.5px}
    body.print-school-calendar #print-area .school-print-list-meta{display:block;font-size:9px;color:#5C6B78;margin-top:1.5px}
    body.print-school-calendar #print-area .school-print-list-empty{font-size:10px;color:#8695a3;text-align:center;padding:30px 0}
    /* Overflow continuation page - only rendered when the Important Dates
       list doesn't fit next to the months. Never shrinks the primary page
       to force it to fit; the rest just continues cleanly on its own page. */
    body.print-school-calendar #print-area .school-print-continuation{break-before:page;page-break-before:always;padding-top:14px}
    body.print-school-calendar #print-area .school-print-continuation h2{font-size:14px;color:#123D73;border-bottom:2px solid #123D73;padding-bottom:6px;margin:0 0 10px}
    body.print-school-calendar #print-area .school-print-continuation-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
    body.print-school-calendar #print-area .school-print-continuation-grid .school-print-list-row{break-inside:avoid;page-break-inside:avoid}
    /* Session detail modal - opened from a flagged review row so a
       supervisor can actually see what was recorded, not just the flag
       message, without leaving the Review tab. */
    .sess-overlay{position:fixed;inset:0;background:rgba(16,36,62,.45);display:flex;align-items:center;justify-content:center;z-index:500;padding:20px}
    .sess-overlay.hidden{display:none}
    .sess-modal{background:#fff;border-radius:16px;max-width:640px;width:100%;max-height:85vh;overflow:auto;padding:24px 26px;box-shadow:0 20px 60px rgba(0,0,0,.28)}
    .sess-modal .sm-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
    .sess-modal .sm-title{font-size:18px;font-weight:700;color:var(--ink);margin:0}
    .sess-modal .sm-meta{color:var(--muted);font-size:13px;margin-top:3px}
    .sess-modal .sm-close{background:none;border:none;font-size:20px;line-height:1;cursor:pointer;color:var(--muted);padding:2px 6px}
    .sess-modal .sm-note{background:#f8fafc;border-radius:10px;padding:12px 14px;font-size:13.5px;color:var(--ink);margin:12px 0}
    .sess-modal table{width:100%;border-collapse:collapse;margin-top:6px}
    .sess-modal td{padding:7px 4px;font-size:13.5px;border-bottom:1px solid #eef2f7}
    .sess-modal img.sm-sig{max-width:220px;border:1px solid var(--line);border-radius:8px;margin-top:6px;background:#fff}

    /* v56.2: Weekly Staff Time - a read-only grid (staff rows x day
       columns), same shape as the Attendance-style matrix James pointed to
       from Schola, rebuilt in BehaviorDash's own palette and reusing the
       existing --ok/--warn/--error tokens instead of new colors. */
    .stime-toolbar-card{padding-bottom:10px}
    .stime-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
    .stime-week-nav{display:flex;align-items:center;gap:8px}
    .stime-week-nav .icon-only{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center}
    .stime-range{font-weight:700;font-size:13.5px;color:var(--ink);min-width:150px;text-align:center}
    .stime-loc-field{display:flex;align-items:center;gap:8px}
    .stime-loc-field label{font-size:9.5px;text-transform:uppercase;letter-spacing:.055em;color:var(--muted);font-weight:700}
    .stime-metrics{margin-top:14px;margin-bottom:0}
    .stime-table-card{padding:14px 0 8px}
    .stime-table{width:100%;border-collapse:collapse;font-size:12px}
    .stime-table th{text-align:left;padding:6px 10px;font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap}
    .stime-table td{padding:5px 8px;border-bottom:1px solid #edf1f4;vertical-align:top}
    .stime-table td:first-child,.stime-table th:first-child{padding-left:16px;position:sticky;left:0;background:#fff}
    /* v249 (Workstream 20, finding 3). Live Operations Center's own
       scrollable-sideways table follows the exact same sticky-first-
       column convention .stime-table already established, so the
       "which student is this row" column never scrolls out of view on
       an iPad/phone-width viewport. */
    .live-ops-table td:first-child,.live-ops-table th:first-child{position:sticky;left:0;background:#fff}
    .stime-name{font-weight:700;color:var(--ink);white-space:nowrap;font-size:12px}
    .stime-cell{min-width:92px;border-radius:10px;padding:8px 9px;background:#f8fafc;border:1px solid transparent;text-align:center}
    .stime-cell.empty{background:none;color:#c3ccd4;text-align:center;padding:5px 0;border-color:transparent}
    .stime-cell.complete{background:var(--ok-bg);border-color:#cfe8a0}
    .stime-cell.incomplete{background:var(--error-bg);border-color:#f3c4bb}
    .stime-hours{font-size:11.5px;line-height:1.3;color:var(--ink)}
    .stime-hours b{font-weight:800}
    .stime-hours span{display:block;color:var(--muted);font-size:9.5px}
    .stime-flags{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:3px}
    .stime-flag{font-style:normal;font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:1px 5px;border-radius:5px;display:inline-block;width:fit-content}
    .stime-flag.missing{background:var(--error-bg);color:var(--error-text)}
    .stime-flag.cancelled{background:#e2e8f0;color:#475569}
    .stime-flag.coverage{background:var(--warn-bg);color:var(--warn-text)}
    @media(max-width:900px){.stime-toolbar{flex-direction:column;align-items:flex-start}}

    /* v61: data-backed pilot setup checklist. */
    .setup-card{border-color:#cddbea;background:linear-gradient(135deg,#fff 0%,#f5f9fd 100%);padding:0;overflow:hidden}
    .setup-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px 14px}
    .setup-head h2{font-size:18px;margin:2px 0 3px;color:var(--ink)}
    .setup-head p{margin:0;color:var(--muted);font-size:12px}
    .setup-kicker{text-transform:uppercase;letter-spacing:.08em;color:var(--brand);font-size:10px;font-weight:800}
    .setup-percent{width:54px;height:54px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;flex:0 0 auto;box-shadow:0 5px 14px rgba(18,61,115,.22)}
    .setup-progress{height:7px;background:#e4ebf2;margin:0 22px 17px;border-radius:99px;overflow:hidden}
    .setup-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--brand),#2C5A93);border-radius:99px;transition:width .25s ease}
    .setup-steps{border-top:1px solid #e0e8ef}
    .setup-step{display:flex;align-items:center;gap:12px;padding:12px 22px;border-bottom:1px solid #e7edf2;background:rgba(255,255,255,.7)}
    .setup-step:last-child{border-bottom:0}
    .setup-step.complete{background:rgba(244,250,235,.7)}
    .setup-step-icon{width:27px;height:27px;border-radius:50%;border:1px solid #c9d5e1;color:#8191a0;display:flex;align-items:center;justify-content:center;flex:0 0 auto;font-size:12px}
    .setup-step.complete .setup-step-icon{background:var(--ok);border-color:var(--ok);color:var(--ink)}
    .setup-step-copy{display:flex;flex-direction:column;min-width:0;flex:1}
    .setup-step-copy b{font-size:13px}
    .setup-step-copy span{font-size:11.5px;color:var(--muted);margin-top:2px}
    .setup-complete{display:flex;gap:12px;align-items:center;border:1px solid #cfe8a0;background:var(--ok-bg);border-radius:14px;padding:14px 17px;margin-bottom:18px}
    .setup-complete-icon{width:34px;height:34px;border-radius:50%;background:var(--ok);color:var(--ink);display:flex;align-items:center;justify-content:center;flex:0 0 auto;font-size:17px}
    .setup-complete div{display:flex;flex-direction:column}
    .setup-complete b{font-size:13.5px}
    .setup-complete span{font-size:11.5px;color:var(--ok-text);margin-top:1px}

    /* v61: pilot feedback compose form and organization-admin inbox. */
    .feedback-compose-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:10px;align-items:start}
    .feedback-compose textarea,.feedback-review-grid textarea{width:100%;min-height:86px;border:1px solid var(--line);border-radius:9px;padding:10px 12px;font:13px/1.45 inherit;resize:vertical;outline:none}
    .feedback-compose textarea:focus,.feedback-review-grid textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(18,61,115,.15)}
    .feedback-actions{display:flex;align-items:center;gap:10px;margin-top:10px;min-height:34px}
    .feedback-inbox-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}
    .feedback-report{border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:10px;background:#fff}
    .feedback-report:last-child{margin-bottom:0}
    .feedback-report-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
    .feedback-category{font-size:12px;font-weight:700;color:var(--brand)}
    .feedback-from{font-size:10.5px;color:var(--muted);margin-top:2px}
    .feedback-status{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800;white-space:nowrap;background:#eef2ff;color:var(--brand)}
    .feedback-status.status-in_review{background:var(--warn-bg);color:var(--warn-text)}
    .feedback-status.status-resolved{background:var(--ok-bg);color:var(--ok-text)}
    .feedback-status.status-closed{background:#eef2f5;color:#475569}
    .feedback-message{font-size:13px;line-height:1.55;white-space:pre-wrap;margin:12px 0;padding:12px;background:#f8fafb;border-radius:9px;color:var(--ink)}
    .feedback-review-grid{display:grid;grid-template-columns:170px minmax(0,1fr);gap:10px}
    .feedback-review-grid label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:10.5px;font-weight:600}
    .feedback-review-grid textarea{min-height:64px}
    .feedback-empty{padding:28px 12px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:4px}
    .feedback-empty i{font-size:26px;color:#91a1ae;margin-bottom:3px}
    .feedback-empty b{font-size:13px;color:var(--ink)}
    .feedback-empty span{font-size:11.5px}
    @media(max-width:720px){
      .setup-step{align-items:flex-start;flex-wrap:wrap}.setup-step button{margin-left:39px}
      .feedback-compose-grid,.feedback-review-grid{grid-template-columns:1fr}
      .feedback-inbox-head{flex-direction:column}
    }

    /* v62: familiar calendar workspace. The scheduling data model and all
       appointment actions stay unchanged; this layer replaces the oversized
       dashboard treatment with a compact calendar header, navigator rail,
       persistent filters, and a larger working canvas. */
    .calendar-page-head{display:grid;grid-template-columns:minmax(190px,.72fr) minmax(330px,1fr) auto;gap:22px;align-items:center;padding:18px 20px;border:1px solid #d6e1e8;border-radius:18px;background:linear-gradient(135deg,#fff 0%,#f5f9fd 100%);box-shadow:var(--shadow-sm)}
    .calendar-page-title h1{font-size:24px;line-height:1.1;margin:3px 0 4px;color:var(--ink)}
    .calendar-page-title p{font-size:10.5px;color:var(--muted);margin:0}
    .calendar-page-kicker{font-size:9.5px;line-height:1;text-transform:uppercase;letter-spacing:.09em;font-weight:800;color:var(--brand)}
    .calendar-page-center{display:flex;align-items:center;gap:13px;min-width:0}
    .calendar-date-controls{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto}
    .calendar-date-controls .sm{height:34px;border-color:#cfdbe4;background:#fff}
    .calendar-range-title{font-size:16px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
    .calendar-page-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
    .calendar-date-input{width:42px;height:38px;padding:7px;border:1px solid #cfdbe4;border-radius:10px;background:#fff;color:var(--brand);font:600 12px inherit;cursor:pointer}
    .calendar-date-input::-webkit-datetime-edit{display:none}
    .calendar-view-switch{flex-wrap:nowrap;padding:3px;border-radius:11px}
    .calendar-view-switch button{padding:7px 10px;font-size:11.5px}
    .calendar-new-event{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border:1px solid #e66f1f;border-radius:11px;background:var(--accent);color:var(--ink);font-weight:800;font-size:12px;box-shadow:0 3px 9px rgba(255,122,34,.24);cursor:pointer;white-space:nowrap}
    .calendar-new-event:hover{background:#ff8a3d;color:var(--ink)}
    .sched-module-nav-card{padding:9px 11px;background:rgba(255,255,255,.72);box-shadow:none}
    .sched-module-nav-card .sched-segment{width:100%;justify-content:flex-start;background:transparent;border:0;padding:0;gap:4px;overflow-x:auto;flex-wrap:nowrap}
    .sched-module-nav-card .sched-segment button{background:transparent;border:1px solid transparent;color:var(--muted);padding:7px 11px;box-shadow:none}
    .sched-module-nav-card .sched-segment button:hover{background:#f4f7f9;color:var(--ink)}
    .sched-module-nav-card .sched-segment button.active{background:#e9f0f7;border-color:#d0deeb;color:var(--brand);box-shadow:none}
    .calendar-workspace{display:grid;grid-template-columns:232px minmax(0,1fr);gap:12px;align-items:start}
    .calendar-rail{position:sticky;top:76px;border:1px solid #d9e3e8;border-radius:16px;background:#fff;box-shadow:var(--shadow-sm);overflow:hidden}
    .calendar-canvas{min-width:0}
    .calendar-canvas>.schedule-grid-card{border-radius:16px;border-color:#d9e3e8;box-shadow:var(--shadow-sm)}
    .calendar-canvas .schedule-grid-scroll{max-height:730px}
    .calendar-canvas .schedule-timegrid.week{min-width:920px}
    .calendar-canvas .schedule-day-head{padding:9px 6px 8px;background:#fbfcfd}
    .calendar-canvas .schedule-day-head.today{background:#f1f6fb}
    .calendar-canvas .schedule-day-head .daynum{width:28px;height:28px}
    .calendar-canvas .schedule-event{border-left-width:3px;padding:4px 6px;background:color-mix(in srgb,var(--event-accent) 9%,white)}
    .calendar-canvas .sched-month-day{min-height:128px;padding:7px}
    .calendar-canvas .sched-month-date{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 0 4px auto;font-size:11px}
    .calendar-canvas .sched-month-day.today{box-shadow:none;background:#f6f9fc}
    .calendar-canvas .sched-month-day.today .sched-month-date{background:var(--brand);color:#fff}
    .mini-calendar{padding:15px 14px 13px;border-bottom:1px solid var(--line)}
    .mini-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:11px}
    .mini-calendar-head b{font-size:12.5px}
    .mini-calendar-head div{display:flex;gap:2px}
    .mini-calendar-head button{width:25px;height:25px;border:0;border-radius:7px;background:transparent;color:var(--muted);display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer}
    .mini-calendar-head button:hover{background:#edf3f7;color:var(--ink)}
    .mini-calendar-weekdays,.mini-calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
    .mini-calendar-weekdays span{text-align:center;font-size:8.5px;font-weight:800;color:#8795a0;padding-bottom:4px}
    .mini-calendar-days button{position:relative;height:25px;padding:0;border:0;border-radius:7px;background:transparent;color:var(--ink);font:600 10.5px inherit;display:flex;align-items:center;justify-content:center;cursor:pointer}
    .mini-calendar-days button:hover{background:#edf3f7}
    .mini-calendar-days button.outside{color:#b6c0c7}
    .mini-calendar-days button.selected{background:#e6eef7;color:var(--brand)}
    .mini-calendar-days button.today{box-shadow:inset 0 0 0 1.5px var(--brand);font-weight:800}
    .mini-calendar-days button.selected.today{background:var(--brand);color:#fff}
    .mini-calendar-days button i{position:absolute;width:3px;height:3px;border-radius:50%;background:var(--accent);bottom:2px;left:50%;transform:translateX(-50%)}
    .mini-calendar-days button.selected.today i{background:#fff}
    .calendar-rail-section{padding:13px 14px;border-bottom:1px solid var(--line)}
    .calendar-rail-label{font-size:9px;text-transform:uppercase;letter-spacing:.075em;color:#7b8b98;font-weight:800;margin-bottom:8px}
    .calendar-filter-row{width:100%;display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:7px;border:0;border-radius:9px;background:transparent;color:var(--muted);padding:6px 7px;text-align:left;font:600 11.5px inherit;cursor:pointer}
    .calendar-filter-row:hover{background:#f4f7f9;color:var(--ink)}
    .calendar-filter-row.active{background:#edf3f9;color:var(--brand)}
    /* v63 fix: the generic button:hover:not(:disabled) rule (background:var(--brand-2))
       has higher specificity than .calendar-filter-row.active and was winning whenever
       the pointer rested on the active row - flashing it to solid navy with
       barely-readable text the instant someone hovers the very row they just picked.
       Pre-existing in v62's Calendar rail; fixing here since School Calendar's and
       Availability's new rails share the same component. */
    .calendar-filter-row.active:hover{background:#edf3f9;color:var(--brand)}
    .calendar-filter-row b{min-width:20px;border-radius:999px;background:#eef2f4;color:var(--muted);font-size:9.5px;text-align:center;padding:2px 5px}
    .calendar-filter-row.active b{background:#dce8f3;color:var(--brand)}
    .calendar-filter-row b.warn{background:var(--error-bg);color:var(--error-text)}
    .calendar-filter-icon{width:24px;height:24px;border-radius:7px;background:color-mix(in srgb,var(--filter-color) 13%,white);color:var(--filter-color);display:flex;align-items:center;justify-content:center;font-size:11px}
    .calendar-filter-field{display:block;margin-top:8px}
    .calendar-filter-field>span{display:block;font-size:9.5px;color:var(--muted);font-weight:700;margin-bottom:4px}
    .calendar-filter-field select{width:100%;border:1px solid var(--line);border-radius:9px;background:#fff;padding:7px 8px;color:var(--ink);font:500 11px inherit}
    .calendar-health-card>div:not(.calendar-rail-label){display:flex;align-items:center;justify-content:space-between;font-size:10.5px;color:var(--muted);padding:3px 0}
    .calendar-health-card b{color:var(--ink);font-size:11px}
    .calendar-health-card b.warn{color:var(--error-text)}
    .calendar-rail-legend{display:flex;gap:8px;flex-wrap:wrap;padding:10px 14px 12px;color:var(--muted);font-size:8.5px}
    .calendar-rail-legend span{display:inline-flex;align-items:center;gap:4px}
    .calendar-rail-legend i{width:7px;height:7px;border-radius:2px;background:var(--brand)}
    .calendar-rail-legend i.staff{background:#5C6B78}
    .calendar-rail-legend i.attention{background:var(--error)}
    .calendar-agenda{display:flex;flex-direction:column;gap:9px}
    .calendar-agenda-day{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;padding:14px;border:1px solid #d9e3e8;border-radius:16px;background:#fff;box-shadow:var(--shadow-sm)}
    .calendar-agenda-date{height:72px;border:0;border-radius:13px;background:#f3f6f8;color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer}
    .calendar-agenda-date:hover{background:#e9f0f7}
    .calendar-agenda-date.today{background:var(--brand);color:#fff}
    .calendar-agenda-date span{font-size:9px;text-transform:uppercase;letter-spacing:.07em;font-weight:800}
    .calendar-agenda-date b{font-size:22px;line-height:1.05}
    .calendar-agenda-date small{font-size:9px;font-weight:700}
    .calendar-agenda-content{min-width:0}
    .calendar-agenda-content .appt-card{margin-bottom:7px;padding:10px 12px;border-radius:12px}
    .calendar-agenda-content .appt-card:last-child{margin-bottom:0}
    .calendar-agenda-rules{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:7px}
    .calendar-agenda-no-events{padding:14px;border:1px dashed var(--line);border-radius:10px;color:var(--muted);font-size:11px}
    .calendar-agenda-empty{text-align:center;padding:44px 24px}
    .calendar-agenda-empty>i{font-size:34px;color:#8ea1b1}
    .calendar-agenda-empty h2{font-size:16px;margin:8px 0 3px}
    .calendar-agenda-empty p{font-size:11.5px;color:var(--muted);margin:0 0 12px}
    @media(max-width:1160px){
      .calendar-page-head{grid-template-columns:190px minmax(280px,1fr)}
      .calendar-page-actions{grid-column:1/-1;justify-content:flex-start}
      .calendar-new-event{margin-left:auto}
    }
    @media(max-width:900px){
      .calendar-page-head{grid-template-columns:1fr;gap:12px}
      .calendar-page-center{flex-wrap:wrap}
      .calendar-page-actions{grid-column:auto}
      .calendar-new-event{margin-left:0}
      .calendar-workspace{grid-template-columns:1fr}
      .calendar-rail{position:static;display:grid;grid-template-columns:minmax(220px,280px) 1fr;align-items:start}
      .mini-calendar{grid-row:span 3;border-right:1px solid var(--line);border-bottom:0}
      .calendar-rail-section{border-bottom:1px solid var(--line)}
      .calendar-rail-legend{grid-column:2}
    }
    @media(max-width:620px){
      .calendar-page-head{padding:15px}
      .calendar-page-actions{align-items:stretch}
      .calendar-date-input{width:38px}
      .calendar-view-switch{width:100%;order:3;overflow:auto}
      .calendar-view-switch button{flex:1}
      .calendar-new-event{margin-left:auto}
      .calendar-rail{display:block}
      .mini-calendar{border-right:0;border-bottom:1px solid var(--line)}
      .calendar-rail-legend{display:flex}
      .calendar-agenda-day{grid-template-columns:48px minmax(0,1fr);padding:10px;gap:8px}
      .calendar-agenda-date{height:60px}
    }

/* ===== v65 Program Library / Template Builder ===== */
.program-hero{display:flex;align-items:flex-start;gap:28px;justify-content:space-between;padding:28px 30px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(135deg,#f8fbff 0%,#f6faf5 100%);margin-bottom:14px}
.program-eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--brand);margin-bottom:6px}.program-hero h1,.program-detail h1,.program-apply h1{font-size:28px;line-height:1.15;margin:0 0 8px;color:#10243e}.program-hero p,.program-detail-title p,.program-apply-title p{max-width:760px;margin:0;color:var(--muted);line-height:1.55}.program-hero-actions{flex:0 0 auto;padding-top:8px}.program-stat-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}.program-stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column}.program-stat b{font-size:22px;color:#10243e}.program-stat span{font-size:12px;color:var(--muted)}
.program-filterbar{display:grid;grid-template-columns:minmax(240px,1.6fr) repeat(3,minmax(150px,.7fr));gap:9px;margin:0 0 14px}.program-filterbar input,.program-filterbar select{width:100%;min-width:0}.program-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}.program-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px;box-shadow:0 5px 18px rgba(16,36,62,.035);display:flex;flex-direction:column;min-height:250px}.program-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.program-scope{display:inline-flex;align-items:center;width:max-content;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.03em}.program-scope.system{background:#edf4ff;color:#123d73}.program-scope.org{background:#f1f8e8;color:#4d701c}.program-version{font-size:11px;color:var(--muted)}.program-card h3{font-size:16px;line-height:1.3;margin:12px 0 6px;color:#10243e}.program-card p{font-size:12px;line-height:1.5;color:var(--muted);margin:0 0 12px;flex:1}.program-tags{display:flex;gap:5px;flex-wrap:wrap}.program-tags span{font-size:10px;padding:4px 7px;border-radius:999px;background:#f1f5f9;color:#475569}.program-card-meta{font-size:11px;color:var(--muted);margin:10px 0}.program-card-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}.program-empty{grid-column:1/-1;min-height:220px;border:1px dashed #cbd5e1;border-radius:15px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;color:var(--muted);background:#fff}.program-empty i{font-size:28px}.program-empty b{color:#334155}.program-page-head{display:flex;align-items:center;gap:10px;margin-bottom:14px;min-height:38px}.program-page-head .spacer{flex:1}
.program-detail{max-width:1120px;margin:0 auto}.program-detail-title{padding:24px 26px;background:#fff;border:1px solid var(--line);border-radius:16px;margin-bottom:12px}.program-detail-title h1{margin-top:10px}.program-detail-title .program-tags{margin-top:12px}.program-target-list{display:flex;flex-direction:column;gap:10px}.program-target-preview{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:16px;background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px}.program-target-number{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin-bottom:3px}.program-target-preview h3{margin:0 8px 8px 0;display:inline-block;font-size:17px;color:#10243e}.program-preview-copy p{font-size:12px;line-height:1.5;color:#475569}.program-widget-preview{border:1px solid #dce5ef;background:#f8fbff;border-radius:13px;padding:13px;display:flex;flex-direction:column;justify-content:center;gap:9px}.program-widget-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.program-widget-head b{font-size:13px;color:#10243e}.program-widget-head span{font-size:10px;color:var(--muted)}.program-widget-preview small{text-align:center;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.07em}.program-demo-big{width:100%;height:42px;border-radius:10px!important}.program-demo-value{text-align:center;font-size:22px;font-weight:700;color:#123d73}.program-demo-pair,.program-demo-triple,.program-demo-scale{display:flex;gap:6px}.program-demo-pair button,.program-demo-scale button{flex:1}.program-demo-triple button{flex:1;font-size:10px}.program-demo-steps{display:flex;flex-direction:column;gap:5px}.program-demo-steps span{display:flex;gap:7px;align-items:center;padding:6px 8px;background:#fff;border:1px solid var(--line);border-radius:8px;font-size:10px}.program-demo-steps b{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#edf4ff;color:#123d73}.program-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}.program-detail-grid section{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px}.program-detail-grid h3{font-size:13px;margin:0 0 8px}.program-detail-grid ul{margin:0;padding-left:18px;font-size:12px;color:#475569}.program-safety-note{display:flex;gap:10px;align-items:flex-start;background:#f8fafc;border:1px solid var(--line);padding:13px 15px;border-radius:13px;margin-top:10px}.program-safety-note i{font-size:18px;color:#4d701c}.program-safety-note div{display:flex;flex-direction:column}.program-safety-note b{font-size:12px}.program-safety-note span{font-size:11px;color:var(--muted);line-height:1.45}
.program-builder{max-width:1180px;margin:0 auto;display:flex;flex-direction:column;gap:12px}.program-builder-section{display:grid;grid-template-columns:44px 1fr;gap:14px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.program-step{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#123d73;color:#fff;font-weight:700}.program-builder-body h2{font-size:17px;margin:3px 0 4px;color:#10243e}.program-builder-body>p{margin-top:0}.program-section-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.program-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.program-form-grid label,.program-widget-settings label{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:600;color:#475569}.program-form-grid label span,.program-widget-settings label span{font-weight:400;color:var(--muted)}.program-form-grid .wide,.program-widget-settings .wide{grid-column:1/-1}.program-form-grid textarea{min-height:72px}.program-form-grid input,.program-form-grid select,.program-form-grid textarea,.program-widget-settings input,.program-widget-settings select,.program-widget-settings textarea{width:100%;box-sizing:border-box}.program-target-editor{border:1px solid #dce5ef;background:#fbfdff;border-radius:14px;padding:14px;margin-top:10px}.program-target-editor-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:12px}.program-target-editor-head div{display:flex;flex-direction:column}.program-target-editor-head span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}.program-target-editor-head b{font-size:14px;color:#10243e}.program-widget-settings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:10px;padding:11px;border:1px dashed #b7c6d8;background:#fff;border-radius:11px}.program-widget-settings>b{grid-column:1/-1;font-size:11px;color:#123d73}.program-widget-settings textarea{min-height:58px}.program-builder #program-builder-preview .program-target-preview{grid-template-columns:minmax(0,1.1fr) minmax(260px,.7fr)}
.program-apply{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;max-width:1100px;margin:0 auto}.program-apply-main,.program-apply-preview{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}.program-apply-title h1{font-size:24px;margin:9px 0 7px}.program-check{flex-direction:row!important;gap:9px!important;align-items:flex-start}.program-check input{width:auto!important;margin-top:2px}.program-check span{display:flex;flex-direction:column;gap:2px}.program-check small{font-weight:400;line-height:1.45;color:var(--muted)}.program-apply-summary{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:14px 0}.program-apply-summary b{font-size:12px}.program-apply-summary ul{margin:7px 0 0;padding-left:18px;font-size:11px;color:#475569;line-height:1.6}.program-primary-action{width:100%;height:42px}.program-apply-preview h3{font-size:13px;margin:0 0 10px}.program-apply-preview .program-widget-preview{margin-bottom:9px}
@media(max-width:900px){.program-filterbar{grid-template-columns:1fr 1fr}.program-target-preview,.program-apply{grid-template-columns:1fr}.program-form-grid,.program-detail-grid{grid-template-columns:1fr}.program-form-grid .wide{grid-column:auto}.program-widget-settings{grid-template-columns:1fr}.program-widget-settings .wide,.program-widget-settings>b{grid-column:auto}.program-stat-row{grid-template-columns:1fr 1fr 1fr}}

/* v66 — Program-first workflow */
.program-hero.v66{background:linear-gradient(135deg,#fbfdff 0%,#f7fbf4 100%);padding:30px 32px}
.program-hero.v66 h1{max-width:720px;font-size:30px}.program-hero.v66 p{max-width:820px}
.program-path{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 18px}
.program-path-card{appearance:none;text-align:left;background:#fff;color:#10243e;border:1px solid var(--line);border-radius:15px;padding:15px 16px;display:flex;align-items:center;gap:12px;box-shadow:none;min-height:74px}
.program-path-card:hover{border-color:#a9bdd3;background:#fbfdff}.program-path-card.active{border-color:#123d73;background:#f4f8fd;box-shadow:inset 0 0 0 1px #123d73}
.program-path-card>i{font-size:20px;color:#123d73}.program-path-card span{display:flex;flex-direction:column;gap:2px}.program-path-card b{font-size:13px}.program-path-card small{font-size:10.5px;color:var(--muted);font-weight:400}
.program-library-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:4px 0 12px}.program-library-head h2{font-size:19px;margin:0 0 3px;color:#10243e}.program-library-head p{margin:0;color:var(--muted);font-size:12px}.program-library-count{font-size:10.5px;color:var(--muted);white-space:nowrap}
.program-filterbar.v66{grid-template-columns:minmax(260px,1.6fr) minmax(170px,.7fr) minmax(170px,.7fr)}
.program-measure-icon{width:38px;height:38px;border-radius:11px;background:#edf4ff;color:#123d73;display:grid;place-items:center;font-size:18px}.program-card.measurement-card{min-height:215px}.program-card.measurement-card h3{margin-top:10px}
.program-complete-banner{display:flex;gap:11px;align-items:flex-start;background:#f5faef;border:1px solid #d9e9c5;border-radius:14px;padding:13px 15px;margin:0 0 12px}.program-complete-banner>i{font-size:20px;color:#5d8b21}.program-complete-banner>div{display:flex;flex-direction:column;gap:2px}.program-complete-banner b{font-size:12px;color:#31520c}.program-complete-banner span{font-size:11px;color:#5b6b48;line-height:1.45}
.program-builder-shell{max-width:1120px;margin:0 auto}.program-builder-steps{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:0 0 12px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:10px}
.program-builder-step{appearance:none;background:transparent!important;border:0!important;box-shadow:none!important;color:#6b7a8e!important;padding:7px 4px!important;display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0}
.program-builder-step span{width:28px;height:28px;border-radius:50%;background:#edf1f5;display:grid;place-items:center;font-size:11px;font-weight:700}.program-builder-step small{font-size:9px;white-space:nowrap;font-weight:600}
.program-builder-step.active span{background:#123d73;color:#fff}.program-builder-step.active small{color:#123d73}.program-builder-step.done span{background:#edf7df;color:#4d701c}.program-builder-step.done small{color:#4d701c}
.program-builder-stage{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px 30px;min-height:420px}.program-phase{max-width:940px;margin:0 auto}.program-phase-kicker{font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:#123d73;margin-bottom:4px}.program-phase>h1,.program-phase .program-section-title h1{font-size:24px;line-height:1.2;color:#10243e;margin:0 0 7px}.program-phase>p,.program-phase .program-section-title p{font-size:12.5px;line-height:1.55;color:var(--muted);margin:0 0 20px;max-width:780px}
.program-phase-tip{display:flex;gap:9px;align-items:flex-start;background:#f7faff;border:1px solid #dce7f4;border-radius:12px;padding:11px 13px;margin-top:14px;color:#4d6179;font-size:11px;line-height:1.45}.program-phase-tip i{color:#123d73;font-size:15px}
.program-target-edit-list{display:flex;flex-direction:column;gap:12px}.program-target-editor.simple{background:#fcfdff}.program-inline-preview{max-width:360px;margin:12px 0 0 auto}.program-inline-preview .program-widget-preview{min-height:120px}.program-overall-guidance{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}
.program-preview-summary{display:grid;grid-template-columns:1.4fr 1fr .6fr;gap:8px;margin:0 0 14px}.program-preview-summary>div{border:1px solid var(--line);border-radius:12px;background:#fafcff;padding:11px 13px;display:flex;flex-direction:column;gap:3px}.program-preview-summary span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.program-preview-summary b{font-size:13px;color:#10243e}
.program-builder-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.program-builder-nav>span{font-size:10.5px;color:var(--muted)}
.program-transfer-flow{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:16px 0}.program-transfer-flow>div{border:1px solid var(--line);border-radius:12px;padding:10px;display:flex;gap:8px;align-items:flex-start;background:#fff}.program-transfer-flow>div>span{width:24px;height:24px;border-radius:50%;background:#edf1f5;display:grid;place-items:center;font-size:10px;font-weight:700;flex:0 0 auto}.program-transfer-flow>div>div{display:flex;flex-direction:column;gap:1px}.program-transfer-flow b{font-size:10.5px;color:#334155}.program-transfer-flow small{font-size:9px;color:var(--muted)}.program-transfer-flow .done>span{background:#edf7df;color:#4d701c}.program-transfer-flow .active{border-color:#b6c9de;background:#f7faff}.program-transfer-flow .active>span{background:#123d73;color:#fff}
@media(max-width:900px){.program-path{grid-template-columns:1fr}.program-filterbar.v66{grid-template-columns:1fr}.program-builder-steps{grid-template-columns:repeat(3,1fr)}.program-preview-summary,.program-transfer-flow{grid-template-columns:1fr}.program-builder-stage{padding:20px 16px}}

/* v67 — Program Library + persistent Program Editor */
.program-v67-head{display:flex;justify-content:space-between;align-items:flex-end;gap:22px;padding:26px 28px;margin-bottom:14px;border:1px solid #d7e2eb;border-radius:18px;background:linear-gradient(135deg,#fff 0%,#f5f9fd 60%,#f8fbf3 100%);box-shadow:var(--shadow-sm)}
.program-v67-head h1{font-size:28px;line-height:1.1;margin:4px 0 7px;color:#10243e}.program-v67-head p{max-width:760px;margin:0;color:var(--muted);font-size:12.5px;line-height:1.55}.program-create-btn{height:42px;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.program-library-tabs{display:flex;gap:6px;padding:5px;background:#eef3f7;border:1px solid #dce5eb;border-radius:13px;margin-bottom:18px;max-width:720px}.program-library-tabs button{flex:1;background:transparent!important;border:0!important;box-shadow:none!important;color:#617184!important;padding:9px 12px!important;border-radius:9px!important;display:flex;align-items:center;justify-content:center;gap:8px;font-size:11.5px}.program-library-tabs button b{min-width:20px;height:20px;border-radius:999px;background:#dce5ed;color:#526276;display:grid;place-items:center;font-size:9px}/* v249 friction pass: these tabs had NO hover feedback at all. The base
   rule's `background:transparent!important` beats both a plain hover rule
   AND admin.css's own app-wide `button:hover:not(:disabled)` fallback, so
   pointing at an inactive library tab did visibly nothing. This is the
   specificity trap CLAUDE.md names, arriving via !important rather than a
   specificity tie — so the fix restates `background` explicitly, carries
   `:not(:disabled)` to match the app-wide rule's shape, and excludes
   `.active` so the selected tab keeps its white fill while hovered. */
.program-library-tabs button:hover:not(:disabled):not(.active){background:#e3ebf2!important;color:#123d73!important}
.program-library-tabs button.active{background:#fff!important;color:#123d73!important;box-shadow:0 1px 4px rgba(16,36,62,.08)!important}.program-library-tabs button.active b{background:#123d73;color:#fff}
.program-filterbar.v67{grid-template-columns:minmax(300px,1.7fr) minmax(170px,.7fr) minmax(170px,.7fr)}.program-searchbox{position:relative}.program-searchbox i{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:12px;color:#8796a6}.program-searchbox input{padding-left:31px;width:100%;box-sizing:border-box}.program-grid.v67{grid-template-columns:repeat(auto-fill,minmax(285px,1fr))}.program-card.v67{min-height:245px}.program-card.v67 .program-card-top{align-items:center}.program-status{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:#eef2f5;color:#5f6f7f}.program-status.published{background:#eef8e2;color:#4e7419}.program-status.draft{background:#fff3dd;color:#8a5a0d}.program-status.archived{background:#eef1f4;color:#66717c}.program-card-meta-line{display:flex;gap:14px;align-items:center;color:#64748b;font-size:10.5px;margin:2px 0 11px}.program-card-meta-line span{display:flex;gap:5px;align-items:center}.program-card-meta-line i{color:#123d73;font-size:11px}
.program-draft-banner{display:flex;gap:11px;align-items:flex-start;background:#fff7e8;border:1px solid #f1d8a7;border-radius:14px;padding:13px 15px;margin:0 0 12px}.program-draft-banner>i{font-size:18px;color:#9a6611}.program-draft-banner>div{display:flex;flex-direction:column;gap:2px}.program-draft-banner b{font-size:12px;color:#76500f}.program-draft-banner span{font-size:11px;color:#78694e;line-height:1.45}.program-detail.v67{max-width:1100px}.program-detail.v67 .program-detail-title{position:relative}.program-detail.v67 .program-detail-title>.program-status{margin-left:7px}.program-detail-section{margin-top:14px}.program-detail-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.program-detail-section-head span{font-size:9px;text-transform:uppercase;letter-spacing:.09em;font-weight:800;color:#123d73}.program-detail-section-head h2{font-size:17px;margin:2px 0 0;color:#10243e}.program-detail-section-head>b{width:30px;height:30px;border-radius:9px;background:#edf4fb;color:#123d73;display:grid;place-items:center;font-size:12px}.program-target-preview.v67{border-radius:15px}.program-phase-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.program-phase-strip>div{border:1px solid var(--line);border-radius:12px;background:#fff;padding:11px;display:grid;grid-template-columns:24px 1fr;column-gap:8px;row-gap:2px;align-items:start}.program-phase-strip>div>span{width:24px;height:24px;border-radius:50%;background:#edf4fb;color:#123d73;display:grid;place-items:center;font-size:9px;font-weight:800;grid-row:1/3}.program-phase-strip b{font-size:11px;color:#10243e}.program-phase-strip small{font-size:9.5px;color:var(--muted);line-height:1.35}
.program-editor-top{display:flex;align-items:center;gap:9px;padding:10px 12px;margin-bottom:10px;border:1px solid #d7e1e9;border-radius:14px;background:#fff;box-shadow:var(--shadow-sm);position:sticky;top:64px;z-index:25}.program-editor-name{display:flex;flex-direction:column;min-width:0}.program-editor-name span{font-size:8.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.program-editor-name b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}.program-editor-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:12px;align-items:start}.program-editor-nav{position:sticky;top:126px;border:1px solid #d9e2e9;border-radius:15px;background:#fff;padding:8px;box-shadow:var(--shadow-sm)}.program-editor-nav-label{padding:6px 9px 9px;font-size:9px;text-transform:uppercase;letter-spacing:.09em;font-weight:800;color:#8795a5}.program-editor-nav button{width:100%;appearance:none;border:1px solid transparent!important;background:transparent!important;box-shadow:none!important;color:#5d6b7b!important;text-align:left;padding:10px 9px!important;border-radius:10px!important;display:flex;gap:9px;align-items:flex-start}.program-editor-nav button:hover{background:#f6f8fa!important;color:#10243e!important}.program-editor-nav button.active{background:#edf4fb!important;border-color:#d8e5f1!important;color:#123d73!important}.program-editor-nav button>i{font-size:14px;margin-top:1px}.program-editor-nav button>span{display:flex;flex-direction:column;gap:2px}.program-editor-nav button b{font-size:11px}.program-editor-nav button small{font-size:9px;color:#8a97a5;font-weight:400;line-height:1.3}.program-editor-main{min-width:0}.program-editor-panel{border:1px solid #d9e2e9;border-radius:17px;background:#fff;padding:24px 26px;min-height:560px;box-shadow:var(--shadow-sm)}.program-editor-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.program-editor-heading>div>span{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:#123d73;font-weight:800}.program-editor-heading h1{font-size:23px;line-height:1.15;margin:3px 0 6px;color:#10243e}.program-editor-heading p{font-size:12px;line-height:1.5;color:var(--muted);margin:0;max-width:760px}.program-editor-heading.split{align-items:flex-end}.program-form-grid.v67 textarea{min-height:84px}.program-editor-callout{margin-top:16px;display:flex;gap:10px;align-items:flex-start;padding:12px 13px;border:1px solid #d8e7f4;background:#f6faff;border-radius:12px}.program-editor-callout.neutral{border-color:#e0e5e9;background:#fafbfc}.program-editor-callout>i{font-size:16px;color:#123d73}.program-editor-callout>div{display:flex;flex-direction:column;gap:2px}.program-editor-callout b{font-size:11px;color:#233f5e}.program-editor-callout span{font-size:10.5px;line-height:1.45;color:#66788a}.program-target-editor-list.v67{display:flex;flex-direction:column;gap:13px}.program-target-editor.v67{margin:0;border-radius:15px;padding:16px;background:#fbfdff}.program-target-actions{display:flex;gap:5px}.program-target-actions button{min-width:32px}.program-target-editor.v67 .program-inline-preview{margin-top:13px}.program-target-editor.compact{background:#fbfcfd;margin-bottom:9px}.program-guidance-targets{margin-top:20px;border-top:1px solid var(--line);padding-top:17px}.program-guidance-targets>h3{font-size:12px;margin:0 0 9px;color:#334155}
.program-phase-editor-list{display:flex;flex-direction:column;gap:10px}.program-phase-editor{border:1px solid #e0e5e9;border-radius:13px;padding:14px;background:#fafbfc;opacity:.72}.program-phase-editor.enabled{border-color:#cbdceb;background:#fbfdff;opacity:1}.program-phase-editor-head{display:flex;gap:10px;align-items:center;margin-bottom:10px}.program-phase-editor-head>div{display:flex;flex-direction:column;flex:1}.program-phase-editor-head>div>span{font-size:8.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.program-phase-editor-head input[type=text],.program-phase-editor-head input:not([type]){border:0;background:transparent;padding:0;font-size:14px;font-weight:800;color:#10243e;outline:none}.program-phase-toggle input{position:absolute;opacity:0}.program-phase-toggle>span{display:block;width:33px;height:19px;border-radius:99px;background:#cfd7df;position:relative;cursor:pointer}.program-phase-toggle>span:after{content:"";position:absolute;width:15px;height:15px;border-radius:50%;background:#fff;top:2px;left:2px;box-shadow:0 1px 3px rgba(0,0,0,.16);transition:.15s}.program-phase-toggle input:checked+span{background:#123d73}.program-phase-toggle input:checked+span:after{left:16px}.program-phase-mini{display:flex;gap:6px;flex-wrap:wrap;margin:-3px 0 14px}.program-phase-mini span{display:inline-flex;align-items:center;gap:6px;border:1px solid #dbe4ea;background:#f8fafc;border-radius:999px;padding:5px 9px;font-size:9.5px;color:#536273}.program-phase-mini b{width:17px;height:17px;border-radius:50%;background:#123d73;color:#fff;display:grid;place-items:center;font-size:8px}.program-editor-message{max-width:calc(100% - 232px);margin-left:232px;margin-top:9px}.program-apply.v67{grid-template-columns:minmax(0,1fr) 350px}
@media(max-width:900px){.program-v67-head{align-items:flex-start;flex-direction:column}.program-library-tabs{max-width:none;overflow:auto}.program-library-tabs button{min-width:150px}.program-filterbar.v67{grid-template-columns:1fr}.program-editor-top{position:static;flex-wrap:wrap}.program-editor-layout{grid-template-columns:1fr}.program-editor-nav{position:static;display:grid;grid-template-columns:repeat(2,1fr)}.program-editor-nav-label{grid-column:1/-1}.program-editor-message{max-width:none;margin-left:0}.program-editor-panel{padding:19px 15px}.program-apply.v67{grid-template-columns:1fr}}

/* v68 — evidence-guided Program Library */
.program-card-badges{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}.program-evidence-badge,.program-review-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:4px 7px;font-size:8.5px;font-weight:800;line-height:1;white-space:nowrap}.program-evidence-badge{border:1px solid #cfe2d5;background:#f4fbf6;color:#2f6640}.program-review-badge{border:1px solid #f0dcc2;background:#fff9f0;color:#8a5a1e}.program-evidence-panel{margin-top:14px;border:1px solid #d8e4dc;border-radius:15px;background:linear-gradient(180deg,#fbfefb,#f7faf8);padding:17px}.program-evidence-panel .program-detail-section-head{margin-bottom:8px}.program-evidence-summary{font-size:11.5px;line-height:1.55;color:#586979;margin:0 0 11px}.program-source-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.program-source-item{display:flex;justify-content:space-between;gap:10px;text-decoration:none!important;border:1px solid #dfe7e2;background:#fff;border-radius:11px;padding:10px 11px;color:inherit!important}.program-source-item:hover{border-color:#bdd5c5;box-shadow:0 3px 10px rgba(16,36,62,.05)}.program-source-item>div{display:flex;flex-direction:column;gap:2px;min-width:0}.program-source-item b{font-size:10px;color:#274633}.program-source-item span{font-size:9.5px;line-height:1.35;color:#687887}.program-source-item small{font-size:8.5px;color:#829087;text-align:right;max-width:120px}.program-review-note{display:flex;gap:9px;align-items:flex-start;margin-top:10px;border:1px solid #dce7df;background:#fff;border-radius:11px;padding:10px 11px}.program-review-note.function{border-color:#ead9c3;background:#fffaf3}.program-review-note>i{font-size:15px;color:#447455}.program-review-note.function>i{color:#9a641e}.program-review-note>div{display:flex;flex-direction:column;gap:2px}.program-review-note b{font-size:10px;color:#30493a}.program-review-note span{font-size:9.8px;line-height:1.45;color:#6b7882}.program-editor-source-note{display:flex;gap:10px;align-items:flex-start;margin-top:15px;padding:12px 13px;border:1px solid #d6e7da;background:#f7fcf8;border-radius:12px}.program-editor-source-note>i{font-size:16px;color:#3e7650}.program-editor-source-note>div{display:flex;flex-direction:column;gap:2px}.program-editor-source-note b{font-size:11px;color:#31533d}.program-editor-source-note span{font-size:10.5px;line-height:1.45;color:#66788a}@media(max-width:760px){.program-source-list{grid-template-columns:1fr}.program-source-item small{max-width:90px}}

/* v69 — Program Wizard + organization review workflow */
.program-v69-hero{align-items:stretch;overflow:hidden;min-height:210px;padding:0 0 0 28px;background:linear-gradient(125deg,#ffffff 0%,#f5f9fd 54%,#edf7ff 100%)}
.program-v69-hero-copy{padding:27px 0 25px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;position:relative;z-index:2;max-width:760px}
.program-v69-hero-copy .program-create-btn{margin-top:15px}.program-v69-hero-copy .program-view-only{margin-top:14px;display:inline-flex;align-items:center;gap:7px;font-size:10.5px;color:#64748b;background:#fff;border:1px solid #dce6ed;border-radius:999px;padding:7px 10px}
.program-wizard-art{width:290px;min-width:250px;position:relative;align-self:stretch;display:flex;align-items:flex-end;justify-content:center;overflow:hidden;margin-left:auto}
.program-wizard-art:before{content:"";position:absolute;width:240px;height:160px;bottom:13px;right:20px;border-radius:50%;background:radial-gradient(circle,rgba(44,138,255,.14),rgba(140,203,50,.05) 58%,transparent 72%)}
.program-wizard-art img{position:relative;z-index:1;width:255px;max-height:220px;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 13px 18px rgba(16,36,62,.14))}
.program-library-tabs-v69{max-width:900px}.program-library-tabs-v69 button{min-width:0}
.program-review-state{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:8.5px;font-weight:800;text-transform:uppercase;letter-spacing:.045em;white-space:nowrap;border:1px solid transparent}
.program-review-state.system{background:#edf4fb;border-color:#d4e4f2;color:#123d73}.program-review-state.draft{background:#f5f7f9;border-color:#e1e6ea;color:#667788}.program-review-state.needs-review{background:#fff6df;border-color:#ead398;color:#7b5a12}.program-review-state.approved{background:#eef8e9;border-color:#cfe4c4;color:#456e2a}.program-review-state.changes-requested{background:#fff0ed;border-color:#efc8bf;color:#974d3f}
.program-card-v69{position:relative}.program-lineage{display:flex;gap:6px;align-items:flex-start;margin:-1px 0 10px;padding:7px 8px;border-radius:9px;background:#f7f9fb;color:#68798a;font-size:9.2px;line-height:1.35}.program-lineage i{color:#486781;margin-top:1px}.program-lineage b{color:#42566a}
.program-lineage-detail{display:flex;gap:10px;align-items:flex-start;border:1px solid #dbe5ec;background:#f8fafc;border-radius:13px;padding:12px 13px;margin:0 0 12px}.program-lineage-detail>i{font-size:17px;color:#355f83}.program-lineage-detail>div{display:flex;flex-direction:column;gap:2px}.program-lineage-detail span{font-size:8.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#758493}.program-lineage-detail b{font-size:11px;color:#334a60}.program-lineage-detail small{font-size:9.5px;color:#71808e}
.program-system-banner,.program-review-banner,.program-changes-banner{display:flex;gap:11px;align-items:flex-start;border-radius:14px;padding:13px 15px;margin:0 0 12px}.program-system-banner{background:#f0f7ff;border:1px solid #cfe0f1}.program-review-banner{background:#fff8e8;border:1px solid #ecd7a6}.program-changes-banner{background:#fff3f0;border:1px solid #efcdc6}.program-system-banner>i,.program-review-banner>i,.program-changes-banner>i{font-size:18px}.program-system-banner>i{color:#2b679a}.program-review-banner>i{color:#956516}.program-changes-banner>i{color:#a45748}.program-system-banner>div,.program-review-banner>div,.program-changes-banner>div{display:flex;flex-direction:column;gap:2px}.program-system-banner b,.program-review-banner b,.program-changes-banner b{font-size:12px;color:#31475c}.program-system-banner span,.program-review-banner span,.program-changes-banner span{font-size:10.5px;line-height:1.45;color:#6a7886}
.program-review-history{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0 0 13px}.program-review-history>div{border:1px solid #e0e6eb;background:#fff;border-radius:10px;padding:9px 10px;display:flex;flex-direction:column;gap:2px}.program-review-history>div.wide{grid-column:1/-1}.program-review-history span{font-size:8.5px;text-transform:uppercase;letter-spacing:.07em;color:#8190a0}.program-review-history b{font-size:10px;color:#425468;font-weight:600}
.program-wizard-shell{max-width:950px;margin:0 auto;border:1px solid #d9e3ea;background:#fff;border-radius:19px;overflow:hidden;box-shadow:var(--shadow-sm)}.program-wizard-intro{display:grid;grid-template-columns:minmax(0,1fr) 270px;align-items:center;min-height:250px;padding:24px 26px 0;background:linear-gradient(135deg,#fbfdff,#eef7ff 65%,#f5fbef)}.program-wizard-intro>div{align-self:center;padding-bottom:24px}.program-wizard-intro h1{font-size:28px;line-height:1.1;color:#10243e;margin:5px 0 8px}.program-wizard-intro p{font-size:12.5px;line-height:1.55;color:#677789;max-width:560px;margin:0}.program-wizard-intro img{width:250px;max-height:230px;object-fit:contain;object-position:center bottom;align-self:end;filter:drop-shadow(0 12px 18px rgba(16,36,62,.14))}.program-wizard-options{padding:17px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.program-wizard-options>button{border:1px solid #dbe4ea!important;background:#fff!important;color:#30465c!important;box-shadow:none!important;border-radius:14px!important;padding:15px!important;display:grid;grid-template-columns:38px minmax(0,1fr) 18px;gap:10px;align-items:start;text-align:left}.program-wizard-options>button:hover{border-color:#b9cfdf!important;background:#fafdff!important;transform:translateY(-1px)}.wizard-option-icon{width:38px;height:38px;border-radius:11px;background:#edf5fc;color:#123d73;display:grid;place-items:center;font-size:17px}.program-wizard-options>button>div{display:flex;flex-direction:column;gap:3px}.program-wizard-options b{font-size:11px;line-height:1.35}.program-wizard-options small{font-size:9.5px;line-height:1.45;color:#748394;font-weight:400}.program-wizard-options>button>i{font-size:12px;margin-top:4px;color:#71889c}.program-wizard-note{display:flex;gap:10px;align-items:flex-start;margin:0 17px 17px;padding:11px 12px;border:1px solid #d9e7db;background:#f7fbf7;border-radius:12px}.program-wizard-note>i{font-size:15px;color:#477451}.program-wizard-note>div{display:flex;flex-direction:column;gap:2px}.program-wizard-note b{font-size:10.5px;color:#36533d}.program-wizard-note span{font-size:9.8px;line-height:1.45;color:#6b7b70}
.program-readiness-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:16px}.program-readiness-grid>div{display:flex;gap:9px;align-items:center;border:1px solid #e0e6eb;border-radius:11px;padding:10px 11px;background:#fbfcfd}.program-readiness-grid>div>i{font-size:15px;color:#5d9a37}.program-readiness-grid>div>span{display:flex;flex-direction:column;gap:1px}.program-readiness-grid b{font-size:10.5px;color:#3b4f64}.program-readiness-grid small{font-size:9px;color:#7a8998}.program-review-note-field{display:flex;flex-direction:column;gap:5px;font-size:10.5px;font-weight:700;color:#42576a}.program-review-note-field>span{font-size:8.5px;color:#8a98a5;font-weight:500}.program-review-note-field textarea{min-height:80px}.program-review-flow{display:flex;align-items:center;justify-content:center;gap:9px;margin:18px 0}.program-review-flow>div{display:flex;align-items:center;gap:6px;border:1px solid #dfe6eb;border-radius:999px;padding:6px 9px;font-size:9.5px;color:#7b8997}.program-review-flow>div.active{border-color:#bdd2e4;background:#edf5fb;color:#123d73}.program-review-flow>div b{width:18px;height:18px;border-radius:50%;background:#e7edf1;display:grid;place-items:center;font-size:8px}.program-review-flow>div.active b{background:#123d73;color:#fff}.program-review-flow>i{font-size:10px;color:#a0aab4}
.program-review-overlay{position:fixed;inset:0;background:rgba(16,36,62,.38);z-index:9999;display:grid;place-items:center;padding:20px;backdrop-filter:blur(2px)}.program-review-modal{width:min(520px,100%);background:#fff;border-radius:18px;padding:23px;box-shadow:0 24px 60px rgba(16,36,62,.24);position:relative}.program-review-close{position:absolute;right:13px;top:13px;width:30px;height:30px;border-radius:50%!important;background:#f2f5f7!important;color:#607080!important;border:0!important;padding:0!important}.program-review-modal h2{font-size:20px;color:#10243e;margin:4px 0 6px}.program-review-modal p{font-size:11px;line-height:1.5;color:#6b7b89;margin:0 0 12px}.program-review-modal textarea{width:100%;box-sizing:border-box;min-height:100px}.program-review-modal-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:12px}
@media(max-width:900px){.program-v69-hero{padding-left:20px}.program-wizard-art{width:220px;min-width:190px}.program-wizard-art img{width:205px}.program-library-tabs-v69{overflow:auto}.program-library-tabs-v69 button{min-width:150px}.program-wizard-options{grid-template-columns:1fr}.program-wizard-intro{grid-template-columns:1fr 190px}.program-wizard-intro img{width:185px}.program-readiness-grid{grid-template-columns:1fr}}
@media(max-width:650px){.program-v69-hero{padding:20px;min-height:0}.program-wizard-art{display:none}.program-wizard-intro{grid-template-columns:1fr;padding:22px}.program-wizard-intro img{display:none}.program-wizard-intro>div{padding:0}.program-review-history{grid-template-columns:1fr}.program-review-history>div.wide{grid-column:auto}}

/* v70 — measurement coverage + rate/scale authoring guidance */
.program-measurement-coverage{display:grid;grid-template-columns:230px minmax(0,1fr);gap:14px;align-items:center;margin:0 0 14px;padding:13px 14px;border:1px solid #dce5eb;border-radius:14px;background:linear-gradient(135deg,#fbfdff,#f7fafc)}
.program-measurement-coverage>div:first-child{display:flex;flex-direction:column;gap:2px}.program-measurement-coverage>div:first-child>span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#7a8897;font-weight:700}.program-measurement-coverage>div:first-child>b{font-size:12px;color:#243d55}.program-measurement-coverage>div:first-child>small{font-size:9px;line-height:1.4;color:#7a8897}
.program-measurement-coverage-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.program-measurement-coverage-grid button{border:1px solid #dbe5eb!important;background:#fff!important;color:#53687d!important;border-radius:10px!important;box-shadow:none!important;padding:8px 9px!important;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:9.5px;text-align:left}.program-measurement-coverage-grid button b{min-width:22px;height:20px;padding:0 5px;border-radius:999px;display:grid;place-items:center;background:#edf3f7;color:#52697f;font-size:9px}.program-measurement-coverage-grid button:hover,.program-measurement-coverage-grid button.active{border-color:#aec8da!important;background:#f7fbfe!important;color:#123d73!important}.program-measurement-coverage-grid button.active b{background:#123d73;color:#fff}
.program-measure-guidance{display:flex;gap:10px;align-items:flex-start;margin:11px 0;padding:10px 11px;border-radius:11px;border:1px solid #ddd;background:#fafcfd}.program-measure-guidance>i{font-size:16px;margin-top:1px}.program-measure-guidance>div{display:flex;flex-direction:column;gap:2px}.program-measure-guidance b{font-size:10.5px}.program-measure-guidance span{font-size:9.5px;line-height:1.45;color:#6e7d8b}.program-measure-guidance.rate{border-color:#dfd8f5;background:#faf8ff}.program-measure-guidance.rate>i,.program-measure-guidance.rate b{color:#6d4cc2}.program-measure-guidance.latency{border-color:#fed7aa;background:#fffaf5}.program-measure-guidance.latency>i,.program-measure-guidance.latency b{color:#9a3412}.program-measure-guidance.scale{border-color:#cfe7f2;background:#f7fcfe}.program-measure-guidance.scale>i,.program-measure-guidance.scale b{color:#036a92}
@media(max-width:900px){.program-measurement-coverage{grid-template-columns:1fr}.program-measurement-coverage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v73 interactive Program previews + clearer use path */
.program-widget-preview.interactive{position:relative;background:linear-gradient(180deg,#fbfdff 0%,#f6faff 100%);border-color:#cfdeec;box-shadow:0 7px 18px rgba(16,36,62,.04)}
.program-widget-preview.interactive button{cursor:pointer}.program-widget-preview.interactive button:active{transform:translateY(1px)}
.program-demo-sub{text-align:center;font-size:10px;color:var(--muted);margin-top:-4px}
.program-demo-value.small{font-size:13px;line-height:1.35}
.program-demo-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #e3ebf3;padding-top:8px;margin-top:1px}
.program-demo-footer small{text-align:left!important;color:#52677d!important;text-transform:none!important;letter-spacing:0!important;font-size:9.5px!important;display:flex;align-items:center;gap:5px}
.program-demo-reset{border:0!important;background:transparent!important;padding:2px 0!important;height:auto!important;min-height:0!important;color:#58708a!important;font-size:9.5px!important;box-shadow:none!important}
.program-demo-scale button.selected{background:#123d73;color:#fff;border-color:#123d73}
.program-demo-steps button{width:100%;display:grid;grid-template-columns:20px 1fr auto;gap:7px;align-items:center;text-align:left;padding:7px 8px;background:#fff;border:1px solid var(--line);border-radius:8px;font-size:10px;color:#334155}
.program-demo-steps button b{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#edf4ff;color:#123d73}.program-demo-steps button em{font-style:normal;font-size:8.5px;color:var(--muted)}
.program-demo-steps button[data-step-state="1"]{border-color:#b7d69b;background:#f7fbf2}.program-demo-steps button[data-step-state="1"] em{color:#4d701c}.program-demo-steps button[data-step-state="2"]{border-color:#e5c68e;background:#fffaf1}.program-demo-steps button[data-step-state="2"] em{color:#8c5b13}.program-demo-steps button[data-step-state="3"]{border-color:#e7b8b0;background:#fff8f7}.program-demo-steps button[data-step-state="3"] em{color:#9a3d31}
.program-demo-explainer{font-size:10.5px;line-height:1.5;color:var(--muted);margin:-3px 0 11px}
.program-use-path{background:#fff;border:1px solid var(--line);border-radius:15px;padding:15px;margin:0 0 12px}.program-use-path-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;margin-bottom:11px}.program-use-path-head span{font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.program-use-path-head b{font-size:12px;color:#10243e}.program-use-path-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.program-use-path-steps>div{display:flex;gap:7px;align-items:flex-start;padding:8px;border-radius:10px;background:#f8fafc;border:1px solid #edf1f4}.program-use-path-steps>div>span{width:19px;height:19px;border-radius:50%;display:grid;place-items:center;flex:0 0 19px;background:#dfe7ee;color:#536273;font-size:8px;font-weight:800}.program-use-path-steps>div>div{display:flex;flex-direction:column;gap:1px}.program-use-path-steps b{font-size:9.5px;color:#334155}.program-use-path-steps small{font-size:8.5px;line-height:1.3;color:var(--muted)}.program-use-path-steps .current{background:#f1f6fc;border-color:#c8d9ea}.program-use-path-steps .current>span{background:#123d73;color:#fff}.program-use-path-steps .done{background:#f7fbf2;border-color:#d8e8ca}.program-use-path-steps .done>span{background:#6b9633;color:#fff}
@media(max-width:900px){.program-use-path-steps{grid-template-columns:1fr 1fr}.program-use-path-head{align-items:flex-start;flex-direction:column}}

/* v75 — stable plan basket + live-like Program sandbox */
.program-widget-preview.collector-sandbox{display:block;background:#fff;border:1px solid #dfe6ed;border-radius:12px;padding:12px;box-shadow:0 1px 3px rgba(15,23,42,.04)}
.collector-demo-head{display:flex;align-items:center;gap:6px;margin-bottom:8px}.collector-demo-name{font-size:13px;font-weight:700;flex:1;color:#10243e;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collector-demo-badge{display:inline-flex;align-items:center;flex-shrink:0;font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:#123d73;background:#eef2ff;padding:3px 7px;border-radius:999px;white-space:nowrap}.collector-demo-badge.interval{color:#0e7490;background:#ecfeff}.collector-demo-badge.duration,.collector-demo-badge.latency{color:#9a5412;background:#fff7ed}.collector-demo-badge.rate{color:#7c3aed;background:#f5f3ff}.collector-demo-badge.trial{color:#166534;background:#f0fdf4}.collector-demo-badge.task_analysis{color:#9d174d;background:#fdf2f8}.collector-demo-badge.scale{color:#0369a1;background:#f0f9ff}.collector-demo-count{font-size:30px;font-weight:750;text-align:center;line-height:1;margin:4px 0 8px;color:#10243e}.collector-demo-timer{font-size:27px;font-weight:750;text-align:center;font-variant-numeric:tabular-nums;margin:4px 0 8px;color:#10243e}.collector-demo-timer.compact{font-size:21px;margin-bottom:8px}.collector-demo-timer-block{margin-top:9px;padding-top:9px;border-top:1px solid #edf1f5}.collector-demo-row{display:flex;gap:6px}.collector-demo-row.three>*{flex:1}.collector-demo-row.scale>*{flex:1}.collector-demo-big,.collector-demo-small{border-radius:9px!important;font-family:inherit!important;font-weight:750!important;cursor:pointer!important;box-shadow:none!important}.collector-demo-big{flex:1;min-height:39px;border:0!important;font-size:12px!important;padding:8px!important}.collector-demo-small{min-height:34px;border:1px solid #d8e0e7!important;background:#fff!important;color:#334155!important;padding:7px 9px!important}.collector-demo-big.primary{background:#123d73!important;color:#fff!important}.collector-demo-big.plus{background:#effbea!important;color:#386b18!important}.collector-demo-big.minus{background:#fff1ef!important;color:#9a382e!important}.collector-demo-big.neutral{background:#f1f5f9!important;color:#475569!important}.collector-demo-big.prompt{background:#fef3c7!important;color:#92400e!important}.collector-demo-small.selected{background:#123d73!important;color:#fff!important;border-color:#123d73!important}.collector-demo-sub{text-align:center;color:#64748b;font-size:9.5px;margin-top:8px;line-height:1.35}.collector-demo-sub.tight{margin:-2px 0 8px}.collector-demo-sub.ta-summary{text-align:left;margin:0 0 7px}.collector-demo-ta{display:flex;flex-direction:column;gap:6px}.collector-demo-ta-row{border:1px solid #e3e9ef;border-radius:9px;padding:7px;background:#fbfcfd}.collector-demo-step{font-size:9.5px;font-weight:650;color:#334155;margin-bottom:5px}.collector-demo-anchor{font-size:9.5px;line-height:1.35;color:#526276;background:#f7f9fb;border-radius:7px;padding:7px;margin-top:7px}.collector-sandbox .program-demo-footer{margin-top:9px}
.program-demo-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #e3ebf3;padding-top:8px;margin-top:1px}.program-demo-footer small{text-align:left!important;color:#52677d!important;text-transform:none!important;letter-spacing:0!important;font-size:9.5px!important;display:flex;align-items:center;gap:5px}.program-demo-reset{font-size:9px!important;padding:5px 8px!important;background:#fff!important;color:#526276!important;border:1px solid #dce5ed!important;box-shadow:none!important}
.program-card-actions .program-card-add{display:inline-flex;align-items:center;justify-content:center;gap:5px}
.program-plan-basket{position:sticky;bottom:14px;z-index:30;margin:18px auto 0;max-width:920px;border:1px solid #cbd9e5;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);box-shadow:0 14px 34px rgba(16,36,62,.14);border-radius:16px;padding:12px 14px;display:flex;align-items:center;gap:16px}.program-plan-basket>div:first-child{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.program-plan-basket span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#60758a}.program-plan-basket b{font-size:13px;color:#10243e}.program-plan-basket small{font-size:9.5px;color:#64748b}.program-plan-basket-actions{display:flex;gap:7px;flex-shrink:0}.program-plan-basket-actions button{height:36px}
.program-target-basket-btn{display:inline-flex!important;align-items:center!important;gap:6px!important;margin-top:8px!important;padding:7px 10px!important;border-radius:9px!important;background:#f3f7fb!important;color:#123d73!important;border:1px solid #cbdbe8!important;box-shadow:none!important;font-size:10px!important}.program-target-basket-btn.selected{background:#123d73!important;color:#fff!important;border-color:#123d73!important}
.program-basket-review-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;max-width:1120px;margin:0 auto}.program-basket-review-hero,.program-basket-review-list,.program-basket-review-side,.program-basket-preview{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.program-basket-review-hero{margin-bottom:10px;background:linear-gradient(135deg,#fff 0%,#f5f9fd 100%)}.program-basket-review-hero h1{margin:4px 0 6px;font-size:24px;color:#10243e}.program-basket-review-hero p{margin:0;color:var(--muted);font-size:11.5px;line-height:1.5}.program-basket-review-list{margin-bottom:10px}.program-basket-review-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid #edf1f4}.program-basket-review-item:first-of-type{border-top:0}.program-basket-review-item>div{display:flex;flex-direction:column;flex:1;min-width:0}.program-basket-review-item span{font-size:8.5px;text-transform:uppercase;color:var(--muted);letter-spacing:.05em}.program-basket-review-item b{font-size:12px;color:#10243e}.program-basket-review-item small{font-size:9.5px;color:#64748b}.program-basket-review-side{position:sticky;top:78px;align-self:start}.program-basket-review-side h2{font-size:16px;margin:0 0 12px;color:#10243e}.program-basket-review-side>label:not(.program-check){display:flex;flex-direction:column;gap:5px;font-size:10px;font-weight:700;color:#526276;margin-bottom:10px}.program-basket-safe{display:flex;gap:7px;align-items:flex-start;background:#f7fafc;border:1px solid #dfe7ee;border-radius:10px;padding:9px;margin:12px 0;font-size:9.5px;color:#526276;line-height:1.4}.program-basket-safe i{color:#4d701c;font-size:15px}.program-basket-preview{margin-top:10px}.program-basket-preview summary{cursor:pointer;font-weight:700;font-size:11px;color:#123d73}.program-basket-preview>p{font-size:9.5px;color:var(--muted)}.program-basket-preview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px;margin-top:10px}
@media(max-width:900px){.program-basket-review-layout{grid-template-columns:1fr}.program-basket-review-side{position:static}.program-plan-basket{position:static;flex-direction:column;align-items:stretch}.program-plan-basket-actions{width:100%}.program-plan-basket-actions button{flex:1}}

/* v76 — Plan Library marketplace polish + deterministic collector demos */
.program-widget-preview.collector-sandbox button:disabled{opacity:.42!important;cursor:not-allowed!important;transform:none!important}
/* OWNER PRODUCT REVIEW, findings 6-10. Controls the RECORDER has that this
   preview cannot simulate (they write to a real session) are shown here,
   disabled, with what they do. Hiding them is what told clinicians the
   Recorder could not affirm a true zero or correct a count; showing them
   live would be equally untrue. Fill and ink carry the state - no corner
   accent, no edge marker. */
.collector-demo-recorder-only{margin-top:9px;padding-top:9px;border-top:1px solid #edf1f5}
.collector-demo-recorder-only .collector-demo-row{flex-wrap:wrap}
/* One line per control rather than one run-on paragraph: two notes
   about two different controls read as one sentence otherwise. */
.collector-demo-recorder-only ul{margin:7px 0 0;padding:0;list-style:none;
  font-size:9.5px;line-height:1.45;color:#64748b;text-align:left}
.collector-demo-recorder-only li{margin:0 0 3px;padding-left:10px;position:relative}
.collector-demo-recorder-only li:before{content:'·';position:absolute;left:2px}
.collector-demo-recorder-only b{color:#475569;font-weight:700}
.program-widget-preview .collector-demo-small.is-recorder-only{
  background:#f6f8fa!important;color:#64748b!important;border-style:dashed!important}
.collector-demo-hint{font-size:9.5px;line-height:1.45;color:#64748b;margin-top:7px;text-align:left}
.collector-demo-notes{color:#526276;background:#f7f9fb;border-radius:7px;padding:7px;text-align:left}
/* One legend per card rather than a sub-label on every button - a task
   analysis can carry seven levels on a dozen steps, and printing the meaning
   84 times would push the steps off the screen. Same reasoning, and the same
   shape, as the Recorder's own .ta-key. */
.collector-demo-legend{display:flex;flex-wrap:wrap;gap:4px 10px;margin:0 0 7px;
  font-size:9.5px;color:#526276}
.collector-demo-legend b{color:#10243e}
.program-demo-chrome{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.collector-demo-kicker{text-align:center;font-size:8.5px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#7b8a99;margin:2px 0 1px}
.collector-demo-hint{font-size:9px;line-height:1.4;color:#6f7f8f;text-align:center;margin-top:8px}
.collector-demo-caution{display:flex;gap:6px;align-items:flex-start;margin-top:8px;padding:7px 8px;border:1px solid #f0dec1;background:#fffaf2;border-radius:8px;color:#7d5a24;font-size:8.8px;line-height:1.35}
.collector-demo-result{display:flex;align-items:baseline;justify-content:center;gap:6px;margin-top:9px;color:#64748b}.collector-demo-result.left{justify-content:flex-start}.collector-demo-result b{font-size:18px;color:#10243e}.collector-demo-result span{font-size:9.5px}
.collector-demo-inline-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px;padding-top:7px;border-top:1px solid #edf1f4;color:#64748b;font-size:8.8px}.collector-demo-inline-actions button{border:0!important;background:transparent!important;color:#123d73!important;padding:2px!important;font-size:8.8px!important;font-weight:700!important;box-shadow:none!important}
.collector-demo-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:8px}.collector-demo-metrics span{border:1px solid #e6ebef;background:#f9fbfc;border-radius:8px;padding:6px;text-align:center;display:flex;flex-direction:column;gap:1px;font-size:8px;color:#748291}.collector-demo-metrics b{font-size:10px;color:#31485f}
.collector-demo-row.two-stage .collector-demo-big{display:flex;align-items:center;justify-content:center;gap:5px}.collector-demo-row.two-stage .collector-demo-big small{width:17px;height:17px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.35);font-size:8px}
.collector-demo-rate-head{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:2px 0 9px}.collector-demo-rate-head>div{border:1px solid #e5eaf0;border-radius:9px;background:#f9fbfd;padding:7px;text-align:center;display:flex;flex-direction:column;gap:2px}.collector-demo-rate-head span{font-size:7.5px;text-transform:uppercase;letter-spacing:.07em;color:#8491a0;font-weight:800}.collector-demo-rate-head b{font-size:15px;color:#10243e;font-variant-numeric:tabular-nums}
.collector-demo-observation{width:100%;margin-top:7px;border:1px solid #c9d9e6!important;background:#f5f9fc!important;color:#123d73!important;border-radius:9px!important;padding:8px 10px!important;box-shadow:none!important;font-size:10px!important;font-weight:750!important;display:flex;align-items:center;justify-content:center;gap:6px}.collector-demo-observation.running{border-color:#ebc5bf!important;background:#fff7f5!important;color:#984237!important}
.collector-demo-step{display:flex;align-items:center;gap:6px!important;margin-bottom:6px!important}.collector-demo-step b{display:grid;place-items:center;width:19px;height:19px;border-radius:50%;background:#eaf1f7;color:#123d73;font-size:8px;flex:0 0 19px}.collector-demo-step span{font-size:9.5px;font-weight:650;color:#334155}
.collector-demo-anchor{min-height:29px}.collector-demo-anchor.selected{border:1px solid #d9e6f0;background:#f7fbff;color:#334e68}
.program-demo-reset{display:inline-flex!important;align-items:center!important;gap:4px!important}

.program-card-actions .program-card-add.selected,.program-card-actions .program-card-add:disabled{background:#eef6ef!important;color:#4e6d3d!important;border-color:#d3e4d1!important;opacity:1!important;cursor:default!important}
.program-plan-basket-copy>span{display:flex;align-items:center;gap:5px}.program-basket-chips{display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin:4px 0 2px}.program-basket-chip{display:inline-flex!important;align-items:center!important;gap:4px!important;border:1px solid #dce5ec;background:#f7fafc;border-radius:999px;padding:3px 7px!important;font-size:8.5px!important;text-transform:none!important;letter-spacing:0!important;color:#52677c!important;font-weight:650!important;max-width:230px}.program-basket-chip i{font-size:9px}.program-basket-chip b{display:inline-grid!important;place-items:center;background:#e7eef4;border-radius:999px;min-width:17px;height:17px;padding:0 4px;font-size:7.5px!important;color:#40586e!important}.program-basket-more{font-size:8.5px!important;text-transform:none!important;letter-spacing:0!important;color:#768697!important}
.program-basket-review-stats{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.program-basket-review-stats span{border:1px solid #dfe7ed;background:#fff;border-radius:10px;padding:7px 9px;font-size:9px;color:#68798a}.program-basket-review-stats b{font-size:12px;color:#123d73;margin-right:3px}
.program-basket-group{border:1px solid #e1e7ec;border-radius:13px;overflow:hidden;margin-top:9px;background:#fff}.program-basket-group-head{display:flex;gap:10px;align-items:center;justify-content:space-between;background:#f8fafc;padding:10px 11px;border-bottom:1px solid #e8edf1}.program-basket-group-head>div{display:flex;flex-direction:column;gap:1px;min-width:0}.program-basket-group-head span{font-size:7.8px;text-transform:uppercase;letter-spacing:.08em;color:#81909f;font-weight:800}.program-basket-group-head h3{font-size:12px;margin:0;color:#10243e}.program-basket-group-head small{font-size:8.5px;color:#718191}.program-basket-group-items{padding:0 10px}.program-basket-review-item{border-top:1px solid #edf1f4!important}.program-basket-review-item:first-child{border-top:0!important}.program-basket-target-icon{width:29px;height:29px;border-radius:8px;background:#eff5fb;color:#123d73;display:grid;place-items:center;flex:0 0 29px}.program-basket-target-copy{display:flex!important;flex-direction:column!important;gap:3px!important;flex:1}.program-basket-target-copy>small{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.program-basket-target-copy .pill{font-size:7.7px!important;padding:2px 5px!important}.program-basket-target-copy>small>span:not(.pill){font-size:8.5px;color:#758494}
.program-basket-preview summary{display:flex;align-items:center;justify-content:space-between;gap:10px}.program-basket-preview summary>span{display:flex;align-items:center;gap:6px}.program-basket-preview summary small{font-size:8.5px;font-weight:500;color:#7b8a99}.program-basket-preview-item{min-width:0}.program-basket-preview-source{display:flex;flex-direction:column;gap:1px;margin:0 0 5px;padding:0 2px}.program-basket-preview-source span{font-size:7.5px;text-transform:uppercase;letter-spacing:.06em;color:#8593a1}.program-basket-preview-source b{font-size:9.5px;color:#40566b}
.program-basket-side-step{display:flex;gap:8px;align-items:flex-start;margin:11px 0 7px}.program-basket-side-step>span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#123d73;color:#fff;font-size:8px;font-weight:800;flex:0 0 22px}.program-basket-side-step>div{display:flex;flex-direction:column;gap:1px}.program-basket-side-step b{font-size:10px;color:#334b61}.program-basket-side-step small{font-size:8.5px;line-height:1.35;color:#7b8996}

@media(max-width:650px){
  .collector-demo-rate-head{grid-template-columns:1fr 1fr 1fr}
  .collector-demo-metrics{grid-template-columns:1fr}
  .program-basket-preview summary{align-items:flex-start;flex-direction:column}
  .program-basket-group-head{align-items:flex-start;flex-direction:column}
  .program-basket-group-head button{width:100%}
}

/* v77 — visual measurement guide using Dash measurement artwork */
.program-measurement-coverage{grid-template-columns:250px minmax(0,1fr);align-items:stretch}
.program-measurement-coverage-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.program-measurement-coverage-grid button{display:grid!important;grid-template-columns:44px minmax(0,1fr) 24px;align-items:center!important;justify-content:stretch!important;gap:7px!important;padding:7px!important;min-height:58px;text-transform:none!important;letter-spacing:0!important}
.program-measurement-coverage-art{width:44px;height:44px;border-radius:9px;background:linear-gradient(145deg,#f8fbfd,#edf5fb);display:grid;place-items:center;overflow:hidden}
.program-measurement-coverage-img{width:43px;height:43px;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(16,36,62,.08))}
.program-measurement-coverage-copy{display:flex;flex-direction:column;gap:1px;min-width:0;text-align:left}
.program-measurement-coverage-copy b{background:none!important;color:#30475d!important;display:block!important;min-width:0!important;height:auto!important;padding:0!important;border-radius:0!important;font-size:9.5px!important;line-height:1.2}
.program-measurement-coverage-copy small{font-size:7.8px;line-height:1.25;color:#7b8998;font-weight:500}
.program-measurement-coverage-grid button em{font-style:normal;width:22px;height:22px;border-radius:999px;display:grid;place-items:center;background:#edf3f7;color:#52697f;font-size:8px;font-weight:800}
.program-measurement-coverage-grid button.active .program-measurement-coverage-copy b{color:#123d73!important}.program-measurement-coverage-grid button.active em{background:#123d73;color:#fff}.program-measurement-coverage-grid button.active .program-measurement-coverage-art{background:#eaf4fc}

.program-measure-picker{border:1px solid #d9e5ed;border-radius:16px;background:linear-gradient(180deg,#fbfdff,#f8fbfd);padding:14px;margin:0 0 15px;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
.program-measure-picker-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:10px}.program-measure-picker-head>div{display:flex;flex-direction:column;gap:2px}.program-measure-picker-head>div>span{font-size:8px;text-transform:uppercase;letter-spacing:.09em;color:#67809a;font-weight:800}.program-measure-picker-head h3{font-size:15px;color:#10243e;margin:0}.program-measure-picker-head p{font-size:9.8px;line-height:1.45;color:#718191;margin:0;max-width:650px}
.program-measure-picker-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.program-measure-picker-card{border:1px solid #dde6ed!important;background:#fff!important;color:#334b61!important;box-shadow:none!important;border-radius:13px!important;padding:9px!important;display:grid!important;grid-template-columns:58px minmax(0,1fr) 15px;gap:8px;align-items:center;text-align:left!important;min-height:98px}
.program-measure-picker-card:hover{border-color:#aac8dc!important;background:#fafdff!important;transform:translateY(-1px)}
.program-measure-picker-art{width:58px;height:58px;display:grid;place-items:center;border-radius:12px;background:#f3f8fc;overflow:hidden}.program-measure-picker-img{width:58px;height:58px;object-fit:contain;filter:drop-shadow(0 3px 5px rgba(16,36,62,.1))}
.program-measure-picker-copy{display:flex;flex-direction:column;gap:1px;min-width:0}.program-measure-picker-copy b{font-size:9.5px;color:#123d73}.program-measure-picker-copy strong{font-size:9px;color:#344d64;line-height:1.2}.program-measure-picker-copy small{font-size:7.8px;line-height:1.3;color:#718191;font-weight:500}.program-measure-picker-copy em{font-size:7.4px;line-height:1.25;color:#8492a0;font-style:normal;margin-top:2px}.program-measure-picker-card>i{font-size:10px;color:#66819a}

.program-target-measurement{display:grid;grid-template-columns:94px minmax(0,1fr) 180px;gap:14px;align-items:center;border:1px solid #dce6ee;border-radius:14px;background:linear-gradient(135deg,#fff,#f7fbfe);padding:11px 12px;margin:0 0 13px}
.program-target-measurement-art{width:94px;height:82px;border-radius:12px;background:#f2f7fb;display:grid;place-items:center;overflow:hidden}.program-target-measurement-img{width:92px;height:82px;object-fit:contain;filter:drop-shadow(0 4px 6px rgba(16,36,62,.1))}
.program-target-measurement-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.program-target-measurement-copy>span{font-size:7.8px;text-transform:uppercase;letter-spacing:.09em;color:#73899e;font-weight:800}.program-target-measurement-copy h4{font-size:14px;color:#10243e;margin:0}.program-target-measurement-copy>b{font-size:10px;color:#36546d}.program-target-measurement-copy p{font-size:9px;line-height:1.4;color:#718191;margin:1px 0}.program-target-measurement-copy small{font-size:8px;line-height:1.35;color:#748595}.program-target-measurement-copy small strong{color:#52687d}.program-target-measurement-copy small em{display:block;font-style:normal;color:#8492a0;margin-top:2px}
.program-target-measurement>label{display:flex;flex-direction:column;gap:5px;font-size:8.5px;color:#6a7c8d;font-weight:700}.program-target-measurement select{width:100%}

.program-card-measures{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:0 0 9px}.program-card-measures>span{display:inline-flex;align-items:center;gap:4px;border:1px solid #e1e8ed;background:#f9fbfc;border-radius:9px;padding:3px 6px 3px 3px}.program-card-measure-img{width:25px;height:25px;object-fit:contain}.program-card-measures b{font-size:7.8px;color:#53697c;font-weight:700}.program-card-measures em{font-style:normal;font-size:8px;color:#748493;background:#eef3f6;border-radius:999px;padding:3px 6px}

.program-target-preview-measure{display:flex;align-items:center;gap:8px;margin-bottom:8px}.program-target-preview-art{width:48px;height:48px;border-radius:10px;background:#f2f7fb;display:grid;place-items:center;overflow:hidden;flex:0 0 48px}.program-target-preview-img{width:47px;height:47px;object-fit:contain}.program-target-preview-measure>div{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.program-target-preview-measure small{font-size:8.2px;color:#748595}.program-target-preview-measure .program-target-number{width:100%}

.program-basket-target-icon.art{width:38px;height:38px;flex:0 0 38px;border-radius:10px;background:#f2f7fb;overflow:hidden}.program-basket-measurement-img{width:37px;height:37px;object-fit:contain}

@media(max-width:1100px){.program-measurement-coverage-grid,.program-measure-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.program-target-measurement{grid-template-columns:82px minmax(0,1fr);}.program-target-measurement>label{grid-column:1/-1}.program-target-measurement-art{width:82px;height:72px}.program-target-measurement-img{width:80px;height:72px}}
@media(max-width:700px){.program-measurement-coverage{grid-template-columns:1fr}.program-measurement-coverage-grid,.program-measure-picker-grid{grid-template-columns:1fr}.program-measure-picker-head{flex-direction:column}.program-target-measurement{grid-template-columns:70px minmax(0,1fr);padding:9px}.program-target-measurement-art{width:70px;height:62px}.program-target-measurement-img{width:68px;height:62px}.program-card-measures b{font-size:7.4px}}

/* v78 — measurement artwork cleanup: larger transparent cutouts, less boxed UI */
.program-measurement-coverage-grid{gap:12px}
.program-measurement-coverage-grid button{
  grid-template-columns:76px minmax(0,1fr) 28px;
  gap:10px!important;
  min-height:82px;
  padding:8px 10px!important;
  border-color:transparent!important;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:16px!important;
}
.program-measurement-coverage-grid button:hover,
.program-measurement-coverage-grid button.active{
  background:rgba(244,248,251,.82)!important;
  border-color:#d9e6ef!important;
}
.program-measurement-coverage-art{
  width:76px;
  height:68px;
  border-radius:0;
  background:transparent!important;
  overflow:visible;
}
.program-measurement-coverage-img{
  width:74px;
  height:68px;
  object-fit:contain;
  filter:drop-shadow(0 5px 7px rgba(16,36,62,.12));
  transform:scale(1.08);
}
.program-measurement-coverage-copy b{font-size:10.5px!important}
.program-measurement-coverage-copy small{font-size:8.4px;line-height:1.3}
.program-measurement-coverage-grid button.active .program-measurement-coverage-art{background:transparent!important}

.program-measure-picker{
  border:0;
  background:transparent;
  box-shadow:none;
  padding:8px 0 14px;
}
.program-measure-picker-head{margin-bottom:18px}
.program-measure-picker-grid{gap:18px 14px}
.program-measure-picker-card{
  position:relative;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:18px!important;
  padding:8px 12px 14px!important;
  display:flex!important;
  flex-direction:column;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:7px!important;
  min-height:250px;
  text-align:center!important;
  overflow:visible;
}
.program-measure-picker-card:hover{
  border:0!important;
  background:rgba(244,248,251,.78)!important;
  transform:translateY(-2px);
}
.program-measure-picker-art{
  width:100%;
  height:148px;
  display:grid;
  place-items:center;
  border-radius:0;
  background:transparent!important;
  overflow:visible;
}
.program-measure-picker-img{
  width:142px;
  height:142px;
  object-fit:contain;
  filter:drop-shadow(0 9px 12px rgba(16,36,62,.15));
  transform:scale(1.08);
}
.program-measure-picker-copy{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:3px;
  width:100%;
}
.program-measure-picker-copy b{font-size:12px;color:#123d73}
.program-measure-picker-copy strong{font-size:10.4px;color:#344d64;line-height:1.25}
.program-measure-picker-copy small{font-size:8.7px;line-height:1.38;color:#718191;font-weight:500;max-width:225px}
.program-measure-picker-copy em{font-size:8px;line-height:1.3;color:#8492a0;font-style:normal;margin-top:3px;max-width:225px}
.program-measure-picker-card>i{
  position:absolute;
  top:8px;
  right:12px;
  width:27px;
  height:27px;
  border-radius:999px;
  display:grid;
  place-items:center;
  background:#eef4f8;
  color:#47647e;
  font-size:11px;
}

.program-target-measurement{
  grid-template-columns:170px minmax(0,1fr) 180px;
  gap:18px;
  padding:14px 16px;
}
.program-target-measurement-art{
  width:170px;
  height:132px;
  border-radius:0;
  background:transparent!important;
  overflow:visible;
}
.program-target-measurement-img{
  width:164px;
  height:132px;
  object-fit:contain;
  filter:drop-shadow(0 8px 10px rgba(16,36,62,.13));
  transform:scale(1.04);
}
.program-target-measurement-copy h4{font-size:16px}
.program-target-measurement-copy>b{font-size:10.8px}
.program-target-measurement-copy p{font-size:9.4px}

.program-card-measures{gap:7px;margin-bottom:10px}
.program-card-measures>span{
  gap:4px;
  border:0;
  background:transparent;
  border-radius:0;
  padding:0 5px 0 0;
}
.program-card-measure-img{
  width:34px;
  height:34px;
  object-fit:contain;
  filter:drop-shadow(0 3px 4px rgba(16,36,62,.1));
}
.program-card-measures b{font-size:8px;color:#53697c}

.program-target-preview-art{
  width:72px;
  height:66px;
  border-radius:0;
  background:transparent;
  overflow:visible;
  flex:0 0 72px;
}
.program-target-preview-img{
  width:70px;
  height:66px;
  object-fit:contain;
  filter:drop-shadow(0 4px 6px rgba(16,36,62,.11));
}

.program-basket-target-icon.art{
  width:48px;
  height:44px;
  flex:0 0 48px;
  border-radius:0;
  background:transparent;
  overflow:visible;
}
.program-basket-measurement-img{
  width:46px;
  height:44px;
  object-fit:contain;
  filter:drop-shadow(0 3px 5px rgba(16,36,62,.1));
}

@media(max-width:1100px){
  .program-measure-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .program-measure-picker-card{min-height:238px}
  .program-measure-picker-art{height:138px}
  .program-measure-picker-img{width:132px;height:132px}
  .program-target-measurement{grid-template-columns:140px minmax(0,1fr)}
  .program-target-measurement-art{width:140px;height:112px}
  .program-target-measurement-img{width:136px;height:112px}
  .program-target-measurement>label{grid-column:1/-1}
}
@media(max-width:700px){
  .program-measurement-coverage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .program-measurement-coverage-grid button{grid-template-columns:60px minmax(0,1fr);min-height:76px;padding:6px!important}
  .program-measurement-coverage-grid button em{display:none}
  .program-measurement-coverage-art{width:60px;height:58px}
  .program-measurement-coverage-img{width:58px;height:56px}
  .program-measure-picker-grid{grid-template-columns:1fr 1fr;gap:12px 6px}
  .program-measure-picker-card{min-height:220px;padding:6px 6px 12px!important}
  .program-measure-picker-art{height:122px}
  .program-measure-picker-img{width:116px;height:116px}
  .program-measure-picker-copy b{font-size:11px}
  .program-measure-picker-copy strong{font-size:9.4px}
  .program-measure-picker-copy small{font-size:8px}
  .program-measure-picker-copy em{display:none}
  .program-target-measurement{grid-template-columns:112px minmax(0,1fr);padding:10px 8px;gap:10px}
  .program-target-measurement-art{width:112px;height:92px}
  .program-target-measurement-img{width:108px;height:90px}
  .program-card-measure-img{width:31px;height:31px}
}
@media(max-width:480px){
  .program-measurement-coverage-grid{grid-template-columns:1fr}
  .program-measure-picker-grid{grid-template-columns:1fr}
  .program-measure-picker-card{min-height:0;display:grid!important;grid-template-columns:120px minmax(0,1fr);text-align:left!important;align-items:center!important;padding:8px!important}
  .program-measure-picker-art{width:120px;height:112px}
  .program-measure-picker-img{width:108px;height:108px}
  .program-measure-picker-copy{align-items:flex-start;text-align:left}
  .program-measure-picker-copy small,.program-measure-picker-copy em{max-width:none}
}

/* v79 — full-width measurement guide + clearer latency controls */
.program-measurement-coverage{
  display:grid;
  grid-template-columns:1fr !important;
  gap:14px;
  align-items:start;
}
.program-measurement-coverage-intro{
  display:flex;
  flex-direction:column;
  gap:3px;
  max-width:760px;
  padding:0 2px;
}
.program-measurement-coverage-intro>span{
  font-size:8px;
  text-transform:uppercase;
  letter-spacing:.09em;
  color:#6f8294;
  font-weight:800;
}
.program-measurement-coverage-intro>b{
  font-size:13px;
  line-height:1.25;
  color:#18344f;
}
.program-measurement-coverage-intro>small{
  font-size:9.2px;
  line-height:1.42;
  color:#718191;
}
.program-measurement-coverage-grid{
  width:100%;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px 14px;
}
.program-measurement-coverage-grid button{
  grid-template-columns:72px minmax(0,1fr) 28px;
  min-width:0;
}
.program-measurement-coverage-copy b,
.program-measurement-coverage-copy small{
  white-space:normal !important;
  overflow:visible !important;
  text-overflow:clip !important;
  word-break:normal;
}
.program-measurement-coverage-copy b{font-size:11px!important;line-height:1.2!important}
.program-measurement-coverage-copy small{font-size:8.6px!important;line-height:1.32!important}
.collector-demo-row.two-stage{align-items:stretch}
.collector-demo-row.two-stage .collector-demo-big{min-width:0;white-space:normal;line-height:1.2}
.collector-demo-row.two-stage .collector-demo-big small{flex:0 0 17px}
@media(max-width:1150px){
  .program-measurement-coverage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .program-measurement-coverage-grid{grid-template-columns:1fr}
  .program-measurement-coverage-grid button{grid-template-columns:72px minmax(0,1fr) 28px}
  .program-measurement-coverage-grid button em{display:grid}
}

/* v86 — visual category browse demo using user-provided circular category art */
.program-category-showcase{
  margin:0 0 16px;
  padding:15px 16px 16px;
  border:1px solid #dbe5ec;
  border-radius:16px;
  background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%);
  box-shadow:0 4px 16px rgba(16,36,62,.025);
}
.program-category-showcase-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:18px;
  margin-bottom:12px;
}
.program-category-showcase-head>div{display:flex;flex-direction:column;gap:2px}
.program-category-showcase-head span{
  font-size:8px;
  text-transform:uppercase;
  letter-spacing:.1em;
  color:#6f8294;
  font-weight:800;
}
.program-category-showcase-head b{font-size:13px;line-height:1.25;color:#18344f}
.program-category-showcase-head>small{font-size:9px;line-height:1.35;color:#788897;text-align:right;max-width:360px}
.program-category-showcase-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;min-width:0}
.program-category-showcase-head-actions>small{font-size:9px;line-height:1.35;color:#788897;text-align:right;max-width:360px}
.program-category-showcase-grid{
  display:flex;
  flex-wrap:nowrap;
  gap:10px;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-behavior:auto;
  scroll-snap-type:none;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  padding-bottom:2px;
}
.program-category-showcase-grid::-webkit-scrollbar{display:none}
.program-category-scrollbar{
  position:relative;
  width:100%;
  height:16px;
  margin-top:8px;
}
.program-category-scrollbar-track{
  position:absolute;
  inset:3px 0;
  border-radius:999px;
  background:#e4ebf1;
  box-shadow:inset 0 1px 2px rgba(16,36,62,.06);
}
.program-category-scrollbar-thumb{
  position:absolute;
  top:0;
  left:0;
  height:16px;
  min-width:84px;
  border:none;
  border-radius:999px;
  background:#6f8598;
  box-shadow:0 2px 8px rgba(16,36,62,.18);
  cursor:grab;
  padding:0!important;
}
.program-category-scrollbar-thumb:hover{background:#5f788e}
.program-category-scrollbar-thumb.dragging{cursor:grabbing;background:#4d6780}
.program-category-scrollbar.disabled{opacity:.45}
.program-category-scrollbar.disabled .program-category-scrollbar-thumb{cursor:default}
.program-category-showcase-card{
  position:relative;
  min-width:0;
  flex:0 0 calc((100% - 50px)/6);
  scroll-snap-align:start;
  min-height:196px;
  padding:12px 9px 10px!important;
  border:1px solid #e0e8ee!important;
  border-radius:15px!important;
  background:#fff!important;
  box-shadow:0 4px 12px rgba(16,36,62,.035)!important;
  color:#17344f!important;
  display:flex!important;
  flex-direction:column;
  align-items:center!important;
  justify-content:flex-start!important;
  text-align:center!important;
  gap:7px!important;
  overflow:hidden;
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;
}
.program-category-showcase-card::before{
  content:"";
  position:absolute;
  left:20%;right:20%;top:0;
  height:3px;
  border-radius:0 0 999px 999px;
  background:var(--category-accent,#123d73);
  opacity:.8;
}
.program-category-showcase-card:hover{
  transform:translateY(-2px);
  border-color:#cbd9e3!important;
  box-shadow:0 8px 18px rgba(16,36,62,.075)!important;
}
.program-category-showcase-card.active{
  border-color:var(--category-accent,#123d73)!important;
  box-shadow:0 0 0 2px color-mix(in srgb,var(--category-accent,#123d73) 16%,transparent),0 8px 20px rgba(16,36,62,.07)!important;
}
.program-category-showcase-art{
  width:112px;
  height:112px;
  display:grid;
  place-items:center;
  flex:0 0 112px;
}
.program-category-showcase-art img{
  display:block;
  width:108px;
  height:108px;
  object-fit:contain;
  border-radius:999px;
  filter:drop-shadow(0 5px 8px rgba(16,36,62,.11));
}
.program-category-showcase-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:3px;
}
.program-category-showcase-copy b{
  font-size:10.2px;
  line-height:1.22;
  color:#17344f;
  max-width:150px;
}
.program-category-showcase-copy small{
  font-size:8.5px;
  color:#788998;
  font-weight:600;
}
.program-category-showcase-check{
  position:absolute;
  top:9px;
  right:9px;
  width:23px;
  height:23px;
  border-radius:999px;
  display:grid;
  place-items:center;
  background:#f3f7fa;
  color:#6c7e8e;
  font-size:9px;
}
.program-category-showcase-card.active .program-category-showcase-check{
  background:var(--category-accent,#123d73);
  color:#fff;
}
@media(max-width:1250px){
  .program-category-showcase-card{flex-basis:calc((100% - 20px)/3);min-height:188px}
}
@media(max-width:760px){
  .program-category-showcase{padding:13px 12px}
  .program-category-showcase-head{align-items:flex-start;flex-direction:column;gap:5px}
  .program-category-showcase-head-actions{width:100%;justify-content:flex-start}
  .program-category-showcase-head-actions>small{text-align:left;max-width:none}
  .program-category-showcase-grid{gap:8px}
  .program-category-showcase-card{flex-basis:calc((100% - 8px)/2);min-height:174px;padding:10px 7px 9px!important}
  .program-category-showcase-art{width:96px;height:96px;flex-basis:96px}
  .program-category-showcase-art img{width:94px;height:94px}
  .program-category-showcase-copy b{font-size:9.4px}
}
@media(max-width:430px){
  .program-category-showcase-card{flex-basis:calc((100% - 8px)/2);min-height:164px}
  .program-category-showcase-art{width:88px;height:88px;flex-basis:88px}
  .program-category-showcase-art img{width:86px;height:86px}
}

/* v87 — category artwork badges on matching Program cards; measurement art stays intact */
.program-card-title-row{
  display:flex;
  align-items:center;
  gap:10px;
  margin:10px 0 6px;
  min-width:0;
}
.program-card-title-row h3{
  margin:0!important;
  min-width:0;
  flex:1;
}
.program-card-category-art{
  position:relative;
  width:54px;
  height:54px;
  flex:0 0 54px;
  display:grid;
  place-items:center;
  border-radius:999px;
  background:#fff;
}
.program-card-category-art::after{
  content:"";
  position:absolute;
  inset:2px;
  border-radius:999px;
  border:1px solid color-mix(in srgb,var(--category-accent,#123d73) 24%,#dfe7ed);
  pointer-events:none;
}
.program-card-category-art img{
  display:block;
  width:52px;
  height:52px;
  object-fit:contain;
  border-radius:999px;
  filter:drop-shadow(0 3px 5px rgba(16,36,62,.10));
}
@media(max-width:700px){
  .program-card-title-row{gap:8px}
  .program-card-category-art{width:48px;height:48px;flex-basis:48px}
  .program-card-category-art img{width:46px;height:46px}
}
/* v94 — larger category slider control */

/* v95 — containment cleanup for Program previews and collection controls */
.program-target-preview>*{min-width:0}
.program-widget-preview,.program-widget-preview.collector-sandbox,.collector-demo-body,.collector-demo-ta,.collector-demo-ta-row,.collector-demo-row{
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
}
.collector-demo-row>*{min-width:0;max-width:100%;box-sizing:border-box}
.collector-demo-row.three{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:6px;
  width:100%;
}
.collector-demo-row.three .collector-demo-small{
  width:100%;
  min-width:0;
  max-width:100%;
  padding:7px 2px!important;
  font-size:9.25px!important;
  line-height:1.1;
  letter-spacing:-.025em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:clip;
  justify-content:center;
}
.collector-demo-step{min-width:0;overflow-wrap:anywhere}
.program-demo-footer{min-width:0;flex-wrap:wrap}
.program-demo-footer small{min-width:0;flex:1 1 150px}
.program-demo-reset{flex:0 0 auto}
@media(max-width:1100px){
  .program-target-preview{grid-template-columns:minmax(0,1fr) minmax(320px,.8fr)}
}
@media(max-width:900px){
  .program-target-preview{grid-template-columns:1fr}
}

/* v97 — category-scoped measurement stats + final Task Analysis label fit */
.program-measurement-coverage.category-scoped .program-measurement-coverage-grid{
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
}
.program-measurement-coverage.category-scoped .program-measurement-coverage-intro>b{max-width:680px}
.collector-demo-ta-row .collector-demo-row.three{overflow:hidden}
@media(max-width:1100px){
  .program-measurement-coverage.category-scoped .program-measurement-coverage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .program-measurement-coverage.category-scoped .program-measurement-coverage-grid{grid-template-columns:1fr}
}

/* v99 — robust preview controls + uninterrupted Program search */
.program-widget-preview,.collector-demo-body,.collector-sandbox{min-width:0;max-width:100%;box-sizing:border-box;overflow:hidden}
.collector-demo-row.two-stage{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  width:100%;
}
.collector-demo-row.two-stage .collector-demo-big{
  width:100%;min-width:0;max-width:100%;
  display:grid!important;
  grid-template-columns:20px minmax(0,1fr);
  align-items:center;
  gap:6px;
  padding:9px 8px!important;
  font-size:10.5px!important;
  line-height:1.15!important;
  white-space:normal!important;
  overflow:hidden;
}
.collector-demo-row.two-stage .collector-demo-big>small{
  width:20px;height:20px;display:grid;place-items:center;margin:0!important;
  flex:0 0 20px;
}
.collector-demo-action-label{min-width:0;display:block;overflow-wrap:anywhere;word-break:normal;text-align:center}
.collector-demo-row.three .collector-demo-big{
  width:100%;min-width:0;max-width:100%;
  display:flex!important;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;padding:8px 4px!important;font-size:10.5px!important;line-height:1.05!important;
  white-space:normal!important;overflow:hidden;text-align:center;
}
.collector-demo-choice-mark{display:block;font-size:13px;line-height:1}
.collector-demo-choice-label{display:block;max-width:100%;font-size:10px;line-height:1.05;overflow-wrap:anywhere;word-break:normal}
.collector-demo-inline-actions{min-width:0;max-width:100%;flex-wrap:wrap}
.collector-demo-inline-actions>span{min-width:0;overflow-wrap:anywhere}
@media(max-width:520px){
  .collector-demo-row.two-stage{grid-template-columns:1fr}
  .collector-demo-row.three{gap:4px}
  .collector-demo-row.three .collector-demo-big{font-size:9.5px!important;padding:7px 2px!important}
  .collector-demo-choice-label{font-size:9px}
}

/* v107 — Student Plan Workspace foundation */
.plan-workspace-section{margin:20px 0 6px;padding:16px;border:1px solid #dbe6ef;border-radius:16px;background:linear-gradient(180deg,#fbfdff 0%,#f7fafc 100%)}
.plan-workspace-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:12px}
.plan-workspace-section-head>div{min-width:0}.plan-workspace-section-head span:not(.pill){display:block;font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#5d7891;margin-bottom:3px}
.plan-workspace-section-head h2{font-size:16px;margin:0;color:#17324a}.plan-workspace-section-head p{font-size:12px;line-height:1.5;color:#6b7d8e;margin:4px 0 0;max-width:720px}
.plan-workspace-loading,.plan-workspace-empty{min-height:86px;border:1px dashed #cbd9e5;border-radius:13px;background:#fff;display:flex;align-items:center;justify-content:center;gap:8px;color:#718394;font-size:12px}
.plan-workspace-loading i{animation:bd-workspace-spin 1s linear infinite}@keyframes bd-workspace-spin{to{transform:rotate(360deg)}}
.plan-workspace-empty{flex-direction:column;text-align:center;padding:18px}.plan-workspace-empty>i{font-size:22px;color:#315f8b}.plan-workspace-empty>b{font-size:13px;color:#243f58}.plan-workspace-empty>span{max-width:540px;line-height:1.45}
.plan-workspace-card{border:1px solid #dce6ef;border-radius:14px;background:#fff;margin:10px 0;overflow:hidden;box-shadow:0 1px 2px rgba(16,36,62,.03)}
.plan-workspace-card.inactive{opacity:.68;background:#f8fafc}.plan-workspace-card-main{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px 13px;border-bottom:1px solid #edf2f6}
.plan-workspace-icon{width:42px;height:42px;border-radius:12px;background:#edf6ff;color:#24547e;display:grid;place-items:center;font-size:18px}.plan-workspace-fields{display:flex;gap:10px;align-items:end;min-width:0}.plan-workspace-fields label{font-size:10px;color:#718394;display:flex;flex-direction:column;gap:3px}.plan-workspace-fields label:first-child{flex:1;min-width:180px}.plan-workspace-fields input,.plan-workspace-fields select,.plan-workspace-create input,.plan-workspace-create select{height:34px;border:1px solid #ccd9e4;border-radius:8px;background:#fff;padding:0 9px;font:inherit;font-size:12px;color:#17324a}.plan-workspace-fields>div{display:flex;flex-direction:column;gap:2px}.plan-workspace-fields>div>b{font-size:13px}.plan-workspace-fields>div>small{font-size:11px;color:#718394}
.plan-workspace-order{display:flex;align-items:center;gap:5px}.plan-workspace-order>span{font-size:10px;color:#8493a1;min-width:22px;text-align:center}.plan-workspace-order button{padding:5px 7px}.plan-workspace-order button:disabled{opacity:.35;cursor:not-allowed}
.plan-workspace-targets{padding:11px 13px 12px}.plan-workspace-target-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.plan-workspace-target-head>b{font-size:11px;color:#37536c}.plan-workspace-target-head>span{font-size:10px;color:#83909d}
.plan-workspace-target-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.plan-workspace-target{display:flex;align-items:flex-start;gap:7px;border:1px solid #e2eaf1;border-radius:9px;padding:8px;background:#fbfcfd;cursor:pointer}.plan-workspace-target.selected{border-color:#acd0ef;background:#f2f8fe}.plan-workspace-target.missing-key{opacity:.5;cursor:not-allowed}.plan-workspace-target input{margin-top:2px}.plan-workspace-target span{display:flex;flex-direction:column;min-width:0}.plan-workspace-target b{font-size:11px;line-height:1.25;color:#29465f}.plan-workspace-target small{font-size:9.5px;color:#7a8b99;margin-top:2px}
.plan-workspace-actions{display:flex;align-items:center;gap:7px;padding:9px 13px;background:#fafcfd;border-top:1px solid #edf2f6}.plan-workspace-actions .msg{margin:0;font-size:10px}
.plan-workspace-create{margin-top:11px;border:1px dashed #bcd0df;border-radius:12px;padding:10px;background:#f8fbfd;display:grid;grid-template-columns:minmax(180px,1fr) minmax(170px,1fr) 150px auto minmax(0,1fr);gap:8px;align-items:center}.plan-workspace-create>div{display:flex;flex-direction:column;gap:2px}.plan-workspace-create>div>b{font-size:11px;color:#31516b}.plan-workspace-create>div>span{font-size:9.5px;color:#7c8c99;line-height:1.3}.plan-workspace-create .msg{margin:0;font-size:10px}
.plan-workspace-footnote{display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:9px 10px;border-radius:10px;background:#eef6f1;color:#526b5a;font-size:10.5px;line-height:1.45}.plan-workspace-footnote i{font-size:14px;color:#3d7250;margin-top:1px}.plan-workspace-empty-targets{font-size:11px;color:#8493a1;padding:8px 0}
@media(max-width:900px){.plan-workspace-target-grid{grid-template-columns:1fr}.plan-workspace-create{grid-template-columns:1fr 1fr}.plan-workspace-create>div,.plan-workspace-create .msg{grid-column:1/-1}.plan-workspace-fields{flex-direction:column;align-items:stretch}.plan-workspace-fields label:first-child{min-width:0}.plan-workspace-card-main{grid-template-columns:42px minmax(0,1fr)}.plan-workspace-order{grid-column:1/-1;justify-content:flex-end}}

/* v108 — Plan Builder Integration / Workspace Gallery */
.plan-workspace-section.v108{padding:18px;background:linear-gradient(180deg,#fbfdff 0%,#f5f8fb 100%)}
.plan-builder-flow{display:grid;grid-template-columns:repeat(9,auto);align-items:center;gap:7px;padding:10px 11px;margin:0 0 14px;border:1px solid #dbe6ef;border-radius:13px;background:#fff;overflow-x:auto}
.plan-builder-flow-step{display:flex;align-items:center;gap:7px;min-width:128px;color:#8695a3}.plan-builder-flow-step>b{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#edf2f6;color:#6f8292;font-size:10px;flex:0 0 auto}.plan-builder-flow-step span{display:flex;flex-direction:column;gap:1px}.plan-builder-flow-step strong{font-size:10.5px;color:#607587;white-space:nowrap}.plan-builder-flow-step small{font-size:8.8px;color:#95a2ae;white-space:nowrap}.plan-builder-flow-step.current>b{background:#123d73;color:#fff}.plan-builder-flow-step.current strong{color:#123d73}.plan-builder-flow-step.done>b{background:#e8f7ed;color:#277247}.plan-builder-flow-step.done strong{color:#335d43}.plan-builder-flow-arrow{font-size:9px;color:#c2ced8}
.workspace-gallery{border:1px solid #d9e5ee;border-radius:15px;background:#fff;margin:0 0 13px;overflow:hidden}.workspace-gallery-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 15px 11px}.workspace-gallery-head>div:first-child>span,.workspace-current-head span,.workspace-review-title>span,.workspace-custom-builder-copy>span{display:block;font-size:9.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#5d7891}.workspace-gallery-head h3,.workspace-custom-builder h3{font-size:15px;color:#17324a;margin:2px 0 3px}.workspace-gallery-head p,.workspace-custom-builder p{font-size:10.5px;color:#718394;line-height:1.45;margin:0;max-width:650px}.workspace-gallery-primary{display:flex;gap:5px;background:#f0f4f7;padding:3px;border-radius:9px;flex:0 0 auto}.workspace-gallery-primary button,.workspace-gallery-source-tabs button{border:0;background:transparent;border-radius:7px;padding:7px 9px;font-size:10px;font-weight:700;color:#6f8190;cursor:pointer}.workspace-gallery-primary button.active{background:#fff;color:#123d73;box-shadow:0 1px 3px rgba(16,36,62,.09)}.workspace-gallery-source-tabs{display:flex;gap:4px;padding:0 15px 10px;border-bottom:1px solid #edf2f6}.workspace-gallery-source-tabs button{padding:6px 9px;background:#f6f8fa}.workspace-gallery-source-tabs button.active{background:#eaf4fe;color:#225782}.workspace-gallery-body{padding:12px 15px 15px;background:#fbfcfd}
.workspace-gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.workspace-gallery-card{display:grid;grid-template-columns:80px minmax(0,1fr);grid-template-rows:1fr auto;gap:0 10px;min-height:132px;border:1px solid #dde7ef;border-radius:13px;background:#fff;padding:9px;position:relative;overflow:hidden;box-shadow:0 1px 2px rgba(16,36,62,.025)}.workspace-gallery-card.added{background:#f8fafb}.workspace-gallery-art{grid-row:1/3;width:80px;height:100%;min-height:112px;border-radius:10px;overflow:hidden;background:#eaf0f5}.workspace-gallery-art img{display:block;width:100%;height:100%;object-fit:cover}.workspace-gallery-org-art{grid-row:1/3;width:80px;min-height:112px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(145deg,#eaf4fe,#edf8f1);color:#28577e;font-size:29px}.workspace-gallery-card-copy{min-width:0}.workspace-gallery-card-copy>span{display:block;margin-bottom:3px}.workspace-gallery-card h3{font-size:11.5px;color:#1e3d56;margin:2px 0}.workspace-gallery-card p{font-size:9.6px;color:#718394;line-height:1.35;margin:0 0 5px}.workspace-gallery-card small{font-size:8.5px;color:#91a0ad;line-height:1.25}.workspace-gallery-card>button{justify-self:start;margin-top:7px;padding:5px 8px;font-size:9px}.workspace-gallery-empty{min-height:112px;border:1px dashed #cbd9e5;border-radius:12px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;padding:14px;color:#708495}.workspace-gallery-empty i{font-size:23px;color:#32618a}.workspace-gallery-empty b{font-size:11.5px;color:#2c4b64}.workspace-gallery-empty span{font-size:9.7px;max-width:520px;line-height:1.4}
.workspace-origin{display:inline-flex!important;align-items:center;gap:3px;border-radius:999px;padding:2px 6px;font-size:8px!important;font-weight:800!important;letter-spacing:0!important;text-transform:none!important;margin:0!important}.workspace-origin.behaviordash{background:#eaf4fe;color:#285d87}.workspace-origin.organization{background:#eef7ee;color:#3e7049}.workspace-origin.custom{background:#f3f0fb;color:#66538e}.workspace-title-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.workspace-drag-hint{font-size:8.5px;color:#9aa7b2;margin-left:auto}
.workspace-org-template-builder{margin-top:10px;border:1px dashed #c5d6e2;border-radius:11px;background:#fff}.workspace-org-template-builder summary{cursor:pointer;padding:9px 10px;font-size:10px;font-weight:700;color:#315a7c}.workspace-org-template-form{display:grid;grid-template-columns:minmax(180px,1fr) 170px;gap:8px;padding:0 10px 11px}.workspace-org-template-form label{font-size:9.5px;color:#718394;display:flex;flex-direction:column;gap:3px}.workspace-org-template-form label.wide{grid-column:1/-1}.workspace-org-template-form input,.workspace-org-template-form select{height:34px;border:1px solid #ccd9e4;border-radius:8px;background:#fff;padding:0 9px;font:inherit;font-size:11px;color:#17324a}.workspace-org-template-form button{justify-self:start}.workspace-org-template-form .msg{margin:0;align-self:center}
.workspace-custom-builder{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,1.2fr);gap:16px;align-items:center;padding:6px}.workspace-custom-builder .plan-workspace-create{margin:0;grid-template-columns:minmax(180px,1fr) 160px auto;align-items:center}.workspace-custom-builder .plan-workspace-create .msg{grid-column:1/-1}
.plan-workspace-target-tray{display:flex;align-items:flex-start;gap:12px;padding:10px 11px;margin-bottom:11px;border:1px solid #dfe8ef;border-radius:12px;background:#fff}.plan-workspace-target-tray>div:first-child{min-width:125px;display:flex;flex-direction:column}.plan-workspace-target-tray>div:first-child b{font-size:10.5px;color:#31516b}.plan-workspace-target-tray>div:first-child span{font-size:8.8px;color:#8a99a6;line-height:1.35}.plan-workspace-target-tray-list{display:flex;gap:5px;flex-wrap:wrap}.plan-workspace-drag-target{display:inline-grid;grid-template-columns:auto auto;grid-template-rows:auto auto;column-gap:4px;align-items:center;border:1px solid #dbe5ed;border-radius:8px;padding:5px 7px;background:#f9fbfc;cursor:grab}.plan-workspace-drag-target>i{grid-row:1/3;color:#a1adb7}.plan-workspace-drag-target b{font-size:9.3px;color:#355269;line-height:1.1}.plan-workspace-drag-target small{font-size:7.8px;color:#8a99a6}.workspace-current-head{display:flex;align-items:end;justify-content:space-between;gap:10px;margin:12px 2px 6px}.workspace-current-head>div>b{display:block;font-size:13px;color:#213f58}.workspace-current-head>small{font-size:9px;color:#8a99a6}
.plan-workspace-card[draggable="true"]{cursor:grab}.plan-workspace-card.dragging{opacity:.45}.plan-workspace-card.drag-over-card{outline:2px solid #7bb4e4;outline-offset:2px}.plan-workspace-targets.drag-over{background:#edf7ff;box-shadow:inset 0 0 0 2px #82bce7}.plan-workspace-card-art{width:58px;height:58px;border-radius:12px;overflow:hidden;background:#eaf0f5}.plan-workspace-card-art img{width:100%;height:100%;object-fit:cover}.plan-workspace-card-main{grid-template-columns:58px minmax(0,1fr) auto}.workspace-edit-stack{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:6px 9px;align-items:end}.workspace-edit-stack>.workspace-title-line{grid-column:1/-1}.workspace-edit-stack label{font-size:9.5px;color:#718394;display:flex;flex-direction:column;gap:3px}.workspace-edit-stack input,.workspace-edit-stack select{height:33px;border:1px solid #ccd9e4;border-radius:8px;background:#fff;padding:0 8px;font:inherit;font-size:11px;color:#17324a}.workspace-suggested-row{display:flex;align-items:center;gap:7px;margin-top:8px;padding:7px 8px;border-radius:9px;background:#fff8e9;border:1px solid #f3dfac;color:#6a5936}.workspace-suggested-row>i{font-size:14px;color:#c18a16}.workspace-suggested-row>span{display:flex;flex-direction:column;flex:1}.workspace-suggested-row b{font-size:9.5px}.workspace-suggested-row small{font-size:8.5px;color:#8d7951}.workspace-suggested-row button{font-size:8.5px;padding:4px 7px}
.workspace-review-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:12px;padding:11px 12px;border:1px solid #d9e7df;border-radius:12px;background:#f6fbf7}.workspace-review-title{max-width:640px}.workspace-review-title>b{display:block;font-size:11.5px;color:#315843;margin-top:2px}.workspace-review-title p{font-size:9.4px;color:#728579;line-height:1.4;margin:3px 0 0}.workspace-review-metrics{display:flex;gap:7px}.workspace-review-metrics>div{min-width:74px;padding:7px 8px;border-radius:9px;background:#fff;border:1px solid #e0ebe3;text-align:center}.workspace-review-metrics strong{display:block;font-size:16px;color:#315843}.workspace-review-metrics span{display:block;font-size:7.8px;color:#86968c;margin-top:1px}.workspace-review-metrics .attention strong{color:#a66b15}
@media(max-width:1100px){.workspace-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-builder-flow{grid-template-columns:repeat(9,max-content)}}
@media(max-width:760px){.workspace-gallery-head{flex-direction:column}.workspace-gallery-primary{width:100%}.workspace-gallery-primary button{flex:1}.workspace-gallery-grid{grid-template-columns:1fr}.workspace-custom-builder{grid-template-columns:1fr}.workspace-custom-builder .plan-workspace-create{grid-template-columns:1fr}.plan-workspace-target-tray{flex-direction:column}.workspace-review-summary{align-items:flex-start;flex-direction:column}.workspace-review-metrics{width:100%}.workspace-review-metrics>div{flex:1}.workspace-edit-stack{grid-template-columns:1fr}.workspace-edit-stack>.workspace-title-line{grid-column:auto}.plan-workspace-card-main{grid-template-columns:48px minmax(0,1fr)}.plan-workspace-card-art{width:48px;height:48px}.plan-workspace-order{grid-column:1/-1}.workspace-org-template-form{grid-template-columns:1fr}.workspace-org-template-form label.wide{grid-column:auto}}

/* v112 — Phase 6 optional Workspace routine timing. Timing is plan-context
   metadata only and never forces navigation or creates calendar events. */
.workspace-routine-schedule{margin:10px 0 0;border:1px solid #dfe8ef;border-radius:11px;background:#f9fbfd;overflow:hidden}
.workspace-routine-schedule>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;cursor:pointer;list-style:none;color:#36536d}
.workspace-routine-schedule>summary::-webkit-details-marker{display:none}
.workspace-routine-schedule>summary>span{display:flex;align-items:center;gap:6px;font-size:10px}.workspace-routine-schedule>summary>small{font-size:9px;color:#7c8c99;text-align:right}
.workspace-routine-fields{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(220px,1.5fr) 145px 145px;gap:9px;padding:10px;border-top:1px solid #e4ebf1;background:#fff;align-items:end}
.workspace-routine-fields>label{display:flex;flex-direction:column;gap:4px;font-size:9.5px;color:#718394}.workspace-routine-fields input[type="time"],.workspace-routine-fields input[type="number"]{height:34px;border:1px solid #ccd9e4;border-radius:8px;background:#fff;padding:0 8px;font:inherit;font-size:11px;color:#17324a}
.workspace-schedule-toggle{flex-direction:row!important;align-items:center!important;gap:8px!important;padding:8px;border-radius:9px;background:#f6fafc;border:1px solid #e2eaf0}.workspace-schedule-toggle input{width:16px;height:16px}.workspace-schedule-toggle>span{display:flex;flex-direction:column}.workspace-schedule-toggle b{font-size:10px;color:#31516b}.workspace-schedule-toggle small{font-size:8.5px;color:#84939f;line-height:1.3}
.workspace-day-group{display:flex;flex-direction:column;gap:5px}.workspace-day-group>span{font-size:9.5px;color:#718394}.workspace-day-group>span small{font-size:8px;color:#96a2ac}.workspace-day-group>div{display:flex;gap:4px;flex-wrap:wrap}.workspace-day-chip input{position:absolute;opacity:0;pointer-events:none}.workspace-day-chip span{display:block;border:1px solid #d7e2ea;border-radius:999px;background:#fff;color:#617487;font-size:8.5px;font-weight:700;padding:5px 7px;cursor:pointer}.workspace-day-chip input:checked+span{background:#123d73;border-color:#123d73;color:#fff}
.workspace-duration-field{display:flex;align-items:center;gap:5px}.workspace-duration-field input{width:92px}.workspace-duration-field small{font-size:8.5px;color:#8796a2}.workspace-routine-fields>p{grid-column:1/-1;margin:0;color:#7b8b98;font-size:8.8px;line-height:1.4}.workspace-routine-fields>p i{margin-right:4px}
.workspace-routine-schedule.readonly{padding:9px 10px;display:flex;align-items:center;justify-content:space-between;gap:12px}.workspace-routine-schedule.readonly>div{display:flex;align-items:center;gap:7px}.workspace-routine-schedule.readonly>div>span{display:flex;flex-direction:column}.workspace-routine-schedule.readonly b{font-size:9.5px;color:#36536d}.workspace-routine-schedule.readonly small{font-size:8.5px;color:#8796a2}.workspace-routine-schedule.readonly em{font-style:normal;font-size:8px;color:#98a5af}
@media(max-width:1050px){.workspace-routine-fields{grid-template-columns:1fr 1fr}.workspace-routine-fields>p{grid-column:1/-1}}
@media(max-width:700px){.workspace-routine-fields{grid-template-columns:1fr}.workspace-routine-fields>p{grid-column:auto}.workspace-routine-schedule>summary{align-items:flex-start;flex-direction:column}.workspace-routine-schedule>summary>small{text-align:left}}

/* v113 — Phase 7 Calendar Integration. Workspace routine context is visually
   distinct from appointments and never behaves like a schedulable event. */
.workspace-calendar-layer-control{border-top:1px solid #e7edf2;padding-top:12px!important}
.workspace-calendar-toggle{display:flex;align-items:flex-start;gap:8px;padding:8px;border:1px solid #dce7ee;border-radius:10px;background:#f8fbfd;cursor:pointer}.workspace-calendar-toggle input{margin-top:2px}.workspace-calendar-toggle span{display:flex;flex-direction:column}.workspace-calendar-toggle b{font-size:10px;color:#31516b}.workspace-calendar-toggle small{font-size:8.5px;color:#80909c;line-height:1.35}
.workspace-calendar-state-counts{display:grid;grid-template-columns:1fr;gap:5px;margin-top:8px}.workspace-calendar-state-counts span{display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:6px;font-size:9px;color:#6d7f8d}.workspace-calendar-state-counts i{width:8px;height:8px;border-radius:50%;display:block}.workspace-calendar-state-counts i.scheduled{background:#8aa7c0}.workspace-calendar-state-counts i.opened{background:#d49a32}.workspace-calendar-state-counts i.data{background:#46a36a}.workspace-calendar-state-counts b{font-size:9px;color:#35516a}
.workspace-calendar-note{font-size:8.2px;line-height:1.4;color:#8a98a4;margin-top:8px}.workspace-calendar-load{font-size:8.8px;color:#60788d;margin-top:7px}.workspace-calendar-load.error{color:#9b3d2f}
.workspace-calendar-event{position:absolute;z-index:1;left:4px;right:4px;border-radius:6px;border:1px dashed #a8bac9;background:rgba(237,243,248,.72);display:flex;gap:5px;align-items:flex-start;padding:3px 5px;overflow:hidden;pointer-events:none;color:#567086}.workspace-calendar-event.opened{border-color:#d8aa58;background:rgba(255,247,229,.78);color:#8a641f}.workspace-calendar-event.data{border-color:#7bb48b;background:rgba(235,248,239,.82);color:#3f7650}.workspace-calendar-event>i{font-size:10px;margin-top:1px}.workspace-calendar-event>span{min-width:0;display:flex;flex-direction:column}.workspace-calendar-event b{font-size:8.5px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workspace-calendar-event small{font-size:7px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.9}
/* v249 friction pass. These chips carried `border-left:3px solid …` with a
   per-state `border-left-color` override — a coloured edge marker used to
   indicate state, which CLAUDE.md prohibits. The sliver was also redundant:
   each state ALREADY changes both background and ink, so removing the
   border loses no information at all. Fill + ink now carry the state on
   their own, which is what the rule asks for. */
.workspace-month-chip{font-size:8px;background:#eff4f8;color:#516b80;border-radius:4px;padding:2px 4px;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workspace-month-chip i{margin-right:3px}.workspace-month-chip.opened{background:#fff7e8;color:#825f22}.workspace-month-chip.data{background:#edf8f0;color:#3b724b}.workspace-month-more{font-size:7.5px;color:#8997a2;margin:1px 0 3px}
.workspace-agenda-routines{border:1px solid #dce7ee;border-radius:10px;background:#f8fbfd;margin-bottom:8px;overflow:hidden}.workspace-agenda-label{font-size:8px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#7890a4;padding:6px 8px;border-bottom:1px solid #e5edf2}.workspace-agenda-routine{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:6px;padding:7px 8px;border-top:1px solid #edf2f5;color:#587185}.workspace-agenda-routine:first-of-type{border-top:0}.workspace-agenda-routine.opened{color:#8b6726;background:#fffaf0}.workspace-agenda-routine.data{color:#417650;background:#f3fbf5}.workspace-agenda-routine>span{display:flex;flex-direction:column;min-width:0}.workspace-agenda-routine b{font-size:9.5px}.workspace-agenda-routine small{font-size:8px;color:#84939f}.workspace-agenda-routine em{font-style:normal;font-size:8px;font-weight:700;white-space:nowrap}

/* v116 — Beta Readiness & Workflow Polish. The activation preflight is an
   operational completeness check only; it never scores clinical quality. */
.plan-readiness,.plan-check-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 18px;margin:0 0 14px;padding:13px 14px;border:1px solid #d9e5ee;border-radius:13px;background:#fff}
.plan-readiness.ready{border-color:#cce7d3;background:#f7fcf8}.plan-readiness.attention{border-color:#efd6a6;background:#fffaf0}.plan-readiness.incomplete{border-color:#e7c9c4;background:#fff7f5}
.plan-readiness-head{display:flex;gap:10px;align-items:flex-start;min-width:0}.plan-readiness-head>i{font-size:18px;margin-top:1px;color:#55748f}.plan-readiness.ready .plan-readiness-head>i{color:#378257}.plan-readiness.attention .plan-readiness-head>i{color:#a26e17}.plan-readiness.incomplete .plan-readiness-head>i{color:#a04d42}
.plan-readiness-head>div{display:flex;flex-direction:column;min-width:0}.plan-readiness-head span{font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#72879a}.plan-readiness-head b{font-size:13.5px;color:#17324a;margin-top:1px}.plan-readiness-head small{font-size:9.8px;line-height:1.4;color:#768896;margin-top:3px;max-width:700px}
.plan-readiness-counts{display:flex;gap:7px;align-items:stretch}.plan-readiness-counts>div{min-width:74px;border:1px solid #e1e9ef;border-radius:9px;background:rgba(255,255,255,.72);padding:7px 8px;text-align:center;display:flex;flex-direction:column}.plan-readiness-counts strong{font-size:15px;color:#17324a}.plan-readiness-counts span{font-size:8.5px;color:#5c6b78;margin-top:1px}.plan-readiness-counts>div.attention{border-color:#ecd39f;background:#fff6df}
.plan-readiness ul,.plan-check-panel ul{grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap;list-style:none;margin:0;padding:0}.plan-readiness li,.plan-check-panel li{display:flex;align-items:center;gap:4px;border:1px solid #e2eaf0;border-radius:999px;background:#fff;padding:4px 7px;font-size:9.4px;color:#687d90}.plan-readiness li.good,.plan-check-panel li.good{border-color:#cfe4d6;color:#4c7459;background:#f8fcf9}.plan-readiness li.attention,.plan-check-panel li.attention{border-color:#ead19d;color:#8b631d;background:#fff8e9}.plan-readiness li.info,.plan-check-panel li.info{border-color:#d7e4ee;color:#58748b;background:#f7fafc}.plan-readiness li i,.plan-check-panel li i{font-size:8px}
.plan-workspace-load-error{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #efc9c2;border-radius:12px;background:#fff6f4;padding:12px;color:#8d443a}.plan-workspace-load-error>i{font-size:18px}.plan-workspace-load-error>div{display:flex;flex-direction:column;min-width:0}.plan-workspace-load-error b{font-size:12px}.plan-workspace-load-error span{font-size:10px;line-height:1.4;margin-top:2px;overflow-wrap:anywhere}
@media(max-width:760px){.plan-readiness,.plan-check-panel{grid-template-columns:1fr}.plan-readiness-counts{grid-column:1/-1}.plan-workspace-load-error{grid-template-columns:auto 1fr}.plan-workspace-load-error button{grid-column:1/-1}}

/* ================================================================
   v118 — Behavior Plan Builder screen redesign
   Replaces the legacy endless-scroll plan editor with five focused
   screens while preserving the same underlying plan/workspace model.
   ================================================================ */
.plan-builder-page{padding:0!important;border:0!important;background:transparent!important;overflow:visible}
.plan-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px;margin:0 0 10px;background:#fff;border:1px solid var(--line);border-radius:16px}
.plan-page-head>div:first-child>span{display:block;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#7890a5;margin-bottom:3px}
.plan-page-head h2{font-size:22px;margin:0;color:#17324a}.plan-page-head p{font-size:12px;line-height:1.45;color:#738696;margin:4px 0 0;max-width:680px}.plan-page-head-meta{display:flex;align-items:center;gap:7px;flex:0 0 auto}
.plan-version-manager{margin:0 0 12px;border:1px solid #dce6ee;border-radius:13px;background:#fff;overflow:hidden}
.plan-version-manager>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;cursor:pointer}.plan-version-manager>summary::-webkit-details-marker{display:none}.plan-version-manager>summary>span{display:grid;grid-template-columns:auto auto;column-gap:7px;align-items:center}.plan-version-manager>summary>span>i{grid-row:1/3;color:#426887}.plan-version-manager>summary b{font-size:11px;color:#29465e}.plan-version-manager>summary small{grid-column:2;font-size:9px;color:#8494a2}.plan-version-manager[open]>summary{border-bottom:1px solid #e7edf2}.plan-version-manager[open]>summary>i:last-child{transform:rotate(180deg)}
.plan-version-manager-body{padding:12px 14px 14px}.plan-version-note{font-size:10.5px;margin-bottom:9px}.plan-version-table-wrap{overflow:auto;border:1px solid #edf1f5;border-radius:10px}.plan-version-table-wrap table{margin:0}.plan-version-actions{margin-top:10px}.plan-version-actions label{font-size:11px;color:#748594;display:flex;align-items:center;gap:5px}.plan-no-version{min-height:260px;background:#fff;border:1px dashed #cedae4;border-radius:15px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;color:#778c9e}.plan-no-version i{font-size:30px;color:#3b678c}.plan-no-version b{font-size:13px;color:#29465f}

.plan-builder-shell{display:grid;grid-template-columns:236px minmax(0,1fr);align-items:start;gap:14px;min-width:0}
.plan-builder-sidebar{position:sticky;top:12px;border:1px solid #dce6ee;border-radius:16px;background:#fff;overflow:hidden;box-shadow:0 4px 14px rgba(16,36,62,.04)}
.plan-builder-sidebar-head{padding:15px 15px 11px;border-bottom:1px solid #edf1f5}.plan-builder-sidebar-head>span{display:block;font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#8294a4}.plan-builder-sidebar-head>b{display:block;font-size:16px;color:#193950;margin-top:2px}.plan-builder-sidebar-head>small{display:inline-block;margin-top:3px;padding:2px 6px;border-radius:999px;background:#f0f4f7;color:#61788b;font-size:8.5px;text-transform:capitalize}
.plan-at-glance{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#edf1f4;border-bottom:1px solid #edf1f4}.plan-at-glance>div{background:#fbfcfd;padding:8px 10px;display:flex;flex-direction:column}.plan-at-glance span{font-size:7.8px;text-transform:uppercase;letter-spacing:.06em;color:#92a0ac}.plan-at-glance b{font-size:12px;color:#29485f;text-transform:capitalize;margin-top:1px}
.plan-screen-nav{display:flex;flex-direction:column;padding:8px;gap:3px}.plan-screen-nav button{width:100%;border:0;background:transparent;border-radius:10px;padding:8px 7px;display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;text-align:left;gap:7px;color:#6e8191;cursor:pointer}.plan-screen-nav button:hover:not(:disabled){background:#f5f8fa;color:#6e8191}.plan-screen-nav button.active:hover:not(:disabled){background:#eaf4fe;color:#164e7b}.plan-screen-nav button.active{background:#eaf4fe;color:#164e7b}.plan-screen-nav button.done:not(.active) .plan-screen-step-number{background:#e9f6ed;color:#32734a}.plan-screen-nav button>span:nth-child(2){display:flex;flex-direction:column;min-width:0}.plan-screen-nav button b{font-size:10.5px;color:#405d73}.plan-screen-nav button.active b{color:#123d73}.plan-screen-nav button small{font-size:8px;color:#94a1ac;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.plan-screen-nav button>i:last-child{font-size:9px;color:#aab5be}.plan-screen-step-number{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#edf2f6;font-size:9.5px;font-weight:800;color:#667e91}.plan-screen-nav button.active .plan-screen-step-number{background:#123d73;color:#fff}
.plan-builder-sidebar-help{display:flex;gap:7px;align-items:flex-start;margin:3px 8px 9px;padding:9px;border-radius:9px;background:#f7fafc;color:#668094}.plan-builder-sidebar-help>i{font-size:13px;color:#f08a32}.plan-builder-sidebar-help>span{display:flex;flex-direction:column}.plan-builder-sidebar-help b{font-size:9px;color:#48677f}.plan-builder-sidebar-help small{font-size:7.8px;line-height:1.35;margin-top:1px}

.plan-builder-main{min-width:0;border:1px solid #dce6ee;border-radius:16px;background:#fff;overflow:hidden;box-shadow:0 4px 14px rgba(16,36,62,.035)}
.plan-screen{display:none;padding:20px;min-height:580px}.plan-screen.active{display:block}.plan-screen-heading{padding:0 0 14px;border-bottom:1px solid #edf1f5;margin-bottom:14px}.plan-screen-heading>span{display:block;font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#6d8ca6}.plan-screen-heading h1{font-size:20px;color:#17324a;margin:2px 0 3px}.plan-screen-heading p{font-size:11px;color:#677886;line-height:1.45;margin:0;max-width:760px}.plan-screen-heading.workspace-step{border-bottom-color:#dbe7f0}
.plan-screen-footer{position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:18px -20px -20px;padding:11px 20px;border-top:1px solid #e7edf2;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);z-index:8}.plan-next-button{border:0;border-radius:9px;background:#123d73;color:#fff;padding:8px 12px;font-size:10px;font-weight:750;cursor:pointer}.plan-next-button:hover{filter:brightness(1.06)}
.plan-basics-card,.plan-section-card{border:1px solid #e0e8ee;border-radius:13px;background:#fbfcfd;padding:14px;margin-bottom:12px}.plan-field-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.plan-field-grid label,.plan-add-grid input,.plan-add-grid select{font-size:10px}.plan-field-grid label{display:flex;flex-direction:column;gap:4px;color:#657d8f;font-weight:650}.plan-field-grid input,.plan-add-grid input,.plan-add-grid select{height:36px;border:1px solid #cedae3;border-radius:8px;background:#fff;padding:0 9px;font:inherit;color:#19384f}.plan-inline-save{display:flex;align-items:center;gap:8px;margin-top:11px}.plan-inline-save .msg{margin:0;font-size:9.5px}
.plan-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.plan-section-title span{display:block;font-size:8.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#617788}.plan-section-title h2{font-size:14px;margin:1px 0;color:#29465d}.plan-section-title p{font-size:9.5px;line-height:1.4;color:#697681;margin:2px 0 0}.plan-table-scroll{overflow:auto;border:1px solid #e7edf2;border-radius:10px;background:#fff}.plan-table-scroll table{margin:0;min-width:720px}.plan-table-scroll td,.plan-table-scroll th{vertical-align:top}.plan-row-actions{text-align:right;white-space:normal!important;min-width:138px}.plan-row-actions button{margin:0 0 4px 3px;font-size:8px;padding:4px 6px}
.plan-add-box{margin-top:10px;border:1px dashed #bfd0de;border-radius:10px;background:#fff;overflow:hidden}.plan-add-box>summary{list-style:none;display:flex;align-items:center;gap:6px;padding:9px 10px;font-size:10px;font-weight:750;color:#315c7b;cursor:pointer}.plan-add-box>summary::-webkit-details-marker{display:none}.plan-add-box[open]>summary{border-bottom:1px solid #e8eef3;background:#f7fbfe}.plan-add-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:10px}.plan-add-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-add-grid button{justify-self:start}.plan-add-box>.msg{margin:0 10px 10px}
.plan-large-textarea,.plan-full-notes,.plan-procedure-card textarea{width:100%;min-height:100px;border:1px solid #cfdbe4;border-radius:9px;padding:10px;font-family:inherit;font-size:11px;line-height:1.45;background:#fff;resize:vertical}.plan-procedure-card{display:grid;grid-template-columns:180px minmax(0,1fr);gap:10px;align-items:start;padding:9px 0;border-top:1px solid #edf1f4}.plan-procedure-card:first-of-type{border-top:0}.plan-procedure-card label{display:flex;flex-direction:column;font-size:10px;font-weight:750;color:#36566e}.plan-procedure-card label span{font-size:8px;font-weight:500;color:#8b99a5;margin-top:2px}.plan-procedure-card textarea{min-height:68px}.plan-readonly-list{margin:0;padding-left:20px}.plan-readonly-procedure{display:flex;flex-direction:column;padding:8px 0;border-top:1px solid #edf1f4}.plan-readonly-procedure b{font-size:10px;color:#3c5b72}.plan-readonly-procedure span,.plan-full-notes-readonly{font-size:10px;line-height:1.45;color:#718493;white-space:pre-wrap;margin-top:2px}
.plan-review-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0}.plan-review-card{border:1px solid #e0e8ef;border-radius:11px;background:#fbfcfd;padding:11px}.plan-review-card span{font-size:8px;text-transform:uppercase;letter-spacing:.06em;color:#8899a6}.plan-review-card b{display:block;font-size:20px;color:#173d5c;margin:1px 0}.plan-review-card small{font-size:8.5px;color:#82929e;line-height:1.3}.plan-activate-panel,.plan-active-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;border-radius:12px;margin-top:12px}.plan-activate-panel{background:#eef7f1;border:1px solid #cae4d2}.plan-active-banner{background:#edf5fc;border:1px solid #cee0ef}.plan-activate-panel>div,.plan-active-banner{color:#3b6749}.plan-activate-panel>div{display:flex;align-items:center;gap:9px}.plan-activate-panel>div>i,.plan-active-banner>i{font-size:21px}.plan-activate-panel span,.plan-active-banner span{display:flex;flex-direction:column}.plan-activate-panel b,.plan-active-banner b{font-size:11px}.plan-activate-panel small,.plan-active-banner small{font-size:8.5px;line-height:1.35;margin-top:2px}.plan-activate-panel>button{border:0;border-radius:9px;background:#17603b;color:#fff;padding:9px 12px;font-size:10px;font-weight:750;cursor:pointer}

/* v118 Workspace board: keep the visual choice set compact and make DnD obvious. */
.plan-screen[data-plan-step-panel="workspaces"] .plan-workspace-section{margin:0;padding:0;border:0;background:transparent}.plan-screen[data-plan-step-panel="workspaces"] .plan-workspace-section-head{display:none}.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery{margin-bottom:10px}.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery-body{padding:10px 12px 12px}.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery-grid{display:grid;grid-auto-flow:column;grid-auto-columns:245px;grid-template-columns:none;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:7px}.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery-grid::-webkit-scrollbar{height:7px}.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery-card{grid-template-columns:66px minmax(0,1fr);min-height:118px;scroll-snap-align:start}.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery-art,.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery-org-art{width:66px;min-height:98px}.plan-workspace-target-tray{position:sticky;top:8px;z-index:10;box-shadow:0 5px 16px rgba(16,36,62,.08);border-color:#c9dbea}.plan-workspace-drag-target{cursor:grab;background:#fff}.plan-workspace-drag-target:hover{border-color:#78aede;box-shadow:0 2px 6px rgba(18,61,115,.08)}.plan-workspace-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:start}.plan-workspace-board .plan-workspace-card{margin:0;min-width:0}.plan-workspace-board .plan-workspace-target-grid{grid-template-columns:1fr}.plan-workspace-board .plan-workspace-targets{margin:0 9px 9px;padding:9px;border:1px dashed #d1dfe9;border-radius:10px;background:#fbfdff}.plan-workspace-board .plan-workspace-targets.drag-over{border-color:#3a84bd;background:#edf7ff;box-shadow:inset 0 0 0 1px #3a84bd}.workspace-current-head>small{display:flex;align-items:center;gap:4px;color:#5f7990;font-weight:650}.workspace-current-head>small i{font-size:12px;color:#315f87}

@media(max-width:1100px){.plan-builder-shell{grid-template-columns:200px minmax(0,1fr)}.plan-field-grid{grid-template-columns:1fr 1fr}.plan-review-grid{grid-template-columns:1fr 1fr}.plan-workspace-board{grid-template-columns:1fr}.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery-grid{grid-auto-columns:225px}}
@media(max-width:760px){.plan-page-head{flex-direction:column}.plan-builder-shell{display:block}.plan-builder-sidebar{position:static;margin-bottom:10px}.plan-builder-sidebar-head,.plan-at-glance,.plan-builder-sidebar-help{display:none}.plan-screen-nav{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;overflow-x:auto}.plan-screen-nav button{display:flex;flex-direction:column;justify-content:center;text-align:center;padding:6px 4px;min-width:72px}.plan-screen-nav button>span:nth-child(2) small,.plan-screen-nav button>i:last-child{display:none}.plan-screen-nav button b{font-size:8px}.plan-screen-step-number{width:23px;height:23px}.plan-screen{padding:14px;min-height:520px}.plan-screen-footer{margin:16px -14px -14px;padding:10px 14px}.plan-field-grid,.plan-add-grid,.plan-add-grid.two{grid-template-columns:1fr}.plan-review-grid{grid-template-columns:1fr 1fr}.plan-procedure-card{grid-template-columns:1fr}.plan-activate-panel{align-items:flex-start;flex-direction:column}.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery-grid{grid-auto-columns:210px}.plan-workspace-target-tray{position:static}.plan-version-table-wrap{overflow-x:auto}}

/* v119 Behavior Plan Builder UX refinement — reduce scrolling, expose drag/drop, keep secondary editing collapsed. */
.plan-builder-main{background:#f8fafc}
.plan-screen{background:#fff}
.plan-screen-heading{position:relative}
.plan-screen-heading:after{content:"";position:absolute;left:0;bottom:-1px;width:54px;height:2px;border-radius:2px;background:#8ccb32}
.plan-screen-heading.workspace-step:after{background:#2589ff}
.plan-next-button{display:inline-flex;align-items:center;gap:6px;padding:9px 13px}
.plan-next-label{padding-left:7px;margin-left:1px;border-left:1px solid rgba(255,255,255,.3);font-size:8.5px;font-weight:650;opacity:.85}
.plan-step-action{display:flex;align-items:flex-start;gap:10px;margin:0 0 12px;padding:11px 12px;border:1px solid #d9e8f3;border-radius:12px;background:#f5faff;color:#536f84}
.plan-step-action-icon{width:30px;height:30px;flex:0 0 30px;border-radius:9px;display:grid;place-items:center;background:#e4f1fb;color:#1b5c8b;font-size:15px}
.plan-step-action>div:last-child{display:flex;flex-direction:column;gap:2px}.plan-step-action b{font-size:10.5px;color:#254b67}.plan-step-action span{font-size:9px;line-height:1.4;color:#637584}
.plan-item-list{display:flex;flex-direction:column;gap:8px}
.plan-item-card{border:1px solid #dfe8ef;border-radius:12px;background:#fff;overflow:hidden;box-shadow:0 1px 2px rgba(16,36,62,.02)}
.plan-item-card-body{padding:11px 12px}.plan-item-card-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.plan-item-card-title h3{font-size:12.5px;line-height:1.25;color:#1d3e56;margin:2px 0 0}.plan-item-type{display:inline-flex;padding:2px 6px;border-radius:999px;background:#eaf4fe;color:#245a84;font-size:7.8px;font-weight:800;letter-spacing:.03em;text-transform:uppercase}.plan-item-type.skill{background:#eef8ea;color:#527928}
.plan-item-definition{margin:7px 0 8px;font-size:9.8px;line-height:1.42;color:#667988;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.plan-item-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.plan-item-facts>span{min-width:0;padding:6px 7px;border-radius:8px;background:#f7fafc;font-size:8.7px;color:#5f7689;overflow-wrap:anywhere}.plan-item-facts b{display:block;margin-bottom:1px;font-size:7.3px;text-transform:uppercase;letter-spacing:.05em;color:#69737b}.plan-item-actions{display:flex;align-items:center;justify-content:flex-end;gap:4px;flex-wrap:wrap;max-width:260px}.plan-item-actions button{margin:0;font-size:8px;padding:4px 6px}.plan-item-actions .danger-lite{color:#9c4646;background:#fff8f8;border-color:#efdada}.plan-item-expanded{padding:11px 12px;border-top:1px solid #e6edf2;background:#fbfdff}.plan-item-expanded>div{margin:0!important}.plan-item-more{margin-top:8px;border-top:1px solid #edf1f4;padding-top:7px}.plan-item-more summary{cursor:pointer;font-size:8.8px;font-weight:700;color:#53738b}.plan-item-more>div{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;margin-top:7px}.plan-item-more p{margin:0;font-size:8.8px;color:#647989;line-height:1.35}.plan-item-more p b{display:block;font-size:7.4px;text-transform:uppercase;letter-spacing:.04em;color:#6d7780;margin-bottom:1px}
/* v237 slice 5 (Live Plan Preview). Same sizing precedent as .program-inline-preview - a single demo widget stays a fixed width instead of stretching full-bleed across the expanded row. */
.plan-target-preview{max-width:380px}
.plan-target-preview .plan-support-note{margin-bottom:9px}
.plan-empty-state{min-height:90px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1px dashed #cddbe5;border-radius:10px;background:#fbfdff;color:#667784;padding:14px}.plan-empty-state i{font-size:20px;color:#5884a6}.plan-empty-state b{margin-top:4px;font-size:10.5px;color:#3d6078}.plan-empty-state span{margin-top:2px;font-size:8.8px;line-height:1.4;max-width:420px}
.plan-support-stack{display:flex;flex-direction:column;gap:8px}.plan-support-accordion{border:1px solid #dfe8ef;border-radius:12px;background:#fff;overflow:hidden}.plan-support-accordion>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 13px;cursor:pointer;background:#fbfcfd}.plan-support-accordion>summary::-webkit-details-marker{display:none}.plan-support-accordion>summary>span{display:flex;align-items:center;gap:9px}.plan-support-accordion>summary>span>i{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:#eef5fa;color:#376a91}.plan-support-accordion>summary>span>span{display:flex;flex-direction:column}.plan-support-accordion>summary b{font-size:10.5px;color:#2f5169}.plan-support-accordion>summary small{font-size:8.2px;color:#8495a1;margin-top:1px}.plan-support-accordion>summary>i:last-child{font-size:10px;color:#94a2ad;transition:transform .15s}.plan-support-accordion[open]>summary{background:#f6faff;border-bottom:1px solid #e5edf3}.plan-support-accordion[open]>summary>i:last-child{transform:rotate(180deg)}.plan-support-body{padding:12px 13px}.plan-support-note{margin-bottom:10px;padding:8px 9px;border-radius:8px;background:#f6f8fa;color:#748896;font-size:8.8px;line-height:1.4}
.plan-review-notes{margin:12px 0;border:1px solid #dfe8ef;border-radius:12px;background:#fff;overflow:hidden}.plan-review-notes>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;padding:11px 12px;cursor:pointer}.plan-review-notes>summary::-webkit-details-marker{display:none}.plan-review-notes>summary>span{display:flex;align-items:center;gap:8px}.plan-review-notes>summary>span>i{font-size:16px;color:#4b7595}.plan-review-notes>summary>span>span{display:flex;flex-direction:column}.plan-review-notes>summary b{font-size:10px;color:#385b73}.plan-review-notes>summary small{font-size:8px;color:#8b99a4;margin-top:1px}.plan-review-notes>summary>i:last-child{font-size:10px;color:#9aa7b0}.plan-review-notes[open]>summary{border-bottom:1px solid #e8eef2;background:#f8fbfd}.plan-review-notes-body{padding:12px}
.workspace-board-guide{display:flex;align-items:flex-start;gap:9px;margin:10px 0;padding:10px 11px;border:1px solid #cfe1ef;border-radius:11px;background:#eef7ff}.workspace-board-guide>i{font-size:18px;color:#276991}.workspace-board-guide>div{display:flex;flex-direction:column}.workspace-board-guide b{font-size:10px;color:#285775}.workspace-board-guide span{font-size:8.7px;line-height:1.4;color:#668096;margin-top:1px}
.plan-workspace-stage{display:grid;grid-template-columns:210px minmax(0,1fr);gap:10px;align-items:start}.plan-target-rail{min-width:0;position:relative}.plan-workspace-canvas{min-width:0}.plan-workspace-target-tray{position:sticky;top:8px;display:block;margin:0;padding:10px;border:1px solid #c9dbea;border-radius:12px;background:#f7fbfe;box-shadow:0 5px 16px rgba(16,36,62,.08);max-height:calc(100vh - 100px);overflow:auto}.plan-workspace-target-tray.empty{box-shadow:none;background:#fbfcfd}.workspace-target-tray-head{display:flex!important;flex-direction:column!important;min-width:0!important;margin-bottom:8px}.workspace-rail-kicker{display:block;font-size:7.5px!important;font-weight:850;text-transform:uppercase;letter-spacing:.08em;color:#3777a6!important;margin-bottom:1px}.workspace-target-tray-head b{font-size:11px!important;color:#244b67!important}.workspace-target-tray-head small{font-size:8.2px!important;line-height:1.35;color:#81929f!important;margin-top:2px}.plan-workspace-target-tray-list{display:flex;flex-direction:column;gap:6px;flex-wrap:nowrap}.plan-workspace-drag-target{display:grid;grid-template-columns:16px minmax(0,1fr) auto;grid-template-rows:auto;gap:5px;align-items:center;width:100%;box-sizing:border-box;padding:7px 7px;border-radius:9px;background:#fff}.plan-workspace-drag-target>i{grid-row:auto}.plan-workspace-drag-target>span{min-width:0;display:flex;flex-direction:column}.plan-workspace-drag-target b{font-size:8.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-workspace-drag-target small{font-size:7.5px}.plan-workspace-drag-target em{font-size:7px;font-style:normal;font-weight:800;text-transform:uppercase;color:#4d7da1;opacity:.7}
.plan-workspace-board{grid-template-columns:repeat(2,minmax(290px,1fr))}.workspace-title-display{min-width:0}.workspace-title-display .workspace-title-line{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.workspace-title-display .workspace-title-line>b{font-size:12px;color:#284a63}.workspace-title-display>small{display:block;margin-top:3px;font-size:8.3px;color:#8595a1}.plan-workspace-order{display:flex;align-items:center;gap:4px}.plan-workspace-order>.workspace-drag-hint{font-size:7px;color:#8296a5;display:inline-flex;align-items:center;gap:2px;margin-right:2px}.workspace-card-settings{margin:0 9px 8px;border:1px solid #e5ecf1;border-radius:9px;background:#fafcfd;overflow:hidden}.workspace-card-settings>summary{list-style:none;display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:5px;padding:7px 8px;cursor:pointer;color:#627c90}.workspace-card-settings>summary::-webkit-details-marker{display:none}.workspace-card-settings>summary>span{font-size:8.5px;font-weight:750;color:#48687f}.workspace-card-settings>summary>small{font-size:7.5px;color:#98a5ae}.workspace-card-settings>summary>i:last-child{font-size:8px}.workspace-card-settings[open]>summary{border-bottom:1px solid #e7edf1;background:#f6fafc}.workspace-card-settings-body{padding:8px}.workspace-edit-stack{grid-template-columns:1fr 120px!important}.plan-workspace-target-head{align-items:flex-start}.plan-workspace-target-head>div{display:flex;flex-direction:column}.plan-workspace-target-head small{font-size:7.6px;color:#8c9aa5;margin-top:1px}.plan-workspace-targets.empty-drop{min-height:110px;border:1.5px dashed #93b7d1;background:#f5fbff}.plan-workspace-targets.empty-drop .plan-workspace-target-head b{color:#2e6993}.plan-workspace-targets.empty-drop:hover{border-color:#357fb4;background:#edf8ff}.plan-workspace-targets.drag-over{transform:translateY(-1px)}

@media(max-width:1180px){.plan-workspace-stage{grid-template-columns:185px minmax(0,1fr)}.plan-workspace-board{grid-template-columns:1fr}.plan-item-actions{max-width:210px}}
@media(max-width:860px){.plan-item-card-title{flex-direction:column}.plan-item-actions{max-width:none;justify-content:flex-start}.plan-item-facts{grid-template-columns:1fr}.plan-item-more>div{grid-template-columns:1fr}.plan-workspace-stage{display:block}.plan-workspace-target-tray{position:static;max-height:none;margin-bottom:10px}.plan-workspace-target-tray-list{display:flex;flex-direction:row;overflow-x:auto;padding-bottom:4px}.plan-workspace-drag-target{min-width:190px}.plan-workspace-board{grid-template-columns:1fr}}
.workspace-assigned-targets{display:flex;flex-direction:column;gap:5px;margin:6px 0}.workspace-assigned-targets>span{display:flex;align-items:center;gap:6px;padding:6px 7px;border:1px solid #dfe8ef;border-radius:8px;background:#fff}.workspace-assigned-targets>span>i{font-size:10px;color:#4f8a35}.workspace-assigned-targets>span>span{display:flex;flex-direction:column;min-width:0}.workspace-assigned-targets b{font-size:8.7px;color:#35566e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workspace-assigned-targets small{font-size:7.4px;color:#8b99a4;margin-top:1px}.workspace-no-assigned{padding:10px;border:1px dashed #bdd2e1;border-radius:8px;background:#fff;text-align:center;font-size:8.4px;color:#7c91a1}.workspace-checkbox-fallback{margin-top:7px;border-top:1px solid #e8eef2;padding-top:6px}.workspace-checkbox-fallback>summary{list-style:none;display:flex;align-items:center;gap:5px;cursor:pointer;font-size:8px;font-weight:700;color:#627e92}.workspace-checkbox-fallback>summary::-webkit-details-marker{display:none}.workspace-checkbox-fallback>summary span{margin-left:auto;padding:1px 5px;border-radius:999px;background:#f0f4f7;color:#8a98a3;font-size:6.8px;text-transform:uppercase;letter-spacing:.04em}.workspace-checkbox-fallback[open]>summary{margin-bottom:6px}.workspace-checkbox-fallback .plan-workspace-target-grid{max-height:210px;overflow:auto;padding-right:2px}

/* ================================================================
   v120 — Workspace Settings redesign
   Moves name/icon/status/routine timing into a focused settings drawer.
   Workspace cards stay scannable and expose configuration at a glance.
   ================================================================ */
.workspace-card-summary{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:7px 9px 0}
.workspace-status-pill,.workspace-target-count-pill,.workspace-card-schedule{display:inline-flex;align-items:center;gap:4px;min-height:24px;padding:3px 7px;border:1px solid #dfe7ed;border-radius:999px;background:#f7fafc;color:#657c8e;font-size:7.8px;font-weight:750;line-height:1}
.workspace-status-pill.active{border-color:#cfe5d5;background:#f1faf4;color:#467457}.workspace-status-pill.inactive{border-color:#e2e5e8;background:#f5f6f7;color:#87939b}
.workspace-card-schedule.scheduled{border-color:#c9ddef;background:#eef7ff;color:#356d98}.workspace-card-schedule.unscheduled{color:#8a98a3;background:#fafbfc}
.workspace-card-summary i{font-size:8px}.workspace-card-feedback{min-height:0;padding:0 9px}.workspace-card-feedback .msg:empty{display:none}.workspace-card-feedback .msg:not(:empty){display:block;margin:0 0 8px;padding:6px 8px;border-radius:7px;font-size:8px}
.plan-workspace-order .workspace-card-settings{appearance:none;margin:0 0 0 2px!important;padding:5px 7px!important;display:inline-flex;align-items:center;gap:4px;border:1px solid #ccdbe6!important;border-radius:8px!important;background:#fff!important;color:#466b86!important;font:inherit;font-size:7.8px!important;font-weight:800!important;line-height:1!important;cursor:pointer;overflow:visible;box-shadow:none}
.plan-workspace-order .workspace-card-settings:hover{border-color:#8eb8d7!important;background:#f1f8fd!important;color:#245f89!important}
.plan-workspace-order .workspace-card-settings i{font-size:9px}
.workspace-target-remove{appearance:none;margin-left:auto;width:24px;height:24px;display:grid;place-items:center;flex:0 0 auto;border:0;border-radius:7px;background:transparent;color:#9aa7b0;cursor:pointer}.workspace-target-remove:hover{background:#fff0ee;color:#a74d40}.workspace-target-remove i{font-size:8px}
.workspace-assigned-targets>span{padding-right:4px}

.workspace-settings-overlay{position:fixed;inset:0;z-index:10050;display:flex;justify-content:flex-end;background:rgba(16,36,62,.34);backdrop-filter:blur(2px);animation:workspaceOverlayIn .14s ease-out}
.workspace-settings-drawer{width:min(560px,94vw);height:100%;display:flex;flex-direction:column;background:#f6f9fb;border-left:1px solid #d9e4ec;box-shadow:-18px 0 50px rgba(16,36,62,.16);animation:workspaceDrawerIn .18s ease-out}
@keyframes workspaceOverlayIn{from{background:rgba(16,36,62,0)}to{background:rgba(16,36,62,.34)}}
@keyframes workspaceDrawerIn{from{transform:translateX(24px);opacity:.72}to{transform:translateX(0);opacity:1}}
.workspace-settings-head{display:grid;grid-template-columns:52px minmax(0,1fr) 34px;gap:11px;align-items:center;padding:16px 17px 14px;border-bottom:1px solid #dfe8ef;background:#fff}
.workspace-settings-head-icon{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,#e9f4ff,#eff8f1);border:1px solid #d9e7f0;color:#285e87;font-size:22px}.workspace-settings-head>div:nth-child(2){min-width:0}.workspace-settings-head>div:nth-child(2)>span{display:block;font-size:7.8px;font-weight:850;letter-spacing:.09em;text-transform:uppercase;color:#738ba0}.workspace-settings-head h2{margin:2px 0 4px;font-size:17px;line-height:1.15;color:#17324a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workspace-settings-origin{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.workspace-settings-origin small{font-size:7.5px;color:#94a1ab}
.workspace-settings-close{width:32px;height:32px;display:grid;place-items:center;border:1px solid #dfe7ed;border-radius:9px;background:#f8fafb;color:#627b8e;cursor:pointer}.workspace-settings-close:hover{background:#eef5fa;color:#244f70}.workspace-settings-close i{font-size:11px}
.workspace-settings-scroll{flex:1;min-height:0;overflow:auto;padding:12px 14px 20px}.workspace-settings-section{margin-bottom:10px;padding:13px;border:1px solid #dce6ed;border-radius:13px;background:#fff;box-shadow:0 1px 2px rgba(16,36,62,.025)}
.workspace-settings-section-title{display:flex;align-items:flex-start;gap:9px;margin-bottom:11px}.workspace-settings-section-title>i{width:30px;height:30px;display:grid;place-items:center;flex:0 0 auto;border-radius:9px;background:#eef6fb;color:#376c93;font-size:13px}.workspace-settings-section-title>div{display:flex;flex-direction:column;min-width:0}.workspace-settings-section-title b{font-size:10.5px;color:#2c5069}.workspace-settings-section-title small{margin-top:2px;font-size:8.3px;line-height:1.35;color:#8495a2}
.workspace-settings-field{display:flex;flex-direction:column;gap:5px;margin-top:9px}.workspace-settings-field>span{font-size:8.6px;font-weight:800;color:#587186}.workspace-settings-field>small{font-size:7.7px;line-height:1.35;color:#8c9aa5}.workspace-settings-field>input[type="text"],.workspace-settings-field>input:not([type]){height:38px;border:1px solid #cbd9e4;border-radius:9px;background:#fff;padding:0 10px;font:inherit;font-size:11px;color:#17324a;outline:none}.workspace-settings-field>input:focus{border-color:#76a9cf;box-shadow:0 0 0 3px rgba(69,137,187,.10)}
.workspace-icon-choice-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.workspace-icon-choice input{position:absolute;opacity:0;pointer-events:none}.workspace-icon-choice>span{min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1px solid #dce6ed;border-radius:9px;background:#fafcfd;color:#627b8e;cursor:pointer;transition:border-color .12s,background .12s,transform .12s}.workspace-icon-choice>span i{font-size:15px}.workspace-icon-choice>span small{font-size:6.8px;line-height:1.05;text-align:center;color:inherit}.workspace-icon-choice:hover>span{border-color:#a9c7dc;background:#f4f9fc;transform:translateY(-1px)}.workspace-icon-choice input:checked+span{border-color:#4c91c2;background:#eaf5fd;color:#235e88;box-shadow:0 0 0 2px rgba(76,145,194,.10)}
.workspace-master-toggle{display:grid!important;grid-template-columns:auto auto minmax(0,1fr);align-items:center!important;gap:9px!important;margin:0;padding:10px 11px;border:1px solid #dce6ed;border-radius:10px;background:#f8fbfd;cursor:pointer}.workspace-master-toggle>input{position:absolute;opacity:0;pointer-events:none}.workspace-master-toggle>span:last-child{display:flex;flex-direction:column;min-width:0}.workspace-master-toggle b{font-size:9.5px;color:#365870}.workspace-master-toggle small{margin-top:2px;font-size:7.8px;line-height:1.35;color:#82939f}.workspace-switch-track{width:34px;height:20px;border-radius:999px;padding:2px;background:#cbd6de;transition:background .14s;display:block}.workspace-switch-track i{display:block;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(16,36,62,.18);transition:transform .14s}.workspace-master-toggle>input:checked+.workspace-switch-track{background:#4e93c3}.workspace-master-toggle>input:checked+.workspace-switch-track i{transform:translateX(14px)}
.workspace-settings-section.workspace-routine-schedule{margin:0 0 10px;border:1px solid #dce6ed;border-radius:13px;background:#fff;overflow:visible}.workspace-settings-section.workspace-routine-schedule .workspace-routine-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;padding:11px;border:1px solid #e3ebf1;border-radius:10px;background:#f8fbfd;opacity:.44;pointer-events:none;transition:opacity .14s}.workspace-settings-section.workspace-routine-schedule .workspace-routine-fields.enabled{opacity:1;pointer-events:auto}.workspace-settings-section.workspace-routine-schedule .workspace-routine-fields>.workspace-day-group{grid-column:1/-1}.workspace-settings-section.workspace-routine-schedule .workspace-routine-fields>.workspace-timing-preview{grid-column:1/-1}.workspace-settings-section.workspace-routine-schedule .workspace-routine-fields input[type="time"],.workspace-settings-section.workspace-routine-schedule .workspace-routine-fields input[type="number"]{height:38px;border:1px solid #cbd9e4;border-radius:9px;background:#fff;padding:0 9px;font:inherit;font-size:10.5px;color:#17324a}
.workspace-day-presets,.workspace-duration-presets{display:flex;gap:4px;flex-wrap:wrap}.workspace-day-presets{margin-bottom:5px}.workspace-day-presets button,.workspace-duration-presets button{appearance:none;border:1px solid #d5e1e9;border-radius:7px;background:#fff;color:#60788a;padding:4px 7px;font:inherit;font-size:7.4px;font-weight:750;cursor:pointer}.workspace-day-presets button:hover,.workspace-duration-presets button:hover{border-color:#8eb8d5;background:#eef7fd;color:#2c658e}.workspace-day-chips{display:grid!important;grid-template-columns:repeat(7,1fr);gap:4px!important}.workspace-day-chip span{display:grid!important;place-items:center;padding:6px 2px!important;border-radius:7px!important;font-size:7.4px!important}.workspace-duration-control{display:flex;align-items:center;gap:6px}.workspace-duration-control input{width:92px}.workspace-duration-control>span{font-size:8px;color:#7b8d9a}.workspace-duration-presets{margin-top:5px}
.workspace-timing-preview{display:flex;align-items:flex-start;gap:8px;padding:9px 10px;border:1px solid #cfe0ed;border-radius:9px;background:#eef7fd;color:#4f7188}.workspace-timing-preview>i{font-size:13px;color:#2d739f;margin-top:1px}.workspace-timing-preview>div{display:flex;flex-direction:column}.workspace-timing-preview b{font-size:8.2px;color:#315f7e}.workspace-timing-preview span{margin-top:1px;font-size:10px;font-weight:800;color:#244e6c}.workspace-timing-preview small{margin-top:3px;font-size:7.5px;line-height:1.4;color:#718999}
.workspace-settings-safety{background:#fbfdfb}.workspace-settings-safety .workspace-settings-section-title>i{background:#eef8f1;color:#43805a}.workspace-settings-guardrails{display:grid;grid-template-columns:1fr 1fr;gap:6px}.workspace-settings-guardrails span{display:flex;align-items:flex-start;gap:5px;padding:7px 8px;border:1px solid #e1ebe4;border-radius:8px;background:#fff;font-size:7.8px;line-height:1.35;color:#657c6c}.workspace-settings-guardrails i{font-size:8px;color:#4e8b61;margin-top:1px}
.workspace-settings-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;border-top:1px solid #dbe5ec;background:#fff;box-shadow:0 -5px 18px rgba(16,36,62,.04)}.workspace-settings-footer>.msg{margin:0;min-width:0;font-size:8px}.workspace-settings-footer>div{display:flex;gap:6px;margin-left:auto}.workspace-settings-save{min-width:122px}
@media(max-width:700px){.workspace-settings-drawer{width:100vw}.workspace-settings-head{grid-template-columns:46px minmax(0,1fr) 32px;padding:13px}.workspace-settings-head-icon{width:46px;height:46px}.workspace-settings-scroll{padding:10px}.workspace-icon-choice-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.workspace-settings-section.workspace-routine-schedule .workspace-routine-fields{grid-template-columns:1fr}.workspace-settings-section.workspace-routine-schedule .workspace-routine-fields>.workspace-day-group,.workspace-settings-section.workspace-routine-schedule .workspace-routine-fields>.workspace-timing-preview{grid-column:auto}.workspace-settings-guardrails{grid-template-columns:1fr}.workspace-settings-footer{align-items:flex-end;flex-direction:column}.workspace-settings-footer>div{width:100%}.workspace-settings-footer button{flex:1}}

/* ================================================================
   v121 — Workspace Settings contained editor
   The v120 fixed drawer could fight the app viewport. v121 turns
   settings into a true sub-screen inside the Plan Builder and adds
   hard width/overflow containment so controls never spill off-page.
   ================================================================ */
.plan-builder-page,
.plan-builder-shell,
.plan-builder-main,
.plan-screen,
#plan-workspace-root,
.plan-workspace-section,
.workspace-gallery,
.workspace-gallery-body,
.plan-workspace-stage,
.plan-workspace-canvas,
.plan-workspace-board,
.plan-workspace-card,
.workspace-settings-page,
.workspace-settings-page *{min-width:0;max-width:100%}
.plan-screen[data-plan-step-panel="workspaces"]{overflow-x:hidden}
.plan-builder-shell.workspace-settings-mode{grid-template-columns:minmax(0,1fr)}
.plan-builder-shell.workspace-settings-mode>.plan-builder-sidebar{display:none}
.plan-builder-shell.workspace-settings-mode .plan-builder-main{width:100%;max-width:100%}
.plan-builder-shell.workspace-settings-mode .plan-screen[data-plan-step-panel="workspaces"]>.plan-screen-footer{display:none}

.workspace-settings-page{width:100%;overflow:hidden;border:1px solid #d9e5ed;border-radius:16px;background:#f7fafc;box-shadow:0 4px 14px rgba(16,36,62,.04)}
.workspace-settings-page-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;padding:15px 16px;border-bottom:1px solid #dfe8ef;background:#fff}
.workspace-settings-back{grid-column:1/-1;justify-self:start;display:inline-flex;align-items:center;gap:6px;padding:6px 8px!important;border:0!important;background:transparent!important;color:#416b89!important;font-size:9px!important;font-weight:800!important}
.workspace-settings-back:hover{background:#f1f7fb!important;color:#174f78!important}
.workspace-settings-page-title{display:grid;grid-template-columns:48px minmax(0,1fr);gap:10px;align-items:center;min-width:0}
.workspace-settings-page-title .workspace-settings-head-icon{width:48px;height:48px;border-radius:13px}
.workspace-settings-page-title>div:last-child{min-width:0}
.workspace-settings-page-title>div:last-child>span{display:block;font-size:7.8px;font-weight:850;letter-spacing:.09em;text-transform:uppercase;color:#738ba0}
.workspace-settings-page-title h2{margin:2px 0 4px;font-size:18px;line-height:1.15;color:#17324a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.workspace-settings-page-summary{display:flex;justify-content:flex-end;align-items:center;gap:5px;flex-wrap:wrap;max-width:100%}
.workspace-settings-page-body{width:100%;padding:14px;overflow:hidden}
.workspace-settings-top-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(250px,.65fr);gap:10px;align-items:start}
.workspace-settings-page .workspace-settings-section{width:100%;margin:0 0 10px;padding:13px;border:1px solid #dce6ed;border-radius:13px;background:#fff;overflow:hidden;box-shadow:0 1px 2px rgba(16,36,62,.025)}
.workspace-settings-page .workspace-settings-section-title{margin-bottom:10px}
.workspace-settings-page .workspace-settings-field>input,
.workspace-settings-page .workspace-settings-field>select,
.workspace-settings-page .workspace-duration-control input{width:100%;max-width:100%}
.workspace-settings-page .workspace-icon-choice-grid{grid-template-columns:repeat(auto-fit,minmax(76px,1fr));width:100%}
.workspace-settings-page .workspace-icon-choice>span{width:100%;min-width:0}
.workspace-settings-availability{min-height:100%}
.workspace-settings-mini-note{display:flex;align-items:flex-start;gap:7px;margin-top:9px;padding:9px;border-radius:9px;background:#f7fafc;color:#728797;font-size:8px;line-height:1.4}
.workspace-settings-mini-note i{margin-top:1px;color:#4f7897}
.workspace-settings-page .workspace-routine-fields{grid-template-columns:minmax(0,1.25fr) minmax(160px,.75fr)!important;width:100%;overflow:hidden}
.workspace-settings-page .workspace-routine-fields>.workspace-day-group,
.workspace-settings-page .workspace-routine-fields>.workspace-timing-preview{grid-column:1/-1}
.workspace-settings-page .workspace-day-chips{grid-template-columns:repeat(7,minmax(0,1fr));width:100%}
.workspace-settings-page .workspace-day-chip{min-width:0}
.workspace-settings-page .workspace-day-chip span{width:100%;min-width:0;white-space:nowrap}
.workspace-settings-page .workspace-day-presets,
.workspace-settings-page .workspace-duration-presets{max-width:100%;flex-wrap:wrap}
.workspace-settings-page .workspace-day-presets button,
.workspace-settings-page .workspace-duration-presets button{max-width:100%;white-space:normal}
.workspace-settings-page .workspace-duration-control{width:100%;max-width:100%}
.workspace-settings-page .workspace-duration-control input{width:min(130px,100%)}
.workspace-settings-page .workspace-timing-preview{width:100%;overflow-wrap:anywhere}
.workspace-settings-context-note{display:flex;align-items:flex-start;gap:9px;width:100%;padding:10px 11px;border:1px solid #dce9df;border-radius:11px;background:#f5faf6;color:#62796a}
.workspace-settings-context-note>i{flex:0 0 auto;margin-top:1px;color:#4b835c;font-size:13px}
.workspace-settings-context-note>div{display:flex;flex-direction:column;min-width:0}.workspace-settings-context-note b{font-size:9px;color:#456753}.workspace-settings-context-note span{margin-top:2px;font-size:8px;line-height:1.4}
.workspace-settings-page-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:11px 14px;border-top:1px solid #dbe5ec;background:#fff}
.workspace-settings-page-footer>.msg{margin:0;min-width:0;font-size:8.5px;overflow-wrap:anywhere}.workspace-settings-page-footer>div{display:flex;gap:6px;flex:0 0 auto}.workspace-settings-page-footer button{white-space:nowrap}

@media(max-width:980px){
  .workspace-settings-top-grid{grid-template-columns:1fr}
  .workspace-settings-page .workspace-routine-fields{grid-template-columns:1fr!important}
  .workspace-settings-page .workspace-routine-fields>.workspace-day-group,
  .workspace-settings-page .workspace-routine-fields>.workspace-timing-preview{grid-column:auto}
}
@media(max-width:700px){
  .workspace-settings-page-head{grid-template-columns:1fr;align-items:start;padding:12px}
  .workspace-settings-page-summary{justify-content:flex-start}
  .workspace-settings-page-body{padding:10px}
  .workspace-settings-page .workspace-icon-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .workspace-settings-page .workspace-day-chips{grid-template-columns:repeat(4,minmax(0,1fr))}
  .workspace-settings-page-footer{align-items:stretch;flex-direction:column}
  .workspace-settings-page-footer>div{width:100%}.workspace-settings-page-footer button{flex:1}
}
@media(max-width:430px){
  .workspace-settings-page .workspace-icon-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .workspace-settings-page .workspace-day-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ================================================================
   v122 — Workspace viewport containment hardening
   Fixes real horizontal overflow by removing the nested left-rail +
   two-column board geometry. Workspace Step 4 is now a single-width
   composition: target tray, then Workspace canvas, then one-column cards.
   Settings also uses a single-column editor at every desktop width.
   ================================================================ */
html,body{max-width:100%;overflow-x:hidden}
.plan-builder-page{width:100%;max-width:100%;overflow:hidden!important}
.plan-builder-shell,.plan-builder-main,.plan-screen,#plan-workspace-root{width:100%;max-width:100%;min-width:0}
.plan-screen[data-plan-step-panel="workspaces"]{overflow-x:clip!important}
.plan-screen[data-plan-step-panel="workspaces"] *{min-width:0}

/* Never split an already narrow builder into a target rail + card canvas. */
.plan-workspace-stage{display:block!important;width:100%;max-width:100%}
.plan-target-rail,.plan-workspace-canvas{display:block;width:100%;max-width:100%}
.plan-workspace-target-tray{position:static!important;top:auto!important;max-height:none!important;width:100%;max-width:100%;margin:0 0 10px!important;overflow:hidden!important}
.workspace-target-tray-head{margin-bottom:7px}
.plan-workspace-target-tray-list{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));gap:6px!important;width:100%;max-width:100%;overflow:visible!important;padding:0!important}
.plan-workspace-drag-target{width:100%!important;min-width:0!important;max-width:100%!important}
.plan-workspace-drag-target b{white-space:normal!important;overflow-wrap:anywhere}

/* One full-width Workspace card per row. This avoids the old 290px x 2
   minimum-column rule that could exceed the real canvas width. */
.plan-workspace-board{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:10px;width:100%;max-width:100%}
.plan-workspace-board .plan-workspace-card{width:100%;max-width:100%;min-width:0;overflow:hidden}
.plan-workspace-card-main{width:100%;max-width:100%;grid-template-columns:58px minmax(0,1fr) auto}
.plan-workspace-fields,.workspace-title-display,.workspace-title-line{min-width:0;max-width:100%}
.workspace-title-display .workspace-title-line>b{white-space:normal;overflow-wrap:anywhere}
.plan-workspace-order{min-width:0;max-width:100%;flex-wrap:wrap;justify-content:flex-end}
.plan-workspace-order button,.plan-workspace-order span{max-width:100%}
.plan-workspace-targets,.workspace-card-summary,.workspace-card-feedback{width:auto;max-width:calc(100% - 18px)}
.workspace-assigned-targets>span{min-width:0;max-width:100%}
.workspace-assigned-targets>span>span{min-width:0}
.workspace-suggested-row{max-width:100%;flex-wrap:wrap}
.workspace-suggested-row>span{min-width:min(220px,100%)}
.workspace-suggested-row button{margin-left:auto}

/* Gallery scroll is contained INSIDE the gallery, never the page. */
.workspace-gallery,.workspace-gallery-head,.workspace-gallery-body{width:100%;max-width:100%}
.workspace-gallery-head{flex-wrap:wrap}
.workspace-gallery-primary,.workspace-gallery-source-tabs{max-width:100%;flex-wrap:wrap}
.plan-screen[data-plan-step-panel="workspaces"] .workspace-gallery-grid{width:100%;max-width:100%;overflow-x:auto!important;overflow-y:hidden;grid-auto-columns:min(220px,82vw)!important}
.workspace-gallery-card{max-width:100%}
.workspace-custom-builder,.workspace-custom-builder .plan-workspace-create,.workspace-org-template-form{width:100%;max-width:100%}

/* Settings: prioritize containment over density. No side-by-side sections. */
.workspace-settings-page{width:100%;max-width:100%;overflow:hidden!important}
.workspace-settings-page-head{grid-template-columns:minmax(0,1fr)!important;align-items:start!important}
.workspace-settings-page-summary{justify-content:flex-start!important;width:100%;max-width:100%}
.workspace-settings-page-body{width:100%;max-width:100%;overflow:hidden!important}
.workspace-settings-top-grid{display:block!important;width:100%;max-width:100%}
.workspace-settings-page .workspace-settings-section{width:100%;max-width:100%;overflow:hidden!important}
.workspace-settings-page .workspace-icon-choice-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(min(82px,100%),1fr))!important;width:100%;max-width:100%}
.workspace-settings-page .workspace-routine-fields{display:grid!important;grid-template-columns:minmax(0,1fr)!important;width:100%;max-width:100%;overflow:hidden!important}
.workspace-settings-page .workspace-routine-fields>*{grid-column:auto!important;min-width:0;max-width:100%}
.workspace-settings-page .workspace-day-chips{grid-template-columns:repeat(auto-fit,minmax(min(54px,100%),1fr))!important;width:100%;max-width:100%}
.workspace-settings-page .workspace-day-presets,
.workspace-settings-page .workspace-duration-presets{display:flex;flex-wrap:wrap;max-width:100%}
.workspace-settings-page input,
.workspace-settings-page select,
.workspace-settings-page textarea,
.workspace-settings-page button{max-width:100%}
.workspace-settings-page-footer{width:100%;max-width:100%;flex-wrap:wrap}
.workspace-settings-page-footer>div{display:flex;flex-wrap:wrap;max-width:100%}

/* Narrow builder protection is based on viewport because the app sidebar
   consumes width before the Plan Builder receives it. */
@media(max-width:1100px){
  .plan-builder-shell{display:block!important}
  .plan-builder-sidebar{position:static;margin-bottom:10px}
  .plan-builder-sidebar-head,.plan-at-glance,.plan-builder-sidebar-help{display:none}
  .plan-screen-nav{display:grid;grid-template-columns:repeat(5,minmax(92px,1fr));gap:4px;overflow-x:auto;max-width:100%}
  .plan-screen-nav button{min-width:92px}
}
@media(max-width:760px){
  .plan-workspace-card-main{grid-template-columns:44px minmax(0,1fr)!important;align-items:start}
  .plan-workspace-card-art,.plan-workspace-icon{width:44px;height:44px}
  .plan-workspace-order{grid-column:1/-1;justify-content:flex-start;width:100%;padding-top:4px}
  .plan-workspace-target-tray-list{grid-template-columns:1fr!important}
  .workspace-gallery-head{gap:8px}
  .workspace-gallery-primary{width:100%}
  .workspace-gallery-primary button{flex:1 1 160px;white-space:normal}
  .workspace-settings-page-footer{flex-direction:column;align-items:stretch}
  .workspace-settings-page-footer>div{width:100%}
  .workspace-settings-page-footer button{flex:1 1 140px}
}
@media(max-width:520px){
  .plan-screen{padding:10px!important}
  .plan-screen-footer{margin:14px -10px -10px!important;padding:9px 10px!important;flex-wrap:wrap}
  .plan-screen-nav{grid-template-columns:repeat(5,minmax(78px,1fr))}
  .plan-screen-nav button{min-width:78px}
  .workspace-settings-page-body{padding:8px!important}
  .workspace-settings-page .workspace-settings-section{padding:10px!important}
}

/* v122: Step 4 gets the full Plan Builder canvas. */
.plan-builder-shell.workspace-focus-mode{grid-template-columns:minmax(0,1fr)!important}
.plan-builder-shell.workspace-focus-mode>.plan-builder-sidebar{display:none!important}
.plan-builder-shell.workspace-focus-mode .plan-builder-main{width:100%;max-width:100%}

/* ============================================================
   v124 — Admin shell / scrolling stability pass
   The application grew beyond the assumptions in the original two-column
   shell. Keep the navigation present, contain feature-level overflow, and
   make flex/grid descendants shrink instead of widening the page.
   Visual/layout-only: no data, permission, program-library, or schema changes.
   ============================================================ */
html{min-width:0;max-width:100%;overflow-x:clip}
body{min-width:0;max-width:100%;overflow-x:clip}
.layout{
  width:100%;
  max-width:100%;
  min-width:0;
  align-items:flex-start;
}
.sidebar{
  flex:0 0 230px;
  width:230px;
  min-width:230px;
  height:100vh;
  height:100dvh;
  max-height:100vh;
  max-height:100dvh;
  min-height:0;
  align-self:flex-start;
  overflow:hidden;
  position:sticky;
  top:0;
  z-index:40;
  overscroll-behavior:contain;
}
.sidebar .brand{flex:0 0 auto;min-width:0}
.sidebar .nav{
  flex:1 1 auto;
  min-height:0;
  min-width:0;
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  -webkit-overflow-scrolling:touch;
  padding-right:2px;
}
.sidebar .nav .tab{flex:0 0 auto;min-width:0}
.sidebar .nav .tab>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar .side-link{flex:0 0 auto;min-width:0}
.main-col{
  flex:1 1 auto;
  width:auto;
  max-width:calc(100% - 230px);
  min-width:0;
  min-height:100vh;
  min-height:100dvh;
  overflow:visible;
}
.topbar{
  width:100%;
  max-width:100%;
  min-width:0;
  z-index:30;
}
.topbar .org{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar .user{min-width:0;max-width:min(320px,32vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
main,
main>[id^="tab-"],
main>[id^="tab-"]>*{
  min-width:0;
  max-width:100%;
}
main{width:100%}
.card,.kpis,.row-form,.sched-shell,.plan-builder-page,.plan-screen{min-width:0;max-width:100%}
img,svg,video,canvas{max-width:100%}
pre,code{overflow-wrap:anywhere}
.table-scroll,.schedule-grid-scroll{max-width:100%;-webkit-overflow-scrolling:touch}

/* Prevent common flex/grid children from forcing feature pages wider than
   the content column. Explicit horizontal scrollers still retain scrolling. */
.card>*,.sched-shell>*,.plan-builder-page>*,.plan-screen>*{min-width:0}

/* Safari/WebKit can paint sticky siblings below transformed/animated feature
   content. Isolate the app shell so the sidebar/topbar retain their layers. */
.layout{isolation:isolate}
.main-col{position:relative;z-index:1}
.sidebar{transform:translateZ(0)}

@media(max-width:720px){
  .sidebar{
    flex-basis:150px;
    width:150px;
    min-width:150px;
    padding:12px 8px;
  }
  .main-col{max-width:calc(100% - 150px)}
  .sidebar .nav .tab{padding:10px 9px;gap:8px;font-size:12px}
  .brand{padding-left:7px;padding-right:7px;font-size:14px}
  .brand .brand-icon{width:28px;height:28px}
  .side-link{padding-left:9px;padding-right:9px;font-size:11px}
  .topbar{padding:10px 12px;gap:8px}
  .topbar .user{display:none}
}

@media(max-width:520px){
  .sidebar{
    flex-basis:68px;
    width:68px;
    min-width:68px;
    padding:10px 6px;
  }
  .main-col{max-width:calc(100% - 68px)}
  .sidebar .brand{justify-content:center;padding:4px 0 12px}
  .sidebar .brand span{display:none}
  .sidebar .nav .tab{justify-content:center;padding:11px 7px;font-size:0;gap:0}
  .sidebar .nav .tab .bi{font-size:18px;width:auto}
  .sidebar .nav .tab>span{display:none}
  .sidebar .side-link{font-size:0;text-align:center;padding:10px 4px}
  /* v249 Workstream 36: scoped by href. This was written when there was
     exactly one side link, so "every .side-link" and "the Recorder link"
     were the same set; they are not any more, and an unscoped rule would
     label a second link "Recorder". */
  .sidebar .side-link[href="collect.html"]::before{content:"Recorder";font-size:9px}
  main{padding:12px}
}

@media print{
  html,body{overflow:visible!important}
  .layout{display:block!important}
  .sidebar,.topbar,.ticker,.load-warning{display:none!important}
  .main-col{max-width:none!important;width:100%!important;min-height:0!important}
  main{max-width:none!important;width:100%!important;padding:0!important;overflow:visible!important}
}

/* ============================================================
   v125 — UI QA round 2
   Follow-up hardening after the shell/sidebar stability pass.
   Targets dense toolbars, modal containment, long table content and
   narrow viewport compression without changing application behavior.
   ============================================================ */
.topbar .spacer{flex:1 1 auto;min-width:0}
.topbar .link{flex:0 0 auto;white-space:nowrap}
.card{overflow-wrap:anywhere}
.card:has(>table){overflow-x:auto;-webkit-overflow-scrolling:touch}
.card:has(>table)>table{min-width:max-content}

/* Keep overlays self-contained so wheel/touch scrolling at the edge of a
   drawer/modal does not leak through into the screen behind it. */
.appt-drawer-overlay,.school-day-overlay,.sess-overlay,.program-review-overlay,.workspace-settings-overlay{
  overscroll-behavior:contain;
}
.appt-drawer,.school-day-modal,.sess-modal,.program-review-modal,.workspace-settings-drawer{
  max-height:100dvh;
  overscroll-behavior:contain;
}

/* Dense Schedule controls should wrap inside their own row rather than
   widening the page or colliding with neighboring controls. */
.sched-toolbar,.sched-toolbar-filters,.school-planner-toolbar,.school-planner-actions,.school-planner-filters{
  min-width:0;
  max-width:100%;
}
.sched-toolbar>*,.sched-toolbar-filters>*,.school-planner-toolbar>*,.school-planner-actions>*,.school-planner-filters>*{
  min-width:0;
}

@media(max-width:900px){
  .topbar .org{max-width:42vw}
  .sched-toolbar button,.sched-toolbar select{max-width:100%}
  .program-review-modal-actions{flex-wrap:wrap}
}
@media(max-width:620px){
  .topbar{padding-left:10px;padding-right:10px}
  .topbar .org{max-width:46vw;font-size:12px}
  .topbar .link{font-size:12px;padding-left:6px;padding-right:6px}
  .school-day-overlay,.sess-overlay,.program-review-overlay{padding:10px}
  .school-day-modal,.sess-modal,.program-review-modal{padding:18px;max-height:calc(100dvh - 20px)}
}
@media(max-width:430px){
  .topbar .org{max-width:40vw}
  .program-review-modal-actions>button{flex:1 1 120px}
}

/* ===== v126 Calendar cleanup / assignment clarity ===== */
/* Calendar should read like one focused workspace, not stacked dashboard cards. */
#tab-schedule .sched-shell{gap:9px}
#tab-schedule .calendar-page-head{grid-template-columns:minmax(180px,.62fr) minmax(320px,1.25fr) auto;gap:14px;padding:14px 16px;border-radius:14px;box-shadow:none}
#tab-schedule .calendar-page-title h1{font-size:22px;line-height:1.05;margin:2px 0 3px}
#tab-schedule .calendar-page-title p{font-size:10px;margin:0}
#tab-schedule .calendar-page-kicker{font-size:8.5px;letter-spacing:.08em}
#tab-schedule .calendar-page-center{gap:10px}
#tab-schedule .calendar-range-title{font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
#tab-schedule .calendar-page-actions{gap:7px}
#tab-schedule .calendar-new-event{height:34px;padding:0 12px;border-radius:9px;font-size:11.5px;box-shadow:none}
#tab-schedule .calendar-date-input{height:34px;border-radius:9px}
#tab-schedule .calendar-view-switch button{padding:6px 9px;font-size:10.5px}
#tab-schedule .sched-module-nav-card{padding:6px 8px;border-radius:12px;border-color:#e0e7ec}
#tab-schedule .sched-module-nav-card .sched-segment button{padding:6px 9px;font-size:10.5px}
#tab-schedule .calendar-workspace{grid-template-columns:214px minmax(0,1fr);gap:10px}
#tab-schedule .calendar-rail{top:72px;border-radius:14px;box-shadow:none;border-color:#dfe7ec}
#tab-schedule .mini-calendar{padding:12px 11px 10px}
#tab-schedule .calendar-rail-section{padding:10px 11px}
#tab-schedule .calendar-filter-row{padding:5px 6px;font-size:10.5px}
#tab-schedule .calendar-filter-icon{width:22px;height:22px;font-size:10px}
#tab-schedule .calendar-health-card{display:grid;grid-template-columns:1fr 1fr;gap:3px 8px}
#tab-schedule .calendar-health-card .calendar-rail-label{grid-column:1/-1}
#tab-schedule .calendar-health-card>div:not(.calendar-rail-label){padding:4px 0;border-top:1px solid #edf2f5}
#tab-schedule .calendar-canvas>.school-calendar-strip{margin-bottom:8px;border-radius:11px;padding:8px 10px}
#tab-schedule .calendar-canvas>.schedule-grid-card{border-radius:14px;box-shadow:none}
#tab-schedule .calendar-canvas .schedule-grid-scroll{max-height:calc(100vh - 245px);min-height:460px}
#tab-schedule .schedule-timegrid-head,#tab-schedule .schedule-timegrid-corner{z-index:12}
#tab-schedule .schedule-day-head{min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center}
#tab-schedule .schedule-day-head .dow{font-size:9px}
#tab-schedule .calendar-canvas .schedule-day-head .daynum{width:26px;height:26px;font-size:11px}
#tab-schedule .schedule-time-axis{position:sticky;left:0;z-index:5;background:#fff}
#tab-schedule .schedule-event{border-radius:6px;box-shadow:none}
#tab-schedule .schedule-event:hover:not(:disabled),#tab-schedule .schedule-event:focus{box-shadow:0 4px 10px rgba(16,36,62,.12)}
#tab-schedule .schedule-event .event-title{font-size:10.5px}
#tab-schedule .schedule-event .event-meta{font-size:8.8px}
#tab-schedule .sched-legend{font-size:9px;gap:10px;row-gap:5px}
#tab-schedule .calendar-canvas .sched-month-day{min-height:112px;padding:6px}
#tab-schedule .sched-month-event{padding:3px 5px;font-size:9px;margin:2px 0}
#tab-schedule .calendar-agenda-day{border-radius:13px;box-shadow:none;padding:11px}
#tab-schedule .calendar-agenda-content .appt-card{box-shadow:none}

/* Staffing Board: one full event belongs to its primary staff member.
   Other participants are shown as involvement, not duplicated ownership. */
#tab-schedule #sched-grid table{border-collapse:separate;border-spacing:0;min-width:760px}
#tab-schedule #sched-grid thead th{position:sticky;top:0;z-index:4;background:#fff;border-bottom:1px solid var(--line)}
#tab-schedule #sched-grid thead th:first-child,#tab-schedule #sched-grid tbody td:first-child{position:sticky;left:0;z-index:5;background:#fff}
#tab-schedule #sched-grid tbody td{height:34px;min-width:135px}
#tab-schedule #sched-grid tbody td:first-child{min-width:72px}
#tab-schedule .staffing-secondary-cell{cursor:pointer;background:#f6f8fa!important;border-left:3px solid #a8b4bf!important;color:#5c6b78;font-size:9px;line-height:1.15;padding:4px 6px!important}
#tab-schedule .staffing-secondary-cell span{display:block;text-transform:uppercase;letter-spacing:.06em;font-size:7.5px;font-weight:800;color:#7f8c96;margin-bottom:2px}
#tab-schedule .staffing-secondary-cell b{display:block;font-size:9px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

@media(max-width:1160px){
  #tab-schedule .calendar-page-head{grid-template-columns:minmax(170px,.55fr) minmax(300px,1fr)}
  #tab-schedule .calendar-page-actions{grid-column:1/-1}
}
@media(max-width:900px){
  #tab-schedule .calendar-page-head{grid-template-columns:1fr;gap:9px}
  #tab-schedule .calendar-page-center{justify-content:space-between}
  #tab-schedule .calendar-workspace{grid-template-columns:1fr}
  #tab-schedule .calendar-rail{position:static;display:grid;grid-template-columns:minmax(220px,260px) 1fr}
  #tab-schedule .calendar-health-card{grid-template-columns:1fr 1fr}
  #tab-schedule .calendar-canvas .schedule-grid-scroll{max-height:680px;min-height:400px}
}
@media(max-width:620px){
  #tab-schedule .calendar-page-head{padding:11px}
  #tab-schedule .calendar-page-center{align-items:flex-start;flex-direction:column}
  #tab-schedule .calendar-range-title{text-align:left;width:100%}
  #tab-schedule .calendar-page-actions{display:grid;grid-template-columns:auto 1fr;align-items:center}
  #tab-schedule .calendar-view-switch{grid-column:1/-1;order:3}
  #tab-schedule .calendar-new-event{margin-left:0;justify-self:end}
  #tab-schedule .calendar-rail{display:block}
  #tab-schedule .calendar-canvas .schedule-grid-scroll{min-height:360px;max-height:620px}
}

/* v127 calendar ownership + staffing board cleanup */
#tab-schedule .staffing-board-card{padding:0;overflow:hidden}
#tab-schedule .staffing-board-head{padding:15px 16px 11px;border-bottom:1px solid var(--line);background:#fff}
#tab-schedule .staffing-board-head h2{margin:0 0 3px;font-size:15px}
#tab-schedule .staffing-board-head p{margin:0;color:var(--muted);font-size:10.5px;line-height:1.35}
#tab-schedule .staffing-board-scroll{overflow:auto;max-height:68vh;overscroll-behavior:contain}
#tab-schedule .staffing-primary-cell{cursor:pointer;background:color-mix(in srgb,var(--staffing-accent) 9%,white)!important;border-left:3px solid var(--staffing-accent)!important;padding:5px 7px!important;vertical-align:middle}
#tab-schedule .staffing-primary-title{font-size:10.5px;font-weight:700;line-height:1.2;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
#tab-schedule .staffing-involved{display:inline-flex;margin-top:3px;padding:1px 5px;border-radius:999px;background:#edf2f5;color:#60717e;font-size:7.5px;font-weight:800;letter-spacing:.02em}
#tab-schedule .staffing-secondary-cell{display:none!important}
#tab-schedule #sched-grid table{width:max-content;min-width:100%;table-layout:fixed}
#tab-schedule #sched-grid thead th{height:42px;box-shadow:0 1px 0 var(--line)}
#tab-schedule #sched-grid tbody tr:hover td{background-color:#fbfcfd}
#tab-schedule #sched-grid tbody td:first-child{width:72px;min-width:72px;max-width:72px}
@media(max-width:900px){
  #tab-schedule .staffing-board-scroll{max-height:60vh}
  #tab-schedule #sched-grid tbody td{min-width:150px}
}

/* v128 Calendar v2 — clean event-only canvas + separate routine context */
#tab-schedule .calendar-v2-surface{min-width:0;max-width:100%;isolation:isolate}
#tab-schedule .calendar-canvas[data-calendar-density]{min-width:0;overflow:visible}
#tab-schedule .calendar-context-tray{border:1px solid #dfe7ec;border-radius:12px;background:#fbfcfd;margin:0 0 8px;overflow:hidden;box-shadow:none}
#tab-schedule .calendar-context-tray-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-bottom:1px solid #e8eef2;color:#52697c}
#tab-schedule .calendar-context-tray-head>span{display:flex;align-items:center;gap:6px;font-size:10px}
#tab-schedule .calendar-context-tray-head small{font-size:8.5px;color:#82919d}
#tab-schedule .calendar-context-days{display:flex;gap:6px;padding:7px;overflow-x:auto;overscroll-behavior-inline:contain}
#tab-schedule .calendar-context-day{display:flex;gap:7px;align-items:flex-start;min-width:170px;max-width:220px;padding:6px 7px;border:1px solid #edf2f5;border-radius:9px;background:#fff}
#tab-schedule .calendar-context-date{width:28px;flex:0 0 28px;text-align:center;color:#718494;line-height:1.05}
#tab-schedule .calendar-context-date b{display:block;font-size:7.5px;text-transform:uppercase;letter-spacing:.05em}
#tab-schedule .calendar-context-date span{display:block;font-size:13px;font-weight:800;color:#253e56;margin-top:2px}
#tab-schedule .calendar-context-items{min-width:0;display:flex;flex-direction:column;gap:3px}
#tab-schedule .calendar-context-item{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:5px;align-items:center;font-size:8px;line-height:1.1;color:#657d90}
#tab-schedule .calendar-context-item>span{font-variant-numeric:tabular-nums;color:#8797a4}
#tab-schedule .calendar-context-item>b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#405c72;font-size:8.5px}
#tab-schedule .calendar-context-item>small{grid-column:2;font-size:7.5px;color:#91a0aa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#tab-schedule .calendar-context-item.opened>b{color:#87601d}
#tab-schedule .calendar-context-item.data>b{color:#3f7650}
#tab-schedule .calendar-context-more{font-size:7.5px;color:#81909c}
#tab-schedule .calendar-context-tray.loading,#tab-schedule .calendar-context-tray.error,#tab-schedule .calendar-context-tray.empty{display:flex;align-items:center;gap:8px;padding:9px 11px;font-size:9.5px;color:#708596}
#tab-schedule .calendar-context-tray.empty span{display:flex;flex-direction:column}.calendar-context-tray.empty small{font-size:8px;color:#91a0aa}
#tab-schedule .calendar-context-tray.error{color:#8b2d1e;background:#fff8f6;border-color:#f0d6cf}
#tab-schedule .calendar-clear-filters{width:100%;margin-top:7px;border:0;background:transparent;color:#567086;font-size:9px;font-weight:700;text-align:left;padding:4px 1px;cursor:pointer}
#tab-schedule .calendar-clear-filters:hover{color:#123D73}
/* Appointment lanes are isolated from context/headers so old layers can never visually sit on top. */
#tab-schedule .schedule-grid-card{position:relative;isolation:isolate;overflow:hidden}
#tab-schedule .schedule-grid-scroll{position:relative;z-index:1;overscroll-behavior:contain}
#tab-schedule .schedule-day-track{isolation:isolate;overflow:hidden}
#tab-schedule .schedule-event{z-index:3;overflow:hidden;max-width:calc(100% - 4px)}
#tab-schedule .schedule-event .event-title,#tab-schedule .schedule-event .event-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#tab-schedule .schedule-empty-hint{z-index:0;pointer-events:none}
/* Week remains readable instead of crushing seven event lanes into overlapping cards. */
#tab-schedule .schedule-timegrid.week{min-width:980px}
#tab-schedule .schedule-grid-scroll{overflow:auto}
#tab-schedule .schedule-days.week .schedule-day-track{min-width:0}
@media(max-width:900px){
  #tab-schedule .calendar-context-tray-head{align-items:flex-start;flex-direction:column;gap:2px}
  #tab-schedule .schedule-timegrid.week{min-width:900px}
}

/* ========================================================================
   v129 — FullCalendar integration
   The primary Calendar surface is now rendered by the locally bundled
   FullCalendar Standard engine. BehaviorDash owns the surrounding workflow,
   filters, drawers, school-calendar context, and appointment data.
   ======================================================================== */
.fullcalendar-card{
  min-width:0;
  overflow:hidden;
  padding:0;
  border-radius:16px;
}
.fullcalendar-engine-badge{
  min-height:46px;
  padding:10px 14px;
  border-bottom:1px solid var(--line,#dfe7ed);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  background:#fff;
}
.fullcalendar-engine-badge span{
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:#10243E;
  font-size:12px;
  font-weight:700;
}
.fullcalendar-engine-badge small{
  color:#71808d;
  font-size:10.5px;
  font-weight:500;
}
.bd-fullcalendar{
  min-width:0;
  width:100%;
  background:#fff;
  /* FullCalendar v7 classic theme tokens */
  --fc-classic-primary:#123D73;
  --fc-classic-primary-foreground:#fff;
  --fc-classic-event:#123D73;
  --fc-classic-event-contrast:#fff;
  --fc-classic-highlight:#123D7314;
  --fc-classic-today:#123D730D;
  --fc-classic-now:#E84B32;
  --fc-classic-background:#fff;
  --fc-classic-faint:#10243E08;
  --fc-classic-muted:#10243E12;
  --fc-classic-strong:#10243E20;
  --fc-classic-foreground:#10243E;
  --fc-classic-faint-foreground:#94a3af;
  --fc-classic-muted-foreground:#5C6B78;
  --fc-classic-border:#dfe7ed;
  --fc-classic-strong-border:#b9c7d2;
}
.bd-fullcalendar .fc{
  font-family:inherit;
  color:#10243E;
  font-size:12px;
}
.bd-fullcalendar .fc-theme-standard td,
.bd-fullcalendar .fc-theme-standard th,
.bd-fullcalendar .fc-scrollgrid{
  border-color:#dfe7ed;
}
.bd-fullcalendar .fc-scrollgrid{
  border:0;
}
.bd-fullcalendar .fc-scrollgrid-section-header > *{
  border-top:0;
}
.bd-fullcalendar .fc-col-header-cell{
  background:#f8fafb;
}
.bd-fullcalendar .fc-col-header-cell-cushion{
  padding:11px 7px;
  color:#5c6b78;
  font-size:10px;
  font-weight:700;
  letter-spacing:.05em;
  text-transform:uppercase;
  text-decoration:none;
}
.bd-fullcalendar .fc-col-header-cell.fc-day-today{
  background:#edf4fb;
}
.bd-fullcalendar .fc-timegrid-axis,
.bd-fullcalendar .fc-timegrid-slot-label{
  background:#fbfcfd;
}
.bd-fullcalendar .fc-timegrid-slot-label-cushion{
  color:#6c7a86;
  padding-right:8px;
  font-size:10px;
  font-weight:500;
}
.bd-fullcalendar .fc-timegrid-slot{
  height:30px;
}
.bd-fullcalendar .fc-timegrid-slot-minor{
  border-top-style:dashed;
  border-top-color:#eef2f4;
}
.bd-fullcalendar .fc-timegrid-col.fc-day-today,
.bd-fullcalendar .fc-daygrid-day.fc-day-today{
  background:#f4f8fc;
}
.bd-fullcalendar .fc-timegrid-now-indicator-line{
  border-color:#E84B32;
  border-width:2px 0 0;
}
.bd-fullcalendar .fc-timegrid-now-indicator-arrow{
  border-color:#E84B32;
  border-top-color:transparent;
  border-bottom-color:transparent;
}
.bd-fullcalendar .fc-timegrid-event-harness{
  margin-right:1px;
}
.bd-fullcalendar .bd-fc-event{
  border-width:0 0 0 3px;
  border-style:solid;
  border-radius:7px;
  box-shadow:0 1px 2px rgba(16,36,62,.08);
  overflow:hidden;
  cursor:pointer;
}
.bd-fullcalendar .bd-fc-event:hover{
  box-shadow:0 3px 10px rgba(16,36,62,.13);
  filter:brightness(.99);
}
.bd-fullcalendar .bd-fc-conflict{
  outline:1px solid #E84B32;
  outline-offset:-1px;
}
.bd-fullcalendar .bd-fc-status-cancelled{
  opacity:.58;
  text-decoration:line-through;
}
.bd-fc-event-inner{
  min-width:0;
  padding:3px 5px 4px;
  overflow:hidden;
}
.bd-fc-event-time{
  display:flex;
  align-items:center;
  gap:4px;
  min-width:0;
  color:inherit;
  font-size:9.5px;
  line-height:1.2;
  font-weight:700;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.bd-fc-event-title{
  min-width:0;
  margin-top:1px;
  color:inherit;
  font-size:10.5px;
  line-height:1.22;
  font-weight:700;
  overflow:hidden;
  text-overflow:ellipsis;
}
.bd-fc-event-meta{
  min-width:0;
  margin-top:2px;
  color:#657482;
  font-size:8.8px;
  line-height:1.2;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.bd-fc-event-warning{
  flex:0 0 auto;
  width:14px;
  height:14px;
  border-radius:50%;
  background:#E84B32;
  color:#fff;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:9px;
  line-height:1;
}
.bd-fullcalendar .fc-daygrid-day-number{
  padding:7px 8px;
  color:#33475b;
  font-weight:600;
  text-decoration:none;
}
.bd-fullcalendar .fc-daygrid-day.fc-day-today .fc-daygrid-day-number{
  margin:5px 6px 0 0;
  padding:3px 7px;
  border-radius:999px;
  background:#123D73;
  color:#fff;
}
.bd-fullcalendar .fc-daygrid-event{
  margin:1px 4px;
}
.bd-fullcalendar .fc-daygrid-more-link{
  margin:2px 6px 5px;
  color:#123D73;
  font-size:10px;
  font-weight:700;
}
.bd-fullcalendar .fc-popover{
  border:1px solid #dfe7ed;
  border-radius:12px;
  box-shadow:0 12px 32px rgba(16,36,62,.15);
  overflow:hidden;
  z-index:35;
}
.bd-fullcalendar .fc-popover-header{
  background:#f6f9fb;
  color:#10243E;
  font-weight:700;
}
.bd-fullcalendar .fc-list{
  border:0;
}
.bd-fullcalendar .fc-list-day-cushion{
  background:#f5f8fa;
  padding:9px 12px;
}
.bd-fullcalendar .fc-list-day-text,
.bd-fullcalendar .fc-list-day-side-text{
  color:#10243E;
  text-decoration:none;
  font-weight:700;
}
.bd-fullcalendar .fc-list-event:hover td{
  background:#f8fbfd;
}
.bd-fullcalendar .fc-list-event-dot{
  border-color:#123D73;
}
.bd-fullcalendar .fc-list-event-time{
  color:#5c6b78;
  font-size:10.5px;
  white-space:nowrap;
}
.bd-fullcalendar .fc-list-event-title{
  font-weight:600;
}
.bd-fullcalendar .bd-fc-school-closed{
  background-image:repeating-linear-gradient(-45deg,rgba(232,75,50,.035),rgba(232,75,50,.035) 6px,transparent 6px,transparent 12px);
}
.bd-fullcalendar .bd-fc-school-altered{
  box-shadow:inset 0 3px 0 rgba(255,122,34,.25);
}
.calendar-engine-error{
  margin:14px;
  padding:14px;
  display:flex;
  align-items:flex-start;
  gap:10px;
  border:1px solid #f4c9c1;
  border-radius:10px;
  background:#fff7f5;
  color:#8b2d1e;
}
.calendar-engine-error i{font-size:17px}
.calendar-engine-error div{display:grid;gap:2px}
.calendar-engine-error span{font-size:11px;color:#7b5b55}

@media (max-width: 980px){
  .fullcalendar-engine-badge small{display:none}
  .bd-fullcalendar .fc{font-size:11px}
  .bd-fullcalendar .fc-col-header-cell-cushion{padding:9px 4px;font-size:9px}
}
@media (max-width: 720px){
  .fullcalendar-card{overflow-x:auto}
  .bd-fullcalendar{min-width:720px}
  .calendar-canvas[data-calendar-density="day"] .bd-fullcalendar,
  .calendar-canvas[data-calendar-density="agenda"] .bd-fullcalendar{min-width:0}
}

/* ========================================================================
   v130 — FullCalendar native surface
   FullCalendar now owns the visible calendar chrome, not only the grid.
   ======================================================================== */
.calendar-native-page-head{
  display:flex;align-items:flex-end;justify-content:space-between;gap:20px;
  padding:24px 28px 16px;
}
.calendar-native-page-head h1{margin:2px 0 3px;font-size:29px;line-height:1.05;color:#10243E}
.calendar-native-page-head p{margin:0;color:#71808d;font-size:12px}
.calendar-native-page-actions{display:flex;align-items:center;gap:8px}
.fullcalendar-native-workspace{display:grid;gap:12px;min-width:0}
.fc-native-filterbar{
  display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;
  padding:13px 15px;background:#fff;border:1px solid var(--line,#dfe7ed);border-radius:14px;
}
.fc-native-filter-group{display:flex;align-items:center;gap:6px}
.fc-native-category-group{margin-right:4px}
.fc-filter-chip,.fc-filter-reset{
  appearance:none;border:1px solid #d9e1e7;background:#fff;color:#455667;border-radius:8px;
  min-height:34px;padding:0 10px;font:inherit;font-size:11px;font-weight:650;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;
}
.fc-filter-chip b{font-size:9px;background:#edf1f4;border-radius:999px;padding:2px 5px}
.fc-filter-chip.active{background:#edf4fb;border-color:#9fb9d3;color:#123D73}
.fc-native-selects label{display:grid;gap:4px;color:#71808d;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.fc-native-selects select{height:34px;min-width:145px;border:1px solid #d9e1e7;border-radius:8px;background:#fff;padding:0 28px 0 9px;color:#24384c;font-size:11px}
.fc-native-health{margin-left:auto;display:flex;align-items:center;gap:9px;color:#6a7885;font-size:10px;white-space:nowrap}
.fc-native-health span{padding:6px 8px;background:#f6f8fa;border-radius:7px}.fc-native-health .warn{color:#a34b19;background:#fff4ec}
.fc-native-routine-toggle,.fc-native-routine-panel{padding:10px 12px;border:1px solid #e1e8ed;border-radius:12px;background:#fbfcfd}
.fc-native-routine-panel{display:grid;gap:8px}.fc-native-routine-panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px}
.fc-native-routine-panel-head>div{display:grid;gap:2px}.fc-native-routine-panel-head b{font-size:11px;color:#30465a}.fc-native-routine-panel-head span{font-size:10px;color:#74828e}
.fullcalendar-native-frame{
  min-width:0;padding:14px;background:#fff;border:1px solid #d9e1e7;border-radius:14px;
  box-shadow:0 1px 2px rgba(16,36,62,.04);
}
/* Let FullCalendar's own visual language show through. */
.bd-fullcalendar-native{--fc-classic-primary:#123D73;--fc-classic-primary-foreground:#fff;--fc-classic-event:#123D73;--fc-classic-event-contrast:#fff;--fc-classic-today:#eef5fb;--fc-classic-now:#e84b32;--fc-classic-border:#d9e1e7}
.bd-fullcalendar-native .fc{font-size:12px}
.bd-fullcalendar-native .fc-toolbar{gap:12px;margin-bottom:14px;align-items:center}
.bd-fullcalendar-native .fc-toolbar-title{font-size:20px;font-weight:700;color:#1b334b;letter-spacing:-.02em}
.bd-fullcalendar-native .fc-button{border-radius:7px;font-size:11px;font-weight:650;min-height:34px;padding:0 11px;box-shadow:none}
.bd-fullcalendar-native .fc-button-group{gap:2px}
.bd-fullcalendar-native .fc-button-group>.fc-button{border-radius:7px!important;margin:0!important}
.bd-fullcalendar-native .fc-button-active{box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)!important}
.bd-fullcalendar-native .fc-scrollgrid{border:1px solid #d9e1e7!important;border-radius:10px;overflow:hidden}
.bd-fullcalendar-native .fc-col-header-cell{background:#f7f9fb}
.bd-fullcalendar-native .fc-col-header-cell-cushion{padding:10px 6px!important;font-size:10px!important;letter-spacing:.03em;text-transform:none!important}
.bd-fullcalendar-native .fc-timegrid-slot{height:34px}
.bd-fullcalendar-native .fc-daygrid-day-frame{min-height:104px}
.bd-fullcalendar-native .fc-daygrid-day-number{font-size:11px}
/* Native event blocks: avoid the old custom-card look. */
.bd-fullcalendar-native .bd-fc-event{border-radius:5px;box-shadow:none;border-width:1px!important;padding:0}
.bd-fullcalendar-native .fc-event-main{padding:2px 4px;font-size:10px;line-height:1.25}
.bd-fullcalendar-native .fc-list{border:1px solid #d9e1e7;border-radius:10px;overflow:hidden}
@media(max-width:900px){
  .calendar-native-page-head{align-items:flex-start;padding:18px 18px 12px}.fc-native-health{width:100%;margin-left:0}.fullcalendar-native-frame{overflow-x:auto}.bd-fullcalendar-native{min-width:760px}
  .bd-fullcalendar-native .fc-toolbar{flex-wrap:wrap}.bd-fullcalendar-native .fc-toolbar-chunk:nth-child(2){order:-1;width:100%;display:flex;justify-content:center}
}
/* v62 compatibility selector: the old class is no longer mounted on the primary calendar. */
.calendar-page-head{min-width:0}

/* ============================================================
   v131 beta calendar rebuild — FullCalendar-first, minimal UI
   ============================================================ */
#tab-schedule{background:#f7f9fb}
.beta-calendar-shell{max-width:1500px;margin:0 auto;padding:18px 20px 34px}
.beta-calendar-filterbar{display:flex;align-items:end;gap:12px;padding:14px 16px;margin-bottom:12px;background:#fff;border:1px solid #e3e9ee;border-radius:14px;box-shadow:0 2px 8px rgba(16,36,62,.04)}
.beta-calendar-filter-copy{display:grid;gap:2px;margin-right:auto;min-width:220px}.beta-calendar-filter-copy b{font-size:18px;color:#17324d}.beta-calendar-filter-copy span{font-size:11.5px;color:#6c7c89}
.beta-calendar-filters{display:flex;align-items:end;gap:8px}.beta-calendar-filters label{display:grid;gap:4px;font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#758390}.beta-calendar-filters select{height:36px;min-width:150px;border:1px solid #d9e2e8;border-radius:9px;background:#fff;color:#21364a;padding:0 30px 0 10px;font-size:11.5px}
.beta-calendar-clear{height:36px;border:0;background:transparent;color:#667785;font-size:11px;font-weight:700;padding:0 8px;border-radius:8px;cursor:pointer}.beta-calendar-clear:hover{background:#f2f5f7;color:#17324d}
.beta-new-event{height:36px!important;background:#ff7a22!important;color:#10243e!important;border-color:#e66918!important}.beta-new-event:hover{background:#ff8b43!important;color:#10243e!important}
.beta-calendar-card{background:#fff;border:1px solid #e1e8ed;border-radius:15px;padding:14px;box-shadow:0 3px 12px rgba(16,36,62,.05);overflow:hidden}
.beta-fullcalendar{--fc-border-color:#e5eaee;--fc-page-bg-color:#fff;--fc-neutral-bg-color:#f7f9fb;--fc-today-bg-color:#f4f8fd;--fc-button-bg-color:#fff;--fc-button-border-color:#d9e2e8;--fc-button-text-color:#30465a;--fc-button-hover-bg-color:#f3f6f8;--fc-button-hover-border-color:#cbd7df;--fc-button-active-bg-color:#123d73;--fc-button-active-border-color:#123d73;--fc-button-active-text-color:#fff;--fc-event-border-color:transparent;--fc-small-font-size:.78em}
.beta-fullcalendar .fc-toolbar{gap:10px;margin-bottom:14px}.beta-fullcalendar .fc-toolbar-title{font-size:20px;font-weight:750;color:#17324d}.beta-fullcalendar .fc-button{box-shadow:none!important;border-radius:8px!important;font-size:11px!important;font-weight:700!important;padding:.48em .75em!important}.beta-fullcalendar .fc-button:hover{color:#17324d!important}.beta-fullcalendar .fc-button-active:hover,.beta-fullcalendar .fc-button-primary:not(:disabled).fc-button-active{color:#fff!important}.beta-fullcalendar .fc-col-header-cell-cushion{padding:9px 6px;color:#526574;font-size:11px}.beta-fullcalendar .fc-timegrid-slot-label-cushion{font-size:10px;color:#82909b}.beta-fullcalendar .fc-daygrid-day-number{font-size:11px;color:#586b7a;padding:7px}.beta-fullcalendar .fc-day-today .fc-daygrid-day-number{background:#123d73;color:#fff;border-radius:999px;min-width:25px;text-align:center;margin:4px}
.bd-beta-event{border-radius:7px!important;box-shadow:none!important;padding:0!important;cursor:pointer}.bd-beta-event:hover{filter:brightness(.98);box-shadow:0 2px 8px rgba(16,36,62,.12)!important}.bd-beta-session-complete{border-left-width:3px!important}.bd-beta-event-content{min-width:0;padding:4px 6px;display:grid;gap:1px}.bd-beta-event-content b{font-size:10.5px;line-height:1.18;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bd-beta-event-content small{font-size:9px;opacity:.78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bd-beta-event-top{display:flex;align-items:center;gap:4px;font-size:9px;line-height:1}.bd-beta-event-top i{font-size:9px}.bd-beta-event-time{font-weight:700}.beta-fullcalendar .fc-list-event:hover td{background:#f7fafc!important}.beta-fullcalendar .fc-list-event-title a{font-weight:700;color:#263d50}.beta-fullcalendar .fc-list-day-cushion{background:#f7f9fb}
.beta-event-modal-overlay{position:fixed;inset:0;z-index:12000;background:rgba(16,36,62,.38);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:18px}.beta-event-modal{width:min(560px,100%);max-height:min(760px,calc(100vh - 36px));overflow:auto;background:#fff;border-radius:18px;box-shadow:0 26px 80px rgba(16,36,62,.25);border:1px solid rgba(255,255,255,.7)}
.beta-event-modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px 12px;border-bottom:1px solid #edf1f4}.beta-event-modal-head>div{display:grid;gap:1px}.beta-event-modal-head span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#81909c}.beta-event-modal-head h2{font-size:19px;margin:0;color:#17324d}.beta-modal-close{width:34px;height:34px;border:0;background:#f3f6f8;border-radius:9px;color:#526675;cursor:pointer}.beta-modal-close:hover{background:#e8eef2;color:#17324d}
.beta-event-kind{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:12px 20px 0}.beta-event-kind button{height:38px;border:1px solid #dce4ea;background:#fff;color:#566979;border-radius:10px;font-size:11.5px;font-weight:750;cursor:pointer}.beta-event-kind button:hover{background:#f7f9fb;color:#17324d}.beta-event-kind button.active{border-color:#b8cee3;background:#edf4fb;color:#123d73}
.beta-event-body{display:grid;gap:11px;padding:15px 20px}.beta-field{display:grid;gap:5px}.beta-field label{font-size:10px;font-weight:800;color:#506473;text-transform:uppercase;letter-spacing:.035em}.beta-field label span{font-weight:500;text-transform:none;letter-spacing:0;color:#8a98a3}.beta-field input,.beta-field select,.beta-field textarea{width:100%;border:1px solid #d8e1e7;border-radius:9px;background:#fff;color:#20374a;padding:9px 10px;font:inherit;font-size:12px;outline:none}.beta-field input:focus,.beta-field select:focus,.beta-field textarea:focus{border-color:#8faecc;box-shadow:0 0 0 3px rgba(18,61,115,.08)}.beta-event-grid{display:grid;grid-template-columns:1.35fr 1fr .75fr;gap:8px}.beta-more-options{border:1px solid #e5eaee;border-radius:10px;background:#fafbfc;padding:0 10px}.beta-more-options summary{cursor:pointer;padding:9px 1px;font-size:11px;font-weight:700;color:#637685}.beta-repeat-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:0 0 9px;font-size:11px}.beta-repeat-row select,.beta-repeat-row input[type=date]{height:32px;border:1px solid #d8e1e7;border-radius:7px;background:#fff;font-size:11px}.beta-repeat-days{display:flex;gap:7px;flex-wrap:wrap;padding-bottom:9px;font-size:10.5px}.beta-event-modal-foot{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;background:rgba(255,255,255,.96);border-top:1px solid #edf1f4;backdrop-filter:blur(8px)}.beta-event-modal-foot .sm{min-width:90px;height:36px;border-radius:9px}.beta-save:hover{background:#214d80!important;color:#fff!important}.beta-cancel:hover{background:#f0f3f5!important;color:#30465a!important}.beta-form-msg{font-size:11px;color:#5d7180;min-height:14px}.beta-form-msg.error{color:#8b2d1e}.beta-conflict{display:flex;align-items:flex-start;gap:8px;border:1px solid #f1d3be;background:#fff7f1;color:#7a411e;border-radius:9px;padding:9px 10px;font-size:10.5px}.beta-conflict div{display:grid;gap:2px;flex:1}.beta-conflict button{border:0;background:#fff;border-radius:7px;padding:6px 8px;color:#8b491f;font-size:10px;font-weight:800;cursor:pointer}.beta-conflict button:hover{background:#f6e5d9;color:#6c3516}
@media(max-width:900px){.beta-calendar-filterbar{align-items:stretch;flex-wrap:wrap}.beta-calendar-filter-copy{width:100%}.beta-calendar-filters{flex:1;flex-wrap:wrap}.beta-calendar-filters label{flex:1;min-width:150px}.beta-calendar-filters select{width:100%;min-width:0}.beta-fullcalendar .fc-toolbar{flex-wrap:wrap}.beta-fullcalendar .fc-toolbar-chunk:nth-child(2){order:-1;width:100%;text-align:left}.beta-event-grid{grid-template-columns:1fr 1fr}.beta-event-grid .beta-field:last-child{grid-column:1/-1}}
@media(max-width:560px){.beta-calendar-shell{padding:10px 8px 24px}.beta-calendar-card{padding:8px;border-radius:12px}.beta-calendar-filterbar{padding:11px}.beta-new-event{width:100%;justify-content:center}.beta-fullcalendar .fc-toolbar-chunk:last-child{width:100%;display:flex}.beta-fullcalendar .fc-toolbar-chunk:last-child .fc-button-group{display:flex;width:100%}.beta-fullcalendar .fc-toolbar-chunk:last-child .fc-button{flex:1}.beta-event-modal-overlay{align-items:flex-end;padding:0}.beta-event-modal{width:100%;max-height:92vh;border-radius:18px 18px 0 0}.beta-event-grid{grid-template-columns:1fr 1fr}.beta-event-grid .beta-field:first-child{grid-column:1/-1}}

/* v132 — FullCalendar Standard feature expansion */
.beta-calendar-notice{display:none;margin:-2px 0 10px;padding:9px 12px;border:1px solid #cfe1ee;border-radius:9px;background:#f4f9fc;color:#31546d;font-size:11px;font-weight:650}
.beta-calendar-notice.show{display:block}.beta-calendar-notice.error{border-color:#f0c7c2;background:#fff5f3;color:#9b342a}
.beta-calendar-filters label:first-child select{min-width:150px}
.beta-fullcalendar .fc-multimonth{border:0!important}.beta-fullcalendar .fc-multimonth-month{border:1px solid #e1e8ed;border-radius:10px;overflow:hidden;background:#fff}
.beta-fullcalendar .fc-multimonth-title{font-size:12px;font-weight:750;color:#30465a;padding:8px}
.beta-fullcalendar .fc-daygrid-week-number{font-size:9px;color:#8b98a3;background:#f7f9fb}
.beta-fullcalendar .fc-event-resizer{opacity:.65}
.beta-fullcalendar .fc-event-draggable{cursor:grab}.beta-fullcalendar .fc-event-dragging{cursor:grabbing;opacity:.82}
@media(max-width:760px){.beta-fullcalendar .fc-toolbar-chunk:last-child .fc-button-group .fc-multiMonthYear-button{display:none}.beta-calendar-filters label:first-child{flex-basis:100%}}

/* ============================================================
   v133 — FullCalendar interaction + detail polish
   ============================================================ */
.beta-calendar-options-btn{height:36px;border:1px solid #d9e2e8;background:#fff;color:#42586b;border-radius:9px;padding:0 10px;font-size:11px;font-weight:750;cursor:pointer;white-space:nowrap}.beta-calendar-options-btn:hover{background:#f3f6f8;color:#17324d;border-color:#cbd7df}
.beta-calendar-options-popover{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:-3px 0 12px;padding:11px 13px;background:#fff;border:1px solid #dfe7ec;border-radius:11px;box-shadow:0 5px 18px rgba(16,36,62,.07);font-size:11px;color:#4b6070}.beta-calendar-options-popover.hidden{display:none}.beta-calendar-options-popover>label{display:flex;align-items:center;gap:6px;font-weight:650;cursor:pointer}.beta-calendar-options-popover input[type=checkbox]{accent-color:#123d73}.beta-options-jump{display:flex;align-items:center;gap:6px;margin-left:auto}.beta-options-jump span{font-weight:750;color:#647786}.beta-options-jump input{height:32px;border:1px solid #d9e2e8;border-radius:8px;padding:0 8px;color:#30465a}.beta-options-jump button{height:32px;border:1px solid #cbd7df;border-radius:8px;background:#fff;color:#123d73;font-weight:800;padding:0 10px;cursor:pointer}.beta-options-jump button:hover{background:#f2f6fa}
.beta-calendar-detail-overlay{z-index:12020}.beta-calendar-detail{width:min(470px,100%);max-height:calc(100vh - 36px);overflow:auto;background:#fff;border-radius:18px;box-shadow:0 26px 80px rgba(16,36,62,.25);border:1px solid rgba(255,255,255,.7)}.beta-calendar-detail-body{padding:18px 20px;display:grid;gap:13px}.beta-detail-status{width:max-content;display:flex;align-items:center;gap:6px;border-radius:999px;padding:5px 9px;background:#edf4fb;color:#123d73;font-size:10px;font-weight:800;text-transform:capitalize}.beta-detail-status.complete{background:#eef8e8;color:#426d20}.beta-detail-when{font-size:13px;font-weight:750;color:#263e52}.beta-calendar-detail dl{margin:0;display:grid;gap:0;border:1px solid #e7edf1;border-radius:11px;overflow:hidden}.beta-calendar-detail dl>div{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:9px 11px;border-bottom:1px solid #edf1f4}.beta-calendar-detail dl>div:last-child{border-bottom:0}.beta-calendar-detail dt{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.035em;color:#84929d}.beta-calendar-detail dd{margin:0;font-size:11.5px;color:#30465a;font-weight:650;text-transform:none}.beta-calendar-detail .beta-event-modal-foot{position:static}
.beta-fullcalendar .fc-popover{border:1px solid #dce5eb!important;border-radius:11px!important;box-shadow:0 14px 38px rgba(16,36,62,.15)!important;overflow:hidden}.beta-fullcalendar .fc-popover-header{background:#f7f9fb!important;padding:8px 10px!important;color:#30465a}.beta-fullcalendar .fc-popover-body{padding:8px!important}.beta-fullcalendar .fc-more-link{font-weight:750;color:#123d73}.beta-fullcalendar .fc-more-link:hover{text-decoration:none;background:#edf4fb;border-radius:5px}
@media(max-width:760px){.beta-calendar-options-popover{align-items:stretch}.beta-options-jump{margin-left:0;width:100%}.beta-options-jump input{flex:1;min-width:0}}
@media(max-width:560px){.beta-calendar-options-btn{flex:1}.beta-calendar-detail-overlay{align-items:flex-end;padding:0}.beta-calendar-detail{width:100%;max-height:92vh;border-radius:18px 18px 0 0}.beta-calendar-detail dl>div{grid-template-columns:95px 1fr}}

/* ============================================================
   v134 — Schedule-X prototype
   Schedule-X owns the calendar surface; BehaviorDash only wraps it.
   ============================================================ */
.sx-bd-shell{min-width:0;width:100%}
.sx-bd-topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:12px;padding:2px 0}
.sx-bd-title span{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#6b7b8c;margin-bottom:4px}
.sx-bd-title h1{margin:0;color:#10243e;font-size:30px;line-height:1.08}
.sx-bd-title p{margin:5px 0 0;color:#6b7b8c;font-size:13px}
.sx-bd-filters{display:flex;align-items:flex-end;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.sx-bd-filters>label:not(.sx-bd-check){display:flex;flex-direction:column;gap:4px;min-width:150px}
.sx-bd-filters label>span{font-size:10px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:#728094}
.sx-bd-filters select{height:36px;border:1px solid #d8e0e8;border-radius:9px;background:#fff;color:#10243e;padding:0 30px 0 10px;font:inherit;font-size:12px;outline:none}
.sx-bd-filters select:focus{border-color:#9eb6cf;box-shadow:0 0 0 3px rgba(18,61,115,.08)}
.sx-bd-check{height:36px;display:flex;align-items:center;gap:7px;padding:0 10px;border:1px solid #d8e0e8;border-radius:9px;background:#fff;white-space:nowrap}
.sx-bd-check input{accent-color:#123d73;margin:0}
.sx-bd-check span{font-size:11px!important;letter-spacing:0!important;text-transform:none!important;color:#405266!important}
.sx-bd-new,.sx-bd-clear{height:36px;border-radius:9px;padding:0 13px;font-weight:700;font-size:12px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.sx-bd-new{background:#ff7a22;border:1px solid #ff7a22;color:#fff}
.sx-bd-new:hover,.sx-bd-new:focus-visible{background:#e96816;border-color:#e96816;color:#fff!important}
.sx-bd-clear{background:#fff;border:1px solid #d8e0e8;color:#405266}
.sx-bd-clear:hover,.sx-bd-clear:focus-visible{background:#f5f8fb;border-color:#b9c7d5;color:#10243e!important}
.sx-bd-help{display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:8px 11px;background:#f5f8fb;border:1px solid #e1e7ed;border-radius:10px;color:#5c6e81;font-size:11px}
.sx-bd-help i{color:#123d73;font-size:13px}.sx-bd-help b{color:#32475c}
.sx-bd-card{background:#fff;border:1px solid #dfe5eb;border-radius:14px;box-shadow:0 5px 18px rgba(16,36,62,.05);overflow:hidden;min-width:0}
.sx-bd-calendar{height:min(760px,calc(100vh - 225px));min-height:580px;width:100%;min-width:0;background:#fff}
.sx-bd-loading{height:100%;min-height:580px;display:flex;align-items:center;justify-content:center;gap:12px;color:#617286}
.sx-bd-loading i{font-size:22px;color:#123d73;animation:sxBdSpin 1s linear infinite}.sx-bd-loading div{display:flex;flex-direction:column;gap:2px}.sx-bd-loading b{color:#10243e}.sx-bd-loading span{font-size:12px}
@keyframes sxBdSpin{to{transform:rotate(360deg)}}
.sx-bd-error{min-height:420px;display:flex!important;align-items:center;justify-content:center;gap:12px}.sx-bd-error small{display:block;margin-top:5px;color:#7b8794}

/* Brand Schedule-X through documented variables, without rebuilding its UI. */
.sx-bd-card{
  --sx-color-primary:#123d73;
  --sx-color-on-primary:#ffffff;
  --sx-color-primary-container:#eaf1f9;
  --sx-color-on-primary-container:#10243e;
  --sx-color-secondary:#5f9428;
  --sx-color-on-secondary:#ffffff;
  --sx-color-secondary-container:#eef8e8;
  --sx-color-on-secondary-container:#315c16;
  --sx-color-tertiary:#ff7a22;
  --sx-color-on-tertiary:#ffffff;
  --sx-color-tertiary-container:#fff0e6;
  --sx-color-on-tertiary-container:#7b3100;
  --sx-color-surface:#ffffff;
  --sx-color-surface-dim:#f3f6f8;
  --sx-color-surface-bright:#ffffff;
  --sx-color-on-surface:#10243e;
  --sx-color-surface-container:#f5f8fb;
  --sx-color-surface-container-low:#f8fafc;
  --sx-color-surface-container-high:#edf2f6;
  --sx-color-background:#ffffff;
  --sx-color-on-background:#10243e;
  --sx-color-outline:#8090a1;
  --sx-color-outline-variant:#d7e0e8;
  --sx-color-shadow:#10243e;
  --sx-color-surface-tint:#123d73;
  --sx-internal-color-gray-ripple-background:#eaf1f9;
  --sx-internal-color-light-gray:#f8fafc;
  --sx-internal-color-text:#10243e;
}
.sx-bd-card .sx__calendar{border:0!important;border-radius:0!important;font-family:Poppins,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.sx-bd-card .sx__calendar-header{padding:12px 14px;border-bottom:1px solid #e3e8ed}
.sx-bd-card .sx__calendar-header button{font-family:inherit}
.sx-bd-card .sx__calendar-header button:hover,.sx-bd-card .sx__calendar-header button:focus-visible{color:inherit}
.sx-bd-card .sx__view-selection-item.is-selected{font-weight:700}
.sx-bd-card .sx__time-grid-event,.sx-bd-card .sx__month-grid-event,.sx-bd-card .sx__date-grid-event{box-shadow:none}
.sx-bd-card .bd-sx-complete{opacity:.95}
.sx-bd-card .bd-sx-history{font-weight:600}

@media(max-width:1050px){
  .sx-bd-topbar{align-items:flex-start;flex-direction:column}.sx-bd-filters{justify-content:flex-start;width:100%}.sx-bd-filters>label:not(.sx-bd-check){min-width:140px;flex:1}.sx-bd-calendar{height:min(720px,calc(100vh - 270px))}
}
@media(max-width:700px){
  .sx-bd-title h1{font-size:25px}.sx-bd-filters{display:grid;grid-template-columns:1fr 1fr}.sx-bd-filters>label:not(.sx-bd-check){min-width:0}.sx-bd-check{grid-column:1/-1}.sx-bd-new,.sx-bd-clear{justify-content:center}.sx-bd-help{align-items:flex-start}.sx-bd-card{border-radius:10px}.sx-bd-calendar{height:72vh;min-height:520px}
}

/* ============================================================
   v137 Schedule-X full-surface evaluation inside BehaviorDash
   Intentionally removes all legacy Schedule chrome.
   ============================================================ */
main.schedule-mode{
  max-width:none!important;
  padding:0!important;
  overflow:hidden;
}
#tab-schedule{
  margin:0!important;
  padding:0!important;
  width:100%;
  min-width:0;
}
#tab-schedule .sx-v137-stage{
  width:100%;
  height:calc(100vh - 56px);
  min-height:650px;
  background:#fff;
  overflow:hidden;
}
#tab-schedule .sx-v137-calendar{
  width:100%;
  height:100%;
  min-height:650px;
  background:#fff;
}
#tab-schedule .sx-v137-calendar>.sx__calendar{
  width:100%!important;
  height:100%!important;
  max-height:none!important;
  border:0!important;
  border-radius:0!important;
  font-family:Poppins,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  --sx-color-primary:#123D73;
  --sx-color-on-primary:#fff;
  --sx-color-primary-container:#E7F0FA;
  --sx-color-on-primary-container:#10243E;
  --sx-color-surface:#fff;
  --sx-color-surface-dim:#F5F7F9;
  --sx-color-surface-container:#F7F9FB;
  --sx-color-surface-container-low:#FAFBFC;
  --sx-color-surface-container-high:#EEF2F5;
  --sx-color-on-surface:#10243E;
  --sx-color-on-surface-variant:#5E6D7C;
  --sx-color-outline:#D8E0E7;
  --sx-color-outline-variant:#E6EBEF;
}
#tab-schedule .sx-v137-calendar .sx__calendar-header{
  padding:15px 18px!important;
  border-bottom:1px solid #E3E9EE!important;
  background:#fff!important;
}
#tab-schedule .sx-v137-calendar .sx__calendar-header-content{
  gap:12px!important;
}
#tab-schedule .sx-v137-calendar button{
  font-family:inherit!important;
}
#tab-schedule .sx-v137-calendar .sx__time-grid-event,
#tab-schedule .sx-v137-calendar .sx__month-grid-event,
#tab-schedule .sx-v137-calendar .sx__date-grid-event{
  border-radius:7px!important;
  box-shadow:0 1px 2px rgba(16,36,62,.08)!important;
}
#tab-schedule .sx-v137-calendar .sx__event-modal{
  font-family:inherit!important;
  border-radius:14px!important;
  box-shadow:0 20px 48px rgba(16,36,62,.18)!important;
}
#tab-schedule .sx-bd-loading{
  min-height:100%!important;
}
@media(max-width:800px){
  #tab-schedule .sx-v137-stage{height:calc(100vh - 54px);min-height:580px}
  #tab-schedule .sx-v137-calendar{min-height:580px}
}
/* v139 — immersive Schedule-X in-app product demo */
#tab-schedule{padding:0!important;overflow:hidden;background:#fff}
#tab-schedule .sx-v139-stage{height:calc(100vh - 54px);min-height:620px;width:100%;position:relative;background:#fff;overflow:hidden}
#tab-schedule .sx-v139-calendar{height:100%;min-height:620px;width:100%;background:#fff}
#tab-schedule .sx-v139-calendar>.sx__calendar{height:100%!important;border:0!important;border-radius:0!important;font-family:Poppins,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;--sx-color-primary:#123D73;--sx-color-on-primary:#fff;--sx-color-primary-container:#e8f0f8;--sx-color-on-primary-container:#10243e}
#tab-schedule .sx-v139-calendar .sx__calendar-header{position:relative;padding:14px 18px!important;border-bottom:1px solid #e3e8ed!important;background:#fff!important;gap:8px!important}
#tab-schedule .sx-v139-calendar .sx__calendar-header-content{min-width:0}
#tab-schedule .sx-v139-calendar .sx__calendar-header button{font-family:inherit!important;border-radius:9px!important}
#tab-schedule .sx-v139-calendar .sx__calendar-header button:hover,#tab-schedule .sx-v139-calendar .sx__calendar-header button:focus-visible{color:inherit}
#tab-schedule .sx-v139-calendar .sx__time-grid-event,#tab-schedule .sx-v139-calendar .sx__month-grid-event,#tab-schedule .sx-v139-calendar .sx__date-grid-event{border-radius:7px!important;box-shadow:0 1px 2px rgba(16,36,62,.05)!important}
#tab-schedule .sx-v139-calendar .sx__event-modal{font-family:Poppins,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;border-radius:14px!important;box-shadow:0 18px 48px rgba(16,36,62,.20)!important}
#tab-schedule .sx-v139-new{margin-left:auto!important;height:36px!important;padding:0 13px!important;border:1px solid #ff7a22!important;background:#ff7a22!important;color:#fff!important;border-radius:9px!important;font-weight:700!important;font-size:12px!important;display:inline-flex!important;align-items:center!important;gap:6px!important;box-shadow:0 2px 8px rgba(255,122,34,.16)!important;cursor:pointer}
#tab-schedule .sx-v139-new:hover,#tab-schedule .sx-v139-new:focus-visible{background:#e96816!important;border-color:#e96816!important;color:#fff!important}
.sx-v139-backdrop{position:fixed;inset:0;z-index:10000;background:rgba(16,36,62,.34);backdrop-filter:blur(3px);display:grid;place-items:center;padding:24px}
.sx-v139-dialog{width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;background:#fff;border-radius:18px;box-shadow:0 24px 80px rgba(16,36,62,.28);border:1px solid rgba(16,36,62,.10)}
.sx-v139-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px 14px;border-bottom:1px solid #e8edf2}
.sx-v139-eyebrow{display:block;color:#6e7d8e;font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;margin-bottom:4px}.sx-v139-dialog-head h2{margin:0;color:#10243e;font-size:22px;line-height:1.2}.sx-v139-icon-btn{width:34px;height:34px;border:1px solid #dbe3ea;border-radius:9px;background:#fff;color:#536579;display:grid;place-items:center;cursor:pointer}.sx-v139-icon-btn:hover{background:#f5f8fb;color:#10243e}
.sx-v139-form{padding:18px 22px 20px}.sx-v139-segment{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}.sx-v139-segment label{cursor:pointer}.sx-v139-segment input{position:absolute;opacity:0;pointer-events:none}.sx-v139-segment span{height:42px;border:1px solid #dbe3ea;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:7px;color:#526376;font-size:12px;font-weight:700;background:#fff}.sx-v139-segment input:checked+span{border-color:#123d73;background:#edf3f9;color:#123d73;box-shadow:inset 0 0 0 1px #123d73}.sx-v139-field{display:flex;flex-direction:column;gap:5px}.sx-v139-field>span{font-size:11px;font-weight:750;color:#495d70}.sx-v139-field small{font-weight:500;color:#8a96a2}.sx-v139-field input,.sx-v139-field select,.sx-v139-field textarea{width:100%;border:1px solid #d7e0e8;border-radius:10px;background:#fff;color:#10243e;font:inherit;font-size:13px;padding:9px 10px;outline:none;box-sizing:border-box}.sx-v139-field input,.sx-v139-field select{height:40px}.sx-v139-field textarea{resize:vertical;min-height:74px}.sx-v139-field input:focus,.sx-v139-field select:focus,.sx-v139-field textarea:focus{border-color:#8ba5bf;box-shadow:0 0 0 3px rgba(18,61,115,.08)}.sx-v139-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}.sx-v139-wide{width:100%}.sx-v139-dialog-foot{display:flex;justify-content:flex-end;gap:9px;margin-top:18px;padding-top:16px;border-top:1px solid #edf1f4}.sx-v139-primary,.sx-v139-secondary{height:38px;border-radius:9px;padding:0 14px;font:inherit;font-size:12px;font-weight:750;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.sx-v139-primary{background:#123d73;color:#fff;border:1px solid #123d73}.sx-v139-primary:hover{background:#0d315e;color:#fff}.sx-v139-secondary{background:#fff;color:#4b5f72;border:1px solid #d8e1e8}.sx-v139-secondary:hover{background:#f5f8fb;color:#10243e}
@media(max-width:720px){#tab-schedule .sx-v139-stage{height:calc(100vh - 54px);min-height:560px}.sx-v139-backdrop{padding:10px}.sx-v139-dialog{width:100%;max-height:calc(100vh - 20px);border-radius:14px}.sx-v139-dialog-head,.sx-v139-form{padding-left:16px;padding-right:16px}.sx-v139-segment{grid-template-columns:1fr}.sx-v139-grid{grid-template-columns:1fr}.sx-v139-new span{display:none}.sx-v139-new{width:36px!important;padding:0!important;justify-content:center!important}}

/* ========================================================================
   v149 — EventCalendar full-pane viewport containment
   EventCalendar keeps its native UI. BehaviorDash only gives the single
   calendar mount a definite pane to fill. Unlike the standalone vkurko
   demo, Schedule must not use fixed 600/700/800px heights or a 1024px max
   width because the application already owns a sidebar + topbar viewport.
   ======================================================================== */
.main-col.schedule-mode-shell{height:100vh;height:100dvh;min-height:0;overflow:hidden}
.main-col.schedule-mode-shell>.topbar{flex:0 0 auto}
main.schedule-mode{max-width:none!important;margin:0!important;padding:0!important;overflow:hidden;display:flex;flex:1 1 auto;height:auto;min-height:0}
main.schedule-mode>#tab-schedule{display:flex;flex:1 1 auto;height:100%;min-height:0;margin:0!important;padding:0!important;width:100%;min-width:0;overflow:hidden;background:#fff}
.ec-evaluation-stage{display:flex;flex:1 1 auto;width:100%;height:100%;min-height:0;min-width:0;overflow:hidden;background:#fff;padding:16px 24px 18px;box-sizing:border-box}
#event-calendar-root{display:flex;flex:1 1 auto;width:100%;height:100%;min-width:0;min-height:0;max-width:none}
#event-calendar-root>.ec{flex:1 1 auto;width:100%;height:100%!important;min-width:0;min-height:0}
#event-calendar-root>.ec>.ec-main{min-width:0;min-height:0}
.ec-evaluation-engine-error{margin:18px;padding:16px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;display:grid;gap:4px;color:#10243e}
.ec-evaluation-engine-error span{font-size:12px;color:#64748b}
@media(max-width:900px){
  .ec-evaluation-stage{padding:12px 14px 14px}
}
@media(max-width:575.98px){
  .ec-evaluation-stage{padding:8px 0 10px}
  #event-calendar-root{font-size:12px}
}
/* v150 — EventCalendar cross-view size lock
   Keep the native EventCalendar interface, but make every view occupy the same
   BehaviorDash Schedule viewport so Month/Week/Day/List/Resources/Timeline do
   not visually resize the workspace when the native view changes. */
#event-calendar-root>.ec{max-height:100%;overflow:hidden}
#event-calendar-root>.ec>.ec-main{
  flex:1 1 0!important;
  width:100%;
  max-width:100%;
  min-width:0;
  min-height:0;
  scrollbar-gutter:stable;
}

/* ========================================================================
   v155 — BehaviorDash scheduling experience around EventCalendar
   EventCalendar remains the only calendar engine. These rules style only
   BehaviorDash-owned workflow UI (chooser, forms, details, context menus).
   ======================================================================== */
#event-calendar-root .ec-bdAdd{font-weight:700!important}
#event-calendar-root .ec-bdAdd:not(:disabled){background:#ff7a22!important;border-color:#ff7a22!important;color:#fff!important}
#event-calendar-root .ec-bdAdd:hover:not(:disabled){background:#e96816!important;border-color:#e96816!important;color:#fff!important}

.bd-cal-overlay{position:fixed;inset:0;z-index:12000;background:rgba(16,36,62,.28);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box;animation:bdCalFade .14s ease-out}
.bd-cal-dialog{width:min(650px,calc(100vw - 32px));max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);background:#fff;border:1px solid rgba(16,36,62,.10);border-radius:18px;box-shadow:0 26px 80px rgba(16,36,62,.24);overflow:hidden;color:#10243e;animation:bdCalRise .17s ease-out}
.bd-cal-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:20px 22px 16px;border-bottom:1px solid #e8edf1;background:#fff}
.bd-cal-dialog-head h2{margin:1px 0 4px;font-size:21px;line-height:1.2;color:#10243e;letter-spacing:-.015em}.bd-cal-dialog-head p{margin:0;font-size:11px;color:#71808e;line-height:1.45}
.bd-cal-eyebrow{display:block;font-size:9px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#6f8191;margin-bottom:3px}
.bd-cal-close{flex:0 0 34px;width:34px;height:34px;border:1px solid #dce4ea;border-radius:9px;background:#fff;color:#53687a;display:grid;place-items:center;cursor:pointer;font-size:14px}.bd-cal-close:hover,.bd-cal-close:focus-visible{background:#f4f7f9;color:#10243e;outline:0;border-color:#c9d5de}

.bd-cal-chooser{width:min(620px,calc(100vw - 32px))}.bd-cal-type-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px 18px 18px;background:#fbfcfd}
.bd-cal-type-card{appearance:none;border:1px solid #dde6ec;background:#fff;border-radius:13px;padding:10px;display:grid;grid-template-columns:54px minmax(0,1fr) 22px;gap:11px;align-items:center;text-align:left;cursor:pointer;min-height:78px;color:#10243e;transition:border-color .13s,box-shadow .13s,transform .13s}
.bd-cal-type-card:hover,.bd-cal-type-card:focus-visible{outline:0;border-color:#b9cbd9;box-shadow:0 6px 18px rgba(16,36,62,.08);transform:translateY(-1px)}
.bd-cal-type-art{width:54px;height:54px;border-radius:12px;background:linear-gradient(145deg,#eef6fb,#f8fbfd);border:1px solid #e0eaf0;display:grid;place-items:center;color:#123d73;font-size:22px;overflow:hidden}.bd-cal-type-art img{width:100%;height:100%;object-fit:cover}.bd-cal-type-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.bd-cal-type-copy b{font-size:12.5px;color:#17324a}.bd-cal-type-copy small{font-size:9.7px;line-height:1.35;color:#7c8b98}.bd-cal-type-arrow{color:#a5b1ba;font-size:12px}

.bd-cal-form-dialog{width:min(690px,calc(100vw - 32px));display:flex;flex-direction:column}.bd-cal-form{display:flex;flex-direction:column;min-height:0}.bd-cal-form-scroll{padding:16px 20px 4px;overflow:auto;overscroll-behavior:contain;min-height:0}.bd-cal-section{padding:0 0 15px;margin:0 0 15px;border-bottom:1px solid #edf1f4}.bd-cal-section:last-of-type{margin-bottom:8px}.bd-cal-section-title{font-size:9px;font-weight:800;color:#84929e;letter-spacing:.07em;text-transform:uppercase;margin-bottom:9px}
.bd-cal-grid{display:grid;gap:10px;margin:10px 0}.bd-cal-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.bd-cal-grid.three{grid-template-columns:1.2fr .9fr .9fr}.bd-cal-field{display:flex;flex-direction:column;gap:5px;min-width:0;margin:9px 0}.bd-cal-field>span,.bd-cal-mini-label{font-size:10.5px;font-weight:750;color:#455a6d}.bd-cal-field>span small{font-weight:500;color:#8a98a4}.bd-cal-field>span em{font-style:normal;font-size:8px;color:#9b5b42;text-transform:uppercase;letter-spacing:.04em;margin-left:4px}
.bd-cal-field input,.bd-cal-field select,.bd-cal-field textarea{box-sizing:border-box;width:100%;border:1px solid #d5dfe7;border-radius:9px;background:#fff;color:#10243e;font:inherit;font-size:12px;outline:0;transition:border-color .12s,box-shadow .12s}.bd-cal-field input,.bd-cal-field select{height:38px;padding:0 10px}.bd-cal-field textarea{min-height:68px;resize:vertical;padding:9px 10px;line-height:1.4}.bd-cal-field input:focus,.bd-cal-field select:focus,.bd-cal-field textarea:focus{border-color:#91abc1;box-shadow:0 0 0 3px rgba(18,61,115,.08)}
.bd-all-day-field{justify-content:flex-end}.bd-cal-toggle{height:38px;border:1px solid #d5dfe7;border-radius:9px;background:#fff;color:#71808d;padding:0 10px;display:flex;align-items:center;gap:8px;font:inherit;font-size:11px;font-weight:700;cursor:pointer}.bd-cal-toggle>span{width:27px;height:16px;border-radius:999px;background:#cbd5dd;position:relative;transition:background .12s}.bd-cal-toggle>span:after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:#fff;left:2px;top:2px;box-shadow:0 1px 2px rgba(0,0,0,.15);transition:transform .12s}.bd-cal-toggle.on{border-color:#b9d0e2;color:#123d73;background:#f6faff}.bd-cal-toggle.on>span{background:#123d73}.bd-cal-toggle.on>span:after{transform:translateX(11px)}
.bd-cal-form-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 20px 16px;border-top:1px solid #e9eef2;background:#fff}.bd-cal-form-foot>div{display:flex;align-items:center;gap:8px}.bd-cal-btn{height:37px;border-radius:9px;padding:0 13px;border:1px solid transparent;font:inherit;font-size:11px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer}.bd-cal-btn.primary{background:#123d73;border-color:#123d73;color:#fff}.bd-cal-btn.primary:hover{background:#0d315e}.bd-cal-btn.secondary{background:#fff;border-color:#d5dfe7;color:#4d6072}.bd-cal-btn.secondary:hover{background:#f5f8fa;color:#10243e}.bd-cal-btn.danger{background:#b93d32;border-color:#b93d32;color:#fff}.bd-cal-btn.danger-ghost{background:#fff;border-color:#ecd1ce;color:#a53f37}.bd-cal-btn.danger-ghost:hover{background:#fff5f4}.bd-cal-form-error{display:none;margin:0 20px 10px;padding:8px 10px;border:1px solid #efc7c3;border-radius:8px;background:#fff5f4;color:#9f3f37;font-size:10.5px}.bd-cal-form-error.show{display:block}

.bd-combo-trigger{height:38px;width:100%;border:1px solid #d5dfe7;border-radius:9px;background:#fff;color:#10243e;padding:0 9px 0 10px;font:inherit;font-size:11.5px;display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;cursor:pointer}.bd-combo-trigger>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bd-combo-trigger .placeholder{color:#98a5af}.bd-combo-trigger i{color:#8795a1;font-size:10px}.bd-combo-trigger:focus-visible{outline:0;border-color:#91abc1;box-shadow:0 0 0 3px rgba(18,61,115,.08)}
.bd-cal-combo-pop{position:fixed;z-index:13050;background:#fff;border:1px solid #dce5eb;border-radius:11px;box-shadow:0 14px 38px rgba(16,36,62,.18);overflow:hidden;max-height:min(350px,calc(100dvh - 20px));display:flex;flex-direction:column}.bd-cal-combo-search{height:42px;display:flex;align-items:center;gap:7px;padding:0 10px;border-bottom:1px solid #e8edf1}.bd-cal-combo-search i{color:#8796a2}.bd-cal-combo-search input{width:100%;border:0!important;box-shadow:none!important;outline:0;font:inherit;font-size:11px;color:#10243e;background:transparent}.bd-cal-combo-list{overflow:auto;padding:5px}.bd-cal-combo-list button{width:100%;min-height:44px;border:0;border-radius:8px;background:#fff;padding:6px 8px;display:grid;grid-template-columns:30px minmax(0,1fr) 18px;gap:8px;align-items:center;text-align:left;color:#263f54;cursor:pointer}.bd-cal-combo-list button:hover,.bd-cal-combo-list button.active{background:#f2f6f9}.bd-cal-combo-list button[aria-selected=true]{background:#eef5fb}.bd-cal-combo-list button>span:nth-child(2){display:flex;flex-direction:column;min-width:0}.bd-cal-combo-list b{font-size:10.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bd-cal-combo-list small{font-size:8.8px;color:#85939f}.bd-cal-combo-list button>i{color:#123d73;font-size:12px}.bd-cal-combo-avatar{width:28px;height:28px;border-radius:50%;background:#e8f0f7;color:#123d73;display:grid!important;place-items:center;font-size:8.5px!important;font-weight:800}.bd-cal-combo-empty{padding:16px;text-align:center;color:#8a98a3;font-size:10px}.bd-cal-combo-foot{padding:6px 8px;border-top:1px solid #edf1f4;text-align:right}.bd-cal-combo-foot button{height:30px;border:0;border-radius:7px;background:#123d73;color:#fff;font:inherit;font-size:10px;font-weight:750;padding:0 11px;cursor:pointer}

.bd-cal-inline-swatches,.bd-cal-swatches{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding-top:2px}.bd-cal-swatch{width:24px;height:24px;border-radius:50%;border:2px solid #fff;background:var(--swatch);box-shadow:0 0 0 1px rgba(16,36,62,.14);cursor:pointer;position:relative}.bd-cal-swatch:hover{transform:scale(1.06)}.bd-cal-swatch.selected{box-shadow:0 0 0 2px #fff,0 0 0 4px #123d73}.bd-cal-swatch.selected:after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:10px;font-weight:900;text-shadow:0 1px 2px rgba(0,0,0,.25)}

.bd-cal-custom-repeat{margin-top:8px;padding:10px;border:1px solid #e1e8ed;border-radius:10px;background:#f8fafc;display:grid;gap:10px}.bd-cal-repeat-every{display:grid;grid-template-columns:auto 56px 90px;align-items:center;gap:7px;color:#53687a;font-size:10px}.bd-cal-repeat-every input,.bd-cal-repeat-every select{height:32px!important}.bd-cal-weekdays{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}.bd-cal-weekdays button{width:34px;height:30px;border:1px solid #d4dee6;border-radius:8px;background:#fff;color:#617486;font:inherit;font-size:9px;font-weight:700;cursor:pointer}.bd-cal-weekdays button.selected{background:#eaf2f9;border-color:#9db6ca;color:#123d73}.bd-cal-repeat-end{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:#617486;font-size:9.5px}.bd-cal-repeat-end>span{font-weight:750;color:#455a6d}.bd-cal-repeat-end label{display:flex;align-items:center;gap:4px}.bd-cal-repeat-end input[type=date]{width:132px;height:31px!important;padding:0 7px!important}.bd-specific-staff{margin-top:4px}

.bd-cal-menu{position:fixed;z-index:13020;width:226px;background:#fff;border:1px solid #dce5eb;border-radius:11px;box-shadow:0 16px 42px rgba(16,36,62,.19);padding:5px;animation:bdCalMenu .11s ease-out}.bd-cal-menu-head{padding:8px 8px 7px;border-bottom:1px solid #edf1f4;margin-bottom:3px;display:flex;flex-direction:column;gap:2px}.bd-cal-menu-head b{font-size:10.5px;color:#263e52;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bd-cal-menu-head small{font-size:8.5px;color:#8996a1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bd-cal-menu>button{width:100%;height:34px;border:0;border-radius:7px;background:#fff;color:#42586a;display:grid;grid-template-columns:22px 1fr;align-items:center;text-align:left;padding:0 8px;font:inherit;font-size:10.5px;font-weight:650;cursor:pointer}.bd-cal-menu>button:hover,.bd-cal-menu>button:focus-visible{outline:0;background:#f1f5f8;color:#10243e}.bd-cal-menu>button i{font-size:12px;color:#748695}.bd-cal-menu>button.danger{color:#a43f37}.bd-cal-menu>button.danger i{color:#b04a42}.bd-cal-menu-sep{height:1px;background:#edf1f4;margin:3px 5px}
.bd-cal-color-pop{position:fixed;z-index:13020;width:244px;background:#fff;border:1px solid #dce5eb;border-radius:11px;box-shadow:0 16px 42px rgba(16,36,62,.19);padding:11px}.bd-cal-color-pop-head{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}.bd-cal-color-pop-head b{font-size:11px;color:#263e52}.bd-cal-color-pop-head small{font-size:8.5px;color:#8795a1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.bd-cal-detail{position:fixed;z-index:12500;width:min(350px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;background:#fff;border:1px solid #dce5eb;border-radius:15px;box-shadow:0 20px 56px rgba(16,36,62,.22);animation:bdCalMenu .13s ease-out}.bd-cal-detail>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:15px 15px 10px}.bd-cal-detail h3{margin:5px 0 0;font-size:16px;color:#10243e;line-height:1.25}.bd-cal-detail-type{display:inline-flex;align-items:center;gap:5px;color:#63788a;font-size:8.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.bd-cal-detail-type.complete{color:#4e7b2c}.bd-cal-detail-body{padding:3px 15px 13px;display:grid;gap:8px}.bd-cal-detail-when,.bd-cal-detail-row{display:grid;grid-template-columns:19px minmax(0,1fr);gap:7px;align-items:start;color:#40586b;font-size:10.5px;line-height:1.45}.bd-cal-detail-when{font-weight:700;color:#263f54}.bd-cal-detail-when i,.bd-cal-detail-row>i{color:#80909d;margin-top:2px;text-align:center}.bd-cal-signed{margin-top:3px;padding:7px 9px;border-radius:8px;background:#eef7ea;color:#527932;font-size:9.5px;font-weight:700;display:flex;align-items:center;gap:6px}.bd-cal-detail>footer{display:flex;justify-content:flex-end;gap:7px;padding:10px 15px 14px;border-top:1px solid #edf1f4}.bd-cal-detail.mobile{left:0!important;right:0!important;bottom:0!important;top:auto!important;width:100%;max-height:82dvh;border-radius:18px 18px 0 0;border-left:0;border-right:0;border-bottom:0}

.bd-cal-confirm{width:min(390px,calc(100vw - 32px));padding:22px;text-align:center}.bd-cal-confirm-icon{width:46px;height:46px;margin:0 auto 10px;border-radius:50%;background:#fff0ee;color:#a94239;display:grid;place-items:center;font-size:19px}.bd-cal-confirm h3{margin:0 0 6px;font-size:17px}.bd-cal-confirm p{margin:0 auto 17px;max-width:310px;color:#71808e;font-size:10.5px;line-height:1.5}.bd-cal-confirm>div:last-child{display:flex;justify-content:center;gap:8px}
.bd-cal-results{width:min(500px,calc(100vw - 32px))}.bd-cal-results-body{padding:18px 20px}.bd-cal-result-check{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #dbead4;background:#f2f9ef;border-radius:11px;color:#4f762f}.bd-cal-result-check>i{font-size:22px}.bd-cal-result-check>div{display:flex;flex-direction:column}.bd-cal-result-check b{font-size:11px}.bd-cal-result-check span{font-size:9.5px;margin-top:2px}.bd-cal-results-body>p{font-size:10.5px;line-height:1.55;color:#6c7e8d;margin:13px 2px 0}.bd-cal-dialog-actions{display:flex;justify-content:flex-end;padding:12px 20px 16px;border-top:1px solid #edf1f4}

.bd-cal-toast{position:fixed;z-index:14000;left:50%;bottom:24px;transform:translate(-50%,12px);opacity:0;background:#10243e;color:#fff;border-radius:999px;padding:9px 13px;font-size:10.5px;font-weight:650;box-shadow:0 10px 30px rgba(16,36,62,.22);transition:opacity .16s,transform .16s;pointer-events:none}.bd-cal-toast.show{opacity:1;transform:translate(-50%,0)}.bd-cal-toast.error{background:#9f3f37}
.hidden{display:none!important}
@keyframes bdCalFade{from{opacity:0}to{opacity:1}}@keyframes bdCalRise{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}@keyframes bdCalMenu{from{opacity:0;transform:translateY(3px) scale(.985)}to{opacity:1;transform:none}}

@media(max-width:760px){
  .bd-cal-overlay{padding:10px;align-items:flex-end}.bd-cal-dialog{width:100%;max-height:92dvh;border-radius:18px 18px 0 0}.bd-cal-type-grid{grid-template-columns:1fr;padding:12px}.bd-cal-type-card{min-height:70px;grid-template-columns:48px minmax(0,1fr) 18px}.bd-cal-type-art{width:48px;height:48px}.bd-cal-form-dialog{max-height:94dvh}.bd-cal-form-scroll{padding:13px 15px 3px}.bd-cal-form-foot{padding:11px 15px 14px}.bd-cal-grid.three{grid-template-columns:1fr 1fr}.bd-cal-grid.three>.bd-cal-field:first-child{grid-column:1/-1}.bd-cal-form-error{margin-left:15px;margin-right:15px}.bd-cal-dialog-head{padding:16px 16px 13px}.bd-cal-dialog-head h2{font-size:19px}
}
@media(max-width:500px){
  .bd-cal-overlay{padding:0}.bd-cal-dialog{max-height:96dvh;border-radius:18px 18px 0 0}.bd-cal-grid.two,.bd-cal-grid.three{grid-template-columns:1fr}.bd-cal-grid.three>.bd-cal-field:first-child{grid-column:auto}.bd-cal-type-grid{gap:7px}.bd-cal-form-foot{align-items:stretch}.bd-cal-form-foot>div{flex:1}.bd-cal-form-foot .bd-cal-btn{flex:1}.bd-cal-repeat-every{grid-template-columns:1fr 52px 86px}.bd-cal-weekdays{gap:3px}.bd-cal-weekdays button{width:31px}.bd-cal-menu{width:min(230px,calc(100vw - 20px))}.bd-cal-combo-pop{max-width:calc(100vw - 20px)}
}

/* ========================================================================
   v156 — real scheduling controls + selection/color polish
   ======================================================================== */
/* EventCalendar's selection preview should read as a temporary selection,
   not a dark permanent appointment. Keep the native preview renderer but
   use a lighter blue and force its time/text to remain legible. */
#event-calendar-root .ec-preview{
  background:#6f9fc8!important;
  border-color:#6f9fc8!important;
  color:#fff!important;
  --ec-event-text-color:#fff!important;
}
#event-calendar-root .ec-preview .ec-event-time,
#event-calendar-root .ec-preview .ec-event-title,
#event-calendar-root .ec-preview .ec-event-body{color:#fff!important}

/* Swatches keep a fixed footprint. Selected state is inset so the circle no
   longer grows/warps or pushes neighboring colors around. */
.bd-cal-inline-swatches,.bd-cal-swatches{min-height:32px;gap:8px}
.bd-cal-swatch{
  box-sizing:border-box;
  width:26px;height:26px;min-width:26px;min-height:26px;
  border:2px solid #fff;
  border-radius:50%;
  box-shadow:0 0 0 1px rgba(16,36,62,.18);
  transform:none!important;
  transition:box-shadow .12s,filter .12s;
}
.bd-cal-swatch:hover{filter:brightness(.96)}
.bd-cal-swatch.selected{
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.95),0 0 0 2px #123d73!important;
}
.bd-cal-swatch.selected:after{font-size:11px;text-shadow:0 1px 2px rgba(0,0,0,.32)}
.bd-cal-color-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-top:2px}
.bd-cal-custom-color{
  min-height:34px;display:inline-flex;align-items:center;gap:7px;
  padding:4px 7px;border:1px solid #d7e0e8;border-radius:9px;background:#fff;
  color:#617486;font-size:9.5px;font-weight:700;box-sizing:border-box;
}
.bd-cal-custom-color.selected{border-color:#7899b5;box-shadow:0 0 0 2px rgba(18,61,115,.08)}
.bd-cal-custom-color>span{white-space:nowrap}
.bd-cal-custom-color input[type=color]{
  appearance:none;-webkit-appearance:none;width:27px;height:27px;padding:0;border:0;background:none;cursor:pointer;
}
.bd-cal-custom-color input[type=color]::-webkit-color-swatch-wrapper{padding:0}
.bd-cal-custom-color input[type=color]::-webkit-color-swatch{border:1px solid rgba(16,36,62,.16);border-radius:7px}
.bd-cal-custom-color input[type=color]::-moz-color-swatch{border:1px solid rgba(16,36,62,.16);border-radius:7px}
.bd-cal-custom-color input[type=text]{
  width:76px;height:27px!important;padding:0 7px!important;border:0!important;border-left:1px solid #e2e8ed!important;border-radius:0!important;
  box-shadow:none!important;font-family:ui-monospace,SFMono-Regular,Menlo,monospace!important;font-size:10px!important;text-transform:uppercase;
}
.bd-cal-color-pop .bd-cal-custom-color{margin:10px 12px 12px}

/* Multi-participant fields use a real native select to add staff, then show
   exactly who has been added underneath. No fabricated combobox data. */
.bd-cal-multi>select{width:100%;height:38px;border:1px solid #d5dfe7;border-radius:9px;background:#fff;color:#10243e;font:inherit;font-size:12px;padding:0 10px;outline:0}
.bd-cal-multi>select:focus{border-color:#91abc1;box-shadow:0 0 0 3px rgba(18,61,115,.08)}
.bd-cal-selected-staff{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px;min-height:18px;align-items:center}
.bd-cal-none-selected{font-size:9.5px;color:#92a0ab;font-weight:500}
.bd-cal-staff-chip{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:4px 5px 4px 8px;border:1px solid #dce5eb;border-radius:999px;background:#f7f9fb;color:#40576b;font-size:9.5px;font-weight:650}
.bd-cal-staff-chip button{width:20px;height:20px;border:0;border-radius:50%;background:transparent;color:#7a8995;display:grid;place-items:center;padding:0;cursor:pointer}
.bd-cal-staff-chip button:hover{background:#e9eef2;color:#10243e}

@media(max-width:640px){
  .bd-cal-color-controls{align-items:flex-start;flex-direction:column;gap:9px}
  .bd-cal-custom-color{width:100%;justify-content:flex-start}
}
.bd-cal-swatch{
  padding:0!important;
  margin:0!important;
  flex:0 0 26px!important;
  inline-size:26px!important;
  block-size:26px!important;
  min-inline-size:26px!important;
  max-inline-size:26px!important;
  min-block-size:26px!important;
  max-block-size:26px!important;
  line-height:0!important;
  aspect-ratio:1/1;
}

/* ========================================================================
   v157 — Calendar interaction-state isolation
   The legacy app-wide button:hover rule uses the dark brand fill. Calendar
   chooser/utility controls are intentionally light controls and must not
   inherit that fill. Keep these rules scoped to the BehaviorDash calendar
   interaction layer so unrelated Admin buttons are unchanged.
   ======================================================================== */
.bd-cal-overlay .bd-cal-type-card,
.bd-cal-overlay .bd-cal-type-card:hover:not(:disabled),
.bd-cal-overlay .bd-cal-type-card:focus-visible,
.bd-cal-overlay .bd-cal-type-card:active{
  background:#fff!important;
  color:#10243e!important;
}
.bd-cal-overlay .bd-cal-type-card:hover:not(:disabled),
.bd-cal-overlay .bd-cal-type-card:focus-visible{
  background:#f6faff!important;
  border-color:#9db9cf!important;
  box-shadow:0 6px 18px rgba(16,36,62,.08),0 0 0 2px rgba(18,61,115,.05)!important;
}
.bd-cal-overlay .bd-cal-type-card:active{
  background:#edf5fb!important;
  border-color:#86a9c5!important;
  transform:translateY(0)!important;
}
.bd-cal-overlay .bd-cal-type-card .bd-cal-type-copy b{color:#17324a!important}
.bd-cal-overlay .bd-cal-type-card .bd-cal-type-copy small{color:#718494!important}
.bd-cal-overlay .bd-cal-type-card .bd-cal-type-arrow{color:#8fa3b2!important}
.bd-cal-overlay .bd-cal-type-card:hover .bd-cal-type-art,
.bd-cal-overlay .bd-cal-type-card:focus-visible .bd-cal-type-art{
  background:linear-gradient(145deg,#e9f3fb,#f7fbfe)!important;
  border-color:#cfdfeb!important;
  color:#123d73!important;
}

/* These are buttons too, but their own visual identity must survive the
   app-wide button:hover rule. */
.bd-cal-overlay .bd-cal-close:hover:not(:disabled),
.bd-cal-overlay .bd-cal-close:focus-visible{
  background:#f4f7f9!important;
  color:#10243e!important;
  border-color:#c9d5de!important;
}
.bd-cal-overlay .bd-cal-toggle:hover:not(:disabled){
  background:#f6f9fb!important;
  color:#123d73!important;
  border-color:#c6d6e1!important;
}
.bd-cal-overlay .bd-cal-toggle.on:hover:not(:disabled){background:#f2f8fd!important}
.bd-cal-overlay .bd-cal-weekdays button:hover:not(:disabled){
  background:#f3f7fa!important;
  color:#123d73!important;
  border-color:#b8cbd9!important;
}
.bd-cal-overlay .bd-cal-weekdays button.selected,
.bd-cal-overlay .bd-cal-weekdays button.selected:hover:not(:disabled){
  background:#eaf2f9!important;
  border-color:#9db6ca!important;
  color:#123d73!important;
}
.bd-cal-overlay .bd-cal-swatch,
.bd-cal-overlay .bd-cal-swatch:hover:not(:disabled),
.bd-cal-color-pop .bd-cal-swatch,
.bd-cal-color-pop .bd-cal-swatch:hover:not(:disabled){
  background:var(--swatch)!important;
  color:#fff!important;
}
.bd-cal-overlay .bd-cal-swatch:hover:not(:disabled),
.bd-cal-color-pop .bd-cal-swatch:hover:not(:disabled){filter:brightness(.94)!important}

/* EventCalendar's temporary drag/select event: visibly a preview, not a
   permanent dark-blue appointment. EventCalendar renders this as .ec-preview.
   Force every text node/icon in the preview to white because the engine's
   event text variable otherwise differs between views. */
#event-calendar-root .ec-event.ec-preview{
  background:#4b7fae!important;
  border-color:#3d709e!important;
  color:#fff!important;
  --ec-event-bg-color:#4b7fae!important;
  --ec-event-text-color:#fff!important;
  opacity:.88!important;
  box-shadow:0 0 0 1px rgba(255,255,255,.24) inset!important;
}
#event-calendar-root .ec-event.ec-preview,
#event-calendar-root .ec-event.ec-preview *{
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
#event-calendar-root .ec-event.ec-preview .ec-event-time,
#event-calendar-root .ec-event.ec-preview .ec-event-title,
#event-calendar-root .ec-event.ec-preview .ec-event-body{
  color:#fff!important;
  opacity:1!important;
}

/* v158 — recurrence is a first-class scheduling section, not a buried field */
.bd-cal-repeat-section{padding:0 0 16px!important}
.bd-cal-section-hint{margin:-4px 0 10px;color:#7a8996;font-size:10px;line-height:1.4}
.bd-cal-repeat-box{border:1px solid #dce5ec;border-radius:12px;background:#fbfcfd;padding:12px;display:grid;gap:6px}
.bd-cal-repeat-select{margin:0!important}
.bd-cal-repeat-select>span{font-weight:800;color:#405567}
.bd-cal-repeat-summary{font-size:9.5px;color:#7a8996;margin-top:-1px}
.bd-cal-custom-repeat{margin-top:6px!important;background:#fff!important}
.bd-cal-repeat-section .bd-cal-weekdays button:hover{background:#f4f7fa!important;border-color:#c7d5e0!important;color:#123d73!important}
.bd-cal-repeat-section .bd-cal-weekdays button.selected,.bd-cal-repeat-section .bd-cal-weekdays button.selected:hover{background:#eaf2f9!important;border-color:#9db6ca!important;color:#123d73!important}

/* ========================================================================
   v159 — Recurrence UI audit + occurrence-safety pass
   ======================================================================== */
.bd-cal-repeat-row-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  margin-bottom:7px;
}
.bd-cal-repeat-row-head small{font-size:9px;color:#8a98a4;font-weight:500}
.bd-cal-weekdays{
  display:grid!important;
  grid-template-columns:repeat(7,minmax(0,1fr))!important;
  gap:6px!important;
  width:100%;
}
.bd-cal-weekdays button{
  box-sizing:border-box!important;
  width:auto!important;min-width:0!important;height:36px!important;
  padding:0 4px!important;border-radius:9px!important;
  border:1px solid #d3dee7!important;background:#fff!important;
  color:#566b7d!important;font-size:10px!important;font-weight:750!important;
  letter-spacing:0!important;line-height:1!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  transition:background .12s,border-color .12s,color .12s,box-shadow .12s!important;
}
.bd-cal-overlay .bd-cal-weekdays button:hover:not(:disabled){
  background:#f4f8fb!important;border-color:#b9ccda!important;color:#123d73!important;
}
.bd-cal-overlay .bd-cal-weekdays button.selected,
.bd-cal-overlay .bd-cal-weekdays button.selected:hover:not(:disabled){
  background:#3788d8!important;border-color:#3788d8!important;color:#fff!important;
  box-shadow:0 0 0 2px rgba(55,136,216,.12)!important;
}
.bd-cal-repeat-end{gap:12px!important}
.bd-cal-repeat-until-wrap{display:inline-flex;align-items:center}
.bd-cal-repeat-until-wrap.hidden,.bd-cal-weekday-group.hidden{display:none!important}
.bd-cal-repeat-end input[type=date]{width:146px!important}
.bd-cal-repeat-locked{background:#f8fafc!important}
.bd-cal-repeat-locked-row{display:flex;align-items:flex-start;gap:10px;color:#52687a}
.bd-cal-repeat-locked-row>i{color:#6c8192;font-size:13px;margin-top:1px}
.bd-cal-repeat-locked-row>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.bd-cal-repeat-locked-row b{font-size:10.5px;color:#344d61}
.bd-cal-repeat-locked-row span{font-size:9.5px;line-height:1.4;color:#7c8c99}

@media(max-width:520px){
  .bd-cal-repeat-row-head{align-items:flex-start;flex-direction:column;gap:2px}
  .bd-cal-weekdays{gap:4px!important}
  .bd-cal-weekdays button{height:34px!important;font-size:9px!important;padding:0 2px!important}
  .bd-cal-repeat-end{align-items:flex-start!important}
  .bd-cal-repeat-until-wrap{width:100%}
  .bd-cal-repeat-end input[type=date]{width:100%!important}
}
.bd-cal-repeat-horizon{font-size:9px;line-height:1.4;color:#8a98a4;padding-top:1px}

/* ========================================================================
   v160 — completed-session preview + close-button placement
   Calendar result actions open the existing real session recap. Close
   controls are pinned to the actual top-right corner instead of depending
   on surrounding flex layout.
   ======================================================================== */
.bd-cal-dialog-head{position:relative;padding-right:66px}
.bd-cal-dialog-head>.bd-cal-close{position:absolute;top:16px;right:18px;z-index:2}
.bd-cal-detail>header{position:relative;padding-right:58px}
.bd-cal-detail>header>.bd-cal-close{position:absolute;top:12px;right:12px;z-index:2}
.sess-modal{position:relative}
.sess-modal .sm-head{padding-right:46px}
.sess-modal .sm-close{position:absolute;top:16px;right:16px;width:34px;height:34px;padding:0;border:1px solid #dce4ea;border-radius:9px;background:#fff;color:#53687a;display:grid;place-items:center;font-size:16px;line-height:1;z-index:2}
.sess-modal .sm-close:hover,.sess-modal .sm-close:focus-visible{background:#f4f7f9;color:#10243e;border-color:#c9d5de;outline:0}
@media(max-width:620px){
  .sess-modal .sm-close{top:12px;right:12px}
  .sess-modal .sm-head{padding-right:42px}
  .bd-cal-dialog-head>.bd-cal-close{top:12px;right:12px}
}

/* ========================================================================
   v161 — card-anchored close controls + completed-detail polish
   Close controls are positioned against the modal/card itself, never an
   inner flex row. Detail body owns scrolling so the close action stays put.
   ======================================================================== */
.bd-cal-detail{display:flex;flex-direction:column;overflow:hidden!important;position:fixed}
.bd-cal-detail>header{position:relative;flex:0 0 auto;padding:15px 58px 10px 15px!important}
.bd-cal-detail>.bd-cal-detail-close{position:absolute!important;top:10px!important;right:10px!important;z-index:6;margin:0!important}
.bd-cal-detail>.bd-cal-detail-body{min-height:0;overflow:auto;overscroll-behavior:contain}
.bd-cal-detail>footer{flex:0 0 auto}
.sess-modal{position:relative}
.sess-modal>.sm-close{position:absolute!important;top:12px!important;right:12px!important;z-index:8;margin:0!important}
.sess-modal .sm-head{padding-right:58px!important}
.sess-modal .sm-head-actions{display:flex;gap:6px;align-items:flex-start;margin-right:38px}
@media(max-width:620px){
  .bd-cal-detail>.bd-cal-detail-close{top:9px!important;right:9px!important}
  .sess-modal>.sm-close{top:10px!important;right:10px!important}
  .sess-modal .sm-head{padding-right:52px!important}
  .sess-modal .sm-head-actions{margin-right:34px}
}

/* ========================================================================
   v164 — Audit Log pagination, filters, categories, and detail drawer
   ======================================================================== */
.audit-page{display:flex;flex-direction:column;gap:14px;min-width:0}
.audit-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:4px 2px 0}
.audit-page-head h2{margin:2px 0 4px;font-size:26px;color:#10243e;letter-spacing:-.02em}
.audit-page-head p{margin:0;color:#718292;font-size:12px}
.audit-kicker{display:block;color:#71879a;font-size:9px;font-weight:800;letter-spacing:.12em}
.audit-total{min-width:104px;border:1px solid #dce5ec;background:#fff;border-radius:12px;padding:9px 13px;text-align:right;box-shadow:0 2px 7px rgba(16,36,62,.035)}
.audit-total b{display:block;color:#10243e;font-size:20px;line-height:1.05}.audit-total span{font-size:9px;color:#83919d;text-transform:uppercase;letter-spacing:.07em;font-weight:700}
.audit-toolbar{display:grid;grid-template-columns:minmax(220px,1.4fr) repeat(2,minmax(118px,.55fr)) minmax(145px,.7fr) minmax(145px,.7fr) minmax(120px,.55fr) auto;gap:9px;align-items:end;padding:12px;background:#fff;border:1px solid #dce5ec;border-radius:13px;box-shadow:0 2px 8px rgba(16,36,62,.035)}
.audit-toolbar label{min-width:0;display:flex;flex-direction:column;gap:4px}.audit-toolbar label>span{font-size:9px;text-transform:uppercase;letter-spacing:.055em;font-weight:800;color:#728495}
.audit-toolbar input,.audit-toolbar select{height:38px;min-width:0;width:100%;border:1px solid #d2dde6;border-radius:9px;background:#fff;color:#10243e;padding:0 10px;font:inherit;font-size:11px;box-sizing:border-box}
.audit-toolbar input:focus,.audit-toolbar select:focus{outline:2px solid rgba(55,136,216,.18);border-color:#78a9d6}
.audit-search{position:relative}.audit-search i{position:absolute;left:11px;bottom:11px;color:#71879a;font-size:12px}.audit-search input{padding-left:31px!important}
.audit-clear{height:38px!important;padding:0 13px!important;border:1px solid #d2dde6!important;border-radius:9px!important;background:#fff!important;color:#566b7d!important;display:inline-flex!important;align-items:center!important;gap:6px!important;white-space:nowrap!important;font-size:10px!important;font-weight:700!important}
.audit-clear:hover{background:#f6f9fb!important;color:#123d73!important;border-color:#bacbd8!important}
.audit-categories{display:flex;gap:4px;overflow-x:auto;padding:2px 1px 5px;scrollbar-width:thin}
.audit-category{height:34px!important;padding:0 12px!important;border:1px solid transparent!important;border-radius:9px!important;background:transparent!important;color:#607386!important;font-size:10px!important;font-weight:700!important;white-space:nowrap!important}
.audit-category:hover{background:#f0f5f8!important;color:#123d73!important}.audit-category.active{background:#eaf2f9!important;border-color:#c3d6e5!important;color:#123d73!important}
.audit-list{background:#fff;border:1px solid #dce5ec;border-radius:13px;overflow:hidden;min-height:220px;box-shadow:0 2px 8px rgba(16,36,62,.03)}
.audit-day{padding:9px 14px;background:#f7f9fb;border-bottom:1px solid #e3e9ee;color:#657a8b;font-size:9px;text-transform:uppercase;letter-spacing:.075em;font-weight:800}
.audit-row{appearance:none!important;width:100%!important;display:grid!important;grid-template-columns:72px 32px minmax(0,1fr) auto 18px!important;gap:10px!important;align-items:center!important;text-align:left!important;margin:0!important;padding:10px 14px!important;border:0!important;border-bottom:1px solid #edf1f4!important;border-radius:0!important;background:#fff!important;color:#10243e!important;box-shadow:none!important;min-height:57px!important}
.audit-row:last-child{border-bottom:0!important}.audit-row:hover{background:#f8fbfd!important;color:#10243e!important}.audit-row:focus-visible{outline:2px solid #3788d8!important;outline-offset:-2px!important}
.audit-row time{font-size:9.5px;color:#748697;white-space:nowrap}.audit-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#edf4f8;color:#123d73;font-size:10px;font-weight:800}
.audit-row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.audit-row-main b{font-size:11px;line-height:1.3;color:#18324c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.audit-row-main span{font-size:9.5px;color:#7b8a96;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.audit-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border-radius:999px;font-size:8.5px;font-weight:750;white-space:nowrap;background:#eef4f8;color:#526c80}.audit-pill i{font-size:9px}.audit-pill.access{background:#eef0fb;color:#5867a5}.audit-pill.students{background:#eef8f2;color:#4b7b5c}.audit-pill.programs{background:#fff5e8;color:#8b682d}.audit-pill.sessions{background:#edf7f7;color:#3f7777}.audit-pill.schedule{background:#eef5fd;color:#3f6f9f}.audit-pill.admin{background:#f3f2f7;color:#685f7b}
.audit-chevron{color:#a5b1ba;font-size:10px}.audit-loading,.audit-empty{min-height:220px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;color:#7b8b98;font-size:11px;text-align:center;padding:24px}.audit-empty i{font-size:25px;color:#9aabb8}.audit-empty b{font-size:13px;color:#52697b}.audit-empty.error b{color:#a24747}
.audit-pagination{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:38px}.audit-range{font-size:9.5px;color:#738493}.audit-pages{display:flex;align-items:center;gap:4px}.audit-pages button{height:32px!important;min-width:32px!important;padding:0 9px!important;border:1px solid #d6e0e7!important;border-radius:8px!important;background:#fff!important;color:#52697b!important;font-size:9.5px!important;font-weight:700!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:5px!important}.audit-pages button:hover:not(:disabled){background:#f4f8fb!important;color:#123d73!important;border-color:#b9ccda!important}.audit-pages button.active{background:#123d73!important;color:#fff!important;border-color:#123d73!important}.audit-pages button:disabled{opacity:.42!important;cursor:default!important}.audit-ellipsis{padding:0 4px;color:#91a0ab;font-size:11px}
.audit-drawer-overlay{position:fixed;inset:0;z-index:130;background:rgba(16,36,62,.38);display:flex;justify-content:flex-end;animation:auditFade .15s ease-out}.audit-drawer{width:min(460px,100vw);height:100%;background:#fff;box-shadow:-18px 0 50px rgba(16,36,62,.18);position:relative;overflow:auto;padding:30px 28px 34px;box-sizing:border-box;animation:auditDrawerIn .18s ease-out}.audit-drawer-accent{position:absolute;top:0;left:0;right:0;height:5px;background:#7892a8}.audit-drawer-accent.access{background:#6979b4}.audit-drawer-accent.students{background:#62a272}.audit-drawer-accent.programs{background:#d59a42}.audit-drawer-accent.sessions{background:#579b9b}.audit-drawer-accent.schedule{background:#4e89c3}.audit-drawer-accent.admin{background:#7b708e}
@keyframes auditFade{from{opacity:0}to{opacity:1}}@keyframes auditDrawerIn{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:translateX(0)}}
.audit-drawer-close{position:absolute!important;right:16px!important;top:16px!important;width:36px!important;height:36px!important;border:1px solid #d8e2e9!important;border-radius:9px!important;background:#fff!important;color:#6c8192!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important;z-index:2}.audit-drawer-close:hover{background:#f5f8fa!important;color:#123d73!important}
.audit-drawer header{padding-right:40px}.audit-drawer header h2{font-size:21px;line-height:1.25;color:#10243e;margin:10px 0 5px}.audit-drawer header p{margin:0;color:#82909b;font-size:10px}.audit-detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:20px 0}.audit-detail-meta>div{border:1px solid #e0e7ec;border-radius:10px;padding:10px;background:#fbfcfd;display:flex;flex-direction:column;gap:3px;min-width:0}.audit-detail-meta span{font-size:8.5px;text-transform:uppercase;letter-spacing:.055em;font-weight:800;color:#8a98a4}.audit-detail-meta b{font-size:10.5px;color:#40576a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.audit-detail-section{border-top:1px solid #e6ebef;padding-top:17px}.audit-detail-section h3{margin:0 0 10px;color:#29465d;font-size:12px}.audit-change-list{display:flex;flex-direction:column;gap:7px}.audit-change{border:1px solid #e3e9ee;border-radius:9px;padding:9px 10px;display:flex;flex-direction:column;gap:5px}.audit-change>b{font-size:9px;color:#687b8b;text-transform:uppercase;letter-spacing:.04em}.audit-change>div{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);gap:6px;align-items:center}.audit-change span{font-size:10px;line-height:1.35;overflow-wrap:anywhere}.audit-change .before{color:#8c6670;text-decoration:line-through;text-decoration-color:#d6b6bd}.audit-change .after{color:#3f7150}.audit-change i{text-align:center;color:#a7b3bc;font-size:9px}.audit-no-changes{padding:13px;border-radius:9px;background:#f7f9fb;color:#7d8c98;font-size:10px}
.audit-technical{margin-top:17px;border-top:1px solid #e6ebef;padding-top:13px}.audit-technical summary{cursor:pointer;color:#708494;font-size:9.5px;font-weight:700}.audit-technical dl{display:grid;grid-template-columns:90px minmax(0,1fr);gap:7px 10px;font-size:9px;margin-top:11px}.audit-technical dt{color:#8998a4}.audit-technical dd{margin:0;color:#4f6577;overflow-wrap:anywhere}
@media(max-width:1100px){.audit-toolbar{grid-template-columns:2fr repeat(2,1fr)}.audit-toolbar .audit-search{grid-column:span 2}.audit-clear{justify-self:start!important}}
@media(max-width:720px){.audit-page-head{align-items:flex-end}.audit-total{display:none}.audit-toolbar{grid-template-columns:1fr 1fr}.audit-toolbar .audit-search{grid-column:1/-1}.audit-toolbar label:nth-of-type(4),.audit-toolbar label:nth-of-type(5){grid-column:span 1}.audit-row{grid-template-columns:58px 30px minmax(0,1fr) 16px!important}.audit-row .audit-pill{display:none}.audit-pagination{align-items:flex-start;flex-direction:column}.audit-pages{width:100%;overflow-x:auto;padding-bottom:3px}.audit-pages button span{display:none}.audit-drawer{width:100vw;padding:26px 18px 28px}.audit-detail-meta{grid-template-columns:1fr}}
.audit-filter-strip{display:flex;align-items:center;gap:10px;min-width:0}.audit-view-toggle{display:flex;align-items:center;gap:2px;padding:3px;background:#eef3f6;border-radius:9px;flex:0 0 auto}.audit-view-toggle button{height:29px!important;padding:0 9px!important;border:0!important;border-radius:7px!important;background:transparent!important;color:#697c8c!important;font-size:9px!important;font-weight:750!important;white-space:nowrap!important}.audit-view-toggle button:hover{background:#f8fafb!important;color:#123d73!important}.audit-view-toggle button.active{background:#fff!important;color:#123d73!important;box-shadow:0 1px 4px rgba(16,36,62,.10)!important}.audit-view-toggle button i{font-size:8px;color:#d4932f}.audit-filter-strip .audit-categories{flex:1;min-width:0}
.audit-pagination-left{display:flex;align-items:center;gap:12px}.audit-page-size{display:flex;align-items:center;gap:5px;color:#7b8a96;font-size:9px}.audit-page-size span{font-weight:700}.audit-page-size select{height:29px;border:1px solid #d6e0e7;border-radius:7px;background:#fff;color:#52697b;font-size:9px;padding:0 21px 0 7px}
@media(max-width:1100px){.audit-filter-strip{align-items:flex-start;flex-direction:column}.audit-filter-strip .audit-categories{width:100%}}
@media(max-width:720px){.audit-pagination-left{width:100%;justify-content:space-between}.audit-view-toggle{width:100%}.audit-view-toggle button{flex:1!important}.audit-filter-strip{gap:7px}}
/* v165 Audit Log QA: keep modal background still while detail drawer is open. */
body.audit-drawer-open{overflow:hidden}
@media (prefers-reduced-motion:reduce){.audit-drawer-overlay,.audit-drawer{animation:none!important}}

/* v166 — Staff Time weekly review */
.ts-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.ts-page-head h2{margin:0 0 4px}.ts-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 14px}.ts-summary>div,.ts-totals>div{border:1px solid #e5edf3;background:#f8fafc;border-radius:12px;padding:12px}.ts-summary span,.ts-totals span{display:block;color:#64748b;font-size:11px;font-weight:700;margin-bottom:4px}.ts-summary b{font-size:24px;color:#10243e}.ts-review-card{border:1px solid #e2e8f0;border-radius:14px;padding:14px;margin-top:12px;background:#fff}.ts-review-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.ts-review-head h3{margin:0 0 3px;font-size:15px}.ts-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800;background:#f1f5f9;color:#475569}.ts-status.submitted{background:#fff7ed;color:#9a3412}.ts-status.approved{background:#ecfdf3;color:#166534}.ts-status.returned{background:#fff1f2;color:#9f1239}.ts-alert{margin-top:10px;border:1px solid #fed7aa;background:#fff7ed;color:#9a3412;padding:8px 10px;border-radius:10px;font-size:12px;font-weight:650}.ts-totals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}.ts-totals b{font-size:14px;color:#10243e}.ts-days{margin-top:10px}.ts-days>summary{cursor:pointer;font-size:12px;font-weight:750;color:#123d73}.ts-table-wrap{overflow-x:auto;margin-top:8px}.ts-table-wrap table{min-width:660px}.ts-manual{display:inline-flex;padding:2px 6px;border-radius:999px;font-size:9px;font-weight:800;background:#f5f3ff;color:#6d28d9}.ts-day{display:inline-flex;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:750;background:#f1f5f9;color:#64748b}.ts-day.ok{background:#ecfdf3;color:#166534}.ts-day.live{background:#eaf3ff;color:#123d73}.ts-day.warn{background:#fff7ed;color:#9a3412}.ts-day.manual{background:#f5f3ff;color:#6d28d9}.ts-review-note{margin-top:10px;border-radius:10px;background:#fff1f2;border:1px solid #fecdd3;color:#9f1239;padding:9px 10px;font-size:12px}.ts-actions{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:10px;align-items:end;margin-top:12px}.ts-actions textarea{min-height:54px;resize:vertical}.ts-actions>div{display:flex;gap:8px;justify-content:flex-end}
@media(max-width:900px){.ts-totals{grid-template-columns:1fr 1fr}.ts-actions{grid-template-columns:1fr}.ts-summary{grid-template-columns:1fr 1fr}.ts-page-head{flex-direction:column}}
@media(max-width:600px){.ts-summary,.ts-totals{grid-template-columns:1fr}.ts-review-head{flex-direction:column}.ts-actions>div{justify-content:stretch}.ts-actions button{flex:1}}

/* v169 — calmer sidebar + sectioned Settings/Ticker Timeline. */
.sidebar{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#244766 transparent}
.nav{gap:10px;min-height:0}
.nav-group{display:flex;flex-direction:column;gap:2px}
.nav-group-label{padding:2px 12px 4px;color:#7088a1;font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;user-select:none}
.nav .tab{padding:8px 11px;font-size:13px;border-radius:9px}
/* v249 friction pass. The green `box-shadow:inset 3px 0 0 #8CCB32` edge
   sliver that used to live here is GONE. It had been dead for a while —
   app/shell.css:65 overrides it with `box-shadow:none` at higher
   specificity — but leaving a prohibited treatment in the source is a trap
   for the next person editing this line, which is exactly how it would
   come back. The active destination is carried by its fill, as it already
   was. shell.css keeps its override as belt-and-braces. */
.nav .tab.active{background:#173f6d}
.side-utilities{margin-top:auto;padding-top:9px;border-top:1px solid #1b3a5e;display:flex;flex-direction:column;gap:3px}
.side-utility,.side-link{width:100%;display:flex;align-items:center;gap:9px;padding:9px 11px;border:0;background:transparent;color:#94a3b8;text-decoration:none;font:600 12px/1.3 'Poppins',sans-serif;border-radius:9px;text-align:left;margin:0}
.side-utility:hover,.side-link:hover{background:#173f6d;color:#fff}
.side-utility .bi,.side-link .bi{font-size:14px;width:18px;text-align:center}
/* and the already-selected one, which is hovered most of all */

.settings-save-row{display:flex;align-items:center;gap:12px;margin-top:16px}
.settings-save-row .msg{margin:0}
.report-error-card{max-width:620px;margin-top:18px}
@media(max-width:720px){
  .sidebar{width:170px;padding-left:8px;padding-right:8px}
  .nav-group-label{padding-left:10px}
  .nav .tab{padding:8px 9px;font-size:12px;gap:8px}
}

.plan-store-steps li label{display:flex;gap:7px;align-items:flex-start;cursor:pointer}
.plan-store-steps li.is-off{color:var(--muted);text-decoration:line-through}
.plan-store-detail-note{margin:9px 0 0;font-size:11px;color:var(--muted);line-height:1.4}
@media(max-width:600px){
  .plan-store-target-row{flex-direction:column;align-items:stretch}
  .plan-store-detail-toggle{align-self:flex-start}
}

/* v223. Clinical formulation & supports (plan builder, Support step) and the
   student Notes screen. Same plan- vocabulary as the accordions around them:
   no new component generation, only field layout. */
.cs-field{padding:10px 0;border-top:1px solid #edf1f4}
.cs-field:first-of-type{border-top:0}
.cs-label{display:flex;flex-direction:column;gap:2px;margin-bottom:6px}
.cs-label b{font-size:11px;color:#36566e}
.cs-label small{font-size:10px;color:#718493;line-height:1.4}
.cs-checks{display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:8px}
.cs-check{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:#2b4152;min-height:28px}
.cs-check input{width:16px;height:16px;margin:0}
.cs-input{width:100%;border:1px solid #cfdbe4;border-radius:9px;padding:8px 10px;font-family:inherit;font-size:11px;background:#fff}
.cs-textarea{min-height:72px}
.plan-materials{margin:0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.plan-materials li{font-size:11px;color:#2b4152;display:flex;align-items:center;gap:6px}
.plan-materials a{color:var(--brand,#123D73);text-decoration:underline;overflow-wrap:anywhere}
.notes-item .notes-text{white-space:pre-wrap}
.plan-support-note code{font-size:10px;background:#f4f8f7;padding:1px 4px;border-radius:4px}
@media (max-width:640px){.cs-checks{flex-direction:column;gap:4px}}

/* v224 — clinical blocks shared by the Marketplace detail, the plan store's
   Inspect panel and the plan target card: levels, configuration, criteria
   (with provenance), and what still needs a clinician. Fill and ink only. */
.program-clinical{display:flex;flex-direction:column;gap:10px;margin:10px 0 6px;padding:10px 12px;background:#f6f8fb;border:1px solid var(--line);border-radius:10px}
.program-clinical-row{display:flex;flex-direction:column;gap:4px}
.program-clinical-row p{margin:0;font-size:13px;color:#10243e;line-height:1.45}
.program-clinical-label{font-size:11.5px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.program-clinical-muted{color:var(--muted)}
.program-clinical-list{margin:0;padding-left:18px;font-size:12.5px;color:#10243e;line-height:1.45}
.program-clinical-list li b{color:#3a4a60;font-weight:600;margin-right:4px}
.program-clinical-steps{margin:0;padding-left:20px;font-size:12.5px;color:#10243e;line-height:1.5}
.program-clinical-row.is-flags{background:#fff8ec;border:1px solid #efd9a8;border-radius:8px;padding:8px 10px}
.program-clinical-row.is-flags .program-clinical-label{color:#7a4b0b}
.criteria-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:0;text-transform:none}
.criteria-badge.is-default{background:#fff2d6;color:#7a4b0b}
.criteria-badge.is-clinician{background:#eaf4ec;color:#2f5d3a}
.plan-item-flags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.plan-item-flag{display:inline-block;padding:2px 7px;border-radius:5px;font-size:11px;background:#fff2d6;color:#7a4b0b;border:1px solid #efd9a8}
.te-flags{display:flex;flex-direction:column;gap:6px}
.te-flags label{display:flex;gap:8px;align-items:flex-start;font-size:13px;line-height:1.4}
.collector-demo-row.lvl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:6px}
.collector-demo-row.lvl-grid .collector-demo-big{min-height:56px}
.collector-demo-row.lvl-grid .collector-demo-small{min-height:40px}

/* ═══ v231 — Admin/BCBA remediation ══════════════════════════════════════ */
.plan-no-version span{display:block;max-width:520px;margin:6px auto 14px;color:var(--muted, #64748b);font-size:13.5px;line-height:1.45}
.plan-no-version .bd-btn{margin-top:4px}
.plan-add-new{grid-column:1 / -1;display:grid;grid-template-columns:1fr 200px;gap:8px}
.plan-add-new textarea{grid-column:1 / -1;min-height:72px}
.roster-toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:#334155;white-space:nowrap;min-height:44px;cursor:pointer}
.roster-toggle input{width:18px;height:18px}
.roster-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
/* v249 Phase 2: the student's name in the roster is the way into the
   student. Reads exactly as the <b> it replaces until you point at it. */
.roster-name{border:0;background:none;padding:0;margin:0;font:inherit;font-weight:700;
  color:inherit;cursor:pointer;text-align:left;min-height:0}
.roster-name:hover:not(:disabled){background:none;color:var(--brand,#123D73);
  text-decoration:underline;text-underline-offset:3px}
.roster-name:focus-visible{outline:2px solid var(--brand,#123D73);outline-offset:2px;border-radius:3px}
.sr-note-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.sr-chip{display:inline-flex;align-items:center;border-radius:999px;padding:3px 9px;font-size:11.5px;font-weight:700;background:#f1f5f9;color:#334155}
.sr-chip.is-flagged{background:#7a4b0b;color:#fff}
.sm-notes{display:flex;flex-direction:column;gap:8px}
.sm-note-row{background:#f8fafc;border:1px solid #e5edf3;border-radius:10px;padding:8px 10px}
.sm-note-row.is-flagged{background:#fff8e8;border-color:#efd9a8}
.sm-note-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:12px;color:#64748b}
.sm-note-head b{color:#10243e}
.sm-note-flag{background:#7a4b0b;color:#fff;border-radius:999px;padding:2px 8px;font-size:10.5px;font-weight:700}
.sm-note-text{margin-top:4px;font-size:13.5px;line-height:1.45;color:#10243e;white-space:pre-wrap;overflow-wrap:anywhere}
.report-note-list{margin:6px 0 0;padding-left:18px;font-size:13px}
.report-note-list li{margin:2px 0}
.report-note-list li.is-flagged{font-weight:600}
.review-queue-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 16px;margin:6px 0 12px}
.review-queue-filters label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#64748b}
.review-queue-filters select{min-width:200px;min-height:40px}
.review-queue-more{display:flex;align-items:center;gap:12px;margin-top:12px}

/* ═══ v232 — Activation gate: blocked items have no override (ledger E29.1) */
.plan-readiness.blocked{border-color:#e7c9c4;background:#fff7f5}
.plan-readiness.blocked .plan-readiness-head>i{color:#a04d42}
.plan-readiness li.blocked{border-color:#e4b3ab;color:#8d3d33;background:#fff1ee;font-weight:700}
.plan-activate-panel.is-blocked{background:#fff7f5;border-color:#e7c9c4}
.plan-activate-panel.is-blocked>div{color:#8d3d33}
.plan-activate-panel>button:disabled{background:#c9d3dc;color:#3f4d5a;cursor:not-allowed}
.plan-block-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.plan-block-list li{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border:1px solid #e7c9c4;border-radius:9px;background:#fff7f5;color:#6b2f27;font-size:var(--fs-footnote,12px);line-height:1.4}
.plan-block-list li i{margin-top:2px;font-size:11px;color:#a04d42}

/* ═══ v232-2 — Clinical Plan Authority (ledger E29.2) */
.plan-authority-banner{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;margin:0 0 12px;border:1px solid #d7e4ee;border-radius:12px;background:#f4f8fb;color:#2c4a63}
.plan-authority-banner>i{font-size:17px;color:#3b678c;margin-top:1px}
.plan-authority-banner>div{display:flex;flex-direction:column;gap:2px;font-size:12px;line-height:1.4}
.plan-authority-banner b{font-size:12.5px;color:#17324a}

/* ═══ v232-3 — Authorization / consent status on the plan (ledger E29.3) */
.plan-authorization-head{display:flex;flex-direction:column;gap:3px;margin-bottom:10px}
.plan-authorization-head b{font-size:12.5px;color:#17324a}
.plan-authorization-head small{font-size:10.5px;line-height:1.45;color:#5d7285;max-width:720px}
.plan-field-grid label.wide{grid-column:1/-1}
.plan-authorization-card textarea.plan-large-textarea{min-height:64px}
.plan-authorization-meta{font-size:10.5px;color:#5d7285;margin-top:6px}
.plan-authorization-card[data-plan-authorization="pending"],.plan-authorization-card[data-plan-authorization="needs_renewal"],.plan-authorization-card[data-plan-authorization="none"]{border-color:#e7c9c4;background:#fff9f8}
.plan-authorization-card[data-plan-authorization="obtained"],.plan-authorization-card[data-plan-authorization="not_required"]{border-color:#cce7d3;background:#f7fcf8}

/* v235. Review session detail: summary / needs attention / target results /
   notes (with addenda) / timeline (collapsed) / record / decision. State is
   carried by fill and ink - no edge slivers. */
.tr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.tr-card{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;display:flex;flex-direction:column;gap:4px;min-width:0}
.tr-card.is-unmeasured{background:#f8fafc}
.tr-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.tr-name{font-weight:700;font-size:13.5px;color:#10243e;overflow-wrap:anywhere}
.tr-type{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:#64748b;white-space:nowrap}
.tr-value{font-size:26px;font-weight:700;line-height:1.1;color:#10243e;font-variant-numeric:tabular-nums}
.tr-value small{font-size:13px;font-weight:600;color:#475569;margin-left:2px}
.tr-card.is-unmeasured .tr-value{color:#94a3b8}
.tr-context{font-size:12px;color:#475569;line-height:1.35}
.tr-spark{display:block;margin-top:4px;max-width:100%}
.tr-spark--none{font-size:11px;color:#94a3b8;margin-top:4px}
.tr-details{margin-top:4px}
.tr-details>summary{cursor:pointer;font-size:12.5px;color:var(--brand);font-weight:700;list-style:none;display:flex;gap:10px;align-items:center;flex-wrap:wrap;min-height:44px}
.tr-details>summary::-webkit-details-marker{display:none}
.tr-details>summary:hover .tr-link,.tr-details>summary:focus-visible .tr-link{text-decoration:underline}
.tr-details>summary:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}
/* The disclosure caret is markup (.tr-caret), never a pseudo-element accent (design rule). */
.tr-caret{display:inline-block;margin-right:4px;color:var(--brand);transition:transform .15s ease}
.tr-details[open]>summary .tr-caret{transform:rotate(90deg)}
.tr-counts{color:#475569;font-weight:600}
.tr-stat{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid #f4f6f8;font-size:12.5px}
.tr-stat span:last-child{font-weight:600;text-align:right}
.tr-attn{display:flex;flex-direction:column;gap:6px}
.tr-attn-item{border:1px solid #efd9a8;background:#fff8e8;border-radius:10px;padding:8px 12px;font-size:13px;color:#10243e}
.tr-attn-item.is-provenance,.tr-attn-item.is-workflow{border-color:#c7d2fe;background:#eef2ff}
.tr-attn-item b{display:block}
.tr-attn-item span{display:block;font-size:12px;color:#475569;margin-top:2px;line-height:1.4}
.tr-attn--none{border:1px solid #d5e8d0;background:#f3faf1;color:#2f5d1f;border-radius:10px;padding:8px 12px;font-size:13px}
.tr-timeline{width:100%;border-collapse:collapse;margin-top:6px}
.tr-timeline th,.tr-timeline td{font-size:12px;padding:5px 8px;text-align:left;border-bottom:1px solid #eef2f7;vertical-align:top}
.tr-timeline .tr-time{white-space:nowrap;font-size:11.5px;font-variant-numeric:tabular-nums}
.tr-row--removed td{color:#94a3b8}
.tr-row--removed td:nth-child(3){text-decoration:line-through}
.tr-row--flag td{background:#fff8e8}
.tr-row--note td{background:#f8fafc}
.tr-decision{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#f8fbfb}
.tr-decision.is-done{display:flex;flex-direction:column;gap:2px}
.tr-decision label{display:flex;gap:8px;align-items:center;font-size:13px;min-height:32px}
.tr-decision textarea{width:100%;min-height:64px;margin-top:6px;font-size:13px}
.tr-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.sm-addenda{margin-top:6px;display:flex;flex-direction:column;gap:4px}
.sm-addendum{background:#eef2ff;border:1px solid #c7d2fe;border-radius:8px;padding:6px 10px}
.sm-addendum-head{font-size:11.5px;color:#475569;font-weight:600}
.sm-add-btn{margin-top:6px;min-height:36px}
.sm-add-form{margin-top:6px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff}
.sm-add-form textarea{width:100%;min-height:60px;margin-top:6px;font-size:13px}
@media (max-width:700px){ .tr-grid{grid-template-columns:1fr} .tr-timeline th:nth-child(4),.tr-timeline td:nth-child(4){display:none} }
/* v235. The recap's Print button never wraps into three lines at a phone width. */
.sess-modal .sm-head-actions .sm{white-space:nowrap}
@media (max-width:500px){ .sess-modal .sm-head-actions .sm{font-size:12px;padding:6px 8px} }
/* v235. Derived analytics blocks in reports. */
.an-table{width:100%;border-collapse:collapse;font-size:12.5px}
.an-table th,.an-table td{padding:6px 8px;text-align:left;border-bottom:1px solid #eef2f7;vertical-align:top;white-space:nowrap}
.an-table th{font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:#64748b}
.an-note{font-size:12px;margin-top:6px;line-height:1.45}
.an-warn{border:1px solid #efd9a8;background:#fff8e8;border-radius:10px;padding:8px 12px;font-size:12.5px;color:#7a4b0b;margin-top:6px}
/* v235. Reports and review polish: quiet transitions only - nothing that
   exaggerates a clinical change or makes the reader wait. */
.tr-card,.report-pick,.kpi,.card[data-roster-open]{transition:box-shadow .15s ease,background-color .15s ease,border-color .15s ease}
.tr-card:hover{box-shadow:0 2px 10px rgba(15,23,42,.08)}
.card[data-roster-open]:hover{box-shadow:0 2px 10px rgba(15,23,42,.08);border-color:#c9d5de}
/* v249 (Workstream 3, Dashboard 3.0). Three of the five Dashboard KPI
   tiles now render as real <button> elements (kpi() in shared_charts.js)
   instead of inert <div>s - this .kpi rule already grouped them into the
   transition above with no matching :hover, an unfinished affordance. The
   reset properties below make a button.kpi visually identical to the
   still-inert div.kpi; the hover treatment reuses the exact box-shadow
   .tr-card:hover already uses, for one consistent "this is clickable"
   language across the app. Focus rings are not duplicated here -
   foundations.css's single product-wide focus-visible rule already
   covers every <button>.
   APP REGRESSION fix (V249 Workstream 9): the original comment here
   claimed "border/background/font/cursor are the only things a <button>
   defaults differently" from a div - that was wrong, `color` does too
   (button
 at the top of this file). .kpi .lbl already
   overrides its own color (var(--muted)), masking the gap, but .kpi
   .num never set one, so it silently inherited white - invisible on
   this button's light var(--surface) background in EVERY state, not
   only on hover (1.00:1, tests/v181-hover-contrast-tests.py). Restoring
   `color:var(--ink)` (body's own default, what a plain div.kpi always
   inherited) is the missing reset, not a new look. */
button.kpi{border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;width:100%}
/* APP REGRESSION fix (V249 Workstream 9, CLAUDE.md classification -
   the specificity trap named in this project's own testing rules):
   button:hover:not(:disabled)
 is (0,2,1),
   the SAME specificity as button.kpi:hover, so which one wins for a
   given property is decided per-property, not per-rule - and this rule
   never restated `background`, so it lost that property to the navy
   generic hover while .kpi .num/.lbl kept their light-surface colors
   (default ink / var(--muted)), painting near-illegible muted-gray-on-
   navy (2.85:1, tests/v181-hover-contrast-tests.py's dashboard sweep).
   The intended hover was always just the lift shadow (see comment
   above) - restating `background` here is the fix the tie needed, not
   a new visual: it makes button.kpi:hover render exactly as already
   documented. */
button.kpi:hover{box-shadow:0 2px 10px rgba(15,23,42,.08);background:var(--surface)}
/* v249 (Workstream 3, Dashboard 3.0, Slice 16). Landing on a specific
   Review Center row from Supervision Command Center's "Open" buttons
   (openReviewFocused()) needs a visible "you are here" - a full fill on
   the row itself, the same --accent-soft token .bd-btn--plain:hover and
   .cmdk__item.is-active already use, never a corner/edge accent (this
   project's own standing design rule). Fades back out on its own after a
   couple seconds - it marks where you landed, not a permanent state. */
tr.review-row-focused{background:var(--accent-soft);transition:background-color 1.8s ease}
.tr-details>summary .tr-link{transition:color .15s ease}
@media (prefers-reduced-motion:reduce){ .tr-caret{transition:none} }
.tr-details[open]>summary{margin-bottom:4px}
.chart-block svg,.an-table{animation:bd-fade .18s ease-out}
@keyframes bd-fade{from{opacity:.001}to{opacity:1}}
@media (prefers-reduced-motion:reduce){ .tr-card,.report-pick,.kpi,.card[data-roster-open],.tr-details>summary .tr-link{transition:none} .chart-block svg,.an-table{animation:none} }
/* v240 (Graphing Modernization, Slice 1). BDCharts/ECharts mount point.
   ECharts needs a sized element to measure into before it can render, so
   this carries the fixed aspect the old inline-SVG lineChart() used
   (640x272, ~2.35:1) as a responsive max-height instead - never a fixed
   pixel width, so it still reflows at phone/iPad widths like every other
   BehaviorDash card. State is carried by fill/ink only - no corner accent. */
.bd-chart-container{position:relative;width:100%;aspect-ratio:640/272;max-height:320px;min-height:180px}
.bd-chart-container canvas,.bd-chart-container svg{outline:none}
.bd-chart-loading{position:absolute;inset:0;border-radius:10px;background:linear-gradient(90deg,#f1f5f9 25%,#e8eef4 37%,#f1f5f9 63%);background-size:400% 100%;animation:bd-chart-shimmer 1.4s ease infinite}
@keyframes bd-chart-shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
@media (prefers-reduced-motion:reduce){ .bd-chart-loading{animation:none;background:#f1f5f9} }
.bd-chart-error{display:flex;align-items:center;gap:8px;padding:14px 16px;border:1px solid #eee2b8;background:#fffbea;border-radius:10px;color:#7a5b0b;font-size:13px}
.bd-chart-error .bd-chart-retry{border:1px solid currentColor;background:none;color:inherit;border-radius:6px;padding:2px 8px;font-size:12px;cursor:pointer}
/* v235. Dashboard: needs attention / data quality / workflow, kept apart. */
.attn-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-bottom:18px}
.attn-card h2{margin-bottom:2px}
.attn-sub{font-size:12px;margin-bottom:10px;line-height:1.4}
.attn-row{display:flex;align-items:flex-start;gap:12px;padding:8px 0;border-top:1px solid #eef2f7}
.attn-row:first-of-type{border-top:0}
.attn-n{min-width:44px;font-size:20px;font-weight:700;line-height:1.1;color:#10243e;font-variant-numeric:tabular-nums;white-space:nowrap}
.attn-row.is-flag .attn-n{color:#b45309}
.attn-row.is-gap .attn-n{color:#8b2d1e}
/* V251 D2. attention_engine.js declares five severities; this sheet styled
   four. `work` is the Dashboard's most common row and fell through to
   .attn-n's own colour -- correct, but by accident rather than by decision.
   Stated, so the two lists can be compared. */
.attn-row.is-work .attn-n{color:var(--ink-primary,#17324a)}
.attn-row.is-dq .attn-n{color:#4c5fbf}
.attn-row.is-ok .attn-n{color:#2f5d1f}
.attn-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.attn-text{font-size:13.5px;font-weight:600;color:#10243e}
.attn-detail{font-size:12px;color:#475569;line-height:1.4;overflow-wrap:anywhere}
.attn-row .sm{flex-shrink:0;min-height:36px}
.attn-none{font-size:13px;color:#2f5d1f;background:#f3faf1;border:1px solid #d5e8d0;border-radius:10px;padding:8px 12px}

/* v235. Plan Builder: target filter for large plans, preflight "Go to",
   archived versions grouped. Selected state is fill and ink. */
.ptf{display:flex;flex-direction:column;gap:8px;margin:10px 0 12px}
.ptf-search{width:100%;max-width:420px;min-height:40px;border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:14px;font-family:inherit}
.ptf-chips{display:flex;flex-wrap:wrap;gap:6px}
.ptf-chip{border:1px solid var(--line);background:#fff;color:#334155;border-radius:999px;padding:0 12px;min-height:36px;font-size:12.5px;font-weight:600;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.ptf-chip b{font-weight:700;color:#10243e}
.ptf-chip:hover:not(:disabled){background:#f1f5f9}
.ptf-chip.is-on{background:var(--brand);border-color:var(--brand);color:#fff}
.ptf-chip.is-on b{color:#fff}
.ptf-chip:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.ptf-count{font-size:12.5px;color:#475569}
.ptf-decision-count{font-size:13px;font-weight:600;color:#b45309}
.plan-readiness li,.plan-check-panel li{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.plan-readiness-go{margin-left:auto;border:1px solid var(--line);background:#fff;color:var(--brand);border-radius:999px;padding:0 10px;min-height:32px;font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap}
.plan-readiness-go:hover:not(:disabled){background:#eef2ff}
.plan-readiness-go:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
/* v236. Plan Check panel: same card/li/chip system as .plan-readiness above
   (fill and ink carry state, per CLAUDE.md - no new accent pattern). The
   only additions are the evidence citation line and a slightly muted head
   icon so the supplemental panel reads as calmer than the blocking preflight
   above it, without a border/bracket to say so. */
.plan-check-panel .plan-readiness-head>i{color:#6b7f92}
.plan-check-evidence{display:block;font-size:8.6px;color:#8798a6;margin-top:1px;font-weight:600;letter-spacing:.01em}
.plan-archived-row td{padding:0!important;border-bottom:0!important}
.plan-archived-versions summary{cursor:pointer;padding:10px 12px;font-size:12.5px;font-weight:700;color:#475569;min-height:40px;display:flex;align-items:center}
.plan-archived-versions table{width:100%}
.plan-archived-versions tr td{opacity:.8}
#plan-new-version-top{margin-left:8px;vertical-align:middle}
/* v235-4. Add-target box: what it is + what counts; the rest is written in the editor that opens next. */
.plan-add-grid .plan-add-def{grid-column:1 / span 2;min-height:56px;resize:vertical;border:1px solid #cedae3;border-radius:8px;background:#fff;padding:8px 9px;font:inherit;font-size:12px;line-height:1.4;color:#19384f}
.plan-add-hint{grid-column:1 / -1;margin:0;font-size:12px;line-height:1.45;color:#5c6b78}
.target-editor-added{margin:0 0 12px;padding:10px 12px;border-radius:9px;background:#eef6ee;color:#2f5a2f;font-size:13px;line-height:1.45;font-weight:600}
@media(max-width:760px){.plan-add-grid .plan-add-def{grid-column:1}}
/* v235-4. At a phone width the name + type row stacked its 200px type column past the box edge and the box clipped it (found driving Add target at 390px). */
@media(max-width:760px){.plan-add-new{grid-template-columns:1fr}.plan-add-grid input,.plan-add-grid select,.plan-add-grid textarea{min-width:0;max-width:100%}}
/* v241 — BDMotion (app/bd_motion.js). The ghost is a viewport-fixed, inert
   snapshot of a departing queue row; it exists for one short fade and is
   never part of the layout, so nothing shifts and nothing is announced. */
.bd-motion-ghost{background:var(--surface);color:var(--ink);padding:10px;border-bottom:1px solid var(--line);font-size:14px;will-change:opacity,transform}
.bd-motion-ghost .muted{color:var(--muted)}
@media (prefers-reduced-motion:reduce){.bd-motion-ghost{display:none}}
/* v245. Student Clinical Workspace shell. Fill/ink carries the active tab,
   per CLAUDE.md - no corner bracket or edge accent anywhere below. */
.workspace-head-pills{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 14px}
.workspace-tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:0;margin-bottom:16px}
.workspace-tab{height:36px;padding:0 14px;border:1px solid transparent;border-radius:9px 9px 0 0;background:transparent;color:#607386;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap}
.workspace-tab:hover{background:#f0f5f8;color:#123d73}
.workspace-tab.workspace-tab--active{background:#eaf2f9;color:#123d73}
/* v245 fix (found by axe during Phase 13, not by inspection - CLAUDE.md's
   own documented trap): the generic button:hover:not(:disabled) rule
   (background:var(--brand-2), #10243E) is (0,2,1) - higher specificity
   than the bare two-class .workspace-tab.workspace-tab--active (0,2,0) -
   and was winning whenever the pointer rested on the active tab, painting
   it solid navy under its own dark-navy text: 1.44:1 contrast, effectively
   illegible. Same fix already established for .calendar-filter-row.active
   (v63) - an explicit :hover rule on the active state ties on specificity
   and (unlike the tie itself) actually declares background, so it wins. */
.workspace-tab.workspace-tab--active:hover{background:#eaf2f9;color:#123d73}
.workspace-tab:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.workspace-tab-body{min-height:80px}
/* v248. Human-readable activity feed (History tab) - plain rows, no
   corner-bracket/accent-bar state marker per CLAUDE.md's design rule. */
.ws-activity-list{display:flex;flex-direction:column;gap:10px}
.ws-activity-row{display:flex;align-items:flex-start;gap:10px;font-size:13px}
.ws-activity-row i{color:#607386;font-size:14px;margin-top:2px;flex:0 0 auto}
.ws-activity-text{display:flex;flex-direction:column;gap:2px}
.workspace-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.workspace-grid .card{margin:0}
@media(max-width:760px){.workspace-grid{grid-template-columns:1fr}.workspace-tabs{overflow-x:auto;flex-wrap:nowrap}}
/* v245 Phase 9. Pre-activation summary - plain card, no new accent pattern. */
.plan-activation-summary{background:#f8fafc;border:1px solid var(--line);border-radius:9px;padding:12px 14px;margin-bottom:12px}
.plan-activation-summary h4{margin:0 0 6px;font-size:13px;font-weight:700;color:#334155}
.plan-activation-summary ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:#475569}

/* ── Word-level plan diff (V250 Workstream U) ──────────────────────────
   Marking is carried by FILL and INK, plus the two things HTML already
   means by <ins> and <del>: an underline and a strikethrough. No corner
   bracket, no edge sliver, no accent bar. The colour is never the only
   signal - the underline/strikethrough carries it without colour, and
   BDTextDiff.summary() states the same fact in words above the passage,
   so a printed plan and a screen reader both get it.
   No new component generation: this reuses the existing foundations
   tokens (--success/--danger and their -soft fills) and the existing
   .plan-activation-summary sheet. */
.plan-diff-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px;font-size:13px}
/* V250 owner item 10: the live tracker preview sits under the open target
   editor, so a clinician can see the collection experience they are
   configuring. Separated from the editor by space and a fill, never by an
   edge accent. */
.plan-target-preview--live{margin-top:10px;padding:10px 12px;background:#f8fafc;
  border:1px solid var(--line);border-radius:10px}
.plan-target-preview--live .plan-support-note{margin:0 0 8px}
.bd-diff{margin-top:4px}
.bd-diff > summary,.plan-activation-changes > summary{cursor:pointer;font-size:12px;font-weight:600;color:var(--accent-on-soft);padding:2px 0;list-style:revert}
.bd-diff > summary:focus-visible,.plan-activation-changes > summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.bd-diff__body{margin-top:6px;padding:8px 10px;background:#f8fafc;border:1px solid var(--line);border-radius:8px}
.bd-diff__note{margin:0 0 6px;font-size:12px;color:#475569}
.bd-diff__text{margin:0;font-size:13px;line-height:1.55;white-space:pre-wrap;color:var(--ink)}
.bd-diff__ins{background:var(--success-soft);color:var(--success);text-decoration:underline;font-weight:600;border-radius:3px;padding:0 1px}
.bd-diff__del{background:var(--danger-soft);color:var(--danger);text-decoration:line-through;border-radius:3px;padding:0 1px}
.bd-diff__side{margin-top:8px}
.bd-diff__side h5{margin:0 0 2px;font-size:12px;font-weight:700;color:#334155}
.bd-diff__side p{margin:0;font-size:12.5px;line-height:1.5;white-space:pre-wrap;color:#475569}
.plan-activation-changes{margin-top:6px}
.plan-activation-changes .plan-diff-list{font-size:12.5px;gap:5px;margin-top:4px}

/* ── Product Map (v249 Workstream 43) ──────────────────────────────────
   Rows in the existing #detail-pane. No new component generation: this
   borrows the sheet's own spacing tokens and the .bd-btn ink, and carries
   no corner bracket, edge sliver or accent bar of any kind - selection is
   fill and ink, per the owner's rule. */
.pm-sheet{padding:var(--s-5)}
.pm-head{border-bottom:1px solid var(--line);padding-bottom:var(--s-3)}
.pm-row{display:block;width:100%;text-align:left;border:1px solid transparent;
  border-radius:10px;padding:7px 9px;background:transparent;color:inherit;
  font:inherit;cursor:pointer}
.pm-row:hover:not(:disabled){background:var(--bg-2);border-color:var(--line)}
.pm-row:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.pm-row--static{cursor:default;color:var(--muted)}
.pm-row__label{display:block;font-size:var(--fs-body);font-weight:500}
.pm-row__sub{display:block;font-size:var(--fs-caption);color:var(--muted);
  margin-top:1px;max-width:44ch}

/* ─────────────────────────────────────────────────────────────────────────
 * Touch targets on a coarse pointer.  v249 Phase 3 (iPad / classroom pass).
 *
 * foundations.css states the rule this implements, in as many words:
 *
 *     Minimum hit areas. Pointer devices may go denser; touch may not.
 *     --target-touch: 44px;  --target-dense: 32px;
 *
 * The Recorder (collect.css) has honoured those tiers for some time, with
 * the reasoning written down at each control. The admin console never did.
 * Driving it at 1024x1366, 1366x1024, 820x1180, 1180x820 and two phone
 * sizes found the same set under-target at EVERY size — .sm at 26px, the
 * Settings sub-nav at 30px, the Audit page-size select at 29px, and (found
 * by this same pass, in the change one commit earlier) .roster-name at
 * 16px. On an iPad, "Notes" and "Remove" sit side by side in an assignment
 * row, both 26px tall.
 *
 * --target-dense, not --target-touch, and the precedent is this project's
 * own: v249 Workstream 29 raised .a-undo from 28px to the dense tier rather
 * than to 44px, on the reasoning that jumping to the full touch tier would
 * "fight this comment's own documented intent (a deliberately dense control
 * for a tight, one-handed list)". The same applies to a dense table row.
 * This closes the real gap — these were under even the dense floor — without
 * redesigning the tables.
 *
 * @media (pointer:coarse), so a mouse keeps the dense layout untouched. No
 * hover declarations here, so admin.css's button:hover:not(:disabled) rule
 * is not in play; this only sets box metrics.
 * ────────────────────────────────────────────────────────────────────── */
/* A button's label must never wrap. At 820px the Staff table squeezed
   "Save" into a 30px column and rendered it as a vertical stack of four
   letters, 68px tall — a control that is neither readable nor tappable. The
   table wrappers already carry overflow-x:auto, and shell.css's phone block
   states the intent outright: "Tables scroll inside their own container
   rather than clipping the page". So the table scrolls; the button stays a
   button. Not inside the coarse-pointer block below, because a label sliced
   into letters is wrong under a mouse too — narrow widths just reach it
   sooner on a tablet. */
button.sm{white-space:nowrap}
/* v249 Phase 14. The rule directly above has a consequence the authoritative
   gate caught and the fast sweep could not: it made "Resend invite" 98px wide
   where "Deactivate" is 80px. Both live in this one Staff actions column, and
   at every width they stack rather than sit side by side - so the longer
   label reached 18px further right than the action beside it. On a tablet,
   where that column is already off-viewport and reached by scrolling the
   table, that is 18px more scrolling for one of two controls in the same
   cell, which is exactly the parity v216-resend-invite-tests.py section J
   pins ("no less reachable than the action already in that column").

   Fixed by giving them a shared width rather than by taking the nowrap back:
   slicing a label into single letters was the worse outcome, and it is still
   avoided. Stretching to the cell's content width also makes both targets
   wider, which is the right direction under a finger. */

@media (pointer: coarse){
  button.sm,#tab-audit select,.roster-name{
    min-height:var(--target-dense);
  }
  /* padding-block rather than a height, so the name still sits on the text
     baseline of the cells beside it instead of being centred in a taller box
     while they are not. */
  .roster-name{padding-block:8px}
}

/* ── Student Clinical Journey (V250 Workstream G) ─────────────────────────
   Lanes over one shared time axis. No corner brackets, no edge slivers - a
   mark's state is carried by its FILL, per the owner's standing rule. The
   marks are real <button>s so the timeline is keyboard-reachable and
   screen-reader-nameable; that is the whole reason this is DOM and not a
   canvas chart. */
.jr{position:relative;display:flex;flex-direction:column;gap:var(--s-2);
    padding:var(--s-4) 0 calc(var(--s-6) + 6px)}
.jr-lane{display:grid;grid-template-columns:minmax(120px,168px) 1fr;align-items:center;gap:var(--s-3)}
.jr-lane__label{font-size:var(--fs-caption);color:var(--ink-secondary);
    display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jr-lane__count{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--ink-tertiary)}
.jr-lane__track{position:relative;height:28px;border-radius:14px;background:var(--surface-sunken,#eef2f6)}
.jr-mark{position:absolute;top:50%;transform:translate(-50%,-50%);
    width:26px;height:26px;padding:0;border:0;background:transparent;border-radius:50%;
    display:flex;align-items:center;justify-content:center;cursor:pointer}
.jr-mark__dot{width:12px;height:12px;border-radius:50%;background:var(--ink-tertiary);
    transition:width .12s ease,height .12s ease,background-color .12s ease}
/* V251 D2. bd_journey.js gives an event one of three tones and neutral is six
   of its ten event types; only two were declared here. */
.jr-mark--neutral .jr-mark__dot{background:var(--ink-tertiary)}
.jr-mark--positive .jr-mark__dot{background:var(--ok,#0E7C7B)}
.jr-mark--attention .jr-mark__dot{background:var(--danger,#E84B32)}
/* :not(:disabled) so this ties admin.css's button:hover:not(:disabled) rule
   at (0,2,1) instead of losing to it, and background is declared explicitly
   because a specificity tie does nothing for a property the rule never sets.
   See CLAUDE.md, "the specificity trap". */
.jr-mark:hover:not(:disabled){background:transparent}
.jr-mark:hover:not(:disabled) .jr-mark__dot{width:16px;height:16px}
.jr-mark:focus-visible{outline:2px solid var(--brand,#10243E);outline-offset:2px}
.jr-axis{position:relative;height:18px;margin-left:calc(min(168px,max(120px,25%)) + var(--s-3))}
.jr-axis__tick{position:absolute;transform:translateX(-50%);font-size:var(--fs-micro,11px);
    color:var(--ink-tertiary);white-space:nowrap}
.jr-note{margin:var(--s-3) 0 0;font-size:var(--fs-footnote);color:var(--ink-secondary);line-height:var(--lh-body)}
.jr-table{margin-top:var(--s-4)}
.jr-table summary{cursor:pointer;font-size:var(--fs-footnote)}
.jr-table table{margin-top:var(--s-3)}
@media (prefers-reduced-motion: reduce){ .jr-mark__dot{transition:none} }
/* iPad portrait and narrower: the label column stops competing with the
   track for width, and the lane stacks instead of squeezing the timeline
   into something unreadable. */
@media (max-width: 820px){
  .jr-lane{grid-template-columns:1fr;gap:2px}
  .jr-lane__label{margin-bottom:2px}
  .jr-axis{margin-left:0}
}

/* ── Visual Plan Map (V250 Workstream H) ──────────────────────────────────
   A tree, laid out deterministically: the same plan is the same picture
   every time. No corner brackets, no edge slivers - a node's state is
   carried by its fill and its ink, per the owner's standing rule. Nodes
   with somewhere to go are real <button>s; nodes without are not, because a
   control that looks clickable and does nothing is worse than a label. */
.pm{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    gap:var(--s-4);align-items:start}
.pm-branch{min-width:0}
.pm-branch__head{display:flex;align-items:center;gap:6px;margin:0 0 var(--s-3);
    font-size:var(--fs-caption);color:var(--ink-secondary);font-weight:600}
.pm-branch__count{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--ink-tertiary);font-weight:400}
.pm-branch__nodes{display:flex;flex-direction:column;gap:var(--s-3)}
.pm-item{min-width:0}
.pm-item__children{display:flex;flex-direction:column;gap:2px;
    margin:2px 0 0 var(--s-4);padding-left:var(--s-3);
    /* One hairline rule showing containment. This is a TREE EDGE, not a
       decorative accent: it connects a parent to its children and carries no
       state. The owner's rule forbids colour slivers that indicate state. */
    border-left:1px solid var(--line-default,#dfe5ea)}
.pm-node{display:flex;flex-direction:column;gap:1px;width:100%;text-align:left;
    padding:var(--s-3);border:1px solid var(--line-default,#dfe5ea);border-radius:10px;
    background:var(--surface-default,#fff);min-height:44px;justify-content:center}
.pm-node__label{font-size:var(--fs-footnote);color:var(--ink-primary);font-weight:600;
    overflow-wrap:anywhere}
.pm-node__detail{font-size:var(--fs-caption);color:var(--ink-secondary);overflow-wrap:anywhere}
.pm-node__note{font-size:var(--fs-caption);color:var(--ink-tertiary);font-style:italic}
.pm-item__children .pm-node{border:0;background:transparent;padding:4px var(--s-2);min-height:0}
.pm-node--target,.pm-node--skill{background:var(--surface-sunken,#f6f8fa)}
.pm-node--noted{border-style:dashed}
/* :not(:disabled) so this ties admin.css's button:hover:not(:disabled) at
   (0,2,1) rather than losing to it, and background is declared explicitly
   because a specificity tie does nothing for a property the rule never sets.
   See CLAUDE.md, "the specificity trap". */
button.pm-node:hover:not(:disabled){background:var(--surface-hover,#eef3f7)}
button.pm-node:focus-visible{outline:2px solid var(--brand,#10243E);outline-offset:2px}
.pm-issues{margin:0 0 var(--s-4);padding-left:var(--s-5);
    font-size:var(--fs-footnote);color:var(--ink-secondary);line-height:var(--lh-body)}
.pm-outline{margin-top:var(--s-4)}
.pm-outline summary{cursor:pointer;font-size:var(--fs-footnote)}
.pm-outline table{margin-top:var(--s-3)}
/* iPad portrait and narrower: one column rather than squeezing four. */
@media (max-width: 820px){ .pm{grid-template-columns:1fr} }
