/* planflow-pages.css — round 21 track C — the app's pages (Dashboard, Library, Usage, Settings, Admin) and modals in the PlanFlow look under body.aw-newblocks.
   Owned by that track alone; loaded after planflow-inspector.css.

   Owner (round 21, verbatim): "why it shows these menus to us with the old
   design and layout? Can you adjust it to make aligned with the branding?"

   A RESTYLE, not a rebuild.  The page scripts (static/js/views/*.js, the
   shells in app.js) are untouched; every rule here is a look only, and every
   selector is scoped under body.aw-newblocks (spec 32 reads this sheet
   through the CSSOM and fails on the first rule that is not), so the flag
   off is byte-identical.  The look is the floating panel's (Build-113,
   planflow-inspector.css): the serif face, the deep greens, carved wells
   for cards, hairline dividers for table rows, .wf-btn for buttons,
   .wf-input for fields, .wf-badge for badges, .wf-dtab for the sub-tab
   strip, .wf-modal__card for the modals.

   TOKENS.  The panel declares its tokens on its own elements
   (.pfi-root .wf-insp, .wf-modal.pfi-root, …), not on :root, and the pages
   are not descendants of the panel, so a custom property cannot inherit from
   it.  The block below is the panel's token set VERBATIM (planflow-
   inspector.css:10-61) placed on the page root and the modal hosts — one
   declaration site, every rule below reads var(…).  Five names the legacy
   :root (main.css:10) also declares — --text, --border, --accent, --radius,
   --radius-lg — are NOT redeclared (a legacy rule under the page that reads
   var(--border) must keep meaning what it meant); their panel values are
   read through --pf-text / --pf-border / --pf-accent / --pf-radius /
   --pf-radius-lg instead.

   CONTRAST.  The panel's --muted (#6E8077) is 3.5:1 on the ground; body-size
   secondary text here reads --label (#41584C, 6.9:1) so every text passes
   WCAG AA.  --muted is kept for placeholders only.  Titles and links read
   --active-text (#235446, 7.8:1); the lighter --accent (#5C9A7E) is used for
   lines and marks, never for small text.

   SCOPES.  P = the pages (#page-root), M = the dashboard's metric / activity
   modal (#dashboard-modal-mount, mounted on <body>), R = the repeat / loop
   modal (.rm-host), C = the chat dialog shell (.chat-dialog).  The purge
   modal (admin › users) renders inside #page-root.  window.confirm() is the
   browser's own dialog and cannot be styled. */

/* ================================================================
   0. TOKENS — the panel's, verbatim (see the header)
   ================================================================ */
body.aw-newblocks .page-root,
body.aw-newblocks #dashboard-modal-mount,
body.aw-newblocks .rm-host,
body.aw-newblocks .chat-dialog,
body.aw-newblocks .chat-backdrop{
  --surface:rgba(255,255,255,.56);
  --sticky-bg:#F2F3F2;
  --divider:rgba(70,92,80,.16);
  --label:#41584C;
  --label-hover:#27543C;
  --header-hover:rgba(56,120,90,.09);
  --icon:#3C5247;
  --icon-hover:#2F6B4D;
  --muted:#6E8077;
  --row-hover:rgba(60,74,67,.06);
  --active-bg:rgba(255,255,255,.40);
  --active-text:#235446;
  --accent-line:rgba(92,154,126,.45);
  --dot-green:#4FA37C;
  --field-bg:rgba(255,255,255,.34);
  --well-bg:rgba(56,70,63,.04);
  --well-line:rgba(70,92,80,.085);
  --well-shadow:inset 0 2px 5px rgba(38,52,45,.13),inset 0 -1px 0 rgba(255,255,255,.5);
  --field-bg-focus:rgba(255,255,255,.62);
  --field-bd-focus:rgba(255,255,255,.95);
  --focus-ring:rgba(60,120,92,.45);
  --track-off:rgba(90,112,100,.34);
  --cta:#1F6E45; --cta-hover:#155832; --danger:#B85450;
  --scroll-thumb:rgba(90,112,100,.30);
  --pop-bg:#FBFCFA;
  --blur:blur(20px) saturate(180%) brightness(1.03);
  --shadow:inset 0 1px 0 rgba(255,255,255,.6), 0 10px 30px rgba(55,72,64,.14);
  --ease:cubic-bezier(.32,.72,0,1); --dur:.24s; --dur-rev:.42s;
  --pfi-family:'EB Garamond', Georgia, serif;
  /* the five colliding names, under a page-only alias */
  --pf-text:#1F2D26;
  --pf-border:rgba(255,255,255,.70);
  --pf-accent:#5C9A7E;
  --pf-radius:9px; --pf-radius-lg:16px;
  /* review fix 3 — AA on the well surface (rgb 234 237 236 over the ground):
     --danger #B85450 is 4.3:1 there, fine for borders and tints, short of
     AA for small text; danger TEXT reads the darker red the solid danger
     button already hovers to (5.4:1).  The badge green / amber likewise
     (the panel's #3A7D5C / #9A6313 are 4.2:1 / 4.3:1 on the well). */
  --pf-danger-text:#9E423D;
  --pf-badge-green:#2F6B4D;
  --pf-badge-amber:#7A4E0E;
}
/* the legacy --text-muted (#6b7a73, 4.6:1 on the white card) is 3.8:1 on the
   well; every legacy rule on the pages that reads it (the dashboard's units,
   legends and feed verbs, the audit log's times and target types, …) now
   reads the panel's --label (6:1 on the well).  Text only — no legacy rule
   uses --text-muted for a border or a background. */
