/* ===========================================================================
   landing_features.css - the four feature panes' product shots.

   GENERATED by scripts/build_landing_features.py. Do not hand edit: the next
   run overwrites it.

   A scoped, pruned copy of the inquiry-detail, files, finances and calendar
   rules from ui_concept.css and from those templates' own inline <style>
   blocks, under .zfp. Three deliberate divergences from the app, the same
   three as landing_dashboard.css and for the same reasons:

     - each pane is drawn in a BOX, not a window, so width media queries are
       resolved once at a 1440px viewport and nothing here is responsive;
     - the shell that would position a rail and a topbar is not present, so
       the pane is laid out at its own width and scaled whole;
     - rules the four markups can never reach are pruned.

   Scope is .zfp rather than .m-app: landing declares a lot of one-word
   classes of its own, and a two-class selector outranks a bare one of theirs
   in both directions. The section's own layout lives in the <style> block at
   the top of templates/core/_landing_features.html.
   =========================================================================== */

/* --------------------------------------------------------------------------
   token blocks, hoisted out of the app's :root
   -------------------------------------------------------------------------- */

.zfp{--ink:#E6E9F0;--ink-soft:#9AA4B5;--page:#090909;--paper:#151515;--well:#171717;--well-hover:color-mix(in srgb, var(--accent) 10%, var(--well) 90%);--accent:#6B9FE8;--accent-light:#8FB6EF;--accent-wash:#182131;--series-views:#3987e5;--series-clicks:#D9911F;--series-leads:#7C6FE0;--unread-wash:rgba(88,148,232,.10);--unread-badge:#8FB6EF;--danger:#B4304A;--success:#10B981;--warning:#B87A1E;--gold:#C08A1B;--success-ink:#0B6E4F;--danger-ink:#a32e46;--warning-ink:#8A5A12;--accent-ink:#2D64BC;--tooltip-bg:#0f1115;--tooltip-ink:#f4f5f7;--hairline:rgba(255,255,255,0.09);--rail-bg:#101010;--rail-ink:#E7E7E7;--rail-ink-strong:#F5F5F5;--rail-ink-soft:#B0B0B0;--rail-ink-dim:#8A8A8A;--rail-line:#232323;--rail-hover:#1C1C1C;--radius:3px;--radius-ctl:8px;--radius-input:var(--radius-ctl);--radius-tile:10px;--radius-lg:12px;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(0,0,0,.3);--shadow-md:0 6px 20px rgba(0,0,0,.35);--shadow-lg:0 16px 40px rgba(0,0,0,.45);--font-display: 'Fraunces', Georgia, 'Iowan Old Style', ui-serif, serif;--font-body: 'DM Sans', 'Segoe UI', ui-sans-serif, system-ui, sans-serif;--font-mono: var(--font-body);--font-sans: var(--font-body);--type-display-xl: 600 clamp(30px, 7.6vw, 56px)/1.06 var(--font-display);--type-display-l:  600 clamp(25px, 5.6vw, 40px)/1.12 var(--font-display);--type-display-m:  600 clamp(22px, 4.4vw, 32px)/1.18 var(--font-display);--fs-value-xl: clamp(32px, 8.0vw, 50px);--fs-value-lg: clamp(24px, 5.0vw, 30px);--fs-value-md: clamp(22px, 4.5vw, 28px);--fs-value-sm: clamp(21px, 4.4vw, 27px);--fs-value:    clamp(21px, 4.2vw, 26px);--fs-h2:    clamp(18.5px, 2.6vw, 22px);--fs-h3:    clamp(16.5px, 2.0vw, 18px);--fs-panel: clamp(15.5px, 1.9vw, 17px);--track-display-xl:-.024em;--track-display-l: -.020em;--track-display-m: -.016em;--type-h1: 700 28px/1.22 var(--font-body);--type-h2: 600 22px/1.30 var(--font-body);--type-h3: 600 18px/1.36 var(--font-body);--type-h4: 600 16px/1.42 var(--font-body);--track-h1:-.017em;--track-h2:-.013em;--track-h3:-.008em;--track-h4:-.004em;--type-body-lg: 400 17px/1.60 var(--font-body);--type-body:    400 15px/1.60 var(--font-body);--type-body-sm: 400 13px/1.55 var(--font-body);--type-label: 500 12px/1.25 var(--font-body);--type-data:  400 13px/1.40 var(--font-body);--type-code:  400 13px/1.50 var(--font-body);--track-label:.08em;--track-eyebrow:.14em;--measure-body:68ch;--measure-display:56ch;--fs-sm:13px;--lh-sm:1.55;--fs-xs:12.5px;--lh-xs:1.50;--fs-2xs:11.5px;--lh-2xs:1.45;--fs-3xs:10.5px;--lh-3xs:1.40;--type-label-sm: 500 var(--fs-3xs)/1.2 var(--font-body);--space-1:  4px;--space-2:  clamp(6px,  .7vw,  8px);--space-3:  clamp(8px,  .9vw, 10px);--space-4:  clamp(8px,  1.0vw, 12px);--space-5:  clamp(10px, 1.2vw, 14px);--space-6:  clamp(12px, 1.4vw, 16px);--space-7:  clamp(14px, 1.7vw, 20px);--space-8:  clamp(16px, 2.0vw, 24px);--space-9:  clamp(20px, 2.6vw, 32px);--space-10: clamp(22px, 3.0vw, 36px);--space-11: clamp(32px, 5.0vw, 56px);--space-12: clamp(44px, 7.0vw, 80px);--space-3xs: var(--space-1);--space-2xs: var(--space-2);--space-xs:  var(--space-4);--space-sm:  var(--space-6);--space-md:  var(--space-8);--space-lg:  var(--space-10);--space-xl:  var(--space-11);--space-2xl: var(--space-12);--space-3xl: clamp(56px, 9vw, 120px);--brand:#2F6BC9;--brand-light:var(--accent-light);--brand-wash:var(--accent-wash);--brand-hover:#3B74CC;--brand-active:#285BAB;--brand-deep:#A9C7F0;--brand-line:#2A3F5E;--brand-wash-2:#1F2C42;--on-brand:#FFFFFF;--success-deep:var(--success-ink);--success-line:#1E4635;--success-wash:#12291F;--warning-deep:#E0A64A;--warning-line:#4A3A1B;--warning-wash:#2A2011;--danger-deep:var(--danger-ink);--danger-line:#4E1F29;--danger-wash:#2B1319;--danger-hover:#CD3E59;--info:var(--brand);--info-deep:var(--brand-deep);--info-line:var(--brand-line);--info-wash:var(--brand-wash);--st-new:#A99CE8;--st-new-wash:#1E1A33;--st-qualified:#6B9FE8;--st-qualified-wash:#182131;--st-proposal:#D9A44E;--st-proposal-wash:#2A2011;--st-booked:#45C08D;--st-booked-wash:#12291F;--st-done:#9AA4B5;--st-done-wash:#1E222B;--st-lost:#E08A72;--st-lost-wash:#2B1610;--surface-page:var(--page);--surface-card:var(--paper);--surface-sunk:var(--well);--surface-raised:var(--paper);--surface-inverse:var(--tooltip-bg);--on-inverse:var(--tooltip-ink);--scrim:rgba(4,6,10,.62);--line-hair:1px;--line:1.5px;--line-thick:2px;--radius-xs:var(--radius);--radius-sm:4px;--radius-md:var(--radius-ctl);--radius-xl:var(--radius-lg);--shadow-1:var(--shadow-sm);--shadow-2:var(--shadow-md);--shadow-3:var(--shadow-lg);--shadow-4:0 24px 56px -16px rgba(0,0,0,.62), 0 4px 12px -4px rgba(0,0,0,.4);--focus-w:2px;--focus-offset:2px;--focus-color:var(--brand);--focus-halo:0 0 0 3px var(--brand-wash-2);--z-base:0;--z-sticky:20;--z-dropdown:300;--z-scrim:400;--z-modal:500;--z-toast:700;--z-tooltip:900;--z-preloader:9999;--dur-1:120ms;--dur-2:180ms;--dur-3:260ms;--dur-4:420ms;--ease-out:cubic-bezier(.22,.61,.36,1);--ease-in-out:cubic-bezier(.65,0,.35,1);--ease-exit:cubic-bezier(.4,0,1,1);--row-h:44px;--row-px:14px;--cell-py:11px}
.zfp[data-theme="dark"]{--tooltip-bg:#31363F;--surface-inverse:#0f1115;--ink:#E6E9F0;--ink-soft:#9AA4B5;--page:#090909;--paper:#151515;--well:#171717;--well-hover:color-mix(in srgb, var(--accent) 10%, var(--well) 90%);--accent:#6B9FE8;--accent-light:#8FB6EF;--accent-wash:#182131;--series-views:#3987e5;--series-clicks:#D9911F;--series-leads:#7C6FE0;--unread-wash:rgba(88,148,232,.10);--unread-badge:#8FB6EF;--hairline:rgba(255,255,255,0.09);--success-ink:#34d399;--danger-ink:#f2879e;--warning-ink:#E0A64A;--accent-ink:#8FB6EF;--gold-ink:#EAC06B;--shadow-sm:0 1px 2px rgba(0,0,0,.3);--shadow-md:0 6px 20px rgba(0,0,0,.35);--shadow-lg:0 16px 40px rgba(0,0,0,.45)}
.zfp[data-theme="light"]{--ink:#0F172A;--ink-soft:#475569;--page:#F5F6F8;--paper:#FFFFFF;--well:#F1F3F6;--well-hover:color-mix(in srgb, var(--accent) 8%, var(--well) 92%);--accent:#2D64BC;--accent-light:#5285D6;--accent-wash:#EAF0FA;--series-views:#2a78d6;--series-clicks:#C17D12;--series-leads:#6355C8;--unread-wash:rgba(45,100,188,.06);--unread-badge:#13418F;--hairline:rgba(15,23,42,0.10);--success-ink:#0B6E4F;--danger-ink:#a32e46;--warning-ink:#8A5A12;--accent-ink:#2D64BC;--gold-ink:#8F6108;--shadow-sm:0 1px 2px rgba(15,23,42,.05);--shadow-md:0 6px 20px rgba(15,23,42,.07);--shadow-lg:0 16px 40px rgba(15,23,42,.09);--brand:#2D64BC;--brand-hover:#27579F;--brand-active:#1B3F7A;--brand-deep:#1B3F7A;--brand-line:#C6D8F2;--brand-wash-2:#DCE7F8;--on-brand:#FFFFFF;--success-line:#B8DCCB;--success-wash:#E7F5EF;--warning-deep:#8A5A12;--warning-line:#E8D3A7;--warning-wash:#FBF3E4;--danger-line:#E9C7BC;--danger-wash:#FAEEEA;--danger-hover:#8E2439;--st-new:#5B4B9E;--st-new-wash:#F0EEF9;--st-qualified:#2D64BC;--st-qualified-wash:#EDF2FB;--st-proposal:#946213;--st-proposal-wash:#FBF3E4;--st-booked:#1E7A55;--st-booked-wash:#E9F3EE;--st-done:#39414E;--st-done-wash:#EEF0F3;--st-lost:#A93F28;--st-lost-wash:#FAEEEA;--scrim:rgba(12,16,22,.44);--shadow-4:0 24px 56px -16px rgba(18,22,28,.22), 0 4px 12px -4px rgba(18,22,28,.08)}
.zfp{--sidebar-w:232px;--topbar-h:72px}
.zfp{--rail-ease:cubic-bezier(.22,.61,.36,1);--rail-in:.22s;--rail-out:.16s;--rail-content-delay:.1s;--rail-content-in:.18s;--rail-content-out:.12s}
.zfp{--btn-h-sm:32px;--btn-h-md:38px;--btn-h-lg:46px;--btn-px-sm:var(--space-4);--btn-px-md:var(--space-6);--btn-px-lg:var(--space-7);--btn-gap:7px;--btn-sq-sm:var(--btn-h-sm);--btn-sq-md:var(--btn-h-md);--btn-sq-lg:var(--btn-h-lg);--icon-inline:1.15em;--icon-stroke:1.5}

/* --------------------------------------------------------------------------
   the app's own rules, scoped and pruned
   -------------------------------------------------------------------------- */
.zfp .panel,.zfp .pill{
    transition:background-color .18s ease, border-color .18s ease, color .18s ease;
  }
@media (prefers-reduced-motion: reduce){.zfp .panel,.zfp .pill{ transition:none; }}
@keyframes sidebar-content-in{
    from{ opacity:0; transform:translateX(-8px); }
    to{ opacity:1; transform:translateX(0); }
  }
@keyframes sidebar-content-out{
    from{ opacity:1; transform:translateX(0); }
    to{ opacity:0; transform:translateX(-8px); }
  }
.zfp .main-inner{ max-width:1180px; margin:0 auto; padding:var(--space-8) var(--space-10) 60px; }
@keyframes search-item-in{
    from{ opacity:0; transform:translateY(6px); }
    to{ opacity:1; transform:translateY(0); }
  }
@property --rim-angle{ syntax:'<angle>'; initial-value:0deg; inherits:false; }
@keyframes upgrade-rim-spin{ to{ --rim-angle:572deg; } }
@keyframes nf-spin{ to{ transform:rotate(360deg); } }
.zfp .topline{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:var(--space-7);
    margin-bottom:clamp(14px, 4vw, 26px);
    flex-wrap:wrap;
  }
.zfp .topline > div:first-child{ flex:1 1 0; min-width:0; }
.zfp .topline > button,.zfp .topline > a.iq-btn,.zfp .topline > .topline-actions,.zfp .topline > span{ flex:0 0 auto; }
.zfp .eyebrow{
    font-weight:500;
    font-size:clamp(10.5px, 1.1vw, 12px);
    line-height:1.2;
    letter-spacing:var(--track-eyebrow);
    text-transform:uppercase;
    color:var(--accent);
    margin:0 0 6px;
  }
.zfp .u-label{
    font:var(--type-label);
    letter-spacing:var(--track-label);
    text-transform:uppercase;
    color:var(--ink-soft);
    margin:0;
  }
.zfp .topline .sub{ color:var(--ink-soft); font-size:clamp(var(--fs-xs), 3vw, var(--fs-sm)); margin-top:4px; }
.zfp .topline .sub,.zfp .page-head .sub{ max-width:var(--measure-body); }
.zfp .cal-empty{ max-width:var(--measure-body); margin-inline:auto; }
.zfp .panel{
    background:none;
    border:1px solid var(--hairline);
    border-radius:var(--radius-lg);
    overflow:hidden;
    display:flex;
    flex-direction:column;
  }
.zfp .upcoming-date{
    width:38px; height:38px; flex-shrink:0;
    border-radius:var(--radius);
    border:1px solid var(--hairline);
    display:flex; flex-direction:column; align-items:center; justify-content:center;
  }
.zfp .upcoming-day{ font-size:var(--fs-sm); line-height:1; font-weight:600;}
.zfp .upcoming-mon{ font-size:var(--fs-3xs); letter-spacing:.05em; text-transform:uppercase; color:var(--ink-soft); }
.zfp .cal-layout{
    display:grid;
    grid-template-columns:minmax(0, 1.5fr) minmax(0, 1fr);
    gap:var(--space-6);
    align-items:start;
  }
.zfp .cal-card{ padding:var(--space-6) var(--space-6) var(--space-7); overflow:visible; }
.zfp .cal-header{
    display:flex; align-items:stretch; justify-content:center;
    gap:6px;
    margin-bottom:var(--space-6);
  }
.zfp .cal-arrow{
    aspect-ratio:1; flex-shrink:0;
    padding:var(--space-2);
    display:flex; align-items:center; justify-content:center;
    border:1px solid var(--hairline); border-radius:var(--radius-ctl);
    background:none; color:var(--ink-soft); cursor:pointer;
  }
.zfp .cal-arrow:hover{ background:var(--well-hover); color:var(--ink); }
.zfp .cal-title-wrap{ position:relative; flex:1; display:flex; justify-content:center; }
.zfp .cal-title-btn{
    display:inline-flex; align-items:center; gap:var(--space-2);
    padding:var(--space-2) var(--space-5);
    border:1px solid var(--hairline); border-radius:var(--radius-ctl);
    background:none; color:var(--ink); font-size:16px;
    cursor:pointer; font-weight:600;}
.zfp .cal-title-btn:hover{ background:var(--well-hover); }
.zfp .cal-title-btn svg{ color:var(--ink-soft); flex-shrink:0; transition:transform .15s ease; }
.zfp .cal-title-btn[aria-expanded="true"] svg{ transform:rotate(180deg); }
.zfp .cal-weekdays{
    display:grid; grid-template-columns:repeat(7, minmax(0, 1fr));
    padding:0 2px;
    margin-bottom:6px;
  }
.zfp .cal-weekdays span{
    text-align:center; font-size:var(--fs-3xs); letter-spacing:.05em;
    color:var(--ink-soft);
  }
.zfp .cal-grid{
    display:grid; grid-template-columns:repeat(7, minmax(0, 1fr));
    gap:4px;
  }
.zfp .cal-day{
    position:relative;
    aspect-ratio:1;
    display:flex; align-items:center; justify-content:center;
    border:1px solid transparent; border-radius:var(--radius-ctl);
    background:none; color:var(--ink);
    font-size:var(--fs-xs);
    cursor:pointer;
  }
.zfp .cal-day:hover{ background:var(--well-hover); }
.zfp .cal-day.dim{ color:var(--ink-soft); opacity:.4; }
.zfp .cal-day.today{ border-color:var(--accent); font-weight:700; }
.zfp .cal-day .cal-dot{
    position:absolute; bottom:4px; left:50%; transform:translateX(-50%);
    width:6px; height:6px; border-radius:50%;
    background:var(--accent);
  }
.zfp .cal-booking-list{
    display:flex; flex-direction:column; gap:var(--space-3);
    padding:var(--space-5) var(--space-6) var(--space-6);
    max-height:520px; overflow-y:auto;
  }
.zfp .cal-empty{ padding:var(--space-8) var(--space-6); text-align:center; color:var(--ink-soft); font-size:var(--fs-sm); }
@media (prefers-reduced-motion: reduce){.zfp .cal-title-btn svg{ transition:none; }}
.zfp .panel-head{
    display:flex; justify-content:space-between; align-items:center;
    flex-wrap:wrap; gap:var(--space-3);
    padding:var(--space-6) var(--space-7);
    border-bottom:1px solid var(--hairline);
  }
.zfp .panel-head h2{
    font-family:var(--font-display);
    font-size:var(--fs-panel); font-weight:500; margin:0;
  }
.zfp .link{
    font-size:var(--fs-xs); color:var(--accent); font-weight:600; text-decoration:none; cursor:pointer; background:none; border:none;
  }
.zfp .link.outline-btn{
    border:1px solid var(--hairline); border-radius:var(--radius-ctl);
    padding:5px var(--space-4);
  }
.zfp .link.outline-btn:hover{ background:var(--well-hover); border-color:var(--accent); }
.zfp .pay-body{ padding:var(--space-6) var(--space-7) var(--space-7); display:flex; flex-direction:column; gap:var(--space-5); }
.zfp .pill{
    display:inline-flex; align-items:center; gap:6px;
    font-size:var(--fs-3xs); font-weight:600;
    letter-spacing:.05em; text-transform:uppercase;
    padding:3px var(--space-3) 3px var(--space-2);
    border-radius:20px;
    white-space:nowrap; flex-shrink:0;
  }
.zfp .pill::before{ content:""; width:6px; height:6px; border-radius:50%; flex:none; }
.zfp .pill.followup{ background:var(--st-proposal-wash); color:var(--st-proposal); }
.zfp .pill.followup::before{ background:var(--st-proposal); }
.zfp .pill.booked{ background:var(--st-booked-wash); color:var(--st-booked); }
.zfp .pill.booked::before{ background:var(--st-booked); }
.zfp .pill.late{ background:var(--danger-wash); color:var(--danger-deep); }
.zfp .pill.late::before{ background:var(--danger); }
.zfp .pill.due{ background:var(--warning-wash); color:var(--warning-deep); }
.zfp .pill.due::before{ background:var(--warning); }
.zfp .amount{ font-variant-numeric:tabular-nums; }
.zfp .iqx-per-dd{ position:relative; }
.zfp .iqx-per-btn{
    display:inline-flex; align-items:center; gap:7px;
    padding:6px var(--space-3);
    border:1px solid var(--hairline); border-radius:var(--radius-ctl);
    background:none; color:var(--ink); font-size:var(--fs-xs); cursor:pointer;
  }
.zfp .iqx-per-btn:hover{ background:var(--well-hover); }
.zfp .iqx-per-btn:focus-visible{ outline:none; border-color:var(--accent); }
.zfp .iqx-per-btn svg{ width:12px; height:12px; transition:transform .15s ease; }
@keyframes iq-fade-in{
    from{ opacity:0; transform:translateY(6px); }
    to{ opacity:1; transform:translateY(0); }
  }
@keyframes sk-shimmer{
    0%{ transform:translateX(-150%); }
    60%, 100%{ transform:translateX(250%); }
  }
.zfp .iq-more-dd{ position:relative; }
.zfp .iq-more-btn{
    padding:var(--space-2) var(--space-3);
    background:var(--well);
  }
.zfp .iq-more-btn:hover{
    background:var(--well-hover);
  }
.zfp .iq-btn.iq-more-btn{ background:var(--well); }
.zfp .iq-btn.iq-more-btn:hover{ background:var(--well-hover); }
@keyframes bk-spin{ to{ transform:rotate(360deg); } }
.zfp .btn,.zfp .iq-btn{
    display:inline-flex; align-items:center; justify-content:center;
    gap:var(--btn-gap);
    height:var(--btn-h-md); padding:0 var(--btn-px-md);
    border-radius:var(--radius-ctl);
    font:inherit; font-size:var(--fs-sm); font-weight:600; line-height:1;
    border:1px solid transparent;
    background:none; color:var(--ink);
    cursor:pointer; text-decoration:none; white-space:nowrap;
    position:relative;
    transition:background var(--dur-1) var(--ease-out),
               border-color var(--dur-1) var(--ease-out),
               color var(--dur-1) var(--ease-out),
               box-shadow var(--dur-1) var(--ease-out);
  }
.zfp .btn:hover,.zfp .iq-btn:hover{ text-decoration:none; }
.zfp .btn[hidden],.zfp .iq-btn[hidden]{ display:none !important; }
.zfp .iq-btn.primary{
    background:var(--brand); border-color:var(--brand); color:var(--on-brand);
  }
.zfp .iq-btn.primary:hover{ background:var(--brand-hover); border-color:var(--brand-hover); }
.zfp .iq-btn.primary:active{
    background:var(--brand-active); border-color:var(--brand-active); color:var(--on-brand);
  }
.zfp .btn[hidden],.zfp .iq-btn[hidden]{ display:none; }
.zfp .iq-btn{ border-color:var(--hairline); color:var(--ink); }
.zfp .iq-btn:hover{ background:var(--well-hover); }
.zfp .btn:focus-visible,.zfp .iq-btn:focus-visible{
    outline:var(--focus-w) solid var(--focus-color);
    outline-offset:var(--focus-offset);
    box-shadow:var(--focus-halo);
  }
.zfp .btn:disabled,.zfp .iq-btn:disabled,.zfp .btn[aria-disabled="true"],.zfp .iq-btn[aria-disabled="true"]{
    background:var(--surface-sunk); color:var(--ink-soft); border-color:transparent;
    cursor:not-allowed; box-shadow:none;
  }
.zfp .btn[aria-busy="true"],.zfp .iq-btn[aria-busy="true"]{ pointer-events:none; cursor:progress; }
.zfp .iq-grid{ display:grid; grid-template-columns:minmax(0, 1.7fr) minmax(0, 1fr); gap:var(--space-6); align-items:start; }
.zfp .iq-main{ display:flex; flex-direction:column; gap:var(--space-6); }
.zfp .iq-side{ display:flex; flex-direction:column; gap:var(--space-6); }
.zfp .iq-client{
    display:flex; align-items:center; gap:var(--space-5); flex-wrap:wrap;
    padding:var(--space-7); border-bottom:1px solid var(--hairline);
  }
.zfp .iq-avatar{
    width:48px; height:48px; border-radius:50%; flex-shrink:0;
    background:linear-gradient(135deg, var(--brand), var(--brand-light));
    display:flex; align-items:center; justify-content:center;
    color:#fff; font-size:var(--fs-h3); font-weight:600;}
.zfp .iq-client-main{ flex:1; min-width:min(180px, 100%); }
.zfp .iq-client-name{ font-size:var(--fs-h3); font-weight:600; overflow-wrap:anywhere;}
.zfp .iq-contact-row{ display:flex; flex-wrap:wrap; gap:var(--space-2); margin-top:var(--space-2); }
.zfp .iq-chip{
    display:inline-flex; align-items:center; gap:6px;
    font-size:var(--fs-xs); color:var(--ink-soft);
    border:1px solid var(--hairline); border-radius:20px;
    padding:5px var(--space-3); text-decoration:none;
    max-width:100%; min-width:0; overflow-wrap:anywhere;
  }
.zfp .iq-chip:hover{ background:var(--well-hover); color:var(--ink); }
.zfp .iq-chip-link{ color:inherit; text-decoration:none; }
.zfp .iq-chip-link:hover{ text-decoration:underline; }
.zfp .iq-chip-copy{
    display:inline-flex; align-items:center; justify-content:center; flex-shrink:0;
    width:18px; height:18px; margin:-3px -4px -3px 0;
    border:none; border-radius:5px;
    background:none; color:var(--ink-soft); cursor:pointer; padding:0;
  }
.zfp .iq-chip-copy:hover{ background:var(--paper); color:var(--ink); }
.zfp .iq-facts{
    display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:var(--space-6);
    padding:var(--space-6) var(--space-7); border-bottom:1px solid var(--hairline);
  }
.zfp .iq-fact{ display:flex; gap:var(--space-3); align-items:flex-start; }
.zfp .iq-fact-icon{
    width:32px; height:32px; flex-shrink:0;
    border-radius:var(--radius-ctl);
    background:var(--well);
    display:flex; align-items:center; justify-content:center;
    color:var(--accent);
  }
.zfp .iq-fact-main{ min-width:0; flex:1; }
.zfp .iq-fact-k{ font-size:var(--fs-3xs); letter-spacing:.05em; text-transform:uppercase;
    color:var(--ink-soft);
  }
.zfp .iq-fact-v{ font-size:var(--fs-sm); font-weight:600; margin-top:2px; }
.zfp .iq-fact-v .iq-detail-v{ font-size:var(--fs-sm); margin-top:0; }
.zfp .iq-fact-star{
    flex-shrink:0; display:flex; align-items:center; justify-content:center;
    width:24px; height:24px; padding:0; margin:-2px -2px 0 0;
    border:none; background:none; border-radius:6px; cursor:pointer;
    color:var(--ink-soft); opacity:0; transition:opacity .12s, color .12s, background .12s;
  }
.zfp .iq-fact-star:hover{ background:var(--well-hover); color:var(--warning-ink); }
.zfp .iq-fact-star.is-pinned{ opacity:1; color:var(--warning-ink); }
.zfp .iq-fact:hover .iq-fact-star,.zfp .iq-detail:hover .iq-fact-star,.zfp .iq-fact-star:focus-visible{ opacity:1; }
.zfp .iq-section{ padding:var(--space-6) var(--space-7); border-bottom:1px solid var(--hairline); }
.zfp .iq-section:last-child{ border-bottom:none; }
.zfp .iq-section-title{ font-size:var(--fs-3xs); letter-spacing:.06em; text-transform:uppercase;
    color:var(--ink-soft); margin-bottom:var(--space-4);
  }
.zfp .iq-detail-grid{ display:grid; grid-template-columns:repeat(2, 1fr); gap:var(--space-5) var(--space-7); }
.zfp .iq-detail-head{ display:flex; align-items:center; gap:6px; }
.zfp .iq-detail-icon{ display:flex; align-items:center; color:var(--ink-soft); flex-shrink:0; }
.zfp .iq-detail-head .iq-detail-k{ flex:1; min-width:0; }
.zfp .iq-detail-head .iq-fact-star{ margin:0 -4px 0 0; }
.zfp .iq-detail-k{ font-size:var(--fs-2xs); color:var(--ink-soft); }
.zfp .iq-detail-grid > *{ min-width:0; }
.zfp .iq-detail-v{ font-size:var(--fs-sm); margin-top:3px; overflow-wrap:anywhere; }
.zfp .iq-detail-toggle{
    display:inline-flex; align-items:center; gap:5px; font-size:var(--fs-3xs); font-weight:600;
    padding:3px var(--space-2); border-radius:20px; margin-top:3px;
  }
.zfp .iq-detail-toggle.yes{ background:rgba(16,185,129,.13); color:var(--success-ink); }
.zfp .iq-detail-toggle.no{ background:var(--well); color:var(--ink-soft); }
.zfp .iq-detail-swatches{ display:flex; flex-wrap:wrap; gap:6px; margin-top:5px; }
.zfp .iq-swatch-chip{
    display:inline-flex; align-items:center; gap:7px;
    font-size:var(--fs-2xs); color:var(--ink);
    padding:4px var(--space-3) 4px 6px; border-radius:20px;
    background:var(--well); border:1px solid var(--hairline);
  }
.zfp .iq-swatch-dot{ width:14px; height:14px; border-radius:50%; box-shadow:0 0 0 1px var(--hairline); flex-shrink:0; }
.zfp .iq-swatch-hex{ font-size:var(--fs-3xs); color:var(--ink-soft); }
.zfp .iq-swatch-copy{
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
    width:18px; height:18px;
    border:none; background:none; border-radius:5px;
    color:var(--ink-soft); cursor:pointer; padding:0;
  }
.zfp .iq-swatch-copy:hover{ background:var(--paper); color:var(--ink); }
.zfp .iq-message-body{ font-size:var(--fs-sm); line-height:1.7; color:var(--ink); margin:0; overflow-wrap:anywhere; }
.zfp .iq-side-block{ padding:var(--space-6) var(--space-7) var(--space-7); display:flex; flex-direction:column; gap:var(--space-3); }
.zfp .iq-side-rows{ display:flex; flex-direction:column; }
.zfp .iq-side-row{
    display:flex; justify-content:space-between; align-items:center; gap:var(--space-3);
    padding:var(--space-5) var(--space-7);
    border-bottom:1px solid var(--hairline);
  }
.zfp .iq-side-row[hidden]{ display:none; }
.zfp .iq-side-row:last-child{ border-bottom:none; }
.zfp .iq-side-row-info{ min-width:0; flex:1; }
.zfp .iq-side-ttl{ font-size:var(--fs-sm); font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.zfp .iq-side-sub{ font-size:var(--fs-2xs); color:var(--ink-soft); margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.zfp .iq-side-sub .pill{ margin-right:4px; }
.zfp .iq-side-link{ font-size:var(--fs-xs); font-weight:600; color:var(--accent); text-decoration:none; flex-shrink:0; }
.zfp .iq-side-row-actions{ display:flex; align-items:center; gap:var(--space-3); flex-shrink:0; }
.zfp .iq-copy-link{
    display:inline-flex; align-items:center; justify-content:center; position:relative;
    flex-shrink:0; width:28px; height:28px; margin:-5px 0;
    border:1px solid transparent; border-radius:var(--radius-ctl);
    background:none; color:var(--ink-soft); cursor:pointer; padding:0;
    transition:background .12s ease, color .12s ease, border-color .12s ease;
  }
.zfp .iq-copy-link:hover{ background:var(--well-hover); border-color:var(--hairline); color:var(--ink); }
.zfp .iq-copy-link:active{ transform:scale(.92); }
.zfp .iq-copy-link:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.zfp .iq-copy-link-done{
    position:absolute; inset:0; margin:auto;
    opacity:0; transform:scale(.6); color:var(--success-ink);
    transition:opacity .14s ease, transform .14s ease;
  }
.zfp .iq-copy-link > .icon{ transition:opacity .14s ease; }
@media (prefers-reduced-motion: reduce){.zfp .iq-copy-link,.zfp .iq-copy-link > .icon,.zfp .iq-copy-link-done{ transition:none; }
.zfp .iq-copy-link:active{ transform:none; }}
.zfp .iq-side-empty{
    display:flex; flex-direction:column; align-items:center; text-align:center;
    padding:var(--space-9) var(--space-7);
  }
.zfp .iq-side-empty-icon{
    display:inline-flex; align-items:center; justify-content:center;
    width:46px; height:46px; margin-bottom:var(--space-5); border-radius:var(--radius-lg);
    
    background:var(--warning-wash); color:var(--warning-ink);
  }
.zfp .iq-side-empty-ttl{ font-size:var(--fs-h3); font-weight:600; color:var(--ink); margin-bottom:6px; }
.zfp .iq-side-empty .sub{
    font-size:var(--fs-xs); line-height:1.55; max-width:34ch;
    margin:0 0 var(--space-6); text-wrap:balance;
  }
.zfp .iq-side-empty .iq-btn:hover{
    background:var(--brand-wash); border-color:var(--brand-line); color:var(--brand-deep);
  }
.zfp .iq-side-empty .iq-btn svg{ opacity:.75; }
.zfp .bk-ms-row .iq-side-row-info{ flex:1; min-width:0; }
.zfp .bk-ms-right{ display:flex; align-items:center; gap:var(--space-5); flex-shrink:0; }
.zfp .bk-ms-meta{ text-align:right; }
.zfp .bk-ms-amount{ font-size:var(--fs-sm); }
.zfp .bk-ms-pct{ font-size:var(--fs-2xs); color:var(--ink-soft); margin-top:1px; white-space:nowrap; }
.zfp .bk-ms-row{ transition:background-color .55s ease, box-shadow .55s ease; }
@media (prefers-reduced-motion: reduce){.zfp .bk-ms-row{ transition:none; }}
.zfp .bk-ms-more-btn{ border:none; background:none; padding:4px; border-radius:6px; color:var(--ink-soft); cursor:pointer; display:flex; }
.zfp .bk-ms-more-btn:hover{ background:var(--well-hover); color:var(--ink); }
.zfp .bk-ms-date{ width:44px; flex:none; font-size:var(--fs-xs); font-weight:500; color:var(--ink-soft); }
.zfp .bk-pay-track{ display:flex; gap:2px; height:6px; margin:0 0 var(--space-2); background:color-mix(in srgb, var(--accent) 16%, transparent); border-radius:var(--radius-pill); overflow:hidden; }
.zfp .bk-pay-seg{ height:100%; display:block; }
.zfp .bk-pay-seg.paid{ background:var(--accent); }
.zfp .bk-pay-seg.late{ background:var(--danger); }
.zfp .bk-pay-seg.due{ background:var(--accent); }
.zfp .bk-pay-legend{ display:flex; flex-wrap:wrap; gap:var(--space-5); font-size:var(--fs-2xs); color:var(--ink-soft); }
.zfp .bk-pay-legend i{ display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:5px; vertical-align:1px; background:color-mix(in srgb, var(--accent) 30%, transparent); }
.zfp .bk-pay-legend .k-paid i{ background:var(--accent); }
.zfp .bk-pay-balance{ display:flex; justify-content:space-between; align-items:last baseline; gap:var(--space-6); flex-wrap:wrap; }
.zfp .bk-pay-balance-label{ font-size:var(--fs-xs); font-weight:500; color:var(--ink-soft); margin:0 0 1px; }
.zfp .bk-pay-balance-figure{ font-family:var(--font-display); font-size:var(--fs-value-lg); font-weight:500; line-height:1.05; letter-spacing:-.01em; margin:0; }
.zfp .bk-pay-stats-inline{ display:flex; align-items:last baseline; gap:var(--space-7); }
.zfp .bk-pay-stat{ text-align:right; }
.zfp .bk-pay-stat span{ display:block; font-size:var(--fs-2xs); color:var(--ink-soft); margin-bottom:1px; }
.zfp .bk-pay-stat b{ font-size:15px; font-weight:500; letter-spacing:-.01em; }
.zfp .bk-pay-sched-head{
    padding:var(--space-5) var(--space-7) 2px; margin-top:6px; border-top:1px solid var(--hairline);
    font-size:var(--fs-3xs); font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft);
  }
.zfp .bk-tl-bell{
    display:flex; align-items:center; justify-content:center;
    width:26px; height:26px; flex-shrink:0;
    border:none; background:none; border-radius:6px;
    cursor:pointer; padding:0;
  }
.zfp .bk-tl-bell:hover{ background:var(--well-hover); }
.zfp .bk-tl-bell.on{ color:var(--accent); }
.zfp .bk-tl-bell.on .bk-bell-slash{ display:none; }
.zfp .bk-tl-countdown{ color:var(--ink-soft); }
.zfp .iq-tl-ring{ display:flex; align-items:center; justify-content:center; color:transparent; }
.zfp .bk-portal{
    border:1px solid var(--hairline); border-radius:var(--radius-lg);
    padding:var(--space-4) var(--space-5); margin-top:2px;
    display:flex; flex-direction:column; gap:var(--space-2);
  }
.zfp .bk-portal-head{ display:flex; justify-content:space-between; align-items:center; gap:var(--space-2); }
.zfp .bk-portal-label{ font-size:var(--fs-3xs); letter-spacing:.05em; text-transform:uppercase;
    color:var(--ink-soft);
  }
.zfp .bk-portal-row{ display:flex; align-items:center; justify-content:space-between; gap:var(--space-2); }
.zfp .bk-portal-link{ flex:1 1 auto; min-width:0; font-size:var(--fs-xs); font-weight:600; color:var(--accent); text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.zfp .bk-portal-copy{
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
    width:26px; height:26px;
    border:1px solid var(--hairline); background:none; border-radius:7px;
    color:var(--ink-soft); cursor:pointer; padding:0;
  }
.zfp .bk-portal-copy:hover{ background:var(--well-hover); color:var(--ink); }
.zfp .bk-portal-seen{ font-size:var(--fs-2xs); color:var(--ink-soft); }
@keyframes bkUpdatesIn{ from{ opacity:0; transform:translateY(-6px); } to{ opacity:1; transform:translateY(0); } }
@keyframes bkUpdatesPulse{
    0%{ opacity:.55; transform:scale(1); }
    100%{ opacity:0; transform:scale(1.03); }
  }
@keyframes bk-done-pop{
    from{ transform:scale(.7); opacity:0; }
    to{ transform:scale(1); opacity:1; }
  }
.zfp .iq-note-textarea:focus-visible{
    outline:none; border-color:var(--focus-color); box-shadow:var(--focus-halo);
  }
@keyframes lfIn{ from{ opacity:0; transform:translateY(-4px); } to{ opacity:1; transform:translateY(0); } }
@keyframes bkUploadItemIn{ from{ opacity:0; transform:translateY(-4px); } to{ opacity:1; transform:translateY(0); } }
@keyframes bkUploadItemOut{ from{ opacity:1; transform:scale(1); } to{ opacity:0; transform:scale(.97); } }
@keyframes pmBtnSpin{ to{ transform:rotate(360deg); } }
@keyframes pmCheckDraw{ to{ stroke-dashoffset:0; } }
@keyframes bkVaultRowIn{ from{ opacity:0; transform:translateY(-6px); background:var(--accent-wash); } to{ opacity:1; transform:translateY(0); } }
.zfp .iq-pipeline-card{ overflow:visible; }
.zfp .iq-status-dd{ position:relative; }
.zfp .iq-status-btn{
    width:100%;
    display:flex; align-items:center; gap:var(--space-2);
    border:1px solid var(--hairline); border-radius:var(--radius-ctl);
    background:var(--well); color:var(--ink); font-size:var(--fs-sm); font-weight:600;
    padding:var(--space-3) var(--space-4);
    cursor:pointer;
  }
.zfp .iq-status-btn:hover{ border-color:var(--accent); }
.zfp .iq-status-dot{ width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.zfp .iq-status-btn-label{ flex:1; text-align:left; }
.zfp .iq-status-btn svg{ color:var(--ink-soft); flex-shrink:0; transition:transform .15s ease; }
.zfp .iq-status-btn[aria-expanded="true"] svg{ transform:rotate(180deg); }
.zfp .iq-timeline{ padding:var(--space-2) var(--space-7) var(--space-7); }
.zfp .iq-tl-item{ display:flex; gap:var(--space-5); }
.zfp .iq-tl-marker{ display:flex; flex-direction:column; align-items:center; }
.zfp .iq-tl-ring{
    flex-shrink:0; margin:0;
    width:12px; height:12px; border-radius:50%;
    background:var(--paper);
    border:2px solid var(--ink-soft);
  }
.zfp .iq-tl-line{ flex:1; width:1.5px; min-height:12px; background:var(--ink-soft); opacity:.35; }
.zfp .iq-tl-item:first-child .iq-tl-line-top{ visibility:hidden; }
.zfp .iq-tl-item:last-child .iq-tl-line-bottom{ visibility:hidden; }
.zfp .iq-tl-body{ flex:1; padding:var(--space-3) 0; }
.zfp .iq-tl-text{ font-size:var(--fs-sm); font-weight:600; overflow-wrap:anywhere; }
.zfp .iq-tl-time{ font-size:var(--fs-2xs); color:var(--ink-soft); margin-top:3px; }
@keyframes iqTlIn{ from{ opacity:0; transform:translateY(-6px); } to{ opacity:1; transform:translateY(0); } }
.zfp .iq-note-compose{ padding:var(--space-5) var(--space-7) var(--space-7); }
.zfp .iq-note-textarea{
    width:100%;
    border:1px solid var(--hairline); border-radius:var(--radius);
    background:var(--well); color:var(--ink); font-size:var(--fs-sm);
    padding:var(--space-3) var(--space-3);
    resize:vertical; min-height:60px;
  }
.zfp .iq-note-textarea:focus{ outline:none; border-color:var(--accent); }
.zfp .iq-note-compose-foot{
    display:flex; justify-content:space-between; align-items:center; gap:var(--space-3);
    margin-top:var(--space-3); flex-wrap:wrap;
  }
.zfp .iq-note-visibility{ display:flex; gap:2px; background:var(--well); padding:3px; border-radius:var(--radius-ctl); }
.zfp .iq-note-vis-btn{
    display:inline-flex; align-items:center; gap:5px;
    border:1px solid transparent; background:none;
    font-size:var(--fs-2xs); font-weight:600; color:var(--ink-soft);
    padding:6px var(--space-4); border-radius:6px; cursor:pointer;
  }
.zfp .iq-note-vis-btn.active{ background:var(--paper); border-color:var(--hairline); color:var(--ink); }
.zfp .iq-note-vis-btn:disabled{ opacity:0.45; cursor:not-allowed; }
.zfp .iq-note-vis-btn:disabled:hover{ background:none; border-color:transparent; }
.zfp .iq-note-vis-group{ display:inline-flex; align-items:center; gap:var(--space-2); }
.zfp .bk-info{
    position:relative;
    display:inline-flex; align-items:center; justify-content:center;
    width:24px; height:24px; padding:0;
    border:1px solid var(--hairline); border-radius:50%;
    background:var(--paper); color:var(--ink-soft); cursor:pointer;
    flex:0 0 auto; transition:color .12s, border-color .12s;
  }
.zfp .bk-info:hover{ color:var(--ink); border-color:var(--ink-soft); }
.zfp .iq-note-vis-group .bk-info{ border-color:transparent; background:transparent; }
.zfp .iq-note-vis-group .bk-info:hover{ border-color:transparent; }
.zfp .bk-info::after{
    content:attr(data-tooltip);
    position:absolute; bottom:calc(100% + 9px); left:50%; transform:translateX(-50%);
    width:max-content; max-width:240px;
    background:var(--tooltip-bg); color:var(--tooltip-ink);
    font-size:var(--fs-2xs); font-weight:500; line-height:1.45; text-align:left;
    padding:var(--space-2) var(--space-3); border-radius:8px;
    box-shadow:0 8px 24px rgba(0,0,0,.28);
    opacity:0; visibility:hidden; pointer-events:none;
    transition:opacity .14s ease, visibility .14s;
    z-index:var(--z-tooltip);
  }
.zfp .bk-info::before{
    content:""; position:absolute; bottom:calc(100% + 3px); left:50%; transform:translateX(-50%);
    border:5px solid transparent; border-top-color:var(--tooltip-bg);
    opacity:0; visibility:hidden; transition:opacity .14s ease, visibility .14s;
    z-index:calc(var(--z-tooltip) + 1);
  }
@keyframes an-sk-shimmer{
    0%{ transform:translateX(-160%); }
    60%, 100%{ transform:translateX(260%); }
  }
@keyframes pl-shimmer{
    0%{ transform:translateX(-160%); }
    60%, 100%{ transform:translateX(260%); }
  }
@keyframes sk-shimmer{ 100%{ transform:translateX(100%); } }
.zfp .real-content{ display:none; }
.zfp .real-content.show{ display:block; animation:fx-fade-in .3s ease; }
@keyframes fx-fade-in{
  from{ opacity:0; transform:translateY(6px); }
  to{ opacity:1; transform:translateY(0); }
}
@media (prefers-reduced-motion: reduce){.zfp .real-content.show{ animation:none; }}
.zfp .page-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:var(--space-7); margin-bottom:var(--space-7); flex-wrap:wrap; }
.zfp .btn{
  display:inline-flex; align-items:center; gap:7px; font-size:var(--fs-sm); font-weight:600;
  padding:var(--space-2) var(--space-6); border-radius:var(--radius-ctl); border:1px solid var(--hairline); background:none; color:var(--ink);
  cursor:pointer; white-space:nowrap;
}
.zfp .btn svg{ width:15px; height:15px; flex-shrink:0; }
.zfp .btn:hover{ background:var(--well); }
.zfp .btn[hidden]{ display:none; }
.zfp .btn.primary{ background:var(--brand); border-color:var(--brand); color:var(--on-brand); transition:background .12s ease, border-color .12s ease; }
.zfp .btn.primary:hover{ background:var(--brand-hover); border-color:var(--brand-hover); }
.zfp .btn.ghost{ border-color:transparent; }
.zfp .btn.ghost:hover{ background:var(--well); border-color:var(--hairline); }
.zfp .btn[aria-pressed="true"]{ background:var(--accent-wash); border-color:var(--accent); color:var(--accent-ink); }
.zfp .btn:disabled{ opacity:.45; cursor:not-allowed; }
.zfp .btn:disabled:hover{ background:none; transform:none; filter:none; }
.zfp .panel{ background:none; border:1px solid var(--hairline); border-radius:var(--radius-lg); overflow:hidden; }
.zfp .storage-card{ padding:var(--space-6) var(--space-7); margin-bottom:var(--space-7); }
.zfp .storage-row{ display:flex; align-items:center; gap:var(--space-6); }
.zfp .storage-meter{ flex:1 1 260px; min-width:0; }
.zfp .storage-head{ display:flex; align-items:baseline; justify-content:space-between; gap:var(--space-4); margin-bottom:var(--space-3); }
.zfp .storage-used{ font-size:var(--fs-sm); }
.zfp .storage-used strong{ font-size:16px; font-weight:600; }
.zfp .storage-used span{ color:var(--ink-soft); }
.zfp .storage-pct{ font-size:var(--fs-xs); font-weight:500; color:var(--accent); flex-shrink:0; }
.zfp .storage-bar{ height:7px; background:var(--well); border:1px solid var(--hairline); border-radius:20px; overflow:hidden; }
.zfp .storage-fill{ display:block; height:100%; background:linear-gradient(90deg,var(--accent),var(--accent-light)); border-radius:20px; transition:width .3s ease; }
.zfp #storageCapText.storage-cap-shine{
  background:
    linear-gradient(115deg, transparent 35%, rgba(255,255,255,.9) 48%, transparent 61%) 170% 0 / 260% 100% no-repeat,
    linear-gradient(135deg, var(--brand), var(--brand-light));
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent;
  font-weight:700;
  animation:storage-upgrade-shine 5s ease-in-out infinite;
}
@keyframes storage-upgrade-shine{
  0%{ background-position:170% 0, 0 0; }
  40%{ background-position:-170% 0, 0 0; }
  100%{ background-position:-170% 0, 0 0; }
}
@media (prefers-reduced-motion: reduce){.zfp #storageCapText.storage-cap-shine{ animation:none; }}
.zfp .tab-row{ display:flex; gap:6px; overflow-x:auto; padding-bottom:2px; margin-bottom:var(--space-6); scrollbar-width:none; }
.zfp .tab-row::-webkit-scrollbar{ display:none; }
.zfp .tab-pill{
  display:inline-flex; align-items:center; gap:7px; flex-shrink:0;
  font-size:var(--fs-xs); font-weight:600; color:var(--ink-soft);
  padding:7px var(--space-4); border-radius:20px; border:1px solid var(--hairline); background:none; cursor:pointer;
}
.zfp .tab-pill:hover{ background:var(--well); color:var(--ink); }
.zfp .tab-pill.active{ background:var(--accent-wash); border-color:var(--accent); color:var(--accent); }
.zfp .tab-pill .n{ font-size:var(--fs-3xs);
  background:var(--well); color:var(--ink-soft);
  padding:1px 6px; border-radius:20px;
}
.zfp .tab-pill.active .n{ background:var(--accent-tint); color:var(--accent); }
.zfp .toolbar{
  
  --files-ctl-h:38px;
  
  --ctl-h:var(--files-ctl-h);
  position:sticky; top:0; z-index:calc(var(--z-sticky) + 20);
  display:flex; align-items:center; gap:var(--space-3); min-height:48px; flex-wrap:wrap;
  padding:var(--space-2) 0; margin-bottom:var(--space-4);
  background:var(--page);
}
@media (prefers-reduced-motion: no-preference){.zfp .toolbar{ transition:box-shadow .2s ease; }}
.zfp .toolbar[hidden]{ display:none; }
.zfp .panel.files-card[hidden]{ display:none; }
.zfp .f-search{ position:relative; flex:1 1 200px; min-width:0; max-width:340px; }
.zfp .f-search-btn{ display:none; }
.zfp .f-search-field{ display:flex; align-items:center; gap:var(--space-2); background:var(--well); border:1px solid var(--hairline); border-radius:var(--radius-ctl); height:var(--files-ctl-h); padding:0 var(--space-4); color:var(--ink-soft); }
.zfp .f-search-field:focus-within{ border-color:var(--accent); }
.zfp .f-search-field svg{ width:15px; height:15px; flex-shrink:0; }
.zfp .f-search-field input{ background:none; border:none; outline:none; font-size:var(--fs-sm); color:var(--ink); flex:1; min-width:0; }
.zfp .f-search-field input::placeholder{ color:var(--ink-soft); }
.zfp .view-toggle{ display:flex; align-items:center; gap:2px; background:var(--well); border:1px solid var(--hairline); border-radius:var(--radius-ctl); height:var(--files-ctl-h); padding:3px; flex-shrink:0; }
.zfp .view-btn{ display:flex; align-items:center; justify-content:center; width:32px; height:100%; border:none; background:none; border-radius:6px; color:var(--ink-soft); cursor:pointer; }
.zfp .view-btn svg{ width:15px; height:15px; }
.zfp .view-btn:hover{ color:var(--ink); }
.zfp .view-btn.active{ background:var(--paper); color:var(--accent-ink); box-shadow:var(--shadow-sm); }
.zfp .toolbar-spacer{ flex:1; }
.zfp .toolbar-actions{ display:flex; align-items:center; gap:var(--space-3); justify-content:space-between; }
.zfp .files-dd{ flex-shrink:0; }
.zfp .files-dd .iqx-per-btn{ height:var(--files-ctl-h); padding:0 var(--space-4); font-size:var(--fs-sm); font-weight:500; }
.zfp .files-sort-dd .iqx-per-btn{ gap:var(--space-2); }
.zfp .files-sort-icon{ width:15px; height:15px; color:var(--ink-soft); }
.zfp .privacy-note{
  display:flex; align-items:flex-start; gap:var(--space-3);
  padding:var(--space-3) var(--space-5); margin-bottom:var(--space-5);
  border-radius:var(--radius-lg); background:var(--accent-wash); border:1px solid var(--accent);
  font-size:var(--fs-xs); color:var(--ink); line-height:1.5;
}
.zfp .privacy-note[hidden]{ display:none; }
.zfp .privacy-note svg{ width:17px; height:17px; flex-shrink:0; margin-top:1px; color:var(--accent); }
.zfp .privacy-note span{ flex:1; min-width:0; }
.zfp .privacy-note-close{
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
  width:24px; height:24px; margin-top:-1px;
  border:none; background:none; border-radius:6px; color:var(--ink-soft); cursor:pointer;
}
.zfp .privacy-note-close svg{ width:13px; height:13px; }
.zfp .privacy-note-close:hover{ background:rgba(0,0,0,.06); color:var(--ink); }
.zfp .files-card{ padding:0; }
.zfp .file-item{ position:relative; display:flex; align-items:center; gap:var(--space-5); padding:var(--space-3) var(--space-6); border-bottom:1px solid var(--hairline); cursor:default; }
.zfp .file-item:hover{ background:var(--well-hover); }
@media (hover:none){.zfp .file-item{ -webkit-touch-callout:none; -webkit-user-select:none; user-select:none; }}
.zfp .file-thumb{
  width:38px; height:38px; border-radius:var(--radius-ctl); flex-shrink:0;
  display:flex; align-items:center; justify-content:center; color:var(--ink-soft);
  background:var(--well); border:1px solid var(--hairline); overflow:hidden; position:relative;
}
.zfp .file-thumb svg{ width:17px; height:17px; }
.zfp .file-thumb.file-thumb-proposal{ color:#9085e9; background:rgba(144,133,233,.12); }
.zfp .file-thumb.file-thumb-invoice{ color:var(--success-ink); background:rgba(16,185,129,.1); }
.zfp .file-body{ min-width:0; flex:1; }
.zfp .file-name{ font-size:var(--fs-sm); font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.zfp .file-meta{ font-size:var(--fs-2xs); color:var(--ink-soft); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.zfp .file-actions{ display:flex; align-items:center; gap:6px; flex-shrink:0; }
.zfp .file-badge{
  border-radius:20px; white-space:nowrap; font-size:var(--fs-3xs); font-weight:600;
  letter-spacing:.05em; text-transform:uppercase;
  padding:3px var(--space-3) 3px var(--space-2);
}
.zfp .file-badge.status-paid{ background:rgba(16,185,129,.13); color:var(--success-ink); }
.zfp .file-badge.status-pending{ background:rgba(184,122,30,.14); color:var(--warning-ink); }
.zfp .file-badge.status-draft{ background:var(--well); color:var(--ink-soft); }
.zfp .file-badge.status-client{ background:rgba(144,133,233,.14); color:#9085e9; }
.zfp .file-fav{ display:flex; align-items:center; justify-content:center; width:30px; height:30px; border:none; background:none; border-radius:7px; color:var(--ink-soft); cursor:pointer; flex-shrink:0; }
.zfp .file-fav svg{ width:16px; height:16px; }
.zfp .file-fav:hover{ background:var(--paper); color:var(--warning-ink); }
.zfp .file-fav.on{ color:var(--warning-ink); }
.zfp .file-fav.on svg{ fill:currentColor; }
.zfp .file-menu{ position:relative; flex-shrink:0; }
.zfp .file-menu-btn{ display:flex; align-items:center; justify-content:center; width:30px; height:30px; border:none; background:none; border-radius:7px; color:var(--ink-soft); cursor:pointer; }
.zfp .file-menu-btn svg{ width:16px; height:16px; }
.zfp .file-menu-btn:hover{ background:var(--paper); color:var(--ink); }
.zfp .files-view.grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(max(148px, (100% - 4 * 12px) / 5),1fr)); gap:var(--space-4); padding:var(--space-6); }
.zfp .files-view.grid .file-item{ position:relative; flex-direction:column; align-items:stretch; border:1px solid var(--hairline); border-radius:var(--radius-lg); padding:var(--space-3); gap:var(--space-2); }
.zfp .files-view.grid .file-thumb{ width:100%; height:96px; border-radius:var(--radius-ctl); }
.zfp .files-view.grid .file-thumb svg{ width:26px; height:26px; }
.zfp .files-view.grid .file-thumb{ position:relative; }
.zfp .files-view.grid .file-fav{ margin-left:auto; }
.zfp .files-view.grid .file-body{ width:100%; }
@keyframes itemIn{ from{ opacity:0; transform:translateY(-4px); } to{ opacity:1; transform:translateY(0); } }
.zfp .toolbar-upload-row{
  display:flex; align-items:center; width:100%; overflow:hidden;
  order:-1; padding-bottom:0; margin-bottom:0;
  max-height:0; opacity:0; transform:translateY(-6px); pointer-events:none;
  border-bottom:1px solid transparent;
  transition:max-height .22s ease, opacity .18s ease, transform .22s ease,
             padding-bottom .22s ease, margin-bottom .22s ease, border-color .18s ease;
}
.zfp .toolbar-upload-row .btn{ margin-left:auto; }
@media (prefers-reduced-motion: reduce){.zfp .toolbar-upload-row{ transition:none; }}
.zfp .topline-actions{ display:flex; align-items:center; gap:var(--space-3); flex-wrap:wrap; }
.zfp .iq-btn.sm{ padding:6px var(--space-3); font-size:var(--fs-xs); }
.zfp .link{
    font-size:var(--fs-xs); color:var(--accent); font-weight:600;
    text-decoration:none; cursor:pointer; background:none; border:none; padding:0;
  }
.zfp .cal-stats{ display:grid; grid-template-columns:repeat(3, 1fr); gap:var(--space-5); margin-bottom:var(--space-6); }
.zfp .stat{
    border:1px solid var(--hairline); border-radius:var(--radius-lg);
    padding:var(--space-6) var(--space-6) var(--space-6); display:flex; flex-direction:column; gap:5px;
    position:relative; overflow:hidden;
  }
.zfp .stat.lead{ border-color:rgba(107,159,232,.35); background:var(--accent-wash); }
.zfp .stat-num{
    font-family:var(--font-display); font-size:var(--fs-value-sm); line-height:1.05;
    letter-spacing:-0.01em; font-variant-numeric:tabular-nums;
    display:flex; align-items:baseline; gap:7px;
  }
.zfp .stat-num small{ font-family:var(--font-body); font-size:var(--fs-xs); font-weight:500;
    color:var(--ink-soft); letter-spacing:0;
  }
.zfp .stat.lead .stat-num{ color:var(--accent); }
.zfp .stat-sub{
    font-size:var(--fs-xs); color:var(--ink-soft);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
.zfp .cal-rail{ display:flex; flex-direction:column; gap:var(--space-6); }
.zfp .cal-card{ position:sticky; top:88px; }
.zfp .cal-day.blocked{
    color:var(--danger-ink);
    background-image:repeating-linear-gradient(
      -45deg,
      rgba(180,48,74,.20) 0 2px,
      transparent 2px 6px
    );
    border-color:rgba(180,48,74,.35);
  }
.zfp .cal-day.blocked:hover{ background-color:rgba(180,48,74,.10); }
.zfp .cal-day.blocked .cal-dot{ background:var(--danger); }
@keyframes calPulse{
    0%{ box-shadow:0 0 0 0 rgba(107,159,232,.5); }
    70%{ box-shadow:0 0 0 8px rgba(107,159,232,0); }
    100%{ box-shadow:0 0 0 0 rgba(107,159,232,0); }
  }
.zfp .cal-today-btn{
    flex-shrink:0; margin-left:auto; padding:0 var(--space-4); height:32px;
    border:1px solid var(--hairline); border-radius:var(--radius-ctl);
    background:none; color:var(--ink); font-size:var(--fs-3xs);
    letter-spacing:.06em; text-transform:uppercase;
    cursor:pointer;
  }
.zfp .cal-today-btn:hover{ background:var(--well); border-color:var(--accent); color:var(--accent); }
.zfp .cal-today-btn[disabled]{ opacity:.35; cursor:default; }
.zfp .cal-today-btn[disabled]:hover{ background:none; border-color:var(--hairline); color:var(--ink); }
.zfp .cal-legend{
    display:flex; align-items:center; gap:var(--space-6); flex-wrap:wrap;
    margin-top:var(--space-6); padding-top:var(--space-5); border-top:1px solid var(--hairline); font-size:var(--fs-3xs); letter-spacing:.05em;
    text-transform:uppercase; color:var(--ink-soft);
  }
.zfp .cal-legend span{ display:inline-flex; align-items:center; gap:7px; }
.zfp .lg-swatch{ width:14px; height:14px; border-radius:4px; border:1px solid var(--hairline); flex-shrink:0; }
.zfp .lg-swatch.booking{ background:var(--accent); border-color:var(--accent); }
.zfp .lg-swatch.today{ border-color:var(--accent); border-width:2px; }
.zfp .lg-swatch.blocked{
    border-color:rgba(180,48,74,.4);
    background-image:repeating-linear-gradient(-45deg, rgba(180,48,74,.35) 0 2px, transparent 2px 6px);
  }
.zfp .cal-booking-list{
    display:flex; flex-direction:column; gap:var(--space-3);
    padding:var(--space-5) var(--space-6) var(--space-6); max-height:440px; overflow-y:auto;
  }
.zfp .cal-up-card{
    
    width:100%; max-width:none; min-width:0; flex:0 0 auto; scroll-snap-align:unset;
    display:flex; flex-direction:column; overflow:hidden;
    border:1px solid var(--hairline); border-radius:var(--radius-lg);
    background:var(--paper);
    transition:border-color .12s ease;
  }
.zfp .cal-up-card-main{
    display:flex; flex-direction:column; gap:var(--space-3);
    padding:var(--space-4) var(--space-5); background:none; border:none; text-align:left;
    color:var(--ink); font-family:inherit;
  }
.zfp .cal-up-card-main.clickable{ cursor:pointer; }
.zfp .cal-up-card-main.clickable:hover{ background:var(--well); }
.zfp .cal-up-card-head{ display:flex; align-items:flex-start; gap:var(--space-3); }
.zfp .cal-up-card-titles{ min-width:0; flex:1; }
.zfp .cal-up-card-name{
    font-weight:600; font-size:var(--fs-sm); line-height:1.25;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
.zfp .cal-up-card-meta{
    font-size:var(--fs-xs); color:var(--ink-soft); margin-top:3px;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
.zfp .cal-up-card-when{
    display:flex; align-items:baseline; justify-content:flex-start;
    gap:6px; flex-wrap:wrap; margin-top:4px;
  }
.zfp .cal-up-card-pay{ font-size:var(--fs-3xs); letter-spacing:.04em;
    text-transform:uppercase; font-variant-numeric:tabular-nums;
    color:var(--ink-soft);
  }
.zfp .cal-up-card-pay.due{ color:var(--warning-ink); }
.zfp .cal-up-card-pay.paid{ color:var(--success-ink); }
.zfp .cal-up-dot{ opacity:.5; }
.zfp .booking-when{ font-size:var(--fs-3xs); letter-spacing:.04em;
    text-transform:uppercase; color:var(--ink-soft);
    font-variant-numeric:tabular-nums;
  }
.zfp .booking-when.soon{ color:var(--warning-ink); }
.zfp .cal-up-pill{
    flex-shrink:0;
    display:inline-flex; align-items:center; gap:5px; font-size:var(--fs-3xs); font-weight:600;
    letter-spacing:.05em; text-transform:uppercase;
    padding:3px var(--space-2) 3px 7px; border-radius:20px;
  }
.zfp .cal-up-pill::before{ content:""; width:5px; height:5px; border-radius:50%; }
.zfp .cal-up-pill.confirmed{ background:rgba(16,185,129,.18); color:var(--success-ink); }
.zfp .cal-up-pill.confirmed::before{ background:var(--success); }
.zfp .cal-up-pill.blocked{ background:rgba(180,48,74,.15); color:var(--danger-ink); }
.zfp .cal-up-pill.blocked::before{ background:var(--danger); }
.zfp .cal-up-card-addr{
    display:flex; align-items:center; gap:7px;
    font-size:var(--fs-xs); color:var(--ink-soft); overflow:hidden;
  }
.zfp .cal-up-card-addr svg{ width:14px; height:14px; flex-shrink:0; }
.zfp .cal-up-card-addr span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.zfp .cal-up-card-dir{
    display:flex; align-items:center; justify-content:center; gap:7px;
    padding:var(--space-3) 0; width:100%;
    border:none; border-top:1px solid var(--hairline);
    background:none; font-size:var(--fs-xs); font-weight:600; color:var(--accent);
    text-decoration:none; cursor:pointer;
  }
.zfp .cal-up-card-dir svg{ width:15px; height:15px; }
.zfp .cal-up-card-dir:hover{ background:var(--accent-wash); }
.zfp .lazy-sentinel{ display:flex; align-items:center; justify-content:center; padding:var(--space-6) var(--space-4); }
.zfp .lazy-dots{ display:flex; gap:5px; }
.zfp .lazy-dots i{
    width:5px; height:5px; border-radius:50%; background:var(--ink-soft);
    animation:lazyPulse 1.1s infinite ease-in-out;
  }
.zfp .lazy-dots i:nth-child(2){ animation-delay:.15s; }
.zfp .lazy-dots i:nth-child(3){ animation-delay:.3s; }
@keyframes lazyPulse{
    0%, 80%, 100%{ opacity:.25; transform:scale(.75); }
    40%{ opacity:1; transform:scale(1); }
  }
.zfp .lazy-end{
    padding:var(--space-4); text-align:center; font-size:var(--fs-3xs);
    letter-spacing:.06em; text-transform:uppercase; color:var(--ink-soft);
    opacity:.7;
  }
.zfp .upcoming-date.blocked{ border-color:rgba(180,48,74,.4); color:var(--danger-ink); }
.zfp .blocked-summary{
    display:flex; align-items:baseline; gap:var(--space-2);
    padding:var(--space-4) var(--space-7); border-bottom:1px solid var(--hairline);
    background:rgba(180,48,74,.05);
  }
.zfp .blocked-summary-num{ font-size:var(--fs-h2); line-height:1;
    color:var(--danger-ink); font-variant-numeric:tabular-nums; font-weight:600;}
.zfp .blocked-summary-txt{ font-size:var(--fs-xs); color:var(--ink-soft); }
.zfp .blocked-summary-txt b{ color:var(--ink); font-weight:600; }
.zfp .head-count{ font-size:var(--fs-3xs);
    background:var(--warning); color:#fff;
    padding:2px var(--space-2); border-radius:20px;
  }
.zfp .needs-list{ display:flex; flex-direction:column; max-height:340px; overflow-y:auto; }
.zfp .needs-row{
    display:flex; align-items:center; gap:var(--space-4);
    padding:var(--space-4) var(--space-7); border-bottom:1px solid var(--hairline);
  }
.zfp .needs-row:last-child{ border-bottom:none; }
.zfp .needs-mark{
    width:34px; height:34px; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    border-radius:var(--radius); border:1px dashed rgba(184,122,30,.5);
    color:var(--warning-ink);
  }
.zfp .needs-info{ flex:1; min-width:0; }
.zfp .needs-name{ font-size:var(--fs-sm); font-weight:600; }
.zfp .needs-meta{
    font-size:var(--fs-2xs); color:var(--ink-soft); margin-top:2px;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
.zfp .needs-ask{ font-size:var(--fs-3xs); letter-spacing:.04em;
    color:var(--warning-ink); margin-top:4px;
  }
.zfp .blocked-list{ display:flex; flex-direction:column; padding:6px 0 var(--space-2); max-height:300px; overflow-y:auto; }

/* --------------------------------------------------------------------------
   what each pane drops. Last on purpose: the app declares things like
   .fin-subnav{display:flex} at the same specificity, so source order is the
   only thing that decides and an earlier rule loses.
   -------------------------------------------------------------------------- */

/* The app's dark fills are tuned for its own #090909 page: --well and --paper
   sit a shade ABOVE that black. On the landing band's navy they sit below it,
   so every icon tile, chip, input, count badge and card read as a black hole.
   Translucent white washes lift off whatever ground they are on instead. Pane
   tokens only; the app is untouched. */
.zfp{
  --paper:rgba(255,255,255,.035);
  --well:rgba(255,255,255,.06);
  --well-hover:rgba(255,255,255,.09);
}

/* Every pane's page heading goes, not just its title: the row also carries
   the page's primary action (Add expense, Add booking, Add file), which keeps
   the row open and pushes the content down once the title is hidden. */
.zfp .topline,
.zfp .page-head,
.zfp .eyebrow{ display:none; }


/* file tiles carry a drawn page preview; .files-view.grid .file-thumb svg
   sizes the glyph to 26px and outranks a plain .file-thumb selector */
.zfp .files-view .file-thumb svg.fthumb,
.zfp .files-view.grid .file-thumb svg.fthumb{ width:100%; height:100%; }
.zfp .file-thumb-contract{ color:#45C08D; background:rgba(69,192,141,.10); }
.zfp .file-thumb-seating{ color:#A99CE8; background:rgba(169,156,232,.12); }

