/* ============================================================================
   Netri · Shared design system  (/static/netri.css)
   Warm-paper, serif, calm editorial aesthetic. Brand tokens are FIXED — this
   file only elevates: one type scale, one spacing rhythm, one set of polished
   components so every page reads as a single product.

   Signature motif: the "hairline grid" — surfaces separated by 1px of --line
   instead of borders per cell — reused for KPI tiles, figure rows and the
   expandable detail grid, so the whole app shares one visual fingerprint.
   ========================================================================== */

/* --- Tokens ---------------------------------------------------------------- */
:root{
  --ink:#1c2b27; --paper:#f6f3ec; --card:#fffefb; --line:#d9d3c4; --muted:#6b6f68;
  --moss:#3a6b54; --moss-soft:#e4ede7; --moss-deep:#2f5944;
  --clay:#b5642f; --clay-soft:#f3e6dc;
  --blue:#2f5d80; --blue-soft:#e1ebf2;
  --green:#2f7d4f; --green-soft:#e2f0e2;
  --amber:#9a6a1a; --amber-soft:#f6ecd6;
  --gold:#a8842c;

  --serif:"Iowan Old Style",Georgia,"Times New Roman",serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,monospace;

  /* radii */
  --r-lg:16px; --r-md:12px; --r-sm:10px; --r-xs:8px; --pill:999px;

  /* content width — pages override this to align header + body */
  --maxw:1160px;

  /* elevation */
  --shadow-sm:0 1px 2px rgba(28,43,39,.04);
  --shadow-md:0 6px 24px -12px rgba(28,43,39,.18);
}

/* --- Reset & base ---------------------------------------------------------- */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--serif);
  background:var(--paper);
  color:var(--ink);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a{color:inherit}
img{max-width:100%}
::selection{background:var(--moss-soft)}

/* Keyboard users always get a clear ring; mouse users don't (accessibility). */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:2px solid var(--moss);
  outline-offset:2px;
  border-radius:6px;
}
:where(a,button,input,select,textarea):focus:not(:focus-visible){outline:none}

.wrap{max-width:var(--maxw);margin:0 auto;padding:26px 22px 88px}

/* --- App shell header ------------------------------------------------------ */
.appbar{
  position:sticky;top:0;z-index:40;
  background:rgba(246,243,236,.9);
  backdrop-filter:saturate(140%) blur(9px);
  -webkit-backdrop-filter:saturate(140%) blur(9px);
  border-bottom:1px solid var(--line);
}
.appbar-inner{
  max-width:var(--maxw);margin:0 auto;
  padding:11px 22px;
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
}
.appbar-brand{display:flex;align-items:center;gap:11px;text-decoration:none;flex:none}
.appbar-brand img{height:26px;width:auto;display:block}
.appbar-brand .name{
  font-size:12px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--moss);font-weight:600;white-space:nowrap;
}

.appbar-nav{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.appbar-nav a{
  position:relative;
  font-size:14px;color:var(--muted);text-decoration:none;
  padding:6px 11px;border-radius:var(--r-xs);
  transition:color .16s ease,background .16s ease;
}
.appbar-nav a:hover{color:var(--ink);background:var(--moss-soft)}
.appbar-nav a.on{color:var(--moss-deep);font-weight:600}
/* signature: an active-tab underline that grows in on load */
.appbar-nav a.on::after{
  content:"";position:absolute;left:11px;right:11px;bottom:1px;height:2px;
  background:var(--moss);border-radius:2px;
  transform:scaleX(1);transform-origin:left;
  animation:navink .32s ease both;
}
@keyframes navink{from{transform:scaleX(0)}to{transform:scaleX(1)}}

.appbar-user{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:13px}
.who{
  color:var(--moss-deep);background:var(--moss-soft);
  padding:4px 12px;border-radius:var(--pill);font-size:12.5px;font-weight:600;
  white-space:nowrap;
}
.appbar-user a{color:var(--muted);text-decoration:none;transition:color .16s}
.appbar-user a:hover{color:var(--ink)}
.linklike{
  font-family:inherit;font-size:13px;color:var(--muted);
  background:none;border:0;padding:0;cursor:pointer;transition:color .16s;
}
.linklike:hover{color:var(--clay)}

/* Secondary process bar (ingest / connect flows) */
.stepsbar{border-bottom:1px solid var(--line);background:rgba(246,243,236,.6)}
.stepsbar-inner{max-width:var(--maxw);margin:0 auto;padding:9px 22px}
.steps{display:flex;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.steps b{color:var(--moss)}

/* --- Typography ------------------------------------------------------------ */
.eyebrow{
  font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--clay);font-weight:600;margin-bottom:12px;
}
h1,.page-title{
  font-size:clamp(26px,4vw,34px);font-weight:500;letter-spacing:-.015em;
  line-height:1.1;margin-bottom:4px;
}
.page-head{margin:6px 0 18px}
.sub,.lead{color:var(--muted);font-size:15.5px;max-width:66ch;margin-bottom:18px}
.sub b,.lead b{color:var(--ink);font-weight:600}
.sec,h2.sec{
  font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--moss);font-weight:600;margin:26px 0 10px;
}
.muted{color:var(--muted)}