body.aw-newblocks .page-root{--text-muted:var(--label)}

/* ================================================================
   1. THE PAGE — type, title, sub-tab strip
   ================================================================ */
body.aw-newblocks .page-root{font-family:var(--pfi-family);color:var(--pf-text)}

/* the page title as the panel's head: the serif, the deep green, 600 */
body.aw-newblocks .page-root .page-title{
  margin:0 0 4px;font-family:var(--pfi-family);color:var(--active-text);
  font-size:24px;line-height:1.15;font-weight:600;letter-spacing:-.01em}
body.aw-newblocks .page-root .page-subtitle{margin:0;color:var(--label);font-size:13px}
body.aw-newblocks .page-root .page-dashboard .page-meta{color:var(--label)}
body.aw-newblocks .page-root .page-dashboard .page-meta b{color:var(--pf-text)}
body.aw-newblocks .page-root .page-dashboard .page-header{border-bottom:1px solid var(--divider)}

/* the in-page sub-tabs (Library / Settings / Admin) as the panel's drawer tabs (.wf-dtab) */
body.aw-newblocks .page-root .page-subtabs{gap:2px;margin-bottom:18px;border-bottom:1px solid var(--divider)}
body.aw-newblocks .page-root .page-subtab{
  position:relative;padding:7px 9px 9px;margin-bottom:0;border-bottom:0;border-radius:8px 8px 0 0;
  font-family:var(--pfi-family);font-size:13px;font-weight:500;color:var(--label);
  transition:color .14s,background .12s}
body.aw-newblocks .page-root .page-subtab:hover{color:var(--label-hover);background:var(--row-hover);text-decoration:none}
body.aw-newblocks .page-root .page-subtab.active{color:var(--active-text);font-weight:600;border-bottom:0}
body.aw-newblocks .page-root .page-subtab.active::after{
  content:"";position:absolute;left:9px;right:9px;bottom:-1px;height:2px;border-radius:2px;background:var(--pf-accent)}
body.aw-newblocks .page-root .page-subtab:focus-visible{outline:0;box-shadow:0 0 0 3px var(--focus-ring)}

/* ================================================================
   2. CARDS — the panel's carved well (.wf-sec); card titles as .wf-sec__h
   ================================================================ */
body.aw-newblocks .page-root .card{
  background:var(--well-bg);border:1px solid var(--well-line);border-radius:var(--pf-radius-lg);
  box-shadow:var(--well-shadow);transition:none}
body.aw-newblocks .page-root .card:hover{box-shadow:var(--well-shadow);transform:none}
body.aw-newblocks .page-root .card-error{border-color:rgba(184,84,80,.3)}
body.aw-newblocks .page-root .card-title{
  font-family:var(--pfi-family);color:var(--label);font-size:11px;letter-spacing:.07em;font-weight:600;
  text-transform:uppercase;margin-bottom:11px}
/* the dashboard's card heads carry a sentence title + a sub line; they keep
   their size and take the panel's text colours */
body.aw-newblocks .page-root .page-dashboard .card-title{
  font-size:15px;letter-spacing:-.005em;text-transform:none;color:var(--pf-text);font-weight:600;margin-bottom:0}
body.aw-newblocks .page-root .page-dashboard .card-sub,
body.aw-newblocks .page-root .page-dashboard .card-footnote,
body.aw-newblocks .page-root .page-dashboard .card-empty,
body.aw-newblocks .page-root .page-dashboard .kpi-label,
body.aw-newblocks .page-root .page-dashboard .kpi-foot,
body.aw-newblocks .page-root .page-dashboard .sys-pip-label,
body.aw-newblocks .page-root .page-dashboard .sys-pip-sub,
body.aw-newblocks .page-root .page-dashboard .activity-meta-item-label,
body.aw-newblocks .page-root .page-dashboard .metric-label,
body.aw-newblocks .page-root .page-dashboard .metric-sub{color:var(--label)}
body.aw-newblocks .page-root .card-loading{color:var(--label)}

/* ================================================================
   3. TABLES — quiet rows with the panel's hairline divider
   ================================================================ */
body.aw-newblocks .page-root .data-table{font-family:var(--pfi-family);font-size:13px;color:var(--pf-text)}
body.aw-newblocks .page-root .data-table thead th{
  background:transparent;color:var(--label);font-size:11px;letter-spacing:.07em;font-weight:600;
  text-transform:uppercase;padding:11px 16px;border-bottom:1px solid var(--divider)}
body.aw-newblocks .page-root .data-table tbody td{padding:10px 16px;border-bottom:1px solid var(--divider)}
body.aw-newblocks .page-root .data-table tbody tr:last-child td{border-bottom:0}
body.aw-newblocks .page-root .data-table.compact th{padding:9px 12px}
body.aw-newblocks .page-root .data-table.compact td{padding:7px 12px}
body.aw-newblocks .page-root .data-table tbody tr.row-clickable:hover,
body.aw-newblocks .page-root .admin-users-table tbody tr:hover{background:var(--row-hover)}
body.aw-newblocks .page-root .admin-users-table tbody tr.admin-row-selected{
  background:rgba(92,154,126,.12);box-shadow:inset 3px 0 0 var(--pf-accent)}
body.aw-newblocks .page-root .data-table .name-col,
body.aw-newblocks .page-root .lib-filename,
body.aw-newblocks .page-root .user-email,
body.aw-newblocks .page-root .meta-value,
body.aw-newblocks .page-root .lib-runref,
body.aw-newblocks .page-root .audit-actor-email,
body.aw-newblocks .page-root .audit-target-id{color:var(--pf-text)}
body.aw-newblocks .page-root .lib-toolbar{border-bottom:1px solid var(--divider)}
body.aw-newblocks .page-root .admin-users-table-scroll::-webkit-scrollbar-thumb,
body.aw-newblocks .page-root .admin-detail-panel::-webkit-scrollbar-thumb{background:var(--scroll-thumb)}

