:root {
  --bg:#0f1117; --surface:#1a1d27; --surface2:#22263a; --surface3:#2a2f47;
  --border:#2e3250; --accent:#4f7ef8; --accent2:#7c5cfc;
  --green:#22c55e; --yellow:#eab308; --red:#ef4444; --orange:#f97316; --purple:#a855f7;
  --text:#e2e8f0; --text2:#94a3b8; --radius:10px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}
.app{display:flex;height:100vh;overflow:hidden}

/* LOGIN */
.login-overlay{position:fixed;inset:0;background:var(--bg);z-index:9999;display:none;align-items:center;justify-content:center}
.login-overlay.open{display:flex}
.login-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:40px 36px;width:360px;display:flex;flex-direction:column;gap:18px;box-shadow:0 24px 64px rgba(0,0,0,.5)}
.login-logo{font-size:22px;font-weight:700;text-align:center;padding-bottom:4px}
.login-error{color:var(--red);font-size:13px;min-height:18px;text-align:center}
.login-signup-link{text-align:center;font-size:13px;color:var(--text2)}
.login-signup-link a{color:var(--accent);cursor:pointer;font-weight:600;text-decoration:none}
.login-signup-link a:hover{text-decoration:underline}

/* ── Signup Wizard ──────────────────────────────────────────────────────
   Only the .active step is ever laid out (display:none for the rest) —
   deliberately NOT the classic "row of N steps + translateX" carousel.
   That approach keeps every step simultaneously in flow and just relies on
   overflow:hidden + percentage math to clip the inactive ones, which is
   exactly what let steps bleed into each other. With display:none there is
   nothing to bleed: an inactive step occupies zero layout space, period. */
.signup-card{background:var(--surface);border:1px solid var(--border);border-radius:20px;width:440px;max-width:92vw;max-height:90vh;box-shadow:0 30px 70px rgba(0,0,0,.55),0 0 0 1px rgba(79,126,248,.06);display:flex;flex-direction:column;overflow:hidden}

.signup-progress{display:flex;gap:6px;padding:22px 28px 0;flex-shrink:0}
.signup-progress-seg{flex:1;height:4px;border-radius:4px;background:var(--surface3);overflow:hidden}
.signup-progress-seg i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:4px;transition:width .35s cubic-bezier(.4,0,.2,1)}
.signup-progress-seg.done i,.signup-progress-seg.active i{width:100%}

/* Scrolls as a unit if a step's content ever exceeds the viewport; the
   progress bar above stays pinned (flex-shrink:0). min-height:0 is required
   here — without it, flexbox lets this child overflow its column instead of
   shrinking+scrolling, a classic cross-browser flex bug (Safari enforces it
   strictly, which is likely why this looked fine in some browsers and not
   others before). */
.signup-viewport{flex:1 1 auto;min-height:0;overflow-y:auto}
.signup-track{display:block}

.signup-step{display:none;box-sizing:border-box;padding:28px 32px 32px;flex-direction:column;gap:14px}
.signup-step.active{display:flex;animation:signupStepIn .32s cubic-bezier(.16,1,.3,1)}
.signup-step.active.no-anim{animation:none}
@keyframes signupStepIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

.signup-step-icon{width:52px;height:52px;border-radius:50%;background:rgba(79,126,248,.12);border:1px solid rgba(79,126,248,.25);display:flex;align-items:center;justify-content:center;font-size:23px;line-height:1;flex-shrink:0;align-self:center}

.signup-hero{text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px;padding:10px 0 4px}
.signup-hero h1{font-size:21px;font-weight:700;margin:0}

.signup-step h2{font-size:18px;font-weight:700;margin:0;text-align:center}
.signup-sub{color:var(--text2);font-size:13px;line-height:1.5;margin:0;text-align:center}

.signup-help{background:rgba(79,126,248,.1);border:1px solid rgba(79,126,248,.25);color:var(--text2);font-size:12.5px;line-height:1.5;border-radius:10px;padding:10px 12px;display:flex;gap:8px;align-items:flex-start}
.signup-help>span:first-child{flex-shrink:0}
.signup-help>span:last-child{flex:1;min-width:0}
.signup-help strong{color:var(--text)}
.signup-warn{background:rgba(234,179,8,.1);border:1px solid rgba(234,179,8,.3);color:var(--text2);font-size:12.5px;line-height:1.5;border-radius:10px;padding:10px 12px;display:flex;gap:8px;align-items:flex-start}
.signup-warn>span:first-child{flex-shrink:0}
.signup-warn>span:last-child{flex:1;min-width:0}
.signup-error{color:var(--red);font-size:13px;min-height:6px;text-align:center}
.signup-nav{display:flex;justify-content:space-between;gap:10px;padding-top:6px}
.signup-nav .btn{flex:1}
.signup-skip{background:none;border:none;color:var(--text2);font-size:12.5px;cursor:pointer;text-align:center;padding:2px;text-decoration:underline;text-underline-offset:2px}
.signup-skip:hover{color:var(--text)}
.signup-team-chip{display:flex;align-items:center;gap:8px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px}
.signup-team-chip .role{color:var(--text2);font-size:11px;background:var(--surface3);padding:2px 7px;border-radius:20px;white-space:nowrap}
.signup-team-chip .rm{margin-left:auto;background:none;border:none;color:var(--text2);cursor:pointer;font-size:14px;flex-shrink:0}
.signup-team-chip .rm:hover{color:var(--red)}
.signup-review-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--border);font-size:13px}
.signup-review-row:last-child{border-bottom:none}
.signup-review-label{color:var(--text2);flex-shrink:0}
.signup-review-value{color:var(--text);font-weight:600;text-align:right}
.signup-success-check{width:64px;height:64px;border-radius:50%;background:rgba(34,197,94,.15);border:1px solid rgba(34,197,94,.3);color:var(--green);display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto}

/* USER TABLE */
.data-table{width:100%;border-collapse:collapse;font-size:13px}
.data-table th{background:var(--surface2);padding:10px 14px;text-align:left;font-weight:600;color:var(--text2);font-size:11px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}
.data-table td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
.data-table tbody tr:hover{background:var(--surface2)}

