/* =============================================================================
   SOFISA Group Portal — stylesheet
   Built to the SOFISA Document Standard (navy #1a2744 + gold #c9a84c).
   Tokens + .sof-* component vocabulary ported from the summerhill-sofisa-design
   skill (ui_kits/web). Self-contained: fonts + tokens + components + portal
   chrome in one file so the Portal tenant loads a single stylesheet.
   ============================================================================= */

/* ---------- Fonts (self-hosted core weights; local() fallback) ---------- */
@font-face { font-family:"Helvetica Neue"; font-weight:300; font-style:normal; font-display:swap;
  src:url("fonts/HelveticaNeue-Light.ttf") format("truetype"), local("Helvetica Neue Light"), local("HelveticaNeue-Light"); }
@font-face { font-family:"Helvetica Neue"; font-weight:400; font-style:normal; font-display:swap;
  src:url("fonts/HelveticaNeue-Regular.ttf") format("truetype"), local("Helvetica Neue"), local("HelveticaNeue"); }
@font-face { font-family:"Helvetica Neue"; font-weight:500 600; font-style:normal; font-display:swap;
  src:url("fonts/HelveticaNeue-Medium.ttf") format("truetype"), local("Helvetica Neue Medium"), local("HelveticaNeue-Medium"); }
@font-face { font-family:"Helvetica Neue"; font-weight:700; font-style:normal; font-display:swap;
  src:url("fonts/HelveticaNeue-Bold.ttf") format("truetype"), local("Helvetica Neue Bold"), local("HelveticaNeue-Bold"); }

/* ---------- Tokens ---------- */
:root {
  --navy:#1a2744; --navy-800:#22305a; --navy-600:#3a4a78; --navy-100:#e7eaf2;
  --gold:#c9a84c; --gold-600:#b0903a; --gold-100:#faf4e4;
  --summer-green:#2c6e49; --summer-green-100:#edf5ee;
  --white:#fff; --paper:#fafaf7; --paper-2:#f2efe5;
  --rule:#d9d4c4; --rule-strong:#b7b09a;
  --ink:#1a1a1a; --ink-70:rgba(26,26,26,.7); --ink-60:rgba(26,26,26,.6); --ink-40:rgba(26,26,26,.4);
  --risk:#a33333; --risk-tint:#fbeeee; --positive:#2c6e49; --positive-tint:#edf5ee;
  --caution:#b8621b; --caution-tint:#fdf1e4;
  --font-sans:"Helvetica Neue",Helvetica,Arial,"Liberation Sans",sans-serif;
  --radius-2:4px; --radius-3:6px;
  --shadow-2:0 2px 8px rgba(26,39,68,.08); --shadow-3:0 8px 24px rgba(26,39,68,.10);
}

/* ---------- Base ---------- */
* { box-sizing:border-box; }
html, body { margin:0; padding:0; background:var(--paper); color:var(--ink);
  font-family:var(--font-sans); font-size:14px; line-height:1.45; -webkit-font-smoothing:antialiased; }
a { color:var(--navy); text-decoration:none; }
a:hover { color:var(--navy-800); }
.portal-body { min-height:100vh; display:flex; flex-direction:column; }

/* ---------- Top bar ---------- */
.sof-topbar { background:var(--navy); color:#fff; display:flex; align-items:center;
  justify-content:space-between; padding:0 28px; height:60px;
  border-bottom:3px solid var(--gold); position:sticky; top:0; z-index:20; }