/* --- Buttons --------------------------------------------------------------- */
.btn,button.btn{
  font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;
  padding:10px 18px;border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--card);color:var(--ink);
  transition:background .15s,border-color .15s,transform .05s,color .15s;
}
.btn:hover{border-color:var(--muted)}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--moss);border-color:var(--moss);color:#fff}
.btn-primary:hover{background:var(--moss-deep);border-color:var(--moss-deep)}
.btn-primary:disabled{opacity:.5;cursor:default;transform:none}
.btn-ghost{background:transparent;color:var(--clay);border-color:var(--line)}
.btn-ghost:hover{border-color:var(--clay)}
.btn-ok{border-color:var(--green);color:var(--green);background:var(--card)}
.btn-ok:hover{background:var(--green-soft)}
.btn-no{border-color:var(--clay);color:var(--clay);background:var(--card)}
.btn-no:hover{background:var(--clay-soft)}
.btn-sm{padding:5px 12px;font-size:12px;border-radius:var(--r-xs)}

/* --- Summary chips --------------------------------------------------------- */
.chips{display:flex;gap:11px;flex-wrap:wrap;margin:16px 0}
.chip{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
  padding:12px 16px;min-width:118px;flex:1 1 auto;box-shadow:var(--shadow-sm);
}
.chip .n{font-size:22px;font-weight:600;letter-spacing:-.01em;line-height:1.1}
.chip .l{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-top:3px}
.chip.green .n{color:var(--green)} .chip.amber .n{color:var(--amber)}
.chip.moss .n{color:var(--moss)} .chip.blue .n{color:var(--blue)} .chip.clay .n{color:var(--clay)}

/* --- KPI tiles (hairline grid — the signature) ----------------------------- */
.kpis{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));
  gap:1px;background:var(--line);border:1px solid var(--line);
  border-radius:var(--r-md);overflow:hidden;margin-bottom:24px;box-shadow:var(--shadow-sm);
}
.kpi{background:var(--card);padding:15px 18px}
.kpi .l{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.kpi .v{font-size:22px;font-weight:600;letter-spacing:-.01em;line-height:1.15}
.kpi .v.g{color:var(--green)} .kpi .v.a{color:var(--amber)}
.kpi .s{font-size:13px;color:var(--muted);margin-top:4px}

/* --- Cards & panels -------------------------------------------------------- */
.card,.panel{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
  padding:20px;box-shadow:var(--shadow-sm);
}
.panel h2{font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:var(--moss);font-weight:600;margin-bottom:14px}

/* --- Segmented filters ----------------------------------------------------- */
.filters{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin:8px 0 16px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--pill);overflow:hidden;background:var(--card);box-shadow:var(--shadow-sm)}
.seg button{
  font-family:inherit;font-size:13px;padding:6px 14px;
  background:transparent;color:var(--muted);border:0;cursor:pointer;
  transition:background .15s,color .15s;
}
.seg button:hover{color:var(--ink)}
.seg button[aria-pressed="true"]{background:var(--moss);color:#fff}
.info{font-size:13px;color:var(--muted);margin-left:auto}

/* --- Tables ---------------------------------------------------------------- */
.tablewrap{
  overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);
  background:var(--card);-webkit-overflow-scrolling:touch;box-shadow:var(--shadow-sm);
}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
th{
  font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);font-weight:600;white-space:nowrap;background:var(--card);
}
tbody tr:last-child td{border-bottom:0}
td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
td.num.in{color:var(--green);font-weight:600}
td.amt{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}
td.amt.in{color:var(--green)} td.amt.out{color:var(--clay)}
.raw{color:var(--muted);font-size:12px;display:block}

