/* Resilio — redesigned UI. Roussinov Consulting identity (deep red on warm neutrals, K2D). Light + dark. */

:root{
  --bg:#f6f3f3; --surface:#ffffff; --surface-2:#faf7f7;
  --border:#ece5e5; --border-2:#e0d7d7;
  --ink:#1f1b1b; --muted:#6c6363; --faint:#6e6868;
  --brand:#980909; --brand-2:#7a0707; --brand-tint:#fbeded;
  --logo-product:url(../assets/resilio-logo-light.png); --logo-house:url(../assets/roussinov-logo-light.png);
  --logo-attribution:url(../assets/resilio-logo-light.png); --logo-vendor:url(../assets/roussinov-logo-light.png);
  --ready:#0b6e37; --ready-bg:#e7f6ee;
  --partial:#8a5e00; --partial-bg:#fbf1dc;
  --notready:#b3212e; --notready-bg:#fce8ea;
  --unknown:#6f6a68; --unknown-bg:#efecec;
  --track:#ece6e6;
  --shadow:0 1px 2px rgba(31,27,27,.05),0 3px 10px rgba(31,27,27,.05);
  --shadow-lg:0 10px 40px rgba(31,27,27,.14);
  --radius:12px; --radius-sm:8px;
  --font:"K2D",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:"SFMono-Regular",ui-monospace,"Cascadia Mono","Roboto Mono",monospace;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#151212; --surface:#201c1c; --surface-2:#262121;
    --border:#332c2c; --border-2:#3d3535;
    --ink:#f3ecec; --muted:#ab9f9f; --faint:#a09595;
    --brand:#f07a7a; --brand-2:#e56464; --brand-tint:#3a1f1f;
    --logo-product:url(../assets/resilio-logo-dark.png); --logo-house:url(../assets/roussinov-logo-dark.png);
    --logo-attribution:url(../assets/resilio-logo-dark.png); --logo-vendor:url(../assets/roussinov-logo-dark.png);
    --ready:#3ac47f; --ready-bg:#16281f;
    --partial:#e3ab44; --partial-bg:#2c2413;
    --notready:#f0707a; --notready-bg:#301a1d;
    --unknown:#8f8785; --unknown-bg:#2a2424;
    --track:#332c2c;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 3px 12px rgba(0,0,0,.3);
    --shadow-lg:0 12px 44px rgba(0,0,0,.5);
  }
}
/* manual override (header toggle) — wins over the system media query in both directions */
:root[data-theme="light"]{
  --bg:#f6f3f3; --surface:#ffffff; --surface-2:#faf7f7;
  --border:#ece5e5; --border-2:#e0d7d7;
  --ink:#1f1b1b; --muted:#6c6363; --faint:#6e6868;
  --brand:#980909; --brand-2:#7a0707; --brand-tint:#fbeded;
  --logo-product:url(../assets/resilio-logo-light.png); --logo-house:url(../assets/roussinov-logo-light.png);
  --logo-attribution:url(../assets/resilio-logo-light.png); --logo-vendor:url(../assets/roussinov-logo-light.png);
  --ready:#0b6e37; --ready-bg:#e7f6ee; --partial:#8a5e00; --partial-bg:#fbf1dc;
  --notready:#b3212e; --notready-bg:#fce8ea; --unknown:#6f6a68; --unknown-bg:#efecec;
  --track:#ece6e6; --shadow:0 1px 2px rgba(31,27,27,.05),0 3px 10px rgba(31,27,27,.05); --shadow-lg:0 10px 40px rgba(31,27,27,.14);
}
:root[data-theme="dark"]{
  --bg:#151212; --surface:#201c1c; --surface-2:#262121;
  --border:#332c2c; --border-2:#3d3535;
  --ink:#f3ecec; --muted:#ab9f9f; --faint:#a09595;
  --brand:#f07a7a; --brand-2:#e56464; --brand-tint:#3a1f1f;
  --logo-product:url(../assets/resilio-logo-dark.png); --logo-house:url(../assets/roussinov-logo-dark.png);
  --logo-attribution:url(../assets/resilio-logo-dark.png); --logo-vendor:url(../assets/roussinov-logo-dark.png);
  --ready:#3ac47f; --ready-bg:#16281f; --partial:#e3ab44; --partial-bg:#2c2413;
  --notready:#f0707a; --notready-bg:#301a1d; --unknown:#8f8785; --unknown-bg:#2a2424;
  --track:#332c2c; --shadow:0 1px 2px rgba(0,0,0,.3),0 3px 12px rgba(0,0,0,.3); --shadow-lg:0 12px 44px rgba(0,0,0,.5);
}