/* ================================================================
   4. BUTTONS — every .btn on the pages and in the modals is a .wf-btn
      (quiet milk by default, --cta solid for the one primary action,
      the danger tints for destructive ones).  The dashboard's
      .btn-primary / .btn-ghost pair maps to solid / quiet.
   ================================================================ */
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  height:34px;padding:0 13px;
  font-family:var(--pfi-family);font-size:12.5px;font-weight:560;letter-spacing:.005em;line-height:1;color:var(--label);
  background:rgba(255,255,255,.5);background-image:none;border:0;border-radius:var(--pf-radius);
  box-shadow:none;text-shadow:none;cursor:pointer;white-space:nowrap;user-select:none;
  transform:none;filter:none;
  transition:background .14s,color .14s,box-shadow .14s,transform .12s var(--ease)}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn:hover{
  background:rgba(255,255,255,.74);background-image:none;color:var(--label-hover);transform:none;filter:none;box-shadow:none;border-color:transparent}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn:active{
  transform:translateY(1px);background:rgba(255,255,255,.44);box-shadow:inset 0 1.5px 3px rgba(40,56,48,.13);filter:none}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn:focus-visible{
  outline:0;box-shadow:0 0 0 3px var(--focus-ring)}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn.btn-sm{
  height:28px;padding:0 10px;font-size:12px;border-radius:8px;gap:6px}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn svg{width:15px;height:15px;display:block}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn.btn-sm svg{width:13px;height:13px}
/* the primary action: a .btn that is not quiet / ghost / danger → .wf-btn--solid */
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn:not(.btn-quiet):not(.btn-ghost):not(.btn-danger):not(.danger):not(.lib-btn-danger){
  color:#fff;background:var(--cta);background-image:none}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn:not(.btn-quiet):not(.btn-ghost):not(.btn-danger):not(.danger):not(.lib-btn-danger):hover{
  color:#fff;background:var(--cta-hover);background-image:none}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn:not(.btn-quiet):not(.btn-ghost):not(.btn-danger):not(.danger):not(.lib-btn-danger):active{
  background:var(--cta-hover);box-shadow:inset 0 2px 4px rgba(0,0,0,.2)}