/* Frozen first column (portfolio "Cliente") — stays put while the rest scrolls */
td.cli,th.cli{position:sticky;left:0;z-index:2;background:var(--card);box-shadow:1px 0 0 var(--line)}
th.cli{z-index:3}

/* --- Badges ---------------------------------------------------------------- */
.tag{font-size:10px;font-weight:600;padding:2px 8px;border-radius:var(--pill);white-space:nowrap}
.tag.f{background:var(--moss-soft);color:var(--moss)} .tag.nf{background:var(--blue-soft);color:var(--blue)}
.ap{font-size:10.5px;font-weight:600;padding:2px 10px;border-radius:var(--pill);white-space:nowrap;text-transform:capitalize}
.ap.approved{background:var(--green-soft);color:var(--green)}
.ap.pending{background:var(--amber-soft);color:var(--amber)}
.ap.rejected{background:var(--clay-soft);color:var(--clay)}
.st{font-size:11px;font-weight:600;padding:2px 9px;border-radius:var(--pill);white-space:nowrap}
.st.auto{background:var(--green-soft);color:var(--green)}
.st.todo{background:var(--amber-soft);color:var(--amber)}
.st.ok{background:var(--moss-soft);color:var(--moss)}
.conf{font-size:11px;font-weight:600;padding:1px 8px;border-radius:var(--pill);white-space:nowrap}
.conf.hi{background:var(--green-soft);color:var(--green)}
.conf.mid{background:var(--amber-soft);color:var(--amber)}
.conf.lo{background:var(--clay-soft);color:var(--clay)}
.q{font-size:10px;font-weight:600;padding:1px 7px;border-radius:var(--pill)}
.q.good{background:var(--green-soft);color:var(--green)} .q.partial{background:var(--amber-soft);color:var(--amber)}
.flag{font-size:11px;font-weight:600;color:var(--clay);background:var(--clay-soft);padding:2px 8px;border-radius:var(--pill);margin:1px 0;display:inline-block;line-height:1.35}
.pill{font-size:12px;font-weight:600;padding:2px 10px;border-radius:var(--pill)}
.pill.on{background:var(--green-soft);color:var(--green)} .pill.off{background:var(--clay-soft);color:var(--clay)}
.dir{font-size:11px;font-weight:600;padding:1px 8px;border-radius:var(--pill)}
.dir.in{background:var(--green-soft);color:var(--green)} .dir.out{background:var(--clay-soft);color:var(--clay)}
.cur{font-size:11px;font-weight:600;padding:2px 9px;border-radius:var(--pill);background:var(--blue-soft);color:var(--blue)}
.ro{font-size:12px;color:var(--green);background:var(--green-soft);padding:2px 10px;border-radius:var(--pill);font-weight:600}
.field{font-family:var(--mono);font-size:12.5px;color:var(--muted);white-space:nowrap}
.quote{display:block;font-size:12px;color:var(--muted);font-style:italic;border-left:2px solid var(--line);padding-left:9px;margin-top:4px}

/* --- Forms ----------------------------------------------------------------- */
label{display:block;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:12px 0 5px}
input,select,textarea{
  font-family:inherit;font-size:15px;color:var(--ink);
  padding:11px 13px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;
  transition:border-color .15s,box-shadow .15s;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 3px var(--moss-soft)}
select{font-size:13px;padding:6px 9px;border-radius:var(--r-xs);max-width:210px}
select.auto{border-color:var(--green);background:var(--green-soft)}
select.todo{border-color:var(--amber);background:var(--amber-soft)}
select:disabled{opacity:.6;cursor:default}

