/* ===========================================================
   ALLTECH PMO — Project Delivery & Governance Platform
   ALLTECH-inspired: warm copper/orange, light elegant surfaces,
   dark professional text, subtle green sustainability accents.
   =========================================================== */
:root{
  --nav:#ffffff; --nav-2:#f6efe4; --nav-line:#ece2d4; --nav-ink:#6a5d4c; --nav-ink-soft:#736753;
  --bg:#f6f1e8; --card:#ffffff; --line:#ece2d4; --line-2:#dccdb8;
  --ink:#2b2620; --muted:#675d4f; --faint:#766a58;   /* darkened to meet WCAG AA (>=4.5:1) on cream/white; --ns/--grey keep the old tone as status colours */
  --brand:#bf550f; --brand-2:#e27d24; --grad:linear-gradient(120deg,#e27d24,#bb5210);
  --copper:#b8530f; --leaf:#5c8a3a;
  --ns:#a89c8b; --prog:#2563eb; --done:#4f8f3f; --late:#e0921f; --block:#cf3c2e; --hold:#9a6cc0;
  --green:#4f8f3f; --amber:#e0921f; --red:#cf3c2e; --grey:#a89c8b;
  --radius-lg:18px; --radius:14px; --radius-sm:9px; --radius-pill:999px;
  --shadow:0 12px 32px -18px rgba(90,58,18,.34); --shadow-sm:0 2px 8px -4px rgba(90,58,18,.25); --shadow-md:0 8px 22px -12px rgba(90,58,18,.32);
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:22px; --sp-6:30px;
  --fh:"Space Grotesk",system-ui,sans-serif; --fb:"Inter",system-ui,-apple-system,sans-serif;
  --fm:"SFMono-Regular",ui-monospace,"Cascadia Code",Consolas,"Liberation Mono",monospace;
  --side-w:256px;
}
*,*::before,*::after{box-sizing:border-box}*{margin:0}
[hidden]{display:none!important}