/* destructive: solid red (.btn-danger / .danger) → .wf-btn--solid-danger; the quiet red text (.lib-btn-danger) → .wf-btn--danger */
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn.btn-danger,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn.danger{color:#fff;background:#AC4B46;background-image:none}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn.btn-danger:hover,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn.danger:hover{color:#fff;background:#9E423D;background-image:none}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn.lib-btn-danger{color:var(--pf-danger-text)}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn.lib-btn-danger:hover{color:var(--pf-danger-text);background:rgba(184,84,80,.12)}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn[disabled],
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .btn:disabled{opacity:.45;cursor:not-allowed;transform:none;filter:none}

/* icon buttons (the dashboard's "more", the modal / dialog close, the repeat modal's close) → .wf-iconbtn */
body.aw-newblocks .page-root .page-dashboard .action-menu-btn,
body.aw-newblocks #dashboard-modal-mount .modal-close,
body.aw-newblocks .rm-host .rm-close,
body.aw-newblocks .chat-dialog .icon-btn-square,
body.aw-newblocks .page-root .purge-modal-close{
  width:30px;height:30px;padding:0;border:0;background:transparent;color:var(--icon);border-radius:8px;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .12s,color .12s}
body.aw-newblocks .page-root .page-dashboard .action-menu-btn:hover,
body.aw-newblocks .page-root .page-dashboard .action-menu.open .action-menu-btn,
body.aw-newblocks #dashboard-modal-mount .modal-close:hover,
body.aw-newblocks .rm-host .rm-close:hover,
body.aw-newblocks .chat-dialog .icon-btn-square:hover,
body.aw-newblocks .page-root .purge-modal-close:hover{background:var(--row-hover);color:var(--label-hover);border-color:transparent}
body.aw-newblocks .rm-host .rm-close{font-size:20px;line-height:1}

/* the small expand buttons on the dashboard's KPI tiles and cards */
body.aw-newblocks .page-root .page-dashboard .kpi-expand,
body.aw-newblocks .page-root .page-dashboard .card-expand{
  background:rgba(255,255,255,.6);border:1px solid var(--pf-border);color:var(--icon);border-radius:7px}
body.aw-newblocks .page-root .page-dashboard .kpi-expand:hover,
body.aw-newblocks .page-root .page-dashboard .card-expand:hover{background:#fff;color:var(--label-hover);border-color:var(--pf-border)}

/* ================================================================
   5. FIELDS — .input / .select / .textarea as the panel's .wf-input
   ================================================================ */
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .input,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .select,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .textarea{
  font-family:var(--pfi-family);font-size:13px;color:var(--pf-text);
  background-color:var(--field-bg);border:1px solid var(--pf-border);border-radius:var(--pf-radius);
  box-shadow:none;outline:0;transition:border-color .14s ease,background-color .14s ease,box-shadow .14s ease}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .input{height:35px;padding:0 11px}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .select{height:35px;padding:0 28px 0 11px}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .textarea{padding:8px 11px;line-height:1.45}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .select.select-sm{height:28px;padding:0 24px 0 9px;font-size:12px}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .input::placeholder,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .textarea::placeholder{color:var(--muted)}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .input:focus,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .select:focus,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .textarea:focus,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .input:focus-visible,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .select:focus-visible,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .textarea:focus-visible{
  outline:0;border-color:var(--field-bd-focus);background-color:var(--field-bg-focus);box-shadow:0 0 0 3px var(--focus-ring)}
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .input:disabled,
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) .select:disabled{opacity:.55}
/* a <textarea class="input"> (the admin limits editor) is a multi-line field,
   not a 35-px line: the panel's .wf-input height and its zero vertical padding
   are for one-line inputs only (review fix 2) */
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) textarea.input{height:auto;min-height:70px;padding:8px 11px;line-height:1.45;resize:vertical}
/* the limits editor holds JSON: it keeps its monospace face and its 160-px editor height */
body.aw-newblocks :is(.page-root,#dashboard-modal-mount,.rm-host,.chat-dialog) textarea.input.admin-limits-textarea{min-height:160px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.5}
/* the pricing table's price cells stay compact */
body.aw-newblocks .page-root .pricing-table .input.pricing-price{height:28px;padding:0 8px;font-size:12.5px}
/* field labels as the panel's .wf-field > label */
body.aw-newblocks .page-root .cred-label,
body.aw-newblocks .page-root .toolbar-row .inline-label span,
body.aw-newblocks .page-root .admin-users-filter > span,
body.aw-newblocks .page-root .admin-usage-toolbar-label,
body.aw-newblocks .page-root .purge-modal-field-label,
body.aw-newblocks .rm-host .rm-label{color:var(--label)}
body.aw-newblocks .page-root .cred-optional{color:var(--label);font-weight:400}

/* ================================================================
   6. BADGES, CHIPS, STATUS — .wf-badge (a dot and small caps), the
      filter chips as the panel's .wf-sec__act
   ================================================================ */
body.aw-newblocks .page-root .lib-badge,
body.aw-newblocks .page-root .plan-badge,
body.aw-newblocks .page-root .user-flag,
body.aw-newblocks .page-root .cred-default-tag{
  display:inline-flex;align-items:center;gap:5px;padding:0;border:0;border-radius:0;background:transparent;
  font-family:var(--pfi-family);font-size:10px;font-weight:600;font-style:normal;letter-spacing:.04em;text-transform:uppercase;
  line-height:1.4;white-space:nowrap;color:var(--label);text-decoration:none}
body.aw-newblocks .page-root .lib-badge::before,
body.aw-newblocks .page-root .plan-badge::before,
body.aw-newblocks .page-root .user-flag::before,
body.aw-newblocks .page-root .cred-default-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
body.aw-newblocks .page-root .lib-badge-active,
body.aw-newblocks .page-root .lib-badge-pinned,
body.aw-newblocks .page-root .lib-badge-workflow,
body.aw-newblocks .page-root .lib-badge-type,
body.aw-newblocks .page-root .plan-badge.plan-premium,
body.aw-newblocks .page-root .plan-badge.plan-custom,
body.aw-newblocks .page-root .cred-default-tag,
body.aw-newblocks .page-root .user-flag-internal{color:var(--pf-badge-green)}
body.aw-newblocks .page-root .lib-badge-expiring,
body.aw-newblocks .page-root .lib-badge-expiring_soon,
body.aw-newblocks .page-root .lib-badge-creating,
body.aw-newblocks .page-root .plan-badge.plan-admin,
body.aw-newblocks .page-root .user-flag-admin{color:var(--pf-badge-amber)}
body.aw-newblocks .page-root .lib-badge-expired,
body.aw-newblocks .page-root .lib-badge-failed{color:var(--pf-danger-text)}
body.aw-newblocks .page-root .lib-badge-deleted,
body.aw-newblocks .page-root .lib-badge-purged{color:var(--label);text-decoration:line-through}
body.aw-newblocks .page-root .lib-badge-run,
body.aw-newblocks .page-root .lib-badge-bundle,
body.aw-newblocks .page-root .plan-badge.plan-free,
body.aw-newblocks .page-root .plan-badge.plan-test,
body.aw-newblocks .page-root .user-flag-test{color:var(--label)}

body.aw-newblocks .page-root .lib-chip{
  display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border:1px solid transparent;border-radius:7px;
  background:rgba(255,255,255,.5);font-family:var(--pfi-family);font-size:11.5px;font-weight:500;line-height:1.2;
  color:var(--label);cursor:pointer;box-shadow:none;transition:background .12s,color .12s,border-color .12s}
body.aw-newblocks .page-root .lib-chip:hover{color:var(--label-hover);background:rgba(92,154,126,.08);border-color:var(--accent-line)}
body.aw-newblocks .page-root .lib-chip.on{color:var(--active-text);background:rgba(92,154,126,.14);border-color:var(--accent-line);box-shadow:none}
body.aw-newblocks .page-root .lib-chip:focus-visible{outline:0;box-shadow:0 0 0 3px var(--focus-ring)}

/* the audit log's action chips keep their meaning (grant / warn / danger / neutral) in the panel's tints */
body.aw-newblocks .page-root .audit-action-chip{background:rgba(255,255,255,.5);border-color:var(--pf-border);color:var(--pf-text)}
body.aw-newblocks .page-root .audit-action-chip.audit-bucket-grant{color:var(--active-text);background:rgba(92,154,126,.12);border-color:var(--accent-line)}
body.aw-newblocks .page-root .audit-action-chip.audit-bucket-warn{color:#7A4E0E;background:rgba(154,99,19,.10);border-color:rgba(154,99,19,.3)}
body.aw-newblocks .page-root .audit-action-chip.audit-bucket-danger{color:var(--pf-danger-text);background:rgba(184,84,80,.08);border-color:rgba(184,84,80,.3)}
body.aw-newblocks .page-root .audit-action-chip.audit-bucket-neutral{color:var(--label);background:var(--well-bg);border-color:var(--well-line)}
body.aw-newblocks .page-root .audit-meta-toggle{color:var(--label)}
body.aw-newblocks .page-root .audit-meta-toggle:hover{color:var(--pf-text)}

/* ================================================================
   7. NOTES, HINTS, EMPTY STATES, LINKS
   ================================================================ */
/* banners as the panel's carved note (.wf-modal__note) */
body.aw-newblocks .page-root .exec-banner{
  color:var(--label);background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);
  border-radius:var(--pf-radius);padding:9px 11px;font-family:var(--pfi-family);font-size:12.5px}
body.aw-newblocks .page-root .exec-banner.error{color:var(--pf-danger-text);background:rgba(184,84,80,.06);border-color:rgba(184,84,80,.3)}
body.aw-newblocks .page-root .exec-banner.warn{color:#7A4E0E;background:rgba(154,99,19,.08);border-color:rgba(154,99,19,.3)}
body.aw-newblocks .page-root .exec-banner.success{color:var(--active-text);background:rgba(92,154,126,.10);border-color:var(--accent-line)}
body.aw-newblocks .page-root .upgrade-callout{color:#7A4E0E;background:rgba(154,99,19,.08);border:1px solid rgba(154,99,19,.3);border-radius:var(--pf-radius)}

body.aw-newblocks .page-root .hint,
body.aw-newblocks .page-root .lib-hint,
body.aw-newblocks .page-root .lib-toolbar-info,
body.aw-newblocks .page-root .meta-label,
body.aw-newblocks .page-root .pricing-intro,
body.aw-newblocks .page-root .pricing-status,
body.aw-newblocks .page-root .feature-hint,
body.aw-newblocks .page-root .admin-action-hint,
body.aw-newblocks .page-root .admin-cleanup-lead,
body.aw-newblocks .page-root .admin-cleanup-result-note,
body.aw-newblocks .page-root .admin-usage-stat-label,
body.aw-newblocks .page-root .admin-usage-totals-note,
body.aw-newblocks .page-root .admin-users-info,
body.aw-newblocks .page-root .audit-actor-id,
body.aw-newblocks .page-root .admin-detail-empty p,
body.aw-newblocks .page-root .empty-inline,
body.aw-newblocks .page-root .card-empty{color:var(--label)}
body.aw-newblocks .page-root .pricing-status.is-error{color:var(--pf-danger-text)}
body.aw-newblocks .page-root .empty-inline h3,
body.aw-newblocks .page-root .admin-detail-empty h3,
body.aw-newblocks .page-root .admin-usage-stat-value,
body.aw-newblocks .page-root .admin-detail-email{color:var(--pf-text)}
body.aw-newblocks .page-root .pricing-intro b{color:var(--pf-text)}
body.aw-newblocks .page-root .feature-tick.on{color:var(--active-text)}
body.aw-newblocks .page-root .admin-action-hint code{color:var(--active-text);background:rgba(92,154,126,.10);border-color:var(--accent-line)}
body.aw-newblocks .page-root .usage-bar{background:rgba(70,92,80,.12)}
body.aw-newblocks .page-root .usage-bar::after{background:var(--pf-accent)}

/* links in the deep green that passes AA; underline on hover as in the panel */
body.aw-newblocks .page-root a.lib-link,
body.aw-newblocks .page-root .empty-inline a,
body.aw-newblocks .page-root .hint a,
body.aw-newblocks .page-root .lib-hint a{color:var(--active-text);text-decoration:none}
body.aw-newblocks .page-root a.lib-link:hover,
body.aw-newblocks .page-root .empty-inline a:hover,
body.aw-newblocks .page-root .hint a:hover,
body.aw-newblocks .page-root .lib-hint a:hover{text-decoration:underline}

/* small carved wells inside the pages (the audit's metadata, the last cleanup run, the admin detail panel) */
body.aw-newblocks .page-root .audit-meta-pre,
body.aw-newblocks .page-root .admin-cleanup-last,
body.aw-newblocks .page-root .purge-modal-target{
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--pf-radius);color:var(--pf-text)}
body.aw-newblocks .page-root .admin-detail-panel{
  background:var(--well-bg);border:1px solid var(--well-line);border-radius:var(--pf-radius-lg);box-shadow:var(--well-shadow)}
body.aw-newblocks .page-root .admin-detail-row,
body.aw-newblocks .page-root .admin-action{border-bottom-color:var(--divider)}
body.aw-newblocks .page-root .admin-action-danger{border-top-color:rgba(184,84,80,.3)}
body.aw-newblocks .page-root .admin-action-danger .admin-action-label{color:var(--pf-danger-text)}

/* the admin usage page's user picker (a custom drop-down) as a quiet button + the panel's popover */
body.aw-newblocks .page-root .admin-usage-picker-btn{
  background:rgba(255,255,255,.5);border:0;border-radius:var(--pf-radius);color:var(--label);font-family:var(--pfi-family);box-shadow:none}
body.aw-newblocks .page-root .admin-usage-picker-btn:hover{background:rgba(255,255,255,.74);color:var(--label-hover)}
body.aw-newblocks .page-root .admin-usage-picker-pop{
  background:var(--pop-bg);border:1px solid var(--pf-border);border-radius:12px;box-shadow:var(--shadow)}
body.aw-newblocks .page-root .admin-usage-picker-item:hover,
body.aw-newblocks .page-root .admin-usage-picker-item.focused{background:var(--row-hover)}

/* ================================================================
   8. THE DASHBOARD — its scoped tokens re-pointed at the panel's; the
      status strip and the KPI tiles as wells; the range / chart-table
      toggles as the panel's sub-tab pill (.wf-insp__tabs); the "more"
      menu as the panel's popover (.wf-pop)
   ================================================================ */
body.aw-newblocks .page-root .page-dashboard{
  --d-serif:var(--pfi-family);
  --d-border-soft:var(--well-line);
  --d-accent-wash:rgba(92,154,126,.10);
  --d-card-shadow:var(--well-shadow);
  --d-radius-lg:var(--pf-radius-lg);
  --d-text-dim:var(--label)}
body.aw-newblocks .page-root .page-dashboard .system-strip,
body.aw-newblocks .page-root .page-dashboard .kpi{
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow)}
body.aw-newblocks .page-root .page-dashboard .kpi:hover{box-shadow:var(--well-shadow)}
body.aw-newblocks .page-root .page-dashboard .range-seg,
body.aw-newblocks .page-root .page-dashboard .tab-row,
body.aw-newblocks #dashboard-modal-mount .range-seg{
  display:inline-flex;gap:2px;padding:3px;height:auto;overflow:hidden;
  background:var(--field-bg);border:1px solid var(--pf-border);border-radius:11px;box-shadow:none}