/* NAV */
nav{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:20px 0;transition:width .2s ease;overflow:hidden}
nav.collapsed{width:52px}
.nav-logo{padding:0 20px 20px;font-size:17px;font-weight:700;color:var(--text);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;white-space:nowrap;overflow:hidden}
.nav-icon{font-size:22px;flex-shrink:0}
.nav-label{overflow:hidden;transition:opacity .15s}
.nav-toggle{margin-left:auto;flex-shrink:0;background:none;border:none;color:var(--text2);font-size:13px;cursor:pointer;padding:2px 0;line-height:1;transition:transform .2s,color .15s}
.nav-toggle:hover{color:var(--text)}
nav.collapsed .nav-toggle{transform:rotate(180deg)}
nav.collapsed .nav-label{display:none}
nav.collapsed .nav-logo{justify-content:center;padding-left:0;padding-right:0}
nav ul{list-style:none;margin-top:12px}
nav ul li a{display:flex;align-items:center;gap:10px;padding:10px 20px;color:var(--text2);text-decoration:none;font-size:14px;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap;overflow:hidden}
nav ul li a:hover,nav ul li a.active{background:var(--surface2);color:var(--text)}
nav ul li a.active{border-left:3px solid var(--accent)}
nav.collapsed ul li a{justify-content:center;padding:10px 0}
nav.collapsed ul li a.active{border-left:none;box-shadow:inset 3px 0 0 var(--accent)}

/* LAYOUT */
.main{flex:1;overflow-y:auto;display:flex;flex-direction:column}
header{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 28px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
header h1{font-size:18px;font-weight:600}
.header-actions{display:flex;gap:10px;align-items:center}

/* ── Project pill (always-visible context) ─────────── */
.project-pill{display:flex;align-items:center;gap:7px;padding:5px 12px 5px 10px;background:var(--surface2);border:1px solid var(--border);border-radius:24px;cursor:pointer;transition:border-color .15s,background .15s;white-space:nowrap;max-width:220px}
.project-pill:hover{border-color:var(--accent);background:var(--surface3)}
.project-pill:hover .pp-switch{opacity:1}
.pp-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex-shrink:0}
.pp-name{font-size:13px;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;min-width:0}
.pp-switch{font-size:11px;color:var(--text2);opacity:0;transition:opacity .15s;flex-shrink:0}

/* ── User menu ─────────────────────────────────────── */
.user-menu{position:relative}
.user-avatar{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 5px;background:var(--surface2);border:1px solid var(--border);border-radius:24px;cursor:pointer;transition:border-color .15s,background .15s;white-space:nowrap}
.user-avatar:hover{border-color:var(--accent);background:var(--surface3)}
.ua-initials{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.5px}
.ua-name{font-size:13px;color:var(--text);font-weight:500;max-width:100px;overflow:hidden;text-overflow:ellipsis}
.ua-chevron{font-size:10px;color:var(--text2);transition:transform .2s;margin-left:2px}
.user-avatar[aria-expanded="true"] .ua-chevron{transform:rotate(180deg)}

.user-dropdown{position:absolute;right:0;top:calc(100% + 8px);width:268px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 12px 40px rgba(0,0,0,.5);z-index:500;display:none;overflow:hidden}
.user-dropdown.open{display:block;animation:udSlideIn .15s ease}
@keyframes udSlideIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}

.ud-profile{display:flex;gap:12px;align-items:flex-start;padding:16px}
.ud-avatar-lg{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.5px}
.ud-info{min-width:0;flex:1}
.ud-name{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ud-email{font-size:11px;color:var(--text2);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ud-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}
.ud-badge{font-size:10px!important}
.ud-divider{height:1px;background:var(--border)}
.ud-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;background:none;border:none;font-size:13px;color:var(--text);cursor:pointer;text-align:left;transition:background .12s}
.ud-item:hover{background:var(--surface2)}
.ud-item-icon{font-size:14px;width:20px;text-align:center;flex-shrink:0}
.ud-item-danger{color:var(--text2)}
.ud-item-danger:hover{background:rgba(239,68,68,.1);color:var(--red)}
.content{padding:24px 28px;flex:1}
.section{display:none}
.section.active{display:block}