*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--brand-2);text-decoration:none}
.tnum{font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- buttons ---------- */
button{font-family:inherit;font-size:13.5px;cursor:pointer;border:1px solid transparent;border-radius:var(--radius-sm);padding:8px 14px;background:var(--surface);color:var(--ink);transition:background .12s,border-color .12s,transform .05s}
button:active{transform:translateY(1px)}
.btn-primary{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:650}
.btn-primary:hover{background:var(--brand-2)}
.btn-outline{border-color:var(--border-2);background:var(--surface);font-weight:600}
.btn-outline:hover{background:var(--surface-2)}
.btn-danger{color:var(--notready);border-color:color-mix(in srgb,var(--notready) 40%,transparent);background:var(--notready-bg)}
.btn-danger:hover{filter:brightness(.97)}
.btn-lg{padding:11px 20px;font-size:15px}

/* ---------- header ---------- */
.app-header{background:var(--surface);color:var(--ink);padding:11px 24px;display:flex;flex-direction:column;align-items:stretch;gap:8px;
  border-bottom:3px solid var(--brand);box-shadow:var(--shadow);position:sticky;top:0;z-index:50}
.header-brands{display:flex;align-items:center;justify-content:space-between;gap:12px}
.header-right{display:flex;align-items:center;gap:16px;min-width:0}
.tenant-switch{display:flex;align-items:center;gap:7px;min-width:0}
.tenant-switch:empty{display:none}
.tenant-label{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex:none}
.brand-lockup{display:flex;align-items:center}
.brand-logo{height:24px;width:auto;display:block}
/* user menu (header top-right) */
.user-menu{position:relative}
.user-menu-btn{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border-2);border-radius:10px;padding:5px 10px;cursor:pointer;color:var(--ink);font:inherit;max-width:230px}
.user-menu-btn:hover{border-color:var(--brand)}
.user-menu-btn .um-id{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;overflow:hidden}
.user-menu-btn .uname{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.user-menu-btn .utenant{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.user-menu-btn .um-caret{color:var(--muted);font-size:11px;flex:none}
.user-menu-panel{position:absolute;right:0;top:calc(100% + 6px);min-width:236px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);padding:10px;z-index:60;display:flex;flex-direction:column;gap:10px}
.user-menu-panel[hidden]{display:none}
.umenu-auth .um-full{width:100%;justify-content:center}
.umenu-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.umenu-label{font-size:12.5px;color:var(--muted)}
.umenu-row .lang-select{min-width:118px}
.umenu-items{display:flex;flex-direction:column;gap:3px;border-top:1px solid var(--border);padding-top:8px;margin-top:2px}
.umenu-items[hidden]{display:none}
#umenu-dyn{display:flex;flex-direction:column;gap:3px}
#umenu-dyn:empty{display:none}
.umenu-item{width:100%;justify-content:flex-start;text-align:left;border:0;background:transparent;padding:8px;border-radius:8px;font-weight:600;font-size:13px}
.umenu-item:hover{background:var(--surface-2)}
.umenu-auth{border-top:1px solid var(--border);padding-top:8px;margin-top:2px}
/* footer roussinov logo */
.footer-logo{height:26px;width:auto;display:block}
/* House brand logo (header brand, login/ws gates, footer). The theme swap now
   rides on --logo-house, which the brand pack overrides per theme — see js/brands.js. */
.brand-logo,.login-logo,.footer-logo{content:var(--logo-house)}
/* theme toggle button */
#btn-theme{font-size:15px;line-height:1;padding:7px 10px;min-width:38px}
.brand-divider{width:1px;align-self:stretch;background:var(--border-2);margin:2px}
/* Product mark + the workspace's own logo, side by side. */
.product{display:flex;align-items:center;gap:14px;min-width:0}
.customer-brand{display:flex;align-items:center;gap:14px;min-width:0}
.customer-brand[hidden]{display:none}
.customer-logo{height:30px;width:auto;max-width:210px;object-fit:contain;display:block}
.wslogo-preview{display:flex;align-items:center;justify-content:center;min-height:74px;margin:4px 0 14px;
  border:1px dashed var(--border-2);border-radius:10px;background:var(--surface-2);color:var(--muted);font-size:12.5px}
.wslogo-preview img{max-height:56px;max-width:80%;object-fit:contain}
.product h1{font-size:19px;margin:0;font-weight:800;color:var(--ink);line-height:1.05;letter-spacing:-.01em}
.product h1 .resilio-logo{height:40px;width:auto;display:block}
.login-card h2 .resilio-logo{height:38px;width:auto;display:inline-block;vertical-align:middle}
/* Product logo — theme-swapped via --logo-product (see .brand-logo above) */
.resilio-logo{content:var(--logo-product)}
/* ---------- branding console (provider admin) ---------- */
/* .modal sets max-width:560px further down the file, so this needs the extra
   class to win on specificity rather than on source order. */
.modal.modal-wide{max-width:1020px}
.brand-admin{display:grid;grid-template-columns:264px 1fr;gap:18px;align-items:start}
.brand-list{display:flex;flex-direction:column;gap:6px;max-height:62vh;overflow:auto}
.brand-pick{display:grid;grid-template-columns:14px 1fr auto;gap:8px;align-items:center;text-align:left;padding:9px 10px}
.brand-pick.on{border-color:var(--brand);background:var(--brand-tint)}
.bp-swatch{width:14px;height:14px;border-radius:4px;border:1px solid var(--border-2)}
.bp-name{font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bp-hosts{grid-column:2;font-size:10.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bp-off{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase}
.bp-warn{color:var(--partial);font-size:14px}
.bf-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-height:62vh;overflow:auto;padding-right:4px}
.bf-grid fieldset{border:1px solid var(--border);border-radius:10px;padding:10px 12px 12px;margin:0}
.bf-grid legend{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:0 4px}
.bf-wide{grid-column:1/-1}
.bf-row{display:grid;grid-template-columns:112px 1fr;gap:8px;align-items:center;margin-top:7px;font-size:12.5px}
.bf-row>span{color:var(--muted)}
.bf-row input{padding:6px 8px;border:1px solid var(--border-2);border-radius:7px;background:var(--surface);color:var(--ink);font:inherit;font-size:12.5px;min-width:0}
.bf-row input:disabled{color:var(--muted);background:var(--surface-2)}
.bf-hex{grid-template-columns:112px 1fr 22px}
.bf-swatch{width:22px;height:22px;border-radius:6px;border:1px solid var(--border-2)}
.bf-check{display:grid;grid-template-columns:auto 1fr;gap:7px;align-items:center;margin-top:8px;font-size:12.5px}
.bf-check em{grid-column:2;font-style:normal;font-size:11px;color:var(--muted)}
.bf-logos{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
.bf-logo{display:grid;gap:3px;font-size:12px}
.bf-logo-label{font-weight:600}
.bf-logo-state{font-size:11px;color:var(--muted)}
.bf-logo input{font-size:11px}
.bf-note{font-size:11px;color:var(--muted);margin:10px 0 0}
.bf-warnings{border:1px solid color-mix(in srgb,var(--partial) 40%,transparent);background:var(--partial-bg);border-radius:10px;padding:10px 12px;font-size:12px}
.bf-warnings ul{margin:6px 0 0;padding-left:18px}
.bf-actions{display:flex;gap:8px;justify-content:flex-end}
@media (max-width:860px){.brand-admin{grid-template-columns:1fr}.bf-grid{grid-template-columns:1fr}}

/* Retained vendor attribution under a partner brand: the Resilio wordmark with
   its ™, then the Roussinov Consulting mark. --logo-attribution and --logo-vendor
   are the vendor's own marks in every pack — brand packs override --logo-product
   and --logo-house, never these two, so attribution cannot be skinned away. */
.powered-by{display:flex;align-items:center;gap:9px;margin-top:12px;font-size:11px;color:var(--muted)}
.login-card .powered-by{justify-content:center;margin-top:20px}
.powered-by[hidden]{display:none}
.pb-mark{display:inline-flex;align-items:flex-start;gap:1px}
.powered-logo{content:var(--logo-attribution);height:15px;width:auto;display:block;opacity:.85}
/* Scaled off the wordmark rather than the 11px label so it reads as part of the
   mark, and raised to sit against the cap line instead of the baseline. */
.pb-tm{font-size:7.5px;line-height:1;margin-top:1px;opacity:.85}
/* Divider keeps the two marks from reading as one lockup. */
.vendor-logo{content:var(--logo-vendor);height:14px;width:auto;display:block;opacity:.85;
  border-left:1px solid var(--border-2);padding-left:9px;box-sizing:content-box}
.product .tagline{font-size:12px;color:var(--muted);margin-top:1px;max-width:520px}
.header-spacer{flex:1}
.lang-select{padding:7px 8px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:13px;cursor:pointer}
.user-chip{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15}
.user-chip .uname{font-size:13px;font-weight:700}
.user-chip .utenant{font-size:11px;color:var(--muted)}

/* ---------- login / ws gate ---------- */
.login-gate{min-height:72vh;display:grid;place-items:center;padding:40px 20px}
.login-card{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--brand);border-radius:16px;box-shadow:var(--shadow-lg);padding:38px 34px;max-width:430px;text-align:center}
.login-logo{height:38px;margin-bottom:18px}
.login-card h2{margin:0 0 8px;font-size:23px;color:var(--ink);font-weight:800}
.login-card p{color:var(--muted);font-size:14px;margin:0 0 22px}
.ms-logo{display:inline-block;width:16px;height:16px;vertical-align:-2px;margin-right:6px;
  background:linear-gradient(#f25022 0 0) 0 0/7px 7px no-repeat,linear-gradient(#7fba00 0 0) 9px 0/7px 7px no-repeat,linear-gradient(#00a4ef 0 0) 0 9px/7px 7px no-repeat,linear-gradient(#ffb900 0 0) 9px 9px/7px 7px no-repeat}

/* ---------- framework pane ---------- */
.fw-pane{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:65px;z-index:40}
.fw-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;max-width:1300px;margin:0 auto;padding:10px 24px 0}
.fw-groups{display:flex;gap:4px;flex-wrap:wrap;flex:1 1 auto;min-width:0}
.fw-actions{display:flex;gap:8px;flex:0 0 auto}
.grp{border:0;background:transparent;color:var(--muted);font-size:13.5px;font-weight:650;padding:8px 13px 14px;position:relative;border-radius:8px 8px 0 0;display:flex;align-items:center;gap:8px}
.grp:hover{color:var(--ink);background:var(--surface-2)}
.grp .n{background:var(--track);color:var(--muted);font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px}
.grp[aria-selected="true"]{color:var(--brand)}
.grp[aria-selected="true"] .n{background:var(--brand-tint);color:var(--brand)}
.grp[aria-selected="true"]::after{content:"";position:absolute;left:8px;right:8px;bottom:0;height:3px;background:var(--brand);border-radius:3px 3px 0 0}
.fw-strip{max-width:1300px;margin:0 auto;padding:12px 24px 13px;display:flex;gap:9px;overflow-x:auto;scrollbar-width:thin}
.fw-strip::-webkit-scrollbar{height:6px}.fw-strip::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:6px}
.fw-dom{flex:0 0 auto;align-self:center;color:var(--muted);font-size:10.5px;font-weight:750;text-transform:uppercase;letter-spacing:.07em;white-space:nowrap;padding:0 3px 0 14px;border-left:1px solid var(--border-2)}
.fw-dom:first-child{padding-left:2px;border-left:0}
.fw{flex:none;display:flex;align-items:center;gap:10px;padding:8px 14px 8px 9px;border:1px solid var(--border-2);border-radius:999px;background:var(--surface);transition:border-color .12s,background .12s}
.fw:hover{background:var(--surface-2)}
.fw[aria-selected="true"]{border-color:var(--brand);background:var(--brand-tint)}
.fw.out{opacity:.6}
.fw-txt{display:flex;flex-direction:column;line-height:1.2;text-align:left}
.fw .fname{font-size:13.5px;font-weight:650;white-space:nowrap}
.fw .fmeta{font-size:10.5px;color:var(--faint);white-space:nowrap}
.beta-tag{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:9px;font-size:9.5px;font-weight:700;
  letter-spacing:.4px;text-transform:uppercase;vertical-align:middle;color:var(--brand);
  background:var(--brand-tint);border:1px solid var(--brand)}
.ring{--p:0;--c:var(--ready);width:32px;height:32px;border-radius:50%;flex:none;position:relative;display:grid;place-items:center;
  background:conic-gradient(var(--c) calc(var(--p)*1%),var(--track) 0)}
.ring::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--surface)}
.fw[aria-selected="true"] .ring::after{background:var(--brand-tint)}
.ring b{position:relative;z-index:1;font-size:10px;font-weight:800;color:var(--ink)}