body.aw-newblocks .page-root .page-dashboard .range-seg-btn,
body.aw-newblocks .page-root .page-dashboard .tab-row button,
body.aw-newblocks #dashboard-modal-mount .range-seg button{
  height:26px;padding:0 10px;border:0;border-right:0;border-radius:8px;background:transparent;
  font-family:var(--pfi-family);font-size:11.5px;font-weight:500;color:var(--label);cursor:pointer;
  transition:background var(--dur) var(--ease),color .14s}
body.aw-newblocks .page-root .page-dashboard .range-seg-btn:hover,
body.aw-newblocks .page-root .page-dashboard .tab-row button:hover,
body.aw-newblocks #dashboard-modal-mount .range-seg button:hover{color:var(--label-hover);background:transparent}
body.aw-newblocks .page-root .page-dashboard .range-seg-btn.active,
body.aw-newblocks .page-root .page-dashboard .tab-row button.active,
body.aw-newblocks #dashboard-modal-mount .range-seg button.active{
  background:var(--active-bg);color:var(--active-text);font-weight:600;box-shadow:none}
body.aw-newblocks .page-root .page-dashboard .range-seg-btn:focus-visible,
body.aw-newblocks .page-root .page-dashboard .tab-row button:focus-visible{outline:0;box-shadow:0 0 0 3px var(--focus-ring)}
body.aw-newblocks .page-root .page-dashboard .action-menu-pop{
  background:var(--pop-bg);border:1px solid var(--pf-border);border-radius:12px;box-shadow:var(--shadow);padding:6px}