/* --- Expandable inline detail (portfolio row → dropdown) -------------------- */
tr.prow{cursor:pointer;transition:background .12s}
tr.prow:hover td{background:#fbfaf5}
tr.prow.open td{background:var(--moss-soft)!important}
tr.detail td{padding:0;background:var(--paper);border-bottom:1px solid var(--line)}
.detailbox{
  position:sticky;left:0;max-width:940px;padding:20px 22px;
  animation:detailin .22s ease both;
}
@keyframes detailin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.detailbox h3{font-size:18px;font-weight:600;letter-spacing:-.01em}
.detailbox .meta{color:var(--muted);font-size:13px;margin:3px 0 14px}
.detailbox .meta b{color:var(--ink)}
.dl{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(146px,1fr));
  gap:1px;background:var(--line);border:1px solid var(--line);
  border-radius:var(--r-sm);overflow:hidden;margin-bottom:14px;
}
.dl .c{background:var(--card);padding:10px 13px}
.dl .c .k{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.dl .c .v{font-size:14.5px;font-weight:600;margin-top:3px;overflow-wrap:anywhere}
.dsec{font-size:11px;letter-spacing:.11em;text-transform:uppercase;color:var(--moss);font-weight:600;margin:16px 0 7px}
.dtab{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-xs);overflow:hidden}
.dtab th,.dtab td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left}
.dtab th{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--card)}
.dtab tr:last-child td{border-bottom:0}
.dtab td.n{text-align:right;font-variant-numeric:tabular-nums;color:var(--green);font-weight:600;white-space:nowrap}
.dfull{
  display:inline-block;margin-top:14px;font-size:13px;color:var(--moss);
  text-decoration:none;font-weight:600;border-bottom:1px solid transparent;transition:border-color .15s;
}
.dfull:hover{border-bottom-color:var(--moss)}

/* --- Callouts -------------------------------------------------------------- */
.note{
  font-size:13px;color:var(--muted);
  background:var(--amber-soft);border-left:6px solid var(--amber);
  padding:11px 15px;border-radius:0 var(--r-xs) var(--r-xs) 0;margin-top:14px;
}
.note b{color:var(--amber)}
.note-box{background:var(--clay-soft);border-left:6px solid var(--clay);border-radius:0 var(--r-xs) var(--r-xs) 0;padding:14px 18px;margin-top:16px;font-size:15px}
.note-box b{color:var(--clay)}
.note-box.blue{background:var(--blue-soft);border-left-color:var(--blue)}
.note-box.blue b{color:var(--blue)}
.fresh{margin-top:14px;font-size:13px;padding:10px 14px;border-radius:0 var(--r-xs) var(--r-xs) 0}
.fresh.ok{background:var(--green-soft);border-left:6px solid var(--green);color:var(--green)}
.fresh.warn{background:var(--amber-soft);border-left:6px solid var(--amber);color:var(--amber)}

/* --- Loading & empty states ------------------------------------------------ */
.spinner{
  display:inline-block;width:15px;height:15px;
  border:2px solid rgba(58,107,84,.28);border-top-color:var(--moss);
  border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px;margin-right:8px;
}
.spinner.light{border-color:rgba(255,255,255,.4);border-top-color:#fff}
@keyframes spin{to{transform:rotate(360deg)}}
.loading,.empty{color:var(--muted);font-size:14px;padding:22px 4px}
.empty{text-align:center}

/* --- Dashboard mini-bars --------------------------------------------------- */
.bar{display:grid;grid-template-columns:132px 1fr auto;align-items:center;gap:11px;margin:8px 0;font-size:13.5px}
.bar .track{background:var(--paper);border-radius:var(--pill);height:14px;overflow:hidden;border:1px solid var(--line)}
.bar .fill{height:100%;background:var(--moss);border-radius:var(--pill)}
.bar.blue .fill{background:var(--blue)}
.bar .n{font-variant-numeric:tabular-nums;color:var(--muted)}

/* --- Auth (login / 2fa) ---------------------------------------------------- */
.auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:22px}
.auth-card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:36px 32px;width:100%;max-width:392px;text-align:center;box-shadow:var(--shadow-md);
  animation:cardin .3s ease both;
}
@keyframes cardin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.auth-card img{height:48px;margin-bottom:18px}
.auth-card h1{font-size:22px;font-weight:500;margin-bottom:5px;letter-spacing:-.01em}
.auth-card .sub{color:var(--muted);font-size:14px;margin:0 auto 22px}
.auth-card label{text-align:left}
.auth-card input{width:100%}
.auth-card .btn-primary{width:100%;margin-top:20px}
.err{
  background:var(--clay-soft);color:var(--clay);font-size:13px;font-weight:600;
  padding:10px 13px;border-radius:var(--r-xs);margin-bottom:14px;display:none;
}
.err.show{display:block}