/* ---------- toolbar ---------- */
main{max-width:1300px;margin:0 auto;padding:20px 24px 70px}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}
.searchbox{flex:1;min-width:230px;max-width:360px;position:relative;display:flex;align-items:center}
.searchbox svg{position:absolute;left:12px;color:var(--faint)}
.searchbox input{width:100%;padding:9px 12px 9px 34px;border:1px solid var(--border-2);border-radius:999px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:13.5px}
.toolbar select{padding:9px 10px;border:1px solid var(--border-2);border-radius:8px;font-size:13.5px;background:var(--surface);color:var(--ink);font-family:inherit}
.tb-label{font-size:12px;color:var(--muted);margin-left:auto;font-weight:600}
.profile-note{font-size:12px;color:var(--muted);flex-basis:100%}
.profile-note:empty{display:none}
.appl-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.appl-pills:empty{display:none}
.pill{font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:999px;border:1px solid var(--border)}
.pill.direct{background:var(--ready-bg);color:var(--ready);border-color:transparent}
.pill.conditional{background:var(--partial-bg);color:var(--partial);border-color:transparent}
.pill.out{background:var(--unknown-bg);color:var(--muted);border-color:transparent}

/* ---------- work layout ---------- */
.work{display:grid;grid-template-columns:1fr 400px;gap:20px;align-items:start}
@media (max-width:1000px){.work{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}

/* summary */
.summary{display:flex;gap:22px;align-items:center;padding:18px 20px;margin-bottom:16px}
.donut{--p:0;--c:var(--ready);width:76px;height:76px;border-radius:50%;flex:none;position:relative;background:conic-gradient(var(--c) calc(var(--p)*1%),var(--track) 0)}
.donut.big{width:104px;height:104px}
.donut::after{content:"";position:absolute;inset:9px;border-radius:50%;background:var(--surface)}
.donut.big::after{inset:11px}
.donut .d-lbl{position:absolute;inset:0;display:grid;place-content:center;text-align:center;z-index:1}
.donut .d-lbl b{font-size:18px;font-weight:800;letter-spacing:-.02em}
.donut.big .d-lbl b{font-size:25px}
.donut .d-lbl span{display:block;font-size:8.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.05em}
.donut.big .d-lbl span{font-size:9.5px}
.sum-body{flex:1;min-width:0}
.sum-head{display:flex;align-items:baseline;gap:9px;margin-bottom:4px;flex-wrap:wrap}
.sum-head h2{font-size:18px;font-weight:750;margin:0;letter-spacing:-.01em}
.sum-head .full{font-size:12px;color:var(--muted)}
.sum-sub{font-size:12.5px;color:var(--muted);margin-bottom:12px}
.sum-sub b{color:var(--ink);font-weight:700}
.segbar{height:9px;border-radius:6px;overflow:hidden;display:flex;margin-bottom:11px;background:var(--track)}
.segbar i{display:block;height:100%}
.legend{display:flex;flex-wrap:wrap;gap:7px}
.lg{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:4px 9px;border-radius:999px;border:1px solid var(--border)}
.lg .ld{width:8px;height:8px;border-radius:50%}
.lg .c{color:var(--faint);font-weight:700}

/* listhead */
.listhead{display:flex;align-items:center;gap:10px;padding:2px 4px 12px}
.listhead:empty{display:none}
.listhead h3{font-size:12px;font-weight:750;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0}
.lh-count{font-size:12px;color:var(--faint);font-weight:700}

/* control rows */
.controls{display:flex;flex-direction:column;gap:9px}
.ctrl{display:grid;grid-template-columns:auto 1fr auto auto;gap:13px;align-items:center;padding:13px 15px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;transition:border-color .12s,box-shadow .12s}
.ctrl:hover{border-color:var(--border-2);box-shadow:var(--shadow-lg)}
.ctrl.sel{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset,var(--shadow)}
.badge{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.badge .bd{width:8px;height:8px;border-radius:50%}
.r-ready{background:var(--ready-bg);color:var(--ready)}.r-ready .bd{background:var(--ready)}
.r-partial{background:var(--partial-bg);color:var(--partial)}.r-partial .bd{background:var(--partial)}
.r-notready{background:var(--notready-bg);color:var(--notready)}.r-notready .bd{background:var(--notready)}
.r-unknown{background:var(--unknown-bg);color:var(--muted)}.r-unknown .bd{background:var(--unknown)}
.r-na{background:var(--unknown-bg);color:var(--muted)}.r-na .bd{background:var(--unknown)}
.c-mid{min-width:0}
.c-top{display:flex;align-items:center;gap:9px;margin-bottom:3px}
.cref{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--brand);background:var(--brand-tint);padding:1px 7px;border-radius:5px;white-space:nowrap}
.ctitle{font-size:14.5px;font-weight:650;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.c-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);flex-wrap:wrap}
.dotsep{width:3px;height:3px;border-radius:50%;background:var(--faint);flex:none}
.xlink{color:var(--brand);font-weight:650;cursor:pointer}
.xlink:hover{text-decoration:underline}
.src{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.03em}
.src svg{width:12px;height:12px}
.c-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.rmeta{font-size:11px;color:var(--faint);font-weight:600}
.mtrack{width:64px;height:5px;border-radius:4px;background:var(--track);overflow:hidden}
.mtrack i{display:block;height:100%;background:var(--brand);border-radius:4px}
.chev{color:var(--faint);font-size:18px}
.empty{padding:40px;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--border-2);border-radius:var(--radius)}