body.aw-newblocks .page-root .page-dashboard .action-menu-item{font-family:var(--pfi-family);color:var(--label);border-radius:8px}
body.aw-newblocks .page-root .page-dashboard .action-menu-item:hover{background:var(--row-hover);color:var(--label-hover)}
body.aw-newblocks .page-root .page-dashboard .action-menu-divider{background:var(--divider)}
body.aw-newblocks .page-root .page-dashboard .action-menu-kbd{color:var(--label)}
/* the KPI delta pills and the status-strip tags: the legacy literals (#b04848 / #2e8e5d)
   on their own tints are 4.2:1 / 3.2:1 over the well — the page's danger-text red
   and badge green keep the meaning at AA (review fix 3) */
body.aw-newblocks .page-root .page-dashboard .kpi-delta.down{color:var(--pf-danger-text)}
body.aw-newblocks .page-root .page-dashboard .kpi-delta.up,
body.aw-newblocks .page-root .page-dashboard .sys-pip-tag.tone-ok{color:var(--pf-badge-green)}

/* ================================================================
   9. THE MODALS — the panel's .wf-modal: a dim green scrim, a frosted
      card with the white hairline and the panel's shadow
   ================================================================ */
/* the dashboard's metric / activity modal */
body.aw-newblocks #dashboard-modal-mount .modal-backdrop{
  background:rgba(40,52,46,.32);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
body.aw-newblocks #dashboard-modal-mount .modal-shell{
  font-family:var(--pfi-family);color:var(--pf-text);
  background:rgba(252,253,251,.9);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  border:1px solid var(--pf-border);border-radius:var(--pf-radius-lg);
  box-shadow:var(--shadow),0 28px 70px rgba(40,56,48,.25)}
body.aw-newblocks #dashboard-modal-mount .modal-head{border-bottom:1px solid var(--divider)}
body.aw-newblocks #dashboard-modal-mount .modal-eyebrow{color:var(--label);font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:500}
body.aw-newblocks #dashboard-modal-mount .modal-title{font-family:var(--pfi-family);color:var(--pf-text);font-weight:600;letter-spacing:-.01em}
body.aw-newblocks #dashboard-modal-mount .modal-sub{color:var(--label)}
body.aw-newblocks #dashboard-modal-mount .modal-foot{border-top:1px solid var(--divider);background:transparent;color:var(--label);font-family:var(--pfi-family)}
body.aw-newblocks #dashboard-modal-mount .modal-summary-item,
body.aw-newblocks #dashboard-modal-mount .modal-chart-frame,
body.aw-newblocks #dashboard-modal-mount .modal-breakdown{
  background:var(--well-bg);background-image:none;border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--pf-radius)}