/* ---------- Accessibility ---------- */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* Skip link: hidden until focused, then revealed at top-left */
.skip-link{position:fixed;top:8px;left:8px;z-index:1000;background:var(--brand);color:#fff;padding:9px 14px;border-radius:8px;font:600 14px var(--fb);text-decoration:none;box-shadow:var(--shadow-md);transform:translateY(-160%);transition:transform .15s}
.skip-link:focus{transform:none}
body.modal-open{overflow:hidden}   /* scroll-lock the page behind an open modal */
/* Respect users who prefer reduced motion: neutralise transitions/animations */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}
html,body{height:100%}
body{font-family:var(--fb);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--fh);font-weight:600;line-height:1.15}
a{color:var(--brand);text-decoration:none}
button{font:inherit;cursor:pointer}
ul{list-style:none;padding:0}
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.mono{font-variant-numeric:tabular-nums}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid transparent;border-radius:999px;padding:8px 16px;font-weight:600;font-size:13px;transition:.15s}
.btn-primary{background:var(--grad);color:#fff;box-shadow:0 6px 16px -8px rgba(191,85,15,.6)}
.btn-primary:hover{filter:brightness(1.05);transform:translateY(-1px)}
.btn-primary:disabled{opacity:.5;cursor:default;transform:none;filter:none}
.btn-soft{background:#fff;border-color:var(--line-2);color:var(--ink)}
.btn-soft:hover{border-color:var(--brand);color:var(--brand)}
.btn-soft:disabled{opacity:.55;cursor:default}
.btn-block{width:100%;justify-content:center;padding:12px}
.btn-sm{padding:5px 12px;font-size:12px}
.btn-ghost{background:transparent;border-color:var(--line-2)}
.link-btn{background:none;border:0;color:var(--muted);font-size:12px;text-decoration:underline;padding:0}
.link-btn:hover{color:var(--brand)}

/* ---------- Login gate ---------- */
.gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:radial-gradient(1100px 620px at 50% -8%,#fce6cd,#f4ead9 45%,#efe5d6)}
.gate-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:36px 34px;width:min(94vw,420px);box-shadow:0 34px 80px -34px rgba(120,70,20,.5);text-align:left;color:var(--ink)}
.gate-brand{display:flex;align-items:center;gap:10px;font-family:var(--fh);font-weight:700;font-size:1.05rem;letter-spacing:.01em;margin-bottom:20px;color:var(--ink)}
.brand-badge{display:inline-grid;place-items:center;background:var(--grad);color:#fff;font-family:var(--fh);font-weight:700;font-size:13px;padding:5px 9px;border-radius:9px;letter-spacing:.02em;box-shadow:0 6px 14px -7px rgba(191,85,15,.7)}
.gate-card h1{font-size:1.4rem;margin-bottom:6px;text-align:center}
.gate-sub{color:var(--muted);font-size:13px;margin-bottom:22px;text-align:center}
.gate-field{display:block;margin-bottom:14px}
.gate-field>span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:5px;font-weight:600}
.gate-card input,.gate-card select{width:100%;padding:12px 14px;border-radius:11px;background:#fdfaf5;border:1px solid var(--line-2);color:var(--ink);font-size:15px;font-family:inherit}
.gate-card select{cursor:pointer}
.gate-card input:focus,.gate-card select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(191,85,15,.18);background:#fff}
.gate-card .btn-block{margin-top:6px}
/* SSO sign-in (revealed by app.js when the server has OIDC configured) */
.gate-or{display:flex;align-items:center;gap:10px;color:var(--faint);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:14px 0 10px}
.gate-or::before,.gate-or::after{content:"";flex:1;height:1px;background:var(--line)}
.gate-sso-btn{display:flex;align-items:center;justify-content:center;gap:9px;text-decoration:none;margin-top:0}
.gate-sso-btn svg{flex:none}
.gate-error{color:var(--red);font-size:13px;min-height:18px;margin-top:10px;text-align:center}
.gate-card h1 .brand-arrow{color:var(--brand);font-weight:700}
/* Forgot password / Request access links */
.gate-links{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:14px}
.gate-link{background:none;border:0;padding:0;font:inherit;font-size:13px;font-weight:600;color:var(--brand);cursor:pointer}
.gate-link:hover{text-decoration:underline}
.gate-link-sep{color:var(--faint)}
/* Login-page dialogs (rendered above the gate) — compound selector so this
   z-index beats the later, equal-specificity .modal{z-index:80} rule. */
.modal.gate-modal{z-index:130}
.gate-modal-card{width:min(94vw,440px)}
.gate-modal-card h2{font-size:1.2rem;margin-bottom:4px}
.gate-dlg-field{display:block;margin-bottom:12px}
.gate-dlg-field>span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:5px;font-weight:600}
.gate-dlg-field input,.gate-dlg-field textarea{width:100%;padding:11px 13px;border-radius:11px;background:#fdfaf5;border:1px solid var(--line-2);color:var(--ink);font-size:14px;font-family:inherit}
.gate-dlg-field textarea{resize:vertical;min-height:64px}
.gate-dlg-field input:focus,.gate-dlg-field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(191,85,15,.18);background:#fff}
.gate-confirm{text-align:center;padding:6px 4px}
.gate-confirm-ico{margin:2px auto 10px;width:44px;height:44px}
.gate-confirm h2{margin-bottom:8px}
.gate-confirm .btn{margin-top:18px}
.guinness-note{display:inline-flex;align-items:center;gap:9px;margin-top:16px;padding:9px 14px;background:#fbf6ee;border:1px solid var(--line);border-radius:999px;font-size:13px;color:var(--ink)}
.guinness-ico{flex:none;line-height:0}
.gate-foot{position:absolute;bottom:22px;color:var(--faint);font-size:12px;letter-spacing:.1em;text-transform:uppercase}

/* ---------- App shell ---------- */
/* grid-template-rows:minmax(0,1fr) clamps the single row to the viewport height; without it the
   row defaults to `auto`, grows to content on short screens, and overflows (clipped) so neither the
   sidebar nav nor the main view can scroll to the bottom. */
.app{display:grid;grid-template-columns:var(--side-w) 1fr;grid-template-rows:minmax(0,1fr);height:100vh;overflow:hidden}
.sidebar{background:var(--nav);color:var(--nav-ink);display:flex;flex-direction:column;border-right:1px solid var(--nav-line);box-shadow:1px 0 0 rgba(0,0,0,.01)}
.side-brand{display:flex;align-items:center;gap:11px;padding:16px 18px;border-bottom:1px solid var(--nav-line)}
.side-brand .brand-mark{display:inline-grid;place-items:center;background:var(--grad);color:#fff;font-family:var(--fh);font-weight:700;font-size:14px;padding:7px 9px;border-radius:10px;letter-spacing:.01em;box-shadow:0 7px 16px -8px rgba(191,85,15,.65)}
.side-brand .brand-text{font-family:var(--fh);line-height:1.12;display:flex;flex-direction:column}
.brand-line1{font-size:10.5px;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.brand-arrow{color:var(--brand);font-weight:700}
.brand-line2{font-size:15px;font-weight:700;color:var(--ink);margin-top:1px}

/* grouped, enterprise-style navigation */
.side-nav{flex:1;min-height:0;overflow-y:auto;padding:10px 11px 12px;display:flex;flex-direction:column;gap:9px}
.nav-group{background:var(--nav-2);border:1px solid var(--nav-line);border-radius:13px;padding:6px 6px 7px}
.nav-group-title{display:flex;align-items:center;gap:6px;width:100%;border:0;background:none;font-family:inherit;font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;font-weight:700;color:var(--faint);padding:6px 9px 5px;cursor:pointer;text-align:left;border-radius:8px;transition:.12s}
.nav-group-title:hover{color:var(--muted);background:rgba(120,70,20,.04)}
.nav-group-title .nav-grp-caret{font-size:8px;width:9px;flex:none;transition:.12s}
.nav-group-title .nav-grp-name{flex:1;min-width:0}
.nav-group.collapsed{padding-bottom:6px}
.nav-group.collapsed .nav-btn{display:none}
.nav-btn{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;background:none;color:var(--nav-ink);border-radius:9px;font-size:13px;font-weight:500;text-align:left;transition:.12s}
.nav-btn .nav-ico{width:18px;text-align:center;opacity:.9;filter:grayscale(.15);flex:none}
.nav-btn .nav-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-btn .nav-count{margin-left:auto;font-size:11px;color:var(--muted);background:#fff;border:1px solid var(--nav-line);padding:0 7px;border-radius:999px;flex:none}
.nav-btn .nav-count.is-zero{display:none}
.nav-btn:hover{background:#fff;color:var(--ink)}
.nav-btn.active{background:#fff;color:var(--copper);font-weight:600;box-shadow:inset 2.5px 0 0 var(--brand),0 1px 4px -1px rgba(120,70,20,.18)}
.nav-btn.active .nav-count{background:var(--brand);color:#fff;border-color:var(--brand)}
.nav-btn.nav-locked{opacity:.55;cursor:not-allowed}
.nav-btn.nav-locked:hover{background:none;color:var(--nav-ink)}
.nav-btn.nav-locked .nav-lock-tag{margin-left:auto;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border:1px solid var(--nav-line);border-radius:999px;padding:0 6px;flex:none}
/* Localisation lifecycle tabs (Register → Traceability) */
.loc-tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:14px}
.loc-tab{background:transparent;border:0;border-bottom:2px solid transparent;padding:8px 14px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;border-radius:8px 8px 0 0}
.loc-tab:hover{background:var(--hover,#f6f1ea);color:var(--ink)}
.loc-tab.on{color:var(--copper,#b8530f);border-bottom-color:var(--copper,#b8530f);background:#fbf3ec}
/* preview-as-role banner */
.preview-banner{display:flex;align-items:center;gap:12px;justify-content:space-between;background:#3a2a55;color:#fff;border-radius:10px;padding:9px 14px;margin-bottom:12px;font-size:13px;font-weight:500}
.preview-banner .btn{background:#fff;color:#3a2a55}
/* Access & Permissions cockpit (.ac-*) */
.ac{display:flex;flex-direction:column;gap:14px}
.ac-head{padding:12px 16px}
.ac-badge{background:linear-gradient(135deg,#7c5cc4,#4a3a7a);color:#fff;font-size:11px;font-weight:700;letter-spacing:.06em;padding:4px 9px;border-radius:6px}
.ac-card{padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.ac-card-h{font-size:14px;font-weight:700;color:var(--ink)}
.ac-radio{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:9px;padding:10px 12px;cursor:pointer}
.ac-radio.on{border-color:#7c5cc4;background:#f6f2fc}
.ac-radio input{margin-top:3px}
.ac-row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.ac-f{display:flex;flex-direction:column;gap:3px}
.ac-f-l{font-size:11px;font-weight:600;color:var(--muted)}
.ac-preview-note{background:#f6f2fc;border:1px solid #d9cdf0;border-radius:8px;padding:8px 12px;font-size:12.5px;color:#4a3a7a}
.ac-chip{display:inline-block;font-size:10.5px;font-weight:600;padding:1px 8px;border-radius:10px;border:1px solid transparent}
.ac-chip.ac-none{background:#f1edf0;color:#8a7d8a;border-color:#e0d6dd}
.ac-chip.ac-read{background:#eef4fb;color:#2f5d8a;border-color:#cfe0f0}
.ac-chip.ac-edit{background:#e8f4e8;color:#2f6f23;border-color:#c4e3c0}
.ac-chip.ac-admin{background:#f3ecfb;color:#5b3aa6;border-color:#dccef2}
.ac-matrix{width:100%;font-size:12.5px}.ac-matrix th{text-align:left;font-size:11px;color:var(--muted)}
.ac-where{border:1px solid var(--line);border-radius:8px;padding:6px 10px}
.ac-where summary{cursor:pointer}.ac-where ul{margin:6px 0 2px 18px;font-size:12px;color:var(--ink)}
.ac-test-out{margin-top:8px}
.ac-test-card{border:1px solid var(--line);border-radius:9px;padding:10px 12px}
.ac-test-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12.5px}
.ac-test-list li.ok{color:#2f6f23}.ac-test-list li.no{color:#a4332a}
.nav-btn.nav-sub{padding-left:32px;font-size:12.5px}
.nav-btn.nav-sub .nav-ico{font-size:.85em;opacity:.7}
.nav-btn.nav-sub .nav-lbl{color:var(--muted)}
.nav-btn.nav-sub.active .nav-lbl{color:var(--copper)}
.nav-btn .nav-count.badge-alert{background:var(--red);color:#fff;border-color:var(--red);box-shadow:0 0 0 3px rgba(207,60,46,.18)}

/* entity / workspace switcher (top of sidebar) */
.side-entity{position:relative;padding:12px 14px;border-bottom:1px solid var(--nav-line);background:var(--nav)}
.ent-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);font-weight:700;margin-bottom:6px}
.ent-pick{display:flex;align-items:center;gap:9px;width:100%;background:#fff;border:1px solid var(--line-2);border-radius:11px;padding:9px 12px;cursor:pointer;text-align:left;box-shadow:0 4px 10px -8px rgba(90,58,18,.4)}
.ent-pick:hover{border-color:var(--brand)}
.ent-pick.is-pmo{background:linear-gradient(120deg,#fff,#fbf1e6);border-color:var(--brand-2)}
.ent-name{flex:1;min-width:0;font-size:14px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ent-caret{color:var(--brand);font-size:11px;flex:none}
.ent-flag-img{width:22px;height:16px;border-radius:3px;object-fit:cover;box-shadow:0 0 0 1px rgba(0,0,0,.12);flex:none}
.ent-flag-ico{font-size:18px;line-height:1;flex:none}
.ent-menu{position:absolute;left:14px;right:14px;top:calc(100% - 6px);z-index:60;background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:0 12px 30px -8px rgba(40,25,5,.35);overflow:hidden;max-height:330px;overflow-y:auto}
.ent-menu-item{display:flex;align-items:center;gap:9px;width:100%;padding:9px 12px;border:0;background:none;cursor:pointer;text-align:left;font-size:13.5px;font-weight:500;color:var(--ink)}
.ent-menu-item+.ent-menu-item{border-top:1px solid var(--line)}
.ent-menu-item:hover{background:#fdf6ee}
.ent-menu-item.sel{background:#fbf3ea;font-weight:700}
.ent-menu-item .ent-name{font-size:13.5px;font-weight:inherit}
.ent-check{margin-left:auto;color:var(--brand);font-weight:800;flex:none}
/* Training & Testing sandbox entity */
.ent-pick.is-sandbox{border-style:dashed;border-color:#9a6cc0}
.ent-menu-item.is-sandbox .ent-name{color:#7c4fa8}
.tag-sandbox{background:#efeaf7;color:#7c4fa8}
.ent-sandbox-opt{display:flex;align-items:center;gap:7px;margin-top:8px;font-size:12.5px;color:var(--muted)}
.ent-sbox{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:#7c4fa8}

.side-foot{padding:10px 11px 12px;border-top:1px solid var(--nav-line);display:flex;flex-direction:column;gap:8px}
.foot-user{display:flex;align-items:center;gap:9px;padding:8px 9px;background:var(--nav-2);border:1px solid var(--nav-line);border-radius:11px}
.foot-user .avatar{width:30px;height:30px;font-size:12px}
.foot-user-meta{display:flex;flex-direction:column;min-width:0;gap:1px;flex:1}
.foot-user-name{font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize}
.foot-user-role{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}
.foot-status{display:flex;align-items:center;gap:7px;padding:0 5px}
.save-dot{width:7px;height:7px;border-radius:50%;background:var(--leaf);flex:none;transition:background .2s}
.save-dot.dirty{background:var(--amber)}
.save-dot.saved{background:var(--leaf)}
.save-state{font-size:11.5px;color:var(--muted)}
.save-state.dirty{color:var(--amber)}
.save-state.saved{color:#477b30}   /* darker leaf so the small "saved" text meets WCAG AA on white */
.foot-actions{display:flex;gap:7px}
.foot-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--nav-line);background:#fff;color:var(--nav-ink);border-radius:9px;padding:7px 10px;font-size:12px;font-weight:600;cursor:pointer;transition:border-color .12s,color .12s}
.foot-btn:hover{border-color:var(--brand);color:var(--brand)}
.foot-ico{font-size:13px;line-height:1}

/* ---------- Topbar ---------- */
.main{display:flex;flex-direction:column;min-width:0;overflow:hidden}
.topbar{display:flex;align-items:center;gap:14px;padding:12px 22px;background:#fff;border-bottom:1px solid var(--line);position:relative;z-index:20;flex-wrap:wrap}
.topbar-title h2{font-size:1.15rem}
.view-sub{font-size:12px;color:var(--faint)}
.topbar-tools{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.export-wrap{position:relative;display:inline-flex}
.tool{font-size:13px}
.tool.status-date{display:flex;flex-direction:column;font-size:10px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}
.tool.status-date input{font-size:13px;color:var(--ink);border:1px solid var(--line-2);border-radius:8px;padding:5px 8px}
.search{border:1px solid var(--line-2);border-radius:999px;padding:8px 14px;width:200px}
.search:focus{outline:none;border-color:var(--brand)}
.hamburger{display:none;background:none;border:0;font-size:20px}
.menu{position:absolute;top:calc(100% + 6px);right:0;min-width:160px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:6px;z-index:30}
.menu button{display:block;width:100%;text-align:left;padding:9px 14px;border:0;background:none;border-radius:8px;font-size:13px}
.menu button:hover{background:var(--bg)}

/* ---------- View area ---------- */
.view{flex:1;min-height:0;overflow:auto;padding:22px 24px 60px}
.view-grid{display:grid;gap:18px}

/* ---------- Cards / KPIs ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.card h3{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:14px;font-family:var(--fb);font-weight:700}
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:18px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;position:relative;overflow:hidden}
.kpi .v{font-family:var(--fh);font-size:2rem;font-weight:700;line-height:1}
.kpi .l{font-size:12px;color:var(--muted);margin-top:6px}
.kpi .bar{position:absolute;left:0;bottom:0;height:4px;background:var(--grad)}
.kpi.accent .v{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.kpi.kpi-green{background:#e9f2e2;border-color:#bcd6aa}
.kpi.kpi-blue{background:#e3edfb;border-color:#b3cdf2}
.kpi.kpi-amber{background:#fdf3da;border-color:#eed398}
.kpi.kpi-red{background:#fbe5e1;border-color:#efb0a6}
.kpi.kpi-grey{background:#f1ece3;border-color:#dcd2c0}
.conf-strip2{position:relative;height:42px;margin-bottom:2px}
.conf-strip2 .conf-ms{top:10px;margin-left:-9px}
.conf-cap2{position:absolute;top:30px;font-size:9px;color:#6d28d9;font-weight:600;transform:translateX(-50%)}
.wk-head h3{font-family:var(--fh);font-size:1.02rem;margin-bottom:2px}
.wk-range{font-size:12px;color:var(--muted)}
.wk-num{font-size:12px;color:var(--brand);font-weight:600;margin-bottom:10px}

/* progress ring */
.ring{--p:0;width:96px;height:96px;border-radius:50%;background:conic-gradient(var(--brand) calc(var(--p)*1%),#efe6d6 0);display:grid;place-items:center}
.ring::after{content:attr(data-label);width:72px;height:72px;background:#fff;border-radius:50%;display:grid;place-items:center;font-family:var(--fh);font-weight:700;font-size:1.2rem}

/* ---------- Tables ---------- */
.tbl-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:auto}

/* ---------- Detailed Plan tree (collapsible Workstream → Stage → Task) ---------- */
.plan-scroll{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:auto;max-height:74vh}
.plan-tree{min-width:1300px}
/* Bulk edit / multi-select */
.p-sel{flex:none;margin-right:2px;cursor:pointer}
.bulk-bar{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#fff7ec;border:1px solid var(--line-2);border-radius:var(--radius);padding:8px 12px;margin-bottom:8px;box-shadow:var(--shadow-sm)}
.bulk-bar .fld{max-width:172px;height:30px;padding:3px 8px}
.bulk-count{color:var(--brand);font-size:13px;white-space:nowrap}
.bulk-sep{width:1px;align-self:stretch;background:var(--line-2)}
.chip-danger{border-color:#e7c3bd;color:var(--red)}
.chip-danger:hover{background:#fbe3e0;border-color:var(--red)}
.vl-pad{width:100%;pointer-events:none}   /* virtual-list spacers: hold off-screen height only */
.vl-pad-row td{padding:0;border:0}        /* <tr> spacer for virtualised tables */
.cap-vscroll{max-height:60vh;overflow:auto}   /* inner scroll container for virtualised heatmaps */
.plan-head,.p-row{display:grid;grid-template-columns:minmax(232px,2.2fr) 124px 124px 74px 78px 124px 104px 120px 120px 108px 92px;align-items:center}
.plan-head{position:sticky;top:0;z-index:2;background:#f8f3ea;font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:var(--muted);border-bottom:1px solid var(--line)}
.plan-head>div{padding:9px 10px}
.p-row{border-bottom:1px solid #f5efe5;font-size:13px}
.p-row>div{padding:6px 10px;min-width:0}
.p-ws{background:#f7ecdd;font-weight:700;border-bottom:1px solid #ecd9bf;box-shadow:inset 3px 0 0 var(--brand-2)}
.p-ss{background:#faf6ee;font-weight:600}
.p-task:hover{background:#fbf7ef}
.p-task.crit>.p-name{box-shadow:inset 3px 0 0 var(--red)}
.p-name{display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.p-ws>.p-name,.p-ss>.p-name{cursor:pointer;user-select:none}
.p-caret{display:inline-block;width:14px;color:var(--faint);font-size:11px;flex:none}
.p-chip{font-size:11px;padding:1px 8px;border-radius:999px;background:#f6e3cc;color:#9a4d0d;font-weight:600;flex:none}
.p-prog{display:flex;align-items:center;gap:7px}
.p-bar{flex:1;height:7px;min-width:46px;background:#efe6d6;border-radius:999px;overflow:hidden}
.p-bar>span{display:block;height:100%;background:var(--grad)}
.p-acts{display:flex;align-items:center;gap:5px}
.cell-input{width:100%;font-size:12.5px;padding:4px 6px;border:1px solid var(--line-2);border-radius:7px;background:#fff;color:var(--ink)}
.cell-input:focus{outline:none;border-color:var(--brand)}
table.grid{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}
table.grid th{position:sticky;top:0;background:#f8f3ea;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--line);z-index:2;cursor:pointer;user-select:none}
table.grid th:hover{color:var(--brand)}
table.grid td{padding:9px 12px;border-bottom:1px solid var(--line)}
table.grid tr:hover td{background:#fbf7ef}
table.grid tr.crit td:first-child{box-shadow:inset 3px 0 0 var(--red)}
table.grid tr.chk-hdr td{background:#f3ece0;font-weight:700;font-family:var(--fh);cursor:pointer;user-select:none}
table.grid tr.chk-hdr td:hover{background:#ece2d2}
.chk-caret{display:inline-block;width:14px;color:var(--faint)}
.cell-name{white-space:normal;min-width:240px;max-width:360px;font-weight:500}
.cell-desc{white-space:normal;min-width:260px;color:var(--muted);font-size:12px}
.editable{cursor:text;border-radius:6px}
.editable:hover{box-shadow:inset 0 0 0 1px var(--line-2)}
.row-actions{display:flex;gap:6px}
.icon-btn{border:1px solid var(--line);background:#fff;border-radius:7px;width:26px;height:26px;display:grid;place-items:center;font-size:13px;color:var(--muted)}
.icon-btn:hover{border-color:var(--brand);color:var(--brand)}

/* ---------- Pills / badges ---------- */
.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.st-notstarted{background:#f1ece3;color:#847761}
.st-inprogress{background:rgba(37,99,235,.1);color:var(--prog)}
.st-complete,.st-completed,.st-done{background:rgba(79,143,63,.14);color:var(--done)}
.st-late,.st-delayed,.st-overdue{background:rgba(224,146,31,.16);color:#9a5f08}
.st-blocked{background:rgba(207,60,46,.12);color:var(--block)}
.st-onhold{background:rgba(154,108,192,.14);color:var(--hold)}
.st-na,.st-notapplicable,.st-deferred{background:#ece5d8;color:#8a7d6a}
.st-planned{background:#f1ece3;color:#847761}
.st-released{background:rgba(79,143,63,.14);color:var(--done)}
.st-readyfortesting{background:rgba(224,146,31,.16);color:#9a5f08}
.st-readyfordeployment{background:rgba(154,108,192,.14);color:#7c4fa8}
.st-ontrack{background:rgba(79,143,63,.14);color:var(--done)}
.prio-high{background:#fdeae0;color:#c05621}
.prio-medium{background:#fdf3e0;color:#b07a1e}
.prio-low{background:#e8f0e3;color:#4f8f3f}
.prio-critical{background:#fde0dd;color:#cf3c2e}
.rag{display:inline-block;width:12px;height:12px;border-radius:50%}
.rag-green{background:var(--green)}.rag-amber{background:var(--amber)}.rag-red{background:var(--red)}.rag-grey{background:var(--grey)}
.tag{display:inline-block;padding:1px 8px;border-radius:6px;background:#f1ece1;color:#6c5f4c;font-size:11px;font-weight:500}
.tag-cp{background:rgba(207,60,46,.12);color:var(--block)}
.tag-gate{background:#f0e7f7;color:#7c4fa8}

/* progress mini-bar */
.pbar{height:7px;background:#efe6d6;border-radius:999px;overflow:hidden;min-width:60px}
.pbar>span{display:block;height:100%;background:var(--grad);border-radius:999px}

/* ---------- Toolbar (filters) ---------- */
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}
.toolbar select,.toolbar input{border:1px solid var(--line-2);border-radius:9px;padding:7px 10px;font-size:13px;background:#fff}
.chip{padding:5px 12px;border:1px solid var(--line-2);border-radius:999px;background:#fff;font-size:12.5px;color:var(--muted)}
.chip.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.spacer{flex:1}
.count-note{font-size:12px;color:var(--faint)}

/* ---------- Section headings ---------- */
.sec-head{display:flex;align-items:center;gap:10px;margin:6px 0 12px}
.sec-head h3{font-size:1.02rem;font-family:var(--fh)}
.sec-head .count-note{margin-left:auto}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px}

/* ---------- Gantt ---------- */
.gantt-controls{display:flex;align-items:center;gap:16px;margin-bottom:12px;flex-wrap:wrap}
.gantt-controls .slider{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.gantt-controls input[type=range]{width:180px}
.gantt{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:auto;max-height:70vh}
.gantt-inner{position:relative}
.g-head{position:sticky;top:0;z-index:5;background:#fff;border-bottom:1px solid var(--line)}
.g-row{display:flex;align-items:stretch;border-bottom:1px solid #f5efe5}
.g-row.ws{background:#f8f3ea;font-weight:600}
.g-label{position:sticky;left:0;z-index:4;background:inherit;min-width:260px;max-width:260px;padding:7px 12px;border-right:1px solid var(--line);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.g-row:not(.ws) .g-label{background:#fff}
.g-track{position:relative;flex:1}
.g-bar{position:absolute;top:6px;height:18px;border-radius:5px;background:var(--brand);opacity:.92;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
.g-bar .g-fill{position:absolute;left:0;top:0;bottom:0;background:rgba(255,255,255,.45);border-radius:5px 0 0 5px}
.g-bar.cp{background:var(--red)}
.g-bar.done{background:var(--done)}
.g-bar.prog{background:var(--prog)}
.g-bar.hold{background:var(--hold)}
.g-bar.na{background:#b9b0a2}
.g-bar.late{background:var(--late)}
.g-bar.block{background:var(--block)}
.g-bar.ns{background:#b3a48d}
.g-baseline{position:absolute;height:5px;bottom:2px;background:rgba(138,125,106,.55);border-radius:3px}
.g-deadline{position:absolute;top:1px;bottom:1px;width:2px;background:#dc2626;z-index:2}
.g-slipline{position:absolute;top:14px;height:0;border-top:2px dashed #dc2626;z-index:2}
.g-sliplbl{position:absolute;top:5px;font-size:9px;font-weight:700;color:#dc2626;white-space:nowrap;background:rgba(255,255,255,.75);padding:0 2px;border-radius:3px;z-index:3}
.g-sliplbl.ahead{color:#16a34a}
.g-deadline.ahead{background:#16a34a}
.g-slipline.ahead{border-top-color:#16a34a}
.g-milestone{position:absolute;top:8px;width:14px;height:14px;background:var(--red);transform:rotate(45deg);border:1px solid #fff}
.g-grid-line{position:absolute;top:0;bottom:0;width:1px;background:#f3ecdf}
.g-grid-line.month{background:#e6d9c4}
.g-weekend{position:absolute;top:0;bottom:0;background:#f8f3ea}
.g-monthend{position:absolute;top:0;bottom:0;background:rgba(245,158,11,.10)}
.g-today{position:absolute;top:0;bottom:0;width:2px;background:#ef4444;z-index:3}
.g-colhead{display:inline-block;text-align:center;font-size:10px;color:var(--muted);border-left:1px solid #f5efe5;padding:3px 0}
.g-monthhead{font-size:11px;font-weight:600;color:var(--ink);padding:4px 8px;border-left:1px solid var(--line)}

/* ---------- Kanban ---------- */
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);gap:12px;overflow-x:auto;padding-bottom:8px}
.kan-col{background:#f8f3ea;border:1px solid var(--line);border-radius:12px;padding:10px;min-height:120px}
.kan-col h4{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:10px;display:flex;justify-content:space-between}
.kan-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:8px;box-shadow:0 1px 2px rgba(90,58,18,.06);cursor:pointer}
.kan-card:hover{border-color:var(--brand)}
.kan-card .t{font-weight:600;font-size:13px}
.kan-card .m{font-size:11px;color:var(--muted);margin-top:4px}

/* ---------- Calendar ---------- */
.cal-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius)}
table.cal{border-collapse:collapse;font-size:11px}
table.cal th,table.cal td{border:1px solid var(--line);padding:0;text-align:center;min-width:26px;height:30px}
table.cal th.res,table.cal td.res{position:sticky;left:0;background:#f8f3ea;text-align:left;padding:5px 10px;min-width:150px;white-space:nowrap;z-index:2;font-weight:600}
table.cal td.role{position:sticky;left:150px;background:#f8f3ea;min-width:120px;text-align:left;padding:5px 8px;color:var(--muted);z-index:2}
table.cal th.day.we,table.cal td.we{background:#f3ede1}
table.cal td.hol{background:#fdf3d4}
table.cal td.abs{font-weight:700;color:#9a5f08;cursor:pointer}
table.cal td.av{cursor:pointer}
table.cal td.cal-banner{position:sticky;left:0;background:#f7ecdd;color:#9a4d0d;font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:11px;text-align:left;padding:7px 10px;z-index:3}

/* ---------- Charts / analytics ---------- */
.chart{width:100%;height:auto;display:block;overflow:visible}
.chart-legend{display:flex;flex-wrap:wrap;gap:16px;font-size:12px;color:var(--muted);margin-top:8px}
.chart-legend i{display:inline-block;width:16px;height:3px;border-radius:2px;margin-right:5px;vertical-align:middle}
.var-row{display:flex;align-items:center;gap:12px;padding:5px 0}
.var-label{width:210px;flex:none;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.var-bar{flex:1;height:11px;background:#efe6d6;border-radius:999px;overflow:hidden}
.var-bar>span{display:block;height:100%;border-radius:999px}

/* ---------- Board pack ---------- */
.board-page{max-width:1000px;margin:0 auto}
.board-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}
.board-title{font-family:var(--fh);font-size:1.35rem;font-weight:700}
.board-rag{display:flex;align-items:center;gap:8px;font-family:var(--fh);font-weight:700}
.board-print{margin-bottom:12px}
/* Overview board-pack header */
.ov-head{align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px;margin-bottom:0}
.ov-head .board-print{margin-bottom:0}
.ov-head .board-rag{font-size:13px}

/* Export dropdown (PDF print / PowerPoint .pptx) */
.bp-export{position:relative;display:inline-block;margin-bottom:12px}
.ov-head .bp-export,.board-head .bp-export{margin-bottom:0}
.bp-export-btn{display:inline-flex;align-items:center;gap:6px}
.bp-caret{font-size:10px;opacity:.85}
.bp-export-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:60;min-width:244px;background:#fff;border:1px solid var(--line-2);border-radius:12px;box-shadow:0 14px 36px rgba(43,38,32,.18);padding:6px;display:flex;flex-direction:column;gap:2px}
.bp-export-menu[hidden]{display:none}
.bp-export-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:none;border:0;border-radius:9px;padding:8px 10px;cursor:pointer;font:inherit;color:var(--ink)}
.bp-export-item:hover{background:var(--bg)}
.bp-export-item:disabled{opacity:.6;cursor:default;background:none}
.bp-ico{font-size:18px;width:22px;text-align:center;flex:none}
.bp-item-t{font-weight:600;font-size:13px;line-height:1.2}
.bp-item-s{font-size:11px;color:var(--muted)}

/* Trends dashboard grid */
.trend-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.trend-card{padding:16px 18px}
.trend-card h3{margin-bottom:4px}
.trend-card .chart{margin-top:6px}
.trend-card .sec-head{margin:0 0 4px}
.demo-tag{margin-left:auto;font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--muted);background:var(--bg);border:1px solid var(--line-2);border-radius:999px;padding:1px 8px;cursor:help}
@media(max-width:1100px){.trend-grid{grid-template-columns:1fr}}

/* drag-to-reschedule + kanban drag-and-drop */
.g-bar{cursor:grab}
.kan-card{cursor:grab}
.kan-card.dragging{opacity:.45}
.kan-col.drop-over{outline:2px dashed var(--brand);outline-offset:-3px;background:#fbeede}
.kan-st{width:100%;margin-top:8px;font-size:11px;padding:3px 5px;border:1px solid var(--line-2);border-radius:6px;background:#fff;color:var(--ink);cursor:pointer}
.kan-card.kst-done{background:#e8f0e3;border-color:#b7d3a8}
.kan-card.kst-in-progress{background:#e3edfb;border-color:#b3cdf2}
.kan-card.kst-pending{background:#fdf3d4;border-color:#ecd089}
.kan-card.kst-at-risk{background:#ffedd5;border-color:#fdba74}
.kan-card.kst-blocked{background:#fbe3e0;border-color:#eba9a1}
.kan-card.kst-not-applicable{background:#f1ece3;border-color:#e3d9c8;opacity:.65}

/* Build & Release cards (pipeline) */
.build-card{padding:16px 18px}
.build-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px;flex-wrap:wrap}
.build-ver{display:flex;align-items:baseline;gap:8px}
.build-ver .muted{font-size:11px;letter-spacing:.1em}
.build-num{font-family:var(--fh);font-weight:700;font-size:1.6rem;line-height:1}
.build-gl{background:var(--grad);color:#fff;font-weight:700;font-size:12px;padding:4px 12px;border-radius:999px}
.build-pipe{display:flex;overflow-x:auto;padding:4px 0 2px}
.build-step{flex:1 1 0;min-width:94px;text-align:center;position:relative;padding-top:6px}
.build-line{position:absolute;top:11px;left:-50%;width:100%;height:2px;background:var(--line-2)}
.build-step:first-child .build-line{display:none}
.build-step.done .build-line{background:var(--green)}
.build-dot{width:11px;height:11px;border-radius:50%;background:#d6c9b4;margin:0 auto;position:relative;z-index:1;box-shadow:0 0 0 2px #fff,0 0 0 3px var(--line-2)}
.build-step.done .build-dot{background:var(--green);box-shadow:0 0 0 2px #fff,0 0 0 3px var(--green)}
.build-step.gl .build-dot{width:14px;height:14px;background:var(--brand);box-shadow:0 0 0 2px #fff,0 0 0 3px var(--brand)}
.build-step.gl.done .build-dot{background:var(--green);box-shadow:0 0 0 2px #fff,0 0 0 3px var(--green)}
.build-step-lbl{font-size:9.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin-top:8px;font-weight:600}
.build-step.gl .build-step-lbl{color:var(--brand)}
.build-step-date{font-size:11px;color:var(--ink);margin-top:2px;font-variant-numeric:tabular-nums}
.build-step.empty .build-step-date{color:var(--faint)}
.build-foot{display:flex;gap:20px;flex-wrap:wrap;margin-top:14px;padding-top:11px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
/* ---------- Build & Release: enterprise release cards ---------- */
.rel-card{padding:18px 20px}
.rel-card.rel-collapsed{padding-top:12px;padding-bottom:12px}
.rel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}
/* header as expand/collapse toggle */
.rel-head-toggle{cursor:pointer;border-radius:10px;margin:-6px -8px 8px;padding:6px 8px;transition:background .12s}
.rel-head-toggle:hover{background:#f8f2e8}
.rel-head-toggle:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.rel-collapsed .rel-head-toggle{margin-bottom:-6px}
.rel-caret{font-size:13px;color:var(--muted);align-self:center;line-height:1}
.rel-head-toggle:hover .rel-caret{color:var(--brand)}
.rel-sum{font-size:12px;align-self:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46ch}
.rel-title-wrap{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.rel-kicker{font-size:11px;letter-spacing:.12em;color:var(--muted);font-weight:600}
.rel-title{font-family:var(--fh);font-weight:700;font-size:1.5rem;line-height:1}
.rel-plan{font-size:12px;color:var(--ink);background:#f3eee5;border:1px solid var(--line);padding:2px 10px;border-radius:999px}
.rel-head-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rel-steps{display:flex;margin:4px 0 16px;overflow-x:auto}
.rel-step{flex:1 1 0;min-width:88px;text-align:center;position:relative;padding-top:20px}
.rel-step::before{content:"";position:absolute;top:6px;left:50%;width:100%;height:2px;background:var(--line-2)}
.rel-step:last-child::before{display:none}
.rel-step.done::before{background:var(--green)}
.rel-step-dot{position:absolute;top:1px;left:50%;transform:translateX(-50%);width:12px;height:12px;border-radius:50%;background:#d6c9b4;box-shadow:0 0 0 2px #fff,0 0 0 3px var(--line-2);z-index:1}
.rel-step.done .rel-step-dot{background:var(--green);box-shadow:0 0 0 2px #fff,0 0 0 3px var(--green)}
.rel-step.cur .rel-step-dot{background:var(--brand);box-shadow:0 0 0 2px #fff,0 0 0 3px var(--brand)}
.rel-step-lbl{font-size:9.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-weight:600;display:block;padding:0 4px}
.rel-step.cur .rel-step-lbl{color:var(--brand)}
.rel-content{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.rel-col{background:#fbfaf7;border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:0}
.rel-col-head{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:700;color:var(--ink);margin-bottom:8px}
.rel-count{background:var(--brand);color:#fff;border-radius:999px;font-size:11px;padding:1px 8px;font-weight:700}
.rel-count.is-zero{background:#ece5d8;color:#847761}
.rel-chips{display:flex;flex-direction:column;gap:5px;max-height:220px;overflow-y:auto}
.rel-chip{display:flex;align-items:center;gap:7px;font-size:12px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:4px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rel-chip:hover{background:#fdf6ee}
.rel-chip-dot{flex:none;width:8px;height:8px;border-radius:50%}
.rel-empty{font-size:12px;color:var(--faint);font-style:italic}
.rel-sched{margin-top:14px;border-top:1px solid var(--line);padding-top:8px}
.rel-sched summary{cursor:pointer;font-size:12px;color:var(--muted);font-weight:600}
.rel-sched .rel-pipe{margin-top:12px}
@media (max-width:820px){.rel-content{grid-template-columns:1fr}}

/* Go / No-Go verdict */
.gng-verdict{display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;padding:22px}
.gng-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.gng-value{font-family:var(--fh);font-weight:700;font-size:2.6rem;line-height:1}
.gng-sub{font-size:12px;color:var(--muted)}
.gng-go .gng-value{color:#16a34a}.gng-cond .gng-value{color:#b8690a}.gng-nogo .gng-value{color:#dc2626}
.gng-go{box-shadow:inset 0 0 0 2px #bbf7d0}.gng-cond{box-shadow:inset 0 0 0 2px #fde68a}.gng-nogo{box-shadow:inset 0 0 0 2px #fecaca}

/* Executive highlights */
.hl-row{display:flex;gap:8px;align-items:center;margin-top:7px}
.hl-row .rag{flex:none}

/* Milestone / stage-gate confidence strip */
.conf-scroll{overflow-x:auto;padding-bottom:4px}
.conf-strip{position:relative;height:70px;min-width:100%}
.conf-grid{position:absolute;top:0;bottom:18px;width:1px;background:#f0e8da}
.conf-week{position:absolute;bottom:0;font-size:9px;color:var(--faint)}
.conf-ms{position:absolute;top:12px;width:18px;height:18px;transform:rotate(45deg);background:#fff;border:2px solid #d6c9b4;display:grid;place-items:center}
.conf-ms .rag{width:8px;height:8px;transform:rotate(-45deg)}
.conf-ms.rag-bd-green{border-color:#16a34a}.conf-ms.rag-bd-amber{border-color:#f59e0b}.conf-ms.rag-bd-red{border-color:#dc2626}.conf-ms.rag-bd-grey{border-color:#d6c9b4}
.conf-cap{position:absolute;top:36px;font-size:9px;color:#6d28d9;font-weight:600;transform:translateX(-50%)}

/* Gantt day-by-day header (calendar style) */
.g-dayhead{text-align:center;border-left:1px solid #f5efe5;line-height:1.05;padding-top:3px;overflow:hidden}
.g-dayhead.we{background:#f3ede1}
.g-dnum{font-weight:600;color:var(--ink);font-size:10px}
.g-ddow{font-size:8px;color:var(--faint)}

/* Absence picker popover + set-absence form */
.abs-pop{position:fixed;z-index:90;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:5px;min-width:185px;max-height:min(70vh,440px);overflow:auto}
.abs-opt{display:block;width:100%;text-align:left;border:0;background:none;padding:7px 10px;border-radius:7px;font-size:12.5px;cursor:pointer}
.abs-opt:hover{background:var(--bg)}
.abs-opt.sel{background:#fbeede;color:var(--brand);font-weight:600}
.abs-form select,.abs-form input{border:1px solid var(--line-2);border-radius:8px;padding:6px 9px;font-size:13px}
@media print{
  .gate,.sidebar,.topbar,.board-print,.bp-export,#export-menu,#modal,.gate-modal,.hamburger,#vne-toasts{display:none!important}
  .app{display:block!important;height:auto!important}
  .main{overflow:visible!important}
  .view{overflow:visible!important;height:auto!important;padding:0!important}
  body,.app,.main,.view{background:#fff!important}
  body{-webkit-print-color-adjust:exact;print-color-adjust:exact}   /* keep RAG dots, bars & chips in colour */
  .card{break-inside:avoid;box-shadow:none}
  .board-page{max-width:none}
  /* charts live in a horizontal-scroll wrapper on screen — let them lay flat & fit the page when printed */
  .chart-scroll{overflow:visible!important}
  .chart-scroll .delivery-inner,.chart-scroll svg{min-width:0!important;max-width:100%!important}
  /* repeat table headers across printed pages and avoid splitting rows */
  thead{display:table-header-group}
  tr,.two-col{break-inside:avoid}
  @page{margin:14mm}
}
.cal-legend{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0;font-size:12px;color:var(--muted)}
.cal-legend span b{display:inline-block;min-width:18px;padding:0 4px;box-sizing:border-box;text-align:center;background:#fdf3d4;border-radius:4px;color:#9a5f08;margin-right:4px}

/* ---------- Capacity ---------- */
.cap-bar{height:20px;border-radius:5px;background:#efe6d6;position:relative;overflow:hidden;min-width:120px}
.cap-bar>span{display:block;height:100%}
.cap-ok>span{background:var(--green)}.cap-warn>span{background:var(--amber)}.cap-over>span{background:var(--red)}

/* ---------- Modal ---------- */
.modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center}
.modal-backdrop{position:absolute;inset:0;background:rgba(46,36,22,.5)}
.modal-card{position:relative;background:#fff;border-radius:16px;width:min(94vw,720px);max-height:90vh;overflow:auto;box-shadow:0 40px 90px -30px #000;padding:26px}
.modal-x{position:absolute;top:14px;right:16px;border:0;background:none;font-size:24px;color:var(--muted)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:8px}
.dep-info{margin:8px 2px 4px;font-size:13px;color:var(--ink)}
.dep-info a{color:var(--brand);text-decoration:none;font-weight:600}
.dep-info a:hover{text-decoration:underline}
.form-grid .full{grid-column:1/-1}
.field label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:5px}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line-2);border-radius:9px;padding:9px 11px;font:inherit;font-size:13px}
.field textarea{min-height:70px;resize:vertical}
/* Grouped record editor (Task editor): soft, labelled sections */
.editor-groups{display:flex;flex-direction:column;gap:14px;margin-top:10px}
.editor-group{border:1px solid var(--grp-line,#efe6d8);background:var(--grp-bg,#fbf7f1);border-radius:13px;padding:13px 15px 15px}
.editor-group .form-grid{margin-top:0}
.editor-group.grp-sched{--grp-bg:#f4f6f9;--grp-line:#e3e9f0;--grp-accent:#5b7aa8}
.editor-group.grp-own{--grp-bg:#f7f5fb;--grp-line:#e8e2f1;--grp-accent:#7c4fa8}
.editor-group.grp-detail{--grp-bg:#f6f8f4;--grp-line:#e3ebde;--grp-accent:#5c8a3a}
.editor-group.grp-effort{--grp-bg:#fbf6ee;--grp-line:#efe4d3;--grp-accent:#bf550f}
.eg-head{display:flex;align-items:center;gap:8px;margin-bottom:11px}
.eg-bar{width:3px;height:15px;border-radius:2px;background:var(--grp-accent,var(--brand-2))}
.eg-ico{font-size:13px}
.eg-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
/* Schedule matrix — Planned / Actual / Baseline × Start / Finish */
.sched-matrix{width:100%;border-collapse:separate;border-spacing:0}
.sched-matrix th{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;text-align:left;padding:0 8px 6px}
.sched-matrix td{padding:0 8px 8px;vertical-align:middle}
.sched-matrix .rl{font-size:12.5px;font-weight:600;color:#46546b;white-space:nowrap;width:84px;padding-right:6px}
.sched-matrix input{width:100%;border:1px solid var(--line-2);border-radius:9px;padding:8px 10px;font:inherit;font-size:13px;background:#fff}
.sched-foot{display:flex;align-items:center;gap:12px;margin-top:2px;padding-top:11px;border-top:1px dashed var(--grp-line,#e3e9f0)}
.sched-foot .field{margin:0;display:flex;align-items:center;gap:8px}
.sched-foot .field label{margin:0;white-space:nowrap}
.sched-foot .field input{width:90px}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}

/* ---------- Misc ---------- */
.empty{padding:40px;text-align:center;color:var(--faint)}
.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted);margin-top:10px}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.muted{color:var(--muted)}
.right{text-align:right}.center{text-align:center}
.scroll-x{overflow-x:auto}

/* ---------- Entity Management (settings) ---------- */
.ent-create{display:flex;gap:8px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.ent-create .cell-input{padding:8px 10px}
.ent-list{display:grid;gap:8px}
.ent-row{display:flex;gap:8px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:11px;background:#fff}
.ent-row.active{border-color:var(--brand-2);background:linear-gradient(120deg,#fff,#fdf4ea)}
.ent-row .tag{flex:none}
.ent-row .btn{flex:none}
.ent-row .btn-soft{margin-left:auto}

/* ---------- PMO: entity health cards ---------- */
.ent-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.ent-card{background:#fff;border:1px solid var(--line);border-left:4px solid var(--grey);border-radius:var(--radius);padding:15px 16px;cursor:pointer;transition:.15s;display:flex;flex-direction:column;gap:9px}
.ent-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--line-2)}
.ent-card.rag-edge-green{border-left-color:var(--green)}
.ent-card.rag-edge-amber{border-left-color:var(--amber)}
.ent-card.rag-edge-red{border-left-color:var(--red)}
.ent-card.rag-edge-grey{border-left-color:var(--grey)}
.ent-card-head{display:flex;align-items:center;gap:10px}
.ent-card-flag{font-size:24px;line-height:1}
.ent-card-name{font-family:var(--fh);font-weight:600;font-size:1.02rem;color:var(--ink)}
.ent-card-sub{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.ent-card-head .rag{margin-left:auto}
.ent-card-pct{font-family:var(--fh);font-size:1.9rem;font-weight:700;line-height:1;color:var(--copper)}
.ent-card-stats{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.ent-card-stats .bad{color:var(--red)}
.ent-card-stats b{color:var(--ink)}
.ent-card-ms{font-size:11.5px;border-top:1px solid var(--line);padding-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* entity chip (in tables) */
.ent-chip{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:12.5px;white-space:nowrap}

/* progress-by-entity bar with planned tick */
.var-bar.tall{height:16px}
.var-plan-tick{position:absolute;top:-3px;bottom:-3px;width:3px;background:var(--ink);border-radius:2px;opacity:.65}
.var-bar{position:relative}

/* ---------- PMO: matrix & heatmap ---------- */
table.matrix th,table.heatmap th{white-space:nowrap}
.matrix-cell{font-weight:600;min-width:62px}
.heat-cell{min-width:34px;font-size:11px;padding:6px 4px}
.rag-bg-green{background:#dcfce7}
.rag-bg-amber{background:#fef3c7}
.rag-bg-red{background:#fee2e2}
.rag-bg-grey{background:#f1ece3;color:var(--muted)}
table.matrix td.cell-name,table.heatmap td.cell-name{position:sticky;left:0;background:#fff;z-index:1;font-weight:600}
table.matrix tr:hover td.cell-name,table.heatmap tr:hover td.cell-name{background:#fdf6ee}

/* ---------- Capacity: drill-down + sparkline ---------- */
.cap-owner-link{cursor:pointer;color:var(--brand);font-weight:600;border-bottom:1px dashed transparent}
.cap-owner-link:hover{border-bottom-color:var(--brand)}
td.cap-cell{cursor:pointer}
td.cap-cell:hover{outline:2px solid #b3a48d;outline-offset:-2px}
td.cap-cell-sel{outline:2px solid #0f172a;outline-offset:-2px}
tr.cap-row-open td.cell-name{background:#fdf6ee}
.cap-drill-stats{margin:4px 0 14px}
.cap-spark-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin-bottom:10px}
tr.cap-task-active td{background:#fff7ed}
tr.cap-task-active td:first-child{box-shadow:inset 3px 0 0 var(--brand)}
/* resource summary cards */
.cap-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(264px,1fr));gap:14px}
.cap-rcard{padding:14px 16px;border-left:4px solid var(--line-2);transition:box-shadow .12s}
.cap-rcard:hover{box-shadow:0 4px 14px rgba(0,0,0,.08)}
.cap-rcard.sel{box-shadow:0 0 0 2px var(--brand)}
.cap-rcard.rag-edge-green{border-left-color:var(--green)}
.cap-rcard.rag-edge-amber{border-left-color:var(--amber)}
.cap-rcard.rag-edge-red{border-left-color:var(--red)}
.cap-rcard-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.cap-rname{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cap-util{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.cap-util-bar{flex:1;height:8px;background:#efe6d6;border-radius:999px;overflow:hidden}
.cap-util-fill{height:100%;border-radius:999px;min-width:2px}
.cap-util-fill.bg-green{background:var(--green)}
.cap-util-fill.bg-amber{background:var(--amber)}
.cap-util-fill.bg-red{background:var(--red)}
.cap-util-val{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;min-width:42px;text-align:right}
.cap-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(56px,1fr));gap:6px;margin-bottom:10px}
.cap-metric{text-align:center;background:#fbfaf7;border:1px solid var(--line);border-radius:8px;padding:6px 2px}
.cap-metric-v{font-weight:700;font-size:13.5px;font-variant-numeric:tabular-nums}
.cap-metric-v.neg{color:var(--red)}
.cap-metric-l{font-size:9px;text-transform:uppercase;letter-spacing:.02em;color:var(--muted);margin-top:2px}
.cap-crit{display:flex;flex-wrap:wrap;gap:10px;font-size:11.5px;border-top:1px solid var(--line);padding-top:9px}
.cap-crit .bad{color:var(--red);font-weight:600}
.cap-heat{margin-top:18px;border-top:1px solid var(--line);padding-top:10px}
.cap-heat summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--muted)}
/* ---------- Defect / Action: priority legend, detail popup ---------- */
.prio-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin:0 2px 14px;font-size:12px}
.prio-legend-item{display:flex;align-items:center;gap:6px;color:var(--muted)}
.prio-chip{display:inline-block;min-width:26px;text-align:center;font-weight:700;font-size:11px;padding:1px 7px;border-radius:6px;border:1px solid rgba(0,0,0,.07);color:#1f2937}
.hist-box{display:flex;flex-direction:column;gap:6px;background:#fbfaf7;border:1px solid var(--line);border-radius:8px;padding:10px 12px;max-height:170px;overflow:auto}
.hist-row{font-size:12px;display:flex;align-items:center;gap:4px}
.modal-sub{margin:16px 0 8px;font-size:13px;font-weight:700}
/* ---------- Collaboration: comments + attachments ---------- */
.collab-thread{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow:auto;margin-bottom:10px}
.collab-c{background:#fbfaf7;border:1px solid var(--line);border-radius:8px;padding:8px 11px}
.collab-c-head{display:flex;align-items:baseline;gap:8px;margin-bottom:3px}
.collab-c-by{font-weight:700;font-size:12px}
.collab-c-role{font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:#f1ece1;border-radius:4px;padding:0 5px}
.collab-c-at{font-size:11px;margin-left:auto}
.collab-c-text{font-size:13px;word-wrap:break-word}
.mention{color:var(--brand);font-weight:600}
.collab-compose{display:flex;flex-direction:column;gap:6px}
.collab-compose textarea{min-height:54px}
.collab-compose-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end}
.collab-file{cursor:pointer}
.collab-file input[type=file]{display:none}
.collab-sub{margin:14px 0 6px;font-size:12px;font-weight:700;color:var(--muted)}
.collab-atts{display:flex;flex-direction:column;gap:5px}
.collab-att-row{display:flex;align-items:center;gap:6px}
.collab-att{font-size:12px;color:var(--brand);text-decoration:none;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.collab-att:hover{text-decoration:underline}
.avatar{flex:none;width:26px;height:26px;border-radius:50%;color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.collab-c-head{display:flex;align-items:center;gap:8px}
.collab-reply{margin:8px 0 0 30px;border-left:2px solid var(--line-2)}
.collab-reply-btn{margin-top:6px;background:none;border:0;color:var(--brand);font-size:11.5px;font-weight:600;cursor:pointer;padding:0}
.collab-reply-btn:hover{text-decoration:underline}
.collab-reply-compose{display:flex;gap:6px;align-items:flex-start;margin:8px 0 0 30px}
.collab-reply-box{flex:1;min-height:38px}
.collab-att-thumb{width:40px;height:40px;object-fit:cover;border-radius:6px;border:1px solid var(--line);cursor:pointer;flex:none}
.collab-att-ico{font-size:22px;flex:none;width:40px;text-align:center}
.collab-att-meta{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.collab-att-meta .collab-att{font-weight:600}
.task-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}
.task-head h2{margin:0}
.audit-box{max-height:220px}
.audit-box .hist-row{display:block;font-size:12px;padding:2px 0;line-height:1.5}
/* ---------- My View ---------- */
.nav-count.badge-alert{background:var(--red);color:#fff}
.mv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
.mv-list{display:flex;flex-direction:column;gap:6px;max-height:380px;overflow-y:auto;padding-right:2px}
.mv-item{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:#fff;cursor:pointer}
.mv-item:hover{background:#fdf6ee}
.mv-item .mv-id{font-size:10px;color:var(--muted);font-family:var(--fm,monospace)}
.mv-item .mv-ent{font-size:10px;color:var(--muted);margin-left:auto}
.mv-week{background:#fbfaf7;border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.mv-week h4{font-size:12px;margin-bottom:8px}
.mv-empty{color:var(--faint);font-style:italic;font-size:12px;padding:6px}
.mv-unread{box-shadow:inset 3px 0 0 var(--red)}
.mv-disc .mv-disc-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mv-item.mv-mention{background:rgba(226,125,36,.07);border-color:var(--brand-2)}
.mv-mention-tag{font-size:8.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--brand);border-radius:999px;padding:1px 6px;flex:none}

/* ---------- Administration: users & people directory ---------- */
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.card-head h3{margin:0}
.filter-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.filter-search{flex:1;min-width:180px;padding:8px 11px;border:1px solid var(--line);border-radius:9px;font:inherit;background:#fff}
.filter-search:focus,.filter-sel:focus{outline:none;border-color:var(--brand)}
.filter-sel{padding:8px 11px;border:1px solid var(--line);border-radius:9px;font:inherit;background:#fff;cursor:pointer}
table.admin-grid td{vertical-align:middle}
.u-name{display:flex;align-items:center;gap:8px;font-weight:600;font-size:12.5px}
.status-badge{display:inline-block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 9px;border-radius:999px;white-space:nowrap}
.status-badge.st-active{background:rgba(79,143,63,.14);color:var(--green)}
.status-badge.st-disabled{background:rgba(168,156,139,.2);color:var(--muted)}
.proj-chips{display:flex;flex-wrap:wrap;gap:4px}
.proj-chip{font-size:10.5px;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 7px;color:var(--ink)}
.row-actions{display:flex;gap:4px;align-items:center}
.icon-btn-spacer{display:inline-block;width:26px}
.chk-row{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}
.chk-row input{width:auto;margin:0}
/* A checkbox row sits inside a .field wrapper; stop the generic ".field label" (block,
   uppercase) and ".field input" (full-width) rules from breaking the inline layout. */
.field>label:empty{display:none;margin:0}
.field label.chk-row{display:flex;align-items:center;gap:8px;margin-bottom:0;text-transform:none;letter-spacing:normal;font-size:13px;color:var(--ink)}
.field .chk-row input{width:16px;height:16px;margin:0;flex:none}
/* Project (entity) access picker — clean card rows */
.ws-access .ws-intro{margin:0 0 10px;font-size:12.5px;line-height:1.5}
.ws-all{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line-2);border-radius:10px;background:var(--bg);cursor:pointer;font-size:13px;margin-bottom:10px}
.ws-all .ws-all-name{font-weight:700;color:var(--ink)}
.ws-all small{color:var(--muted);font-size:11.5px}
.ws-all input,.ws-opt input{width:16px;height:16px;margin:0;flex:none;accent-color:var(--copper);cursor:pointer}
.ws-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.ws-opt{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer;transition:border-color .12s,background .12s}
.ws-opt:hover{border-color:var(--line-2)}
.ws-opt.sel{border-color:var(--copper);background:#fbf3ea}
.ws-opt .ws-opt-name{display:flex;flex-direction:column;line-height:1.25}
.ws-opt .ws-opt-name b{font-size:13px;font-weight:600;color:var(--ink)}
.ws-opt .ws-opt-name small{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.ws-opt.disabled{opacity:.45;cursor:not-allowed;background:var(--bg)}
.people-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.people-dir{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.person-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff;display:flex;flex-direction:column;gap:8px}
.person-card .pc-head{display:flex;align-items:center;gap:10px}
.person-card .pc-name{font-weight:600;font-size:14px;line-height:1.2}
.person-card .pc-role{font-size:11.5px;color:var(--muted)}
.person-card .pc-chips{display:flex;flex-wrap:wrap;gap:5px}
.person-card .pc-chip{font-size:10.5px;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 7px;color:var(--muted)}
.person-card .pc-actions{display:flex;gap:6px;margin-top:auto;padding-top:6px;flex-wrap:wrap}
.kind-badge{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:999px;margin-left:auto}
.kind-badge.k-team{background:rgba(79,143,63,.14);color:var(--green)}
.kind-badge.k-stake{background:rgba(226,125,36,.16);color:var(--brand)}
.pc-login{font-size:10.5px;font-weight:600;color:var(--green)}
.pc-nologin{font-size:10.5px;color:var(--faint)}

/* ---------- RAID register ---------- */
.help-i{color:var(--muted);cursor:help;font-size:11px}
a.raid-title{color:var(--ink);font-weight:600;text-decoration:none}
a.raid-title:hover{color:var(--brand);text-decoration:underline}
.cat-badge{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;border-radius:6px}
.cat-badge.cat-risk{background:rgba(207,60,46,.13);color:var(--red)}
.cat-badge.cat-assumption{background:rgba(79,143,63,.14);color:var(--green)}
.cat-badge.cat-issue{background:rgba(224,146,31,.16);color:#9a5f08}
.cat-badge.cat-dependency{background:rgba(91,124,179,.16);color:#3f5e93}
.cat-badge.cat-action{background:rgba(37,99,235,.13);color:#2563eb}
.cat-badge.cat-decision{background:rgba(154,108,192,.16);color:#7c52a8}
.sev-badge{display:inline-block;font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap}
.sev-badge.sev-low{background:rgba(79,143,63,.16);color:var(--green)}
.sev-badge.sev-med{background:rgba(224,146,31,.16);color:#9a5f08}
.sev-badge.sev-high{background:rgba(226,125,36,.2);color:var(--brand)}
.sev-badge.sev-crit{background:rgba(207,60,46,.15);color:var(--red)}
/* Risk Matrix (probability × impact heatmap) */
.rm-host{margin-top:4px}
.rm-tbl-wrap{overflow:auto}
.risk-matrix{border-collapse:collapse;margin:6px 0 8px}
.risk-matrix th,.risk-matrix td{border:1px solid var(--line)}
.risk-matrix .rm-corner{padding:6px 8px;font-size:10.5px;text-align:center;background:var(--card-2,#faf7f1);color:#6b6354;white-space:nowrap}
.risk-matrix .rm-axis{text-align:center;font-weight:700;font-size:12px;padding:5px;background:var(--card-2,#faf7f1)}
.risk-matrix .rm-axis-y{width:30px}
.rm-cell{width:112px;height:64px;vertical-align:top;padding:4px 5px;position:relative}
.rm-cell.rm-low{background:rgba(79,143,63,.16)}
.rm-cell.rm-med{background:rgba(224,146,31,.2)}
.rm-cell.rm-high{background:rgba(226,125,36,.26)}
.rm-cell.rm-crit{background:rgba(207,60,46,.26)}
.rm-count{position:absolute;top:3px;right:6px;font-size:10px;font-weight:700;color:#5b5347}
.rm-chips{display:flex;flex-wrap:wrap;gap:3px;margin-top:15px}
.rm-chip{font-size:10px;font-family:var(--mono,ui-monospace,monospace);background:#fff;border:1px solid var(--line);border-radius:5px;padding:1px 5px;cursor:pointer;color:#333;line-height:1.5}
.rm-chip:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.rm-more{font-size:10px;color:#5b5347;align-self:center}
.rm-legend{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.seg-toggle{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg-btn{border:none;background:#fff;padding:5px 13px;font-size:12px;cursor:pointer;color:#444}
.seg-btn.active{background:var(--brand);color:#fff}
/* @mention autocomplete dropdown */
.mention-menu{position:fixed;z-index:9999;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:0 8px 24px rgba(0,0,0,.16);padding:4px;max-height:210px;overflow:auto}
.mention-item{padding:5px 10px;font-size:13px;border-radius:6px;cursor:pointer;white-space:nowrap}
.mention-item.active,.mention-item:hover{background:var(--brand);color:#fff}
/* Automation rules */
.auto-card{border:1px solid var(--line);border-radius:11px;background:#fff;margin:8px 0;padding:10px 12px}
.auto-card.off{opacity:.62}
.auto-card-head{display:flex;align-items:center;gap:10px}
.auto-card-main{flex:1;min-width:0}
.auto-card-name{font-weight:700;font-size:14px}
.auto-card-sum{font-size:12px;margin-top:1px}
.auto-runs{font-size:11px;font-variant-numeric:tabular-nums}
.auto-en{display:inline-flex;align-items:center;gap:5px;font-size:12px}
.auto-editor{border-top:1px dashed var(--line);margin-top:10px;padding-top:10px}
.auto-h{margin:10px 0 5px;font-size:11px;letter-spacing:.05em;color:#8a8172;text-transform:uppercase}
.auto-grid{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.auto-rows{display:flex;flex-direction:column;gap:6px}
.auto-row{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;background:var(--card-2,#faf7f1);border-radius:8px;padding:7px 9px}
.auto-row.trig{background:rgba(226,125,36,.08)}
.auto-when{font-size:11px;color:#8a8172;align-self:center;min-width:30px}
.auto-inline{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.auto-f{display:flex;flex-direction:column;gap:2px}
.auto-l{font-size:10.5px;color:#8a8172}
.auto-row .fld,.auto-grid .fld{min-width:120px}
.auto-row textarea.fld{min-width:240px}
.empty-card{border:1px dashed var(--line);border-radius:11px;background:#fff;padding:18px;text-align:center}
/* Goals / OKRs */
/* Change requests */
.cr-approvals{font-size:11px;font-variant-numeric:tabular-nums;font-weight:700;color:#6b6354}
.cr-approvals.ok{color:var(--done,#4f8f3f)}
.cr-approvals.rej{color:var(--red,#cf3c2e)}
.cr-approvers{display:flex;flex-direction:column;gap:6px}
.cr-ap-row{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;background:var(--card-2,#faf7f1);border-radius:8px;padding:7px 9px}
.cr-ap-actions{display:flex;gap:8px;align-items:center;margin-top:8px}
.cr-rollup{font-size:12px;margin:2px 0 8px}
/* Custom dashboard */
.dash-palette{display:flex;flex-wrap:wrap;gap:6px;padding:10px;border:1px dashed var(--line);border-radius:11px;background:#fff}
.dash-widget .sec-head{display:flex;align-items:center}
.dash-ctrls{display:inline-flex;gap:4px;margin-left:6px}
/* KPI builder */
.kpi-card-val{min-width:62px;text-align:center;font-family:var(--fh,inherit);font-weight:700;font-size:1.25rem;padding:6px 8px;border-radius:9px;background:var(--card-2,#faf7f1);border:1px solid var(--line)}
.kpi-card-val.kpi-green{background:#e9f2e2;border-color:#bcd6aa}
.kpi-card-val.kpi-amber{background:#fdf3da;border-color:#eed398}
.kpi-card-val.kpi-red{background:#fbe5e1;border-color:#efb0a6}
.auto-card-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kpi-chip{font-size:10px;font-weight:600;letter-spacing:.02em;padding:1px 8px;border-radius:999px;background:var(--hover,#f1ebe2);color:var(--muted,#6a5f50);border:1px solid var(--line)}
.kpi-chip-ex{background:#eef4fb;color:#2f5d8a;border-color:#cfe0f0}
.kpi-card-meta{display:flex;flex-direction:column;gap:5px;margin-top:2px}
.kpi-tgt{display:flex;align-items:center;gap:8px}
.kpi-bar{flex:0 0 120px;height:8px;background:var(--hover,#f1ebe2);border-radius:5px;overflow:hidden}
.kpi-bar-fill{display:block;height:100%;background:var(--brand,#b8530f);border-radius:5px}
.kpi-bar-fill.kpi-green{background:#4f8f3f}.kpi-bar-fill.kpi-amber{background:#e0921f}.kpi-bar-fill.kpi-red{background:#cf3c2e}
.auto-pill{font-size:10px;font-weight:700;letter-spacing:.03em;padding:1px 8px;border-radius:999px}
.auto-pill.auto-on{background:#e8f4e8;color:#2f6f23;border:1px solid #c4e3c0}
.auto-pill.auto-off{background:#f1edf0;color:#8a7d8a;border:1px solid #e0d6dd}
.kpi-preview{display:flex;align-items:center;gap:12px;margin:10px 0 2px;padding:10px;border:1px dashed var(--line);border-radius:11px;background:#fff}
.kpi-preview .kpi{min-width:140px}
/* KPI Dashboard Configuration */
.kpicfg-card .sec-head{display:flex;align-items:center;gap:8px}
.kpicfg-count{font-size:11px;font-variant-numeric:tabular-nums}
.kpicfg-rows{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:4px 18px;margin-top:8px}
.kpicfg-row{display:flex;align-items:center;gap:9px;padding:5px 4px;border-radius:7px}
.kpicfg-row:hover{background:var(--card-2,#faf7f1)}
.kpicfg-row.off{opacity:.55}
.kpicfg-val{min-width:46px;text-align:center;font-weight:700;font-size:12px;padding:2px 7px;border-radius:7px;background:var(--card-2,#faf7f1);border:1px solid var(--line);white-space:nowrap}
.kpicfg-val.kpi-green{background:#e9f2e2;border-color:#bcd6aa}
.kpicfg-val.kpi-amber{background:#fdf3da;border-color:#eed398}
.kpicfg-val.kpi-red{background:#fbe5e1;border-color:#efb0a6}
.kpicfg-name{flex:1;font-size:13px}
.kpicfg-note{font-size:10.5px;font-style:italic}
.multi-check{display:flex;flex-wrap:wrap;gap:6px 14px;max-height:140px;overflow-y:auto;border:1px solid var(--line);border-radius:9px;padding:9px 11px;background:#fff}
.multi-check-item{display:flex;align-items:center;gap:4px;font-size:12.5px;cursor:pointer}
.multi-check-item input{width:auto;margin:0}

/* ---------- Action Log: cards ---------- */
.action-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.action-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff;cursor:pointer;display:flex;flex-direction:column;gap:8px;min-height:118px;transition:box-shadow .12s,border-color .12s}
.action-card:hover{border-color:var(--brand);box-shadow:var(--shadow)}
.action-card .ac-head{display:flex;align-items:center;gap:8px}
.action-card .ac-id{font-size:11px;color:var(--muted)}
.action-card .ac-title{font-weight:600;font-size:13.5px;line-height:1.3}
.action-card .ac-meta{display:flex;flex-wrap:wrap;gap:5px}
.action-card .ac-chip{font-size:10.5px;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 7px;color:var(--muted)}
.action-card .ac-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:4px}
.action-card .ac-due{font-size:11px;color:var(--muted)}
.action-card .ac-due.overdue{color:var(--red);font-weight:600}
.prio-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;border-radius:999px;margin-left:auto}
.prio-badge.p-low{background:rgba(79,143,63,.16);color:var(--green)}
.prio-badge.p-medium{background:rgba(224,146,31,.16);color:#9a5f08}
.prio-badge.p-high{background:rgba(226,125,36,.2);color:var(--brand)}
.prio-badge.p-critical{background:rgba(207,60,46,.15);color:var(--red)}

/* ---------- Go/No-Go readiness dashboard ---------- */
.gng-cat{padding:0;overflow:hidden}
.gng-cat-head{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);background:#fbfaf7}
.gng-cat-head h3{margin:0;font-size:14px;flex:none}
.gng-cat-prog{font-size:11.5px;color:var(--muted);margin-right:auto}
table.gng-grid{margin:0}
table.gng-grid td{vertical-align:middle}

/* ---------- Phase 9: global UX polish ---------- */
/* Accessible keyboard focus ring across all controls */
*:focus-visible{outline:2px solid var(--brand);outline-offset:1px;border-radius:4px}
/* Custom-styled native dropdowns (consistent chevron, no OS chrome) */
select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%237c7060' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;padding-right:24px}
select::-ms-expand{display:none}
/* Global search typeahead */
.search-wrap{position:relative;display:inline-flex}
.search-results{position:absolute;top:calc(100% + 6px);right:0;width:min(440px,86vw);max-height:62vh;overflow-y:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:6px;z-index:40}
.sr-row{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px}
.sr-row:hover{background:var(--bg)}
.sr-ico{flex:none}
.sr-id{flex:none;font-size:10.5px;color:var(--muted)}
.sr-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-kind{flex:none;font-size:10px;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 7px}
.sr-empty{padding:12px;color:var(--muted);font-size:13px}
/* Small-screen polish: stack modal forms + crowded topbar */
@media(max-width:640px){
  .form-grid{grid-template-columns:1fr}
  .topbar{flex-wrap:wrap;align-items:flex-start}
  .search{width:100%}
  .search-wrap{flex:1}
  .search-wrap.search-field{flex:1;min-width:0}
  .search-wrap.search-field .search{width:100%}
  .modal-card{max-width:96vw}
}

/* ---------- Gantt: delay indicator + critical-path impact ---------- */
.g-sliplbl.crit{color:#fff;background:#cf3c2e;padding:0 4px;border-radius:3px}
.g-sliplbl.clickable{cursor:pointer;text-decoration:underline dotted}
.g-sliplbl.clickable:hover{filter:brightness(1.08);box-shadow:0 1px 4px rgba(0,0,0,.2)}

/* preview: faded current bar + dashed projected ghost bar */
.g-bar.g-faded{opacity:.3;filter:grayscale(.35)}
.g-ghost{position:absolute;top:6px;height:18px;border-radius:5px;border:2px dashed;z-index:3}
.g-ghost.moved{border-color:#bf550f;background:rgba(191,85,15,.14)}
.g-ghost.affected{border-color:#e0921f;background:rgba(224,146,31,.16)}
.g-impact-row.moved{background:rgba(191,85,15,.06)}
.g-impact-row.affected{background:rgba(224,146,31,.07)}
.g-row .g-label.impact-lbl{font-weight:600}
.g-impact-row.moved .g-label{box-shadow:inset 3px 0 0 #bf550f}
.g-impact-row.affected .g-label{box-shadow:inset 3px 0 0 #e0921f}
.impact-arrows{z-index:3}
.impact-arrow-path{fill:none;stroke:#c2410c;stroke-width:1.7}
.dep-arrows{z-index:2}
.dep-arrow-path{fill:none;stroke:#7c8aa0;stroke-width:1.3;opacity:.7}
.dep-arrow-path.crit{stroke:#dc2626;stroke-width:1.8;opacity:.95}

/* impact summary panel */
.impact-panel{background:#fff;border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:var(--radius);padding:14px 16px;margin-bottom:12px;box-shadow:var(--shadow)}
.impact-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.impact-title{font-family:var(--fh);font-weight:700;font-size:1.05rem;color:var(--copper);display:block}
.impact-sub{font-size:12px;color:var(--muted)}
.impact-x{border:0;background:none;font-size:16px;color:var(--muted);cursor:pointer;line-height:1}
.impact-warn{background:#fef3c7;border:1px solid #fcd34d;color:#92400e;border-radius:9px;padding:9px 12px;font-size:13px;margin-bottom:10px}
.impact-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:10px}
.impact-stat{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:9px 12px}
.impact-stat-v{font-family:var(--fh);font-weight:700;font-size:1.3rem;line-height:1}
.impact-stat-l{font-size:11px;color:var(--muted);margin-top:3px}
.impact-stat.bad .impact-stat-v{color:var(--red)}
.impact-stat.warn .impact-stat-v{color:var(--amber)}
.impact-stat.ok .impact-stat-v{color:var(--leaf)}
.impact-moved{font-size:13px;margin-bottom:10px;padding:8px 10px;background:var(--bg);border-radius:9px}
.impact-then{color:var(--brand);font-weight:700}
.impact-tbl-wrap{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:10px;margin-bottom:12px}
.impact-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.impact-tbl th{position:sticky;top:0;background:#f8f5f0;text-align:left;padding:7px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line)}
.impact-tbl td{padding:6px 10px;border-bottom:1px solid #f1ece4;white-space:nowrap}
.impact-tbl tr.cp td:first-child{box-shadow:inset 3px 0 0 var(--red)}
.impact-none{color:var(--muted);font-size:13px;margin-bottom:10px}
.impact-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* ===========================================================
   Phase 10 — shared design-system components
   (additive; adopted by rebuilt modules for a coherent look)
   =========================================================== */
/* Standard search field: magnifier icon + clear (X) button. Wraps .filter-search. */
.search-field{position:relative;display:inline-flex;align-items:center;flex:1;min-width:200px}
.search-field .search-ico{position:absolute;left:11px;display:inline-flex;align-items:center;color:var(--faint);pointer-events:none}
.search-field .search-ico svg{width:15px;height:15px;display:block}
.search-field .filter-search{flex:1;width:100%;padding-left:33px;padding-right:30px}
.search-field .search-clear{position:absolute;right:7px;display:none;align-items:center;justify-content:center;border:0;background:none;color:var(--faint);font-size:17px;line-height:1;width:22px;height:22px;padding:0;cursor:pointer;border-radius:6px}
.search-field .search-clear:hover{color:var(--ink);background:rgba(120,70,20,.07)}
.search-field.has-val .search-clear{display:inline-flex}
.search-field .filter-search::-webkit-search-cancel-button{-webkit-appearance:none;display:none}
.search-field .filter-search:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(191,85,15,.14)}
/* global topbar search adopts the same icon+clear treatment */
.search-wrap.search-field{flex:none;min-width:0}
.search-wrap.search-field .search{padding-left:33px;padding-right:30px;width:220px}
.search-wrap .search::-webkit-search-cancel-button{-webkit-appearance:none;display:none}

/* Generic badge primitive — one geometry, tone modifiers. */
.badge{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;line-height:1.7;padding:1px 9px;border-radius:var(--radius-pill);white-space:nowrap}
.badge--neutral{background:var(--bg);border:1px solid var(--line);color:var(--muted)}
.badge--green{background:rgba(79,143,63,.16);color:var(--green)}
.badge--amber{background:rgba(224,146,31,.16);color:#9a5f08}
.badge--red{background:rgba(207,60,46,.15);color:var(--red)}
.badge--brand{background:rgba(226,125,36,.2);color:var(--brand)}
.badge--blue{background:rgba(91,124,179,.16);color:#3f5e93}
.badge--dot::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}

/* Generic responsive card-grid utility (available for card lists). */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.card-grid.cg-wide{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}

/* Expandable record cards (Defects, Decisions, …) — progressive disclosure. */
.rec-list{display:flex;flex-direction:column;gap:10px}
.rec-card{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden;transition:box-shadow .12s,border-color .12s}
.rec-card:hover{border-color:var(--line-2)}
.rec-card[open]{border-color:var(--brand-2);box-shadow:var(--shadow-md)}
.rec-card.crit{box-shadow:inset 3px 0 0 var(--red)}
.rec-card[open].crit{box-shadow:inset 3px 0 0 var(--red),var(--shadow-md)}
.rec-sum{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;list-style:none;user-select:none}
.rec-sum::-webkit-details-marker{display:none}
.rec-caret{color:var(--faint);font-size:10px;transition:transform .15s;flex:none}
.rec-card[open] .rec-caret{transform:rotate(90deg)}
.rec-id{font-size:11px;color:var(--muted);font-family:var(--fm);flex:none}
.rec-title{font-weight:600;font-size:13.5px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rec-sum-badges{display:flex;align-items:center;gap:6px;flex:none;flex-wrap:wrap}
.rec-body{padding:14px 16px 16px;border-top:1px solid var(--line);background:#fcfbf9}
.rec-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:11px 20px;margin-bottom:12px}
.rec-f{display:flex;flex-direction:column;gap:2px;min-width:0}
.rec-f.full{grid-column:1/-1}
.rec-f-l{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);font-weight:700}
.rec-f-v{font-size:13px;color:var(--ink);word-wrap:break-word}
.rec-f-v.empty{color:var(--faint)}
.rec-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px;padding-top:10px;border-top:1px dashed var(--line)}
.rec-foot .rec-meta{font-size:11px;color:var(--muted);margin-right:auto}

/* Go/No-Go: collapsible readiness cards + progressive disclosure */
.gng-cat{padding:0;overflow:hidden}
summary.gng-cat-head{cursor:pointer;list-style:none;user-select:none}
summary.gng-cat-head::-webkit-details-marker{display:none}
.gng-cat:not([open]) .gng-cat-head{border-bottom:none}
.gng-cat[open] .rec-caret{transform:rotate(90deg)}
.gng-cat-head h3{flex:none;font-size:14px}
.gng-cat-head .gng-prog{display:flex;align-items:center;gap:8px;margin-left:auto;flex:none}
.gng-prog-bar{width:90px;height:7px;background:#ece2d4;border-radius:999px;overflow:hidden}
.gng-prog-fill{display:block;height:100%;border-radius:999px;min-width:2px;background:var(--grey)}
.gng-prog-fill.bg-green{background:var(--green)}.gng-prog-fill.bg-amber{background:var(--amber)}.gng-prog-fill.bg-red{background:var(--red)}.gng-prog-fill.bg-grey{background:var(--grey)}
.gng-prog-txt{font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted);min-width:30px;text-align:right}
.gng-cat-head .gng-cat-prog{margin:0 0 0 4px;flex:none}
.gng-cat-body{padding:12px 14px 14px}
.gng-cat-foot{margin-top:10px}
.gng-locked{display:flex;align-items:center;gap:6px}
.gng-lock{font-size:12px;line-height:1}
.gng-row-locked td{background:rgba(79,143,63,.05)}
table.gng-grid{table-layout:fixed;width:100%}
table.gng-grid th:nth-child(1),table.gng-grid td:nth-child(1){width:25%}
table.gng-grid th:nth-child(2),table.gng-grid td:nth-child(2){width:14%}
table.gng-grid th:nth-child(3),table.gng-grid td:nth-child(3){width:15%}
table.gng-grid th:nth-child(4),table.gng-grid td:nth-child(4){width:15%}
table.gng-grid th:nth-child(5),table.gng-grid td:nth-child(5){width:16%}
table.gng-grid th:nth-child(6),table.gng-grid td:nth-child(6){width:15%}
table.gng-grid td .row-actions{flex-wrap:wrap;gap:3px}

/* ---------- Responsive ---------- */
@media(max-width:900px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--side-w);z-index:60;transform:translateX(-100%);transition:.25s}
  .sidebar.open{transform:none}
  .hamburger{display:block}
  .two-col,.three-col{grid-template-columns:1fr}
  .search{width:130px}
  .search-wrap.search-field .search{width:130px}
}

/* ============================================================
   Enterprise form controls — unified dropdowns & inputs
   Modern borders, consistent spacing, clear hover/focus states.
   Applied platform-wide so every register, modal & filter matches.
   (Placed last so it supersedes the older per-context rules above.)
   ============================================================ */
/* Refined custom chevron on every native <select> */
select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1.4 1.8l4.6 4 4.6-4' fill='none' stroke='%23bf550f' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;
}

/* Shared base look for all editable controls */
.fld,
.field input,.field select,.field textarea,
.toolbar select,.toolbar input,
.abs-form select,.abs-form input,
.filter-sel,.filter-search{
  font:inherit;font-size:13px;color:var(--ink);
  background:#fff;border:1px solid var(--line-2);border-radius:var(--radius-sm);
  padding:8px 11px;line-height:1.35;
  transition:border-color .14s ease,box-shadow .14s ease,background-color .14s ease;
  box-shadow:0 1px 1px rgba(90,58,18,.02);
}
/* Selects get the chevron, a pointer cursor and room for the icon */
select.fld,.field select,.toolbar select,.abs-form select,.filter-sel{cursor:pointer;padding-right:30px}
/* Modal fields & in-table register controls stretch to their container */
.field input,.field select,.field textarea,
table.grid .fld{width:100%}
textarea.fld,.field textarea{min-height:70px;resize:vertical;line-height:1.5}

/* Hover — subtle border darkening */
.fld:hover,
.field input:hover,.field select:hover,.field textarea:hover,
.toolbar select:hover,.toolbar input:hover,
.abs-form select:hover,.abs-form input:hover,
.filter-sel:hover,.filter-search:hover{border-color:#c6b095}

/* Focus — copper border + soft brand glow (consistent everywhere) */
.fld:focus,
.field input:focus,.field select:focus,.field textarea:focus,
.toolbar select:focus,.toolbar input:focus,
.abs-form select:focus,.abs-form input:focus,
.filter-sel:focus,.filter-search:focus{
  outline:none;border-color:var(--brand);
  box-shadow:0 0 0 3px rgba(191,85,15,.16);background:#fff;
}
.fld::placeholder,.field input::placeholder,.field textarea::placeholder{color:var(--faint)}
.fld:disabled,.field input:disabled,.field select:disabled{
  background:var(--nav-2);color:var(--muted);cursor:not-allowed;opacity:.9;-webkit-text-fill-color:var(--muted);
}
/* Compact controls inside register / data tables */
table.grid .fld{font-size:12.5px;padding:6px 9px}
table.grid select.fld{padding-right:26px}
/* Keep the tight inline plan-grid selects neat with the refined chevron */
select.cell-input{padding-right:18px;background-position:right 5px center}

/* Entity bank holidays grid — keep the entity & action columns tight */
table.holiday-grid td:first-child{width:1%;white-space:nowrap}
table.holiday-grid td:last-child,table.holiday-grid th:last-child{width:1%;white-space:nowrap;text-align:right}

/* Empty-state shown inside a chart card when there is no real data yet */
.chart-empty{
  display:flex;align-items:center;justify-content:center;text-align:center;
  min-height:150px;padding:18px 22px;color:var(--muted);font-size:13px;line-height:1.55;
  background:var(--bg);border:1px dashed var(--line-2);border-radius:var(--radius);
}

/* Horizontally-scrollable chart wrapper — keeps week labels readable on small
   screens instead of squashing the chart (Overview delivery curve + trend charts). */
.chart-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
.chart-scroll>svg.chart{min-width:440px}
.delivery-inner{min-width:560px}
.delivery-inner>.chart{width:100%;min-width:0}

/* Workspace nav group — embedded country/entity switcher sits inside the card */
.nav-group-workspace{padding-bottom:8px}
.nav-group .side-entity{padding:3px 4px 6px;border-bottom:0;background:none}
.nav-group .side-entity .ent-menu{left:4px;right:4px}

/* Responsiveness: let grid items shrink so wide tables & charts scroll locally
   (inside their own .tbl-wrap / .chart-scroll) instead of stretching the whole
   view and pushing content off-screen on tablets, laptops & phones. */
.view-grid>*,.two-col>*,.three-col>*,.trend-grid>*,.card-grid>*{min-width:0}
.tbl-wrap{min-width:0}

/* ============================================================
   New features: Who's-online · Child work items · Documentation
   ============================================================ */

/* ---- Who is online (topbar) ---- */
.online-wrap{position:relative}
.online-pill{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line-2);background:#fff;border-radius:var(--radius-pill);padding:4px 10px 4px 6px;cursor:pointer;transition:border-color .14s,box-shadow .14s}
.online-pill:hover{border-color:var(--brand)}
.online-avatars{display:inline-flex;align-items:center}
.online-avatars .online-av{box-shadow:0 0 0 2px #fff;margin-left:-8px}
.online-avatars .online-av:first-child{margin-left:0}
.online-av{width:24px;height:24px;font-size:10px}
.online-count{font-size:12px;font-weight:600;color:var(--ink);white-space:nowrap}
.online-caret{font-size:9px;color:var(--muted)}
.online-menu{position:absolute;right:0;top:calc(100% + 6px);min-width:236px;max-height:60vh;overflow-y:auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px;z-index:50}
.online-menu-head{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-weight:700;padding:6px 8px}
.online-row{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:8px}
.online-row:hover{background:var(--bg)}
.online-row .online-av{width:26px;height:26px;font-size:11px}
.online-name{flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.online-role{font-size:9.5px;text-transform:capitalize;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:1px 7px;flex:none}
.online-dot{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 2px rgba(79,143,63,.22);flex:none}

/* ---- Child work items (sub-tasks) ---- */
.task-head-acts{display:flex;gap:8px;align-items:center;flex:none;flex-wrap:wrap;justify-content:flex-end}
.child-chip{display:inline-flex;align-items:center;gap:3px;margin-left:8px;border:1px solid var(--line-2);background:#fff;color:var(--muted);border-radius:var(--radius-pill);font-size:10.5px;font-weight:600;line-height:1.6;padding:0 8px;cursor:pointer;vertical-align:middle;white-space:nowrap;transition:border-color .12s,color .12s,background .12s}
.child-chip .ci{font-size:11px;line-height:1}
.child-chip:hover{border-color:var(--brand);color:var(--brand)}
.child-chip-empty{border-style:dashed;color:var(--faint)}
.child-chip-empty:hover{color:var(--brand)}
.child-chip-done{border-color:var(--green);color:var(--green);background:rgba(79,143,63,.08)}
/* capacity: allocated/available cells + other-project (◐) accents */
.cap-alloc{font-weight:700}
.cap-avail{color:#8a8172;font-size:10px}
.cap-cell-ext{box-shadow:inset 2px 0 0 #d08a1f}
.cap-ext-dot{font-size:9px;margin-left:3px;color:#9a6210;vertical-align:top;line-height:1}
.cap-ext-head{margin:14px 0 0;font-size:13px;color:#7c4c08}
/* delay/overrun chip on a plan row — same family as .child-chip, tinted amber */
.delay-chip{flex:none;display:inline-flex;align-items:center;gap:2px;border:1px solid #e8c9a0;background:#fdf3e4;color:#9a6210;border-radius:var(--radius-pill);font-size:10.5px;font-weight:700;line-height:1.6;padding:0 6px;cursor:pointer;vertical-align:middle;white-space:nowrap;transition:border-color .12s,color .12s}
.delay-chip .ci{font-size:11px;line-height:1}
.delay-chip:hover{border-color:#d08a1f;color:#7c4c08}
/* Baseline finish column (read-only) */
.p-bf{display:flex;align-items:center;gap:6px;min-width:0}
.p-bf-date{font-size:12px;color:var(--muted);white-space:nowrap}
.p-bf-slip{font-size:10.5px;font-weight:700;white-space:nowrap}
.p-bf-slip.bad{color:var(--red)}
.p-bf-slip.good{color:var(--green)}
.child-prog{display:flex;align-items:center;gap:10px;margin:0 0 14px}
.child-prog-bar{flex:1;height:8px;background:var(--nav-2);border-radius:999px;overflow:hidden}
.child-prog-bar>span{display:block;height:100%;background:var(--grad);border-radius:999px;min-width:2px}
.child-grid td{vertical-align:middle}
.child-grid td:first-child{min-width:190px}
.child-grid tr.child-done td:first-child .fld{text-decoration:line-through;color:var(--muted)}

/* ---- Documentation (Confluence-style) ---- */
.doc-perm-banner{background:rgba(224,146,31,.12);border:1px solid rgba(224,146,31,.4);color:#9a6a10;border-radius:var(--radius);padding:9px 14px;font-size:12.5px;margin-bottom:14px}
.doc-layout{display:grid;grid-template-columns:282px 1fr;gap:16px;align-items:start}
.doc-side{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;position:sticky;top:0;max-height:calc(100vh - 150px)}
.doc-side-head{padding:10px;border-bottom:1px solid var(--line)}
.doc-side-head .search-field{min-width:0;width:100%;flex:1}
.doc-tree{flex:1;overflow-y:auto;padding:8px 6px}
.doc-side-foot{display:flex;gap:6px;padding:9px;border-top:1px solid var(--line);flex-wrap:wrap}
.doc-cat{margin-bottom:2px}
.doc-cat-head{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:8px;cursor:pointer;font-weight:700;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink)}
.doc-cat-head:hover,.doc-folder-head:hover{background:var(--bg)}
.doc-caret{font-size:9px;color:var(--faint);width:10px;flex:none}
.doc-cat-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-folder-head{display:flex;align-items:center;gap:6px;padding:5px 8px 5px 16px;border-radius:8px;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--ink)}
.doc-folder-ico{font-size:12px;flex:none}
.doc-folder-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-row-acts{display:none;gap:1px;flex:none}
.doc-cat-head:hover .doc-row-acts,.doc-folder-head:hover .doc-row-acts{display:inline-flex}
.doc-row-acts .icon-btn{width:22px;height:22px;font-size:11px}
.doc-folder-empty{font-size:11.5px;padding:3px 8px 5px 34px}
.doc-page-row{display:flex;align-items:center;gap:7px;padding:5px 8px 5px 30px;border-radius:8px;cursor:pointer;font-size:12.5px}
.doc-page-row:hover{background:var(--bg)}
.doc-page-row.sel{background:rgba(191,85,15,.1);box-shadow:inset 2.5px 0 0 var(--brand)}
.doc-page-ico{flex:none;font-size:12px}
.doc-page-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.doc-page-row.sel .doc-page-title{font-weight:600;color:var(--copper)}
.doc-page-v{font-size:10px;color:var(--faint);font-family:var(--fm);flex:none}
.doc-main{min-width:0}
.doc-empty{text-align:center;color:var(--muted);padding:70px 20px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}
.doc-empty-ico{font-size:40px;margin-bottom:8px}
.doc-empty h3{margin-bottom:6px}
.doc-page{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px 26px}
.doc-crumbs{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.doc-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}
.doc-page-h{font-size:1.4rem;min-width:0;word-break:break-word}
.doc-page-acts{display:flex;gap:7px;flex-wrap:wrap;flex:none}
.btn-approved{border-color:var(--green)!important;color:var(--green)!important;background:rgba(79,143,63,.08)!important}
.doc-meta{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;margin:10px 0 14px;padding-bottom:12px;border-bottom:1px solid var(--line);font-size:12px}
.doc-content{font-size:14px;line-height:1.65;color:var(--ink);word-wrap:break-word}
.doc-file{display:flex;align-items:center;gap:12px;padding:12px 14px;margin:0 0 14px;background:var(--nav-2);border:1px solid var(--line-2);border-radius:var(--radius)}
.doc-file-ico{font-size:26px;line-height:1;flex:none}
.doc-file-meta{flex:1;min-width:0}
.doc-file-name{font-size:13.5px;font-weight:600;color:var(--ink);word-break:break-word}
.doc-file-sub{font-size:11.5px;margin-top:1px}
.doc-ver-file{display:inline-flex;align-items:center;gap:4px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;color:var(--brand);text-decoration:none;border:1px solid var(--line-2);border-radius:7px;padding:2px 8px;background:#fff}
.doc-ver-file:hover{border-color:var(--brand)}
.doc-versions{margin-top:18px}
.doc-ver-list{display:flex;flex-direction:column;gap:7px}
.doc-ver-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;flex-wrap:wrap}
.doc-ver-row.cur{border-color:var(--brand-2);background:rgba(226,125,36,.06)}
.doc-ver-meta{flex:1;min-width:140px;font-size:12.5px}
.doc-ver-acts{display:flex;gap:6px;flex:none}
.doc-ver-preview{border:1px dashed var(--line-2);border-radius:9px;padding:12px 14px;background:var(--bg);font-size:13px;line-height:1.6}
.doc-ver-preview-h{font-size:11px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.doc-sub{margin:16px 0 8px;font-size:13px}
.doc-editor .field{margin-bottom:14px}
.doc-title-input{font-size:18px;font-weight:600}
.doc-content-input{min-height:300px;line-height:1.6;font-family:var(--fb)}
.doc-editor-acts{display:flex;gap:10px;margin-top:6px}
.doc-perm-add{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.doc-perm-add .fld{flex:1;min-width:160px}
@media(max-width:860px){
  .doc-layout{grid-template-columns:1fr}
  .doc-side{position:static;max-height:none}
}

/* ============================================================
   Detailed Plan: drag-to-reorder handle, drop indicators, row ⋯ menu, toast
   ============================================================ */
.p-name-task{padding-left:26px}
.p-drag{flex:none;width:16px;text-align:center;color:var(--faint);cursor:grab;font-size:13px;line-height:1;opacity:.38;transition:opacity .12s,color .12s;user-select:none}
.p-task:hover .p-drag{opacity:.9}
.p-drag:hover{color:var(--brand);opacity:1}
.p-drag:active{cursor:grabbing}
.p-drag.p-drag-off{cursor:not-allowed;opacity:0}
.p-task:hover .p-drag.p-drag-off{opacity:.3}
.p-task.p-dragging{opacity:.45}
.p-task.p-drop-before{box-shadow:inset 0 2px 0 0 var(--brand)}
.p-task.p-drop-after{box-shadow:inset 0 -2px 0 0 var(--brand)}
.p-row.p-drop-into{background:rgba(191,85,15,.10);box-shadow:inset 0 0 0 1px var(--brand-2)}

/* Row "⋯" action menu (body-appended popover) */
.row-menu{position:fixed;z-index:120;min-width:172px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:5px}
.row-menu-item{display:flex;align-items:center;width:100%;border:0;background:none;text-align:left;font:inherit;font-size:13px;color:var(--ink);padding:8px 10px;border-radius:7px;cursor:pointer}
.row-menu-item:hover{background:var(--bg)}
.row-menu-item.danger{color:var(--red)}
.row-menu-item.danger:hover{background:rgba(207,60,46,.08)}
.row-menu-sep{height:1px;background:var(--line);margin:4px 2px}

/* Transient toast notifications */
.toast-host{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:var(--ink);color:#fff;padding:9px 16px;border-radius:10px;font-size:13px;font-weight:600;box-shadow:0 12px 30px -10px rgba(0,0,0,.45);opacity:0;transform:translateY(10px);transition:opacity .28s,transform .28s;max-width:80vw;text-align:center}
.toast.show{opacity:1;transform:none}
.toast-success{background:#477b30}   /* darker leaf so white toast text meets WCAG AA */

/* ---------------- RBAC / per-module permissions ---------------- */
/* View-only banner shown at the top of a read-only module. */
.perm-ro-banner{background:rgba(224,146,31,.12);border:1px solid rgba(224,146,31,.4);color:#9a6a10;border-radius:var(--radius);padding:9px 14px;font-size:12.5px;margin-bottom:14px;font-weight:600}
.perm-ro-note{background:rgba(224,146,31,.12);border:1px solid rgba(224,146,31,.4);color:#9a6a10;border-radius:var(--radius);padding:8px 12px;font-size:12px;margin-bottom:12px;font-weight:600}
/* Hide mutating controls (tagged .perm-edit) inside any read-only view — covers controls
   added by a view's own internal re-renders, since the host keeps .perm-readonly. */
.perm-readonly .perm-edit{display:none !important}
/* The permissions matrix editor in the Add/Edit user modal. */
.perm-matrix{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-top:4px}
.perm-row{display:grid;grid-template-columns:1fr 150px;align-items:center;gap:12px;padding:7px 12px;border-top:1px solid var(--line)}
.perm-row:first-child{border-top:none}
.perm-row.perm-head{background:var(--panel2,#f3f0ea);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--faint)}
.perm-mod{font-size:13px;font-weight:600}
.perm-row .perm-lvl{width:100%}
/* Permission-change audit list. */
.perm-audit{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow:auto}
.perm-audit-row{border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px;font-size:13px}

/* ---------------- Flags (real images) + PMO Resource Matrix ---------------- */
.flag-img{width:20px;height:15px;border-radius:3px;object-fit:cover;box-shadow:0 0 0 1px rgba(0,0,0,.12);vertical-align:middle;flex:none}
.flag-ico{font-size:15px;line-height:1}
.flag-name{display:inline-flex;align-items:center;gap:7px;justify-content:center;font-weight:600}
/* Week navigator in the Resource Matrix card header */
.pmo-weeknav{margin-left:auto;display:flex;align-items:center;gap:6px}
.pmo-weeknav .btn{padding:4px 9px;line-height:1}
.pmo-weeknav select{min-width:190px}
.pmo-week-label{font-size:12.5px;color:var(--muted);margin-top:2px;font-weight:600}
/* Matrix cell: hours (prominent) + task count (muted) */
.matrix-cell .mx-h{font-weight:700}
.matrix-cell .mx-n{font-size:11px;color:var(--muted);font-weight:500}
.matrix-cell.mx-total{border-left:2px solid var(--line)}
/* Heatmap week headers are clickable; the selected week is highlighted */
table.heatmap th.heat-wk{cursor:pointer;user-select:none}
table.heatmap th.heat-wk:hover{color:var(--brand)}
table.heatmap th.heat-wk-sel{background:rgba(191,85,15,.12);color:var(--brand);border-radius:5px}
table.heatmap td.heat-cell-sel{box-shadow:inset 0 0 0 2px rgba(191,85,15,.45)}

/* ---------------- Info "i" icon + tooltip (chart explanations) ---------------- */
.info-dot{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--line-2,#e5e0d6);color:var(--muted);font-size:11px;font-weight:700;font-family:Georgia,'Times New Roman',serif;font-style:italic;cursor:help;position:relative;flex:none;margin-left:3px}
.info-dot:hover,.info-dot:focus-visible{background:var(--brand);color:#fff;outline:none}
.info-tip{position:absolute;top:calc(100% + 8px);left:0;width:min(290px,74vw);background:#1f2937;color:#fff;font-size:12px;font-weight:400;font-style:normal;line-height:1.5;text-align:left;padding:10px 12px;border-radius:8px;box-shadow:0 16px 38px -12px rgba(0,0,0,.55);opacity:0;visibility:hidden;transform:translateY(-3px);transition:opacity .15s,transform .15s;z-index:60;pointer-events:none;white-space:normal}
.info-dot:hover .info-tip,.info-dot:focus-visible .info-tip{opacity:1;visibility:visible;transform:none}
@media(max-width:760px){.info-tip{left:auto;right:0}}

/* ---------------- Child work items: help + example empty state ---------------- */
.child-help{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:10px 13px;margin:0 0 14px;font-size:12.5px;line-height:1.5;color:var(--ink)}
.child-help p{margin:0}
.child-example{border:1px dashed var(--line-2);border-radius:var(--radius);padding:14px 16px;background:var(--bg)}
.child-eg-list{margin:4px 0 0;padding-left:20px}
.child-eg-list li{font-size:13px;margin:3px 0;color:var(--ink)}

/* ---------------- Task pop-up: close X must not overlap the header actions ---------------- */
.modal-x{top:12px;right:12px;width:34px;height:34px;display:grid;place-items:center;border-radius:9px;line-height:1;z-index:3;transition:background .15s,color .15s}
.modal-x:hover{background:var(--bg);color:var(--ink)}
.task-head{padding-right:40px;flex-wrap:wrap}
.task-head>div:first-child{flex:1 1 auto;min-width:0}
.task-head-acts{margin-left:auto}
/* Long titles in other modals also keep clear of the close X */
#modal-body>div>h2:first-child{padding-right:36px}

/* ---------------- Quick-wins batch ---------------- */
/* WBS outline number in the Detailed Plan */
.p-wbs{font-size:10px;color:var(--brand);font-weight:700;margin-right:4px}
/* Click-through KPI tiles (Overview drill-down) */
.kpi.kpi-click{cursor:pointer;transition:transform .12s,box-shadow .12s}
.kpi.kpi-click:hover{transform:translateY(-1px);box-shadow:0 8px 20px -10px rgba(0,0,0,.28)}
.kpi.kpi-click:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.kpi.kpi-click::after{content:"↗";position:absolute;top:8px;right:10px;font-size:11px;color:var(--faint);opacity:0;transition:opacity .12s}
.kpi{position:relative}
.kpi.kpi-click:hover::after{opacity:1}
/* Password strength meter */
.pw-meter-wrap{display:flex;align-items:center;gap:10px}
.pw-meter{flex:1;height:6px;background:var(--nav-2,#eee);border-radius:999px;overflow:hidden;min-width:80px}
.pw-meter>span{display:block;height:100%;width:0;background:#dc2626;border-radius:999px;transition:width .2s,background .2s}
.pw-meter-lbl{font-size:11px;color:var(--muted);white-space:nowrap;min-width:64px}
/* Workspace version history list */
.ver-hist{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow:auto}
.ver-hist-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:var(--radius);padding:7px 12px;font-size:13px}
/* Notifications bell + watch + collab header (high-value batch 2) */
.notif-bell{position:relative;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}
.notif-bell:hover{background:var(--bg);border-color:var(--brand)}
.notif-dot{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:var(--red);border:2px solid #fff;color:#fff;font-size:10px;font-weight:700;line-height:14px;text-align:center;box-sizing:border-box}
.collab-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.collab-watch{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 12px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}
.collab-watch:hover{border-color:var(--brand);color:var(--ink)}
.collab-watch.on{background:#fbeede;border-color:var(--brand);color:var(--brand)}

/* ============================================================
   Cutover theme — programme-wide go-live awareness
   (topbar countdown chip + Overview snapshot + PMO runway)
   ============================================================ */
/* ---- Topbar go-live countdown (every workspace) ---- */
.golive-wrap{display:inline-flex}
.golive-pill{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line-2);background:linear-gradient(120deg,#fff,#fdf2e4);border-radius:999px;padding:5px 7px 5px 13px;cursor:pointer;font:inherit;transition:border-color .14s,box-shadow .14s,transform .14s}
.golive-pill:hover{border-color:var(--brand);box-shadow:0 6px 16px -9px rgba(191,85,15,.55);transform:translateY(-1px)}
.golive-l{font-size:9.5px;font-weight:800;letter-spacing:.09em;color:var(--brand);text-transform:uppercase}
.golive-date{font-size:12.5px;font-weight:700;color:var(--ink);white-space:nowrap}
.golive-ent{font-size:11px;color:var(--muted);white-space:nowrap}
.golive-d{font-size:11px;font-weight:800;color:#fff;background:var(--grad);border-radius:999px;padding:3px 10px;white-space:nowrap}
.golive-d.past{background:var(--leaf)}
@keyframes golivePulse{0%,100%{box-shadow:0 0 0 0 rgba(226,125,36,.45)}55%{box-shadow:0 0 0 7px rgba(226,125,36,0)}}
.golive-pill.is-soon .golive-d{animation:golivePulse 2.2s ease-out infinite}
@media(max-width:1100px){.golive-ent{display:none}}
@media(max-width:760px){.golive-date{display:none}}

/* ---- Overview: cutover snapshot card ---- */
.ov-cutover{display:flex;align-items:center;gap:18px;flex-wrap:wrap;cursor:pointer;border-left:4px solid var(--brand-2);transition:box-shadow .14s,transform .14s}
.ov-cutover:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.ov-co-main{display:flex;flex-direction:column;gap:2px;min-width:180px}
.ov-co-kicker{font-size:10px;font-weight:800;letter-spacing:.09em;color:var(--brand);text-transform:uppercase}
.ov-co-date{font-family:var(--fh);font-weight:700;font-size:1.1rem}
.ov-co-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.ov-co-meta b{color:var(--ink)}
.ov-co-meta .bad{color:var(--red)}
.ov-co-prog{flex:1;min-width:160px;display:flex;align-items:center;gap:10px}
.ov-co-pct{font-family:var(--fh);font-weight:700;font-size:1.25rem;color:var(--copper)}

/* ---- PMO: Cutover & Go-Live command centre ---- */
.pco-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(295px,1fr));gap:14px}
.pco-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px 14px;cursor:pointer;transition:.15s;display:flex;flex-direction:column;gap:10px;overflow:hidden}
.pco-card::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--pco-accent,var(--grad))}
.pco-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--line-2)}
.pco-card.pco-none{cursor:default;border-style:dashed}
.pco-card.pco-none::before{background:var(--line-2)}
.pco-card.pco-none:hover{transform:none;box-shadow:none}
.pco-head{display:flex;align-items:center;gap:10px}
.pco-name{font-family:var(--fh);font-weight:700;font-size:1.04rem;color:var(--ink)}
.pco-sub{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.pco-d{margin-left:auto;font-size:11px;font-weight:800;border-radius:999px;padding:3px 10px;background:var(--nav-2);color:var(--brand);border:1px solid var(--line-2);white-space:nowrap;flex:none}
.pco-d.go{background:var(--grad);color:#fff;border-color:transparent}
.pco-d.past{background:rgba(79,143,63,.14);color:var(--leaf);border-color:rgba(79,143,63,.35)}
.pco-date{font-size:13px;font-weight:600;color:var(--ink)}
.pco-date .muted{font-weight:500}
.pco-progress{display:flex;align-items:center;gap:10px}
.pco-pct{font-family:var(--fh);font-size:1.55rem;font-weight:700;line-height:1;color:var(--copper);min-width:58px}
.pco-meter{flex:1;display:flex;height:9px;border-radius:999px;overflow:hidden;background:#efe6d6}
.pco-meter span{display:block;height:100%}
.pco-meter .seg-done{background:var(--done)}
.pco-meter .seg-prog{background:var(--prog)}
.pco-meter .seg-block{background:var(--block)}
.pco-stats{display:flex;gap:11px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.pco-stats b{color:var(--ink)}
.pco-stats .bad{color:var(--red)}
.pco-stats .warn{color:#9a5f08}
.pco-foot{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);padding-top:9px;font-size:11.5px;color:var(--muted);flex-wrap:wrap;min-height:30px}
.pco-phase{font-size:10px;font-weight:700;letter-spacing:.03em;color:var(--co-ph,var(--muted));border:1px solid currentColor;border-radius:999px;padding:1px 8px;flex:none}
.pco-ready{margin-left:auto;font-size:11px;font-weight:700;color:var(--muted);white-space:nowrap}
.pco-ready b{color:var(--leaf)}
/* runway strip — entities ordered by go-live date */
.pco-runway{position:relative;display:flex;align-items:flex-start;gap:0;overflow-x:auto;padding:18px 6px 8px}
.pco-run-item{position:relative;flex:1 1 0;min-width:150px;text-align:center;padding-top:22px}
.pco-run-item::before{content:"";position:absolute;top:7px;left:50%;width:100%;height:3px;background:var(--line-2)}
.pco-run-item:last-child::before{display:none}
.pco-run-dot{position:absolute;top:1px;left:50%;transform:translateX(-50%);width:15px;height:15px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(191,85,15,.25);z-index:1}
.pco-run-item.past .pco-run-dot{background:var(--leaf);box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(79,143,63,.25)}
.pco-run-item.none .pco-run-dot{background:var(--grey);box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(168,156,139,.25)}
.pco-run-flag{font-size:17px;line-height:1}
.pco-run-name{font-size:12.5px;font-weight:700;margin-top:3px}
.pco-run-date{font-size:11px;color:var(--muted);margin-top:1px}
.pco-run-d{display:inline-block;margin-top:5px;font-size:10px;font-weight:800;border-radius:999px;padding:1px 8px;background:var(--nav-2);color:var(--brand);border:1px solid var(--line-2)}
.pco-run-d.go{background:var(--grad);color:#fff;border-color:transparent}
.pco-run-d.past{background:rgba(79,143,63,.14);color:var(--leaf);border-color:rgba(79,143,63,.35)}
/* cross-entity activity feed rows reuse the cutover row look */
.pco-feed .ent-chip{flex:none;min-width:96px}

/* ============================================================
   Programme-wide COMBINED cutover plan (js/cutover-program.js)
   ============================================================ */
/* banner in entity views pointing at the plan of record */
.pgc-banner{display:flex;align-items:center;gap:10px;background:linear-gradient(120deg,#fff,#fdf2e4);border:1px solid var(--line-2);border-left:4px solid var(--brand-2);border-radius:var(--radius);padding:10px 14px;font-size:12.5px;color:var(--ink);margin-bottom:14px;flex-wrap:wrap}
.pgc-banner>span:last-of-type{flex:1;min-width:220px}
/* entity scope tiles (All entities + one per entity) */
.pgc-scope{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 14px}
.pgc-tile{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:#fff;border-radius:12px;padding:9px 14px;cursor:pointer;transition:border-color .14s,box-shadow .14s,transform .14s;font:inherit;text-align:left;min-width:225px;flex:1 1 225px;max-width:330px}
.pgc-tile:hover{border-color:var(--brand-2);transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.pgc-tile.on{border-color:var(--brand);box-shadow:0 0 0 2.5px rgba(191,85,15,.16)}
.pgc-tile-flag{font-size:18px;line-height:1;flex:none}
.pgc-tile-main{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.pgc-tile-name{font-weight:700;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pgc-tile-sub{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pgc-tile-bad{color:var(--red);font-weight:700}
.pgc-tile-pct{font-family:var(--fh);font-weight:700;font-size:1.02rem;color:var(--copper);flex:none}
.pgc-tile .pbar{flex:none;width:64px}
/* per-entity status badges on shared rows/cards */
.pgc-ents{display:inline-flex;gap:4px;flex:none;flex-wrap:wrap;align-items:center}
.pgc-ent{display:inline-flex;align-items:center;gap:4px;font-size:9.5px;font-weight:800;letter-spacing:.03em;border:1px solid var(--line-2);border-radius:999px;padding:2px 8px;background:#fff;color:var(--muted);white-space:nowrap}
.pgc-ent i{width:7px;height:7px;border-radius:50%;background:var(--grey);flex:none}
.pgc-ent.s-prog i{background:var(--prog)}
.pgc-ent.s-done i{background:var(--done)}
.pgc-ent.s-block i{background:var(--block)}
.pgc-ent.s-hold i{background:var(--hold)}
.pgc-ent.s-na i{background:var(--faint)}
.pgc-ent.s-done{color:var(--done);border-color:rgba(79,143,63,.45);background:rgba(79,143,63,.07)}
.pgc-ent.s-prog{color:var(--prog);border-color:rgba(37,99,235,.4);background:rgba(37,99,235,.06)}
.pgc-ent.s-block{color:var(--block);border-color:rgba(207,60,46,.45);background:rgba(207,60,46,.07)}
.pgc-ent.s-hold{color:var(--hold);border-color:rgba(154,108,192,.45)}
/* plain-language explainer under the lens tiles */
.pgc-lens-note{font-size:12px;color:var(--muted);line-height:1.55;margin:-4px 2px 14px;max-width:980px}
/* "Requires review" governance panel */
.pgc-review{border:1px solid rgba(224,146,31,.45);background:rgba(224,146,31,.09);border-radius:var(--radius);margin-bottom:12px}
.pgc-review summary{cursor:pointer;list-style:none;padding:10px 14px;font-weight:700;font-size:12.5px;color:#9a6a10;display:flex;align-items:center;gap:8px;user-select:none}
.pgc-review summary::-webkit-details-marker{display:none}
.pgc-review[open] summary{border-bottom:1px dashed rgba(224,146,31,.35)}
.pgc-review ul{margin:0;padding:10px 18px 13px 32px;list-style:disc}
.pgc-review li{font-size:12.5px;color:#7c5a14;margin:5px 0;line-height:1.55}
/* per-entity status grid in the editor */
.pgc-est{display:grid;grid-template-columns:repeat(auto-fit,minmax(225px,1fr));gap:8px}
.pgc-est-row{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:10px;padding:7px 10px;background:#fff;transition:opacity .14s}
.pgc-est-row.off{opacity:.45}
.pgc-est-row.off .co-status{pointer-events:none}
.pgc-est-ent{display:flex;align-items:center;gap:7px;flex:1;min-width:0;cursor:pointer;font-size:12.5px}
.pgc-est-ent input{width:auto;margin:0}
.pgc-est-row .co-status{max-width:130px}
/* ▲▼ reorder buttons + TBC owner chip (shared with the entity cutover view) */
.co-updown{flex:none;display:flex;flex-direction:column;gap:2px;opacity:0;transition:opacity .12s}
.co-row:hover .co-updown{opacity:1}
.co-ud{border:1px solid var(--line);background:#fff;color:var(--muted);width:18px;height:14px;line-height:1;font-size:7.5px;border-radius:4px;cursor:pointer;display:grid;place-items:center;padding:0}
.co-ud:hover{color:var(--brand);border-color:var(--brand)}
.co-ud:disabled{opacity:.3;cursor:default}
.co-chip-tbc{border-style:dashed;color:var(--faint);font-style:italic}

/* ============================================================
   Global UX polish — one joined-up platform feel
   ============================================================ */
/* Friendlier empty states */
.empty{padding:42px 24px;text-align:center;color:var(--faint);background:var(--card);border:1px dashed var(--line-2);border-radius:var(--radius);font-size:13.5px;line-height:1.6}
.card .empty,.tbl-wrap .empty{border:none;background:transparent}
/* Warm, slim scrollbars everywhere */
*{scrollbar-width:thin;scrollbar-color:#d6c9b4 transparent}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:#dccdb8;border-radius:999px;border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:#c6b095;border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-corner{background:transparent}
/* Modal entrance */
@keyframes vneModalIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
@keyframes vneFadeIn{from{opacity:0}to{opacity:1}}
.modal-card{animation:vneModalIn .18s ease}
.modal-backdrop{animation:vneFadeIn .18s ease}
/* Buttons press feedback */
.btn:active:not(:disabled){transform:translateY(0) scale(.985)}
/* Card hover lift only where the card is interactive (role=button or onclick'd .kpi-click etc. already covered) */
.card[role="button"]{cursor:pointer}
.card[role="button"]:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
@media(max-width:760px){
  .pgc-tile{min-width:100%;max-width:none}
  .pgc-est{grid-template-columns:1fr}
}

/* ============================================================
   Detailed Plan — workstream jump strip, counted filter chips,
   tinted status pills, due-date intelligence, band health
   ============================================================ */
.ws-strip{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.ws-chip{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line);border-left:4px solid var(--brand-2);background:var(--card);border-radius:10px;padding:6px 12px;font-size:11.5px;color:var(--muted);cursor:pointer;font:inherit;text-align:left;transition:border-color .14s,box-shadow .14s,transform .14s}
.ws-chip:hover{border-color:var(--brand);transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.ws-chip b{color:var(--ink);font-size:12px;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-chip .pbar{width:54px;min-width:54px}
.ws-chip-pct{font-weight:700;color:var(--copper)}
.ws-chip-bad{color:var(--red);font-weight:700;font-size:10.5px}
/* filter chips: status dot + live count */
.chip.chip-dot{display:inline-flex;align-items:center;gap:6px}
.chip.chip-dot i{width:7px;height:7px;border-radius:50%;flex:none}
.chip .chip-n{font-size:10px;color:var(--faint);font-weight:700;background:var(--bg);border-radius:999px;padding:0 6px;line-height:1.6}
.chip.active .chip-n{background:rgba(255,255,255,.18);color:#fff}
/* workstream / stage band health summary */
.p-gstat{margin-left:9px;font-size:10.5px;color:var(--muted);font-weight:500;white-space:nowrap}
.p-gstat .bad{color:var(--red);font-weight:700}
/* tinted status pill select inside plan rows (reuses .co-status tints) */
.p-row .co-status.p-status{max-width:128px;width:100%;font-size:11px;padding-top:4px;padding-bottom:4px}
/* due-date intelligence on the Finish cell */
.cell-input.p-due-over{border-color:rgba(207,60,46,.55);background:rgba(207,60,46,.07);color:#a8281c;font-weight:600}
.cell-input.p-due-soon{border-color:rgba(224,146,31,.6);background:rgba(224,146,31,.09)}
/* "My tasks" toggle — copper-accented when on; clear-filters + divider */
.chip.chip-mine{display:inline-flex;align-items:center;gap:4px;border-color:var(--brand-2);color:var(--brand)}
.chip.chip-mine.active{background:var(--grad);border-color:transparent;color:#fff}
.chip.chip-mine.active .chip-n{background:rgba(255,255,255,.22);color:#fff}
.chip.chip-clear{border-style:dashed;color:var(--muted)}
.chip.chip-clear:hover{border-color:var(--red);color:var(--red)}
.toolbar .tb-div{width:1px;align-self:stretch;min-height:22px;background:var(--line-2);margin:0 4px}
/* From / To date-window filter */
.plan-daterange{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:2px 8px;background:#fff}
.plan-daterange .plan-dr-lbl{font-size:11px;color:var(--muted);font-weight:600}
.plan-daterange input[type=date]{border:none;padding:4px 2px;font-size:12.5px;background:transparent;box-shadow:none}
.plan-daterange input[type=date]:focus{outline:none;box-shadow:none}

/* ============================================================
   Administration: three-column people directory + Power BI page
   ============================================================ */
.dir-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-items:start}
.dir-col{background:#fbfaf7;border:1px solid var(--line);border-radius:12px;padding:12px;min-width:0}
.dir-col-head{display:flex;align-items:flex-start;gap:8px;margin-bottom:10px}
.dir-col-title{font-weight:700;font-size:13.5px;color:var(--ink)}
.dir-col-sub{font-size:11px;color:var(--muted);margin-top:1px;line-height:1.4}
.dir-col-count{margin-left:auto;font-size:11px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:999px;padding:1px 8px;flex:none}
.dir-col-list{display:flex;flex-direction:column;gap:10px}
.dir-col .person-card{background:#fff}
.kind-badge.k-global{background:rgba(37,99,235,.12);color:#2563eb}
@media(max-width:1100px){.dir-cols{grid-template-columns:1fr}}
/* Power BI connectivity */
.pbi-url{font-family:var(--fm);font-size:11px;word-break:break-all;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:6px 9px;flex:1;min-width:0;white-space:normal}
.pbi-row{display:flex;align-items:center;gap:8px;min-width:280px}
.pbi-token{font-family:var(--fm);font-size:12px;background:var(--bg);border:1px dashed var(--line-2);border-radius:8px;padding:8px 10px;word-break:break-all}
.pbi-steps{margin:0;padding-left:20px}
.pbi-steps li{margin:7px 0;font-size:13px;line-height:1.55}

/* KPI drill-down: the tile whose quick-filter is active */
.kpi.kpi-on{outline:2.5px solid var(--brand);outline-offset:1px;box-shadow:0 8px 20px -10px rgba(191,85,15,.4)}
.kpi.kpi-on::after{content:"\2715";opacity:1;color:var(--brand);font-weight:700}

/* Cutover Excel import — preview modal */
.imp-box{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 13px}
.imp-line{font-size:12.5px;line-height:1.55;margin:3px 0}

/* ============================================================
   Activity Logs (admin)
   ============================================================ */
table.logs-grid{white-space:normal}
table.logs-grid td{vertical-align:top}
tr.logs-day td{background:#f3ece0;font-weight:700;font-family:var(--fh);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:7px 12px}
tr.logs-row.logs-fail td{background:rgba(207,60,46,.05)}
.logs-change{font-size:12.5px;color:var(--ink);max-width:420px;word-break:break-word}
.logs-change .mono{font-variant-numeric:tabular-nums}
.logs-edited{font-size:10.5px;color:var(--brand);font-style:italic;white-space:nowrap}
.logs-acts{white-space:nowrap;text-align:right}
.logs-acts .icon-btn{width:24px;height:24px;font-size:12px}

/* ---- Topbar notification bell popup (breakdown of items assigned to / awaiting me) ---- */
.notif-wrap{position:relative;display:inline-flex}
.notif-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:320px;width:344px;max-width:92vw;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px;z-index:50}
.notif-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--ink);padding:9px 10px 8px;border-bottom:1px solid var(--line);margin-bottom:4px}
.notif-head-text{min-width:0;overflow:hidden;text-overflow:ellipsis}
.notif-mark{flex:none;border:0;background:none;cursor:pointer;font:inherit;font-size:11.5px;font-weight:600;color:var(--brand);padding:2px 4px;border-radius:6px;transition:background .12s}
.notif-mark:hover{background:var(--bg);text-decoration:underline}
.notif-list{max-height:min(58vh,360px);overflow:auto}
.notif-row{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:9px 10px;border-radius:9px;cursor:pointer;text-align:left;font:inherit;transition:background .12s}
.notif-row:hover{background:var(--bg)}
.notif-row .notif-ico{flex:none;font-size:15px;width:20px;text-align:center}
.notif-row .notif-label{flex:1;min-width:0;font-size:13px;color:var(--ink)}
.notif-row.notif-zero .notif-label{color:var(--muted)}
.notif-count{flex:none;min-width:22px;text-align:center;font-size:11.5px;font-weight:700;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:1px 8px}
.notif-count.on{background:var(--brand);border-color:var(--brand);color:#fff}
.notif-foot{display:block;width:100%;border:0;background:none;border-top:1px solid var(--line);margin-top:4px;padding:9px 10px;border-radius:0 0 8px 8px;cursor:pointer;font:inherit;font-size:12.5px;font-weight:600;color:var(--brand);text-align:center;transition:background .12s}
.notif-foot:hover{background:var(--bg)}
/* Feed rows (clickable notification centre) */
.notif-row.notif-feed{align-items:flex-start;gap:9px;padding:8px 10px}
.notif-row.notif-feed .notif-ico{font-size:15px;margin-top:1px}
.notif-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.notif-title{font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.notif-sub{font-size:11.5px;color:var(--muted);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.notif-row.notif-new{background:rgba(226,125,36,.07)}
.notif-row.notif-new:hover{background:rgba(226,125,36,.13)}
.notif-udot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--brand);margin-top:5px}
.notif-empty{padding:14px 12px;font-size:12.5px;color:var(--muted);text-align:center}
.notif-more{padding:7px 10px 2px;font-size:11px;color:var(--muted);text-align:center}

/* Activity Logs — per-user breakdown panel (toggled by the "Active users" tile) */
.logs-users{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:11px 14px;margin-bottom:14px}
.logs-users-lbl{font-size:12px;color:var(--muted);font-weight:600;margin-right:2px}

/* ============================================================
   Jira Connectivity (admin)
   ============================================================ */
.jira-status{font-size:11.5px;font-weight:700;border-radius:999px;padding:3px 11px;border:1px solid var(--line-2)}
.jira-status.ok{background:rgba(79,143,63,.12);color:var(--done);border-color:rgba(79,143,63,.4)}
.jira-status.off{background:var(--bg);color:var(--muted)}
.jira-map{display:flex;flex-direction:column;gap:8px}
.jira-map-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:#fbfaf7}
.jira-map-kind{flex:1;min-width:150px;font-weight:600;font-size:13px}
.jira-sync{padding:14px 16px}
.jira-sync-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:4px}
.jira-sync-head b{font-family:var(--fh);font-size:14px}
.jira-sync-meta{font-size:11.5px;color:var(--muted)}
.jira-linklist{display:flex;flex-direction:column;gap:5px;margin-top:6px}
.jira-link{display:flex;align-items:center;gap:8px;font-size:12px;border-top:1px solid var(--line);padding-top:5px}
.jira-key{font-weight:700;color:var(--brand);text-decoration:none;white-space:nowrap}
.jira-key:hover{text-decoration:underline}
.jira-link-sum{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}

/* ---------------- Per-page Guide (help.js) ---------------- */
.topbar-help{border:1px solid var(--line-2);background:#fff;color:var(--brand);font:inherit;font-size:12px;font-weight:600;border-radius:999px;padding:5px 12px;cursor:pointer;white-space:nowrap;transition:border-color .12s,background .12s}
.topbar-help:hover{border-color:var(--brand);background:#fdf2e4}
.help-doc{max-width:720px}
.help-doc .help-kicker{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}
.help-doc h2{font-size:1.3rem;margin:3px 0 6px}
.help-doc .help-intro{font-size:13.5px;line-height:1.6;color:var(--ink);margin-bottom:6px}
.help-doc .help-h{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin:18px 0 8px}
.help-see{display:flex;flex-direction:column;gap:8px}
.help-see-row{display:grid;grid-template-columns:160px 1fr;gap:12px;font-size:13px;line-height:1.5;border-left:3px solid var(--line-2);padding:2px 0 2px 12px}
.help-see-row b{color:var(--copper)}
.help-btns{display:flex;flex-direction:column;gap:6px}
.help-btn-row{display:grid;grid-template-columns:200px 1fr;gap:12px;font-size:12.5px;line-height:1.5;padding:5px 0;border-bottom:1px solid var(--line)}
.help-btn-row:last-child{border-bottom:none}
.help-btn-k{font-weight:700;color:var(--ink)}
.help-btn-d{color:var(--muted)}
.help-tips{margin:0;padding-left:20px}
.help-tips li{font-size:13px;line-height:1.6;margin:5px 0}
.help-doc .help-plain{font-size:13.5px;line-height:1.66;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:4px 0}
.help-doc .help-plain p{margin:0 0 9px}
.help-doc .help-plain p:last-child{margin:0}
.help-ex{display:flex;flex-direction:column;gap:10px}
.help-ex-row{border-left:3px solid var(--copper);background:var(--bg);border-radius:0 9px 9px 0;padding:9px 13px}
.help-ex-t{font-weight:700;color:var(--ink);font-size:13px;margin-bottom:3px}
.help-ex-b{font-size:12.5px;line-height:1.6;color:var(--muted)}
@media(max-width:640px){.help-see-row,.help-btn-row{grid-template-columns:1fr;gap:2px}.help-see-row b,.help-btn-k{color:var(--copper)}}

/* ---------------- Defect / Bug Log — P1–P4 priority board ---------------- */
/* ---------- Defect / Bug board ---------- */
/* phase switcher */
.def-tabs{display:flex;gap:10px;margin:6px 0 12px;flex-wrap:wrap}
.def-tab{display:flex;align-items:center;gap:11px;padding:10px 14px;border:1px solid var(--line);border-radius:13px;background:#fff;cursor:pointer;min-width:230px;text-align:left;transition:border-color .12s,box-shadow .12s,background .12s,transform .12s}
.def-tab:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.def-tab.active{box-shadow:var(--shadow-md)}
.def-tab-pre.active{background:linear-gradient(180deg,#eef4ff,#fff);border-color:#9bc0ff}
.def-tab-post.active{background:linear-gradient(180deg,#fbf0e6,#fff);border-color:var(--brand-2)}
.def-tab-ico{font-size:20px;line-height:1;flex:none}
.def-tab-txt{min-width:0;flex:1}
.def-tab-name{display:block;font-weight:800;font-size:13.5px;color:var(--ink)}
.def-tab-sub{display:block;font-size:11px;color:var(--muted)}
.def-tab-n{flex:none;font-weight:800;font-size:16px;color:var(--muted);background:var(--bg);border-radius:9px;min-width:32px;text-align:center;padding:3px 9px}
.def-tab-pre.active .def-tab-n{background:#2563eb;color:#fff}
.def-tab-post.active .def-tab-n{background:var(--brand);color:#fff}
/* severity health strip */
.def-sevstrip{display:flex;flex-wrap:wrap;gap:8px;margin:0 1px 12px}
.def-sevpill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px 11px}
.def-sevpill i{width:8px;height:8px;border-radius:50%;background:var(--faint);flex:none}
.def-sevpill.sev-critical i{background:#dc2626}
.def-sevpill.sev-high i{background:#e0721c}
.def-sevpill.sev-medium i{background:#cf8e0a}
.def-sevpill.sev-low i{background:#4f8f3f}
.def-sevpill-closed{color:var(--muted)}
/* board */
.def-board-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.def-board{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:14px;min-width:800px}
.def-col{background:#faf7f1;border:1px solid var(--line);border-top:3px solid var(--line);border-radius:14px;display:flex;flex-direction:column;min-height:150px;transition:background .12s,outline-color .12s}
.def-col-p1{border-top-color:#dc2626}
.def-col-p2{border-top-color:#e0721c}
.def-col-p3{border-top-color:#cf8e0a}
.def-col-p4{border-top-color:#4f8f3f}
.def-col.drop-hot{background:#fff6ec;outline:2px dashed var(--brand);outline-offset:-3px}
.def-col-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}
.def-col-p{font-weight:800;font-size:11.5px;border-radius:7px;padding:2px 9px;color:#fff;flex:none}
.def-col-desc{font-size:11px;color:var(--muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.def-col-n{font-size:13px;font-weight:800;background:#fff;border:1px solid var(--line);border-radius:999px;padding:1px 10px;color:var(--ink);flex:none}
.def-col-body{display:flex;flex-direction:column;gap:9px;padding:10px;flex:1;max-height:62vh;overflow-y:auto}
.def-col-empty{font-size:12px;color:var(--faint);font-style:italic;text-align:center;padding:16px 6px;border:1px dashed var(--line);border-radius:10px}
/* card */
.def-cardb{background:#fff;border:1px solid var(--line);border-left:3px solid var(--line);border-radius:11px;padding:10px 11px 9px;cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color .12s,box-shadow .12s,transform .12s,opacity .12s}
.def-cardb.p-p1{border-left-color:#dc2626}
.def-cardb.p-p2{border-left-color:#e0721c}
.def-cardb.p-p3{border-left-color:#cf8e0a}
.def-cardb.p-p4{border-left-color:#4f8f3f}
.def-cardb:hover{border-color:var(--brand-2);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.def-cardb:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.def-cardb.dragging{opacity:.45}
.def-cardb.crit{box-shadow:var(--shadow-sm),0 0 0 1px rgba(220,38,38,.22)}
.def-cardb-top{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:6px}
.def-cardb-top .rec-id{font-size:10.5px;color:var(--muted)}
.def-cardb-badges{display:inline-flex;gap:5px;align-items:center;flex-wrap:wrap}
.def-cardb-title{font-size:13px;font-weight:600;line-height:1.35;color:var(--ink);margin-bottom:9px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.def-cardb-foot{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:11px;color:var(--muted)}
.def-cardb-owner{display:inline-flex;align-items:center;gap:5px;font-weight:500;color:var(--ink);min-width:0}
.def-cardb-owner>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:96px}
.def-av{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--brand);color:#fff;font-size:9.5px;font-weight:700;flex:none}
.def-av-none{background:var(--line);color:var(--muted)}
.def-cardb-due.overdue{color:var(--red);font-weight:700}
.def-cardb-env{margin-left:auto;border:1px solid var(--line);border-radius:6px;padding:0 6px;background:var(--bg);font-size:10px}

/* ===== Feature Wish List ===== */
.wl-kpis{flex-wrap:wrap}
.wl-toolbar{flex-wrap:wrap;gap:8px}
.wl-viewtoggle{display:inline-flex;gap:4px;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:3px}
.wl-tg{border:0;background:transparent;border-radius:7px;padding:5px 10px;font:inherit;font-size:12.5px;color:var(--muted);cursor:pointer;white-space:nowrap}
.wl-tg.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 3px -1px rgba(0,0,0,.18)}
.wl-bodyhost{margin-top:8px}
/* board */
.wl-board{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 12px;align-items:flex-start}
.wl-col{flex:0 0 250px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:8px;border-top:3px solid var(--wl-col,#9a8f7d)}
.wl-col.wl-drop{outline:2px dashed var(--wl-col,#b8530f);outline-offset:1px;background:#fff}
.wl-col-head{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:2px 4px}
.wl-col-title{display:flex;align-items:center;gap:6px;font-weight:700;font-size:12.5px;color:var(--ink)}
.wl-col-dot{width:9px;height:9px;border-radius:50%;background:var(--wl-col,#9a8f7d);flex:none}
.wl-col-count{font-size:12px;font-weight:700;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:999px;min-width:22px;text-align:center;padding:0 6px}
.wl-col-sub{font-size:10.5px;padding:0 4px 6px}
.wl-col-body{display:flex;flex-direction:column;gap:8px;min-height:24px}
.wl-col-empty{text-align:center;font-size:12px;padding:8px 0}
.wl-card{background:#fff;border:1px solid var(--line-2);border-radius:10px;padding:9px 10px;cursor:pointer;transition:box-shadow .12s,transform .05s;box-shadow:0 1px 2px -1px rgba(0,0,0,.12)}
.wl-card:hover{box-shadow:0 4px 12px -6px rgba(0,0,0,.3)}
.wl-card.dragging{opacity:.5}
.wl-card.wl-overdue{border-color:var(--red);box-shadow:0 0 0 1px var(--red) inset}
.wl-card-top{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:4px}
.wl-id{font-size:10.5px;color:var(--copper)}
.wl-card-title{font-size:13px;font-weight:600;color:var(--ink);line-height:1.3;margin-bottom:6px}
.wl-card-meta{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted)}
.wl-cat{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-size:10px}
.wl-spacer{flex:1}
.wl-votes{font-weight:700;color:var(--copper)}
.wl-card-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:6px;font-size:10.5px}
.wl-grid-title{color:var(--ink);text-decoration:none}
.wl-grid-title:hover{color:var(--copper);text-decoration:underline}
/* insights */
.wl-bar{display:grid;grid-template-columns:90px 1fr 36px;align-items:center;gap:10px;margin:6px 0}
.wl-bar-l{font-size:12px;color:var(--ink)}
.wl-bar-track{height:14px;background:var(--bg);border:1px solid var(--line);border-radius:7px;overflow:hidden}
.wl-barfill{display:block;height:100%;background:var(--brand);border-radius:7px}
.wl-bar-v{text-align:right;font-size:12px;color:var(--muted)}
.wl-metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.wl-metric{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px}
.wl-metric.warn{border-color:var(--red)}
.wl-metric-v{font-size:22px;font-weight:700;color:var(--ink)}
.wl-metric.warn .wl-metric-v{color:var(--red)}
.wl-metric-l{font-size:11px;margin-top:3px}
.wl-mini{display:flex;flex-direction:column;gap:2px}
.wl-mini-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin:4px 0}
.wl-mini-row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:6px 4px;border-bottom:1px solid var(--line);cursor:pointer;font-size:12.5px}
.wl-mini-row:hover{background:var(--bg)}
.wl-mini-id{font-size:10.5px;color:var(--copper)}
.wl-mini-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wl-mini-v{font-weight:700;color:var(--copper);font-size:12px}
/* editor */
.wl-editor{max-width:760px}
.wl-ed-head{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.wl-ed-head h2{margin:0;font-size:1.2rem}
.wl-group{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0;background:var(--bg)}
.wl-group-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--copper);margin-bottom:8px}
.wl-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
.wl-fld{display:flex;flex-direction:column;gap:4px;min-width:0}
.wl-fld.full{grid-column:1/-1}
.wl-fld>label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
.wl-ed-actions{display:flex;gap:8px;margin-top:12px}
.wl-dup{margin:-4px 0 6px}
.wl-dup-box{background:#fdf3e7;border:1px solid #f0cfa6;border-radius:10px;padding:8px 12px}
.wl-dup-h{font-size:12px;font-weight:700;color:#9a4f10;margin-bottom:4px}
.wl-dup-row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:4px 0;font-size:12.5px;cursor:pointer}
.wl-dup-row:hover{color:var(--copper)}
.wl-atts{display:flex;flex-direction:column;gap:5px;margin-bottom:8px}
.wl-att-row{display:flex;align-items:center;gap:8px;font-size:12.5px}
.wl-att{color:var(--ink)}
.wl-collab{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.wl-react{border:1px solid var(--line-2);background:#fff;border-radius:999px;padding:6px 14px;font:inherit;font-size:12.5px;cursor:pointer;color:var(--ink)}
.wl-react:hover{border-color:var(--copper)}
.wl-react.on{background:#fbf3ea;border-color:var(--copper);color:var(--copper);font-weight:600}
.wl-comments{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.wl-cmt{background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 10px}
.wl-cmt-h{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;margin-bottom:3px}
.wl-cmt-h .muted{font-size:11px}
.wl-cmt-b{font-size:13px;color:var(--ink);line-height:1.45;white-space:pre-wrap}
.wl-cmt-add{display:flex;gap:8px}
.wl-cmt-add .fld{flex:1}
.wl-history{margin-top:8px}
.wl-history summary{cursor:pointer;font-size:12.5px;font-weight:600;color:var(--muted)}
.wl-hist-box{margin-top:8px}
.wl-hist-sub{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;margin-bottom:3px}
.wl-hist-row{display:flex;justify-content:space-between;gap:10px;font-size:12px;padding:3px 0;border-bottom:1px solid var(--line)}
@media(max-width:640px){.wl-form{grid-template-columns:1fr}.wl-metrics{grid-template-columns:1fr}}

/* ============================================================
   PWA & MOBILE POLISH
   Installable app chrome, a thumb-reach bottom tab bar, a slide-in
   nav drawer with backdrop, decluttered phone topbar, bottom-sheet
   modals, larger touch targets and safe-area awareness.
   Placed last so these rules supersede earlier desktop defaults.
   ============================================================ */

/* ---- Install affordance (sidebar footer) ---- */
.install-btn{border-color:var(--brand);color:var(--brand)}
.install-btn:hover{background:#fdf2e4}

/* ---- Bottom tab bar + drawer backdrop: hidden on desktop ---- */
.mobile-tabbar{display:none}
.sidebar-backdrop{display:none;position:fixed;inset:0;z-index:64;background:rgba(43,38,32,.46);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}
.topbar-more{display:none}
.topbar-util{display:contents}   /* desktop: utilities flow inline exactly as before */

/* ---- Tab bar visuals (shown only at the mobile breakpoint, below) ---- */
.tab-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:none;cursor:pointer;color:var(--muted);font:inherit;padding:7px 2px 4px;border-radius:12px;min-height:54px;position:relative;-webkit-tap-highlight-color:transparent}
.tab-ico{font-size:19px;line-height:1;transition:transform .14s ease}
.tab-lbl{font-size:10.5px;font-weight:600;letter-spacing:.01em;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tab-btn.active{color:var(--brand)}
.tab-btn.active .tab-ico{transform:translateY(-1px)}
.tab-btn.active::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:26px;height:3px;border-radius:0 0 3px 3px;background:var(--grad)}
.tab-btn:active{background:rgba(191,85,15,.07)}
.tab-dot{position:absolute;top:5px;left:calc(50% + 7px);min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--red);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 0 0 2px #fff}

/* ============================================================
   ≤900px — tablet & phone: drawer nav + bottom tab bar live here
   ============================================================ */
@media(max-width:900px){
  .sidebar{z-index:66;overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:18px 0 48px -28px rgba(43,38,32,.55)}
  .sidebar-backdrop:not([hidden]){display:block}
  body.drawer-open{overflow:hidden}

  /* Bottom tab bar */
  .mobile-tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;background:rgba(255,255,255,.97);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-top:1px solid var(--line);padding:5px 4px calc(5px + env(safe-area-inset-bottom));box-shadow:0 -8px 24px -16px rgba(43,38,32,.5)}

  /* Keep scrolling content clear of the fixed tab bar */
  .view{padding-bottom:calc(72px + env(safe-area-inset-bottom))}

  /* Comfortable nav targets inside the drawer */
  .nav-btn{padding:11px 12px}
  .nav-group-title{padding:9px 10px}

  /* Safe-area aware top chrome (status-bar overlap when installed) */
  .topbar{padding-top:calc(12px + env(safe-area-inset-top))}
}

/* ============================================================
   ≤640px — phone: declutter topbar, bottom-sheet modals, touch sizing
   ============================================================ */
@media(max-width:640px){
  /* Topbar: one clean row — menu · title · go-live · bell · more */
  .topbar{gap:8px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;align-items:center;flex-wrap:wrap}
  .topbar-title{flex:1 1 120px;min-width:0}
  .topbar-title h2{font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .view-sub{display:none}
  .online-wrap{display:none}            /* presence is non-essential on a phone; the bell stays */
  .topbar-help{padding:5px 9px;font-size:11px}
  .topbar-tools{margin-left:auto;gap:8px;flex-wrap:nowrap}

  /* "⋯" reveals the utility cluster as an anchored sheet */
  .topbar-more{display:inline-flex;align-items:center;justify-content:center;flex:none;width:38px;height:38px;padding:0;border:1px solid var(--line-2);background:#fff;border-radius:10px;font-size:20px;line-height:1;color:var(--ink);cursor:pointer}
  .topbar-more:hover{border-color:var(--brand);color:var(--brand)}
  .topbar-util{display:none;position:absolute;top:calc(100% + 6px);right:8px;left:auto;flex-direction:column;align-items:stretch;gap:11px;width:min(300px,92vw);background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:13px;z-index:50}
  .topbar-tools.tools-open .topbar-util{display:flex}
  .topbar-util>*{width:100%}
  .topbar-util .tool.status-date{flex-direction:column;align-items:flex-start;gap:3px}
  .topbar-util .tool.status-date input{width:100%}
  .topbar-util .search-wrap,.topbar-util .search-wrap.search-field{flex:none;width:100%;display:flex}
  .topbar-util .search,.topbar-util .search-wrap.search-field .search{width:100%}
  .topbar-util .export-wrap{width:100%}
  .topbar-util .export-wrap>.btn,.topbar-util #btn-import,.topbar-util #btn-share{width:100%;justify-content:center}
  .topbar-util .search-results{right:0;width:min(440px,86vw)}

  /* Tighter view gutters for small screens */
  .view{padding:16px 14px calc(76px + env(safe-area-inset-bottom))}

  /* Bottom-sheet modals — slide up from the bottom, full width.
     The sheet is sized to the DYNAMIC viewport (dvh) and the modal layer is
     pinned to it, so on mobile Safari the sheet's top never hides behind the
     address bar. The header (grab handle + close ✕) does NOT scroll — only the
     body scrolls — so the close button is always reachable. */
  .modal{place-items:end stretch;height:100vh;height:100dvh}
  .modal-card{
    width:100%;max-width:100%;
    max-height:90vh;max-height:90dvh;     /* dvh keeps the top on-screen under the URL bar */
    display:flex;flex-direction:column;overflow:hidden;
    border-radius:18px 18px 0 0;padding:0;
    animation:vneSheetIn .26s cubic-bezier(.32,.72,0,1)
  }
  /* Grab handle pinned to the sheet top (over the non-scrolling header zone) */
  .modal-card::before{content:"";position:absolute;top:8px;left:50%;transform:translateX(-50%);width:40px;height:4px;border-radius:999px;background:var(--line-2);z-index:5}
  /* Close button floats over the fixed header zone and never scrolls away */
  .modal-x{position:absolute;top:10px;right:12px;z-index:6;background:#fff;box-shadow:0 0 0 6px #fff}
  /* Only the body scrolls; its top padding clears the handle + close button */
  #modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:26px 16px calc(18px + env(safe-area-inset-bottom))}
  .modal-actions{flex-direction:column-reverse;gap:8px}
  .modal-actions .btn{width:100%;justify-content:center}

  /* Touch sizing — comfortable controls; 16px form inputs stop iOS zoom-on-focus */
  .btn{min-height:42px}
  .field input,.field select,.field textarea,.gate-field input{min-height:46px;font-size:16px}
  .foot-btn{min-height:44px}

  /* KPI cards: two-up reads better than cramped auto-fit on a phone */
  .kpi-row{grid-template-columns:repeat(2,1fr);gap:10px}
  .kpi .v{font-size:1.6rem}
  .kpi{padding:13px 14px}
}

@keyframes vneSheetIn{from{transform:translateY(100%)}to{transform:none}}

/* ============================================================
   Notification preferences modal (js/app.js openNotifPrefs)
   ============================================================ */
.np-modal{max-width:520px}
.np-modal h3{font-family:var(--fh);margin:0 0 2px}
.np-sub{font-family:var(--fh);font-size:13px;font-weight:700;color:var(--copper);margin:18px 0 6px;text-transform:uppercase;letter-spacing:.04em}
.np-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:var(--card);margin-bottom:8px}
.np-row-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.np-row-main b{font-size:13.5px;color:var(--ink)}
.np-row-sub{font-size:11.5px;color:var(--muted)}
.np-row select.fld{max-width:200px}
.np-cats{display:flex;flex-direction:column;gap:7px}
.np-cat{display:flex;align-items:flex-start;gap:11px;padding:10px 13px;border:1px solid var(--line);border-radius:11px;background:var(--card);cursor:pointer;transition:border-color .12s,background .12s}
.np-cat:hover{border-color:var(--line-2);background:#fdfaf5}
.np-cat input[type=checkbox]{margin-top:3px;width:17px;height:17px;accent-color:var(--brand);flex:none;cursor:pointer}
.np-cat-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.np-cat-main b{font-size:13.5px;color:var(--ink)}
.np-cat-sub{font-size:11.5px;color:var(--muted);line-height:1.4}
/* Switch-style checkbox for the channel rows */
.np-switch input[type=checkbox]{width:18px;height:18px;accent-color:var(--brand);cursor:pointer}

/* ============================================================
   Feature set: forecasting · 2FA · email deliverability
   ============================================================ */
/* Forecast view */
.fc-outlook{margin-bottom:4px}
.fc-narr{font-size:14px;line-height:1.6;color:var(--ink)}
.fc-verdict{display:flex;gap:8px;align-items:flex-start;padding:11px 14px;border-radius:11px;border:1px solid var(--line);font-size:13.5px;line-height:1.5;margin:2px 0}
.fc-verdict b{white-space:nowrap}
.fc-verdict.fc-ok{background:#e9f2e2;border-color:#bcd6aa;color:#2f6f23}
.fc-verdict.fc-warn{background:#fdf3da;border-color:#eed398;color:#8a5a12}
.fc-verdict.fc-bad{background:#fbe5e1;border-color:#efb0a6;color:#a3271a}
.fc-verdict.fc-info{background:#e8effc;border-color:#b9cdf3;color:#27508f}
td.fc-ok-cell{color:#2f6f23;font-weight:600}
td.fc-bad-cell{color:var(--block);font-weight:600}

/* Two-factor (2FA) settings */
.mfa-status{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink)}
.mfa-badge{font-size:11.5px;font-weight:800;border-radius:999px;padding:3px 10px}
.mfa-badge.on{color:#2f6f23;background:#e9f2e2;border:1px solid #bcd6aa}
.mfa-badge.off{color:var(--muted);background:var(--nav-2);border:1px solid var(--line)}
.mfa-setup{max-width:520px}
.mfa-steps{margin:6px 0 10px;padding-left:20px;font-size:13px;color:var(--ink);line-height:1.6}
.mfa-qr-wrap{display:flex;justify-content:center;margin:4px 0 12px}
.mfa-qr{width:208px;max-width:64vw;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:0 1px 4px rgba(120,70,20,.12)}
.mfa-qr svg{display:block;width:100%;height:auto}
.mfa-secret{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0}
.mfa-secret code{font-family:var(--fm);font-size:15px;font-weight:700;letter-spacing:.08em;background:#fbf3ea;border:1px solid #eccba6;border-radius:8px;padding:8px 12px;color:var(--copper)}
.mfa-recovery{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin:4px 0}
.mfa-recovery code{font-family:var(--fm);font-size:13px;background:var(--nav-2);border:1px solid var(--line);border-radius:7px;padding:6px 10px;text-align:center;letter-spacing:.04em}

/* Email deliverability + suppression */
.deliv-list{display:flex;flex-direction:column;gap:4px;margin:4px 0 8px;max-height:240px;overflow-y:auto}
.deliv-row{display:flex;align-items:center;gap:10px;font-size:12.5px;padding:5px 2px;border-bottom:1px solid var(--line)}
.deliv-row:last-child{border-bottom:none}
.deliv-type{flex:none;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:2px 8px;background:var(--nav-2);color:var(--muted);border:1px solid var(--line)}
.deliv-type.deliv-sent{color:#27508f;background:#e8effc;border-color:#b9cdf3}
.deliv-type.deliv-delivery{color:#2f6f23;background:#e9f2e2;border-color:#bcd6aa}
.deliv-type.deliv-bounce,.deliv-type.deliv-complaint,.deliv-type.deliv-failed{color:#a3271a;background:#fbe5e1;border-color:#efb0a6}
.deliv-type.deliv-suppressed,.deliv-type.deliv-open,.deliv-type.deliv-click{color:#8a5a12;background:#fdf3da;border-color:#eed398}
@media(max-width:640px){.mfa-recovery{grid-template-columns:1fr}}

/* RAID mitigation actions (nested assigned-task table in the RAID editor) */
.raid-actions{margin:2px 0 6px}
.ra-grid{table-layout:fixed;width:100%}
.ra-grid th:nth-child(1){width:26%}
.ra-grid th:nth-child(2),.ra-grid th:nth-child(3){width:15%}
.ra-grid th:nth-child(4){width:12%}
.ra-grid th:nth-child(5){width:14%}
.ra-grid th:nth-child(6){width:13%}
.ra-grid th:nth-child(7){width:5%}
.ra-grid td{padding:4px 5px;vertical-align:middle;overflow:hidden}
.ra-grid .fld{width:100%;min-width:0;font-size:12px;padding:5px 6px}
.ra-grid .fld.ra-late{border-color:var(--red,#cf3c2e);color:#a3271a;font-weight:600}

/* "NEW" scope tag on recently added tasks (Detailed Plan / Kanban) */
.new-tag{display:inline-block;margin-left:7px;padding:1px 6px;border-radius:999px;font-size:9px;font-weight:800;letter-spacing:.06em;color:#8a5a12;background:#fdf3da;border:1px solid #eed398;vertical-align:1px}

/* Actual-hours locked chip (derived from dated time entries) */
.p-ah-lock{border:1px solid var(--line);background:#fbf7ef;border-radius:7px;padding:5px 7px;font-size:11.5px;color:var(--ink);cursor:pointer;white-space:nowrap}
.p-ah-lock:hover{border-color:var(--brand)}
/* Time Tracking section (task editor) */
/* Delay & overrun log (task editor) */
.dlog-form{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;background:var(--card-2,#faf7f1);border-radius:8px;padding:8px 10px;margin-top:8px}
.dlog-f{display:flex;flex-direction:column;gap:2px;min-width:0}
.dlog-l{font-size:10.5px;color:#8a8172}
.dlog-addwrap{flex:0 0 auto;display:flex;align-items:flex-end}
.dlog-grid td{vertical-align:top}
.tlog-sum{display:flex;flex-wrap:wrap;gap:10px;margin:2px 0 10px}
.tlog-chip{border:1px solid var(--line);background:#fbf7ef;border-radius:9px;padding:7px 11px;font-size:12px}
.tlog-chip b{display:block;font-size:14px;margin-top:1px}
.tlog-chip.tlog-over{border-color:#efb0a6;background:#fbe5e1;color:#a3271a}
.tlog-chip.tlog-under{border-color:#bcd6aa;background:#e9f2e2;color:#2f6f23}
.tlog-grid td{padding:4px 5px;vertical-align:middle}
.tlog-grid{table-layout:fixed;width:100%}
.tlog-grid th:nth-child(1){width:22%}
.tlog-grid th:nth-child(2){width:17%}
.tlog-grid th:nth-child(3){width:14%}
.tlog-grid th:nth-child(4){width:38%}
.tlog-grid th:nth-child(5){width:9%}
.tlog-grid .fld{width:100%;min-width:0;font-size:12px;padding:5px 6px}
.tlog-eq{font-size:11px;color:var(--muted);white-space:nowrap}