/* overview tiles */
.fw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.fw-tile{display:flex;gap:14px;align-items:center;text-align:left;padding:15px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
.fw-tile:hover:not([disabled]){border-color:var(--brand);box-shadow:var(--shadow-lg)}
.fw-tile[disabled]{opacity:.5;cursor:default}
.ft-body{min-width:0;flex:1}
.ft-name{font-size:14.5px;font-weight:700}
.ft-meta{font-size:11.5px;color:var(--muted);margin:2px 0 8px}

/* ---------- detail panel ---------- */
.detail{position:sticky;top:150px;min-height:200px}
@media (max-width:1000px){.detail{position:static}}
.dt-empty{display:grid;place-content:center;text-align:center;padding:56px 26px;color:var(--muted)}
.dt-empty-ic{width:40px;height:40px;margin:0 auto 12px;color:var(--faint)}
.dt-empty p{font-size:13.5px;margin:0}
.dt-head{padding:17px 20px 15px;border-bottom:1px solid var(--border)}
.crumb{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--muted);margin-bottom:10px;flex-wrap:wrap}
.crumb a{color:var(--brand);font-weight:650;cursor:pointer}.crumb a:hover{text-decoration:underline}
.crumb svg{width:13px;height:13px;color:var(--faint)}
.dt-title{font-size:16.5px;font-weight:750;letter-spacing:-.01em;margin:0 0 11px;text-wrap:balance}
.dt-badges{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.conf{font-size:11.5px;color:var(--muted);font-weight:600}
.dt-x{margin-left:auto;width:28px;height:28px;padding:0;display:grid;place-items:center;border:1px solid var(--border-2);color:var(--muted);border-radius:8px;font-size:13px}
.dt-body{padding:16px 20px 22px}
.field{margin-bottom:15px}
.field h4{font-size:10.5px;font-weight:750;text-transform:uppercase;letter-spacing:.07em;color:var(--faint);margin:0 0 5px}
.field p{margin:0;font-size:13.5px;line-height:1.55}
.mono-sm{font-family:var(--mono);font-size:12px;color:var(--muted)}
.muted-sm{color:var(--faint);font-size:12.5px}
.kv{display:flex;gap:18px}.kv .field{flex:1;margin-bottom:0}
.relief{background:var(--partial-bg);border-radius:var(--radius-sm);padding:10px 12px;font-size:12.5px;margin-bottom:15px}
.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.steps li{font-size:13px;line-height:1.45}
.ck-lb{display:flex;gap:10px;align-items:flex-start;cursor:pointer;position:relative}
.ck-lb input{position:absolute;opacity:0;width:0;height:0}
.ck{width:18px;height:18px;border-radius:5px;flex:none;margin-top:1px;border:1.5px solid var(--border-2);background:var(--surface);display:grid;place-items:center;transition:background .12s}
.ck::after{content:"";width:9px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) translate(0,-1px);opacity:0}
.ck-lb input:checked+.ck{background:var(--ready);border-color:var(--ready)}
.ck-lb input:checked+.ck::after{opacity:1}
.ck-lb input:disabled+.ck{opacity:.5}
.steps li.done .ck-t{color:var(--muted)}
.evlist{margin:0;padding-left:18px;font-size:13px;color:var(--ink)}.evlist li{margin-bottom:3px}
.divider{height:1px;background:var(--border);margin:17px 0}
.rec{background:var(--partial-bg);border:1px solid color-mix(in srgb,var(--partial) 26%,transparent);border-radius:var(--radius-sm);padding:13px 14px}
.rec p{margin:0 0 9px;font-size:13px;line-height:1.5}
.gaps{list-style:none;margin:0 0 9px;padding:0;display:flex;flex-direction:column;gap:6px}
.gaps li{position:relative;padding-left:15px;font-size:12.5px}
.gaps li::before{content:"";position:absolute;left:2px;top:7px;width:5px;height:5px;border-radius:50%;background:var(--partial)}
.rec-docs{display:flex;flex-wrap:wrap;gap:6px}
.doc-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 8px;border-radius:6px;background:var(--surface);border:1px solid var(--border);color:var(--muted)}
.doc-chip svg{width:11px;height:11px}
.rec-hint{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);background:var(--surface-2);border-radius:var(--radius-sm);padding:11px 13px}
.rec-hint svg{width:15px;height:15px;color:var(--faint);flex:none}
.audit{margin-top:2px}
.audit-h{font-size:12px;font-weight:750;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:11px;display:flex;align-items:center;gap:9px}
.flash{color:var(--ready);font-size:11px;font-weight:700;opacity:0;transition:opacity .2s;text-transform:none;letter-spacing:0}
.flash.show{opacity:1}
.audit-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.af{display:flex;flex-direction:column;gap:4px}
.af.full{grid-column:1/-1}
.af span{font-size:11px;font-weight:600;color:var(--muted)}
.af input,.af select,.af textarea{width:100%;padding:8px 10px;border:1px solid var(--border-2);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:inherit;font-size:13px}
.af textarea{min-height:64px;resize:vertical}
.af :disabled{opacity:.6;cursor:not-allowed}