body.aw-newblocks #dashboard-modal-mount .modal-summary-label,
body.aw-newblocks #dashboard-modal-mount .modal-summary-sub,
body.aw-newblocks #dashboard-modal-mount .modal-breakdown-head{color:var(--label)}
body.aw-newblocks #dashboard-modal-mount .modal-breakdown-head{background:transparent;border-bottom:1px solid var(--divider)}
body.aw-newblocks #dashboard-modal-mount .modal-breakdown-row{border-bottom:1px solid var(--divider);color:var(--pf-text)}
body.aw-newblocks #dashboard-modal-mount .modal-breakdown-row:last-child{border-bottom:0}
body.aw-newblocks #dashboard-modal-mount .modal-breakdown-row:hover{background:var(--row-hover)}
body.aw-newblocks #dashboard-modal-mount .modal-summary-value{color:var(--pf-text)}

/* the repeat / loop modal (repeat-modal.js, mounted on <body>) */
body.aw-newblocks .rm-host .rm-backdrop{background:rgba(40,52,46,.32);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
body.aw-newblocks .rm-host .rm-dialog{
  font-family:var(--pfi-family);color:var(--pf-text);
  background:rgba(252,253,251,.94);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  border:1px solid var(--pf-border);border-radius:var(--pf-radius-lg);
  box-shadow:var(--shadow),0 28px 70px rgba(40,56,48,.25)}
body.aw-newblocks .rm-host .rm-header{border-bottom:1px solid var(--divider)}
body.aw-newblocks .rm-host .rm-header h2{font-family:var(--pfi-family);color:var(--pf-text);font-size:16px;font-weight:600;letter-spacing:-.01em}
body.aw-newblocks .rm-host .rm-source-display,
body.aw-newblocks .rm-host .rm-mode-card,
body.aw-newblocks .rm-host .rm-items-preview{
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--pf-radius)}
body.aw-newblocks .rm-host .rm-source-label,
body.aw-newblocks .rm-host .rm-hint,
body.aw-newblocks .rm-host .rm-mode-desc{color:var(--label)}
body.aw-newblocks .rm-host .rm-source-text{color:var(--pf-text)}
body.aw-newblocks .rm-host .rm-mode-card:hover{border-color:var(--accent-line);background:rgba(92,154,126,.07)}
body.aw-newblocks .rm-host .rm-mode-card.selected{border-color:var(--accent-line);background:rgba(92,154,126,.12);box-shadow:0 0 0 2px var(--focus-ring)}
body.aw-newblocks .rm-host .rm-mode-card:focus-visible{outline:0;box-shadow:0 0 0 3px var(--focus-ring)}
body.aw-newblocks .rm-host .rm-mode-name{color:var(--active-text)}

/* the chat dialog shell (index.html #chat-dialog; the messages are the chat's own) */
body.aw-newblocks .chat-backdrop{background:rgba(40,52,46,.32)}
body.aw-newblocks .chat-dialog{
  font-family:var(--pfi-family);color:var(--pf-text);
  background:rgba(252,253,251,.94);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  border-right:1px solid var(--pf-border);
  box-shadow:var(--shadow),0 28px 70px rgba(40,56,48,.2)}
body.aw-newblocks .chat-dialog .chat-dialog-header{background:transparent;border-bottom:1px solid var(--divider)}
body.aw-newblocks .chat-dialog .chat-dialog-title{color:var(--pf-text);font-weight:600}
body.aw-newblocks .chat-dialog .chat-dialog-title .ico-host{color:var(--pf-accent)}
body.aw-newblocks .chat-dialog .chat-history{background:transparent}
body.aw-newblocks .chat-dialog .chat-input-row{background:transparent;border-top:1px solid var(--divider)}
body.aw-newblocks .chat-dialog .chat-dialog-footer{background:transparent;border-top:1px solid var(--divider)}
body.aw-newblocks .chat-dialog .chat-dialog-hint{color:var(--label)}