/* STATS */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px}
.stat-card .label{font-size:12px;color:var(--text2);margin-bottom:6px}
.stat-card .value{font-size:28px;font-weight:700}
.stat-card.accent .value{color:var(--accent)}
.stat-card.green .value{color:var(--green)}
.stat-card.yellow .value{color:var(--yellow)}
.stat-card.red .value{color:var(--red)}
.stat-card.teal .value{color:#14b8a6}

/* DASHBOARD WIDGETS (Next Release / PR Status breakdown) */
.dash-widgets{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:24px}
@media(max-width:1100px){.dash-widgets{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.dash-widgets{grid-template-columns:1fr}}
.dash-widget{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}
.dash-widget-title{font-size:12px;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:14px;font-weight:600}
.dash-empty{color:var(--text2);font-size:13px;padding:8px 0}

.dash-release-hero{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.dash-release-days{font-size:32px;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}
.dash-release-unit{font-size:13px;color:var(--text2)}
.dash-release-meta{font-size:12px;color:var(--text2);margin-bottom:16px}
.dash-meter{height:8px;border-radius:4px;background:var(--surface3);overflow:hidden;margin-bottom:6px}
.dash-meter-fill{height:100%;border-radius:4px;transition:width .3s}
.dash-meter-label{font-size:11px;color:var(--text2)}

.dash-radial-row{display:flex;justify-content:space-around;gap:10px;text-align:center}
.dash-radial-item{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:0}
.dash-radial{position:relative;width:104px;height:104px;flex-shrink:0}
.dash-radial svg{width:100%;height:100%;transform:rotate(-90deg)}
.dash-radial-track{fill:none;stroke:var(--surface3);stroke-width:9}
.dash-radial-fill{fill:none;stroke-width:9;stroke-linecap:round;transition:stroke-dashoffset .4s}
.dash-radial-value{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.dash-radial-label{font-size:12px;font-weight:600;color:var(--text)}
.dash-radial-sub{font-size:11px;color:var(--text2)}

.dash-release-breakdown{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
.dash-mini-chip{display:flex;align-items:center;gap:6px;font-size:12px}
.dash-mini-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.dash-mini-count{font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.dash-mini-label{color:var(--text2)}

.dash-status-bar{display:flex;gap:2px;height:14px;border-radius:7px;background:var(--surface3);margin-bottom:16px}
.dash-status-seg{height:100%}
.dash-status-legend{display:flex;flex-direction:column;gap:8px}
.dash-status-row{display:flex;align-items:center;gap:8px;font-size:12px}
.dash-status-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.dash-status-name{flex:1;color:var(--text)}
.dash-status-count{color:var(--text2);font-variant-numeric:tabular-nums}

/* MODULE COMPLETION GRAPH — the dashboard's main visual */
.dash-modgraph{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;margin-bottom:24px}
.dash-modgraph-header{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px;margin-bottom:18px}
.dash-modgraph-title{font-size:16px;font-weight:700;color:var(--text)}
.dash-modgraph-sub{font-size:12px;color:var(--text2)}
.dash-modgraph-empty{color:var(--text2);font-size:13px;padding:20px 0;text-align:center}
.dash-modgraph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;max-height:520px;overflow-y:auto;padding:2px 4px 2px 2px;margin-bottom:16px}
.dash-modgraph-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;transition:border-color .15s,transform .15s}
.dash-modgraph-card:hover{border-color:var(--accent);transform:translateY(-1px)}
.dash-modgraph-card-head{display:flex;align-items:center;gap:12px}
.dash-modgraph-ring{position:relative;width:60px;height:60px;flex-shrink:0}
.dash-modgraph-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.dash-modgraph-ring-track{fill:none;stroke:var(--surface3);stroke-width:6}
.dash-modgraph-ring-fill{fill:none;stroke-width:6;stroke-linecap:round;transition:stroke-dashoffset .5s}
.dash-modgraph-ring-value{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.dash-modgraph-card-info{display:flex;flex-direction:column;gap:3px;min-width:0}
.dash-modgraph-card-name{font-size:13px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-modgraph-card-sub{font-size:11px;color:var(--text2)}
.dash-modgraph-meter-row{display:grid;grid-template-columns:34px 1fr 38px;align-items:center;gap:8px}
.dash-modgraph-meter-label{font-size:10px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.4px}
.dash-modgraph-meter-track{height:7px;border-radius:4px;background:var(--surface3);overflow:hidden}
.dash-modgraph-meter-fill{height:100%;border-radius:4px;transition:width .5s ease}
.dash-modgraph-meter-pct{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.dash-modgraph-card-foot{display:flex;align-items:center;padding-top:8px;border-top:1px solid var(--border);font-size:11px;color:var(--text2)}
.dash-modgraph-pr-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--yellow);white-space:nowrap}
.dash-modgraph-pr-dot{width:6px;height:6px;border-radius:50%;background:var(--yellow);flex-shrink:0}
/* Success showcase — tinted, bordered, celebratory */
.dash-modgraph-success{background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.25);border-radius:12px;padding:16px 18px;margin-top:4px}
.dash-modgraph-success + .dash-modgraph-success{margin-top:12px}
.dash-modgraph-success-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.dash-modgraph-success-title{font-size:13px;font-weight:700;color:var(--green)}
.dash-modgraph-success-count{font-size:12px;font-weight:600;color:var(--green)}
.dash-modgraph-success-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.dash-modgraph-success-card{display:flex;align-items:center;gap:10px;background:var(--surface2);border:1px solid rgba(34,197,94,.2);border-radius:9px;padding:10px 12px;transition:border-color .15s,transform .15s}
.dash-modgraph-success-card:hover{border-color:var(--green);transform:translateY(-1px)}
.dash-modgraph-success-check{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--green);color:#06280f;font-size:12px;font-weight:900;display:flex;align-items:center;justify-content:center}
.dash-modgraph-success-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.dash-modgraph-success-name{font-size:12px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-modgraph-success-sub{font-size:10px;color:var(--text2)}

/* Out-of-scope — its own identity color (violet), still clearly a third
   category rather than competing with the green success showcase above */
.dash-modgraph-oos{background:rgba(168,85,247,.06);border:1px solid rgba(168,85,247,.22);border-radius:12px;padding:14px 18px;margin-top:16px}
.dash-modgraph-oos-label{display:block;font-size:11px;font-weight:700;color:var(--purple);text-transform:uppercase;letter-spacing:.4px;margin-bottom:10px}
.dash-modgraph-oos-chips{display:flex;flex-wrap:wrap;gap:8px}
.dash-modgraph-oos-chip{font-size:12px;font-weight:600;color:var(--purple);background:rgba(168,85,247,.12);border:1px solid rgba(168,85,247,.3);border-radius:999px;padding:4px 12px;transition:background .15s}
.dash-modgraph-oos-chip:hover{background:rgba(168,85,247,.22)}
@media(max-width:600px){
  .dash-modgraph-grid{grid-template-columns:1fr}
}

/* TOOLBAR */
.toolbar{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap;align-items:center}
input[type="text"],select{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:8px;font-size:13px;outline:none;transition:border-color .15s}
input[type="text"]:focus,select:focus{border-color:var(--accent)}
input[type="text"]{width:240px}

/* BUTTONS */
.btn{padding:8px 16px;border-radius:8px;border:none;font-size:13px;font-weight:500;cursor:pointer;transition:opacity .15s,transform .1s;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn:hover{opacity:.85}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--accent);color:#fff}
.btn-success{background:var(--green);color:#000}
.btn-warning{background:var(--yellow);color:#000}
.btn-danger{background:var(--red);color:#fff}
.btn-ghost{background:var(--surface2);color:var(--text);border:1px solid var(--border)}
.btn-purple{background:var(--purple);color:#fff}
.btn-sm{padding:5px 10px;font-size:12px}
.btn-xs{padding:3px 8px;font-size:11px;border-radius:6px}

/* TABLE */
.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
thead tr{background:var(--surface2)}
th{padding:10px 14px;text-align:left;font-weight:600;font-size:12px;color:var(--text2);white-space:nowrap;border-bottom:1px solid var(--border)}
td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:rgba(255,255,255,.02)}

/* BADGES */
.badge{display:inline-block;padding:3px 8px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap}
.badge-green{background:rgba(34,197,94,.15);color:var(--green)}
.badge-yellow{background:rgba(234,179,8,.15);color:var(--yellow)}
.badge-red{background:rgba(239,68,68,.15);color:var(--red)}
.badge-blue{background:rgba(79,126,248,.15);color:var(--accent)}
.badge-orange{background:rgba(249,115,22,.15);color:var(--orange)}
.badge-gray{background:rgba(148,163,184,.15);color:var(--text2)}
.badge-purple{background:rgba(168,85,247,.15);color:var(--purple)}

/* MODAL */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:1000;justify-content:center;align-items:center;padding:20px}
.modal-overlay.open{display:flex}
.modal{background:var(--surface);border:1px solid var(--border);border-radius:14px;width:100%;max-width:680px;max-height:90vh;overflow-y:auto;padding:28px;position:relative}
.modal-lg{max-width:880px}
.modal h2{font-size:18px;margin-bottom:20px}
.modal-close{position:absolute;top:20px;right:20px;background:none;border:none;color:var(--text2);font-size:20px;cursor:pointer;line-height:1}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid .full{grid-column:1/-1}
label{display:block;font-size:12px;color:var(--text2);margin-bottom:5px}
.form-group input,.form-group select,.form-group textarea{width:100%;background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:9px 12px;border-radius:8px;font-size:13px;outline:none;font-family:inherit}
.form-group textarea{resize:vertical;min-height:70px}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--accent)}
.modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}

/* TOAST */
#toast{position:fixed;bottom:28px;right:28px;background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:12px 18px;border-radius:10px;font-size:13px;z-index:2000;opacity:0;transition:opacity .3s;max-width:320px}
#toast.show{opacity:1}
#toast.success{border-color:var(--green);color:var(--green)}
#toast.error{border-color:var(--red);color:var(--red)}

/* TAGS */
.tag-list{display:flex;flex-wrap:wrap;gap:5px}
.tag{background:var(--surface2);border:1px solid var(--border);padding:2px 8px;border-radius:20px;font-size:11px;color:var(--text2)}

/* ── RELEASES section ────────────────────────────────────────── */
.rel-section-label{font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:6px 0 10px;color:var(--text2);display:flex;align-items:center;gap:8px;margin-top:4px}
.rel-section-label::after{content:'';flex:1;height:1px;background:var(--border)}
/* Group accordion wrapping past / upcoming releases */
.rel-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;overflow:hidden}
.rel-group-header{display:flex;align-items:center;gap:10px;padding:13px 18px;background:var(--surface2);cursor:pointer;user-select:none;transition:background .15s}
.rel-group-header:hover{background:var(--surface3)}
.rel-group-title{font-size:13px;font-weight:600;color:var(--text);flex:1}
.rel-group-body{padding:12px 14px;background:var(--surface)}
.rel-group-body .release-block{margin-bottom:10px}
.rel-group-body .release-block:last-child{margin-bottom:0}
.release-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;overflow:hidden}
.release-block.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.release-block.next-up{border-color:var(--green)}
.release-block.past{opacity:.75}
.release-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--surface2);border-bottom:1px solid var(--border);cursor:pointer;user-select:none;transition:background .15s}
.release-header:hover{background:var(--surface3)}
.release-block.current .release-header{background:rgba(79,126,248,.12)}
.release-block.next-up .release-header{background:rgba(34,197,94,.08)}
.release-header-left{display:flex;align-items:center;gap:12px}
.release-title{font-size:14px;font-weight:700}
.release-meta{display:flex;gap:14px;font-size:12px;color:var(--text2);margin-top:3px}
.release-meta span{display:flex;align-items:center;gap:4px}
.release-counts{display:flex;gap:7px;align-items:center}
.release-body{padding:0}
.chevron{font-size:10px;color:var(--text2);transition:transform .2s;flex-shrink:0}
.chevron.open{transform:rotate(180deg)}
/* Module group - fixed-layout table for column alignment */
.mod-group{border-bottom:1px solid var(--border)}
.mod-group:last-child{border-bottom:none}
.mod-header{display:flex;align-items:center;gap:10px;padding:11px 18px;background:rgba(255,255,255,.02);border-bottom:1px solid var(--border)}
.mod-name{font-size:13px;font-weight:700;color:var(--text)}
.mod-story{font-size:11px;color:var(--accent2);margin-left:6px}
.mod-story-label{font-size:11px;color:var(--text2)}
.pages-table{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.pages-table col.col-margin{width:2%}
.pages-table col.col-page{width:25%}
.pages-table col.col-ff{width:28%}
.pages-table col.col-ffs{width:10%}
.pages-table col.col-pr{width:25%}
.pages-table col.col-task{width:10%}
.pages-table th{padding:7px 10px;text-align:left;color:var(--text2);font-size:11px;font-weight:600;background:var(--surface3);border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pages-table td{padding:7px 10px;border-bottom:1px solid rgba(46,50,80,.4);vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pages-table tr:last-child td{border-bottom:none}
.pages-table tr:hover td{background:rgba(255,255,255,.025)}
.pages-table td.pr-cell{vertical-align:top;text-align:left;white-space:normal;overflow:visible;padding-top:6px}
.pr-pill{display:inline-flex;align-items:center;gap:4px;background:rgba(79,126,248,.12);border:1px solid rgba(79,126,248,.3);color:var(--accent);padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap;cursor:pointer;margin:2px 1px}
.pr-pill:hover{background:rgba(79,126,248,.22)}
.pr-pill-gray{background:rgba(148,163,184,.12);border-color:rgba(148,163,184,.3);color:var(--text2)}.pr-pill-gray:hover{background:rgba(148,163,184,.22)}
.pr-pill-orange{background:rgba(249,115,22,.12);border-color:rgba(249,115,22,.35);color:var(--orange)}.pr-pill-orange:hover{background:rgba(249,115,22,.22)}
.pr-pill-yellow{background:rgba(234,179,8,.12);border-color:rgba(234,179,8,.35);color:var(--yellow)}.pr-pill-yellow:hover{background:rgba(234,179,8,.22)}
.pr-pill-teal{background:rgba(20,184,166,.12);border-color:rgba(20,184,166,.35);color:#14b8a6}.pr-pill-teal:hover{background:rgba(20,184,166,.22)}
.pr-pill-green{background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.35);color:var(--green)}.pr-pill-green:hover{background:rgba(34,197,94,.22)}
.pr-pill-x{cursor:pointer;opacity:.6;font-weight:400;margin-left:2px}
.pr-pill-x:hover{opacity:1;color:var(--red, #ef4444)}
.chip-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:26px}

/* ── MODULE PAGES section ────────────────────────────────────── */
.mp-accordion{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;overflow:hidden}
.mp-acc-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;cursor:pointer;user-select:none;transition:background .15s}
.mp-acc-header:hover{background:var(--surface2)}
.mp-acc-left{display:flex;align-items:center;gap:12px}
.mp-acc-name{font-size:14px;font-weight:600}
.mp-acc-counts{display:flex;gap:8px}
.mp-acc-body{display:none;border-top:1px solid var(--border);background:var(--surface2)}
.mp-acc-body.open{display:block}
/* Inset "tab" panel that nests the pages table under its module */
.mp-pages-wrap{margin:14px 18px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);overflow:hidden}
/* Module Pages full-width fixed table */
.mp-pages-table{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.mp-pages-table col.mpc-page{width:17%}
.mp-pages-table col.mpc-ff{width:19%}
.mp-pages-table col.mpc-ffs{width:8%}
.mp-pages-table col.mpc-demo{width:8%}
.mp-pages-table col.mpc-prod{width:9%}
.mp-pages-table col.mpc-releasedate{width:10%}
.mp-pages-table col.mpc-prs{width:14%}
.mp-pages-table col.mpc-actions{width:15%}
.mp-prs-cell{overflow:visible!important;white-space:normal!important}
.mp-pages-table th{padding:7px 10px;text-align:left;color:var(--text2);font-size:11px;font-weight:600;background:var(--surface3);border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-pages-table td{padding:7px 10px;border-bottom:1px solid rgba(46,50,80,.4);vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-pages-table tr:last-child td{border-bottom:none}
.mp-pages-table tr:hover td{background:rgba(255,255,255,.025)}
/* OOS section */
.oos-section{padding:12px 18px;border-top:1px solid var(--border);background:rgba(239,68,68,.03)}
.oos-title{font-size:11px;font-weight:600;color:var(--text2);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}
.oos-list{display:flex;flex-wrap:wrap;gap:6px}
.oos-chip{display:inline-flex;align-items:center;gap:6px;background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.25);padding:3px 8px;border-radius:20px;font-size:11px;color:var(--red)}
.oos-chip button{background:none;border:none;color:var(--red);cursor:pointer;font-size:13px;line-height:1;padding:0}
.mp-oos-section{padding:10px 18px 12px;border-top:1px solid var(--border);background:rgba(239,68,68,.04)}
.mp-oos-header{font-size:11px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;display:flex;align-items:center;gap:6px}
.mp-oos-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;border-bottom:1px solid rgba(239,68,68,.1)}
.mp-oos-row:last-child{border-bottom:none}
.mp-oos-name{font-size:12px;font-family:monospace;color:var(--red)}
/* status badge colours */
.badge-teal{background:rgba(20,184,166,.15);color:#14b8a6}

/* ── STATUS TRACKER ────────────────────────────────────────── */
.st-dev-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;overflow:hidden}
.st-dev-header{display:flex;align-items:center;justify-content:space-between;padding:13px 18px;background:var(--surface2);border-bottom:1px solid var(--border)}
.st-dev-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.st-dev-name{font-size:14px;font-weight:600;color:var(--text)}

/* Status tracker — developer card */
.st-devsum-header{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;user-select:none;transition:background .15s}
.st-devsum-header:hover{background:var(--surface3)}
.st-dev-avatar{width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.st-chev{font-size:10px;color:var(--text2);transition:transform .2s ease;display:inline-block;flex-shrink:0;line-height:1}
.st-chev.open{transform:rotate(90deg)}
.st-dev-body{display:block}
.st-dev-body.st-collapsed{display:none}

/* Status tracker — module-grouped table */
.st-table{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.st-table thead th{padding:7px 10px;text-align:left;color:var(--text2);font-size:11px;font-weight:600;background:var(--surface2);border-bottom:2px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-th-page{padding-left:30px !important}

/* Module header row */
.st-mod-row{background:var(--surface3)}
.st-mod-cell{padding:0 !important;border-top:1px solid var(--border)}
.st-mod-header{display:flex;align-items:center;gap:8px;padding:7px 14px 7px 12px}
.st-mod-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.st-mod-name{font-size:12px;font-weight:700;color:var(--text);letter-spacing:.01em}
.st-mod-count{font-size:10px;color:var(--text2);background:var(--surface2);border:1px solid var(--border);border-radius:20px;padding:1px 7px;font-weight:600}

/* Page rows */
.st-page-row td{padding:6px 10px;border-bottom:1px solid rgba(46,50,80,.3);vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-page-row:last-child td,.st-page-row.st-page-last td{border-bottom:none}
.st-page-row:hover td{background:rgba(255,255,255,.025)}
.st-page-name{padding-left:12px !important}
.st-tree{font-family:monospace;font-size:11px;color:var(--text2);opacity:.35;margin-right:5px;margin-left:15px;user-select:none}
.st-pname{font-family:monospace;font-size:11px;color:var(--text)}
.st-act-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-page-row td.st-pr-cell{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.7}
.st-last-note{font-size:11px;color:var(--text2)}
.st-last-note.muted{opacity:.4}
.st-meta{font-size:11px;color:var(--text2)}
.st-dash{font-size:11px;color:var(--text2);opacity:.4}

/* Inline status select */
.st-status-sel{font-size:11px;font-weight:600;border-radius:20px;border:1px solid transparent;padding:3px 10px;cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;font-family:inherit;transition:background .15s,color .15s;max-width:100%}
.st-status-sel[data-status="done"]{background:rgba(34,197,94,.15);color:#22c55e;border-color:rgba(34,197,94,.3)}
.st-status-sel[data-status="blocked"]{background:rgba(239,68,68,.15);color:#ef4444;border-color:rgba(239,68,68,.3)}
.st-status-sel[data-status="in-review"]{background:rgba(234,179,8,.15);color:#eab308;border-color:rgba(234,179,8,.3)}
.st-status-sel[data-status="in-progress"]{background:rgba(249,115,22,.15);color:#f97316;border-color:rgba(249,115,22,.3)}
.st-status-sel[data-status="pending"]{background:var(--surface3);color:var(--text2);border-color:var(--border)}
.st-status-sel option{background:var(--surface2);color:var(--text)}
/* Activity log entries */
.act-entry{padding:10px 14px;border-bottom:1px solid var(--border);display:flex;gap:12px;align-items:flex-start}
.act-entry:last-child{border-bottom:none}
.act-entry:hover{background:rgba(255,255,255,.02)}
.act-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0;margin-top:5px}
.act-dot.created{background:var(--green)}
.act-dot.status_change{background:var(--yellow)}
.act-dot.pr_linked{background:var(--purple)}
.act-dot.pr_unlinked{background:var(--red)}
.act-body{flex:1;min-width:0}
.act-time{font-size:11px;color:var(--text2);margin-bottom:2px}
.act-note{font-size:13px;color:var(--text);line-height:1.4;word-break:break-word}

/* Sync/upload */
.sync-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;margin-bottom:20px;max-width:560px}
.sync-card h3{font-size:15px;margin-bottom:8px}
.sync-card p{font-size:13px;color:var(--text2);margin-bottom:16px}
.sync-result{margin-top:16px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:14px;font-size:13px;display:none}
.sync-result.show{display:block}
.sync-result .row{display:flex;justify-content:space-between;padding:3px 0}
.sync-result .row span:last-child{font-weight:600;color:var(--accent)}
.upload-area{border:2px dashed var(--border);border-radius:10px;padding:32px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;margin-bottom:16px}
.upload-area:hover,.upload-area.drag{border-color:var(--accent);background:rgba(79,126,248,.05)}
.upload-area .icon{font-size:32px;margin-bottom:8px}
.upload-area p{font-size:13px;color:var(--text2)}
#fileInput{display:none}

/* empty state */
.empty{text-align:center;padding:48px 20px;color:var(--text2);font-size:13px}
.empty .e-icon{font-size:36px;margin-bottom:10px}

/* ── Page chip multi-select ───────────────────────── */
.page-chips{min-height:72px;max-height:160px;overflow-y:auto;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:8px;display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start;transition:border-color .15s;cursor:default}
.page-chips.has-focus{border-color:var(--accent)}
.page-chip{display:inline-flex;align-items:center;padding:4px 12px;border-radius:20px;font-size:11px;font-family:monospace;background:var(--surface3);border:1px solid var(--border);color:var(--text2);cursor:pointer;user-select:none;white-space:nowrap;transition:background .15s,color .15s,border-color .15s}
.page-chip:hover{border-color:var(--accent);color:var(--text)}
.page-chip.selected{background:rgba(79,126,248,.18);border-color:var(--accent);color:var(--accent);font-weight:600}
.page-chip-hint{color:var(--text2);font-size:12px;padding:2px 2px;width:100%}
/* ── Typeahead (PR search) ────────────────────────── */
.ta-wrap{position:relative}
.ta-list{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:260px;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 32px rgba(0,0,0,.4);z-index:50;display:none}
.ta-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;font-size:13px;cursor:pointer;white-space:nowrap;overflow:hidden}
.ta-item span:first-child{overflow:hidden;text-overflow:ellipsis}
.ta-item:hover,.ta-item.active{background:var(--surface2)}
.ta-item-status{font-size:11px;color:var(--text2);flex-shrink:0}
.ta-empty{padding:10px 12px;font-size:12px;color:var(--text2)}
/* Project selector */
.project-card{display:flex;flex-direction:column;align-items:flex-start;background:var(--surface3);border:1px solid var(--border);border-radius:10px;padding:14px 18px;cursor:pointer;transition:border-color .15s,box-shadow .15s;text-align:left;width:100%}
.project-card:hover{border-color:var(--accent);box-shadow:0 0 0 2px rgba(79,126,248,.15)}
.project-card-name{font-size:15px;font-weight:600;color:var(--text)}
.project-card-desc{font-size:12px;color:var(--text2);margin-top:2px}

/* ── Admin page ───────────────────────────────────── */
.admin-company-bar{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.co-edit-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;border:none;background:none;color:var(--text2);cursor:pointer;opacity:0;transition:opacity .15s,background .15s,color .15s}
.admin-company-bar:hover .co-edit-btn{opacity:1}
.co-edit-btn:hover{background:var(--surface2);color:var(--accent)}
.co-name-input{flex:1;max-width:280px;padding:5px 10px;font-size:14px;font-weight:600;background:var(--surface2);border:1px solid var(--accent);border-radius:7px;color:var(--text);outline:none}
.admin-company-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text2)}
.admin-company-name{font-size:15px;font-weight:600;color:var(--text)}
.admin-company-limits{margin-left:auto;display:flex;align-items:center;gap:8px}
.admin-company-limit{font-size:12px;color:var(--text2);background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:3px 8px;white-space:nowrap}
.admin-company-limits .admin-company-limit + .co-edit-btn{margin-left:-6px}
.admin-company-limit-label{margin-left:auto;font-size:13px;color:var(--text2)}
.co-limit-suffix{font-size:13px;color:var(--text2)}
.co-limit-input{flex:0 0 70px;max-width:70px}
.setup-limit-bar{display:flex;align-items:center;gap:2px}
.setup-limit-label{font-size:11px;color:var(--text2);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:2px 7px;white-space:nowrap}
.setup-section-hdr:hover .setup-limit-bar .co-edit-btn{opacity:1}
.admin-tabs{display:flex;gap:4px;margin-bottom:20px;border-bottom:1px solid var(--border);padding-bottom:0}
.admin-tab{padding:8px 18px;font-size:13px;font-weight:500;background:none;border:none;border-bottom:2px solid transparent;color:var(--text2);cursor:pointer;transition:color .15s,border-color .15s;margin-bottom:-1px}
.admin-tab:hover{color:var(--text)}
.admin-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.admin-panel{animation:fadeIn .15s ease}

/* Projects grid */
.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.project-admin-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:12px;transition:border-color .15s}
.project-admin-card:hover{border-color:var(--accent)}
.project-admin-card-top{display:flex;align-items:flex-start;gap:10px}
.project-admin-card-name{font-size:15px;font-weight:600;color:var(--text);margin-bottom:2px}
.project-admin-card-desc{font-size:12px;color:var(--text2)}
.project-admin-card-meta{font-size:12px;color:var(--text2)}
.project-admin-card-actions{display:flex;gap:6px;flex-wrap:wrap;padding-top:4px;border-top:1px solid var(--border)}

/* Project members modal */
.proj-add-member-bar{display:flex;gap:8px;align-items:center;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.proj-member-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}
.proj-member-row:last-child{border-bottom:none}
.proj-member-info{display:flex;flex-direction:column;flex:1;min-width:0}
.proj-member-name{font-size:13px;font-weight:500;color:var(--text)}
.proj-member-email{font-size:11px;color:var(--text2)}
.proj-member-role-sel{padding:4px 8px;font-size:12px;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);cursor:pointer}

/* Empty state */
.empty-state{text-align:center;padding:48px 20px;color:var(--text2);font-size:13px}

/* ── Pagination ─────────────────────────────────────── */
.pagination-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 2px 4px;flex-wrap:wrap}
.pg-info{font-size:13px;color:var(--text2);min-width:0}
.pg-info strong{color:var(--text)}
.pg-controls{display:flex;gap:3px;align-items:center}
.pg-btn{min-width:32px;height:32px;padding:0 8px;border-radius:6px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:13px;cursor:pointer;transition:background .12s,border-color .12s;line-height:1}
.pg-btn:hover:not([disabled]){background:var(--surface3);border-color:var(--accent)}
.pg-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.pg-btn[disabled]{opacity:.35;cursor:not-allowed}
.pg-ellipsis{padding:0 6px;color:var(--text2);font-size:13px;user-select:none;line-height:32px}
.pg-size-label{font-size:13px;color:var(--text2);display:flex;align-items:center;gap:6px;white-space:nowrap}
.pg-size-sel{padding:4px 8px;font-size:12px;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);cursor:pointer}

/* ── Reports ────────────────────────────────────────── */
.rpt-overview{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.rpt-stat{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:16px 20px;flex:1;min-width:110px}
.rpt-stat-value{font-size:26px;font-weight:700;line-height:1.1;color:var(--text)}
.rpt-stat-denom{font-size:20px;font-weight:400;color:var(--text2)}
.rpt-stat-label{font-size:11px;color:var(--text2);margin-top:5px;text-transform:uppercase;letter-spacing:.4px}
.rpt-stat-complete .rpt-stat-value{color:var(--green)}
.rpt-stat-progress .rpt-stat-value{color:var(--accent)}
.rpt-stat-none .rpt-stat-value{color:var(--text2)}

.rpt-overall-row{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.rpt-overall-label{font-size:12px;color:var(--text2);white-space:nowrap;min-width:130px}
.rpt-overall-pct{font-size:13px;font-weight:700;white-space:nowrap;min-width:38px;text-align:right;color:var(--text)}

.rpt-progress-bar{height:8px;border-radius:4px;background:var(--surface3);overflow:hidden}
.rpt-progress-fill{height:100%;border-radius:4px;transition:width .5s ease}

.rpt-chart-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:20px 24px;margin-bottom:20px}
.rpt-chart-title{font-size:14px;font-weight:600;color:var(--text);margin-bottom:4px}
.rpt-chart-subtitle{font-size:11px;color:var(--text2);margin-bottom:16px}
.rpt-chart-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.rpt-chart-wrap svg{min-width:520px}

/* ── Exclusions tab ───────────────────────────────── */
.excl-desc{font-size:13px;color:var(--text2);margin-bottom:20px;max-width:640px;line-height:1.6}
.excl-list{display:flex;flex-direction:column;gap:8px;margin-bottom:20px;max-width:640px}
.excl-row{display:flex;align-items:center;gap:12px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:10px 14px}
.excl-name{flex:1;font-size:13px;color:var(--text)}
.excl-empty{font-size:13px;color:var(--text2);padding:12px 0}
.excl-add-row{display:flex;gap:10px;align-items:center;max-width:480px}
.excl-input{flex:1;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;color:var(--text);font-size:13px}
.excl-input:focus{outline:none;border-color:var(--accent)}
.excl-error{font-size:12px;color:var(--red);margin-top:6px;min-height:18px}
.excl-two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:700px){.excl-two-col{grid-template-columns:1fr}}
.excl-group{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:20px 20px 16px}
.excl-group-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:4px}
.excl-group-sub{font-size:11px;color:var(--text2);margin-bottom:14px;line-height:1.5}

/* ── Subscription tab ──────────────────────────────── */
.sub-details-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}
@media(max-width:800px){.sub-details-grid{grid-template-columns:1fr 1fr}}
.sub-stat{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:16px 18px}
.sub-stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text2);margin-bottom:8px}
.sub-stat-value{font-size:17px;font-weight:700;color:var(--text)}
.sub-section-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:12px}
.sub-trial-banner{display:flex;gap:8px;align-items:flex-start;color:var(--text2);font-size:12.5px;line-height:1.5;border-radius:10px;padding:10px 12px;margin-bottom:16px}
.sub-trial-banner.sub-trial-warning{background:rgba(234,179,8,.1);border:1px solid rgba(234,179,8,.3)}
.sub-trial-banner.sub-trial-expired{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3)}
.sub-cta-row{display:flex;gap:10px;margin-top:16px;margin-bottom:28px}