/* ---------- modals ---------- */
.modal-overlay{position:fixed;inset:0;background:rgba(20,16,16,.5);display:grid;place-items:center;z-index:100;padding:20px}
.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:86vh;overflow:auto;padding:22px 24px}
.modal-wide{max-width:820px}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.modal-head h3{margin:0;font-size:18px;font-weight:750}
.modal-close{border:0;background:transparent;font-size:16px;color:var(--muted);padding:6px}
.modal-sub{color:var(--muted);font-size:13px;margin:0 0 16px}
.roles-add{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.roles-add input,.roles-add select{padding:8px 11px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:13.5px;flex:1;min-width:130px}
.roles-list{display:flex;flex-direction:column;gap:7px}
.role-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);flex-wrap:wrap}
.role-row .re{font-weight:650;font-size:13.5px;flex:1;min-width:140px}
.role-row .rf{font-size:12.5px;color:var(--muted)}
.role-row .rr{font-size:12.5px;font-weight:600}
.ws-rr{display:flex;gap:6px;flex-wrap:wrap}
.roles-legend{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}
.roles-legend h4{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.lg-row{font-size:12.5px;color:var(--muted);margin-bottom:5px}.lg-row b{color:var(--ink)}
.muted{color:var(--muted);font-size:13px;padding:8px 2px}
.ws-ai.on{color:var(--ready);border-color:color-mix(in srgb,var(--ready) 40%,transparent)}
.fw-pick-actions{display:flex;gap:8px;margin-bottom:12px}
.fw-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.fw-grp h5{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.fw-opt{display:flex;align-items:center;gap:7px;font-size:13px;padding:3px 0}

/* ---------- AI modal (ai.js) ---------- */
.ai-drop{border:2px dashed var(--border-2);border-radius:var(--radius);padding:26px;text-align:center;color:var(--muted);font-size:13.5px;cursor:pointer;background:var(--surface-2)}
.ai-drop.drag{border-color:var(--brand);background:var(--brand-tint)}
.ai-doc-list{display:flex;flex-direction:column;gap:6px;margin:12px 0}
.ai-doc{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);font-size:13px}
.ai-doc-name{font-weight:600;flex:1}.ai-doc-meta{color:var(--muted);font-size:12px}
button.ai-doc-open{font:inherit;font-weight:600;text-align:left;border:0;background:transparent;color:var(--text);padding:0;cursor:pointer}
button.ai-doc-open:hover{color:var(--brand);text-decoration:underline}
.ai-warn{color:var(--partial);font-weight:600}
.ai-dl,.ai-del{border:0;background:transparent;color:var(--muted);padding:2px 6px;cursor:pointer;font-size:14px;line-height:1}
.ai-dl:hover,.ai-del:hover{color:var(--brand)}
.ai-muted{color:var(--muted);font-size:13px;padding:6px 2px}
.ai-run{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.ai-run select{padding:8px 11px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:13.5px}
.ai-progress{font-size:13px;color:var(--muted);padding:8px 0}
.ai-results{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.risk-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:700}
.risk-ready{background:var(--ready-bg);color:var(--ready)}
.risk-partial{background:var(--partial-bg);color:var(--partial)}
.risk-not{background:var(--notready-bg);color:var(--notready)}
.risk-unknown{background:var(--unknown-bg);color:var(--muted)}

/* ---------- footer ---------- */
.app-footer{max-width:1300px;margin:30px auto 0;padding:22px 24px 40px;border-top:1px solid var(--border);color:var(--muted);font-size:12.5px;line-height:1.6}
.app-footer p{margin:0 0 10px}
.app-footer strong{color:var(--ink)}
.brand-signoff{display:flex;align-items:center;gap:10px;margin-top:12px}
.brand-mark{width:30px;height:30px;border-radius:8px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:800;font-size:12px;flex:none}

/* ---------- toast ---------- */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--bg);padding:11px 20px;border-radius:999px;font-size:13.5px;font-weight:600;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:200}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- responsive: header + spacing ---------- */
@media (max-width:720px){
  html,body{overflow-x:hidden;max-width:100%}
  .app-header{padding:10px 14px;gap:8px;max-width:100vw}
  .product h1{font-size:17px}
  .product .tagline{display:none}
  .brand-divider{display:none}
  .header-spacer{display:none}
  .brand-lockup{margin-left:auto}  /* keep Roussinov pinned right when the header wraps */
  /* login / ws gate: cap the card so it never inflates the page width */
  .login-gate{display:block;padding:34px 14px}
  .login-card{width:auto;max-width:340px;margin:0 auto;padding:28px 22px}
  /* header stacks: logo + user menu on row 1, tenant switcher full-width below */
  .header-brands{flex-wrap:wrap;gap:8px 12px}
  .header-right{display:contents}
  .product{order:1}
  .header-brands .user-menu{order:2;margin-left:auto}
  .tenant-switch{order:3;flex:1 1 100%;min-width:0}
  .tenant-switch #tenant-select{flex:1 1 auto;min-width:0}
  .header-brands .user-menu-btn{max-width:52vw}
  .header-brands .user-menu-btn .uname,.header-brands .user-menu-btn .utenant{max-width:44vw}
  /* framework-nav actions wrap under the group tabs on narrow screens */
  .fw-top{flex-wrap:wrap;padding-left:14px;padding-right:14px}
  .fw-actions{flex:1 1 100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .fw-actions>*{min-width:0;font-size:12.5px;padding:7px 8px;white-space:nowrap}
  .fw-pane{position:static}
  .fw-strip,.app-footer{padding-left:14px;padding-right:14px}
  main{padding:16px 14px 56px}
  .summary{flex-direction:column;align-items:flex-start;gap:16px}
}
@media (max-width:380px){
  .tenant-label{display:none}
}

/* ─────────────────────────── crosswalk ─────────────────────────── */
.grp-cx{margin-left:4px}
.grp-cx svg{width:14px;height:14px}

/* related-controls block in the detail panel */
.field.related h4{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.field.related h4 svg{width:13px;height:13px;color:var(--brand)}
.field.related .rel-fam{color:var(--brand);text-transform:none;letter-spacing:0;font-size:11px;font-weight:750;background:var(--brand-tint);padding:2px 8px;border-radius:999px}
.field.related .rel-n{color:var(--faint);font-weight:700}
.field.related>.muted-sm{margin:0 0 9px}
.rel-list{display:flex;flex-direction:column;gap:7px}
.rel-row{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;padding:9px 11px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .12s,background .12s}
.rel-row:hover{border-color:var(--brand-2);background:var(--surface)}
.rel-row:focus-visible{border-color:var(--brand-2);background:var(--surface);outline:2px solid var(--brand);outline-offset:2px}
.rel-row .badge{padding:3px 8px;font-size:10.5px;gap:5px}
.rel-mid{min-width:0;display:flex;flex-direction:column;gap:1px}
.rel-ref{font-size:11px;color:var(--muted);font-weight:650}
.rel-title{font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rel-copy{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--border-2);border-radius:7px;background:var(--surface);color:var(--muted);cursor:pointer}
.rel-copy:hover{color:var(--brand);border-color:var(--brand-2)}
.rel-copy svg{width:14px;height:14px}
.rel-row .chev{font-size:16px}
.rel-more{margin-top:9px;border:1px dashed var(--border-2);background:transparent;color:var(--brand);font-family:inherit;font-size:12.5px;font-weight:650;padding:8px 12px;border-radius:var(--radius-sm);cursor:pointer;width:100%}
.rel-more:hover{background:var(--brand-tint)}

/* crosswalk families overview */
.cx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}
.cx-tile{display:flex;gap:14px;align-items:flex-start;text-align:left;padding:15px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;transition:border-color .12s,box-shadow .12s}
.cx-tile:hover{border-color:var(--brand-2);box-shadow:var(--shadow-lg)}
.cx-tile .donut{flex:0 0 auto;margin-top:2px}
.cx-desc{font-size:12px;color:var(--muted);margin:3px 0 8px;line-height:1.35}
.cx-mark{width:54px;height:54px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border-radius:14px;background:var(--brand-tint);color:var(--brand)}
.cx-mark svg{width:26px;height:26px}
.cx-back{display:inline-flex;align-items:center;gap:2px;font-size:12px;font-weight:650;color:var(--brand);cursor:pointer;margin-bottom:3px}
.cx-back svg{width:14px;height:14px;transform:rotate(180deg)}

/* ─────────────────────────── audit trail ─────────────────────────── */
.field.history h4{display:flex;align-items:center;gap:6px}
.field.history h4 svg{width:13px;height:13px;color:var(--muted)}
.hist-list{display:flex;flex-direction:column;gap:2px}
.hist-row{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;padding:7px 2px;border-bottom:1px solid var(--border)}
.hist-row:last-child{border-bottom:0}
.hist-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;background:var(--muted)}
.hist-dot.d-control{background:var(--brand-2)}
.hist-dot.d-step{background:var(--partial)}
.hist-dot.d-assess{background:#3b82c4}
.hist-dot.d-role{background:var(--notready)}
.hist-dot.d-doc{background:var(--ready)}
.hist-dot.d-state{background:var(--unknown)}
.hist-mid{min-width:0}
.hist-act{font-size:13px;color:var(--ink)}
.hist-tg{color:var(--brand);font-weight:600}
.hist-det{color:var(--muted);margin-left:6px;font-size:12.5px}
.hist-meta{font-size:11.5px;color:var(--faint);margin-top:1px}
#activity-list{max-height:60vh;overflow-y:auto}
#activity-list .hist-act{font-size:13.5px}

/* ─────────────────────── preliminary financial audit ─────────────────────── */
/* this section owns the whole work area: drop the framework toolbar + detail pane */
main[data-view="finaudit"] .toolbar,
main[data-view="finaudit"] .appl-pills,
main[data-view="finaudit"] .detail{display:none}
main[data-view="finaudit"] .work{grid-template-columns:1fr}
.grp.grp-fa[aria-selected="true"]{color:var(--brand)}

.fa-wrap{display:flex;flex-direction:column;gap:14px}
.fa-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.fa-seg-wrap{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:3px}
.fa-seg{border:0;background:transparent;color:var(--muted);font-weight:650;font-size:13px;padding:7px 16px;border-radius:999px}
.fa-seg.on{background:var(--brand);color:#fff}
.fa-top-right{display:flex;align-items:center;gap:10px}
.fa-saved{font-size:12px;color:var(--faint);min-width:64px;text-align:right}
.fa-saved.ok{color:var(--ready)}
.fa-saved.err{color:var(--notready)}
.fa-ro{flex-basis:100%;font-size:12px;color:var(--partial);background:var(--partial-bg);border-radius:var(--radius-sm);padding:6px 11px}
.fa-note{font-size:12.5px;color:var(--muted);margin:0;line-height:1.45}
.fa-meta{display:flex;gap:12px;flex-wrap:wrap}
.fa-meta label{display:flex;flex-direction:column;gap:3px;flex:1 1 180px}
.fa-meta label span{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--faint)}
.fa-meta input{padding:8px 10px;border:1px solid var(--border-2);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:inherit;font-size:13px}

.fa-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
@media (max-width:1000px){.fa-cols{grid-template-columns:1fr}}
.fa-panel{padding:16px 17px}
.fa-panel-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.fa-panel-h h3{margin:0;font-size:15px}
.fa-prog{display:flex;align-items:center;gap:9px}
.fa-prog .donut{width:52px;height:52px}
.fa-prog .d-lbl b{font-size:13px}
.fa-prog-n{font-size:12px;color:var(--muted)}

.fa-secblock{margin-bottom:14px}
.fa-secblock h4{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 7px;font-size:12.5px;color:var(--brand-2)}
.fa-isa{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.2px;color:var(--brand);background:var(--brand-tint);border:1px solid var(--brand);border-radius:7px;padding:0 6px;line-height:1.6;white-space:nowrap}
.fa-secblock h4 .fa-isa{margin-right:auto}
.fa-info{border-top:3px solid var(--brand)}
.fa-disclaimer{font-size:13px;color:var(--ink);background:var(--partial-bg);border:1px solid color-mix(in srgb,var(--partial) 45%,transparent);border-radius:10px;padding:10px 12px;line-height:1.45}
.fa-standards{margin-top:10px}
.fa-standards summary{cursor:pointer;font-weight:700;font-size:13px;color:var(--brand-2);padding:2px 0}
.fa-standards>p{font-size:12.5px;color:var(--muted);margin:8px 2px}
.fa-isa-map{width:100%;border-collapse:collapse;font-size:12.5px;margin:6px 0}
.fa-isa-map th,.fa-isa-map td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--border)}
.fa-isa-map th{color:var(--muted);font-weight:700}
.fa-isa-map td:last-child{white-space:nowrap;font-weight:700;color:var(--brand-2)}
.fa-secn{color:var(--faint);font-weight:600}