/* --- Ingest drop zone & result cards --------------------------------------- */
.drop{
  background:var(--card);border:2px dashed var(--line);border-radius:var(--r-lg);
  padding:44px 28px;text-align:center;transition:.18s;cursor:pointer;
  /* reset the global <label> typography — the drop zone is itself a <label> */
  text-transform:none;letter-spacing:normal;color:var(--ink);margin:0;font-size:14px;
}
.drop:hover,.drop.drag{border-color:var(--moss);background:var(--moss-soft)}
.drop .big{font-size:19px;font-weight:600;margin-bottom:8px}
.drop .small{font-size:14px;color:var(--muted)}
.drop input{display:none}
.cards{display:flex;gap:12px;flex-wrap:wrap}
.rc{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;flex:1;min-width:150px;box-shadow:var(--shadow-sm)}
.rc .l{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.rc .v{font-size:18px;font-weight:600;margin-top:4px}
.kind{font-size:12px;font-weight:600;padding:2px 10px;border-radius:var(--pill);display:inline-block}
.kind.text{background:var(--green-soft);color:var(--green)}
.kind.scanned{background:var(--clay-soft);color:var(--clay)}
.kind.mixed{background:var(--amber-soft);color:var(--amber)}
.kind.nonpdf{background:var(--blue-soft);color:var(--blue)}
.value .none{color:var(--muted);font-weight:400;font-style:italic}

/* --- Sub-navigation pills (documents) -------------------------------------- */
.subnav{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 24px}
.subnav a{font-size:13px;padding:6px 15px;border:1px solid var(--line);border-radius:var(--pill);background:var(--card);color:var(--muted);text-decoration:none;transition:.15s}
.subnav a:hover{color:var(--ink);border-color:var(--muted)}
.subnav a.on{background:var(--moss);color:#fff;border-color:var(--moss)}

/* --- Two-column responsive grid ------------------------------------------- */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:760px){.grid{grid-template-columns:1fr}}

/* --- Responsive shell ------------------------------------------------------ */
@media(max-width:640px){
  .appbar-inner{gap:10px 14px;padding:10px 16px}
  .appbar-brand .name{display:none}          /* logo alone on phones */
  .appbar-nav{order:3;width:100%;overflow-x:auto;flex-wrap:nowrap;gap:2px;-webkit-overflow-scrolling:touch}
  .appbar-nav::-webkit-scrollbar{display:none}
  .appbar-nav a{white-space:nowrap;flex:none}
  .appbar-user{margin-left:auto}
  .wrap{padding:22px 16px 72px}
  .info{margin-left:0;width:100%}
}

/* --- Reduced motion -------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.001ms!important}
  .appbar-nav a.on::after,.detailbox,.auth-card{animation:none}
  html{scroll-behavior:auto}
}

/* contextual "back / go to" links inside a page (never in the appbar) */
a.back, a.back2{color:var(--muted);text-decoration:none;font-size:13px;white-space:nowrap}
a.back:hover, a.back2:hover{color:var(--ink)}

/* ============================================================
   SIDEBAR NAVIGATION (replaces the top appbar)
   Collapsible to an icon rail so a page gets the full height.
   State lives in localStorage; the shell reads it before paint
   via the .nav-collapsed class on <html> to avoid a flash.
   ============================================================ */
:root{--sb-w:210px; --sb-w-min:58px}
html.nav-collapsed{--sb-w:var(--sb-w-min)}

.sidebar{
  position:fixed; top:0; left:0; bottom:0; width:var(--sb-w); z-index:50;
  background:var(--card); border-right:1px solid var(--line);
  display:flex; flex-direction:column; gap:2px; padding:14px 10px 12px;
  transition:width .18s ease; overflow:hidden;
}
.sidebar .sb-brand{display:flex;align-items:center;gap:10px;text-decoration:none;padding:2px 6px 12px;flex:none}
.sidebar .sb-brand img{height:24px;width:auto;display:block;flex:none}
.sidebar .sb-brand .name{
  font-family:var(--serif);font-size:15px;font-weight:600;color:var(--ink);
  white-space:nowrap;letter-spacing:.01em;
}
.sidebar a.sb-item{
  display:flex;align-items:center;gap:11px;white-space:nowrap;
  padding:8px 9px;border-radius:var(--r-sm);text-decoration:none;
  color:var(--muted);font-size:13.5px;transition:background .14s,color .14s;
}
.sidebar a.sb-item .ico{flex:none;width:20px;text-align:center;font-size:15px;line-height:1}
.sidebar a.sb-item:hover{background:var(--moss-soft);color:var(--ink)}
.sidebar a.sb-item.on{background:var(--moss-soft);color:var(--moss-deep);font-weight:600}
.sidebar .sb-spacer{flex:1 1 auto;min-height:8px}
.sidebar .sb-foot{border-top:1px solid var(--line);padding-top:8px;margin-top:4px}
.sidebar .sb-who{
  font-size:11.5px;color:var(--muted);padding:2px 9px 8px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;
}
.sidebar form{margin:0}
.sidebar button.sb-item{
  width:100%;font-family:inherit;border:0;background:none;cursor:pointer;text-align:left;
}
.sidebar .sb-toggle{
  position:absolute;top:14px;right:8px;width:24px;height:24px;padding:0;
  border:1px solid var(--line);border-radius:6px;background:var(--card);
  color:var(--muted);cursor:pointer;font-size:12px;line-height:1;
}
.sidebar .sb-toggle:hover{background:var(--moss-soft);color:var(--ink)}

/* collapsed: icons only */
html.nav-collapsed .sidebar .name,
html.nav-collapsed .sidebar .label,
html.nav-collapsed .sidebar .sb-who{display:none}
html.nav-collapsed .sidebar .sb-brand{justify-content:center;padding-right:0}
html.nav-collapsed .sidebar a.sb-item,
html.nav-collapsed .sidebar button.sb-item{justify-content:center;padding-left:0;padding-right:0}
html.nav-collapsed .sidebar .sb-toggle{position:static;margin:0 auto 8px}

/* content sits beside the rail */
body{padding-left:var(--sb-w);transition:padding-left .18s ease}
.wrap{max-width:var(--maxw);margin:0 auto;padding:26px 26px 88px}
.stepsbar-inner{max-width:var(--maxw);margin:0 auto;padding:9px 26px}

@media(max-width:820px){
  :root{--sb-w:var(--sb-w-min)}
  .sidebar .name,.sidebar .label,.sidebar .sb-who{display:none}
  .sidebar .sb-brand{justify-content:center}
  .sidebar a.sb-item,.sidebar button.sb-item{justify-content:center;padding-left:0;padding-right:0}
  .sidebar .sb-toggle{display:none}
}

/* inline line-icons (set L): a rounded glyph inside a soft colour bubble */
.ico-svg{display:block;flex:none}
.ico-b{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex:none;vertical-align:middle}
/* the sidebar rail sizes its own slot; bubbles keep their colour when active */
.sidebar a.sb-item .ico,.sidebar button.sb-item .ico{width:auto}
.sidebar a.sb-item.on{background:transparent;color:var(--moss-deep)}
.sidebar a.sb-item.on .ico-b{box-shadow:0 0 0 2px var(--card),0 0 0 3.5px currentColor}