/* ── Project Setup (inline in Projects tab) ───────── */
.project-admin-card.setup-selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.um-section-hdr{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}
.um-section-title{font-size:14px;font-weight:600;color:var(--text);margin-bottom:3px}
.um-section-sub{font-size:12px;color:var(--text2)}
.um-section-divider{height:1px;background:var(--border);margin:28px 0}
.setup-area-hdr{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px}
.setup-area-title-row{display:flex;align-items:center;gap:8px}
.setup-area-label{font-size:11px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.6px}
.setup-area-title-row strong{font-size:14px;color:var(--text)}
.setup-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:14px}
.setup-section-hdr{display:flex;align-items:center;gap:10px;padding:12px 18px;background:var(--surface2);border-bottom:1px solid var(--border)}
.setup-section-icon{font-size:15px;flex-shrink:0}
.setup-section-title{font-size:13px;font-weight:600;color:var(--text)}
.setup-section-hint{font-size:12px;color:var(--text2);flex:1;margin-left:4px}
.setup-section-body{padding:16px 18px}
.setup-list{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.setup-empty{color:var(--text2);font-size:13px;font-style:italic;padding:6px 4px}
.setup-list-row{display:flex;align-items:center;gap:10px;padding:7px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:8px}
.setup-item-name{flex:1;font-size:13px;color:var(--text);font-weight:500}
.setup-email{font-size:12px;color:var(--text2);flex:1}
.setup-access-info{display:flex;flex-direction:column;flex:1;min-width:0}
.setup-sprint-name{font-size:13px;font-weight:600;color:var(--accent);min-width:80px}
.setup-sprint-dates{flex:1;font-size:12px;color:var(--text2)}
.setup-role-group{margin-bottom:12px}
.setup-role-group:last-child{margin-bottom:0}
.setup-role-label{font-size:11px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.setup-role-members{display:flex;flex-wrap:wrap;gap:6px}
.setup-member-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px 4px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:20px;font-size:12px;color:var(--text)}
.setup-chip-del{background:none;border:none;color:var(--text2);cursor:pointer;font-size:11px;line-height:1;padding:0 2px;transition:color .1s}
.setup-chip-del:hover{color:var(--red)}
.setup-add-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.setup-role-sel{width:140px;flex-shrink:0}
.setup-input-name{flex:1;min-width:140px}
.setup-rel-add{display:grid;grid-template-columns:96px 1fr 1fr 1fr auto;gap:8px;align-items:center}
.setup-rel-header{display:grid;grid-template-columns:80px 1fr 1fr 1fr 70px 32px;gap:8px;font-size:11px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.4px;padding:0 12px 6px;border-bottom:1px solid var(--border);margin-bottom:6px}
.setup-rel-item{display:grid;grid-template-columns:80px 1fr 1fr 1fr 70px 32px;gap:8px;align-items:center;padding:7px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;font-size:13px;margin-bottom:6px}
.setup-rel-num{font-weight:700;color:var(--accent)}
.setup-field-hints{font-size:11px;color:var(--text2);margin-top:5px;padding-left:2px}
.setup-error{color:var(--red);font-size:12px;margin-top:6px;min-height:16px}
@media(max-width:700px){
  .setup-rel-add{grid-template-columns:1fr 1fr;gap:6px}
  .setup-rel-header,.setup-rel-item{grid-template-columns:60px 1fr 1fr;font-size:11px}
  .setup-rel-item>:nth-child(4),.setup-rel-item>:nth-child(5){display:none}
  .setup-rel-header>:nth-child(4),.setup-rel-header>:nth-child(5){display:none}
}

/* ── Super Admin — Platform Overview ──────────────── */
.sa-header{display:flex;align-items:center;justify-content:space-between;padding:18px 28px;border-bottom:1px solid var(--border);background:var(--surface)}
.sa-header-title{font-size:17px;font-weight:700;color:var(--text)}
.sa-body{max-width:1100px;margin:0 auto;padding:28px}
.sa-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}
@media(max-width:800px){.sa-summary{grid-template-columns:1fr 1fr}}
.sa-stat{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:16px 18px;text-align:center}
.sa-stat-value{font-size:22px;font-weight:700;color:var(--text)}
.sa-stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text2);margin-top:6px}
.sa-company-list{display:flex;flex-direction:column;gap:20px}
.sa-company-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px 24px;box-shadow:0 4px 18px rgba(0,0,0,.18)}

