/* ════════════════════════════════════════════════════════════════════
 * Architectena · offices.css
 * --------------------------------------------------------------------
 * Step 5 of the offices roadmap extracted ~200 lines of office-only
 * styles from style.css and added the new .ov-* hero+sidebar layout
 * for the rebuilt view_office page.
 *
 * Loaded via <link rel="stylesheet"> at the top of every offices
 * {% block content %}. Print stylesheet at the bottom strips chrome
 * for studios who want to print or PDF their public page.
 *
 * Sections:
 *   1. Listing card + cover (.office-card, .office-cover, …)
 *   2. Form / banner / gradient fallback
 *   3. Manage staff dashboard
 *   4. Detail page hero + sidebar (.ov-*)
 *   5. Work-fields dropdown (.wf-*)
 *   6. Print stylesheet (@media print)
 * ════════════════════════════════════════════════════════════════════ */


/* ──────────────────────────────────────────────────────────────────
 * 0 · Back navigation
 * ────────────────────────────────────────────────────────────────── */
.jv-back{display:inline-flex;align-items:center;gap:6px;color:var(--text-muted);text-decoration:none;font-size:13px;margin-bottom:16px;transition:color .15s}
.jv-back:hover{color:var(--accent)}

/* ──────────────────────────────────────────────────────────────────
 * 1 · Listing card
 * Same gold-halo gradient and accent border lift as post / project
 * cards. Cover gets the same zoom + vignette so all listings feel
 * like one family.
 * ────────────────────────────────────────────────────────────────── */
.office-card{
  position:relative;
  background:linear-gradient(0deg,rgba(255,199,60,.06) 0%,var(--bg-card) 65%);
  border:1px solid var(--border);
  border-radius:14px;
  padding:0;margin-bottom:0;
  overflow:hidden;
  /* Project card-height standard. Same value as .post-card and
   * .project-card use so every grid row aligns regardless of which
   * type populates it. Written explicitly here (not via a shared
   * variable) so the office card height can diverge from the others
   * later without reaching across files. */
  height:480px;width:100%;
  display:flex;flex-direction:column;
  transition:background .2s,transform .3s,box-shadow .2s,border-color .2s;
  box-shadow:var(--shadow-sm);
}
.office-card:hover{
  background:linear-gradient(0deg,rgba(255,199,60,.12) 0%,var(--bg-surface) 65%);
  transform:translateY(-4px);
  box-shadow:0 14px 32px rgba(0,0,0,.32),0 0 0 1px rgba(205,161,44,.20);
  border-color:rgba(205,161,44,.30);
}
.office-cover{position:relative;aspect-ratio:16/9;width:100%;overflow:hidden;background:var(--bg-surface);margin-bottom:0!important;flex-shrink:0}
.office-cover a{display:block;width:100%;height:100%}
.office-cover img{width:100%;height:100%;border-radius:0;object-fit:cover;display:block;transition:transform .5s var(--ease);max-height:none}
.office-card:hover .office-cover img{transform:scale(1.04)}
.office-cover::after{content:"";position:absolute;left:0;right:0;bottom:0;height:34%;background:linear-gradient(to top,rgba(0,0,0,.30),transparent);pointer-events:none;z-index:1}
.office-cover .office-cover-gradient{height:100%;border-radius:0}
.office-cover-rating{position:absolute;top:8px;right:8px;z-index:2;display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:5px;background:rgba(0,0,0,.46);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);color:#fff;font-size:11px;font-weight:600;pointer-events:none}
.office-cover-rating i{color:#fbbf24;font-size:10px}
.office-card-status-badge{position:absolute;top:8px;left:8px;z-index:2;display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:5px;font-size:11px;font-weight:700;pointer-events:none;letter-spacing:.02em}
.office-card-status-badge.is-pending{background:rgba(217,119,6,.88);color:#fff}
.office-card-status-badge.is-rejected{background:rgba(185,28,28,.88);color:#fff}

/* ── Apps-Cards audit: body reorder ──
 * Old structure was cover → description-block → faces → meta. New
 * order: cover → name → location → faces → description → meta. The
 * human element leads; the description follows. */
.office-card-name-link{
  display:block;text-decoration:none;
  padding:14px 18px 0;
}
.office-card-name{
  color:var(--text-primary);font-size:16px;font-weight:600;line-height:1.4;
  margin:0;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
.ov-card-verified{
  display:inline-flex;align-items:center;justify-content:center;
  margin-inline-start:4px;color:var(--accent);font-size:13px;
}
.ov-card-verified i{filter:drop-shadow(0 0 6px rgba(205,161,44,.45))}

.office-card-location{
  padding:2px 18px 0;
  font-size:12px;color:var(--text-muted);
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
.office-card-location i{margin-inline-end:5px}

.office-card-description{
  padding:6px 18px 0;
  font-size:13px;color:var(--text-muted);line-height:1.55;margin:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

/* Faces row — 6 slots reserved via placeholder dots. Width stays
 * locked whether the office has 1 staff or 14, so the grid lines
 * up across all cards. */
.office-staff{
  padding:10px 18px 6px;
  display:flex;align-items:center;gap:0;
  min-height:36px;
}
.office-staff img{
  border-radius:50%;margin:0 -6px 0 0;width:30px;height:30px;object-fit:cover;
  border:2px solid var(--bg-card);display:inline-block;
  transition:transform .15s var(--ease);
  flex-shrink:0;
}
.office-staff a:hover img{transform:translateY(-1px) scale(1.05);z-index:2;position:relative}

/* Placeholder face dot — empty circle filling unused slots in the
 * 6-slot faces row. Same diameter as the avatars + same overlap so
 * the row width is constant. */
.office-staff-ph{
  width:30px;height:30px;border-radius:50%;
  margin:0 -6px 0 0;flex-shrink:0;
  background:rgba(255,255,255,.04);
  border:2px dashed var(--border);
  display:inline-block;
}

.office-staff-count{
  font-size:11px;color:var(--text-muted);
  margin-inline-start:14px!important;
  flex-shrink:0;
}

/* Meta row pinned to the bottom. Order now reads: rating · projects ·
 * specialty pills. Rating is the decision-critical signal. */
.office-information{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;
  padding:10px 18px 14px;
  border-top:1px solid var(--border);
  margin-top:auto;
}
.office-information i{margin-inline-end:5px;color:var(--text-muted);font-size:11px}
.office-information > span{margin:0;color:var(--text-muted);font-size:12px;display:inline-flex;align-items:center;gap:5px}
.office-info-rating{color:var(--accent)!important;font-weight:700}
.office-info-rating i{color:var(--accent)!important}

/* Specialty pills — capped at 3 in the template; the 4th and beyond
 * collapse into a single "+N more" overflow pill so the row's height
 * never exceeds one line. */
.office-spec-row{
  display:inline-flex;flex-wrap:nowrap;gap:4px;
  overflow:hidden;max-width:100%;
}
.office-spec-pill{
  font-size:10.5px;font-weight:700;letter-spacing:.02em;
  padding:2px 8px;border-radius:99px;
  background:rgba(255,255,255,.05);
  border:1px solid var(--border);
  color:var(--text-secondary);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px;
}
.office-spec-pill.office-spec-pill-more{
  background:var(--accent-dim);color:var(--accent);
  border-color:rgba(205,161,44,.30);
}

/* Manager / Staff role badge — only the profile card variant uses
 * this; sits as the last pill in the info row. */
.office-card-role-badge{
  font-size:10.5px;font-weight:700;letter-spacing:.02em;
  padding:2px 9px;border-radius:99px;
  background:rgba(255,255,255,.05);
  border:1px solid var(--border);
  color:var(--text-muted);
}
.office-card-role-badge.is-manager{
  background:var(--accent-dim);color:var(--accent);
  border-color:rgba(205,161,44,.32);
}
.office-card-role-badge i{margin-inline-end:4px;color:inherit!important}

/* Legacy .office-description block — kept as backwards-compat for
 * any caller still rendering the old structure. New code uses the
 * unwrapped name / location / description elements above. */
.office-description{padding:14px 18px 4px;text-align:start}
.office-description h3{color:var(--text-primary);font-size:16px;font-weight:600;line-height:1.4;margin:0 0 6px;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.office-description a{text-decoration:none}
.office-description .muted{font-size:12px;color:var(--text-muted)!important;margin-bottom:6px}
.office-description p:not(.muted){
  font-size:13px;color:var(--text-muted);line-height:1.55;margin:0 0 4px;
  max-height:none;min-height:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.office-description p::-webkit-scrollbar{display:none}
/* The group-card-unread rule that used to live here moved to groups.css
 * once groups stopped reusing the .office-* scaffold. The class is a
 * group concept; offices.css has no business styling it. */


/* ──────────────────────────────────────────────────────────────────
 * 1B · Office search-result card — dedicated namespace
 *
 * Visually mirrors the listing `.office-card` today, but lives in its
 * own class set so a future "denser search card" / "no-staff search
 * card" tweak doesn't ripple into the offices listing. Used by
 * templates/offices/_search_card.html only. The cover-gradient inner
 * (.office-cover-gradient + .office-cover-initial from
 * _office_cover.html) stays shared as a true primitive — those are
 * the placeholder visual, not "an office card piece."
 * ────────────────────────────────────────────────────────────────── */
.office-search-card{
  position:relative;
  background:linear-gradient(0deg,rgba(255,199,60,.06) 0%,var(--bg-card) 65%);
  border:1px solid var(--border);
  border-radius:14px;
  padding:0;margin-bottom:0;
  overflow:hidden;
  /* Project card-height standard — see .office-card above for
   * rationale. Set explicitly per-card (no shared variable) so the
   * office search card can evolve independently. */
  height:480px;width:100%;
  display:flex;flex-direction:column;
  transition:background .2s,transform .3s,box-shadow .2s,border-color .2s;
  box-shadow:var(--shadow-sm);
}
.office-search-card:hover{
  background:linear-gradient(0deg,rgba(255,199,60,.12) 0%,var(--bg-surface) 65%);
  transform:translateY(-4px);
  box-shadow:0 14px 32px rgba(0,0,0,.32),0 0 0 1px rgba(205,161,44,.20);
  border-color:rgba(205,161,44,.30);
}
.office-search-card-cover{position:relative;aspect-ratio:16/9;width:100%;overflow:hidden;background:var(--bg-surface);margin-bottom:0!important}
.office-search-card-cover a{display:block;width:100%;height:100%}
.office-search-card-cover img{width:100%;height:100%;border-radius:0;object-fit:cover;display:block;transition:transform .5s var(--ease);max-height:none}
.office-search-card:hover .office-search-card-cover img{transform:scale(1.04)}
.office-search-card-cover::after{content:"";position:absolute;left:0;right:0;bottom:0;height:34%;background:linear-gradient(to top,rgba(0,0,0,.30),transparent);pointer-events:none;z-index:1}
.office-search-card-cover .office-cover-gradient{height:100%;border-radius:0}
.office-search-card-description{padding:14px 18px 4px;text-align:start}
.office-search-card-description h3{
  color:var(--text-primary);font-size:16px;font-weight:600;line-height:1.4;margin:0 0 6px;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
.office-search-card-description a{text-decoration:none}
.office-search-card-description .muted{font-size:12px;color:var(--text-muted)!important;margin-bottom:6px}
.office-search-card-description p:not(.muted){
  font-size:13px;color:var(--text-muted);line-height:1.55;margin:0 0 4px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.office-search-card-information{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;
  padding:8px 18px 14px;border-top:1px solid var(--border);
  margin-top:auto;
}
.office-search-card-information i{margin-right:5px;color:var(--text-muted);font-size:11px}
.office-search-card-information span{margin-right:0;color:var(--text-muted);font-size:12px;display:inline-flex;align-items:center;gap:5px}


/* ──────────────────────────────────────────────────────────────────
 * 2 · Add / edit form + cover gradient fallback
 * ────────────────────────────────────────────────────────────────── */
.add-office-form{background:var(--bg-card);border:1px solid var(--border);padding:28px;border-radius:14px;margin-bottom:15px;box-shadow:var(--shadow-sm)}
.add-office-form h2{color:var(--accent);margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--border);font-size:18px;letter-spacing:.01em}
.add-office-form input,.add-office-form select,.add-office-form textarea{background-color:var(--bg-surface)!important;color:var(--text-primary);border:1px solid var(--border-hover);border-radius:var(--radius-sm)}
.add-office-form textarea{resize:none}
.add-office-form input:focus,.add-office-form textarea:focus{background-color:var(--bg-surface)!important;color:var(--text-primary);border:1px solid rgba(255,199,60,.40)!important;box-shadow:none!important;outline:none!important}

.office-form-head{margin-bottom:20px;padding-bottom:18px;border-bottom:1px solid var(--border)}
.office-form-title{color:var(--accent);font-size:22px;font-weight:700;margin:0 0 6px}
.office-form-sub{color:var(--text-muted);font-size:13px;margin:0 0 8px;line-height:1.55}
.office-form-quota{color:var(--text-secondary);font-size:12px;margin:0;display:flex;align-items:center;gap:6px}
.office-form-quota i{color:var(--accent)}
.office-form-banner{background:rgba(255,199,60,.10);border:1px solid rgba(255,199,60,.35);border-radius:var(--radius-md);padding:10px 14px;color:var(--text-primary);font-size:13px;margin-bottom:18px;display:flex;align-items:center;gap:8px;position:relative;z-index:2}
.office-form-banner i{color:var(--accent)}
.office-form-section{margin-bottom:22px;padding-bottom:18px;border-bottom:1px dashed var(--border)}
.office-form-section:last-of-type{border-bottom:none;padding-bottom:8px;margin-bottom:14px}
.office-form-section-title{font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin:0 0 12px}
.office-form-section-hint{font-size:12px;color:var(--text-muted);margin:-4px 0 12px;line-height:1.5}
.office-form-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:8px}

.office-cover-gradient{width:100%;height:200px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}
.office-cover-gradient::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 20%, rgba(255,255,255,.18), transparent 55%);pointer-events:none}
.office-cover-initial{font-size:64px;font-weight:800;color:rgba(255,255,255,.92);text-shadow:0 4px 14px rgba(0,0,0,.25);font-family:'Nunito',sans-serif;letter-spacing:-1px;z-index:1}
.office-cover-gradient-hero{height:auto;aspect-ratio:1/1;border-radius:12px}
.office-cover-initial-hero{font-size:96px}


/* ──────────────────────────────────────────────────────────────────
 * 3 · Manage-staff page (Step 4)
 * ────────────────────────────────────────────────────────────────── */
.staff-invite-row{position:relative}
.staff-role-form{display:flex;gap:8px;align-items:center}


/* ──────────────────────────────────────────────────────────────────
 * 4 · Detail page (.ov-*) — Step 5 hero + sidebar
 *
 * Layout: 1100-px container splits into a 2:1 grid on desktop, single
 * column on phones. The main column owns the hero + tabs + portfolio
 * grid; the aside owns About / Contact / Map / Open-roles / Followers.
 * Mirrors view_post / view_project / view_job in feel; the .ov- prefix
 * keeps the namespace separate from .jv-* so jobs.css and offices.css
 * never collide on a page that loads both (e.g. profile).
 * ────────────────────────────────────────────────────────────────── */
.ov-page{max-width:1100px;margin:0 auto}
.ov-back{
  display:inline-flex;align-items:center;gap:8px;
  font-size:13px;color:var(--text-muted);text-decoration:none;
  margin-bottom:20px;transition:color .15s;
}
.ov-back:hover{color:var(--accent)}

.ov-grid{
  display:grid;grid-template-columns:1fr 320px;gap:24px;
  align-items:start;
}
@media (max-width: 980px){
  .ov-grid{grid-template-columns:1fr;gap:18px}
}

.ov-main{min-width:0}
.ov-aside{display:flex;flex-direction:column;gap:14px;min-width:0;position:relative}

/* Hero card */
.ov-hero{
  position:relative;
  background:var(--bg-card);
  border:1px solid var(--border);
  border-radius:18px;
  padding:24px 26px;
  box-shadow:var(--shadow-sm);
  overflow:hidden;
}
.ov-hero::before{
  content:"";position:absolute;inset:0;
  background:transparent;
  pointer-events:none;
}
.ov-hero-row{position:relative;z-index:1;display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap}
.ov-hero-mark{
  flex-shrink:0;width:120px;height:120px;border-radius:14px;
  overflow:hidden;background:var(--bg-surface);position:relative;
}
.ov-hero-mark img{width:100%;height:100%;object-fit:cover;display:block}
.ov-hero-mark .office-cover-gradient{height:100%;border-radius:14px}
.ov-hero-mark .office-cover-initial{font-size:56px}
.ov-hero-text{flex:1;min-width:0}
.ov-hero-eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
  color:var(--accent);margin:0 0 8px;
}
.ov-hero-eyebrow i{font-size:11px}
.ov-hero-title{
  margin:0 0 10px;font-size:28px;font-weight:700;line-height:1.2;
  color:var(--text-primary);font-family:'Nunito',sans-serif;letter-spacing:-.01em;
}
.ov-hero-meta{
  display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--text-muted);margin:0 0 12px;
}
.ov-hero-meta i{margin-inline-end:4px;color:var(--accent);font-size:11px}
.ov-hero-fields{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.ov-hero-stats{
  display:flex;flex-wrap:wrap;gap:10px 18px;font-size:12px;color:var(--text-muted);
  border-top:1px dashed var(--border);padding-top:12px;margin-top:8px;
}
.ov-hero-stats strong{color:var(--text-primary);font-weight:700;font-variant-numeric:tabular-nums}
.ov-hero-staff-stack{display:flex;align-items:center;gap:0;margin-inline-start:auto}
.ov-hero-staff-stack img{
  width:30px;height:30px;border-radius:50%;object-fit:cover;
  border:2px solid var(--bg-card);margin-inline-end:-8px;
}
.ov-hero-staff-stack .ov-hero-staff-more{
  display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;
  background:var(--bg-surface);border:2px solid var(--bg-card);
  font-size:11px;font-weight:700;color:var(--text-muted);
}
.ov-hero-verified{
  display:inline-flex;align-items:center;gap:5px;
  background:rgba(205,161,44,.18);color:var(--accent);
  border:1px solid rgba(205,161,44,.40);
  font-size:11px;font-weight:700;padding:3px 10px;border-radius:99px;
  letter-spacing:.04em;text-transform:uppercase;
}
.ov-hero-verified i{font-size:10px}

/* Hero action row */
.ov-actions{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  margin-top:16px;padding-top:14px;border-top:1px solid var(--border);
  position:relative;z-index:1;
}
.ov-action-btn{
  display:inline-flex;align-items:center;gap:6px;font-size:13px;
  padding:8px 14px;border-radius:10px;cursor:pointer;
  transition:background .15s,border-color .15s,color .15s;
}
.ov-share-wrap{position:relative}
.ov-share-menu{
  display:none;position:absolute;top:calc(100% + 6px);right:0;
  background:var(--bg-card);border:1px solid var(--border-hover);
  border-radius:12px;box-shadow:0 12px 32px rgba(0,0,0,.40);
  min-width:200px;padding:6px;z-index:50;
}
.ov-share-menu.is-open{display:block}
.ov-share-menu a{
  display:flex;align-items:center;gap:10px;padding:8px 12px;
  text-decoration:none;color:var(--text-primary);font-size:13px;border-radius:8px;
}
.ov-share-menu a:hover{background:var(--bg-surface);color:var(--accent)}

/* Tabs */
.ov-tabs{
  display:flex;gap:4px;flex-wrap:wrap;
  border-bottom:1px solid var(--border);margin:24px 0 0;padding:0 0 0 4px;
}
.ov-tab{
  background:transparent;border:none;cursor:pointer;
  font-size:13px;font-weight:600;color:var(--text-muted);
  padding:10px 16px;border-radius:10px 10px 0 0;
  display:inline-flex;align-items:center;gap:6px;
  transition:color .15s,background .15s;
}
.ov-tab i{font-size:12px}
.ov-tab:hover{color:var(--text-primary);background:rgba(205,161,44,.06)}
.ov-tab.is-active{
  color:var(--accent);background:var(--accent-dim);
  box-shadow:inset 0 -2px 0 var(--accent);
}
.ov-tab-count{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 6px;border-radius:99px;
  font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums;
  background:var(--accent-dim);color:var(--accent);
}
.ov-tab-panel{display:none;padding:20px 0 0}
.ov-tab-panel.is-active{display:block}

/* Sections inside the main column */
.ov-section{
  background:var(--bg-card);border:1px solid var(--border);
  border-radius:14px;padding:20px 22px;margin-top:18px;
  box-shadow:var(--shadow-sm);
}
.ov-section-title{
  margin:0 0 14px;font-size:14px;font-weight:700;
  color:var(--text-primary);display:flex;align-items:center;gap:8px;
  text-transform:uppercase;letter-spacing:.06em;
}
.ov-section-title i{color:var(--accent);font-size:13px}
.ov-empty{
  padding:24px 12px;text-align:center;color:var(--text-muted);font-size:13px;
}

/* Aside cards */
.ov-aside-card{
  background:var(--bg-card);border:1px solid var(--border);
  border-radius:14px;padding:16px 18px;
  box-shadow:var(--shadow-sm);
}
.ov-aside-card-label{
  margin:0 0 10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:var(--text-muted);display:flex;align-items:center;gap:7px;
}
.ov-aside-card-label i{color:var(--accent);font-size:11px}
.ov-aside-card p{margin:0;font-size:13px;color:var(--text-secondary);line-height:1.6}
.ov-aside-card a{color:var(--accent);text-decoration:none}
.ov-aside-card a:hover{text-decoration:underline}
.ov-aside-contact{display:flex;flex-direction:column;gap:8px;font-size:13px}
.ov-aside-contact-row{display:flex;align-items:flex-start;gap:8px;color:var(--text-secondary);word-break:break-word}
.ov-aside-contact-row i{color:var(--text-muted);font-size:12px;margin-top:3px}
.ov-aside-job{
  display:flex;flex-direction:column;gap:4px;padding:10px 0;
  border-top:1px dashed var(--border);
}
.ov-aside-job:first-of-type{border-top:none;padding-top:0}
.ov-aside-job a{
  font-size:13px;font-weight:600;color:var(--text-primary);text-decoration:none;
}
.ov-aside-job a:hover{color:var(--accent)}
.ov-aside-job-meta{font-size:11px;color:var(--text-muted)}
.ov-aside-followers{display:flex;align-items:center;gap:0}
.ov-aside-followers img{
  width:28px;height:28px;border-radius:50%;object-fit:cover;
  border:2px solid var(--bg-card);margin-inline-end:-6px;
}
.ov-aside-followers .ov-aside-followers-more{
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;border-radius:50%;
  background:var(--bg-surface);border:2px solid var(--bg-card);
  font-size:11px;font-weight:700;color:var(--text-muted);
  margin-inline-start:8px;
}
.ov-map-placeholder{
  height:140px;border-radius:10px;
  background:var(--bg-surface);
  border:1px dashed var(--border);
  display:flex;align-items:center;justify-content:center;
  font-size:11px;color:var(--text-muted);text-align:center;padding:8px;
}


/* ──────────────────────────────────────────────────────────────────
 * 4b · Detail page — legacy wrappers used inside the new tabs
 * (portfolio rollup, project / job grids carry over from the
 * pre-Step-5 page; their existing classes still serve them well).
 * ────────────────────────────────────────────────────────────────── */
.office-p-information{background:var(--bg-card);border:1px solid var(--border);padding:24px;border-radius:14px;box-shadow:var(--shadow-sm)}
.office-p-information img{max-width:100%;border-radius:var(--radius-md);object-fit:cover}
.office-p-information-data div{margin-bottom:16px}
.office-p-information-data div i{color:var(--text-muted)}
.office-p-information-data div p{color:var(--text-muted);font-size:13px}
.office-p-information-data div span{color:var(--accent);font-size:16px}
.office-p-staff-div{background-color:var(--bg-card);border-radius:22px;padding:24px;margin-top:22px}
.office-p-staff-div h4{color:var(--accent)}

/* Office portfolio rollup — aggregate stats panel that turns the page
 * into a portfolio. Auto-fits 4-up on desktop, 2-up on phones. */
.office-portfolio{
  background:var(--bg-card);
  border:1px solid var(--border);
  border-radius:14px;padding:20px 22px;margin-top:18px;
  box-shadow:var(--shadow-sm);
}
.office-portfolio-label{
  font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);margin:0 0 14px;display:flex;align-items:center;gap:8px;
}
.office-portfolio-label i{color:var(--accent);font-size:12px}
.office-portfolio-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;
}
.office-portfolio-stat{
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:14px 16px;text-align:start;
  transition:border-color .15s,background .15s;
}
.office-portfolio-stat:hover{border-color:rgba(205,161,44,.30)}
.office-portfolio-num{
  font-size:24px;font-weight:700;color:var(--accent);margin:0 0 2px;
  letter-spacing:.01em;line-height:1.1;
}
.office-portfolio-num small{font-size:13px;font-weight:600;color:var(--text-muted);margin-left:2px;letter-spacing:0}
.office-portfolio-sub{
  font-size:11px;font-weight:600;color:var(--text-muted);margin:0;
  text-transform:uppercase;letter-spacing:.06em;
}
.office-portfolio-mats{margin-top:18px;padding-top:16px;border-top:1px dashed var(--border)}
.office-portfolio-mats-label{
  font-size:10.5px;font-weight:700;color:var(--text-muted);
  text-transform:uppercase;letter-spacing:.06em;margin:0 0 10px;
}
.office-portfolio-mat-chips{display:flex;flex-wrap:wrap;gap:7px}
.office-portfolio-mat-chip{
  display:inline-flex;align-items:center;gap:7px;
  padding:5px 12px;border-radius:99px;
  background:var(--accent-dim);color:var(--accent);
  border:1px solid rgba(205,161,44,.30);
  font-size:11.5px;font-weight:600;letter-spacing:.02em;
}
.office-portfolio-mat-chip small{
  font-size:10px;font-weight:700;
  background:rgba(0,0,0,.18);color:inherit;
  padding:1px 6px;border-radius:99px;
  letter-spacing:0;
}

.office-p-manager-card{background-color:var(--bg-surface);padding:18px;border-radius:var(--radius-lg);margin:auto;transition:background .15s}
.office-p-manager-card:hover{background-color:#1f2d42}
.office-p-manager-card img{width:80px;height:80px;object-fit:cover;border-radius:var(--radius-md)}
.office-p-manager-card h3{color:var(--accent)}
.office-p-manager-card p{margin:4px;color:var(--text-secondary)}
.office-p-manager-card span{color:var(--text-muted)}
.office-p-staff-card{width:100%;background-color:var(--bg-surface);padding:12px;border-radius:var(--radius-md);margin:auto;transition:background .15s}
.office-p-staff-card:hover{background-color:#1f2d42}
.office-p-staff-card img{width:44px;height:44px;object-fit:cover;border-radius:var(--radius-sm)}
.office-p-staff-card p{margin:4px;font-size:13px;color:var(--text-secondary)}
.office-p-staff-card span{color:var(--text-muted)}
.office-p-projects{border-radius:14px;margin-top:18px;padding:0}
.office-p-projects .project-card{margin-top:20px}


/* ──────────────────────────────────────────────────────────────────
 * 5 · Work-fields dropdown (used by add_office / edit_office)
 * ────────────────────────────────────────────────────────────────── */
.wf-wrap{position:relative;margin-bottom:16px}
.wf-label{display:block;font-size:14px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}
.wf-trigger{width:100%;background:var(--bg-surface);border:1px solid var(--border-hover);border-radius:var(--radius-sm);padding:8px 12px;color:var(--text-primary);font-size:14px;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px;flex-wrap:wrap}
.wf-trigger:focus{outline:none;border-color:rgba(255,199,60,.5)}
.wf-pills{display:flex;flex-wrap:wrap;gap:4px;flex:1}
.wf-pill{background:var(--accent-dim);color:var(--accent);font-size:11px;padding:2px 8px;border-radius:99px;font-weight:600}
.wf-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--bg-card);border:1px solid var(--border-hover);border-radius:var(--radius-sm);z-index:1001;box-shadow:0 8px 24px rgba(0,0,0,.4);padding:8px 0;max-height:280px;overflow-y:auto;display:none}
.wf-panel.open{display:block}
.wf-option{display:flex;align-items:center;gap:10px;padding:8px 16px;cursor:pointer;font-size:13px;color:var(--text-primary);transition:background .1s}
.wf-option:hover{background:var(--bg-surface)}
.wf-option input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;cursor:pointer;flex-shrink:0}
.wf-other-wrap{padding:8px 16px 12px}
.wf-other-wrap input{width:100%}


/* ──────────────────────────────────────────────────────────────────
 * 6 · Print stylesheet — strip chrome, drop decorations, force
 * print-grade typography. Mirrors jobs.css's @media print block.
 * ────────────────────────────────────────────────────────────────── */
@media print{
  body{background:#fff!important;color:#000!important;font-size:13.5pt;line-height:1.7}
  .navbar, footer, .ov-back, .ov-actions, .ov-tabs, .ov-aside,
  .arch-modal, .arch-modal-close{display:none!important}
  .ov-grid{grid-template-columns:1fr!important;gap:0!important}
  .ov-page{max-width:100%!important;padding:0!important}
  .ov-hero{
    background:#fff!important;border:1pt solid #999!important;
    box-shadow:none!important;page-break-inside:avoid;
  }
  .ov-hero::before{display:none!important}
  .ov-hero-title{color:#000!important;font-size:22pt!important}
  .ov-section{
    background:#fff!important;border:1pt solid #ddd!important;
    box-shadow:none!important;page-break-inside:avoid;
  }
  .ov-section-title{color:#000!important;border-bottom:1pt solid #999;padding-bottom:4pt}
  .office-p-staff-card, .office-p-manager-card{
    background:#fff!important;border:1pt solid #ddd!important;
  }
  .office-portfolio{
    background:#fff!important;border:1pt solid #999!important;page-break-inside:avoid;
  }
  .office-portfolio-stat{background:#fff!important;border:1pt solid #ddd!important}
  .office-portfolio-num{color:#000!important}
  a{color:#000!important;text-decoration:none!important}
  .ov-tab-panel{display:block!important}
}

/* ─────────────────────────────────────────────────────────────────────
 * REDESIGN — view_office (the public office page).
 * Aesthetic: brand gold (--accent), glassy hero with gold halo, glass
 * cards with subtle border + shadow, info-list pattern shared with
 * .jv-info-list, sticky TOC with a gold underline on the active item.
 * Light/dark theme aware via design tokens.
 * ─────────────────────────────────────────────────────────────────── */

.ovr-page{
  max-width:1180px;margin:0 auto;padding:24px 18px 80px;
  color:var(--text-primary);
}

/* ── Hero ── glassy panel + gold halo + cover image as soft backdrop. */
.ovr-hero{
  position:relative;border-radius:var(--radius-xl);overflow:hidden;
  background:var(--bg-surface);border:1px solid var(--border-hover);
  box-shadow:var(--shadow-lg);
  margin-bottom:22px;
}
.ovr-hero-cover{
  position:relative;height:240px;background-size:cover;background-position:center;
}
.ovr-hero-cover::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.55) 70%,var(--bg-surface) 100%);
}
.ovr-hero-body{
  position:relative;z-index:2;
  display:flex;align-items:flex-end;gap:22px;
  padding:0 32px 26px;margin-top:-90px;
  flex-wrap:wrap;
}
.ovr-hero-body::before{
  content:"";position:absolute;inset:-40px 0 0 0;
  background:transparent;
  pointer-events:none;border-radius:var(--radius-xl);
}
.ovr-logo{
  width:120px;height:120px;border-radius:var(--radius-lg);overflow:hidden;
  background:var(--bg-card);border:3px solid var(--bg-surface);
  box-shadow:var(--shadow-md);
  display:flex;align-items:center;justify-content:center;
  color:var(--accent);font-size:38px;font-weight:700;
  flex-shrink:0;position:relative;z-index:1;
}
.ovr-logo img{width:100%;height:100%;object-fit:cover;display:block}
.ovr-hero-text{flex:1;min-width:240px;position:relative;z-index:1;padding-bottom:6px}
.ovr-eyebrow{
  display:inline-block;padding:4px 12px;border-radius:99px;
  background:var(--accent-dim);color:var(--accent);
  font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  margin-bottom:10px;
}
.ovr-title{
  margin:0;font-size:32px;font-weight:700;letter-spacing:-.01em;line-height:1.15;
  color:var(--text-primary);display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.ovr-title .verified{color:var(--accent);font-size:18px}
.ovr-hero-meta{
  display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;
  color:var(--text-muted);font-size:13px;align-items:center;
}
.ovr-hero-meta i{color:var(--accent);margin-right:5px;font-size:12px}
.ovr-actions{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  margin-top:18px;padding-top:16px;border-top:1px solid var(--border);
  position:relative;z-index:1;
}
.ovr-actions .btn{font-size:13px;padding:8px 14px;border-radius:10px}

/* ── Section card ── true glass: blurred translucent surface, gold-
 *    halo top-corner glow, soft inner highlight, lifts on hover. */
.ovr-section{
  position:relative;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-lg);
  padding:28px 30px;margin-bottom:18px;
  box-shadow:0 6px 22px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.04);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  backdrop-filter:blur(14px) saturate(140%);
  overflow:hidden;
  transition:border-color .2s,transform .15s var(--ease),box-shadow .2s;
}
[data-theme="light"] .ovr-section{
  background:var(--bg-card);
}
.ovr-section::before{
  content:"";position:absolute;top:0;left:0;right:0;height:120px;
  background:transparent;
  pointer-events:none;
}
.ovr-section:hover{
  border-color:rgba(205,161,44,.30);
  box-shadow:0 10px 28px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.06);
}
.ovr-section-head{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  margin-bottom:6px;
}

/* Section "share as image" button — sits at the far right of the
 * section head, snaps a JPG of the card and offers a native share
 * (with download fallback). Scoped to the ovr-section markup. */
.ovr-share-btn{
  margin-inline-start:auto;
  width:34px;height:34px;border-radius:10px;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.40);
  color:var(--accent);font-size:13px;
  cursor:pointer;flex-shrink:0;
  transition:background .15s,border-color .15s,transform .15s,box-shadow .15s;
}
.ovr-share-btn:hover{
  background:var(--accent);
  color:#0f1521;border-color:rgba(205,161,44,.70);
  transform:translateY(-1px);
  box-shadow:0 6px 16px rgba(205,161,44,.20);
}
.ovr-share-btn:active{transform:translateY(0)}
.ovr-share-btn:disabled{opacity:.6;cursor:wait;transform:none}
.ovr-share-btn.is-loading i{animation:ovrShareSpin .8s linear infinite}
@keyframes ovrShareSpin{to{transform:rotate(360deg)}}

/* Toast emitted by the section-share script. Fixed bottom-center,
 * fades after a couple of seconds. */
.ovr-share-toast{
  position:fixed;left:50%;bottom:24px;transform:translateX(-50%);
  z-index:1080;
  display:inline-flex;align-items:center;gap:8px;
  padding:10px 16px;border-radius:99px;
  background:var(--accent);
  color:#0f1521;font-size:13px;font-weight:700;
  box-shadow:0 12px 28px rgba(0,0,0,.30),0 0 0 1px rgba(205,161,44,.40);
  opacity:0;transition:opacity .25s ease,transform .25s ease;
  pointer-events:none;
}
.ovr-share-toast.is-visible{opacity:1;transform:translate(-50%,-6px)}
.ovr-share-toast i{font-size:12px}
.ovr-share-toast.is-error{
  background:#b91c1c;
  color:#fff;
}
.ovr-section-head h2{
  margin:0;font-size:20px;font-weight:700;letter-spacing:-.01em;
  color:var(--text-primary);
}
.ovr-section-tag{
  font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;
  color:var(--accent);background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.30);border-radius:99px;
  padding:3px 10px;
}
.ovr-lede{
  color:var(--text-muted);font-size:13.5px;line-height:1.6;
  margin:0 0 18px;max-width:780px;
}

/* In-section tabs — used by the merged Statistics / Interactions
 * card on view_office. Mirrors the env-projects-tabs vocabulary so
 * the language stays consistent across the site. Each tab is forced
 * to share the row equally via flex:1 1 0 so the strip reads as a
 * segmented control filling the full section width. */
.ovr-tabs{
  display:flex;gap:4px;
  padding:5px;margin:12px 0 16px;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:12px;
}
.ovr-tab{
  flex:1 1 0;min-width:0;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  background:transparent;border:none;cursor:pointer;
  color:var(--text-secondary);
  font-size:12.5px;font-weight:600;letter-spacing:.005em;
  padding:9px 14px;border-radius:8px;
  text-align:center;
  transition:background .15s,color .15s,box-shadow .15s;
}
.ovr-tab i{font-size:11px;color:var(--accent)}
.ovr-tab:hover{color:var(--text-primary);background:rgba(205,161,44,.08)}
.ovr-tab.is-active{
  color:var(--accent);
  background:var(--accent-dim);
  box-shadow:
    inset 0 0 0 1px rgba(205,161,44,.45),
    inset 0 1px 0 rgba(255,255,255,.08);
}
.ovr-tab-pane{display:none}
.ovr-tab-pane.is-active{display:block}
/* Both panes lock the lede paragraph to a single line so the pane
 * never grows taller because one tab's hint wraps. Long text gets
 * ellipsis on narrow viewports rather than wrapping. */
.ovr-tab-pane > .ovr-lede{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:100%;
}

/* ── Info-list ── label/value rows (shared style with .jv-info-list). */
.ovr-info{display:grid;grid-template-columns:1fr;gap:0;margin:0;padding:0}
.ovr-info > div{
  display:grid;grid-template-columns:200px 1fr;align-items:start;gap:12px;
  padding:12px 0;border-top:1px solid var(--border);
}
.ovr-info > div:first-child{border-top:0;padding-top:0}
.ovr-info dt{
  margin:0;font-size:13px;font-weight:600;color:var(--text-muted);letter-spacing:.02em;
  display:inline-flex;align-items:center;gap:8px;
}
.ovr-info dt i{color:var(--accent);font-size:13px;width:18px;text-align:center}
.ovr-info dd{margin:0;font-size:14.5px;color:var(--text-primary);font-weight:500;line-height:1.5;word-break:break-word}
.ovr-info dd a{color:var(--accent);text-decoration:none}
.ovr-info dd a:hover{color:var(--accent-hover);text-decoration:underline}
@media(max-width:560px){
  .ovr-info > div{grid-template-columns:1fr;gap:4px}
  .ovr-info dt{margin-bottom:2px}
}

/* ── Stat tiles ── kept for back-compat; the redesigned Stats and
 *    Interactions sections now use the .ovr-explorer-card pattern
 *    below. */
.ovr-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:900px){.ovr-stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.ovr-stats{grid-template-columns:repeat(2,1fr)}}
.ovr-stat{
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:18px 14px;text-align:center;
  transition:border-color .15s,transform .15s var(--ease);
}
.ovr-stat:hover{border-color:rgba(205,161,44,.30);transform:translateY(-2px)}
.ovr-stat .num{font-size:30px;font-weight:700;color:var(--accent);letter-spacing:-.02em;line-height:1}
.ovr-stat .lbl{margin-top:6px;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}

