/* =========================================================
   Atlas ERP + CRM — stylesheet
   Deep pine accent on a cool paper ground. Dense, legible,
   built for long tables and small screens alike.
   ========================================================= */

:root{
  --ink:#101519;
  --ink-2:#19232a;
  --ink-3:#2b3840;
  --paper:#eef0ec;
  --card:#ffffff;
  --line:#d8ded9;
  --line-soft:#e9ede9;
  --text:#16201d;
  --muted:#69766f;
  --accent:#0d6b59;
  --accent-2:#118c73;
  --accent-wash:#e3f0eb;
  --warn:#8f5a05;  --warn-wash:#fbeed4;
  --bad:#9f261c;   --bad-wash:#fbe4e1;
  --info:#1c5890;  --info-wash:#e2ecf6;
  --ok:#0d6b59;    --ok-wash:#e3f0eb;

  --r-sm:4px; --r:7px; --r-lg:12px;
  --sh-1:0 1px 2px rgba(16,21,25,.06);
  --sh-2:0 4px 14px rgba(16,21,25,.10);
  --sh-3:0 18px 44px rgba(16,21,25,.18);

  --sidebar-w:238px;
  --topbar-h:56px;

  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;font-family:var(--sans);font-size:15px;line-height:1.5;
  color:var(--text);background:var(--paper);
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{margin:0;font-weight:640;letter-spacing:-.012em;line-height:1.25}
h1{font-size:1.42rem}
h2{font-size:1.1rem}
h3{font-size:.98rem}
p{margin:0}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
svg.ic{width:18px;height:18px;flex:none}
:focus-visible{outline:2.5px solid var(--accent-2);outline-offset:2px;border-radius:3px}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.6rem 1rem;z-index:200}
.skip:focus{left:8px;top:8px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------------- topbar ---------------- */
.topbar{
  position:fixed;inset:0 0 auto 0;height:var(--topbar-h);z-index:60;
  display:flex;align-items:center;gap:.6rem;padding:0 .75rem;
  background:var(--ink);color:#e7ece9;
  padding-top:env(safe-area-inset-top);
  height:calc(var(--topbar-h) + env(safe-area-inset-top));
}
.brand{display:flex;align-items:center;gap:.55rem;color:#fff;text-decoration:none;flex:none}
.brand:hover{text-decoration:none}
.brand-mark{
  width:30px;height:30px;border-radius:8px;display:grid;place-items:center;
  background:linear-gradient(150deg,var(--accent-2),var(--accent));
  font-weight:700;font-size:.95rem;color:#fff;
}
.brand-text{font-weight:620;letter-spacing:-.01em;white-space:nowrap;max-width:32vw;overflow:hidden;text-overflow:ellipsis}

.globalsearch{flex:1;max-width:480px;margin-inline:auto;position:relative;display:flex;align-items:center}
.globalsearch .ic{position:absolute;left:10px;color:#8ea09a;width:16px;height:16px}
.globalsearch input{
  width:100%;height:36px;border-radius:9px;border:1px solid #2c383f;
  background:#1a242b;color:#e7ece9;padding:0 .75rem 0 2.1rem;font:inherit;font-size:.88rem;
}
.globalsearch input::placeholder{color:#7d8d88}
.globalsearch input:focus{background:#222e36;border-color:var(--accent-2);outline:none}

.topbar-right{display:flex;align-items:center;gap:.35rem;flex:none;margin-left:auto}
.iconbtn{
  position:relative;width:36px;height:36px;border-radius:9px;border:0;background:transparent;
  color:#c6d2cd;display:grid;place-items:center;cursor:pointer;padding:0;
}
.iconbtn:hover{background:#222e35;color:#fff}
.dot-badge{
  position:absolute;top:3px;right:3px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;
  background:var(--bad);color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;
}
.nav-toggle{display:none}

.usermenu{position:relative}
.usermenu summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;gap:.45rem;
  padding:.28rem .5rem .28rem .28rem;border-radius:9px;
}
.usermenu summary::-webkit-details-marker{display:none}
.usermenu summary:hover{background:#222e35}
.avatar{
  width:29px;height:29px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--accent);color:#fff;font-size:.74rem;font-weight:700;letter-spacing:.02em;
}
.uname{font-size:.86rem;color:#dfe6e2;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.usermenu .menu{
  position:absolute;right:0;top:calc(100% + 8px);min-width:218px;background:#fff;color:var(--text);
  border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-3);padding:.35rem;z-index:80;
}
.usermenu .menu a{display:flex;align-items:center;gap:.6rem;padding:.55rem .6rem;border-radius:var(--r);color:var(--text);font-size:.9rem}
.usermenu .menu a:hover{background:var(--paper);text-decoration:none}
.usermenu .menu a.menu-danger{color:var(--bad)}
.menu-head{padding:.6rem;border-bottom:1px solid var(--line-soft);margin-bottom:.3rem;display:grid}
.menu-head strong{font-size:.92rem}
.menu-head span{font-size:.78rem;color:var(--muted)}

/* ---------------- shell + sidebar ---------------- */
.shell{display:flex;padding-top:calc(var(--topbar-h) + env(safe-area-inset-top));min-height:100vh}
.sidebar{
  position:fixed;top:calc(var(--topbar-h) + env(safe-area-inset-top));bottom:0;left:0;width:var(--sidebar-w);
  background:var(--ink-2);color:#b9c6c0;display:flex;flex-direction:column;z-index:50;
}
.sidebar-scroll{flex:1;overflow-y:auto;padding:.7rem .55rem 1rem;overscroll-behavior:contain}
.navgroup{margin-bottom:.85rem}
.navgroup-title{
  font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:#6f817a;
  padding:.2rem .65rem .35rem;font-weight:700;
}
.navlink{
  display:flex;align-items:center;gap:.65rem;padding:.5rem .65rem;border-radius:var(--r);
  color:#c3cfc9;font-size:.875rem;position:relative;
}
.navlink:hover{background:#23303a;color:#fff;text-decoration:none}
.navlink .ic{width:17px;height:17px;color:#7f918a}
.navlink:hover .ic{color:#cfe0d9}
.navlink.is-active{background:var(--accent);color:#fff;font-weight:560}
.navlink.is-active .ic{color:#bfe9dc}
.sidebar-foot{padding:.6rem .9rem;font-size:.7rem;color:#5f716a;border-top:1px solid #24303a}
.scrim{position:fixed;inset:0;background:rgba(10,14,17,.5);z-index:45;border:0}

.main{flex:1;margin-left:var(--sidebar-w);padding:1.15rem 1.35rem 4rem;min-width:0;max-width:1560px}
.is-wide .main{max-width:none}

/* ---------------- page header ---------------- */
.pagehead{display:flex;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.pagehead h1{font-size:1.34rem}
.pagehead .sub{color:var(--muted);font-size:.87rem;margin-top:.15rem}
.pagehead-actions{margin-left:auto;display:flex;gap:.5rem;flex-wrap:wrap}

/* ---------------- buttons ---------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  height:38px;padding:0 .9rem;border-radius:var(--r);border:1px solid var(--line);
  background:#fff;color:var(--text);font:inherit;font-size:.88rem;font-weight:560;
  cursor:pointer;text-decoration:none;white-space:nowrap;box-shadow:var(--sh-1);
}
.btn:hover{background:var(--paper);text-decoration:none}
.btn .ic{width:16px;height:16px}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-primary:hover{background:#0a5849}
.btn-danger{background:#fff;border-color:#e5bcb7;color:var(--bad)}
.btn-danger:hover{background:var(--bad-wash)}
.btn-ghost{background:transparent;border-color:transparent;box-shadow:none}
.btn-ghost:hover{background:#e3e7e2}
.btn-sm{height:31px;padding:0 .6rem;font-size:.82rem}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* ---------------- cards / panels ---------------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}
.card-head{
  display:flex;align-items:center;gap:.7rem;padding:.75rem 1rem;border-bottom:1px solid var(--line-soft);
}
.card-head h2{font-size:.97rem}
.card-head .spacer{margin-left:auto}
.card-body{padding:1rem}
.card-body.tight{padding:.6rem}

/* ---------------- KPI strip ---------------- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.75rem;margin-bottom:1rem}
.kpi{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:.85rem .95rem;box-shadow:var(--sh-1);display:grid;gap:.15rem;position:relative;overflow:hidden;
}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}
.kpi.k-warn::before{background:var(--warn)}
.kpi.k-bad::before{background:var(--bad)}
.kpi.k-info::before{background:var(--info)}
.kpi-label{font-size:.76rem;color:var(--muted);font-weight:560}
.kpi-value{font-size:1.42rem;font-weight:680;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.kpi-note{font-size:.76rem;color:var(--muted)}
.kpi-note.up{color:var(--ok)}
.kpi-note.down{color:var(--bad)}

/* ---------------- toolbar / filters ---------------- */
.toolbar{
  display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:.6rem;margin-bottom:.85rem;box-shadow:var(--sh-1);
}
.toolbar .search{position:relative;flex:1;min-width:180px;display:flex;align-items:center}
.toolbar .search .ic{position:absolute;left:9px;color:var(--muted);width:16px;height:16px}
.toolbar input[type=search],.toolbar select{
  height:36px;border:1px solid var(--line);border-radius:var(--r);background:#fff;
  font:inherit;font-size:.86rem;color:var(--text);padding:0 .6rem;
}
.toolbar input[type=search]{width:100%;padding-left:2rem}
.toolbar select{max-width:190px}
.count-note{font-size:.8rem;color:var(--muted);margin-left:auto}

/* ---------------- tables ---------------- */
.tablewrap{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);overflow:auto}
table.grid{width:100%;border-collapse:collapse;font-size:.86rem}
table.grid th,table.grid td{padding:.6rem .75rem;text-align:left;vertical-align:middle}
table.grid thead th{
  background:#f5f7f4;border-bottom:1px solid var(--line);color:#4d5b55;
  font-weight:640;font-size:.76rem;letter-spacing:.02em;white-space:nowrap;position:sticky;top:0;z-index:2;
}
table.grid thead th a{color:inherit;display:inline-flex;align-items:center;gap:.25rem}
table.grid tbody tr{border-bottom:1px solid var(--line-soft)}
table.grid tbody tr:last-child{border-bottom:0}
table.grid tbody tr:hover{background:#f7f9f7}
table.grid td.num,table.grid th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.grid td.actions{text-align:right;white-space:nowrap}
.rowlink{color:var(--text);font-weight:560}
.rowlink:hover{color:var(--accent)}
.code-cell{font-family:var(--mono);font-size:.78rem;color:var(--muted)}
.sub-cell{display:block;color:var(--muted);font-size:.78rem}

/* ---------------- badges ---------------- */
.badge{
  display:inline-flex;align-items:center;gap:.3rem;padding:.16rem .5rem;border-radius:100px;
  font-size:.74rem;font-weight:620;white-space:nowrap;border:1px solid transparent;
}
.badge.is-ok{background:var(--ok-wash);color:var(--ok);border-color:#bcdcd2}
.badge.is-warn{background:var(--warn-wash);color:var(--warn);border-color:#eed7a8}
.badge.is-bad{background:var(--bad-wash);color:var(--bad);border-color:#eebfb9}
.badge.is-info{background:var(--info-wash);color:var(--info);border-color:#c2d6e8}
.badge.is-accent{background:var(--accent-wash);color:var(--accent);border-color:#bcdcd2}
.badge.is-muted{background:#eef0ed;color:#5c6a63;border-color:#dee3de}

/* ---------------- forms ---------------- */
.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.9rem 1rem}
.field{display:grid;gap:.28rem;min-width:0}
.field.full{grid-column:1/-1}
.field label{font-size:.8rem;font-weight:600;color:#41504a}
.field .req{color:var(--bad)}
.field input,.field select,.field textarea{
  width:100%;border:1px solid var(--line);border-radius:var(--r);background:#fff;
  font:inherit;font-size:.9rem;color:var(--text);padding:.5rem .6rem;min-height:38px;
}
.field textarea{min-height:82px;resize:vertical;line-height:1.5}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent-2);outline:2px solid var(--accent-wash);outline-offset:0}
.field input[readonly]{background:#f4f6f4;color:var(--muted)}
.field .help{font-size:.76rem;color:var(--muted)}
.field .err{font-size:.78rem;color:var(--bad);font-weight:560}
.field.has-err input,.field.has-err select,.field.has-err textarea{border-color:var(--bad)}
.checkline{display:flex;align-items:center;gap:.5rem}
.checkline input{width:17px;height:17px;min-height:0;flex:none;accent-color:var(--accent)}
.checkline label{font-weight:500;font-size:.88rem;color:var(--text)}
.formactions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1.1rem;padding-top:1rem;border-top:1px solid var(--line-soft)}
fieldset{border:0;padding:0;margin:0 0 1.2rem}
fieldset legend{font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0 0 .55rem}

/* ---------------- flash ---------------- */
.flash{
  display:flex;align-items:center;gap:.6rem;padding:.65rem .85rem;border-radius:var(--r);
  margin-bottom:.85rem;font-size:.88rem;border:1px solid;
}
.flash-ok{background:var(--ok-wash);border-color:#bcdcd2;color:#0a5344}
.flash-error{background:var(--bad-wash);border-color:#eebfb9;color:#8a2018}
.flash-warn{background:var(--warn-wash);border-color:#eed7a8;color:#7a4d04}
.flash-info{background:var(--info-wash);border-color:#c2d6e8;color:#17497a}
.flash-x{margin-left:auto;border:0;background:transparent;font-size:1.2rem;cursor:pointer;color:inherit;line-height:1;padding:0 .2rem}

/* ---------------- empty state ---------------- */
.empty{padding:3rem 1.5rem;text-align:center;color:var(--muted)}
.empty h3{color:var(--text);margin-bottom:.35rem}
.empty p{font-size:.9rem;max-width:44ch;margin:0 auto .9rem}

/* ---------------- pager ---------------- */
.pager{display:flex;gap:.25rem;justify-content:center;padding:.85rem;flex-wrap:wrap}
.pg{
  min-width:33px;height:33px;padding:0 .5rem;display:grid;place-items:center;border-radius:var(--r);
  border:1px solid var(--line);background:#fff;color:var(--text);font-size:.84rem;
}
.pg:hover{background:var(--paper);text-decoration:none}
.pg-on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:620}
.pg-off{opacity:.4;pointer-events:none}
.pg-gap{border:0;background:transparent}

/* ---------------- kanban ---------------- */
.kanban{display:flex;gap:.75rem;overflow-x:auto;padding-bottom:1rem;align-items:flex-start}
.kcol{flex:0 0 268px;background:#e7ebe6;border-radius:var(--r-lg);display:flex;flex-direction:column;max-height:72vh}
.kcol-head{padding:.6rem .75rem;display:flex;align-items:center;gap:.45rem;border-bottom:1px solid #d7ddd6}
.kcol-head h3{font-size:.85rem}
.kcol-count{background:#fff;border-radius:100px;padding:.05rem .45rem;font-size:.72rem;color:var(--muted);font-weight:640}
.kcol-sum{margin-left:auto;font-size:.76rem;color:var(--muted);font-variant-numeric:tabular-nums}
.kcol-body{padding:.5rem;display:grid;gap:.5rem;overflow-y:auto;min-height:80px;align-content:start}
.kcol.drop-target{outline:2px dashed var(--accent);outline-offset:-3px}
.kcard{
  background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:.6rem .65rem;
  box-shadow:var(--sh-1);cursor:grab;display:grid;gap:.3rem;
}
.kcard:active{cursor:grabbing}
.kcard.dragging{opacity:.45}
.kcard-title{font-size:.86rem;font-weight:600;color:var(--text)}
.kcard-title:hover{color:var(--accent)}
.kcard-meta{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;font-size:.75rem;color:var(--muted)}
.kcard-val{font-weight:680;font-variant-numeric:tabular-nums;color:var(--text)}
.kcard .bar{height:3px;border-radius:2px;background:#e3e8e3;overflow:hidden}
.kcard .bar i{display:block;height:100%;background:var(--accent)}

/* ---------------- charts ---------------- */
.chartbox{width:100%;overflow:hidden}
.chartbox svg{width:100%;height:auto;display:block}
.legend{display:flex;gap:.9rem;flex-wrap:wrap;font-size:.78rem;color:var(--muted);padding-top:.5rem}
.legend i{width:10px;height:10px;border-radius:2px;display:inline-block;margin-right:.3rem;vertical-align:-1px}
.bars{display:grid;gap:.55rem}
.barrow{display:grid;grid-template-columns:minmax(80px,1.3fr) 3fr auto;gap:.6rem;align-items:center;font-size:.82rem}
.barrow .track{height:9px;background:#e7ebe6;border-radius:100px;overflow:hidden}
.barrow .track i{display:block;height:100%;background:var(--accent);border-radius:100px}
.barrow .amt{font-variant-numeric:tabular-nums;color:var(--muted);font-size:.8rem;white-space:nowrap}
.barrow .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------------- document editor ---------------- */
.doc-layout{display:grid;grid-template-columns:1fr 300px;gap:1rem;align-items:start}
.lines{width:100%;border-collapse:collapse;font-size:.85rem}
.lines th{background:#f5f7f4;border-bottom:1px solid var(--line);padding:.5rem .5rem;font-size:.74rem;color:#4d5b55;text-align:left;font-weight:640}
.lines td{padding:.3rem .35rem;border-bottom:1px solid var(--line-soft);vertical-align:top}
.lines input,.lines select,.lines textarea{
  width:100%;border:1px solid transparent;border-radius:var(--r-sm);padding:.4rem .45rem;font:inherit;font-size:.84rem;
  background:transparent;min-height:34px;
}
.lines input:hover,.lines select:hover{border-color:var(--line)}
.lines input:focus,.lines select:focus{border-color:var(--accent-2);background:#fff;outline:none}
.lines input.num{text-align:right;font-variant-numeric:tabular-nums}
.lines td.total{text-align:right;font-variant-numeric:tabular-nums;font-weight:620;padding-right:.6rem;white-space:nowrap}
.lines .rm{border:0;background:transparent;color:var(--muted);cursor:pointer;padding:.3rem;border-radius:var(--r-sm)}
.lines .rm:hover{color:var(--bad);background:var(--bad-wash)}
.totals{display:grid;gap:.45rem;font-size:.88rem}
.totals .row{display:flex;justify-content:space-between;gap:1rem}
.totals .row span:last-child{font-variant-numeric:tabular-nums;font-weight:600}
.totals .grand{border-top:1px solid var(--line);padding-top:.55rem;font-size:1.05rem;font-weight:700}
.totals .grand span:last-child{color:var(--accent)}

/* ---------------- misc ---------------- */
.stack{display:grid;gap:.85rem}
.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:.85rem}
.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:.85rem}
.feed{display:grid;gap:.1rem}
.feed-item{display:flex;gap:.7rem;padding:.55rem .25rem;border-bottom:1px solid var(--line-soft);font-size:.85rem}
.feed-item:last-child{border-bottom:0}
.feed-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:.42rem;flex:none}
.feed-body{min-width:0;flex:1}
.feed-body strong{font-weight:600}
.feed-time{color:var(--muted);font-size:.76rem;white-space:nowrap}
.chips{display:flex;gap:.35rem;flex-wrap:wrap}
.chip{background:#fff;border:1px solid var(--line);border-radius:100px;padding:.2rem .6rem;font-size:.78rem;color:var(--muted)}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.chip:hover{text-decoration:none}
.tabs{display:flex;gap:.2rem;border-bottom:1px solid var(--line);margin-bottom:1rem;overflow-x:auto}
.tab{padding:.55rem .8rem;font-size:.88rem;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}
.tab:hover{color:var(--text);text-decoration:none}
.tab.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:620}
.muted{color:var(--muted)}
.nowrap{white-space:nowrap}
.mono{font-family:var(--mono);font-size:.82rem}
.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mb-2{margin-bottom:1rem}
.dl{display:grid;grid-template-columns:auto 1fr;gap:.4rem .9rem;font-size:.87rem}
.dl dt{color:var(--muted)}
.dl dd{margin:0;font-weight:540}

/* permission matrix */
.permtable{width:100%;border-collapse:collapse;font-size:.86rem}
.permtable th,.permtable td{padding:.5rem .6rem;border-bottom:1px solid var(--line-soft);text-align:center}
.permtable th:first-child,.permtable td:first-child{text-align:left}
.permtable thead th{background:#f5f7f4;font-size:.75rem;color:#4d5b55}
.permtable input{width:17px;height:17px;accent-color:var(--accent)}

/* ---------------- auth screen ---------------- */
body.auth{background:var(--ink);display:grid;min-height:100vh;place-items:center;padding:1.2rem}
.authcard{
  width:100%;max-width:400px;background:#fff;border-radius:16px;box-shadow:var(--sh-3);
  padding:1.9rem 1.6rem;
}
.authcard .logo{
  width:46px;height:46px;border-radius:13px;display:grid;place-items:center;margin-bottom:1rem;
  background:linear-gradient(150deg,var(--accent-2),var(--accent));color:#fff;font-weight:700;font-size:1.3rem;
}
.authcard h1{font-size:1.3rem;margin-bottom:.3rem}
.authcard .sub{color:var(--muted);font-size:.88rem;margin-bottom:1.3rem}
.authcard .field{margin-bottom:.85rem}
.authcard .btn{width:100%;height:42px}
.authfoot{text-align:center;color:#7b8a84;font-size:.78rem;margin-top:1.2rem}
.pwrow{position:relative}
.pwrow .toggle{
  position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;
  color:var(--muted);font-size:.76rem;cursor:pointer;padding:.3rem .4rem;font-weight:600;
}

/* ---------------- install wizard ---------------- */
body.setup{background:var(--paper);padding:1.5rem 1rem 4rem}
.setup-wrap{max-width:660px;margin:0 auto}
.setup-wrap .card{margin-bottom:1rem}
.steps{display:flex;gap:.4rem;margin-bottom:1.2rem;flex-wrap:wrap}
.step{flex:1;min-width:120px;padding:.5rem .7rem;border-radius:var(--r);background:#fff;border:1px solid var(--line);font-size:.8rem;color:var(--muted)}
.step.on{border-color:var(--accent);background:var(--accent-wash);color:var(--accent);font-weight:640}
.step.done{color:var(--ok)}
.checklist{list-style:none;padding:0;margin:0;display:grid;gap:.4rem;font-size:.87rem}
.checklist li{display:flex;gap:.55rem;align-items:flex-start}
.checklist .ok{color:var(--ok);font-weight:700}
.checklist .no{color:var(--bad);font-weight:700}

/* ---------------- responsive ---------------- */
@media (max-width:1023px){
  .nav-toggle{display:grid}
  .sidebar{transform:translateX(-100%);transition:transform .22s ease;width:264px;box-shadow:var(--sh-3)}
  body.nav-open .sidebar{transform:translateX(0)}
  .main{margin-left:0;padding:1rem .9rem 5rem}
  .doc-layout{grid-template-columns:1fr}
  .globalsearch{max-width:none}
}
@media (max-width:720px){
  .brand-text,.uname{display:none}
  .globalsearch{order:3;flex-basis:100%;margin:0}
  .topbar{flex-wrap:wrap;height:auto;padding:.5rem .6rem;position:sticky;gap:.4rem}
  .topbar .globalsearch{margin-bottom:.15rem}
  .shell{padding-top:0}
  .sidebar{top:0;padding-top:.5rem}
  body.nav-open{overflow:hidden}
  h1{font-size:1.18rem}
  .pagehead-actions{width:100%;margin-left:0}
  .pagehead-actions .btn{flex:1}

  /* stack table rows into cards */
  .tablewrap{border-radius:var(--r-lg);overflow:visible;background:transparent;border:0;box-shadow:none}
  table.grid thead{display:none}
  table.grid,table.grid tbody,table.grid tr,table.grid td{display:block;width:100%}
  table.grid tr{
    background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
    margin-bottom:.6rem;padding:.55rem .7rem;box-shadow:var(--sh-1);
  }
  table.grid td{padding:.28rem 0;display:flex;gap:.8rem;align-items:baseline;border:0}
  table.grid td::before{
    content:attr(data-label);flex:0 0 40%;max-width:40%;color:var(--muted);font-size:.76rem;font-weight:600;
  }
  table.grid td.num{text-align:left;justify-content:flex-start}
  table.grid td.actions{justify-content:flex-end;padding-top:.5rem;margin-top:.35rem;border-top:1px solid var(--line-soft)}
  table.grid td.actions::before{content:"";flex:0}
  table.grid td.primary-cell{font-size:.98rem;padding-bottom:.4rem}
  table.grid td.primary-cell::before{display:none}
  .toolbar select{max-width:none;flex:1}
  .kcol{flex-basis:84vw}
  .formgrid{grid-template-columns:1fr}
  .lines-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .lines{min-width:660px}
}

/* ---------------- print ---------------- */
@media print{
  .topbar,.sidebar,.pagehead-actions,.toolbar,.formactions,.pager,.scrim,.flash{display:none!important}
  .main{margin:0;padding:0;max-width:none}
  .shell{padding:0}
  body{background:#fff;font-size:12px}
  .card{border:0;box-shadow:none}
  @page{margin:14mm}
}