/* Company header — collapsed by default (accordion); name/status badges
   stay visible either way so there's still something useful to scan without
   opening every card. Button-reset since this is now a click target. Uses a
   .collapsed class on the card (not an inline-style selector) so the CSS
   doesn't depend on the exact string JS happens to write into style="". */
.sa-company-hdr{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:0 0 16px;margin-bottom:0;border-bottom:1px solid var(--border);background:none;border-left:none;border-right:none;border-top:none;font:inherit;color:inherit;text-align:left;cursor:pointer}
.sa-company-card.collapsed .sa-company-hdr{padding-bottom:0;border-bottom:none}
.sa-company-hdr:hover .sa-company-name{color:var(--accent)}
.sa-company-hdr-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sa-company-name{font-size:18px;font-weight:700;color:var(--text)}
.sa-company-meta{font-size:12px;color:var(--text2)}
.sa-company-body{padding-top:18px}
.sa-company-card.collapsed .sa-company-body{display:none}

/* Section labels — makes "this is subscription info" vs "these are its
   projects" unambiguous at a glance, instead of everything blending together. */
.sa-block-label{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text2);margin-bottom:10px}
.sa-company-card>.sa-block-label:not(:first-of-type){margin-top:22px}

/* Subscription — same labeled-stat-tile pattern as the per-company Admin >
   Subscription tab, so the two views read as the same concept everywhere. */
.sa-sub-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:800px){.sa-sub-grid{grid-template-columns:1fr 1fr}}
.sa-sub-stat{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.sa-sub-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--text2);margin-bottom:6px}
.sa-sub-value{font-size:14.5px;font-weight:700;color:var(--text)}
.sa-no-sub{background:var(--surface2);border:1px dashed var(--border);border-radius:10px;padding:12px 14px;color:var(--text2);font-size:13px;font-style:italic}

/* Projects — a real table reads far more clearly than a loose row list once
   a company has more than one or two projects. */
.sa-project-table{background:var(--surface2);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.sa-project-table th,.sa-project-table td{border-bottom-color:var(--border)}
.sa-project-table tbody tr:last-child td{border-bottom:none}
.sa-project-name{font-weight:600;color:var(--text)}
.sa-project-desc{color:var(--text2)}
.sa-project-empty{background:var(--surface2);border:1px dashed var(--border);border-radius:10px;padding:12px 14px;color:var(--text2);font-size:13px;font-style:italic}