/* ── Explorer-card pattern (mirrors landing page .home-explorer-card)
 *    used by Statistics + Architectena interactions sections.
 *    Frosted-glass tile with a coloured icon square, a title,
 *    a one-line blurb, and a gold-accent count. */
.ovr-explorer-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;
}
.ovr-explorer-card{
  position:relative;overflow:hidden;
  display:flex;align-items:flex-start;gap:14px;padding:18px 18px 16px;
  border-radius:var(--radius-lg);
  background:color-mix(in srgb, var(--bg-card) 70%, transparent);
  -webkit-backdrop-filter:blur(10px) saturate(120%);
  backdrop-filter:blur(10px) saturate(120%);
  border:1px solid var(--border);
  text-decoration:none;color:inherit;
  transition:transform .25s var(--ease),border-color .15s,box-shadow .25s var(--ease),background .25s var(--ease);
}
.ovr-explorer-card::before{
  content:"";position:absolute;inset:0;opacity:0;
  background:transparent;
  transition:opacity .25s var(--ease);pointer-events:none;
}
.ovr-explorer-card:hover{
  transform:translateY(-3px);
  border-color:rgba(205,161,44,.40);
  box-shadow:0 14px 32px rgba(0,0,0,.22);
}
.ovr-explorer-card:hover::before{opacity:1}
.ovr-explorer-icon{
  width:48px;height:48px;border-radius:14px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(205,161,44,.14);color:var(--accent);
  border:1px solid rgba(205,161,44,.30);
  font-size:18px;position:relative;z-index:1;
  transition:transform .25s var(--ease);
}
.ovr-explorer-card:hover .ovr-explorer-icon{transform:scale(1.06)}
.ovr-explorer-text{position:relative;z-index:1;min-width:0;flex:1}
.ovr-explorer-num{
  font-size:26px;font-weight:700;color:var(--accent);
  letter-spacing:-.02em;line-height:1.05;margin:0 0 2px;
  font-variant-numeric:tabular-nums;
}

/* Per-card colour vocabulary (mirrors the landing-page explorer):
 *   gold  = project / built-work / awards
 *   cyan  = content / data / offerings
 *   slate = business / operational metrics
 *   plum  = people / community
 */
.ovr-explorer-card.is-gold::before{background:transparent}
.ovr-explorer-card.is-gold:hover{border-color:rgba(205,161,44,.45)}
.ovr-explorer-card.is-gold .ovr-explorer-icon{background:rgba(205,161,44,.14);color:var(--accent);border-color:rgba(205,161,44,.30)}
.ovr-explorer-card.is-gold .ovr-explorer-num{color:var(--accent)}