.fa-figgrp{margin-bottom:12px}
.fa-figgrp h5{margin:0 0 7px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--faint)}
.fa-figgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media (max-width:520px){.fa-figgrid{grid-template-columns:1fr}}
.fa-fld{display:flex;flex-direction:column;gap:3px}
.fa-fld span{font-size:12px;color:var(--muted)}
.fa-fld input{padding:7px 9px;border:1px solid var(--border-2);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:inherit;font-size:13px;text-align:right;font-variant-numeric:tabular-nums}
.fa-fld input:focus{border-color:var(--brand-2);outline:none}

.fa-ratios-wrap{margin-top:6px}
.fa-ratios-wrap h3{font-size:14px;margin:10px 0 8px}
.fa-ratios{display:flex;flex-direction:column;gap:1px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}
.fa-ratio{display:grid;grid-template-columns:1fr auto 62px;gap:10px;align-items:center;padding:8px 11px;background:var(--surface);font-size:13px}
.fa-ratio:nth-child(even){background:var(--surface-2)}
.fa-rlab{color:var(--ink);display:flex;align-items:center;gap:5px}
.fa-rhint{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:var(--border-2);color:var(--muted);font-size:9px;font-weight:700;cursor:help}
.fa-rval{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.fa-rflag{text-align:center;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:2px 0}
.fa-ratio.fa-good .fa-rflag{color:var(--ready);background:var(--ready-bg)}
.fa-ratio.fa-watch .fa-rflag{color:var(--partial);background:var(--partial-bg)}
.fa-ratio.fa-alert .fa-rflag{color:var(--notready);background:var(--notready-bg)}
.fa-ratio.fa-na .fa-rflag,.fa-ratio.fa-info .fa-rflag{color:var(--unknown);background:var(--unknown-bg)}
.fa-ratio.fa-good .fa-rval{color:var(--ready)}
.fa-ratio.fa-alert .fa-rval{color:var(--notready)}

.fa-flags-wrap{margin-top:14px}
.fa-flags-wrap h3{font-size:14px;margin:0 0 8px;display:flex;align-items:center;gap:7px}
.fa-flags-wrap h3 .tnum{background:var(--notready);color:#fff;border-radius:999px;font-size:11px;padding:1px 8px}
.fa-flags{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.fa-flags li{font-size:12.5px;line-height:1.4;background:var(--notready-bg);border:1px solid color-mix(in srgb,var(--notready) 24%,transparent);border-radius:var(--radius-sm);padding:8px 11px}
.fa-flags li b{color:var(--notready)}
.fa-flags-empty{font-size:12.5px;color:var(--muted);background:var(--ready-bg);border:1px solid color-mix(in srgb,var(--ready) 24%,transparent);border-radius:var(--radius-sm);padding:9px 12px}
.fa-loading{padding:40px;text-align:center;color:var(--muted)}

/* ─────────────────── financial-audit documents ─────────────────── */
.fa-docs{margin-top:14px}
.fa-docs-sub{font-size:12.5px;color:var(--muted);margin:0 0 12px;max-width:80ch}
.fa-doc-up{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.fa-doc-up select{padding:7px 9px;border:1px solid var(--border-2);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:inherit;font-size:13px;cursor:pointer}
.fa-doc-list{display:flex;flex-direction:column;gap:7px}
.fa-doc{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:9px 11px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm)}
.fa-doc-name{min-width:0;text-align:left;border:0;background:transparent;color:var(--ink);font-family:inherit;font-size:13px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0}
.fa-doc-name:hover{color:var(--brand);text-decoration:underline}
.fa-doc-meta{font-size:11.5px;color:var(--faint);white-space:nowrap}
.fa-doc-del{border:0;background:transparent;color:var(--faint);font-size:14px;cursor:pointer;padding:2px 4px;line-height:1}
.fa-doc-del:hover{color:var(--notready)}
.fa-doc-empty{font-size:12.5px;color:var(--faint);padding:6px 2px}
@media (max-width:640px){.fa-doc{grid-template-columns:1fr auto;grid-auto-rows:min-content}.fa-doc-meta{grid-column:1/-1}}

/* --- AI analysis of the financial statements --- */
.fa-ai{margin-top:14px}
.fa-ai-busy{font-size:13px;color:var(--muted);padding:10px 2px;display:flex;align-items:center;gap:8px}
.fa-ai-busy::before{content:"";width:14px;height:14px;border:2px solid var(--border-2);border-top-color:var(--brand);border-radius:50%;animation:fa-spin .8s linear infinite}
@keyframes fa-spin{to{transform:rotate(360deg)}}
.fa-ai-meta{font-size:11.5px;color:var(--faint);margin-bottom:8px}
.fa-ai-trunc{color:var(--partial)}
.fa-ai-summary{font-size:13.5px;line-height:1.55;margin:0 0 14px}
.fa-ai-figs h4,.fa-ai-finds h4{margin:0 0 9px;font-size:13px}
.fa-ai-figgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;margin-bottom:16px}
.fa-ai-fig{display:flex;flex-direction:column;gap:2px;padding:8px 11px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm)}
.fa-ai-flab{font-size:11.5px;color:var(--muted)}
.fa-ai-fval{font-size:14px;font-weight:600;color:var(--ink)}
.fa-ai-finds{display:flex;flex-direction:column;gap:9px}
.fa-ai-find{padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--unknown);border-radius:var(--radius-sm)}
.fa-ai-find.fa-alert{border-left-color:var(--notready)}
.fa-ai-find.fa-watch{border-left-color:var(--partial)}
.fa-ai-find.fa-info{border-left-color:var(--brand)}
.fa-ai-find.fa-na{border-left-color:var(--unknown)}
.fa-ai-find-h{display:flex;align-items:center;gap:9px;margin-bottom:5px}
.fa-ai-sev{font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:2px 8px;border-radius:999px;color:var(--unknown);background:var(--unknown-bg)}
.fa-ai-find.fa-alert .fa-ai-sev{color:var(--notready);background:var(--notready-bg)}
.fa-ai-find.fa-watch .fa-ai-sev{color:var(--partial);background:var(--partial-bg)}
.fa-ai-find.fa-info .fa-ai-sev{color:var(--brand);background:var(--brand-tint)}
.fa-ai-area{font-size:12.5px;font-weight:600;color:var(--ink)}
.fa-ai-obs{font-size:13px;line-height:1.5}
.fa-ai-rec{font-size:12.5px;color:var(--muted);margin-top:5px;line-height:1.5}
.fa-ai-disclaimer{font-size:11px;color:var(--faint);font-style:italic;margin:14px 0 0}