/* the admin › users purge modal (rendered inside #page-root) */
body.aw-newblocks .page-root .purge-modal-scrim{background:rgba(40,52,46,.32);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
body.aw-newblocks .page-root .purge-modal{
  font-family:var(--pfi-family);color:var(--pf-text);
  background:rgba(252,253,251,.94);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  border:1px solid rgba(184,84,80,.3);border-radius:var(--pf-radius-lg);
  box-shadow:var(--shadow),0 28px 70px rgba(40,56,48,.25)}
body.aw-newblocks .page-root .purge-modal-head{background:rgba(184,84,80,.06);border-bottom:1px solid var(--divider);border-top-left-radius:var(--pf-radius-lg);border-top-right-radius:var(--pf-radius-lg)}
body.aw-newblocks .page-root .purge-modal-head h2{font-family:var(--pfi-family);color:var(--danger);font-weight:600}
body.aw-newblocks .page-root .purge-modal-lead,
body.aw-newblocks .page-root .purge-modal-warn,
body.aw-newblocks .page-root .purge-modal-check-hint{color:var(--label)}
body.aw-newblocks .page-root .purge-modal-field-error{color:var(--pf-danger-text)}

/* ================================================================
   10. NIGHT MODE (review fix 1) — the topbar's Appearance › "Night mode"
       paints the page root #0E1411 with light text (topbar.css:
       html.wf-theme-night body.route-page .page-root) and, by its own
       note, no page component; the legacy pages survive it because their
       cards are opaque white.  The wells above are translucent, so under
       the flag the whole page read as dark text on the night ground
       (measured: the title at 2.1:1, table text at 1.3:1).  The pages
       keep the app's light ground in night mode — the stance the legacy
       cards take — so every contrast measured above holds unchanged.
   ================================================================ */
html.wf-theme-night body.aw-newblocks.route-page .page-root{background:var(--bg);color:var(--pf-text)}
/* round 64 (1.17): the Role row and the purge modal reason */
body.aw-newblocks .page-root .admin-action-value{font-weight:600;margin-right:10px;color:inherit}
body.aw-newblocks .page-root .purge-modal-reason{width:100%;min-height:52px;font:inherit;resize:vertical;box-sizing:border-box}

/* ---- round 65 (2.3.6): a model the price table does not know, on the Usage page ---- */
body.aw-newblocks .page-root .usage-unpriced{display:inline-block;margin-left:8px;padding:1px 8px;border:1px solid var(--accent,#c47d2d);border-radius:999px;background:transparent;color:var(--accent,#c47d2d);font:inherit;font-size:11px;line-height:18px;cursor:pointer;vertical-align:middle}
body.aw-newblocks .page-root .usage-unpriced:hover{background:var(--accent,#c47d2d);color:#fff}

/* round 67: Settings → Workspace (views/settings-workspace.js) */
body.aw-newblocks .page-root .settings-workspace .ws-current-line{margin:0 0 6px;font-size:14px}
body.aw-newblocks .page-root .ws-badge{display:inline-block;padding:2px 10px;border-radius:999px;font:600 11.5px/1.6 ui-monospace,Menlo,monospace;margin-right:8px;vertical-align:middle}
body.aw-newblocks .page-root .ws-badge-ws{background:#DCE9E2;color:#2F6B4D;border:1px solid rgba(47,107,77,.3)}
body.aw-newblocks .page-root .ws-badge-personal{background:#F4F6F5;color:#55655C;border:1px dashed rgba(85,101,92,.45)}
body.aw-newblocks .page-root .ws-inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
body.aw-newblocks .page-root .ws-inline-form .input{flex:1 1 220px;max-width:420px}
body.aw-newblocks .page-root .ws-inline-form select.input{flex:0 1 160px}
body.aw-newblocks .page-root .ws-actions{display:flex;gap:8px;flex-wrap:wrap}
body.aw-newblocks .page-root .ws-danger{color:#8A3B2F}
body.aw-newblocks .page-root table.ws-members,body.aw-newblocks .page-root table.ws-list{width:100%;border-collapse:collapse;margin-top:6px}
body.aw-newblocks .page-root table.ws-members th{text-align:left;font:600 11px/1 ui-monospace,Menlo,monospace;letter-spacing:.04em;text-transform:uppercase;color:#55655C;padding:6px 8px}
body.aw-newblocks .page-root table.ws-members td,body.aw-newblocks .page-root table.ws-list td{padding:7px 8px;border-top:1px solid rgba(85,101,92,.14);vertical-align:middle}
body.aw-newblocks .page-root table.ws-members select.ws-role{min-width:110px}
body.aw-newblocks .page-root tr.ws-row-current td{background:rgba(47,107,77,.06)}
body.aw-newblocks .page-root tr.ws-invited td{color:#55655C}
body.aw-newblocks .page-root .ws-status-invited{font-size:11.5px;color:#8A6A12;background:#FFF4D6;border:1px solid #F0D48A;border-radius:999px;padding:1px 8px}
body.aw-newblocks .page-root .ws-status-active{font-size:11.5px;color:#2F6B4D;background:#DCE9E2;border:1px solid rgba(47,107,77,.3);border-radius:999px;padding:1px 8px}

/* ---- round 68: Admin -> Modules (views/admin-modules.js) — every rule under body.aw-newblocks (spec 32: inert with the flag off) ---- */
body.aw-newblocks .page-root .admin-modules .admin-modules-card + .admin-modules-card{margin-top:16px}
body.aw-newblocks .page-root .admin-modules .admin-modules-lead{margin:0 0 12px;color:var(--label)}
body.aw-newblocks .page-root .admin-modules table.table td,
body.aw-newblocks .page-root .admin-modules table.table th{vertical-align:top}
body.aw-newblocks .page-root .admin-modules .am-tier{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:600;letter-spacing:.02em}
body.aw-newblocks .page-root .admin-modules .am-tier-core{background:rgba(92,154,126,.14);color:var(--active-text,#2f6f4f)}
body.aw-newblocks .page-root .admin-modules .am-tier-pack{background:rgba(138,90,155,.14);color:#8a5a9b}
body.aw-newblocks .page-root .admin-modules .am-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 8px}
body.aw-newblocks .page-root .admin-modules .am-form .input{min-width:120px}
body.aw-newblocks .page-root .admin-modules .am-form-word{color:var(--label)}
body.aw-newblocks .page-root .admin-modules tr.am-expired td{opacity:.6}
body.aw-newblocks .page-root .admin-modules .am-expired-word{color:var(--pf-danger-text,#b54f4b)}

/* ---- round 70: presence on the workflow list's rows (views/workflows.js paintPresence) ---- */
body.aw-newblocks .page-root .wf-presence{display:inline-flex;align-items:center;gap:3px;margin-left:8px;vertical-align:middle}
body.aw-newblocks .page-root .wf-presence__ava{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;
  background:rgba(92,154,126,.18);color:var(--active-text,#2f6f4f);font:700 9.5px/1 ui-monospace,Menlo,monospace;letter-spacing:.02em}
body.aw-newblocks .page-root .wf-presence__run{display:inline-block;width:8px;height:8px;border-radius:50%;background:#D08A2E;animation:wfPresencePulse 1.2s ease-in-out infinite}