.ovr-explorer-card.is-cyan::before{background:transparent}
.ovr-explorer-card.is-cyan:hover{border-color:rgba(56,189,248,.45)}
.ovr-explorer-card.is-cyan .ovr-explorer-icon{background:rgba(56,189,248,.14);color:#7dd3fc;border-color:rgba(56,189,248,.30)}
.ovr-explorer-card.is-cyan .ovr-explorer-num{color:#7dd3fc}
[data-theme="light"] .ovr-explorer-card.is-cyan .ovr-explorer-icon{color:#0284c7}
[data-theme="light"] .ovr-explorer-card.is-cyan .ovr-explorer-num{color:#0284c7}

.ovr-explorer-card.is-slate::before{background:transparent}
.ovr-explorer-card.is-slate:hover{border-color:rgba(148,163,184,.55)}
.ovr-explorer-card.is-slate .ovr-explorer-icon{background:rgba(148,163,184,.14);color:#cbd5e1;border-color:rgba(148,163,184,.32)}
.ovr-explorer-card.is-slate .ovr-explorer-num{color:#cbd5e1}
[data-theme="light"] .ovr-explorer-card.is-slate .ovr-explorer-icon{color:#475569}
[data-theme="light"] .ovr-explorer-card.is-slate .ovr-explorer-num{color:#475569}

.ovr-explorer-card.is-plum::before{background:transparent}
.ovr-explorer-card.is-plum:hover{border-color:rgba(192,132,252,.45)}
.ovr-explorer-card.is-plum .ovr-explorer-icon{background:rgba(192,132,252,.14);color:#d8b4fe;border-color:rgba(192,132,252,.32)}
.ovr-explorer-card.is-plum .ovr-explorer-num{color:#d8b4fe}
[data-theme="light"] .ovr-explorer-card.is-plum .ovr-explorer-icon{color:#7c3aed}
[data-theme="light"] .ovr-explorer-card.is-plum .ovr-explorer-num{color:#7c3aed}
.ovr-explorer-num small{
  font-size:12px;font-weight:600;color:var(--text-muted);
  letter-spacing:.04em;text-transform:uppercase;margin-left:5px;
}
.ovr-explorer-title{
  font-size:13.5px;font-weight:700;color:var(--text-primary);
  margin:0 0 3px;letter-spacing:.005em;
}
.ovr-explorer-blurb{
  font-size:12px;color:var(--text-muted);line-height:1.5;margin:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
@media(max-width:560px){
  .ovr-explorer-grid{grid-template-columns:1fr}
}

/* ── Project cards (view_office Work section) ──
 * Rule 0 — every card identical in h/w. Cover ratio fixed, title
 * line-clamped to 2, meta to 1, body grows via flex:1 so the cover
 * stays glued to the top and the meta stays in a fixed cell at the
 * bottom regardless of title length. min-height pins the overall
 * card so empty cells don't collapse. */
.ovr-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.ovr-card{
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-md);overflow:hidden;
  text-decoration:none;color:var(--text-primary);
  display:flex;flex-direction:column;
  min-height:280px;
  transition:border-color .2s,transform .2s var(--ease),box-shadow .2s;
}
.ovr-card:hover{
  border-color:rgba(205,161,44,.45);transform:translateY(-3px);
  box-shadow:var(--shadow-md);text-decoration:none;color:var(--text-primary);
}
.ovr-card .img-frame{overflow:hidden;flex-shrink:0}
.ovr-card .img{
  aspect-ratio:16/10;background:var(--bg-card) center/cover;
  transition:transform .35s var(--ease);
}
.ovr-card:hover .img{transform:scale(1.04)}
.ovr-card .body{
  padding:12px 14px;
  flex:1;display:flex;flex-direction:column;gap:4px;min-width:0;
}
.ovr-card .ttl{
  font-weight:600;color:var(--text-primary);font-size:14px;line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.ovr-card .meta{
  margin-top:auto;color:var(--text-muted);font-size:11.5px;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}

/* ── Staff tiles ── clean: avatar · name + role · tenure · resume.
 *    The body column gets ``min-width:0`` so long usernames wrap
 *    inside the rounded border. */
.ovr-staff-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.ovr-staff{
  position:relative;
  display:flex;align-items:flex-start;gap:12px;
  background:rgba(26,36,54,.42);
  border:1px solid var(--border);
  border-radius:var(--radius-md);padding:12px 14px;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  transition:border-color .15s,transform .15s var(--ease),box-shadow .15s;
}
[data-theme="light"] .ovr-staff{background:rgba(255,255,255,.55)}
.ovr-staff:hover{
  border-color:rgba(205,161,44,.40);transform:translateY(-2px);
  box-shadow:var(--shadow-sm);
}
.ovr-staff .avatar-link{
  display:block;flex-shrink:0;line-height:0;
  border-radius:50%;text-decoration:none;
  transition:transform .15s var(--ease);
}
.ovr-staff .avatar-link:hover{transform:scale(1.06)}
.ovr-staff img,.ovr-staff .ph{
  width:44px;height:44px;border-radius:50%;flex-shrink:0;display:block;
}
.ovr-staff img{object-fit:cover;background:var(--bg-card)}
.ovr-staff .ph{
  background:var(--accent-dim);color:var(--accent);font-weight:700;font-size:15px;
  display:flex;align-items:center;justify-content:center;
}
.ovr-staff .nm-link{display:block;text-decoration:none;color:inherit;line-height:1.15}
.ovr-staff .nm-link:hover .nm{color:var(--accent);text-decoration:none}
.ovr-staff .body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ovr-staff .nm{
  font-weight:600;color:var(--text-primary);font-size:13.5px;line-height:1.2;
  word-break:break-word;
}
.ovr-staff .rl{
  color:var(--text-muted);font-size:11px;font-weight:600;
  text-transform:uppercase;letter-spacing:.06em;line-height:1.2;
}
.ovr-staff .joined{
  display:inline-flex;align-items:center;gap:5px;
  color:var(--text-muted);font-size:11px;margin-top:2px;
}
.ovr-staff .joined i{color:var(--accent);font-size:9.5px}
.ovr-staff .resume{
  align-self:flex-start;
  display:inline-flex;align-items:center;gap:4px;
  font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:var(--accent);
  margin-top:6px;padding:3px 9px;border-radius:99px;
  background:transparent;border:1px solid rgba(205,161,44,.32);
  text-decoration:none;
  transition:background .15s,color .15s,border-color .15s;
}
.ovr-staff .resume i{font-size:10px}
.ovr-staff .resume:hover{background:var(--accent-dim);border-color:rgba(205,161,44,.55);color:var(--accent-hover);text-decoration:none}

/* ── Manager card ── visually loud: spans two columns when there's
 *    room, gets a stronger gold gradient + ring, larger avatar with
 *    crown overlay, eyebrow "Director" chip. */
.ovr-staff--manager{
  grid-column:span 2;
  align-items:center;gap:18px;padding:18px 22px;
  background:var(--bg-card);
  border:1px solid rgba(205,161,44,.55);
  box-shadow:0 8px 28px rgba(205,161,44,.10), inset 0 1px 0 rgba(255,255,255,.06);
}
[data-theme="light"] .ovr-staff--manager{
  background:var(--bg-card);
}
@media(max-width:560px){.ovr-staff--manager{grid-column:span 1}}
.ovr-staff--manager .avatar-link{position:relative}
.ovr-staff--manager .avatar-link::after{
  content:"\f521";font-family:"Font Awesome 6 Free";font-weight:900;
  position:absolute;top:-8px;right:-6px;
  background:var(--accent);color:#1a2436;
  width:22px;height:22px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:10px;
  box-shadow:0 2px 6px rgba(0,0,0,.30);
}
.ovr-staff--manager img,.ovr-staff--manager .ph{
  width:64px;height:64px;font-size:22px;
}
.ovr-staff--manager .ph{
  background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.50);
}
.ovr-staff--manager .nm{font-size:17px;font-weight:700;letter-spacing:-.005em}
.ovr-staff--manager .nm-link:hover .nm{color:var(--accent-hover)}
.ovr-staff--manager .rl{
  color:var(--accent);font-size:10.5px;font-weight:800;letter-spacing:.10em;
  margin-bottom:2px;
}
.ovr-staff--manager .resume{
  background:var(--accent-dim);border-color:rgba(205,161,44,.50);
}

/* ── Awards ── plaque-feel cards. */
.ovr-awards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.ovr-award{
  background:var(--bg-card);
  border:1px solid rgba(205,161,44,.28);
  border-radius:var(--radius-md);padding:16px;
  position:relative;
}
.ovr-award::before{
  content:"\f559";font-family:"Font Awesome 6 Free";font-weight:900;
  position:absolute;top:14px;right:16px;color:var(--accent);font-size:22px;opacity:.55;
}
.ovr-award .nm{font-weight:700;color:var(--text-primary);font-size:14.5px;padding-right:30px;line-height:1.3}
.ovr-award .yr{color:var(--accent);font-weight:700;font-size:12.5px;margin-top:6px}
.ovr-award .lk{margin-top:8px;display:inline-block;color:var(--text-muted);font-size:12px;text-decoration:none}
.ovr-award .lk:hover{color:var(--accent)}

/* ── Gallery ── tile grid with hover zoom + caption fade-in. */
.ovr-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.ovr-gallery .tile{
  position:relative;aspect-ratio:1/1;overflow:hidden;
  background:var(--bg-card) center/cover;
  border-radius:var(--radius-md);border:1px solid var(--border);
  display:block;text-decoration:none;
  /* button reset */
  padding:0;cursor:zoom-in;
  transition:transform .25s var(--ease),box-shadow .2s;
}
.ovr-gallery .tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.ovr-gallery .tile-cap{
  position:absolute;left:0;right:0;bottom:0;
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.85));
  color:#fff;font-size:11.5px;font-weight:600;padding:18px 10px 8px;
  opacity:0;transition:opacity .2s;
}
.ovr-gallery .tile:hover .tile-cap{opacity:1}

/* ── Empty / placeholder ── */
.ovr-empty{
  text-align:center;padding:24px 18px;
  background:var(--bg-surface);border:1px dashed var(--border-hover);
  border-radius:var(--radius-md);color:var(--text-muted);font-size:13px;
}

/* ── Two-column section split ── */
.ovr-split{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start}
@media(max-width:900px){.ovr-split{grid-template-columns:1fr}}
.ovr-map{
  width:100%;height:260px;border:1px solid var(--border);
  border-radius:var(--radius-md);background:var(--bg-surface);
}

/* ── Reviews ── two columns side by side: peer (Architectena) on
 *    the left, customers on the right. Each pane has its own
 *    eyebrow chip + count, and the cards inside use the same glass
 *    treatment as the rest of the page. */
.ovr-reviews{
  display:grid;grid-template-columns:1fr 1fr;gap:16px;
}
@media(max-width:900px){.ovr-reviews{grid-template-columns:1fr}}
.ovr-review-pane{
  position:relative;
  background:rgba(26,36,54,.42);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:18px 18px 14px;
}
[data-theme="light"] .ovr-review-pane{background:rgba(255,255,255,.55)}
.ovr-review-pane-head{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin:0 0 14px;
}
.ovr-review-pane-head h3{
  margin:0;font-size:11.5px;font-weight:800;letter-spacing:.10em;
  text-transform:uppercase;color:var(--accent);
  display:inline-flex;align-items:center;gap:8px;
}
.ovr-review-pane-head h3 i{font-size:12px}
.ovr-review-pane-head .count{
  font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-muted);
  padding:2px 9px;border-radius:99px;
  background:var(--bg-surface);border:1px solid var(--border);
}
.ovr-review-list{display:flex;flex-direction:column;gap:10px}
.ovr-review-card{
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:12px 14px;
  transition:border-color .15s,transform .15s var(--ease);
}
.ovr-review-card:hover{border-color:rgba(205,161,44,.35);transform:translateY(-1px)}
.ovr-review-head{
  display:flex;align-items:center;gap:10px;margin-bottom:6px;
}
.ovr-review-head img,.ovr-review-head .ph{
  width:34px;height:34px;border-radius:50%;flex-shrink:0;
}
.ovr-review-head img{object-fit:cover;background:var(--bg-card)}
.ovr-review-head .ph{
  background:var(--accent-dim);color:var(--accent);font-weight:700;font-size:13px;
  display:flex;align-items:center;justify-content:center;
}
.ovr-review-head .who{flex:1;min-width:0;line-height:1.2}
.ovr-review-head .who-link{color:var(--text-primary);font-weight:600;font-size:13px;text-decoration:none;display:block}
.ovr-review-head .who-link:hover{color:var(--accent);text-decoration:none}
.ovr-review-head .when{color:var(--text-muted);font-size:11px;margin-top:2px}
.ovr-review-stars{
  color:var(--accent);font-size:12px;letter-spacing:1.5px;flex-shrink:0;
}
.ovr-review-stars .empty{color:rgba(205,161,44,.25)}
.ovr-review-body{
  margin:6px 0 0;font-size:13px;line-height:1.55;color:var(--text-secondary);
  white-space:pre-wrap;word-break:break-word;
}
.ovr-review-chip{
  display:inline-flex;align-items:center;gap:5px;
  margin-top:8px;padding:2px 9px;border-radius:99px;
  font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  background:var(--accent-dim);color:var(--accent);border:1px solid rgba(205,161,44,.30);
}

/* ── Specialty / chip pill ── */
.ovr-pill{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 10px;font-size:11.5px;font-weight:600;
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:99px;color:var(--text-secondary);
  margin:2px 4px 2px 0;
}
.ovr-pill--gold{background:var(--accent-dim);color:var(--accent);border-color:rgba(205,161,44,.30)}

/* ── Print: keep it tidy ── */
@media print{
  .ovr-actions,.ovr-hero-cover{display:none}
  .ovr-section{break-inside:avoid;border:1px solid #ddd;box-shadow:none}
}

/* ─────────────────────────────────────────────────────────────────────
 * Office-env welcome banner — the big "you're in a safe, isolated
 * environment" announcement at the top of the env dashboard.
 * Reads as a holographic glass slab so the user feels they've
 * stepped into a different room of the platform.
 * ─────────────────────────────────────────────────────────────────── */
.env-welcome{
  position:relative;overflow:hidden;
  margin:0 0 14px;border-radius:18px;
  background:var(--bg-card);
  -webkit-backdrop-filter:blur(22px) saturate(170%);
  backdrop-filter:blur(22px) saturate(170%);
  border:1px solid rgba(205,161,44,.25);
  box-shadow:
    0 10px 28px rgba(0,0,0,.28),
    0 0 0 1px rgba(205,161,44,.08),
    inset 0 1px 0 rgba(255,255,255,.06),
    inset 0 -1px 0 rgba(0,0,0,.22);
  padding:18px 20px;
}
[data-theme="light"] .env-welcome{
  background:var(--bg-card);
  border-color:rgba(205,161,44,.30);
}
.env-welcome::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:transparent;
  border-radius:inherit;
}
/* ── Welcome head: eyebrow chip + tight title + one-liner ── */
.env-welcome-head{position:relative;z-index:1;margin-bottom:14px}
.env-welcome-eyebrow{
  display:inline-flex;align-items:center;gap:7px;
  padding:3px 10px;border-radius:99px;
  background:rgba(205,161,44,.16);color:var(--accent);
  border:1px solid rgba(205,161,44,.40);
  font-size:10px;font-weight:800;letter-spacing:.10em;text-transform:uppercase;
}
.env-welcome-eyebrow i{font-size:10px}
.env-welcome-title{
  margin:8px 0 2px;font-size:22px;font-weight:700;letter-spacing:-.01em;
  color:var(--text-primary);line-height:1.2;
}
.env-welcome-sub{
  margin:0;font-size:12.5px;line-height:1.5;
  color:var(--text-muted);
}
.env-welcome-sub strong{color:var(--text-primary);font-weight:600}

/* ── Featured row: Role · Time · Latest activity, all same row,
 *    same height. Role + Time are 1fr each (half their previous
 *    width). Activity expands to 2fr on the right of the same card. */
.env-feature-row{
  position:relative;z-index:1;
  display:grid;grid-template-columns:1fr 1fr 2fr;gap:12px;
  align-items:stretch;
  margin-bottom:14px;
}
@media(max-width:980px){.env-feature-row{grid-template-columns:1fr 1fr;}.env-feature--activity{grid-column:1/-1}}
@media(max-width:560px){.env-feature-row{grid-template-columns:1fr}.env-feature--activity{grid-column:auto}}
.env-feature{
  display:flex;align-items:center;gap:14px;
  padding:14px 16px;border-radius:14px;
  border:1px solid var(--border);
  background:rgba(255,255,255,.03);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  transition:transform .2s var(--ease),box-shadow .2s;
}
.env-feature:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.20)}
.env-feature-icon{
  width:52px;height:52px;flex-shrink:0;
  border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  font-size:22px;
  background:rgba(205,161,44,.14);color:var(--accent);
  border:1px solid rgba(205,161,44,.30);
}
.env-feature-text{flex:1;min-width:0}
.env-feature-label{
  font-size:10.5px;font-weight:800;letter-spacing:.10em;text-transform:uppercase;
  color:var(--text-muted);margin-bottom:3px;
}
.env-feature-value{
  font-size:24px;font-weight:700;letter-spacing:-.01em;
  color:var(--text-primary);line-height:1.1;
  font-variant-numeric:tabular-nums;
}
.env-feature-meta{
  margin-top:3px;font-size:11px;color:var(--text-muted);
}

/* Role card — gold-tinted, Director / Staff name in gold. */
.env-feature--role{
  background:linear-gradient(135deg,rgba(205,161,44,.18) 0%,rgba(205,161,44,.04) 100%);
  border-color:rgba(205,161,44,.40);
}
.env-feature--role .env-feature-value{color:var(--accent)}

/* Time card — cyan-tinted, live-counting number in cyan. */
.env-feature--time{
  background:linear-gradient(135deg,rgba(56,189,248,.16) 0%,rgba(56,189,248,.02) 100%);
  border-color:rgba(56,189,248,.40);
}
.env-feature--time .env-feature-icon{
  background:rgba(56,189,248,.14);color:#7dd3fc;border-color:rgba(56,189,248,.30);
}
.env-feature--time .env-feature-value{color:#7dd3fc}
[data-theme="light"] .env-feature--time .env-feature-icon{color:#0284c7}
[data-theme="light"] .env-feature--time .env-feature-value{color:#0284c7}

/* ── Compact quick-link pills under the feature row ── */
.env-quick-links{
  position:relative;z-index:1;
  display:flex;flex-wrap:wrap;gap:6px;
}
.env-quick{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 11px;border-radius:8px;
  background:rgba(255,255,255,.04);border:1px solid var(--border);
  color:var(--text-secondary);font-size:12px;font-weight:600;
  text-decoration:none;
  transition:background .15s,border-color .15s,color .15s,transform .15s var(--ease);
}
.env-quick i{color:var(--accent);font-size:11px}
.env-quick:hover{
  background:rgba(205,161,44,.10);border-color:rgba(205,161,44,.35);
  color:var(--text-primary);text-decoration:none;transform:translateY(-1px);
}

/* ── Activity feature card (third column of the feature row) ── */
.env-feature--activity{
  flex-direction:column;align-items:stretch;
  gap:6px;padding:12px 14px;
  background:rgba(255,255,255,.03);
}
.env-feature-activity-head{
  display:flex;justify-content:space-between;align-items:center;gap:8px;
}
.env-activity-eyebrow{
  display:inline-flex;align-items:center;gap:6px;
  font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--accent);
}
.env-activity-eyebrow i{font-size:11px}
.env-activity-more{
  font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--accent);text-decoration:none;
  display:inline-flex;align-items:center;gap:4px;white-space:nowrap;
}
.env-activity-more i{font-size:9px;transition:transform .15s var(--ease)}
.env-activity-more:hover{color:var(--accent-hover);text-decoration:none}
.env-activity-more:hover i{transform:translateX(3px)}
.env-activity-empty{color:var(--text-muted);font-size:11.5px;margin:4px 0 0}

.env-feed{
  list-style:none;margin:0;padding:0;
  display:flex;flex-direction:column;
  flex:1;min-height:0;overflow:hidden;
}
.env-feed li{
  display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:baseline;
  padding:3px 0;border-top:1px dashed var(--border);
  font-size:11.5px;color:var(--text-secondary);line-height:1.3;
}
.env-feed li:first-child{border-top:0;padding-top:0}
/* Fit ~3-4 events inside the card so it stays the height of the
 * Role/Time card next to it. Hide the rest. */
.env-feed li:nth-child(n+5){display:none}
.env-feed-kind{
  font-weight:600;color:var(--text-primary);font-size:12px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.env-feed-when{color:var(--text-muted);font-size:10.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.env-feed-actor{color:var(--accent);font-size:10.5px;font-weight:600;white-space:nowrap}

/* ─────────────────────────────────────────────────────────────────────
 * Office add/edit form — inline-formset rows for emails / phones /
 * gallery, plus a unified "+ Add row" button.
 * ─────────────────────────────────────────────────────────────────── */
.arch-formset-rows{display:flex;flex-direction:column;gap:10px;margin:6px 0 10px}
.arch-formset-row{
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:12px 14px 8px;
  transition:border-color .15s;
}
.arch-formset-row:hover{border-color:var(--border-hover)}
.arch-formset-row-grid{
  display:grid;grid-template-columns:2fr 1fr 100px;gap:12px;align-items:start;
}
@media(max-width:560px){
  .arch-formset-row-grid{grid-template-columns:1fr}
}
.arch-formset-row-grid .form-group{margin-bottom:0}
.arch-formset-row-del{
  display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  font-size:12px;color:var(--text-muted);
  margin:4px 0 0;padding:3px 0;
}
.arch-formset-row-del input[type=checkbox]{
  margin:0;accent-color:#ef6f6c;
}
.arch-formset-row-del:hover{color:#ef6f6c}
.arch-formset-add{
  font-size:13px;padding:8px 14px;border-radius:10px;align-self:flex-start;
  display:inline-flex;align-items:center;gap:6px;
}
.arch-formset-add i{color:var(--accent)}


/* ── Office verification — method-picker chips ──────────────────────
 *
 * Three-up segmented control on the "Office verification" section of
 * manage_credentials. Each chip is a label wrapping a hidden radio
 * input; the gold accent on .is-active uses the same brand colour the
 * verified badge / arch-cta affordances use, so the affordance reads
 * as the same idea. JS in the same template flips .is-active and
 * shows/hides the Domain or Document field below.
 * ────────────────────────────────────────────────────────────────── */
.verify-form{display:flex;flex-direction:column;gap:18px}
.verify-method-chips{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;
}
@media (max-width:640px){
  .verify-method-chips{grid-template-columns:1fr}
}
.verify-method-chip{
  display:flex;align-items:flex-start;gap:12px;
  padding:14px 16px;border-radius:14px;cursor:pointer;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  color:var(--text-muted);
  transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform .15s;
  position:relative;user-select:none;
}
.verify-method-chip input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.verify-method-chip:hover{
  border-color:rgba(205,161,44,.40);
  color:var(--text-primary);
  background:var(--bg-surface);
}
.verify-method-chip.is-active{
  border-color:rgba(205,161,44,.65);
  color:var(--text-primary);
  background:var(--accent-dim);
  box-shadow:0 0 0 1px rgba(205,161,44,.30) inset, 0 8px 20px rgba(0,0,0,.18);
}
.verify-method-chip.is-active .vmc-icon{
  background:rgba(205,161,44,.20);
  color:#facc15;
  border-color:rgba(205,161,44,.45);
}
.vmc-icon{
  flex-shrink:0;
  width:38px;height:38px;
  display:flex;align-items:center;justify-content:center;
  border-radius:10px;
  background:rgba(255,255,255,.04);
  border:1px solid var(--border);
  color:var(--text-muted);
  font-size:16px;
  transition:background .15s,border-color .15s,color .15s;
}
.vmc-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.vmc-title{
  font-weight:700;font-size:13px;color:var(--text-primary);
  letter-spacing:.01em;line-height:1.25;
}
.verify-method-chip.is-active .vmc-title{color:#facc15}
.vmc-sub{
  font-size:11.5px;color:var(--text-muted);line-height:1.35;
}

/* Domain / document field rows under the chip picker. The .verify-form
 * grid handles spacing; these rules give the inputs the same chrome
 * the arch-form-shell uses for normal text inputs but scoped so we
 * don't depend on the crispy-rendered .form-control class. */
.verify-field-row{display:flex;flex-direction:column;gap:6px}
.verify-field-label{
  font-size:11px;color:var(--text-muted);
  text-transform:uppercase;letter-spacing:.06em;font-weight:700;
}
.verify-field-input,
.verify-field-file{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-sm);
  color:var(--text-primary);
  padding:10px 14px;font-size:14px;
  transition:border-color .15s,box-shadow .15s;
}
.verify-field-input:focus,
.verify-field-file:focus{
  outline:none;
  border-color:rgba(205,161,44,.55);
  box-shadow:0 0 0 3px rgba(205,161,44,.18);
}
.verify-field-file{
  cursor:pointer;
  border-style:dashed;
  background:var(--bg-card);
}
.verify-field-hint{
  margin:0;font-size:11.5px;color:var(--text-muted);
}
.verify-submit-row{
  display:flex;justify-content:flex-end;gap:8px;
  padding-top:4px;
}


/* ── Credential add-entry disclosure cards ──────────────────────────
 *
 * Used by manage_credentials.html for the "Add service", "Add award",
 * "Add press entry" forms. Each is a <details> element styled as a
 * polished card with a chip-style trigger. Closed state shows a
 * compact pill; open state expands the form with a clean field grid.
 * Visual family matches the .verify-method-chip pattern from the
 * Office verification section above so the credentials page reads as
 * one consistent surface.
 * ────────────────────────────────────────────────────────────────── */
.cred-add-card{
  margin-top:14px;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:14px;
  overflow:hidden;
  transition:border-color .15s, background .15s, box-shadow .15s;
}
.cred-add-card[open]{
  border-color:rgba(205,161,44,.55);
  background:var(--bg-card);
  box-shadow:0 8px 20px rgba(0,0,0,.18);
}
.cred-add-card > summary{
  list-style:none;cursor:pointer;
  padding:14px 18px;
  display:flex;align-items:center;gap:14px;
  user-select:none;
}
.cred-add-card > summary::-webkit-details-marker{display:none}
.cred-add-card > summary:hover{background:rgba(255,255,255,.02)}
.cred-add-card[open] > summary{
  border-bottom:1px solid rgba(205,161,44,.30);
}
.cred-add-toggle-icon{
  flex-shrink:0;
  width:36px;height:36px;
  display:flex;align-items:center;justify-content:center;
  border-radius:10px;
  background:rgba(205,161,44,.16);
  border:1px solid rgba(205,161,44,.35);
  color:#facc15;
  font-size:14px;
  transition:transform .25s ease;
}
.cred-add-card[open] .cred-add-toggle-icon{
  background:rgba(205,161,44,.24);
  border-color:rgba(205,161,44,.55);
  transform:rotate(45deg);
}
.cred-add-toggle-text{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.cred-add-toggle-title{
  font-weight:700;font-size:14px;color:var(--text-primary);
  letter-spacing:.01em;line-height:1.25;
}
.cred-add-toggle-sub{
  font-size:12px;color:var(--text-muted);line-height:1.4;
}
.cred-add-toggle-chev{
  flex-shrink:0;
  width:28px;height:28px;
  display:flex;align-items:center;justify-content:center;
  border-radius:8px;
  background:rgba(255,255,255,.04);
  border:1px solid var(--border);
  color:var(--text-muted);
  font-size:11px;
  transition:transform .25s ease, color .15s, border-color .15s;
}
.cred-add-card[open] .cred-add-toggle-chev{
  transform:rotate(180deg);
  color:#facc15;
  border-color:rgba(205,161,44,.40);
}

/* Form body — opens with a clean grid of field rows. */
.cred-add-form{
  padding:18px 20px 18px;
  display:flex;flex-direction:column;gap:14px;
}
.cred-field-row{display:flex;flex-direction:column;gap:6px}
.cred-field-row--pair{
  flex-direction:row;gap:12px;flex-wrap:wrap;
}
.cred-field-row--pair > .cred-field-cell{
  flex:1;min-width:140px;display:flex;flex-direction:column;gap:6px;
}
.cred-field-label{
  font-size:11px;color:var(--text-muted);
  text-transform:uppercase;letter-spacing:.06em;font-weight:700;
}
.cred-field-optional{
  text-transform:none;letter-spacing:0;font-weight:500;
  color:var(--text-muted);opacity:.75;
}
.cred-field-input,
.cred-field-textarea{
  width:100%;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-sm);
  color:var(--text-primary);
  padding:10px 14px;font-size:14px;
  font-family:inherit;
  transition:border-color .15s, box-shadow .15s, background .15s;
}
.cred-field-input[type="date"]{color-scheme:dark}
[data-theme="light"] .cred-field-input[type="date"]{color-scheme:light}
.cred-field-input:hover,
.cred-field-textarea:hover{border-color:rgba(205,161,44,.40)}
.cred-field-input:focus,
.cred-field-textarea:focus{
  outline:none;
  border-color:rgba(205,161,44,.65);
  box-shadow:0 0 0 3px rgba(205,161,44,.18);
  background:var(--bg-surface);
}
.cred-field-textarea{resize:vertical;min-height:72px;line-height:1.5}
.cred-form-actions{
  display:flex;justify-content:flex-end;gap:8px;
  padding-top:4px;
}


/* ── Multi-path verification banner + stars ──────────────────────────
 *
 * Replaces the old single-line "Verified via X" banner on
 * manage_credentials. Shows three stars (filled per credited path)
 * plus a subline listing which paths counted toward the count.
 * Paired with the .is-credited chip state in _verify_idle.html so
 * already-completed methods stay visible but disabled.
 * ────────────────────────────────────────────────────────────────── */
.verify-banner{
  display:flex;gap:14px;align-items:flex-start;
  padding:16px 18px;margin-bottom:18px;
  border-radius:14px;
  background:var(--bg-card);
  border:1px solid rgba(52,211,153,.40);
}
.verify-banner-mark{
  flex-shrink:0;
  width:42px;height:42px;
  display:flex;align-items:center;justify-content:center;
  border-radius:11px;
  background:rgba(52,211,153,.18);
  border:1px solid rgba(52,211,153,.40);
  color:#34d399;
  font-size:18px;
}
.verify-banner-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.verify-banner-title{
  margin:0;display:inline-flex;align-items:center;gap:12px;flex-wrap:wrap;
  font-weight:700;font-size:15px;color:var(--text-primary);letter-spacing:.01em;
}
.verify-stars{
  display:inline-flex;gap:3px;align-items:center;
  padding:3px 9px;border-radius:99px;
  background:rgba(205,161,44,.16);
  border:1px solid rgba(205,161,44,.40);
}
.verify-stars i{
  font-size:12px;color:#facc15;
  filter:drop-shadow(0 1px 0 rgba(0,0,0,.25));
}
.verify-stars i.is-empty{
  color:rgba(205,161,44,.30);
  filter:none;
}
.verify-banner-sub{
  margin:0;font-size:12px;color:var(--text-muted);line-height:1.45;
}
.verify-banner-more{color:var(--accent);font-weight:600}
.verify-banner-max{color:#34d399;font-weight:600}

/* Credited chip — already-completed verification methods sit in
 * the picker but locked out. Painted green-edge so the manager can
 * see at a glance which paths still need work. */
.verify-method-chip.is-credited{
  border-color:rgba(52,211,153,.55);
  background:var(--bg-surface);
  cursor:default;
  opacity:.95;
}
.verify-method-chip.is-credited:hover{
  border-color:rgba(52,211,153,.65);
  background:var(--bg-surface);
  transform:none;
}
.verify-method-chip.is-credited .vmc-icon{
  background:rgba(52,211,153,.20);
  border-color:rgba(52,211,153,.45);
  color:#34d399;
}
.verify-method-chip.is-credited .vmc-title{color:#34d399}
.verify-method-chip.is-credited .vmc-sub{color:var(--text-primary);opacity:.85}


/* ── Manage staff — Active card redesign ─────────────────────────────
 *
 * Replaces the old .office-p-staff-card layout on the Active strip.
 * Three rows: identity header (avatar · name · status pill) → role
 * label inline-edit (input + Save) → action footer (Pause · Block ·
 * Remove). Surface treatment matches the verification banner +
 * credential add-card family so the whole office-management surface
 * reads as one consistent design system.
 *
 * Status colour follows the project rule: success-green for an active
 * member, no decorative tints. Buttons stay within the approved four.
 * Pending / paused-blocked variants kept on the old class for now —
 * out of scope for this redesign per the user's ask.
 * ────────────────────────────────────────────────────────────────── */
.staff-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));
  gap:14px;
}
.staff-card{
  display:flex;flex-direction:column;gap:14px;
  padding:18px 20px;
  border-radius:14px;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  transition:background .15s, border-color .15s, box-shadow .15s, transform .15s;
  position:relative;z-index:0;
}
/* Lift the card above siblings while any combo inside it is open,
   so the floating panel clears adjacent cards in the grid. */
.staff-card:has(.arch-combo.is-open){z-index:20}
.staff-card:hover{
  border-color:rgba(205,161,44,.40);
  background:var(--bg-surface);
  box-shadow:0 8px 20px rgba(0,0,0,.18);
  transform:translateY(-1px);
}
.staff-card.is-active{
  border-color:rgba(52,211,153,.30);
  background:var(--bg-card);
}
.staff-card.is-active:hover{
  border-color:rgba(52,211,153,.50);
  background:var(--bg-surface);
}

/* Header row — avatar + name block + status badge */
.staff-card-head{
  display:flex;align-items:center;gap:14px;
}
.staff-card-avatar{
  flex-shrink:0;display:block;
  width:52px;height:52px;border-radius:50%;
  overflow:hidden;
  border:2px solid rgba(255,255,255,.06);
  background:var(--bg-surface);
  transition:border-color .15s, transform .15s;
}
.staff-card-avatar:hover{
  border-color:rgba(205,161,44,.45);
  transform:scale(1.04);
}
.staff-card-avatar img{
  width:100%;height:100%;object-fit:cover;display:block;
}
.staff-card-identity{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.staff-card-name{
  margin:0;
  font-weight:700;font-size:14px;color:var(--text-primary);
  letter-spacing:.01em;line-height:1.3;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.staff-card-username{
  margin:0;font-size:12px;color:var(--text-muted);line-height:1.35;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.staff-card-badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:4px 10px;border-radius:99px;
  font-size:10.5px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;
  flex-shrink:0;
}
.staff-card-badge i{font-size:8px}
.staff-card-badge--active{
  background:rgba(52,211,153,.16);
  color:#34d399;
  border:1px solid rgba(52,211,153,.45);
}

/* Role inline-edit — labelled row with proper input chrome */
.staff-card-role-form{display:flex;flex-direction:column;gap:6px}
.staff-card-label{
  font-size:10.5px;color:var(--text-muted);
  text-transform:uppercase;letter-spacing:.06em;font-weight:700;
  display:block;text-align:start;
}
.staff-card-role-row{display:flex;gap:6px;align-items:stretch;flex-wrap:wrap;min-width:0}
/* Dependent-picker variant — dept + role side-by-side, save tucked
 * on its own row underneath. Compact metrics so the two combos fit
 * inside any card. */
.staff-card-org-row{
  flex-wrap:nowrap;align-items:center;justify-content:flex-start;
  min-width:0;
}
/* Force the two combos to share the row 50/50, never wrap. ``min-width:0``
 * lets them shrink past their content size so the parent card width
 * always wins — labels truncate with ellipsis inside the trigger. */
.staff-card-org-row .arch-combo{flex:1 1 0;min-width:0;width:auto}
.staff-card-org-row .arch-combo-trigger{
  box-sizing:border-box;
  height:32px;line-height:1;
  display:inline-flex;align-items:center;
}

/* Compact combobox inside staff cards — tighter than the default
 * widget metrics. */
.staff-card-org-row .arch-combo-trigger{
  padding:0 8px;font-size:11.5px;
  border-radius:8px;
}
.staff-card-org-row .arch-combo-chevron{font-size:9px}
.staff-card-org-row .arch-combo-panel{
  width:max(100%, 220px);max-width:min(300px, 88vw);
}
.staff-card-org-row .arch-combo-search{padding:6px 8px}
.staff-card-org-row .arch-combo-search-input{padding:5px 8px 5px 24px;font-size:11.5px}
.staff-card-org-row .arch-combo-search i{left:14px;font-size:11px}
.staff-card-org-row .arch-combo-options li{padding:6px 12px;font-size:12px}
.staff-card-org-row .arch-combo-options li small{font-size:10.5px}

/* ──────────────────────────────────────────────────────────────────
 * Searchable combobox — site-style replacement for native <select>.
 * Trigger reads as a glass-styled input; the panel is a floating
 * frosted card with a search input + alphabetised options list.
 * Reused on manage_staff + office-env staff_list.
 * ────────────────────────────────────────────────────────────────── */
.arch-combo{
  position:relative;
  width:100%;
  min-width:0;          /* lets grid/flex parents shrink the combobox */
  box-sizing:border-box;
}
.arch-combo-trigger{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  width:100%;min-width:0;box-sizing:border-box;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-sm);
  color:var(--text-primary);
  padding:8px 12px;font-size:13px;
  font-family:inherit;text-align:start;cursor:pointer;
  transition:border-color .15s,box-shadow .15s,background .15s;
}
.arch-combo-trigger:hover{border-color:rgba(205,161,44,.40)}
.arch-combo.is-open .arch-combo-trigger,
.arch-combo-trigger:focus{
  outline:none;
  border-color:rgba(205,161,44,.65);
  box-shadow:0 0 0 3px rgba(205,161,44,.18);
  background:var(--bg-card);
}
.arch-combo-label{
  flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.arch-combo-label.is-empty{color:var(--text-muted)}
.arch-combo-chevron{
  color:var(--accent);font-size:11px;flex-shrink:0;
  transition:transform .15s;
}
.arch-combo.is-open .arch-combo-chevron{transform:rotate(180deg)}

.arch-combo-panel{
  position:absolute;top:calc(100% + 4px);left:0;
  width:max(100%, 260px);                 /* min readable, may overflow card */
  max-width:min(360px, 90vw);             /* don't blow past the viewport */
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-sm);
  box-shadow:0 12px 32px rgba(0,0,0,.32),0 0 0 1px rgba(205,161,44,.10);
  -webkit-backdrop-filter:blur(18px) saturate(150%);
  backdrop-filter:blur(18px) saturate(150%);
  z-index:1080;display:none;
  isolation:isolate;
}
[data-theme="light"] .arch-combo-panel{
  background:rgba(255,255,255,.92);
  box-shadow:0 12px 32px rgba(0,0,0,.16),0 0 0 1px rgba(205,161,44,.14);
}
.arch-combo.is-open .arch-combo-panel{display:block}

.arch-combo-search{
  position:relative;
  padding:8px 10px;
  border-bottom:1px solid var(--border);
}
.arch-combo-search i{
  position:absolute;top:50%;left:18px;transform:translateY(-50%);
  color:var(--text-muted);font-size:12px;pointer-events:none;
}
.arch-combo-search-input{
  width:100%;box-sizing:border-box;
  background:var(--bg-surface);
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  color:var(--text-primary);
  padding:6px 10px 6px 28px;font-size:12.5px;
  font-family:inherit;
  transition:border-color .15s,box-shadow .15s;
}
.arch-combo-search-input:focus{
  outline:none;
  border-color:rgba(205,161,44,.65);
  box-shadow:0 0 0 2px rgba(205,161,44,.18);
}

.arch-combo-options{
  list-style:none;margin:0;padding:4px 0;
  max-height:220px;overflow-y:auto;
}
.arch-combo-options li{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:7px 14px;font-size:13px;color:var(--text-primary);
  cursor:pointer;line-height:1.3;
  transition:background .12s,color .12s;
}
.arch-combo-options li:hover,
.arch-combo-options li.is-active{
  background:var(--accent-dim);color:var(--accent);
}
.arch-combo-options li.is-selected{
  background:rgba(205,161,44,.14);
  color:var(--accent);font-weight:600;
}
.arch-combo-options li small{
  color:var(--text-muted);font-size:11px;font-weight:500;
  white-space:nowrap;
}
.arch-combo-options li:hover small,
.arch-combo-options li.is-active small{color:var(--accent)}
.arch-combo-empty{padding:10px 14px;font-size:12px;color:var(--text-muted);font-style:italic}

.staff-card-input{
  flex:1;min-width:0;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-sm);
  color:var(--text-primary);
  padding:8px 12px;font-size:13px;
  font-family:inherit;
  transition:border-color .15s, box-shadow .15s, background .15s;
}
.staff-card-input:hover{border-color:rgba(205,161,44,.40)}
.staff-card-input:focus{
  outline:none;
  border-color:rgba(205,161,44,.65);
  box-shadow:0 0 0 3px rgba(205,161,44,.18);
  background:var(--bg-card);
}
/* Save button now lives in the footer alongside Pause / Block /
 * Remove, so it picks up the .staff-card-action pill sizing for free.
 * Keep .staff-card-save as a marker hook (used by the dispatcher's
 * "Saved" flash) — no visual overrides needed. */

/* Actions footer — pills laid out in a flex row, wrap on overflow */
.staff-card-actions{
  display:flex;gap:8px;flex-wrap:wrap;
  padding-top:4px;
  border-top:1px solid rgba(255,255,255,.04);
  padding-top:14px;
}
.staff-card-action{
  font-size:11.5px;padding:6px 12px;line-height:1.2;height:auto;
  display:inline-flex;align-items:center;gap:6px;
}
.staff-card-action i{font-size:10px}


/* ── Manage staff — Pending / Paused / Blocked card variants ───────
 *
 * Same .staff-card scaffolding as the Active variant; status-tinted
 * border + gradient per the bucket. Pending uses brand gold (the
 * hourglass affordance), Paused uses neutral muted slate, Blocked
 * uses danger red — all status colours, no decoration.
 * ────────────────────────────────────────────────────────────────── */
.staff-card.is-pending{
  border-color:rgba(205,161,44,.32);
  background:var(--bg-card);
}
.staff-card.is-pending:hover{
  border-color:rgba(205,161,44,.55);
  background:var(--bg-surface);
}
.staff-card.is-paused{
  border-color:rgba(148,163,184,.25);
  background:var(--bg-card);
  opacity:.92;
}
.staff-card.is-paused:hover{
  border-color:rgba(148,163,184,.45);
  background:var(--bg-surface);
  opacity:1;
}
.staff-card.is-blocked{
  border-color:rgba(248,113,113,.30);
  background:var(--bg-card);
  opacity:.92;
}
.staff-card.is-blocked:hover{
  border-color:rgba(248,113,113,.50);
  background:var(--bg-surface);
  opacity:1;
}

/* Status badges per bucket. */
.staff-card-badge--pending{
  background:rgba(205,161,44,.16);
  color:#facc15;
  border:1px solid rgba(205,161,44,.45);
}
.staff-card-badge--paused{
  background:rgba(148,163,184,.16);
  color:#cbd5e1;
  border:1px solid rgba(148,163,184,.40);
}
.staff-card-badge--blocked{
  background:rgba(248,113,113,.16);
  color:#fca5a5;
  border:1px solid rgba(248,113,113,.45);
}

/* Username line tweak — pending uses an icon-led sub-line for the
 * "Invited X ago · by @inviter" string, so add a tiny icon size. */
.staff-card-username i{
  font-size:10px;margin-right:2px;color:var(--accent);
  opacity:.85;
}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Staff & roles page
 * Site-style redesign — glass cards, status-tinted permission chips,
 * arch-modal-driven permission editor. Layered on top of the shared
 * .staff-card vocabulary used by manage_staff.
 * ════════════════════════════════════════════════════════════════════ */
.env-staff-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}
.env-staff-summary{
  margin-inline-start:auto;
  background:var(--bg-card);border:1px solid var(--border-hover);
  border-radius:14px;padding:14px 18px;min-width:170px;text-align:end;
  box-shadow:var(--shadow-sm);
}
.env-staff-summary-num{
  margin:0;font-size:34px;font-weight:800;color:var(--accent);
  line-height:1;letter-spacing:.01em;
}
.env-staff-summary-lbl{
  margin:4px 0 0;font-size:11.5px;font-weight:600;
  color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;
}

.env-staff-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,380px),1fr));
  gap:14px;
}
.env-staff-card{position:relative}
.env-staff-card .staff-card-head{margin-bottom:14px}

/* Manager badge — distinct from active/paused/blocked, uses gold accent. */
.staff-card-badge--manager{
  background:var(--accent-dim);
  color:var(--accent);
  border:1px solid rgba(205,161,44,.40);
}

/* Permission chips block on the member card */
.env-staff-perms-block{
  margin-top:14px;padding-top:12px;
  border-top:1px dashed var(--border);
}
.env-staff-perms-block .staff-card-label{display:flex;align-items:center;gap:6px}
.env-staff-perms-block .staff-card-label i{color:var(--accent);font-size:10px}
.env-staff-perms{
  display:flex;flex-wrap:wrap;gap:5px;
}
.env-perm-chip{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 9px;border-radius:99px;
  font-size:11px;font-weight:600;letter-spacing:.01em;
  border:1px solid var(--border-hover);
  background:var(--bg-surface);color:var(--text-secondary);
  font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
}
.env-perm-chip i{font-size:9px}
.env-perm-chip--role{
  color:var(--text-primary);
  background:rgba(96,165,250,.10);
  border-color:rgba(96,165,250,.30);
}
.env-perm-chip--allow{
  color:#34d399;
  background:rgba(52,211,153,.10);
  border-color:rgba(52,211,153,.40);
}
.env-perm-chip--deny{
  color:#fca5a5;
  background:rgba(248,113,113,.10);
  border-color:rgba(248,113,113,.40);
}
.env-perm-chip--none{
  font-style:italic;color:var(--text-muted);
  background:transparent;border-color:var(--border);
}

/* Permission editor modal — radio rows */
.env-perms-modal-body{
  display:flex;flex-direction:column;gap:8px;
  max-height:50vh;overflow-y:auto;
  padding:4px 2px;
}
.env-perm-row{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-sm);
  padding:10px 12px;
}
.env-perm-row-head{
  display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  margin-bottom:8px;
}
.env-perm-row-head strong{
  font-size:13px;font-weight:700;color:var(--text-primary);
  font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
}
.env-perm-row-head span{
  font-size:12px;color:var(--text-muted);font-weight:500;
}
.env-perm-row-choices{
  display:flex;flex-wrap:wrap;gap:6px;
}
.env-perm-radio{
  position:relative;cursor:pointer;
  display:inline-flex;align-items:center;gap:5px;
  padding:4px 10px;border-radius:99px;
  border:1px solid var(--border-hover);
  background:var(--bg-card);
  color:var(--text-secondary);
  font-size:11.5px;font-weight:600;letter-spacing:.01em;
  transition:background .15s,border-color .15s,color .15s;
}
.env-perm-radio input{
  position:absolute;opacity:0;pointer-events:none;width:0;height:0;
}
.env-perm-radio:hover{border-color:rgba(205,161,44,.40)}
.env-perm-radio small{font-size:10.5px;color:var(--text-muted);font-weight:500;margin-inline-start:2px}
.env-perm-radio.is-default.is-checked,
.env-perm-radio.is-default input:checked + span{
  border-color:rgba(96,165,250,.45);
  background:rgba(96,165,250,.12);color:#9ec5fe;
}
.env-perm-radio.is-allow.is-checked{
  border-color:rgba(52,211,153,.50);
  background:rgba(52,211,153,.14);color:#34d399;
}
.env-perm-radio.is-deny.is-checked{
  border-color:rgba(248,113,113,.50);
  background:rgba(248,113,113,.14);color:#fca5a5;
}

/* Light theme tweaks */
[data-theme="light"] .env-perm-chip--role{
  color:#1d4ed8;background:rgba(29,78,216,.08);border-color:rgba(29,78,216,.22);
}
[data-theme="light"] .env-perm-chip--allow{
  color:#0f766e;background:rgba(15,118,110,.08);border-color:rgba(15,118,110,.28);
}
[data-theme="light"] .env-perm-chip--deny{
  color:#b91c1c;background:rgba(185,28,28,.08);border-color:rgba(185,28,28,.28);
}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Org chart & roles page
 * Glass section cards for Departments + Roles; chip-cards for each
 * department; structured role-cards with rank pill + perm chip cloud.
 * Reuses the .env-perm-chip palette from the Staff & roles page.
 * ════════════════════════════════════════════════════════════════════ */
.env-org-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}
.env-org-summary{
  margin-inline-start:auto;display:flex;gap:10px;flex-wrap:wrap;
}
.env-org-summary-cell{
  background:var(--bg-card);border:1px solid var(--border-hover);
  border-radius:14px;padding:12px 18px;min-width:120px;text-align:end;
  box-shadow:var(--shadow-sm);
}
.env-org-summary-num{
  margin:0;font-size:30px;font-weight:800;color:var(--accent);
  line-height:1;letter-spacing:.01em;
}
.env-org-summary-lbl{
  margin:4px 0 0;font-size:10.5px;font-weight:700;
  color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;
}

/* ── Compact table-style rows (replaces the card grid)
 * Departments + role rows share the same vocabulary so the page
 * reads as two stacked dense lists. */
.env-table{
  display:flex;flex-direction:column;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;overflow:hidden;
}
.env-table-head{
  display:flex;align-items:center;gap:12px;
  padding:8px 14px;
  font-size:10.5px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--text-muted);
  background:rgba(255,255,255,.02);
  border-bottom:1px solid var(--border-hover);
}
.env-table-row{
  display:flex;align-items:center;gap:12px;
  padding:8px 14px;
  border-top:1px solid var(--border);
  font-size:13px;line-height:1.3;
  transition:background .12s;
}
.env-table-row:first-of-type{border-top:none}
.env-table-row:hover{background:rgba(205,161,44,.05)}
.env-row-order{
  font-size:11.5px;font-weight:700;color:var(--text-muted);
  font-variant-numeric:tabular-nums;
}
.env-row-name{
  color:var(--text-primary);font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;
}
.env-row-stat{
  color:var(--text-secondary);font-weight:600;
  font-variant-numeric:tabular-nums;font-size:12.5px;
}
.env-row-actions{display:flex;justify-content:flex-end}
.env-row-delete{
  width:28px;height:28px;border-radius:8px;
  background:transparent;border:1px solid transparent;
  color:var(--text-muted);
  display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:11px;
  transition:background .12s,border-color .12s,color .12s;
}
.env-row-delete:hover{
  background:rgba(248,113,113,.10);
  border-color:rgba(248,113,113,.40);
  color:#fca5a5;
}

/* ── Role groups (collapsible by department)
 * One <details> per department. Headers show count; opening reveals
 * a tight list of role rows. */
.env-role-groups{display:flex;flex-direction:column;gap:8px}
.env-role-group{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;overflow:hidden;
}
.env-role-group-head{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;cursor:pointer;list-style:none;
  background:rgba(255,255,255,.02);
  transition:background .12s;
}
.env-role-group-head::-webkit-details-marker{display:none}
.env-role-group-head:hover{background:rgba(205,161,44,.06)}
.env-role-group-chevron{
  color:var(--accent);font-size:11px;transition:transform .15s;
}
.env-role-group[open] .env-role-group-chevron{transform:rotate(90deg)}
.env-role-group-name{
  flex:1;min-width:0;font-size:13.5px;font-weight:700;
  color:var(--text-primary);letter-spacing:-.005em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-role-group-count{
  flex-shrink:0;font-size:11px;font-weight:700;color:var(--accent);
  background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.30);
  padding:2px 9px;border-radius:99px;font-variant-numeric:tabular-nums;
}
.env-role-list{display:flex;flex-direction:column}
.env-role-row{
  display:flex;flex-wrap:wrap;align-items:center;gap:12px;
  padding:6px 14px;border-top:1px solid var(--border);
  font-size:13px;
  transition:background .12s;
}
.env-role-row:hover{background:rgba(205,161,44,.04)}
.env-role-row-rank{
  flex:0 0 36px;text-align:center;
  font-size:11.5px;font-weight:800;color:var(--accent);
  background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.30);
  padding:2px 0;border-radius:99px;font-variant-numeric:tabular-nums;
}
.env-role-row-name{
  flex:1 1 auto;min-width:0;
  color:var(--text-primary);font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-role-row-perms{flex:0 0 auto}

/* "N perms" pill that opens an inline drawer of chips below the row */
.env-perm-toggle-btn{
  display:inline-flex;align-items:center;gap:5px;
  background:var(--bg-card);border:1px solid var(--border-hover);
  color:var(--text-secondary);
  font-size:11px;font-weight:600;
  padding:3px 9px;border-radius:99px;cursor:pointer;
  transition:background .12s,border-color .12s,color .12s;
}
.env-perm-toggle-btn:hover,
.env-perm-toggle-btn.is-open{
  background:rgba(96,165,250,.12);
  border-color:rgba(96,165,250,.40);
  color:#9ec5fe;
}
.env-perm-toggle-btn i{font-size:9px}
.env-perm-toggle-chevron{transition:transform .15s}
.env-perm-toggle-btn.is-open .env-perm-toggle-chevron{transform:rotate(180deg)}
.env-perm-empty{
  font-size:11px;color:var(--text-muted);font-style:italic;
}
.env-role-row-perms-drawer{
  flex:1 1 100%;
  display:flex;flex-wrap:wrap;gap:4px;
  padding:6px 0 4px 48px;
}

/* Inline add/edit forms */
.env-org-form{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:12px;padding:14px;
}
.env-org-form-row{
  display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start;
}
/* Each field is a column. ``min-height:60px`` reserves space for
 * label + input so a column with a trailing hint stays the same
 * height as a column without one — the row keeps a clean baseline. */
.env-org-form-field{
  display:flex;flex-direction:column;gap:5px;min-width:0;
}
.env-org-form-field .staff-card-label{margin:0;min-height:14px}
.env-org-form-hint{
  margin:3px 0 0;font-size:10.5px;color:var(--text-muted);font-style:italic;
}
.env-org-input{
  width:100%;box-sizing:border-box;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-sm);
  color:var(--text-primary);
  padding:7px 10px;font-size:12.5px;
  font-family:inherit;
  transition:border-color .15s,box-shadow .15s,background .15s;
}
.env-org-input::placeholder{color:var(--text-muted);font-size:12px}
.env-org-input:hover{border-color:rgba(205,161,44,.40)}
.env-org-input:focus{
  outline:none;
  border-color:rgba(205,161,44,.65);
  box-shadow:0 0 0 3px rgba(205,161,44,.18);
}

/* Hide the native browser spinner — we render gold +/− buttons. */
.env-org-input[type="number"]{
  -moz-appearance:textfield;appearance:textfield;
}
.env-org-input[type="number"]::-webkit-inner-spin-button,
.env-org-input[type="number"]::-webkit-outer-spin-button{
  -webkit-appearance:none;appearance:none;margin:0;
}

/* Light mode for env date/time inputs — the global color-scheme:dark rule
 * in style.css handles dark mode; override to light here. */
[data-theme="light"] .env-org-input[type="date"],
[data-theme="light"] .env-org-input[type="datetime-local"],
[data-theme="light"] .env-org-input[type="time"]{
  color-scheme:light;
}

/* Site-style number stepper — input flanked by gold +/− pills. */
.env-org-stepper{
  display:flex;align-items:stretch;gap:0;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-sm);
  transition:border-color .15s,box-shadow .15s;
  overflow:hidden;
}
.env-org-stepper:hover{border-color:rgba(205,161,44,.40)}
.env-org-stepper:focus-within{
  border-color:rgba(205,161,44,.65);
  box-shadow:0 0 0 3px rgba(205,161,44,.18);
}
.env-org-stepper-btn{
  width:30px;flex-shrink:0;
  background:transparent;border:none;
  color:var(--accent);font-size:13px;
  cursor:pointer;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .12s,color .12s;
}
.env-org-stepper-btn:hover{background:var(--accent-dim)}
.env-org-stepper-btn:disabled{
  color:var(--text-muted);cursor:not-allowed;opacity:.5;background:transparent;
}
.env-org-stepper .env-org-input{
  flex:1;border:none;border-radius:0;background:transparent;
  text-align:center;font-weight:600;font-variant-numeric:tabular-nums;
  padding:7px 4px;
}
.env-org-stepper .env-org-input:hover,
.env-org-stepper .env-org-input:focus{
  background:transparent;border:none;box-shadow:none;
}
.env-org-form-submit{flex-shrink:0;align-self:flex-end;height:34px}
.env-org-form-actions{display:flex;justify-content:flex-end;margin-top:14px}