.sof-brand { display:flex; align-items:center; gap:14px; color:#fff; }
.sof-brand:hover { color:#fff; }
.sof-wordmark { font-weight:600; font-size:15px; letter-spacing:.2em; text-transform:uppercase; }
.sof-brand-rule { display:inline-block; width:28px; height:1.5px; background:var(--gold); }
.sof-brand-sub { font-weight:400; font-size:12.5px; color:rgba(255,255,255,.7); letter-spacing:.04em; }
.sof-top-actions { display:flex; align-items:center; gap:18px; }

/* nav links */
.sof-topnav { display:flex; gap:20px; }
.sof-topnav a { color:rgba(255,255,255,.82); font-size:13px; padding:4px 0;
  border-bottom:2px solid transparent; }
.sof-topnav a:hover { color:#fff; }
.sof-topnav a.is-active { color:#fff; border-bottom-color:var(--gold); }

/* language picker */
.sof-lang { font-size:11px; letter-spacing:.04em; }
.sof-lang a { color:rgba(255,255,255,.6); padding:0 3px; }
.sof-lang a.is-active { color:var(--gold); font-weight:600; }

/* user */
.sof-user { display:flex; align-items:center; gap:10px; }
.sof-avatar { width:30px; height:30px; background:var(--gold); color:var(--navy);
  font-weight:600; font-size:12px; display:grid; place-items:center; border-radius:999px; letter-spacing:.02em; }
.sof-user-meta { line-height:1.2; }
.sof-user-name { font-weight:600; font-size:12.5px; }
.sof-user-role { font-weight:400; font-size:11px; color:rgba(255,255,255,.6); }
.sof-linklike { background:transparent; border:0; color:rgba(255,255,255,.7);
  font:inherit; font-size:12px; cursor:pointer; text-decoration:underline; text-underline-offset:3px; padding:0; }
.sof-linklike:hover { color:#fff; }

/* ---------- Main ---------- */
.sof-main { flex:1; padding:36px 40px 64px; max-width:1180px; margin:0 auto; width:100%; }
.sof-page-title { font-weight:600; font-size:24px; color:var(--navy); display:inline-block;
  border-bottom:2px solid var(--gold); padding-bottom:3px; margin:0 0 6px; }
.sof-page-sub { font-size:13px; color:var(--ink-60); margin-bottom:28px; }

/* ---------- Stat cards ---------- */
.sof-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-bottom:28px; }
.sof-stat { background:#fff; border:1px solid var(--rule); border-radius:var(--radius-2); padding:16px 18px; }
.sof-stat-label { font-weight:600; font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-60); margin-bottom:6px; }
.sof-stat-value { font-weight:600; font-size:26px; color:var(--navy); font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
.sof-stat-meta { font-size:11.5px; color:var(--ink-60); margin-top:4px; display:flex; gap:8px; align-items:center; }
.sof-stat-delta.up { color:var(--positive); font-weight:600; }
.sof-stat-delta.down { color:var(--risk); font-weight:600; }

/* ---------- Cards ---------- */
.sof-card { background:#fff; border:1px solid var(--rule); border-radius:var(--radius-2); }
.sof-card-head { display:flex; justify-content:space-between; align-items:center; padding:14px 18px; border-bottom:1px solid var(--rule); }
.sof-card-title { font-weight:600; font-size:12px; color:var(--navy); text-transform:uppercase; letter-spacing:.06em; }
.sof-card-body { padding:4px 0; }

/* ---------- Collections grid (portal landing) ---------- */
.sof-collections { display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:20px; }
.sof-collection { background:#fff; border:1px solid var(--rule); border-radius:var(--radius-2);
  border-top:3px solid var(--navy); padding:22px 22px 18px; display:flex; flex-direction:column;
  transition:box-shadow .15s, transform .15s; }
.sof-collection:hover { box-shadow:var(--shadow-3); transform:translateY(-1px); }
.sof-collection .ent-chip { align-self:flex-start; margin-bottom:12px; }
.sof-collection h3 { font-weight:600; font-size:16px; color:var(--navy); margin:0 0 8px; line-height:1.25; }
.sof-collection p { font-size:13px; color:var(--ink-70); margin:0 0 16px; flex:1; }
.sof-collection .meta { display:flex; justify-content:space-between; align-items:center;
  font-size:11.5px; color:var(--ink-60); border-top:1px solid var(--rule); padding-top:12px; }
.sof-collection .meta a { color:var(--navy); font-weight:600; }

/* Archive pane — collapsed by default, out of the main flow */
.sof-archive { margin-top:40px; border-top:1px solid var(--rule); padding-top:18px; }
.sof-archive > summary {
  cursor:pointer; list-style:none; font-weight:600; font-size:11px;
  text-transform:uppercase; letter-spacing:.12em; color:var(--ink-60);
  display:inline-flex; align-items:center; gap:8px; user-select:none;
}
.sof-archive > summary::-webkit-details-marker { display:none; }
.sof-archive > summary::before { content:"▸"; font-size:10px; transition:transform .15s; }
.sof-archive[open] > summary::before { transform:rotate(90deg); }
.sof-archive > summary:hover { color:var(--navy); }
.sof-collection.is-archived { opacity:.72; background:var(--paper); }
.sof-collection.is-archived:hover { opacity:1; }

/* entity chip — small per-entity accent badge */
.ent-chip { display:inline-flex; align-items:center; gap:7px; font-size:11px; font-weight:600;
  letter-spacing:.04em; padding:4px 10px 4px 8px; border-radius:999px;
  background:var(--paper-2); color:var(--ink-70); border:1px solid var(--rule); }
.ent-chip .dot { width:9px; height:9px; border-radius:50%; background:var(--navy); }

/* ---------- Entity band (dashboard/collection header) ---------- */
.sof-entity-band { display:flex; align-items:center; gap:14px; padding:12px 40px;
  background:#fff; border-bottom:1px solid var(--rule); border-top:3px solid var(--navy); }
.sof-entity-band img { height:30px; width:auto; }
.sof-entity-band .name { font-weight:600; font-size:13px; color:var(--navy); letter-spacing:.02em; }

/* ---------- Breadcrumbs ---------- */
.sof-crumbs { font-size:11.5px; color:var(--ink-60); margin-bottom:14px; }
.sof-crumbs a { color:var(--navy); }
.sof-crumbs .sep { margin:0 8px; }

/* ---------- Detail view (project / dashboard pages) ---------- */
.sof-doc-view { display:grid; grid-template-columns:1fr 300px; gap:24px; align-items:start; }
.sof-doc-page { background:#fff; border:1px solid var(--rule); border-radius:var(--radius-2);
  border-top:3px solid var(--navy); padding:28px 36px 34px; }
.sof-doc-page h1 { font-weight:600; font-size:20px; color:var(--navy); display:inline-block;
  border-bottom:2px solid var(--gold); padding-bottom:3px; margin:0 0 12px; }
.sof-doc-page h2 { font-weight:600; font-size:13px; color:var(--navy); text-transform:uppercase; letter-spacing:.05em; margin:20px 0 8px; }
.sof-doc-page h3 { font-weight:600; font-size:15px; color:var(--navy); margin:16px 0 6px; }
.sof-doc-page p, .sof-doc-page li { font-size:13px; line-height:1.55; color:var(--ink); margin:0 0 10px; }
.sof-doc-page ul { margin:0 0 12px; padding-left:20px; }
.sof-doc-side .sof-card { margin-bottom:16px; }
.sof-side-row { display:flex; justify-content:space-between; gap:12px; padding:8px 18px; border-bottom:1px solid var(--rule); font-size:12px; }
.sof-side-row:last-child { border-bottom:0; }
.sof-side-row .k { color:var(--ink-60); text-transform:uppercase; font-size:10.5px; letter-spacing:.06em; font-weight:600; }
.sof-side-row .v { color:var(--ink); text-align:right; }

/* ---------- Document list ---------- */
.sof-doc { width:100%; display:flex; align-items:center; justify-content:space-between; gap:14px;
  background:transparent; border:0; border-bottom:1px solid var(--rule); padding:12px 18px; text-align:left; }
.sof-doc:last-child { border-bottom:0; }
.sof-doc-main { min-width:0; }
.sof-doc-title { font-weight:600; font-size:13px; color:var(--navy); }
.sof-doc-meta { font-size:11.5px; color:var(--ink-60); margin-top:3px; display:flex; gap:6px; flex-wrap:wrap; }
.sof-file-ext { display:inline-grid; place-items:center; min-width:38px; height:24px; padding:0 6px;
  background:var(--paper-2); border:1px solid var(--rule); border-radius:3px;
  font-weight:600; font-size:10px; letter-spacing:.04em; color:var(--ink-70); }
.sof-muted { color:var(--ink-40); font-size:12px; }

/* ---------- Status pills ---------- */
.sof-doc-status, .sof-status { font-weight:600; font-size:10px; text-transform:uppercase;
  letter-spacing:.06em; padding:3px 9px; border-radius:999px; display:inline-block; }
.sof-status-draft { background:var(--paper-2); color:var(--ink-70); border:1px solid var(--rule); }
.sof-status-review { background:var(--gold-100); color:var(--gold-600); border:1px solid var(--gold); }
.sof-status-final, .sof-status-published { background:var(--positive-tint); color:var(--positive); border:1px solid var(--positive); }
.sof-status-archived { background:var(--navy-100); color:var(--navy); border:1px solid var(--navy-600); }

/* ---------- Buttons ---------- */
.sof-btn { font-weight:600; font-size:12.5px; border-radius:3px; cursor:pointer; padding:8px 16px; border:0; letter-spacing:.02em; font-family:inherit; }
.sof-btn-primary { background:var(--navy); color:#fff; }
.sof-btn-primary:hover { background:var(--navy-800); }
.sof-btn-secondary { background:#fff; color:var(--navy); border:1px solid var(--navy); padding:7px 15px; }
.sof-btn-accent { background:var(--gold); color:var(--navy); font-weight:700; }

/* ---------- Empty / scope panels ---------- */
.sof-empty { background:#fff; border:1px solid var(--rule); border-radius:var(--radius-2);
  padding:40px; text-align:center; color:var(--ink-60); }
.sof-empty h2 { border:0; text-transform:none; letter-spacing:0; color:var(--navy); margin:0 0 8px; font-size:16px; }
.sof-scope { background:#fff; border:1px solid var(--rule); border-radius:var(--radius-2); padding:18px 22px; margin-top:24px; max-width:520px; }
.sof-scope h2 { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.1em; color:var(--navy); margin:0 0 10px; }
.sof-scope ul { list-style:none; margin:0; padding:0; }
.sof-scope li { padding:6px 0; border-bottom:1px dotted var(--rule); font-size:13px; display:flex; align-items:center; gap:8px; }
.sof-scope li:last-child { border-bottom:0; }
.sof-scope li .dot { width:8px; height:8px; border-radius:50%; background:var(--gold); }

/* ---------- Login (full-screen) ---------- */
.sof-login { display:grid; place-items:center; min-height:100vh; background:linear-gradient(180deg,#fff 0%,var(--paper) 100%); padding:24px; }
.sof-login-panel { width:380px; max-width:100%; background:#fff; border:1px solid var(--rule);
  border-radius:var(--radius-2); border-top:3px solid var(--gold); padding:40px 36px; box-shadow:var(--shadow-2); }
.sof-login-brand { font-weight:600; font-size:17px; letter-spacing:.2em; text-transform:uppercase; color:var(--navy); }
.sof-login-rule { width:40px; height:1.5px; background:var(--gold); margin:10px 0 24px; }
.sof-login h1 { font-weight:600; font-size:20px; color:var(--navy); border-bottom:2px solid var(--gold);
  padding-bottom:2px; display:inline-block; margin:0 0 8px; }
.sof-login .muted { color:var(--ink-60); font-size:12.5px; margin:0 0 20px; }
.sof-login-field { margin-bottom:14px; }
.sof-login-field label { display:block; font-weight:600; font-size:10.5px; text-transform:uppercase;
  letter-spacing:.08em; color:var(--navy); margin-bottom:5px; }
.sof-login-field input { width:100%; box-sizing:border-box; padding:9px 10px; font:inherit; font-size:13px;
  border:1px solid var(--rule); border-radius:3px; background:#fff; }
.sof-login-field input:focus { outline:2px solid var(--gold); border-color:var(--gold); }
.sof-login button[type=submit] { width:100%; margin-top:6px; }
.sof-login-alert { background:var(--risk-tint); border:1px solid #d8a3a3; color:#8a2a2a;
  padding:10px 12px; font-size:12.5px; border-radius:3px; margin-bottom:16px; }
.sof-login-lang { text-align:center; margin-top:14px; font-size:11px; }
.sof-login-lang a { color:var(--ink-60); padding:0 4px; }
.sof-login-lang a.is-active { color:var(--navy); font-weight:600; }
.sof-login-conf { font-size:10.5px; color:var(--ink-60); letter-spacing:.04em; text-align:center; margin-top:18px; }

/* ---------- Footer ---------- */
.sof-footer { padding:18px 40px; border-top:1px solid var(--rule);
  font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-60); text-align:center; }

/* ---------- Responsive ---------- */
@media (max-width:780px) {
  .sof-topbar { padding:0 16px; height:auto; flex-wrap:wrap; gap:8px; padding-top:10px; padding-bottom:10px; }
  .sof-stats { grid-template-columns:repeat(2,1fr); }
  .sof-main { padding:24px 18px 48px; }
  .sof-topnav { display:none; }
}