/* Permission toggle pills (used by the role form) */
.env-perm-toggles{
  display:flex;flex-wrap:wrap;gap:5px;margin-top:6px;
}
.env-perm-toggle{
  position:relative;cursor:pointer;
  display:inline-flex;align-items:center;
  font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
}
.env-perm-toggle input{
  position:absolute;opacity:0;pointer-events:none;width:0;height:0;
}
.env-perm-toggle span{
  display:inline-flex;align-items:center;gap:5px;
  padding:4px 10px;border-radius:99px;
  font-size:11px;font-weight:600;letter-spacing:.01em;
  background:var(--bg-card);border:1px solid var(--border-hover);
  color:var(--text-secondary);
  transition:background .15s,border-color .15s,color .15s;
}
.env-perm-toggle span i{font-size:9px;opacity:0;transition:opacity .15s}
.env-perm-toggle:hover span{border-color:rgba(205,161,44,.40)}
.env-perm-toggle.is-checked span{
  background:rgba(52,211,153,.14);
  border-color:rgba(52,211,153,.45);
  color:#34d399;
}
.env-perm-toggle.is-checked span i{opacity:1}

/* "Add or update a role" disclosure */
.env-org-details{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:12px;padding:12px 14px;
}
.env-org-details > summary{
  cursor:pointer;list-style:none;
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  font-size:13px;font-weight:700;color:var(--text-primary);
}
.env-org-details > summary::-webkit-details-marker{display:none}
.env-org-details > summary > i:first-child{
  color:var(--accent);font-size:11px;margin-inline-end:4px;
}
.env-org-details-chevron{
  color:var(--accent);font-size:11px;
  transition:transform .15s;margin-inline-start:auto;
}
.env-org-details[open] .env-org-details-chevron{transform:rotate(180deg)}

@media (max-width:540px){
  .env-org-summary-cell{min-width:0;flex:1 1 0;padding:10px 12px}
  .env-org-summary-num{font-size:24px}
}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Project library
 * Glass hero with twin-counter + CTA, site-style tabs, project cards
 * with stage/visibility chips, compact archived table.
 * ════════════════════════════════════════════════════════════════════ */
.env-projects-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}
/* Right-side stack: two counters on top, the "Open new project"
 * button below — sized to match the counters' combined width so the
 * column reads as a single grouped control. */
.env-projects-hero-right{
  margin-inline-start:auto;
  display:flex;flex-direction:column;align-items:stretch;gap:14px;
}
.env-projects-summary{
  display:flex;gap:10px;align-items:stretch;
}
.env-projects-summary-cell{
  background:var(--bg-card);border:1px solid var(--border-hover);
  border-radius:14px;padding:12px 18px;min-width:90px;text-align:end;
  box-shadow:var(--shadow-sm);
}
.env-projects-summary-num{
  margin:0;font-size:28px;font-weight:800;color:var(--accent);
  line-height:1;letter-spacing:.01em;
}
.env-projects-summary-num--muted{color:var(--text-muted)}
.env-projects-summary-lbl{
  margin:4px 0 0;font-size:10.5px;font-weight:700;
  color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;
}
.env-projects-cta{align-self:center}

/* CTA stretches to fill the right-stack column — same width as the
 * Open + Archived counter pair (incl. the gap between them). */
.env-projects-hero-cta{
  width:100%;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  font-size:13px;font-weight:700;
  padding:11px 16px;border-radius:10px;
}
.env-projects-hero-cta i{font-size:11px}

/* Site-style tabs */
.env-projects-tabs{
  display:flex;flex-wrap:wrap;gap:4px;
  padding:5px;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:12px;
  margin-bottom:16px;
}
.env-projects-tab{
  display:inline-flex;align-items:center;gap:7px;
  background:transparent;border:none;
  color:var(--text-secondary);
  font-size:12.5px;font-weight:600;letter-spacing:.005em;
  padding:7px 14px;border-radius:8px;cursor:pointer;
  transition:background .15s,color .15s,box-shadow .15s;
}
.env-projects-tab:hover{
  color:var(--text-primary);
  background:rgba(205,161,44,.08);
}
.env-projects-tab.is-active{
  color:var(--accent);
  background:var(--accent-dim);
  box-shadow:
    inset 0 0 0 1px rgba(205,161,44,.45),
    inset 0 1px 0 rgba(255,255,255,.08);
}
.env-projects-tab i:first-child{color:var(--accent);font-size:11px}
.env-projects-tab-count{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 6px;border-radius:99px;
  font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums;
  background:var(--accent-dim);color:var(--accent);
  margin-inline-start:3px;
}

/* Project card grid */
.env-projects-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));
  gap:12px;
}
.env-project-card{
  position:relative;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:14px;padding:16px 18px;
  display:flex;flex-direction:column;gap:10px;
  transition:border-color .15s,transform .15s ease,box-shadow .15s;
}
.env-project-card:hover{
  border-color:rgba(205,161,44,.35);
  transform:translateY(-1px);
  box-shadow:0 6px 18px rgba(0,0,0,.18);
}
.env-project-card-head{
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.env-project-title{
  color:var(--text-primary);font-weight:700;font-size:15.5px;
  letter-spacing:-.01em;line-height:1.25;text-decoration:none;
  display:block;
}
.env-project-title:hover{color:var(--accent);text-decoration:underline}
.env-project-desc{
  margin:0;font-size:12.5px;color:var(--text-muted);line-height:1.45;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
}
.env-project-meta{
  display:flex;flex-wrap:wrap;gap:12px;
  font-size:11.5px;color:var(--text-muted);font-weight:500;
}
.env-project-meta i{color:var(--accent);font-size:10px;margin-inline-end:4px}
.env-project-actions{
  display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;
  padding-top:10px;border-top:1px solid var(--border);
}
.env-project-action-form{display:contents}

/* Stage chip — tone shifts with stage so the kanban-ness reads at a glance */
.env-project-stage{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.01em;
  padding:3px 10px;border-radius:99px;
  border:1px solid var(--border-hover);
  background:var(--bg-card);color:var(--text-secondary);
}
.env-project-stage i{font-size:9px}
.env-stage-brief{color:#60a5fa;background:rgba(96,165,250,.10);border-color:rgba(96,165,250,.35)}
.env-stage-design{color:#a78bfa;background:rgba(167,139,250,.10);border-color:rgba(167,139,250,.35)}
.env-stage-internal_review,
.env-stage-client_review{color:var(--accent);background:var(--accent-dim);border-color:rgba(205,161,44,.35)}
.env-stage-revisions{color:#fb923c;background:rgba(251,146,60,.10);border-color:rgba(251,146,60,.40)}
.env-stage-approval_submittal,
.env-stage-approved{color:#34d399;background:rgba(52,211,153,.10);border-color:rgba(52,211,153,.40)}
.env-stage-delivered{color:#34d399;background:rgba(52,211,153,.16);border-color:rgba(52,211,153,.50)}
.env-stage-closed{color:var(--text-muted);background:var(--bg-surface);border-color:var(--border)}

/* Visibility chip */
.env-project-vis{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.01em;
  padding:3px 10px;border-radius:99px;
}
.env-project-vis i{font-size:9px}
.env-project-vis--internal{
  color:#fbbf24;background:rgba(251,191,36,.10);
  border:1px solid rgba(251,191,36,.40);
}
.env-project-vis--public{
  color:#34d399;background:rgba(52,211,153,.10);
  border:1px solid rgba(52,211,153,.40);
}

/* Project-team picker grid inside the "Open new project" modal */
.env-project-team-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
  gap:6px;
  max-height:280px;overflow-y:auto;
  padding:8px;background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:var(--radius-sm);
}
.env-team-pick{
  position:relative;cursor:pointer;display:block;
}
.env-team-pick input{
  position:absolute;opacity:0;pointer-events:none;width:0;height:0;
}
.env-team-pick-body{
  display:flex;align-items:center;gap:8px;
  padding:6px 10px;border-radius:8px;
  border:1px solid transparent;
  background:transparent;
  transition:background .12s,border-color .12s;
}
.env-team-pick:hover .env-team-pick-body{background:var(--bg-surface)}
.env-team-pick.is-checked .env-team-pick-body{
  background:var(--accent-dim);
  border-color:rgba(205,161,44,.40);
}
.env-team-pick-avatar{
  width:28px;height:28px;border-radius:50%;object-fit:cover;flex-shrink:0;
}
.env-team-pick-text{
  flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25;
  overflow:hidden;
}
.env-team-pick-text strong{
  font-size:12.5px;font-weight:600;color:var(--text-primary);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-team-pick-text small{
  font-size:10.5px;color:var(--text-muted);font-weight:500;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-team-pick-check{
  font-size:10px;color:var(--accent);flex-shrink:0;
  opacity:0;transition:opacity .12s;
}
.env-team-pick.is-checked .env-team-pick-check{opacity:1}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Vendor register
 * Search + status filters, vendor card grid with service tags and
 * contact rows, site-style add-vendor modal. Re-uses .env-projects-*
 * hero scaffold so the page reads as a sibling of Project library.
 * ════════════════════════════════════════════════════════════════════ */
.env-vendors-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}

/* Search + filter chips bar */
.env-vendor-search-row{
  display:flex;flex-wrap:wrap;gap:10px;align-items:center;
  margin-bottom:14px;
}
.env-vendor-search-wrap{
  position:relative;flex:1 1 280px;min-width:200px;
}
.env-vendor-search-wrap i{
  position:absolute;top:50%;left:14px;transform:translateY(-50%);
  color:var(--text-muted);font-size:12px;pointer-events:none;
}
.env-vendor-search-wrap input{
  width:100%;box-sizing:border-box;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;
  color:var(--text-primary);
  padding:9px 14px 9px 38px;font-size:13px;
  font-family:inherit;
  transition:border-color .15s,box-shadow .15s,background .15s;
}
.env-vendor-search-wrap input::placeholder{color:var(--text-muted)}
.env-vendor-search-wrap input:hover{border-color:rgba(205,161,44,.40)}
.env-vendor-search-wrap input:focus{
  outline:none;
  border-color:rgba(205,161,44,.65);
  box-shadow:0 0 0 3px rgba(205,161,44,.18);
  background:var(--bg-card);
}

.env-vendor-filter-chips{
  display:flex;gap:5px;
  padding:4px;background:var(--bg-card);
  border:1px solid var(--border-hover);border-radius:99px;
}
.env-vendor-filter-chip{
  background:transparent;border:none;cursor:pointer;
  color:var(--text-secondary);
  font-size:11.5px;font-weight:700;letter-spacing:.04em;
  padding:6px 14px;border-radius:99px;
  text-transform:uppercase;
  transition:background .15s,color .15s,box-shadow .15s;
}
.env-vendor-filter-chip:hover{color:var(--text-primary);background:rgba(205,161,44,.08)}
.env-vendor-filter-chip.is-active{
  color:var(--accent);
  background:var(--accent-dim);
  box-shadow:inset 0 0 0 1px rgba(205,161,44,.45);
}

/* Vendor card grid */
.env-vendor-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));
  gap:12px;
}
.env-vendor-card{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:14px;padding:16px 18px;
  display:flex;flex-direction:column;gap:10px;
  transition:border-color .15s,transform .15s ease,box-shadow .15s,opacity .15s;
}
.env-vendor-card.is-inactive{opacity:.72}
.env-vendor-card:hover{
  border-color:rgba(205,161,44,.35);
  transform:translateY(-1px);
  box-shadow:0 6px 18px rgba(0,0,0,.18);
  opacity:1;
}
.env-vendor-card-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
}
.env-vendor-card-titleblock{flex:1;min-width:0}
.env-vendor-card-name{
  margin:0;font-size:15.5px;font-weight:700;color:var(--text-primary);
  letter-spacing:-.01em;line-height:1.25;
  overflow:hidden;text-overflow:ellipsis;
}
.env-vendor-services{
  display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;
}
.env-vendor-service-chip{
  display:inline-flex;align-items:center;
  padding:2px 8px;border-radius:99px;
  font-size:10.5px;font-weight:600;letter-spacing:.01em;
  background:var(--accent-dim);color:var(--accent);
  border:1px solid rgba(205,161,44,.30);
}
.env-vendor-status{
  flex-shrink:0;
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.01em;
  padding:3px 10px;border-radius:99px;
}
.env-vendor-status i{font-size:9px}
.env-vendor-status--active{
  color:#34d399;background:rgba(52,211,153,.10);
  border:1px solid rgba(52,211,153,.40);
}
.env-vendor-status--inactive{
  color:var(--text-muted);background:var(--bg-card);
  border:1px solid var(--border);
}

/* Contact info block */
.env-vendor-contact{
  display:flex;flex-direction:column;gap:4px;
  font-size:12.5px;color:var(--text-secondary);
  padding-top:8px;border-top:1px dashed var(--border);
}
.env-vendor-contact-row{
  display:flex;align-items:center;gap:8px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;
}
.env-vendor-contact-row i{
  color:var(--accent);font-size:11px;width:14px;text-align:center;flex-shrink:0;
}
.env-vendor-contact-row a{
  color:var(--text-primary);text-decoration:none;
  overflow:hidden;text-overflow:ellipsis;
}
.env-vendor-contact-row a:hover{color:var(--accent);text-decoration:underline}
.env-vendor-contact-empty{color:var(--text-muted);font-style:italic}
.env-vendor-contact-empty i{color:var(--text-muted)}

.env-vendor-notes{
  margin:0;font-size:12px;color:var(--text-muted);line-height:1.5;
  padding-top:8px;border-top:1px dashed var(--border);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;
  overflow:hidden;
}

.env-vendor-actions{
  display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;
  padding-top:10px;border-top:1px solid var(--border);
}
.env-vendor-action-form{display:contents}

@media (max-width:540px){
  .env-vendor-search-row{flex-direction:column;align-items:stretch}
  .env-vendor-filter-chips{justify-content:center}
}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Vault
 * Hero with Assets + Expiring counters, expiry warning alert, kind-
 * filter chips, dense env-table list with kind / visibility chips,
 * site-style upload modal with custom file picker.
 * ════════════════════════════════════════════════════════════════════ */
.env-vault-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}
.env-vault-expiring-cell{
  border-color:rgba(251,146,60,.45)!important;
  background:var(--bg-card);
}
.env-vault-expiring-num{color:#fb923c!important}

/* Expiry warning alert */
.env-vault-alert{
  display:flex;align-items:flex-start;gap:12px;
  margin-bottom:14px;padding:12px 16px;
  background:rgba(251,146,60,.08);
  border:1px solid rgba(251,146,60,.40);
  border-radius:12px;
}
.env-vault-alert-icon{
  color:#fb923c;font-size:18px;flex-shrink:0;margin-top:2px;
}
.env-vault-alert-body{flex:1;min-width:0}
.env-vault-alert-title{
  margin:0 0 4px;font-size:12.5px;font-weight:700;
  color:#fb923c;text-transform:uppercase;letter-spacing:.05em;
}
.env-vault-alert-list{
  margin:0;font-size:12.5px;color:var(--text-secondary);
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
}
.env-vault-alert-list strong{color:var(--text-primary);font-weight:600}
.env-vault-alert-list small{color:var(--text-muted);font-size:11px;margin-inline-start:4px}
.env-vault-alert-dot{color:var(--text-muted);opacity:.5}

/* Kind filter chips strip */
.env-vault-filter-row{
  display:flex;flex-wrap:wrap;gap:6px;
  padding:6px;margin-bottom:14px;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:12px;
}
.env-vault-filter-chip{
  display:inline-flex;align-items:center;gap:7px;
  padding:7px 14px;border-radius:8px;
  background:transparent;color:var(--text-secondary);
  font-size:12.5px;font-weight:600;letter-spacing:.005em;
  text-decoration:none;cursor:pointer;
  transition:background .15s,color .15s,box-shadow .15s;
}
.env-vault-filter-chip i{font-size:11px;color:var(--accent)}
.env-vault-filter-chip:hover{color:var(--text-primary);background:rgba(205,161,44,.08)}
.env-vault-filter-chip.is-active{
  color:var(--accent);
  background:var(--accent-dim);
  box-shadow:inset 0 0 0 1px rgba(205,161,44,.45);
}
.env-vault-filter-count{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 6px;border-radius:99px;
  font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums;
  background:var(--accent-dim);color:var(--accent);
  margin-inline-start:3px;
}

/* Vault list — title cell with file icon */
.env-vault-table .env-table-row{padding:10px 14px}
.env-vault-title-cell{
  display:flex;align-items:center;gap:10px;min-width:0;
}
.env-vault-file-ico{
  width:32px;height:32px;border-radius:8px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:13px;
  border:1px solid var(--border-hover);
}
.env-vault-title-link{
  flex:1;min-width:0;
  color:var(--text-primary);font-weight:600;text-decoration:none;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-vault-title-link:hover{color:var(--accent);text-decoration:underline}

/* Kind chip + matching icon tint */
.env-vault-kind-chip{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.01em;
  padding:3px 10px;border-radius:99px;
}
.env-vault-kind-template{color:#a78bfa;background:rgba(167,139,250,.10);border:1px solid rgba(167,139,250,.35)}
.env-vault-kind-doc{color:#60a5fa;background:rgba(96,165,250,.10);border:1px solid rgba(96,165,250,.35)}
.env-vault-kind-license{color:var(--accent);background:var(--accent-dim);border:1px solid rgba(205,161,44,.35)}
.env-vault-kind-other{color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border)}
.env-vault-file-ico.env-vault-kind-template{color:#a78bfa;background:rgba(167,139,250,.12);border-color:rgba(167,139,250,.30)}
.env-vault-file-ico.env-vault-kind-doc{color:#60a5fa;background:rgba(96,165,250,.12);border-color:rgba(96,165,250,.30)}
.env-vault-file-ico.env-vault-kind-license{color:var(--accent);background:var(--accent-dim);border-color:rgba(205,161,44,.30)}
.env-vault-file-ico.env-vault-kind-other{color:var(--text-muted);background:var(--bg-card)}
/* Filter chip icon also picks up the tone */
.env-vault-filter-chip.env-vault-kind-template i{color:#a78bfa}
.env-vault-filter-chip.env-vault-kind-doc i{color:#60a5fa}
.env-vault-filter-chip.env-vault-kind-license i{color:var(--accent)}
.env-vault-filter-chip.env-vault-kind-other i{color:var(--text-muted)}

/* Visibility chip */
.env-vault-vis-chip{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:600;
  padding:3px 10px;border-radius:99px;max-width:100%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  border:1px solid var(--border-hover);
  background:var(--bg-card);color:var(--text-secondary);
}
.env-vault-vis-chip i{font-size:9px;flex-shrink:0}
.env-vault-vis-manager{color:var(--accent);background:var(--accent-dim);border-color:rgba(205,161,44,.35)}
.env-vault-vis-staff{color:#34d399;background:rgba(52,211,153,.10);border-color:rgba(52,211,153,.35)}
.env-vault-vis-dept{color:#60a5fa;background:rgba(96,165,250,.10);border-color:rgba(96,165,250,.35)}

/* Expiry cell */
.env-vault-expiry{color:var(--text-secondary)}
.env-vault-expiry--expired{
  display:inline-flex;align-items:center;gap:5px;
  color:#fca5a5;font-weight:700;
}
.env-vault-expiry--expired i{font-size:10px}

/* Native select inside the env-org-form — styled with site chevron */
.env-org-select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  padding-inline-end:32px;cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><path fill='%23cda12c' d='M2.5 4.5l3.5 3.5 3.5-3.5z'/></svg>");
  background-repeat:no-repeat;
  background-position:right 10px center;
  background-size:12px;
}
.env-org-select option{background:var(--bg-card);color:var(--text-primary)}

/* Custom file picker — hides the native button, shows a glass card */
.env-vault-file-picker{
  display:block;position:relative;cursor:pointer;
}
.env-vault-file-picker input[type=file]{
  position:absolute;opacity:0;pointer-events:none;
  width:0;height:0;
}
.env-vault-file-picker-body{
  display:flex;align-items:center;gap:12px;
  padding:14px 16px;
  background:var(--bg-surface);
  border:1px dashed var(--border-hover);
  border-radius:10px;
  transition:background .15s,border-color .15s;
}
.env-vault-file-picker:hover .env-vault-file-picker-body{
  background:var(--accent-dim);
  border-color:rgba(205,161,44,.50);
}
.env-vault-file-picker-body i{
  color:var(--accent);font-size:20px;
}
.env-vault-file-picker-text{flex:1;min-width:0;display:flex;flex-direction:column}
.env-vault-file-picker-text strong{
  font-size:13px;font-weight:600;color:var(--text-primary);
}
.env-vault-file-picker-text small{
  font-size:11.5px;color:var(--text-muted);margin-top:2px;
}
.env-vault-file-picker-name{
  display:none;margin-top:6px;font-size:12px;font-weight:600;
  color:var(--accent);
  padding:6px 10px;background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.40);border-radius:8px;
  word-break:break-all;
}
.env-vault-file-picker.is-picked .env-vault-file-picker-name{display:inline-block}
.env-vault-file-picker.is-picked .env-vault-file-picker-body{
  background:rgba(52,211,153,.06);
  border-color:rgba(52,211,153,.40);border-style:solid;
}
.env-vault-file-picker.is-picked .env-vault-file-picker-body i{color:#34d399}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Accounts & ledger
 * Hero with Accounts + Invoices counters, accounts ribbon chips,
 * site-style tabs (Projects · Overhead · Invoices), P&L mini chart,
 * budget vs actual bars, dense entry table with direction tints,
 * invoice status pills, arch-modal forms for account / entry / invoice.
 * ════════════════════════════════════════════════════════════════════ */
.env-ledger-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}

/* Accounts ribbon */
.env-ledger-accounts-add{margin-inline-start:auto}
.env-ledger-accounts-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:10px;
}
.env-account-chip{
  display:flex;align-items:center;gap:10px;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:12px;padding:10px 12px;
  transition:border-color .15s,transform .15s ease;
}
.env-account-chip:hover{border-color:rgba(205,161,44,.35);transform:translateY(-1px)}
.env-account-chip-ico{
  width:36px;height:36px;border-radius:10px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:15px;border:1px solid var(--border-hover);
}
.env-account-chip-body{flex:1;min-width:0}
.env-account-chip-name{
  margin:0;font-size:13.5px;font-weight:700;color:var(--text-primary);
  letter-spacing:-.005em;line-height:1.2;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-account-chip-meta{
  margin:2px 0 0;font-size:11px;color:var(--text-muted);font-weight:500;
}
/* Per-kind icon tints */
.env-account-kind-bank .env-account-chip-ico{color:#60a5fa;background:rgba(96,165,250,.10);border-color:rgba(96,165,250,.30)}
.env-account-kind-cash .env-account-chip-ico{color:#34d399;background:rgba(52,211,153,.10);border-color:rgba(52,211,153,.30)}
.env-account-kind-ewallet .env-account-chip-ico{color:#a78bfa;background:rgba(167,139,250,.10);border-color:rgba(167,139,250,.30)}
.env-account-kind-other .env-account-chip-ico{color:var(--accent);background:var(--accent-dim);border-color:rgba(205,161,44,.30)}

/* Inline-empty fallback for sub-sections */
.env-ledger-empty-inline{
  margin:0;font-size:12.5px;color:var(--text-muted);font-style:italic;
  padding:14px 10px;text-align:center;
}

/* Direction tag */
.env-ledger-dir{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11.5px;font-weight:700;letter-spacing:.01em;
  padding:2px 9px;border-radius:99px;
}
.env-ledger-dir i{font-size:9px}
.env-ledger-dir--in{color:#34d399;background:rgba(52,211,153,.10);border:1px solid rgba(52,211,153,.35)}
.env-ledger-dir--out{color:#fca5a5;background:rgba(248,113,113,.10);border:1px solid rgba(248,113,113,.35)}

/* Budget vs actual rows */
.env-ledger-budget-rows{display:flex;flex-direction:column;gap:10px}
.env-ledger-budget-row{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;padding:10px 14px;
}
.env-ledger-budget-row-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  margin-bottom:6px;
}
.env-ledger-budget-row-name{
  font-size:13px;font-weight:700;color:var(--text-primary);
}
.env-ledger-budget-row-amounts{font-size:12.5px;font-variant-numeric:tabular-nums}
.env-ledger-budget-row-amounts strong{color:var(--text-primary);font-weight:700}
.env-ledger-budget-row-amounts small{color:var(--text-muted);font-weight:500;margin-inline-start:4px}
.env-ledger-budget-track{
  height:8px;background:var(--bg-card);border:1px solid var(--border);
  border-radius:99px;overflow:hidden;
}
.env-ledger-budget-fill{
  display:block;height:100%;background:var(--accent);
  border-radius:99px;transition:width .35s ease;
  max-width:100%;
}

/* Info alert for "no open overhead budget" state */
.env-ledger-alert{
  display:flex;align-items:flex-start;gap:12px;
  padding:14px 16px;margin-bottom:14px;
  background:rgba(96,165,250,.06);
  border:1px solid rgba(96,165,250,.35);
  border-radius:12px;
}
.env-ledger-alert i{color:#60a5fa;font-size:18px;flex-shrink:0;margin-top:2px}
.env-ledger-alert-title{
  margin:0 0 4px;font-size:13px;font-weight:700;color:var(--text-primary);
}
.env-ledger-alert-body{
  margin:0;font-size:12.5px;color:var(--text-muted);line-height:1.5;
}
.env-ledger-alert-body a{
  color:#60a5fa;font-weight:600;text-decoration:none;
}
.env-ledger-alert-body a:hover{text-decoration:underline}

/* Invoice status pill */
.env-invoice-status{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.01em;
  padding:3px 10px;border-radius:99px;
}
.env-invoice-status i{font-size:9px}
.env-invoice-status--paid{color:#34d399;background:rgba(52,211,153,.10);border:1px solid rgba(52,211,153,.40)}
.env-invoice-status--overdue{color:#fca5a5;background:rgba(248,113,113,.10);border:1px solid rgba(248,113,113,.40)}
.env-invoice-status--issued,
.env-invoice-status--draft{color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border)}

/* P&L chart — taller, more legible bars. 340px gives the eye room
 * to compare months at a glance; bars and label spacing scale up
 * accordingly. */
.env-ledger-chart{
  display:flex;align-items:flex-end;gap:14px;
  height:340px;padding:22px 14px 14px;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:12px;
  position:relative;
}
/* Faint baseline + 3 horizontal guide lines so the eye has reference
 * marks at 25 / 50 / 75 / 100% of the chart's peak. */
.env-ledger-chart::before{
  content:"";position:absolute;left:14px;right:14px;top:22px;bottom:54px;
  background:
    repeating-linear-gradient(
      to top,
      transparent 0 calc(25% - 1px),
      rgba(255,255,255,.05) calc(25% - 1px) 25%
    );
  pointer-events:none;
}
.env-ledger-chart-col{
  flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:10px;
  height:100%;position:relative;z-index:1;
}
.env-ledger-chart-bars{
  flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:6px;
  min-height:1px;
}
.env-ledger-chart-bar{
  display:block;width:18px;border-radius:5px 5px 0 0;min-height:2px;
  transition:height .35s ease,opacity .15s;
  box-shadow:0 1px 0 rgba(255,255,255,.08) inset;
}
.env-ledger-chart-bar:hover{opacity:.85}
.env-ledger-chart-bar--in{
  background:linear-gradient(180deg,#34d399 0%,#0f766e 100%);
}
.env-ledger-chart-bar--out{
  background:linear-gradient(180deg,#fca5a5 0%,#b91c1c 100%);
}
.env-ledger-chart-bar--zero{background:transparent;border:none;box-shadow:none}
.env-ledger-chart-label{
  font-size:11px;color:var(--text-muted);font-weight:700;
  font-variant-numeric:tabular-nums;letter-spacing:.04em;
  text-transform:uppercase;
}
.env-ledger-chart-legend{
  display:flex;gap:18px;margin-top:12px;
  font-size:12px;color:var(--text-muted);font-weight:500;
}
.env-ledger-chart-dot{
  display:inline-block;width:12px;height:12px;border-radius:3px;
  margin-inline-end:5px;vertical-align:middle;
}
.env-ledger-chart-empty{
  padding:60px 12px;text-align:center;color:var(--text-muted);
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:12px;
}
.env-ledger-chart-empty i{font-size:28px;display:block;margin-bottom:10px;color:var(--text-muted)}
.env-ledger-chart-empty p{margin:0;font-size:13.5px}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Office overhead budgets
 * Hero with Open + Closed counters, per-period glass cards with
 * status chip, inline add-category form, dense category table,
 * close-period action, closing-snapshot disclosure for closed rows.
 * ════════════════════════════════════════════════════════════════════ */
.env-budgets-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}

.env-budgets-list{display:flex;flex-direction:column;gap:16px}
.env-budget-card{margin-bottom:0}
.env-budget-card.is-closed{opacity:.85}
.env-budget-card.is-closed:hover{opacity:1}

.env-budget-head{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:14px;flex-wrap:wrap;margin-bottom:14px;
}
.env-budget-head-text{flex:1;min-width:0}
.env-budget-period-row{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.env-budget-period-chip{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;
  padding:3px 10px;border-radius:99px;
  background:var(--bg-card);
  border:1px solid var(--border-hover);color:var(--text-secondary);
}
.env-budget-period-chip i{font-size:10px;color:var(--accent)}
.env-budget-period-year{color:#a78bfa;background:rgba(167,139,250,.10);border-color:rgba(167,139,250,.35)}
.env-budget-period-year i{color:#a78bfa}
.env-budget-period-quarter{color:#60a5fa;background:rgba(96,165,250,.10);border-color:rgba(96,165,250,.35)}
.env-budget-period-quarter i{color:#60a5fa}
.env-budget-period-month{color:var(--accent);background:var(--accent-dim);border-color:rgba(205,161,44,.35)}
.env-budget-period-month i{color:var(--accent)}

.env-budget-label{
  font-size:18px;font-weight:800;color:var(--text-primary);
  letter-spacing:-.005em;font-variant-numeric:tabular-nums;
}
.env-budget-status{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.01em;
  padding:3px 10px;border-radius:99px;
}
.env-budget-status i{font-size:9px}
.env-budget-status--open{color:#34d399;background:rgba(52,211,153,.10);border:1px solid rgba(52,211,153,.40)}
.env-budget-status--closed{color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border)}
.env-budget-meta{
  margin:8px 0 0;font-size:12.5px;color:var(--text-muted);font-weight:500;
}
.env-budget-meta strong{
  color:var(--accent);font-weight:800;
  font-variant-numeric:tabular-nums;margin-inline-start:4px;
}
.env-budget-close-form{flex-shrink:0}

.env-budget-add-form{margin-bottom:0}
.env-budget-add-submit{flex-shrink:0;align-self:flex-end;height:34px}

/* Closing snapshot disclosure */
.env-budget-snapshot{
  margin-top:14px;background:var(--bg-card);
  border:1px solid var(--border-hover);border-radius:10px;padding:10px 14px;
}
.env-budget-snapshot > summary{
  display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;
  font-size:13px;font-weight:700;color:var(--text-primary);
}
.env-budget-snapshot > summary::-webkit-details-marker{display:none}
.env-budget-snapshot > summary > i:first-child{color:var(--accent);font-size:11px}
.env-budget-snapshot-chevron{
  margin-inline-start:auto;color:var(--accent);font-size:11px;
  transition:transform .15s;
}
.env-budget-snapshot[open] .env-budget-snapshot-chevron{transform:rotate(180deg)}
.env-budget-snapshot-body{
  margin:10px 0 0;padding:10px 12px;
  background:var(--bg-surface);
  border:1px solid var(--border);border-radius:8px;
  color:var(--text-secondary);
  font-size:11.5px;line-height:1.6;
  font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  white-space:pre-wrap;word-break:break-word;
  max-height:240px;overflow-y:auto;
}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Customers & access
 * Hero with Active + Archived counters, customer register table with
 * project-access chips, per-project liaison cards with assign/access
 * twin-pane, site-style modals for add + grant.
 * ════════════════════════════════════════════════════════════════════ */
.env-customers-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}

/* Customer register table */
.env-customer-row.is-archived{opacity:.65}
.env-customer-row.is-archived:hover{opacity:1}
.env-customer-cell{
  display:flex;flex-direction:column;gap:2px;min-width:0;
}
.env-customer-name{
  font-size:13.5px;font-weight:700;color:var(--text-primary);
  display:flex;align-items:center;gap:6px;line-height:1.2;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-customer-archived-tag{
  display:inline-flex;align-items:center;
  padding:1px 7px;border-radius:99px;
  background:var(--bg-card);border:1px solid var(--border);
  color:var(--text-muted);font-size:9.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;
}
.env-customer-email{
  font-size:11.5px;color:var(--text-muted);
  text-decoration:none;display:inline-flex;align-items:center;gap:5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-customer-email:hover{color:var(--accent);text-decoration:underline}
.env-customer-email i{font-size:10px;color:var(--accent)}

.env-customer-access-chips{
  display:flex;flex-wrap:wrap;gap:4px;
}
.env-customer-access-chip{
  display:inline-flex;align-items:center;gap:5px;
  padding:2px 9px;border-radius:99px;
  font-size:11px;font-weight:600;letter-spacing:.01em;
  background:rgba(52,211,153,.10);
  color:#34d399;
  border:1px solid rgba(52,211,153,.35);
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-customer-access-chip i{font-size:9px}
.env-customer-access-empty{color:var(--text-muted);font-size:11.5px}

/* Liaison cards — one per open project */
.env-liaison-list{display:flex;flex-direction:column;gap:14px}
.env-liaison-card{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:12px;padding:14px 16px;
  display:flex;flex-direction:column;gap:12px;
  transition:border-color .15s,box-shadow .15s;
}
.env-liaison-card:hover{
  border-color:rgba(205,161,44,.30);
  box-shadow:0 6px 18px rgba(0,0,0,.18);
}
.env-liaison-head{
  display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex-wrap:wrap;
}
.env-liaison-titleblock{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;
}
.env-liaison-title{
  margin:0;font-size:14.5px;font-weight:700;color:var(--text-primary);
  letter-spacing:-.005em;line-height:1.2;
  overflow:hidden;text-overflow:ellipsis;
}
.env-liaison-current-pill{
  display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;
  padding:5px 12px;border-radius:99px;
  font-size:12px;font-weight:600;letter-spacing:.01em;
}
.env-liaison-current-pill i{font-size:11px}
.env-liaison-current-pill small{color:var(--text-muted);font-size:10.5px;font-weight:500;margin-inline-start:3px}
.env-liaison-current-pill--set{
  color:var(--accent);background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.40);
}
.env-liaison-current-pill--missing{
  color:#fb923c;background:rgba(251,146,60,.10);
  border:1px solid rgba(251,146,60,.40);
}

.env-liaison-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:12px;
}
@media (max-width:780px){
  .env-liaison-grid{grid-template-columns:1fr}
}

.env-liaison-disclosure{
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:10px;padding:10px 12px;
}
.env-liaison-disclosure > summary{
  display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;
  font-size:12.5px;font-weight:700;color:var(--text-primary);
}
.env-liaison-disclosure > summary::-webkit-details-marker{display:none}
.env-liaison-disclosure > summary > i:first-child{color:var(--accent);font-size:11px}
.env-liaison-chevron{
  margin-inline-start:auto;color:var(--accent);font-size:11px;
  transition:transform .15s;
}
.env-liaison-disclosure[open] .env-liaison-chevron{transform:rotate(180deg)}

.env-liaison-access{
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:10px;padding:10px 14px;
}
.env-liaison-access-label{
  margin:0 0 8px;font-size:12px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:var(--text-muted);
  display:flex;align-items:center;gap:6px;
}
.env-liaison-access-label i{color:var(--accent);font-size:10px}
.env-liaison-access-empty{
  margin:0;font-size:12px;color:var(--text-muted);font-style:italic;
}
.env-liaison-access-list{
  list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;
}
.env-liaison-access-row{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:5px 0;font-size:12.5px;color:var(--text-secondary);
}
.env-liaison-access-row:not(:first-child){border-top:1px dashed var(--border)}
.env-liaison-access-name{display:inline-flex;align-items:center;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.env-liaison-access-name i{color:#34d399;font-size:10px;flex-shrink:0}
.env-liaison-access-name small{color:var(--text-muted);font-size:10.5px;margin-inline-start:4px}
.env-liaison-access-row.is-revoked .env-liaison-access-name{
  color:var(--text-muted);text-decoration:line-through;
}
.env-liaison-access-row.is-revoked .env-liaison-access-name i{color:#fca5a5}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Noticeboard (announcements)
 * Hero with Posts + Pinned counters, unseen-tally banner, category
 * filter chips with tints, glass announcement cards with a coloured
 * left rail, pinned highlight, ack/pin/delete actions, site-style
 * post modal.
 * ════════════════════════════════════════════════════════════════════ */
.env-ann-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}

/* "N unseen announcements" banner */
.env-ann-unseen-banner{
  display:flex;align-items:center;gap:10px;
  margin-bottom:14px;padding:10px 16px;
  background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.45);
  border-radius:12px;color:var(--text-secondary);
  font-size:13px;
}
.env-ann-unseen-banner i{color:var(--accent);font-size:16px}
.env-ann-unseen-banner strong{color:var(--accent);font-weight:800;margin-inline-end:2px}

/* Category filter chips strip */
.env-ann-filter-row{
  display:flex;flex-wrap:wrap;gap:6px;
  padding:6px;margin-bottom:14px;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:12px;
}
.env-ann-filter-chip{
  display:inline-flex;align-items:center;gap:7px;
  padding:7px 14px;border-radius:8px;
  background:transparent;color:var(--text-secondary);
  font-size:12.5px;font-weight:600;letter-spacing:.005em;
  text-decoration:none;cursor:pointer;
  transition:background .15s,color .15s,box-shadow .15s;
}
.env-ann-filter-chip i{font-size:11px;color:var(--accent)}
.env-ann-filter-chip:hover{color:var(--text-primary);background:rgba(205,161,44,.08)}
.env-ann-filter-chip.is-active{
  color:var(--accent);
  background:var(--accent-dim);
  box-shadow:inset 0 0 0 1px rgba(205,161,44,.45);
}

/* Announcement cards */
.env-ann-list{display:flex;flex-direction:column;gap:12px}
.env-ann-card{
  position:relative;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:12px;padding:16px 18px 16px 22px;
  display:flex;flex-direction:column;gap:10px;
  transition:border-color .15s,transform .15s ease,box-shadow .15s;
  overflow:hidden;
}
.env-ann-card:hover{
  border-color:rgba(205,161,44,.30);
  transform:translateY(-1px);
  box-shadow:0 6px 18px rgba(0,0,0,.18);
}
.env-ann-card.is-pinned{
  background:var(--accent-dim);
  border-color:rgba(205,161,44,.45);
}
.env-ann-card.is-unseen{
  box-shadow:inset 4px 0 0 var(--accent);
}

/* Left status rail — tinted by category */
.env-ann-rail{
  position:absolute;top:0;bottom:0;left:0;width:4px;
  background:var(--accent);
}
.env-ann-cat-info     .env-ann-rail{background:#60a5fa}
.env-ann-cat-problem  .env-ann-rail{background:#fca5a5}
.env-ann-cat-appointment .env-ann-rail{background:var(--accent)}
.env-ann-cat-holiday  .env-ann-rail{background:#34d399}
.env-ann-cat-site_visit .env-ann-rail{background:#a78bfa}
.env-ann-cat-policy   .env-ann-rail{background:#fb923c}

.env-ann-head{display:flex;align-items:flex-start;gap:10px}
.env-ann-titleblock{flex:1;min-width:0}
.env-ann-meta-row{
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  margin-bottom:6px;
}

/* Pinned badge */
.env-ann-pinned{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;
  padding:3px 10px;border-radius:99px;
  color:var(--accent);background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.40);
}
.env-ann-pinned i{font-size:9px}

/* Category chip — picks up category tint via parent class */
.env-ann-cat-chip{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.01em;
  padding:3px 10px;border-radius:99px;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  color:var(--text-secondary);
}
.env-ann-cat-chip i{font-size:9px}
.env-ann-cat-info     .env-ann-cat-chip,
.env-ann-filter-chip.env-ann-cat-info     i{color:#60a5fa}
.env-ann-cat-info     .env-ann-cat-chip{background:rgba(96,165,250,.10);border-color:rgba(96,165,250,.35)}
.env-ann-cat-problem  .env-ann-cat-chip,
.env-ann-filter-chip.env-ann-cat-problem  i{color:#fca5a5}
.env-ann-cat-problem  .env-ann-cat-chip{background:rgba(248,113,113,.10);border-color:rgba(248,113,113,.40)}
.env-ann-cat-appointment .env-ann-cat-chip{color:var(--accent);background:var(--accent-dim);border-color:rgba(205,161,44,.35)}
.env-ann-filter-chip.env-ann-cat-appointment i{color:var(--accent)}
.env-ann-cat-holiday  .env-ann-cat-chip,
.env-ann-filter-chip.env-ann-cat-holiday  i{color:#34d399}
.env-ann-cat-holiday  .env-ann-cat-chip{background:rgba(52,211,153,.10);border-color:rgba(52,211,153,.40)}
.env-ann-cat-site_visit .env-ann-cat-chip,
.env-ann-filter-chip.env-ann-cat-site_visit i{color:#a78bfa}
.env-ann-cat-site_visit .env-ann-cat-chip{background:rgba(167,139,250,.10);border-color:rgba(167,139,250,.35)}
.env-ann-cat-policy   .env-ann-cat-chip,
.env-ann-filter-chip.env-ann-cat-policy   i{color:#fb923c}
.env-ann-cat-policy   .env-ann-cat-chip{background:rgba(251,146,60,.10);border-color:rgba(251,146,60,.40)}

/* "Seen" badge */
.env-ann-seen{
  display:inline-flex;align-items:center;gap:5px;
  font-size:10.5px;font-weight:600;letter-spacing:.01em;
  padding:3px 9px;border-radius:99px;
  color:#34d399;background:rgba(52,211,153,.10);
  border:1px solid rgba(52,211,153,.35);
}
.env-ann-seen i{font-size:9px}

/* Title + meta */
.env-ann-title{
  margin:0;font-size:16px;font-weight:700;letter-spacing:-.01em;
  color:var(--text-primary);line-height:1.3;
}
.env-ann-meta{
  display:flex;flex-wrap:wrap;gap:12px;margin-top:4px;
  font-size:11.5px;color:var(--text-muted);font-weight:500;
}
.env-ann-meta i{color:var(--accent);font-size:10px;margin-inline-end:4px}

.env-ann-body{
  margin:0;font-size:13px;color:var(--text-secondary);
  line-height:1.55;white-space:pre-wrap;word-break:break-word;
}

.env-ann-actions{
  display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;
  padding-top:10px;border-top:1px solid var(--border);
}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · People
 * Hero with Members + Pending-leave counters, EOTM hero banner,
 * KPI tile grid with award disclosure, recognitions stream, leave +
 * suggestions twin-pane.
 * ════════════════════════════════════════════════════════════════════ */
.env-people-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}
.env-people-pending-cell{
  border-color:rgba(251,146,60,.45)!important;
  background:var(--bg-card);
}
.env-people-pending-num{color:#fb923c!important}

/* Employee of the Month banner */
.env-people-eotm{
  display:flex;align-items:stretch;gap:0;
  margin-bottom:18px;
  background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.50);
  border-radius:14px;overflow:hidden;
  box-shadow:0 6px 22px rgba(205,161,44,.10);
}
.env-people-eotm-rail{
  flex-shrink:0;width:72px;
  display:flex;align-items:center;justify-content:center;
  background:var(--accent);
  color:#0f1521;font-size:28px;
}
.env-people-eotm-body{flex:1;min-width:0;padding:14px 18px}
.env-people-eotm-eyebrow{
  margin:0;font-size:11px;font-weight:700;color:var(--accent);
  text-transform:uppercase;letter-spacing:.07em;
  display:inline-flex;align-items:center;gap:6px;
}
.env-people-eotm-eyebrow i{font-size:10px}
.env-people-eotm-name{
  margin:6px 0 0;font-size:24px;font-weight:800;color:var(--text-primary);
  letter-spacing:-.01em;line-height:1.1;
}
.env-people-eotm-note{
  margin:6px 0 0;font-size:13px;color:var(--text-secondary);line-height:1.5;
}

/* KPI tile grid */
.env-people-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:12px;
}
.env-kpi-card{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:12px;padding:14px 16px;
  display:flex;flex-direction:column;gap:10px;
  transition:border-color .15s,transform .15s ease,box-shadow .15s,opacity .15s;
}
.env-kpi-card:hover{
  border-color:rgba(205,161,44,.35);
  transform:translateY(-1px);
  box-shadow:0 6px 18px rgba(0,0,0,.18);
}
.env-kpi-card.is-on-leave{opacity:.72}
.env-kpi-card.is-on-leave:hover{opacity:1}

.env-kpi-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:8px;
}
.env-kpi-identity{flex:1;min-width:0}
.env-kpi-name{
  margin:0;font-size:13.5px;font-weight:700;color:var(--text-primary);
  letter-spacing:-.005em;line-height:1.2;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-kpi-role{
  margin:2px 0 0;font-size:11px;color:var(--text-muted);font-weight:500;
}
.env-kpi-leave{
  flex-shrink:0;display:inline-flex;align-items:center;gap:4px;
  font-size:10.5px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;
  padding:2px 8px;border-radius:99px;
  color:#fb923c;background:rgba(251,146,60,.10);
  border:1px solid rgba(251,146,60,.40);
}
.env-kpi-leave i{font-size:9px}

.env-kpi-stats{
  display:grid;grid-template-columns:repeat(3,1fr);gap:6px;
}
.env-kpi-stat{
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:8px;padding:6px 8px;text-align:center;
}
.env-kpi-stat-num{
  margin:0;font-size:18px;font-weight:800;line-height:1;
  color:var(--text-primary);font-variant-numeric:tabular-nums;
}
.env-kpi-stat-lbl{
  margin:3px 0 0;font-size:10px;font-weight:700;letter-spacing:.05em;
  text-transform:uppercase;color:var(--text-muted);
}
.env-kpi-stat--good .env-kpi-stat-num{color:#34d399}
.env-kpi-stat--bad .env-kpi-stat-num{color:#fca5a5}
.env-kpi-stat--bad{
  background:rgba(248,113,113,.06);
  border-color:rgba(248,113,113,.30);
}

.env-kpi-points{
  display:flex;align-items:center;gap:6px;
  padding:6px 10px;border-radius:99px;
  background:var(--accent-dim);
  border:1px solid rgba(205,161,44,.30);
  font-size:12px;color:var(--text-secondary);
  font-weight:600;align-self:flex-start;
}
.env-kpi-points i{color:var(--accent);font-size:11px}
.env-kpi-points strong{
  color:var(--accent);font-weight:800;margin-inline-start:auto;
  font-variant-numeric:tabular-nums;
}

.env-kpi-award{
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  border-radius:8px;padding:8px 10px;
}
.env-kpi-award > summary{
  display:flex;align-items:center;gap:6px;cursor:pointer;list-style:none;
  font-size:12px;font-weight:700;color:var(--text-primary);
}
.env-kpi-award > summary::-webkit-details-marker{display:none}
.env-kpi-award > summary > i:first-child{color:var(--accent);font-size:11px}
.env-kpi-award-chevron{
  margin-inline-start:auto;color:var(--accent);font-size:10px;
  transition:transform .15s;
}
.env-kpi-award[open] .env-kpi-award-chevron{transform:rotate(180deg)}
.env-kpi-award-form{
  display:flex;flex-direction:column;gap:6px;margin-top:8px;
}
.env-kpi-award-form .env-org-input{padding:5px 8px;font-size:11.5px}
.env-kpi-award-submit{align-self:flex-end;font-size:11.5px}

/* Recognitions stream */
.env-recog-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.env-recog-row{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:8px 4px;border-top:1px dashed var(--border);
  font-size:12.5px;
}
.env-recog-row:first-child{border-top:none}
.env-recog-kind{
  display:inline-flex;align-items:center;gap:5px;
  padding:2px 9px;border-radius:99px;
  background:rgba(52,211,153,.10);
  border:1px solid rgba(52,211,153,.40);
  color:#34d399;font-size:11px;font-weight:700;
}
.env-recog-kind i{font-size:9px}
.env-recog-name{color:var(--text-primary);font-weight:700}
.env-recog-date{color:var(--text-muted);font-size:11.5px;margin-inline-start:auto}
.env-recog-body{
  flex:1 1 100%;margin:4px 0 0;font-size:12.5px;
  color:var(--text-muted);line-height:1.45;
}

/* Twin grid for leave + suggestions */
.env-people-twin{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;
}
@media (max-width:880px){.env-people-twin{grid-template-columns:1fr}}

.env-people-sublabel{
  margin:0 0 8px;font-size:11px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--text-muted);
  display:flex;align-items:center;gap:6px;
}
.env-people-sublabel i{color:var(--accent);font-size:10px}

/* Leave rows */
.env-leave-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.env-leave-row{
  padding:10px 12px;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;
}
.env-leave-row-head{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;
}
.env-leave-kind{
  display:inline-flex;align-items:center;
  padding:2px 9px;border-radius:99px;
  background:var(--accent-dim);color:var(--accent);
  border:1px solid rgba(205,161,44,.35);
  font-size:11px;font-weight:700;
}
.env-leave-name{color:var(--text-primary);font-weight:700}
.env-leave-window{color:var(--text-muted);font-size:11.5px}
.env-leave-note{
  margin:6px 0 0;font-size:12px;color:var(--text-secondary);line-height:1.45;
}
.env-leave-actions{display:flex;gap:6px;margin-top:8px}

.env-leave-decided-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.env-leave-decided-row{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:6px 4px;border-top:1px dashed var(--border);
  font-size:12.5px;color:var(--text-muted);
}
.env-leave-decided-row:first-child{border-top:none}
.env-leave-decided-name{color:var(--text-secondary);font-weight:600}
.env-leave-decided-window{color:var(--text-muted);font-size:11.5px}
.env-leave-status{
  margin-inline-start:auto;
  display:inline-flex;align-items:center;gap:5px;
  font-size:10.5px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;
  padding:2px 9px;border-radius:99px;
}
.env-leave-status i{font-size:9px}
.env-leave-status--approved{color:#34d399;background:rgba(52,211,153,.10);border:1px solid rgba(52,211,153,.40)}
.env-leave-status--rejected{color:#fca5a5;background:rgba(248,113,113,.10);border:1px solid rgba(248,113,113,.40)}

/* Suggestions */
.env-suggestion-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.env-suggestion-row{
  padding:10px 12px;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;
}
.env-suggestion-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:8px;
}
.env-suggestion-title{
  margin:0;font-size:13.5px;font-weight:700;color:var(--text-primary);
  letter-spacing:-.005em;line-height:1.25;flex:1;min-width:0;
}
.env-suggestion-meta{
  margin:4px 0 0;font-size:11px;color:var(--text-muted);
}
.env-suggestion-meta em{font-style:italic;color:var(--text-muted)}
.env-suggestion-meta em i{margin-inline-end:3px;font-size:10px}
.env-suggestion-body{
  margin:6px 0 0;font-size:12.5px;color:var(--text-secondary);
  line-height:1.5;white-space:pre-wrap;word-break:break-word;
}
.env-suggestion-status{
  flex-shrink:0;
  display:inline-flex;align-items:center;
  font-size:10.5px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;
  padding:2px 9px;border-radius:99px;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  color:var(--text-secondary);
}
.env-suggestion-status--accepted{color:#34d399;background:rgba(52,211,153,.10);border-color:rgba(52,211,153,.40)}
.env-suggestion-status--rejected{color:#fca5a5;background:rgba(248,113,113,.10);border-color:rgba(248,113,113,.40)}
.env-suggestion-status--in_progress{color:#60a5fa;background:rgba(96,165,250,.10);border-color:rgba(96,165,250,.40)}
.env-suggestion-status--planned{color:#a78bfa;background:rgba(167,139,250,.10);border-color:rgba(167,139,250,.40)}
.env-suggestion-status-form{
  display:flex;gap:6px;margin-top:8px;align-items:center;
}

.env-people-anon{
  display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  font-size:12px;color:var(--text-secondary);font-weight:600;
}
.env-people-anon input{margin:0}
.env-people-anon i{color:var(--accent);font-size:10px;margin-inline-end:3px}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Search
 * Big in-hero search bar, source counter strip, per-source result
 * sections with typed row icons and meta chips.
 * ════════════════════════════════════════════════════════════════════ */
.env-search-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}

/* In-hero search bar */
.env-search-bar{
  display:flex;align-items:stretch;gap:10px;
  margin-top:18px;flex-wrap:wrap;
}
.env-search-input-wrap{
  position:relative;flex:1 1 300px;min-width:240px;
  display:flex;align-items:center;
}
.env-search-input-wrap > i{
  position:absolute;left:16px;top:50%;transform:translateY(-50%);
  color:var(--accent);font-size:14px;pointer-events:none;
}
.env-search-input-wrap input{
  width:100%;box-sizing:border-box;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;
  color:var(--text-primary);
  padding:11px 40px 11px 42px;font-size:14px;
  font-family:inherit;
  transition:border-color .15s,box-shadow .15s,background .15s;
}
.env-search-input-wrap input::placeholder{color:var(--text-muted);font-size:13px}
.env-search-input-wrap input:hover{border-color:rgba(205,161,44,.40)}
.env-search-input-wrap input:focus{
  outline:none;
  border-color:rgba(205,161,44,.65);
  box-shadow:0 0 0 3px rgba(205,161,44,.18);
  background:var(--bg-card);
}
.env-search-clear{
  position:absolute;right:14px;top:50%;transform:translateY(-50%);
  color:var(--text-muted);font-size:12px;
  display:inline-flex;align-items:center;justify-content:center;
  width:24px;height:24px;border-radius:50%;
  text-decoration:none;transition:background .12s,color .12s;
}
.env-search-clear:hover{background:rgba(248,113,113,.15);color:#fca5a5}
.env-search-submit{
  flex:0 0 auto;font-size:13.5px;padding:11px 22px;border-radius:10px;
  display:inline-flex;align-items:center;gap:7px;
}
.env-search-submit i{font-size:12px}

/* Per-source counter strip */
.env-search-source-strip{
  display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;
}
.env-search-source-chip{
  display:inline-flex;align-items:center;gap:7px;
  padding:5px 12px;border-radius:99px;
  font-size:12px;font-weight:600;color:var(--text-secondary);
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
}
.env-search-source-chip i{font-size:10px}
.env-search-source-chip strong{
  color:var(--text-primary);font-weight:800;font-variant-numeric:tabular-nums;
  margin-inline-start:3px;
}
.env-search-source-projects     i{color:#60a5fa}
.env-search-source-tasks        i{color:#a78bfa}
.env-search-source-announcements i{color:var(--accent)}
.env-search-source-vault        i{color:#34d399}

/* Result section list */
.env-search-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.env-search-row{
  display:flex;align-items:flex-start;gap:12px;
  padding:10px 6px;border-top:1px solid var(--border);
  transition:background .12s;
}
.env-search-row:first-child{border-top:none}
.env-search-row:hover{background:rgba(205,161,44,.05)}
.env-search-row-ico{
  flex-shrink:0;width:34px;height:34px;border-radius:10px;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:13px;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
}
.env-search-row-ico.env-search-source-projects{
  color:#60a5fa;background:rgba(96,165,250,.10);border-color:rgba(96,165,250,.30);
}
.env-search-row-ico.env-search-source-tasks{
  color:#a78bfa;background:rgba(167,139,250,.10);border-color:rgba(167,139,250,.30);
}
.env-search-row-ico.env-search-source-announcements{
  color:var(--accent);background:var(--accent-dim);border-color:rgba(205,161,44,.30);
}
.env-search-row-ico.env-search-source-vault{
  color:#34d399;background:rgba(52,211,153,.10);border-color:rgba(52,211,153,.30);
}
.env-search-row-link{
  flex:1;min-width:0;display:block;color:inherit;text-decoration:none;
}
.env-search-row-title{
  margin:0;font-size:14px;font-weight:700;letter-spacing:-.005em;
  color:var(--text-primary);line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.env-search-row-link:hover .env-search-row-title{color:var(--accent)}
.env-search-row-meta{
  margin:5px 0 0;display:flex;align-items:center;flex-wrap:wrap;gap:6px;
}
.env-search-row-chip{
  display:inline-flex;align-items:center;gap:5px;
  padding:2px 9px;border-radius:99px;
  background:var(--bg-card);border:1px solid var(--border-hover);
  color:var(--text-secondary);
  font-size:11px;font-weight:600;letter-spacing:.01em;
}
.env-search-row-chip i{font-size:9px}
.env-search-row-snippet{
  margin:6px 0 0;font-size:12px;color:var(--text-muted);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.env-search-row-go{
  flex-shrink:0;margin-top:8px;
  color:var(--text-muted);font-size:11px;
  transition:color .12s,transform .15s;
}
.env-search-row:hover .env-search-row-go{
  color:var(--accent);transform:translate(2px,-2px);
}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Audit log
 * Hero with Total/Showing counters, kind-filter row, vertical
 * timeline of events with family-tinted dots + collapsible before /
 * after diff pane.
 * ════════════════════════════════════════════════════════════════════ */
.env-audit-page .ov-hero .ov-hero-row{
  display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;
}

/* Filter row */
.env-audit-filter-row{
  display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;
  margin-bottom:18px;
}
.env-audit-filter-field{flex:1 1 260px;min-width:0;display:flex;flex-direction:column;gap:5px}
.env-audit-filter-select{height:36px;font-size:13px}
.env-audit-clear{flex:0 0 auto;height:36px}
.env-audit-cap-note{
  margin:0 0 0 auto;font-size:11.5px;color:var(--text-muted);font-style:italic;
}

/* Timeline */
.env-audit-list{
  list-style:none;margin:0;padding:0;position:relative;
}
/* Single vertical rail running down the whole list at the 88px mark
 * (right after the date column, behind the dot column). */
.env-audit-list::before{
  content:"";position:absolute;top:14px;bottom:14px;
  left:108px;width:2px;
  background:rgba(205,161,44,.20);
}
.env-audit-row{
  position:relative;
  display:grid;grid-template-columns:96px 24px 1fr;gap:12px;
  align-items:flex-start;
  padding:8px 0;
}
.env-audit-row + .env-audit-row{margin-top:4px}

/* Time column */
.env-audit-time{
  display:flex;flex-direction:column;align-items:flex-end;
  font-variant-numeric:tabular-nums;line-height:1.2;
  padding-top:6px;
}
.env-audit-time-date{
  font-size:11.5px;font-weight:700;color:var(--text-primary);
  letter-spacing:.01em;
}
.env-audit-time-clock{
  font-size:10.5px;color:var(--text-muted);font-weight:500;margin-top:2px;
}

/* Dot column */
.env-audit-dot{
  position:relative;z-index:1;
  width:32px;height:32px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--bg-card);
  border:2px solid var(--accent);
  color:var(--accent);font-size:11px;
  margin-left:-4px;margin-top:2px;
  flex-shrink:0;
}
/* Family tints — the dot picks up its family colour. */
.env-audit-family-org      .env-audit-dot{color:#a78bfa;border-color:#a78bfa;background:rgba(167,139,250,.10)}
.env-audit-family-project  .env-audit-dot{color:#60a5fa;border-color:#60a5fa;background:rgba(96,165,250,.10)}
.env-audit-family-vault    .env-audit-dot{color:#34d399;border-color:#34d399;background:rgba(52,211,153,.10)}
.env-audit-family-finance  .env-audit-dot{color:var(--accent);border-color:var(--accent);background:var(--accent-dim)}
.env-audit-family-customer .env-audit-dot{color:#fb923c;border-color:#fb923c;background:rgba(251,146,60,.10)}
.env-audit-family-people   .env-audit-dot{color:#fca5a5;border-color:#fca5a5;background:rgba(248,113,113,.10)}
.env-audit-family-other    .env-audit-dot{color:var(--text-muted);border-color:var(--border-hover)}

/* Body column */
.env-audit-body{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;padding:10px 14px;
  transition:border-color .15s,box-shadow .15s;
}
.env-audit-body:hover{
  border-color:rgba(205,161,44,.30);
  box-shadow:0 4px 14px rgba(0,0,0,.16);
}
.env-audit-head{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.env-audit-kind{
  font-size:13px;font-weight:700;color:var(--text-primary);
  letter-spacing:-.005em;
}
.env-audit-family-org      .env-audit-kind{color:#a78bfa}
.env-audit-family-project  .env-audit-kind{color:#60a5fa}
.env-audit-family-vault    .env-audit-kind{color:#34d399}
.env-audit-family-finance  .env-audit-kind{color:var(--accent)}
.env-audit-family-customer .env-audit-kind{color:#fb923c}
.env-audit-family-people   .env-audit-kind{color:#fca5a5}

.env-audit-target{
  display:inline-flex;align-items:center;gap:5px;
  padding:2px 9px;border-radius:99px;
  background:var(--bg-card);border:1px solid var(--border-hover);
  color:var(--text-muted);
  font-size:10.5px;font-weight:600;letter-spacing:.01em;
  font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
}
.env-audit-target i{font-size:9px;color:var(--accent)}
.env-audit-target small{color:var(--text-secondary);margin-inline-start:3px}

.env-audit-actor{
  margin:6px 0 0;font-size:11.5px;color:var(--text-muted);font-weight:500;
}
.env-audit-actor i{color:var(--accent);font-size:10px;margin-inline-end:5px}
.env-audit-actor em{font-style:italic;color:var(--text-muted)}

/* Diff disclosure */
.env-audit-diff{
  margin-top:10px;padding:0;
  background:var(--bg-card);
  border:1px solid var(--border);border-radius:8px;
}
.env-audit-diff > summary{
  display:flex;align-items:center;gap:7px;cursor:pointer;list-style:none;
  padding:7px 12px;
  font-size:11.5px;font-weight:700;color:var(--text-secondary);
  letter-spacing:.02em;
}
.env-audit-diff > summary::-webkit-details-marker{display:none}
.env-audit-diff > summary > i:first-child{color:var(--accent);font-size:10px}
.env-audit-diff-chevron{
  margin-inline-start:auto;color:var(--accent);font-size:10px;
  transition:transform .15s;
}
.env-audit-diff[open] .env-audit-diff-chevron{transform:rotate(180deg)}
.env-audit-diff-body{
  display:flex;flex-direction:column;gap:8px;
  padding:8px 12px 12px;border-top:1px solid var(--border);
}
.env-audit-diff-pane{
  display:flex;flex-direction:column;gap:4px;
}
.env-audit-diff-label{
  margin:0;font-size:10.5px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--text-muted);
  display:flex;align-items:center;gap:5px;
}
.env-audit-diff-label i{font-size:9px}
.env-audit-diff-label--before{color:#fca5a5}
.env-audit-diff-label--before i{color:#fca5a5}
.env-audit-diff-label--after{color:#34d399}
.env-audit-diff-label--after i{color:#34d399}
.env-audit-diff-pre{
  margin:0;padding:8px 12px;
  background:var(--bg-surface);border:1px solid var(--border);border-radius:6px;
  color:var(--text-secondary);
  font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size:11.5px;line-height:1.5;
  white-space:pre-wrap;word-break:break-word;
  max-height:240px;overflow-y:auto;
}
.env-audit-diff-note{
  margin:0;padding:8px 12px;
  background:var(--bg-surface);border:1px solid var(--border);border-radius:6px;
  color:var(--text-secondary);font-size:12px;line-height:1.5;
}

/* Narrow viewports — collapse the date column above the dot+body. */
@media (max-width:640px){
  .env-audit-list::before{display:none}
  .env-audit-row{grid-template-columns:24px 1fr}
  .env-audit-time{
    grid-column:1 / -1;flex-direction:row;align-items:center;justify-content:flex-start;
    gap:8px;padding-top:0;
  }
  .env-audit-time-clock{margin-top:0}
}

/* ════════════════════════════════════════════════════════════════════
 * Office-env · Dashboard
 * Layered atop the existing .env-welcome banner. Adds KPI tile row,
 * twin P&L + overhead budget cards, stage mini-kanban with the
 * project-stage palette, and the noticeboard + EOTM twin row.
 * ════════════════════════════════════════════════════════════════════ */
.env-dash-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.env-dash-row-news{grid-template-columns:minmax(0, 2fr) minmax(0, 1fr)}
@media (max-width:880px){
  .env-dash-row,
  .env-dash-row-news{grid-template-columns:1fr}
}

/* KPI grid */
.env-dash-kpi-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:12px;
}
.env-dash-kpi{
  display:flex;flex-direction:column;gap:6px;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:12px;padding:14px 16px;
  text-decoration:none;color:inherit;
  transition:border-color .15s,transform .15s ease,box-shadow .15s;
}
.env-dash-kpi:hover{
  border-color:rgba(205,161,44,.35);
  transform:translateY(-1px);
  box-shadow:0 6px 18px rgba(0,0,0,.18);
  color:inherit;
}
.env-dash-kpi-head{display:flex;align-items:center;gap:10px}
.env-dash-kpi-ico{
  width:30px;height:30px;border-radius:9px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:13px;
  background:var(--accent-dim);color:var(--accent);
  border:1px solid rgba(205,161,44,.30);
}
.env-dash-kpi-projects{color:#60a5fa;background:rgba(96,165,250,.10);border-color:rgba(96,165,250,.30)}
.env-dash-kpi-blockers{color:#fca5a5;background:rgba(248,113,113,.10);border-color:rgba(248,113,113,.30)}
.env-dash-kpi-overdue{color:#fb923c;background:rgba(251,146,60,.10);border-color:rgba(251,146,60,.30)}
.env-dash-kpi-profit{color:var(--accent);background:var(--accent-dim);border-color:rgba(205,161,44,.30)}
.env-dash-kpi-label{
  margin:0;font-size:11px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--text-muted);
}
.env-dash-kpi-num{
  margin:0;font-size:30px;font-weight:800;color:var(--text-primary);
  line-height:1;letter-spacing:.01em;font-variant-numeric:tabular-nums;
}
.env-dash-kpi-foot{
  margin:0;font-size:11.5px;color:var(--text-muted);
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.env-dash-kpi-foot i{font-size:9px;color:var(--accent);margin-inline-start:3px}
.env-dash-kpi-pl{display:inline-flex;align-items:center;gap:4px;font-weight:600;font-variant-numeric:tabular-nums}
.env-dash-kpi-pl:first-child i{color:#34d399}
.env-dash-kpi-pl:nth-child(2) i{color:#fca5a5}

.env-dash-kpi--danger .env-dash-kpi-num{color:#fca5a5}
.env-dash-kpi--warn   .env-dash-kpi-num{color:#fb923c}
.env-dash-kpi--ok     .env-dash-kpi-num{color:#34d399}

/* Projects P&L card */
.env-dash-pl{
  display:flex;gap:10px;flex-wrap:wrap;align-items:stretch;
  padding:8px 0 4px;
}
.env-dash-pl-side,
.env-dash-pl-net{
  flex:1;min-width:120px;
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;padding:10px 14px;
}
.env-dash-pl-side--in{background:rgba(52,211,153,.06);border-color:rgba(52,211,153,.30)}
.env-dash-pl-side--out{background:rgba(248,113,113,.06);border-color:rgba(248,113,113,.30)}
.env-dash-pl-net.is-positive{background:rgba(52,211,153,.10);border-color:rgba(52,211,153,.45)}
.env-dash-pl-net.is-negative{background:rgba(248,113,113,.10);border-color:rgba(248,113,113,.45)}
.env-dash-pl-label{
  margin:0;font-size:10.5px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--text-muted);
}
.env-dash-pl-num{
  margin:4px 0 0;font-size:22px;font-weight:800;line-height:1;
  font-variant-numeric:tabular-nums;color:var(--text-primary);
}
.env-dash-pl-side--in .env-dash-pl-num{color:#34d399}
.env-dash-pl-side--out .env-dash-pl-num{color:#fca5a5}
.env-dash-pl-net.is-positive .env-dash-pl-num{color:#34d399}
.env-dash-pl-net.is-negative .env-dash-pl-num{color:#fca5a5}

/* Overhead budget mini-bar */
.env-dash-budget{padding-top:6px}
.env-dash-budget-head{
  display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  font-size:13px;color:var(--text-muted);font-variant-numeric:tabular-nums;
  margin-bottom:8px;
}
.env-dash-budget-head strong{color:var(--text-primary);font-weight:800}
.env-dash-budget-head small{color:var(--text-muted);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-inline-start:3px}
.env-dash-budget-divider{color:var(--text-muted)}
.env-dash-budget-pct{
  margin-inline-start:auto;
  padding:2px 10px;border-radius:99px;
  font-size:12px;font-weight:800;
  background:var(--accent-dim);color:var(--accent);
  border:1px solid rgba(205,161,44,.40);
}
.env-dash-budget-pct.is-warn{color:#fb923c;background:rgba(251,146,60,.10);border-color:rgba(251,146,60,.40)}
.env-dash-budget-pct.is-over{color:#fca5a5;background:rgba(248,113,113,.10);border-color:rgba(248,113,113,.40)}
.env-dash-budget-track{
  height:10px;border-radius:99px;overflow:hidden;
  background:var(--bg-surface);border:1px solid var(--border-hover);
}
.env-dash-budget-fill{
  display:block;height:100%;background:#34d399;border-radius:99px;
  transition:width .35s ease;
}
.env-dash-budget-fill.is-warn{background:#fb923c}
.env-dash-budget-fill.is-over{background:#fca5a5}

/* Stage mini-kanban */
.env-dash-stage-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;
}
.env-dash-stage{
  background:var(--bg-surface);
  border:1px solid var(--border-hover);
  border-radius:10px;padding:10px 12px;text-align:center;
  transition:border-color .15s,transform .15s;
}
.env-dash-stage:hover{transform:translateY(-1px);border-color:rgba(205,161,44,.35)}
.env-dash-stage-num{
  margin:0;font-size:22px;font-weight:800;line-height:1;
  color:var(--text-primary);font-variant-numeric:tabular-nums;
}
.env-dash-stage-label{
  margin:6px 0 0;font-size:10.5px;font-weight:700;letter-spacing:.05em;
  text-transform:uppercase;color:var(--text-muted);
}
.env-dash-stage.env-stage-brief{background:rgba(96,165,250,.08);border-color:rgba(96,165,250,.30)}
.env-dash-stage.env-stage-brief .env-dash-stage-num{color:#60a5fa}
.env-dash-stage.env-stage-design{background:rgba(167,139,250,.08);border-color:rgba(167,139,250,.30)}
.env-dash-stage.env-stage-design .env-dash-stage-num{color:#a78bfa}
.env-dash-stage.env-stage-internal_review,
.env-dash-stage.env-stage-client_review{background:var(--accent-dim);border-color:rgba(205,161,44,.30)}
.env-dash-stage.env-stage-internal_review .env-dash-stage-num,
.env-dash-stage.env-stage-client_review .env-dash-stage-num{color:var(--accent)}
.env-dash-stage.env-stage-revisions{background:rgba(251,146,60,.08);border-color:rgba(251,146,60,.30)}
.env-dash-stage.env-stage-revisions .env-dash-stage-num{color:#fb923c}
.env-dash-stage.env-stage-approval_submittal,
.env-dash-stage.env-stage-approved,
.env-dash-stage.env-stage-delivered{background:rgba(52,211,153,.08);border-color:rgba(52,211,153,.30)}
.env-dash-stage.env-stage-approval_submittal .env-dash-stage-num,
.env-dash-stage.env-stage-approved .env-dash-stage-num,
.env-dash-stage.env-stage-delivered .env-dash-stage-num{color:#34d399}
.env-dash-stage.env-stage-closed .env-dash-stage-num{color:var(--text-muted)}

/* Noticeboard mini-list */
.env-dash-ann-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.env-dash-ann-row{
  position:relative;
  padding:10px 0 10px 12px;
  border-top:1px dashed var(--border);
  display:grid;
  grid-template-columns:auto auto 1fr auto;
  grid-template-areas:"pin chip title meta" ". . body body";
  gap:6px 10px;align-items:center;
  border-inline-start:3px solid transparent;
  margin-inline-start:-12px;padding-inline-start:12px;
}
.env-dash-ann-row:first-child{border-top:none}
.env-dash-ann-row.is-pinned{
  background:var(--accent-dim);
  border-inline-start-color:var(--accent);
}
.env-dash-ann-row.env-ann-cat-info:not(.is-pinned){border-inline-start-color:rgba(96,165,250,.50)}
.env-dash-ann-row.env-ann-cat-problem:not(.is-pinned){border-inline-start-color:rgba(248,113,113,.55)}
.env-dash-ann-row.env-ann-cat-appointment:not(.is-pinned){border-inline-start-color:rgba(205,161,44,.55)}
.env-dash-ann-row.env-ann-cat-holiday:not(.is-pinned){border-inline-start-color:rgba(52,211,153,.55)}
.env-dash-ann-row.env-ann-cat-site_visit:not(.is-pinned){border-inline-start-color:rgba(167,139,250,.55)}
.env-dash-ann-row.env-ann-cat-policy:not(.is-pinned){border-inline-start-color:rgba(251,146,60,.55)}

.env-dash-ann-row .env-ann-pinned{grid-area:pin;padding:1px 7px;font-size:9px}
.env-dash-ann-row .env-ann-cat-chip{grid-area:chip}
.env-dash-ann-title{
  grid-area:title;margin:0;font-size:13.5px;font-weight:700;
  color:var(--text-primary);letter-spacing:-.005em;line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;
}
.env-dash-ann-meta{
  grid-area:meta;margin:0;font-size:11px;color:var(--text-muted);
  text-align:end;font-weight:500;
}
.env-dash-ann-body{
  grid-area:body;margin:0;font-size:12px;color:var(--text-muted);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

/* EOTM card */
.env-dash-eotm{text-align:center;padding:20px 12px 6px}
.env-dash-eotm-crown{
  width:54px;height:54px;border-radius:50%;
  margin:0 auto 10px;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:24px;color:#0f1521;
  background:var(--accent);
  box-shadow:0 6px 16px rgba(205,161,44,.30);
}
.env-dash-eotm-name{
  margin:0;font-size:22px;font-weight:800;color:var(--accent);
  letter-spacing:-.01em;line-height:1.1;
}
.env-dash-eotm-period{
  margin:4px 0 0;font-size:11.5px;color:var(--text-muted);
  text-transform:uppercase;letter-spacing:.07em;font-weight:700;
}
.env-dash-eotm-body{
  margin:10px 0 0;font-size:12.5px;color:var(--text-secondary);
  line-height:1.5;text-align:start;
}

/* Section-foot link (shared by several dashboard cards) */
.env-dash-section-link{
  display:inline-flex;align-items:center;gap:5px;
  margin-top:12px;
  font-size:12px;font-weight:700;color:var(--accent);
  text-decoration:none;
}
.env-dash-section-link:hover{text-decoration:underline}
.env-dash-section-link i{font-size:10px;transition:transform .15s}
.env-dash-section-link:hover i{transform:translateX(3px)}

/* ════════════════════════════════════════════════════════════════════
 * Office Insights — Power Page
 * Layout grids, KPI tiles with sparklines, trend arrows, donut/ring
 * SVGs, hiring funnel, review histogram, weekday rhythm, heatmap,
 * staff stack-bar, ranked top-lists.
 * Status-colour palette only; per-metric tones are reused from
 * the existing .ov-insights-seg-* family.
 *
 * Glass treatment — every card on this page uses the site-wide
 * frosted-glass vocabulary (gold-tinted translucent gradient + blur +
 * saturate + soft inner highlight + top-corner gold halo). Scoped to
 * .ov-insights so the solid .ov-section / .ov-aside-card used on
 * other office pages is untouched.
 * ════════════════════════════════════════════════════════════════════ */

/* Glass surface — applied to every card on the insights page */
.ov-insights .ov-hero,
.ov-insights .ov-section,
.ov-ins-headline,
.ov-ins-tile{
  position:relative;
  background:var(--bg-card);
  border:1px solid var(--border-hover);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  backdrop-filter:blur(14px) saturate(140%);
  box-shadow:
    0 6px 22px rgba(0,0,0,.18),
    inset 0 1px 0 rgba(255,255,255,.05);
  overflow:hidden;
  isolation:isolate;
}
[data-theme="light"] .ov-insights .ov-hero,
[data-theme="light"] .ov-insights .ov-section,
[data-theme="light"] .ov-ins-headline,
[data-theme="light"] .ov-ins-tile{
  background:var(--bg-card);
  box-shadow:
    0 8px 24px rgba(0,0,0,.08),
    inset 0 1px 0 rgba(255,255,255,.70);
}

/* Gold halo glow in the top-left of every glass card */
.ov-insights .ov-hero::after,
.ov-insights .ov-section::before,
.ov-ins-headline::before,
.ov-ins-tile::before{
  content:"";position:absolute;top:0;left:0;right:0;height:120px;
  background:transparent;
  pointer-events:none;z-index:0;
}
.ov-insights .ov-section > *,
.ov-ins-headline > *,
.ov-ins-tile > *{position:relative;z-index:1}

/* Hover lift — gold border + slightly heavier shadow */
.ov-insights .ov-section,
.ov-ins-tile{
  transition:border-color .2s,transform .15s ease,box-shadow .2s;
}
.ov-insights .ov-section:hover,
.ov-ins-tile:hover{
  border-color:rgba(205,161,44,.32);
  box-shadow:
    0 10px 28px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.07);
}
.ov-ins-tile:hover{transform:translateY(-2px)}

.ov-insights .ov-hero-row{display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap}
.ov-ins-headline{
  margin-left:auto;border-radius:14px;padding:14px 18px;
  min-width:200px;text-align:end;
}
.ov-ins-headline-num{font-size:34px;font-weight:800;color:var(--accent);line-height:1;letter-spacing:.01em}
.ov-ins-headline-sub{font-size:11.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin-top:4px;font-weight:600}
.ov-ins-headline .ov-ins-trend{margin-top:10px;justify-content:flex-end}
.ov-ins-headline .ov-ins-trend small{display:block;margin-top:2px;font-size:10.5px;font-weight:600;opacity:.7}

/* Trend arrows — three states, status colour only */
.ov-ins-trend{
  display:inline-flex;align-items:center;gap:6px;
  font-size:12px;font-weight:700;letter-spacing:.02em;
  padding:3px 10px;border-radius:99px;
  border:1px solid var(--border-hover);
  background:rgba(255,255,255,.04);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
}
[data-theme="light"] .ov-ins-trend{background:rgba(255,255,255,.55);border-color:rgba(0,0,0,.08)}
.ov-ins-trend i{font-size:11px}
.ov-ins-trend-up{color:#34d399;border-color:rgba(52,211,153,.35);background:rgba(52,211,153,.10)}
.ov-ins-trend-down{color:#fca5a5;border-color:rgba(248,113,113,.35);background:rgba(248,113,113,.10)}
.ov-ins-trend-flat{color:var(--text-muted)}

/* KPI grid — auto-fit 3-up to 6-up depending on width */
.ov-ins-grid-kpi{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;
}
.ov-ins-tile{
  border-radius:14px;
  padding:14px 16px 6px;display:flex;flex-direction:column;min-height:120px;
}
.ov-ins-tile-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.ov-ins-tile-label{
  margin:0 0 4px;font-size:11px;font-weight:700;color:var(--text-muted);
  text-transform:uppercase;letter-spacing:.07em;display:flex;align-items:center;gap:6px;
}
.ov-ins-tile-label i{color:var(--accent);font-size:11px}
.ov-ins-tile-num{margin:0;font-size:28px;font-weight:800;color:var(--text-primary);line-height:1.1;letter-spacing:.01em}
.ov-ins-tile-foot{margin:4px 0 0;font-size:11.5px;color:var(--text-muted);font-weight:500}

/* Sparkline — 100x30 viewBox stretched to tile width */
.ov-ins-spark{display:block;width:100%;height:34px;margin:6px 0 0;overflow:visible}
.ov-ins-spark-follows{color:#34d399}
.ov-ins-spark-applicants{color:var(--accent)}
.ov-ins-spark-conversations{color:#60a5fa}
.ov-ins-spark-reviews{color:#fb923c}
.ov-ins-spark-projects{color:#a78bfa}

/* Two-column row layouts */
.ov-ins-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px}
.ov-ins-row-3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){
  .ov-ins-row,.ov-ins-row-3{grid-template-columns:1fr}
}

/* Section card head — title + sub */
.ov-ins-card-head{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.ov-ins-card-head .ov-section-title{margin:0}
.ov-ins-card-sub{margin:0;font-size:12px;color:var(--text-muted);font-weight:500}

.ov-ins-card-chart{min-width:0}
.ov-ins-card-side{min-width:0}
.ov-ins-card-third{min-width:0}

.ov-ins-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:14px;font-size:11.5px;color:var(--text-muted)}

/* Verification gauge ring */
.ov-ins-gauge-wrap{
  position:relative;width:140px;height:140px;margin:6px auto 12px;
}
.ov-ins-ring{width:100%;height:100%;display:block}
.ov-ins-ring-bg{stroke:var(--border);opacity:.6}
.ov-ins-ring-fg{stroke:var(--accent);transition:stroke-dasharray .4s ease}
.ov-ins-gauge-text{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;
}
.ov-ins-gauge-num{margin:0;font-size:32px;font-weight:800;color:var(--text-primary);line-height:1}
.ov-ins-gauge-num small{font-size:14px;color:var(--text-muted);margin-left:1px;font-weight:600}
.ov-ins-gauge-lbl{margin:2px 0 0;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-weight:700}

/* Verification tracks — list of three rows */
.ov-ins-track-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.ov-ins-track{
  display:flex;align-items:center;gap:10px;
  padding:8px 12px;border:1px solid var(--border-hover);border-radius:10px;
  background:rgba(255,255,255,.03);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  font-size:12.5px;color:var(--text-secondary);
}
[data-theme="light"] .ov-ins-track{background:rgba(255,255,255,.50);border-color:rgba(0,0,0,.06)}
.ov-ins-track-ico{width:24px;text-align:center;color:var(--text-muted)}
.ov-ins-track-lbl{flex:1;font-weight:600;color:var(--text-primary)}
.ov-ins-track-state{font-size:11.5px;color:var(--text-muted);display:inline-flex;align-items:center;gap:5px}
.ov-ins-track-on{border-color:rgba(52,211,153,.40);background:rgba(52,211,153,.08)}
.ov-ins-track-on .ov-ins-track-ico{color:#34d399}
.ov-ins-track-on .ov-ins-track-state{color:#34d399}

/* Generic progress bar */
.ov-ins-bar-wrap{}
.ov-ins-bar-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-muted);margin-bottom:6px;font-weight:600}
.ov-ins-bar-head i{color:var(--accent);margin-inline-end:5px}
.ov-ins-bar-head strong{color:var(--text-primary);font-size:12.5px}
.ov-ins-bar-track{height:8px;background:var(--bg-surface);border:1px solid var(--border);border-radius:99px;overflow:hidden}
.ov-ins-bar-fill{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .35s ease}
.ov-ins-bar-ok{background:#34d399}

.ov-ins-check-grid{
  list-style:none;margin:10px 0 0;padding:0;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:5px 12px;
}
.ov-ins-check-grid li{
  font-size:11.5px;color:var(--text-secondary);
  display:flex;align-items:center;gap:6px;
}
.ov-ins-check-grid li i{font-size:10px;width:12px;text-align:center}
.ov-ins-check-on{color:var(--text-primary)}
.ov-ins-check-on i{color:#34d399}
.ov-ins-check-off{opacity:.55}
.ov-ins-check-off i{color:#fca5a5}

/* Hiring funnel — bar rows */
.ov-ins-funnel{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.ov-ins-funnel-row{
  display:grid;grid-template-columns:28px 100px 1fr auto;align-items:center;gap:12px;
  padding:6px 4px;
}
.ov-ins-funnel-ico{
  width:28px;height:28px;border-radius:50%;background:var(--bg-surface);
  border:1px solid var(--border);color:var(--text-muted);
  display:inline-flex;align-items:center;justify-content:center;font-size:11px;
}
.ov-ins-funnel-lbl{font-size:12.5px;color:var(--text-secondary);font-weight:600}
.ov-ins-funnel-bar-wrap{
  height:14px;background:var(--bg-surface);border:1px solid var(--border);
  border-radius:99px;overflow:hidden;position:relative;
}
.ov-ins-funnel-bar{
  display:block;height:100%;background:var(--accent);border-radius:99px;
  transition:width .35s ease;
}
.ov-ins-funnel-num{font-size:13px;font-weight:700;color:var(--text-primary);min-width:60px;text-align:end}
.ov-ins-funnel-num small{font-size:10.5px;color:var(--text-muted);font-weight:600;margin-left:3px}

.ov-ins-funnel-applied .ov-ins-funnel-ico{color:#60a5fa;border-color:rgba(96,165,250,.40);background:rgba(96,165,250,.10)}
.ov-ins-funnel-applied .ov-ins-funnel-bar{background:#60a5fa}
.ov-ins-funnel-reviewing .ov-ins-funnel-ico{color:#a78bfa;border-color:rgba(167,139,250,.40);background:rgba(167,139,250,.10)}
.ov-ins-funnel-reviewing .ov-ins-funnel-bar{background:#a78bfa}
.ov-ins-funnel-interview .ov-ins-funnel-ico{color:var(--accent);border-color:rgba(205,161,44,.40);background:var(--accent-dim)}
.ov-ins-funnel-interview .ov-ins-funnel-bar{background:var(--accent)}
.ov-ins-funnel-offer .ov-ins-funnel-ico{color:#fb923c;border-color:rgba(251,146,60,.40);background:rgba(251,146,60,.10)}
.ov-ins-funnel-offer .ov-ins-funnel-bar{background:#fb923c}
.ov-ins-funnel-hired .ov-ins-funnel-ico{color:#34d399;border-color:rgba(52,211,153,.40);background:rgba(52,211,153,.10)}
.ov-ins-funnel-hired .ov-ins-funnel-bar{background:#34d399}
.ov-ins-funnel-rejected .ov-ins-funnel-ico{color:#fca5a5;border-color:rgba(248,113,113,.40);background:rgba(248,113,113,.10)}
.ov-ins-funnel-rejected .ov-ins-funnel-bar{background:#fca5a5}

/* Review headline + star overlay */
.ov-ins-rating-headline{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.ov-ins-rating-big{font-size:38px;font-weight:800;color:var(--accent);line-height:1;letter-spacing:.01em}
.ov-ins-rating-big small{font-size:16px;color:var(--text-muted);font-weight:600;margin-left:2px}
.ov-ins-stars-row{
  position:relative;display:inline-flex;gap:2px;font-size:15px;color:var(--border);
}
.ov-ins-stars-row i{display:inline-block}
.ov-ins-stars-overlay{
  position:absolute;inset:0;display:inline-flex;gap:2px;overflow:hidden;
  color:#fbbf24;white-space:nowrap;
}

/* Review rating histogram */
.ov-ins-histogram{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.ov-ins-hist-row{
  display:grid;grid-template-columns:46px 1fr auto;align-items:center;gap:10px;
}
.ov-ins-hist-lbl{font-size:12px;font-weight:700;color:var(--text-secondary)}
.ov-ins-hist-lbl i{color:#fbbf24;font-size:10px;margin-inline-start:1px}
.ov-ins-hist-bar-wrap{
  height:10px;background:var(--bg-surface);border:1px solid var(--border);
  border-radius:99px;overflow:hidden;
}
.ov-ins-hist-bar{display:block;height:100%;background:#fbbf24;border-radius:99px;transition:width .35s ease}
.ov-ins-hist-num{font-size:12px;font-weight:700;color:var(--text-primary);min-width:64px;text-align:end}
.ov-ins-hist-num small{font-size:10.5px;color:var(--text-muted);font-weight:600;margin-left:3px}

/* Donut chart — share channels */
.ov-ins-donut-wrap{display:flex;justify-content:center;margin:4px 0 14px}
.ov-ins-donut{width:140px;height:140px;display:block}
.ov-ins-donut-bg{stroke:var(--border);opacity:.5}
.ov-ins-donut-seg{transition:stroke .15s,opacity .15s;cursor:default}
.ov-ins-donut-seg:hover{opacity:.85}
.ov-ins-donut-num{font-size:6px;font-weight:800;fill:var(--text-primary)}
.ov-ins-donut-lbl{font-size:2.6px;fill:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;font-weight:700}

.ov-ins-donut-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.ov-ins-donut-legend li{
  display:grid;grid-template-columns:14px 16px 1fr auto;align-items:center;gap:8px;
  font-size:12px;color:var(--text-secondary);
  padding:5px 8px;border-radius:8px;
}
.ov-ins-donut-legend li:hover{background:var(--bg-surface)}
.ov-ins-donut-dot{display:inline-block;width:10px;height:10px;border-radius:3px}
.ov-ins-donut-ico{color:var(--text-muted);font-size:11px;text-align:center}
.ov-ins-donut-lbl-row{font-weight:600;color:var(--text-primary)}
.ov-ins-donut-legend strong{font-size:12.5px;color:var(--text-primary);font-weight:700}
.ov-ins-donut-legend strong small{font-size:10.5px;color:var(--text-muted);font-weight:600;margin-left:3px}

/* Tone palette — reused across donut, stack-bars, etc. */
.ov-ins-tone-0{stroke:#60a5fa;background:#60a5fa}
.ov-ins-tone-1{stroke:#34d399;background:#34d399}
.ov-ins-tone-2{stroke:#a78bfa;background:#a78bfa}
.ov-ins-tone-3{stroke:#fb923c;background:#fb923c}
.ov-ins-tone-4{stroke:var(--accent);background:var(--accent)}
.ov-ins-tone-ok{stroke:#34d399;background:#34d399}
.ov-ins-tone-accent{stroke:var(--accent);background:var(--accent)}
.ov-ins-tone-danger{stroke:#fca5a5;background:#fca5a5}

/* Weekday rhythm — 7 columns */
.ov-ins-weekday{
  display:grid;grid-template-columns:repeat(7,1fr);gap:8px;
  height:160px;align-items:end;padding:8px 0;
  border-bottom:1px solid var(--border);
}
.ov-ins-weekday-col{
  display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
  height:100%;gap:4px;position:relative;
}
.ov-ins-weekday-bar{
  width:60%;min-height:2px;border-radius:5px 5px 0 0;
  background:linear-gradient(180deg,var(--accent) 0%,rgba(205,161,44,.45) 100%);
  transition:height .35s ease;
}
.ov-ins-weekday-num{
  position:absolute;top:0;font-size:11px;font-weight:700;color:var(--text-primary);
}
.ov-ins-weekday-lbl{
  font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;
  font-weight:700;margin-top:2px;
}
.ov-ins-foot-note{margin:8px 0 0;font-size:11px;color:var(--text-muted);font-style:italic}

/* Staff stack-bar */
.ov-ins-stack-bar{
  display:flex;height:12px;border-radius:99px;overflow:hidden;
  background:var(--bg-surface);border:1px solid var(--border);
}
.ov-ins-stack-seg{display:block;height:100%;transition:flex .35s ease}
.ov-ins-stack-legend{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
.ov-ins-stack-legend li{
  display:grid;grid-template-columns:14px 1fr auto;align-items:center;gap:8px;
  font-size:12px;color:var(--text-secondary);padding:4px 4px;
}
.ov-ins-stack-dot{display:inline-block;width:10px;height:10px;border-radius:3px}
.ov-ins-stack-legend strong{font-size:12.5px;color:var(--text-primary);font-weight:700}
.ov-ins-stack-legend strong small{font-size:10.5px;color:var(--text-muted);font-weight:600;margin-left:3px}

.ov-ins-mini-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:14px;
  padding-top:14px;border-top:1px dashed var(--border);
}
.ov-ins-mini-grid div{
  background:rgba(255,255,255,.03);border:1px solid var(--border-hover);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;
}
[data-theme="light"] .ov-ins-mini-grid div{background:rgba(255,255,255,.55);border-color:rgba(0,0,0,.06)}
.ov-ins-mini-grid strong{font-size:18px;font-weight:800;color:var(--accent);line-height:1}
.ov-ins-mini-grid span{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;font-weight:700}

/* Calendar heatmap */
.ov-ins-heatmap{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(20px,1fr));gap:4px;
  margin-top:4px;
}
.ov-ins-heat-cell{
  aspect-ratio:1/1;border-radius:4px;background:var(--bg-surface);
  border:1px solid var(--border);transition:transform .12s;
}
.ov-ins-heat-cell:hover{transform:scale(1.18);border-color:var(--accent)}
.ov-ins-heat-tier-0{background:var(--bg-surface)}
.ov-ins-heat-tier-1{background:rgba(205,161,44,.18);border-color:rgba(205,161,44,.20)}
.ov-ins-heat-tier-2{background:rgba(205,161,44,.38);border-color:rgba(205,161,44,.30)}
.ov-ins-heat-tier-3{background:rgba(205,161,44,.62);border-color:rgba(205,161,44,.40)}
.ov-ins-heat-tier-4{background:var(--accent);border-color:var(--accent)}
.ov-ins-heat-legend{
  display:flex;align-items:center;gap:5px;margin-top:10px;
  font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;font-weight:700;
}
.ov-ins-heat-legend .ov-ins-heat-cell{width:14px;height:14px;flex:0 0 14px;aspect-ratio:auto}

/* Ranked list — top projects + top jobs */
.ov-ins-rank-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.ov-ins-rank-row{
  display:grid;grid-template-columns:28px 1fr 1fr auto;align-items:center;gap:12px;
  padding:8px 6px;border-top:1px dashed var(--border);
}
.ov-ins-rank-row:first-child{border-top:none}
.ov-ins-rank-pos{
  width:28px;height:28px;border-radius:50%;background:var(--accent-dim);
  color:var(--accent);display:inline-flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:800;
}
.ov-ins-rank-title{
  color:var(--text-primary);font-weight:600;font-size:13.5px;text-decoration:none;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;
}
.ov-ins-rank-title:hover{color:var(--accent);text-decoration:underline}
.ov-ins-rank-bar-wrap{
  height:8px;background:var(--bg-surface);border:1px solid var(--border);
  border-radius:99px;overflow:hidden;
}
.ov-ins-rank-bar{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .35s ease}
.ov-ins-rank-bar-applicants{background:#60a5fa}
.ov-ins-rank-num{font-size:12.5px;color:var(--text-muted);font-weight:600;white-space:nowrap}
.ov-ins-rank-num i{color:var(--accent);margin-inline-end:3px;font-size:11px}

/* Existing chart polish — taller for the power page */
.ov-insights-chart{display:flex;align-items:flex-end;gap:3px;height:200px;padding:8px 0;border-bottom:1px solid var(--border)}
.ov-insights-bar{flex:1;height:100%;display:flex;align-items:flex-end;justify-content:center;min-width:0}
.ov-insights-stack{width:100%;max-width:18px;display:flex;flex-direction:column;border-radius:4px 4px 0 0;overflow:hidden;min-height:1px;transition:opacity .15s}
.ov-insights-bar:hover .ov-insights-stack{opacity:.85}
.ov-insights-seg{display:block;min-height:1px}
.ov-insights-seg-follows{background:#34d399}
.ov-insights-seg-applicants{background:var(--accent)}
.ov-insights-seg-conversations{background:#60a5fa}
.ov-insights-seg-reviews{background:#fb923c}
.ov-insights-seg-projects{background:#a78bfa}
.ov-insights-dot{display:inline-block;width:10px;height:10px;border-radius:2px;margin-inline-end:5px;vertical-align:middle}

/* ════════════════════════════════════════════════════════════════════
 * Office-env sub-nav
 * ════════════════════════════════════════════════════════════════════ */
.env-nav{
  display:flex;gap:4px;flex-wrap:wrap;
  margin:8px 0 18px;padding:5px;
  background:#161a22;
  border:1px solid #2a3142;
  border-radius:10px;
}
.env-nav-link{
  padding:6px 13px;border-radius:7px;
  color:#cfe0ff;text-decoration:none;
  font-size:13px;font-weight:500;
  transition:background .15s,color .15s;
  white-space:nowrap;
}
.env-nav-link:hover{background:rgba(255,255,255,.08);color:#fff;text-decoration:none}
.env-nav-link.is-active{background:#283f55;color:#fff}
[data-theme="light"] .env-nav{
  background:var(--bg-surface);
  border-color:var(--border);
}
[data-theme="light"] .env-nav-link{color:var(--text-secondary)}
[data-theme="light"] .env-nav-link:hover{
  background:var(--overlay-hover);color:var(--text-primary);
}
[data-theme="light"] .env-nav-link.is-active{
  background:var(--bg-card);
  color:var(--accent);
  box-shadow:0 1px 4px rgba(0,0,0,.08);
}

/* ════════════════════════════════════════════════════════════════════
 * Light-theme audit fixes — all office-env dark areas
 * ════════════════════════════════════════════════════════════════════ */

/* ── Listing cards: hover bg was hardcoded dark navy ── */
[data-theme="light"] .office-p-manager-card:hover,
[data-theme="light"] .office-p-staff-card:hover{background-color:rgba(0,0,0,.06)}

/* ── Near-transparent whites → visible surface tints ── */
[data-theme="light"] .office-staff-ph{background:rgba(0,0,0,.06)}
[data-theme="light"] .office-spec-pill:not(.office-spec-pill-more){background:var(--bg-surface)}
[data-theme="light"] .office-card-role-badge:not(.is-manager){background:var(--bg-surface)}

/* ── Work-fields dropdown shadow ── */
[data-theme="light"] .wf-panel{box-shadow:0 8px 20px rgba(0,0,0,.12)}

/* ── Welcome feature cards (rgba white → solid surface) ── */
[data-theme="light"] .env-feature{background:var(--bg-surface)}
[data-theme="light"] .env-feature--activity{background:var(--bg-surface)}

/* ── Quick-link pills ── */
[data-theme="light"] .env-quick{background:var(--bg-surface)}

/* ── Verification method chips + credential chevron ── */
[data-theme="light"] .vmc-icon{background:var(--bg-surface)}
[data-theme="light"] .cred-add-toggle-chev{background:var(--bg-surface)}

/* ── Table / role-group headers ── */
[data-theme="light"] .env-table-head{background:rgba(0,0,0,.03)}
[data-theme="light"] .env-role-group-head{background:rgba(0,0,0,.03)}

/* ── KPI icon chips ── */
[data-theme="light"] .env-dash-kpi-projects{color:#2563eb;background:rgba(37,99,235,.08);border-color:rgba(37,99,235,.25)}
[data-theme="light"] .env-dash-kpi-blockers{color:#dc2626;background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.25)}
[data-theme="light"] .env-dash-kpi-overdue{color:#ea580c;background:rgba(234,88,12,.08);border-color:rgba(234,88,12,.25)}

/* ── KPI number state colours ── */
[data-theme="light"] .env-dash-kpi--danger .env-dash-kpi-num{color:#dc2626}
[data-theme="light"] .env-dash-kpi--warn   .env-dash-kpi-num{color:#ea580c}
[data-theme="light"] .env-dash-kpi--ok     .env-dash-kpi-num{color:#059669}

/* ── KPI P&L inline arrows ── */
[data-theme="light"] .env-dash-kpi-pl:first-child  i{color:#059669}
[data-theme="light"] .env-dash-kpi-pl:nth-child(2) i{color:#dc2626}

/* ── Projects P&L card numbers ── */
[data-theme="light"] .env-dash-pl-side--in  .env-dash-pl-num{color:#059669}
[data-theme="light"] .env-dash-pl-side--out .env-dash-pl-num{color:#dc2626}
[data-theme="light"] .env-dash-pl-net.is-positive .env-dash-pl-num{color:#059669}
[data-theme="light"] .env-dash-pl-net.is-negative .env-dash-pl-num{color:#dc2626}

/* ── Budget percentage badge ── */
[data-theme="light"] .env-dash-budget-pct.is-warn{color:#ea580c}
[data-theme="light"] .env-dash-budget-pct.is-over{color:#dc2626}

/* ── Budget progress bar fills ── */
[data-theme="light"] .env-dash-budget-fill{background:#059669}
[data-theme="light"] .env-dash-budget-fill.is-warn{background:#ea580c}
[data-theme="light"] .env-dash-budget-fill.is-over{background:#dc2626}

/* ── Stage mini-kanban numbers ── */
[data-theme="light"] .env-dash-stage.env-stage-brief .env-dash-stage-num{color:#2563eb}
[data-theme="light"] .env-dash-stage.env-stage-design .env-dash-stage-num{color:#7c3aed}
[data-theme="light"] .env-dash-stage.env-stage-revisions .env-dash-stage-num{color:#ea580c}
[data-theme="light"] .env-dash-stage.env-stage-approval_submittal .env-dash-stage-num,
[data-theme="light"] .env-dash-stage.env-stage-approved .env-dash-stage-num,
[data-theme="light"] .env-dash-stage.env-stage-delivered .env-dash-stage-num{color:#059669}

/* ── Row delete hover ── */
[data-theme="light"] .env-row-delete:hover{
  background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.35);color:#dc2626;
}

/* ── Audit diff labels ── */
[data-theme="light"] .env-audit-diff-label--before,
[data-theme="light"] .env-audit-diff-label--before i{color:#dc2626}
[data-theme="light"] .env-audit-diff-label--after,
[data-theme="light"] .env-audit-diff-label--after i{color:#059669}

/* ── Insights chart + rank bar ── */
[data-theme="light"] .ov-ins-rank-bar-applicants{background:#2563eb}
[data-theme="light"] .ov-insights-seg-follows{background:#059669}
[data-theme="light"] .ov-insights-seg-conversations{background:#2563eb}
[data-theme="light"] .ov-insights-seg-projects{background:#7c3aed}

/* ════════════════════════════════════════════════════════════════════
 * Project workspace / work plan / task board (pw-*)
 * ════════════════════════════════════════════════════════════════════ */

/* Pill / tag chip */
.pw-pill{background:#1f2636;border:1px solid #2a3142;color:#cfe0ff;border-radius:999px;padding:2px 10px;font-size:11.5px}
.pw-pill-sm{background:#1f2636;border:1px solid #2a3142;color:#cfe0ff;border-radius:999px;padding:1px 8px;font-size:11px}

/* Form controls — add width separately via inline style */
.pw-input{background:#0b0e14;border:1px solid #2a3142;color:#e8ecf3;border-radius:6px;padding:6px 10px;font-size:13px}
.pw-input-sm{background:#0b0e14;border:1px solid #2a3142;color:#e8ecf3;border-radius:6px;padding:4px 8px;font-size:12px}

/* Budget bar */
.pw-budget-track{background:#0b0e14;border:1px solid #2a3142;border-radius:6px;height:14px;overflow:hidden}
.pw-budget-fill{background:#62d3a4;height:100%;transition:width .25s ease}
.pw-budget-fill.is-over{background:#ef6f6c}
.pw-budget-fill.is-warn{background:#f4a261}

/* Semantic badge chips */
.pw-badge-warn{background:#3b2a1f;border:1px solid #f4a261;color:#fbd8a8;border-radius:999px;padding:1px 8px;font-size:11px;margin-left:6px}
.pw-badge-danger{background:#3a1d1d;color:#f7c4c4;border-radius:999px;padding:1px 8px;font-size:11.5px;margin-left:6px}
.pw-badge-ok{background:#1f3b2c;color:#bdf3d6;border-radius:999px;padding:1px 8px;font-size:11px}
.pw-badge-amber{background:#3b2a1f;color:#fbd8a8;border-radius:999px;padding:1px 8px;font-size:11px}

/* Status text */
.pw-status-approved{color:#62d3a4}
.pw-status-submitted{color:#f4a261}
.pw-status-rejected{color:#ef6f6c}
.pw-status-internal{color:#f4a261;font-size:11.5px}
.pw-status-public{color:#62d3a4;font-size:11.5px}

/* Task count colours */
.pw-count-doing{color:#7aa2ff;font-size:18px}
.pw-count-blocked{color:#ef6f6c;font-size:18px}
.pw-count-done{color:#62d3a4;font-size:18px}

/* ── Light-mode overrides ── */
[data-theme="light"] .pw-pill{background:rgba(0,0,0,.06);border-color:var(--border);color:var(--text-primary)}
[data-theme="light"] .pw-pill-sm{background:rgba(0,0,0,.06);border-color:var(--border);color:var(--text-primary)}
[data-theme="light"] .pw-input{background:var(--bg-surface);border-color:var(--border);color:var(--text-primary)}
[data-theme="light"] .pw-input-sm{background:var(--bg-surface);border-color:var(--border);color:var(--text-primary)}
[data-theme="light"] .pw-budget-track{background:var(--bg-surface);border-color:var(--border)}
[data-theme="light"] .pw-budget-fill{background:#059669}
[data-theme="light"] .pw-budget-fill.is-over{background:#dc2626}
[data-theme="light"] .pw-budget-fill.is-warn{background:#ea580c}
[data-theme="light"] .pw-badge-warn{background:#fef3e2;border-color:#f59e0b;color:#92400e}
[data-theme="light"] .pw-badge-danger{background:#fef2f2;color:#991b1b}
[data-theme="light"] .pw-badge-ok{background:#f0fdf4;color:#166534}
[data-theme="light"] .pw-badge-amber{background:#fffbeb;color:#92400e}
[data-theme="light"] .pw-status-approved{color:#059669}
[data-theme="light"] .pw-status-submitted{color:#d97706}
[data-theme="light"] .pw-status-rejected{color:#dc2626}
[data-theme="light"] .pw-status-internal{color:#d97706}
[data-theme="light"] .pw-status-public{color:#059669}
[data-theme="light"] .pw-count-doing{color:#2563eb}
[data-theme="light"] .pw-count-blocked{color:#dc2626}
[data-theme="light"] .pw-count-done{color:#059669}

/* ── arch-modal form padding alignment ──────────────────────────────
 * .arch-modal-body and .arch-modal-actions both use 22px side padding.
 * Modal forms reset .env-org-form to padding:0 via inline style, so
 * inputs run edge-to-edge. Override with !important to beat inline. */
.arch-modal .env-org-form{
  padding-left:22px!important;
  padding-right:22px!important;
}
