/* Layout: fixed TAMS sidebar + workspace; Asset 360 = header card, lifecycle rail, tab strip, tab body. Tokens follow the existing TAMS green system. */
:root{
  --bg:#eef3f1; --surface:#ffffff; --surface-2:#f3faf7; --ink:#1d2b27; --muted:#5b6e66; --border:#d5e2dd;
  --brand:#1f4d3f; --brand-2:#2f7f73; --brand-ink:#ffffff; --brand-soft:#e3efeb; --accent:#1f6b5c;
  --good:#1e7a46; --good-bg:#e3f4ea; --warn:#9a5b00; --warn-bg:#fdf0d8; --bad:#b0302f; --bad-bg:#fbe7e6; --info:#2a5d9a; --info-bg:#e5eefa;
  --display:'Oswald',Impact,'Arial Narrow',sans-serif; --body:'Poppins',system-ui,-apple-system,'Segoe UI',sans-serif; --mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
  --shadow:0 1px 3px rgba(20,50,40,.08);
  /* TAT stage colours: mid-tones that read on light and dark surfaces */
  --gold:#f0c75e;
  --s1:#8a9c96; --s2:#3f74b8; --s3:#2f8f80; --s4:#d48a1c; --s5:#8a63c4;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0f1a17; --surface:#16241f; --surface-2:#1b2e28; --ink:#e3eeea; --muted:#9db3aa; --border:#2a3f38;
  --brand:#123229; --brand-2:#2f7f73; --brand-ink:#ffffff; --brand-soft:#1f3a32; --accent:#7fd0bd;
  --good:#7fd3a1; --good-bg:#183a28; --warn:#f2c06b; --warn-bg:#3a2e14; --bad:#f09a98; --bad-bg:#3d1d1d; --info:#9cc2f2; --info-bg:#1b2c42;
  --shadow:0 1px 3px rgba(0,0,0,.4); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0f1a17; --surface:#16241f; --surface-2:#1b2e28; --ink:#e3eeea; --muted:#9db3aa; --border:#2a3f38;
  --brand:#123229; --brand-2:#2f7f73; --brand-ink:#ffffff; --brand-soft:#1f3a32; --accent:#7fd0bd;
  --good:#7fd3a1; --good-bg:#183a28; --warn:#f2c06b; --warn-bg:#3a2e14; --bad:#f09a98; --bad-bg:#3d1d1d; --info:#9cc2f2; --info-bg:#1b2c42;
  --shadow:0 1px 3px rgba(0,0,0,.4); color-scheme:dark}

*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:14px;line-height:1.5}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--brand-2);outline-offset:2px}
.app{display:flex;min-height:100vh}
/* Sidebar */
.side{width:240px;flex:none;background:var(--brand);color:var(--brand-ink);display:flex;flex-direction:column;gap:4px;padding-block:20px;padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:12px;position:sticky;top:env(safe-area-inset-top,0px);height:100vh}
.logo{display:flex;align-items:center;gap:10px;padding:0 8px 18px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:10px}
.logo .mark{width:40px;height:40px;border-radius:8px;background:#fff;color:#1f4d3f;display:grid;place-items:center;font:600 18px var(--display)}
.logo b{font:600 20px var(--display);letter-spacing:.5px;display:block}
.logo small{font:500 9px var(--mono);letter-spacing:.3px;opacity:.75;white-space:nowrap}
.nav-label{font:600 11px var(--body);letter-spacing:1.4px;color:#f0c75e;padding:12px 10px 4px}
.nav{display:flex;align-items:center;gap:10px;padding:10px;border-radius:8px;background:none;border:0;color:inherit;text-align:left;cursor:pointer;width:100%}
.nav:hover{background:rgba(255,255,255,.08)}
.nav[aria-current="page"]{background:rgba(255,255,255,.16);font-weight:600}
.nav svg{flex:none}
.side .foot{margin-top:auto;font:500 10px var(--mono);opacity:.6;padding:0 10px}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.top{background:var(--brand);color:var(--brand-ink);padding-block:16px;padding-left:max(24px,env(safe-area-inset-left,0px));padding-right:max(24px,env(safe-area-inset-right,0px));display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;border-left:1px solid rgba(255,255,255,.08)}
.top h1{margin:0;font:500 22px var(--display);letter-spacing:.4px;text-wrap:balance}
.top .crumb{font-size:12px;opacity:.75}
.content{padding-block:24px 64px;padding-left:max(24px,env(safe-area-inset-left,0px));padding-right:max(24px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:20px;max-width:1440px;width:100%}
@media (max-width:900px){
  .app{flex-direction:column}
  .side{width:auto;height:auto;position:static;flex-direction:row;flex-wrap:wrap;align-items:center;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:12px}
  .logo{border:0;padding:0 8px 0 0;margin:0}
  .nav-label,.side .foot{display:none}
  .nav{width:auto;padding:8px 10px}
  .top,.content{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
}
/* Common */
.card{background:var(--surface);border-radius:12px;box-shadow:var(--shadow);padding:20px 22px;display:flex;flex-direction:column;gap:14px;min-width:0}
.sec-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.sec-head h2,.sec-head h3{margin:0;font:500 17px var(--display);letter-spacing:.5px;color:var(--accent);text-transform:uppercase}
.bar{background:var(--brand-2);color:#fff;border-radius:10px;padding:12px 18px;display:flex;align-items:center;gap:10px}
.bar h2{margin:0;font:500 18px var(--display);letter-spacing:.6px;text-transform:uppercase}
.muted{color:var(--muted)}
.small{font-size:12px}
.mono{font-family:var(--mono);font-size:12px}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.kpi{background:var(--surface);border-radius:12px;box-shadow:var(--shadow);padding:16px 18px;display:flex;flex-direction:column;gap:4px;border-top:4px solid var(--brand-2)}
.kpi .k{font-size:12px;color:var(--muted);letter-spacing:.3px}
.kpi .v{font:500 30px var(--display);font-variant-numeric:tabular-nums}
.kpi.warn{border-top-color:var(--warn)} .kpi.bad{border-top-color:var(--bad)} .kpi.good{border-top-color:var(--good)}
.chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--brand-soft);color:var(--accent)}
.chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.chip.good{background:var(--good-bg);color:var(--good)} .chip.warn{background:var(--warn-bg);color:var(--warn)} .chip.bad{background:var(--bad-bg);color:var(--bad)} .chip.info{background:var(--info-bg);color:var(--info)}
.sample{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--info);background:var(--info-bg);border-radius:6px;padding:4px 10px}
.btn{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 16px;border-radius:8px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-weight:600;font-size:13px;color:var(--accent)}
.btn:hover{background:var(--surface-2)}
.btn.p{background:var(--brand-2);border-color:var(--brand-2);color:#fff}
.btn.p:hover{filter:brightness(1.06)}
.btn.add{border:1.5px dashed var(--brand-2);background:var(--surface-2)}
.btn.danger{color:var(--bad);border-color:var(--bad-bg)}
.icon-btn{width:36px;height:36px;border-radius:6px;border:1px solid var(--border);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted)}
.icon-btn.del{color:var(--bad)}
/* Tables */
.tbl-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:8px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{background:var(--brand-soft);color:var(--ink);font-weight:600;text-align:left;padding:10px;font-size:12px;white-space:nowrap;border-bottom:1px solid var(--border)}
td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:middle}
tr:last-child td{border-bottom:0}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr.click{cursor:pointer} tr.click:hover td{background:var(--surface-2)}
.in{width:100%;min-height:38px;border:1px solid var(--border);border-radius:6px;padding:0 10px;background:var(--surface);font-size:13px}
textarea.in{padding:8px 10px;min-height:70px;resize:vertical}
.in.r{text-align:right}
.chk{width:18px;height:18px;accent-color:var(--brand-2)}
/* Asset header */
.asset-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:start}
@media (max-width:700px){.asset-head{grid-template-columns:1fr}}
.asset-head h2{margin:0;font:500 26px var(--display);letter-spacing:.3px;text-wrap:balance}
.meta{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px;color:var(--muted)}
.meta b{color:var(--ink);font-weight:600}
.qr{width:96px;height:96px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);display:grid;place-items:center}
.life{display:flex;gap:0;overflow-x:auto;padding-bottom:4px}
.step{flex:1 0 110px;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;font-size:12px;color:var(--muted);text-align:center}
.step::before{content:"";position:absolute;top:11px;left:-50%;right:50%;height:3px;background:var(--border);z-index:0}
.step:first-child::before{display:none}
.step .dot{width:24px;height:24px;border-radius:50%;border:3px solid var(--border);background:var(--surface);z-index:1}
.step.done{color:var(--ink)} .step.done .dot{background:var(--brand-2);border-color:var(--brand-2)} .step.done::before{background:var(--brand-2)}
.step.now .dot{border-color:var(--brand-2);box-shadow:0 0 0 4px var(--brand-soft)} .step.now{color:var(--accent);font-weight:600}
.step.alt .dot{border-color:var(--warn);background:var(--warn-bg)}
.tabs{display:flex;gap:4px;overflow-x:auto;border-bottom:2px solid var(--border);scrollbar-width:thin}
.tab{border:0;background:none;padding:10px 14px;cursor:pointer;font-weight:500;color:var(--muted);white-space:nowrap;border-bottom:3px solid transparent;margin-bottom:-2px;font-size:13px}
.tab[aria-selected="true"]{color:var(--accent);border-bottom-color:var(--brand-2);font-weight:600}
.tab .n{font:500 11px var(--mono);background:var(--brand-soft);border-radius:999px;padding:1px 7px;margin-left:6px}
/* Photos */
.photos{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
@media (max-width:1000px){.photos{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.photos{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ph{border:1.5px dashed var(--border);border-radius:10px;background:var(--surface-2);aspect-ratio:4/3;max-width:100%;position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:10px;cursor:pointer}
.ph.has{border-style:solid;padding:0;cursor:default}
.ph img{width:100%;height:100%;object-fit:cover}
.ph input{position:absolute;inset:0;opacity:0;cursor:pointer}
.ph .lbl{font-size:12px;font-weight:600}
.ph .req{font-size:11px;color:var(--muted)}
.ph .tools{position:absolute;top:8px;right:8px;display:flex;gap:6px}
.ph .tools button{width:30px;height:30px;border-radius:6px;border:0;display:grid;place-items:center;cursor:pointer;color:#fff}
.ph .cap{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.65));color:#fff;font-size:12px;padding:16px 10px 8px;text-align:left}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px 18px}
.kv div{display:flex;flex-direction:column;gap:2px;min-width:0}
.kv span{font-size:11px;color:var(--muted);letter-spacing:.4px;text-transform:uppercase}
.kv b{font-weight:500;overflow-wrap:anywhere}
.flags{display:flex;flex-wrap:wrap;gap:8px}
/* Modal */
.scrim{position:fixed;inset:0;background:rgba(10,25,20,.55);display:flex;align-items:flex-start;justify-content:center;padding:max(24px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px));overflow-y:auto;z-index:50}
.modal{background:var(--surface);border-radius:14px;width:min(760px,100%);box-shadow:0 20px 50px rgba(0,0,0,.3);display:flex;flex-direction:column}
.modal header{background:var(--brand-2);color:#fff;padding:14px 20px;border-radius:14px 14px 0 0;display:flex;justify-content:space-between;align-items:center;gap:10px}
.modal header h3{margin:0;font:500 18px var(--display);letter-spacing:.5px}
.modal form{padding:20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.modal label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:500}
.modal label.wide{grid-column:1/-1}
.modal .acts{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px;padding-top:6px}
.lightbox img{width:100%;max-height:75vh;object-fit:contain;background:#000;border-radius:0 0 14px 14px}
.toast{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:var(--brand);color:#fff;padding:10px 18px;border-radius:8px;font-size:13px;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.note{font-size:12px;color:var(--muted);line-height:1.6;max-width:90ch}
.split{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.bars{display:flex;flex-direction:column;gap:10px}
.barrow{display:grid;grid-template-columns:140px minmax(0,1fr) 40px;gap:10px;align-items:center;font-size:13px}
.track{height:10px;border-radius:999px;background:var(--brand-soft);overflow:hidden}
.track i{display:block;height:100%;background:var(--brand-2);border-radius:999px}
.sumbox{background:var(--brand);color:#fff;border-radius:12px;padding:22px;display:flex;flex-wrap:wrap;gap:28px}
.sumbox .l{flex:1 1 380px;min-width:0;display:flex;flex-direction:column}
.srow{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.15);font-size:14px;font-variant-numeric:tabular-nums}
.sumbox .r{flex:1 1 260px;display:flex;flex-direction:column;gap:12px;justify-content:center}
.tot{background:var(--brand-2);border-radius:10px;padding:16px 18px}
.tot .v{font:500 32px var(--display);font-variant-numeric:tabular-nums}
.mini{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.mini div{background:rgba(255,255,255,.1);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;font-size:12px}
.mini b{font-size:16px;font-variant-numeric:tabular-nums}
.att{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--accent);font-size:12px;cursor:pointer;white-space:nowrap;max-width:170px;overflow:hidden;text-overflow:ellipsis}
.att input{display:none}
.att.ok{background:var(--surface-2);border-color:var(--brand-2)}
.ref{display:flex;flex-direction:column;gap:10px}
.ref h4{margin:0;font:500 15px var(--display);letter-spacing:.4px;text-transform:uppercase;color:var(--accent)}
.ref ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;max-width:90ch}
/* QR, label, scan */
.qr{cursor:pointer;color:var(--ink)}
.label-paper{background:#fff;color:#111;border:1px solid #cfcfcf;border-radius:6px;display:flex;gap:3%;align-items:center;padding:3%;box-shadow:0 2px 6px rgba(0,0,0,.12);font-family:var(--body);overflow:hidden;max-width:100%}
.label-paper svg{flex:none;height:100%;width:auto}
.label-paper .lt{display:flex;flex-direction:column;gap:2px;min-width:0;line-height:1.15}
.label-paper .co{font:600 1em var(--display);letter-spacing:.04em;color:#1f4d3f}
.label-paper .nm{font-weight:600}
.label-paper .mn{font-family:var(--mono)}
.label-paper .hint{color:#555}
.cfg-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:1100px){.cfg-grid{grid-template-columns:1fr}}
.sticky{position:sticky;top:calc(16px + env(safe-area-inset-top,0px));display:flex;flex-direction:column;gap:16px}
@media (max-width:1100px){.sticky{position:static}}
.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;flex:none}
.seg button{border:0;background:var(--surface);padding:6px 10px;font-size:12px;cursor:pointer;color:var(--muted);min-height:32px}
.seg button+button{border-left:1px solid var(--border)}
.seg button[aria-pressed="true"]{background:var(--brand-2);color:#fff;font-weight:600}
.frow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}
.frow:last-child{border-bottom:0}
.fgroup{font:500 13px var(--display);letter-spacing:.6px;text-transform:uppercase;color:var(--muted);padding-top:12px}
.phone{width:min(360px,100%);margin:0 auto;border:10px solid #1b1f1e;border-radius:34px;background:#f4f7f6;color:#14201c;overflow:hidden;box-shadow:0 12px 30px rgba(0,0,0,.25)}
.phone .ph-top{background:#1f4d3f;color:#fff;padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px}
.phone .ph-top .co{font:500 12px var(--display);letter-spacing:1px;opacity:.8}
.phone .ph-top h3{margin:0;font:500 20px var(--display);letter-spacing:.3px}
.phone .ph-body{padding:12px 14px 18px;display:flex;flex-direction:column;gap:10px;max-height:560px;overflow-y:auto}
.phone .blk{background:#fff;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.phone .blk h4{margin:0 0 4px;font:500 12px var(--display);letter-spacing:.8px;text-transform:uppercase;color:#5b6e66}
.phone .r{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:3px 0}
.phone .r span:first-child{color:#5b6e66}
.phone .r span:last-child{text-align:right;font-weight:500;overflow-wrap:anywhere}
.phone .act{min-height:44px;border-radius:10px;border:0;font:600 14px var(--body);cursor:pointer}
.phone .act.p{background:#2f7f73;color:#fff}
.phone .act.s{background:#fff;color:#1f4d3f;border:1px solid #cfdcd7}
.phone .lock{font-size:12px;color:#5b6e66;text-align:center;padding:4px}
.phone img{border-radius:8px;aspect-ratio:4/3;object-fit:cover;width:100%}
.phone .chip{background:#e3efeb;color:#1f6b5c}
.phone .chip.good{background:#e3f4ea;color:#1e7a46}.phone .chip.warn{background:#fdf0d8;color:#9a5b00}.phone .chip.bad{background:#fbe7e6;color:#b0302f}.phone .chip.info{background:#e5eefa;color:#2a5d9a}
.urlbox{font-family:var(--mono);font-size:12px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:8px 10px;overflow-wrap:anywhere}
.sheet{display:flex;flex-wrap:wrap;gap:10px;padding:16px;background:var(--surface-2);max-height:60vh;overflow:auto}
#printArea{display:none}
.stack{display:flex;height:14px;border-radius:999px;overflow:hidden;background:var(--brand-soft);min-width:160px}
.stack span{display:block;height:100%}
.stack span+span{border-left:1px solid var(--surface)}
.legend{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:12px;color:var(--muted)}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-2px}
.tatin{width:90px}
/* Section rail: TAMS-style buttons fixed to the right edge */
.content.has-rail{padding-right:calc(84px + env(safe-area-inset-right,0px))}
.rail{position:fixed;right:0;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:6px;z-index:20;padding-right:env(safe-area-inset-right,0px)}
.rail button{position:relative;width:54px;height:44px;border:0;border-radius:10px 0 0 10px;background:var(--brand);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:-2px 2px 6px rgba(10,30,25,.25);transition:width .15s,background .15s}
.rail button:hover{background:var(--brand-2);width:60px}
.rail button[aria-current="true"]{background:var(--brand-2);color:var(--gold);width:64px;box-shadow:-3px 3px 10px rgba(10,30,25,.35),inset 4px 0 0 var(--gold)}
.rail .tip{position:absolute;right:calc(100% + 10px);top:50%;transform:translateY(-50%);background:var(--brand);color:#fff;padding:6px 12px;border-radius:6px;white-space:nowrap;font:500 12px var(--body);opacity:0;pointer-events:none;transition:opacity .12s;box-shadow:0 4px 12px rgba(0,0,0,.2)}
.rail button:hover .tip,.rail button:focus-visible .tip{opacity:1}
.rail .rl{display:none}
@media (max-height:720px){.rail button{height:36px}.rail{gap:4px}}
@media (max-width:900px){
  .content.has-rail{padding-right:max(16px,env(safe-area-inset-right,0px));padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
  .rail{top:auto;bottom:0;left:0;transform:none;flex-direction:row;gap:4px;overflow-x:auto;background:var(--brand);padding:6px max(8px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px));box-shadow:0 -4px 12px rgba(0,0,0,.2)}
  .rail button,.rail button:hover,.rail button[aria-current="true"]{flex:none;width:64px;height:54px;border-radius:8px;box-shadow:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
  .rail button[aria-current="true"]{box-shadow:inset 0 -3px 0 var(--gold)}
  .rail .tip{display:none}
  .rail .rl{display:block;font:500 10px var(--body);white-space:nowrap}
}
/* Alerts dashboard */
.dashseg{align-self:flex-start}
.dashseg button{min-height:40px;padding:0 18px;font-size:13px}
.banner{border-radius:10px;padding:12px 16px;font-size:13px;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.banner.bad{background:var(--bad-bg);color:var(--bad);border:1px solid var(--bad)}
.linkbtn{border:0;background:none;padding:0;color:var(--accent);font:inherit;font-weight:600;cursor:pointer;text-align:left}
.linkbtn:hover{text-decoration:underline}
.banner .linkbtn{color:var(--bad);text-decoration:underline}
.atiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.atile{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:14px 16px;display:flex;flex-direction:column;gap:4px;text-align:left;font:inherit;color:inherit;cursor:pointer;border-top:5px solid var(--border);min-width:0}
.atile .k{font-size:12px;font-weight:600;letter-spacing:.3px;color:var(--muted);text-transform:uppercase}
.atile .v{font:500 34px var(--display);font-variant-numeric:tabular-nums;line-height:1.1}
.atile .small{color:var(--muted)}
.atile[aria-pressed="true"]{box-shadow:0 0 0 3px var(--brand-soft),var(--shadow);border-color:var(--brand-2)}
.atile.ov{border-top-color:var(--bad)} .atile.ov .v{color:var(--bad)}
.atile.ur{border-top-color:#e0662b} .atile.ur .v{color:#c4501a}
.atile.act{border-top-color:var(--warn)} .atile.act .v{color:var(--warn)}
.atile.rad{border-top-color:var(--info)} .atile.rad .v{color:var(--info)}
.atile.sch{border-top-color:var(--good)} .atile.sch .v{color:var(--good)}
.atile.score{cursor:default;border-top-color:var(--brand-2)}
.atile.ov{grid-row:span 1}
.ageing{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;height:64px;margin-top:6px;align-items:end}
.ageing span{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:2px;font-size:10px}
.ageing i{display:block;width:100%;min-height:2px;background:var(--bad);border-radius:3px 3px 0 0;opacity:.85}
.ageing b{font-size:11px;font-variant-numeric:tabular-nums}
.ageing em{font-style:normal;color:var(--muted);white-space:nowrap}
.runway{min-width:900px;border-collapse:separate;border-spacing:4px}
.runway th{background:none;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.4px;border:0;padding:4px;text-align:center;white-space:nowrap}
.runway tbody th{text-align:left;color:var(--ink);text-transform:none;letter-spacing:0;font-size:13px;min-width:180px}
.runway td{padding:0;border:0;text-align:center}
.rw{display:grid;place-items:center;width:100%;min-width:38px;height:38px;border-radius:7px;border:0;font:600 13px var(--body);font-variant-numeric:tabular-nums;cursor:pointer}
.rw.empty{background:var(--surface-2);cursor:default}
.rw.sel{outline:3px solid var(--ink);outline-offset:1px}
.rw.ov,.rwk.ov,.spill.ov{background:var(--bad);color:#fff}
.rw.ur,.rwk.ur,.spill.ur{background:#e0662b;color:#fff}
.rw.act,.rwk.act,.spill.act{background:var(--warn-bg);color:var(--warn);box-shadow:inset 0 0 0 1.5px var(--warn)}
.rw.rad,.rwk.rad,.spill.rad{background:var(--info-bg);color:var(--info)}
.rw.sch,.rwk.sch,.spill.sch{background:var(--good-bg);color:var(--good)}
.rw.snz,.spill.snz{background:var(--surface-2);color:var(--muted);box-shadow:inset 0 0 0 1px var(--border)}
.rw.up,.rwk.up,.spill.up{background:var(--brand-soft);color:var(--muted)}
.rwk{display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:6px;vertical-align:-2px}
.spill{display:inline-flex;align-items:center;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;white-space:nowrap}
.inbox{display:flex;flex-direction:column;gap:8px}
.arow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--border);border-left:5px solid var(--border);border-radius:10px;padding:10px 14px;background:var(--surface)}
.arow.ov{border-left-color:var(--bad)} .arow.ur{border-left-color:#e0662b} .arow.act{border-left-color:var(--warn)} .arow.rad{border-left-color:var(--info)} .arow.sch{border-left-color:var(--good)} .arow.snz{border-left-color:var(--muted)}
.ainfo{display:flex;flex-direction:column;gap:3px;min-width:0}
.atop{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;font-size:13px}
.aname{font-size:14px;overflow-wrap:anywhere}
.aacts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.aacts .btn{min-height:34px;padding:0 12px}
@media (max-width:700px){.arow{grid-template-columns:1fr}.aacts{justify-content:flex-start}}
.actrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;border:0;border-bottom:1px solid var(--border);background:none;padding:8px 0;text-align:left;font:inherit;color:inherit;cursor:pointer}
.actrow>span:nth-child(2){grid-column:1}
.actrow>span:nth-child(3){grid-column:2;grid-row:1 / span 2;display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.esc{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:13px}
.win{position:relative;display:flex;justify-content:flex-end;height:14px;background:var(--surface-2);border-radius:999px;overflow:hidden;margin-right:34px}
.win i{display:block;height:100%}
.win i.rad{background:var(--info-bg);box-shadow:inset 0 0 0 1px var(--info)} .win i.act{background:var(--warn)} .win i.ur{background:#e0662b}
.win span{position:absolute;right:-34px;top:-2px;font-size:11px;color:var(--muted)}
/* Filter bar */
.fbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;position:relative}
.dd{position:relative}
.ddbtn{display:flex;align-items:center;gap:8px;min-height:42px;padding:4px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink);cursor:pointer;text-align:left;max-width:100%}
.ddbtn:disabled{opacity:.55;cursor:not-allowed}
.ddbtn .ddk{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-weight:600}
.ddbtn .ddv{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.ddbtn[aria-expanded="true"]{border-color:var(--brand-2);box-shadow:0 0 0 3px var(--brand-soft)}
.ddpanel{position:absolute;top:calc(100% + 6px);left:0;z-index:40;width:min(320px,calc(100vw - 32px));background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,.18);padding:10px;display:flex;flex-direction:column;gap:8px}
.ddacts{display:flex;justify-content:space-between}
.ddacts button,.ddgrp button{border:0;background:none;color:var(--accent);font-weight:600;font-size:12px;cursor:pointer;padding:4px}
.ddlist{max-height:280px;overflow-y:auto;display:flex;flex-direction:column}
.ddopt{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:8px;align-items:center;padding:7px 6px;border-radius:6px;cursor:pointer;font-size:13px}
.ddopt:hover{background:var(--surface-2)}
.ddgrp{display:flex;justify-content:space-between;align-items:center;font:500 12px var(--display);letter-spacing:.6px;text-transform:uppercase;color:var(--muted);padding:8px 6px 2px;border-top:1px solid var(--border)}
.ddgrp:first-child{border-top:0}
.ddfoot{display:flex;justify-content:flex-end}
.fclear{border:0;background:none;color:var(--bad);font-weight:600;font-size:13px;cursor:pointer;min-height:40px}
.fchips{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px}
.fchip{display:inline-flex;align-items:center;gap:6px;background:var(--brand-soft);color:var(--ink);border-radius:999px;padding:3px 4px 3px 10px;font-size:12px}
.fchip button{width:22px;height:22px;border:0;border-radius:50%;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer}
.fchip button svg{width:12px;height:12px}
.fbar.dark .fchip{background:rgba(255,255,255,.14);color:#fff}
.fbar.dark .fchip .muted,.fbar.dark .fchip button{color:#d5e8e1}
.fbar.dark .fclear{color:#ffd1cf}
.fbar.dark .seg{border-color:rgba(255,255,255,.25)}
/* Register (TAMS layout) */
.tam-head{background:var(--brand);color:#fff;border-radius:12px;padding:16px 20px;display:flex;flex-direction:column;gap:12px}
.tam-head h2{margin:0;font:500 18px var(--display);letter-spacing:.6px}
.tam-tools{display:flex;gap:8px;flex-wrap:wrap}
.tam-tools .btn{min-height:38px}
.tam-tools .t1{background:#2f7fe0;border-color:#2f7fe0;color:#fff}.tam-tools .t2{background:var(--brand-2);border-color:var(--brand-2);color:#fff}.tam-tools .t3{background:#d4a017;border-color:#d4a017;color:#1d1300}
.reg-table th{background:var(--brand);color:#fff;text-transform:uppercase;font-size:12px;letter-spacing:.4px;border-bottom:0;padding:14px 12px}
.reg-table td{padding:12px}
.reg-table a.nm{color:var(--accent);font-weight:500;text-decoration:none}
.reg-table a.nm:hover{text-decoration:underline}
.reg-table tr.sel td{background:var(--surface-2)}
.rimg{width:48px;height:48px;border-radius:6px;border:1px solid var(--border);background:var(--brand-soft);display:grid;place-items:center;overflow:hidden;color:var(--muted)}
.rimg img{width:100%;height:100%;object-fit:cover}
.bulk{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--info-bg);color:var(--info);border-radius:10px;padding:8px 12px;font-weight:600;font-size:13px}
.bulk .btn{min-height:34px}
/* Audit */
.prog{height:8px;border-radius:999px;background:var(--brand-soft);overflow:hidden;margin:4px 0}
.prog i{display:block;height:100%;background:var(--brand-2);border-radius:999px}
.thumbs{display:flex;gap:4px;align-items:center}
.thumbs img,.thumbs button{width:34px;height:34px;border-radius:6px;object-fit:cover;border:1px solid var(--border);padding:0;overflow:hidden;background:none;cursor:pointer}
.thumbs button img{border:0;width:100%;height:100%}
.regref{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;background:var(--surface-2);border-radius:10px;padding:12px}
.regref img,.regph{width:120px;max-width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;flex:none}
.regph{display:grid;place-items:center;background:var(--brand-soft);color:var(--muted);font-size:12px;text-align:center;padding:6px}
.scanbox{grid-column:1/-1;background:#0f1a17;color:#cfe;border-radius:12px;padding:18px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;font-size:12px}
.scanframe{width:150px;height:150px;border:3px solid var(--gold);border-radius:14px;box-shadow:0 0 0 999px rgba(0,0,0,.15) inset}
/* Section dashboards */
.sd-title{margin:0;font:600 30px var(--display);letter-spacing:.3px;color:var(--brand-2)}
.sd-title span{color:#b7962b}
.sd-filter{gap:12px}
.sd-k{font-size:12px;font-weight:600;letter-spacing:1.5px;color:var(--brand-2);text-transform:uppercase}
.sd-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}
.sd-card{border:2px solid var(--brand-2);border-radius:14px;padding:16px 20px;background:var(--surface);display:flex;flex-direction:column;gap:10px;min-width:0}
.sd-card:nth-child(2){border-color:#b7962b}
.sd-ct{font-size:13px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase;border-bottom:1px solid var(--border);padding-bottom:10px}
.sd-stats{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
.sd-stats div{display:flex;flex-direction:column;gap:4px;padding:0 14px;border-left:1px solid var(--border);min-width:0}
.sd-stats div:first-child{border-left:0;padding-left:0}
.sd-stats span{font-size:12px;color:var(--muted)}
.sd-stats b{font:500 28px var(--display);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.sd-stats b.good{color:var(--good)} .sd-stats b.warn{color:var(--warn)} .sd-stats b.bad{color:var(--bad)}
@media (max-width:560px){.sd-stats{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.sd-stats div{border-left:0;padding:0}}
.sd-pills{display:flex;flex-wrap:wrap;gap:10px}
.sd-pills button{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 18px;border-radius:10px;border:1.5px solid var(--border);background:var(--surface);color:var(--accent);font:600 14px var(--body);cursor:pointer}
.sd-pills button span{background:var(--brand-soft);color:var(--ink);border-radius:999px;padding:1px 9px;font-size:12px;font-variant-numeric:tabular-nums}
.sd-pills button[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:#fff}
.sd-pills button[aria-pressed="true"] span{background:rgba(255,255,255,.2);color:#fff}
.sd-table td{vertical-align:middle}
.sd-view{min-height:34px;padding:0 12px;background:var(--info-bg);border-color:var(--info);color:var(--info)}
/* Qualification stages */
.qstages{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}
.qstage{border:1px solid var(--border);border-top:4px solid var(--border);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;background:var(--surface);min-width:0}
.qstage .qh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qstage .qdot{width:12px;height:12px;border-radius:50%;background:var(--border);flex:none}
.qstage.done{border-top-color:var(--good)} .qstage.done .qdot{background:var(--good)}
.qstage.pend{border-top-color:var(--warn)} .qstage.pend .qdot{background:var(--warn)}
.qstage.fail{border-top-color:var(--bad)} .qstage.fail .qdot{background:var(--bad)}
.qstage.nr{background:var(--surface-2)} .qstage.nr b{color:var(--muted);text-decoration:line-through}
.qstage.und{border-style:dashed}
/* Notes */
.note-compose{display:flex;flex-direction:column;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.note-compose textarea{min-height:64px}
.notes{display:flex;flex-direction:column;gap:10px}
.note-item{border:1px solid var(--border);border-radius:10px;padding:10px 14px;display:flex;flex-direction:column;gap:6px;background:var(--surface)}
.note-item.pinned{border-color:var(--gold);box-shadow:inset 4px 0 0 var(--gold)}
.note-item.done .nt{color:var(--muted)}
.note-item .nh{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:13px}
.note-item .nt{white-space:pre-wrap;line-height:1.55;max-width:90ch;overflow-wrap:anywhere}
.note-item .na{display:flex;gap:6px;flex-wrap:wrap}
/* Uploads */
.dz{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;border:1.5px dashed var(--brand-2);border-radius:10px;background:var(--surface-2);padding:12px 14px;cursor:pointer;position:relative}
.dz.over{background:var(--brand-soft)}
.dz input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.dz .dz-t{display:flex;flex-direction:column;gap:2px;flex:1 1 220px;min-width:0}
.dz .dz-t b{font-size:13px;color:var(--accent)}
.dz .dz-t span{font-size:12px;color:var(--muted)}
.dz select{width:auto;max-width:100%}
.flist{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.fitem{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:12px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface)}
.fitem:last-child{border-bottom:0}
.fitem .thumb{width:40px;height:40px;border-radius:6px;background:var(--brand-soft);display:grid;place-items:center;overflow:hidden;color:var(--accent);font:600 10px var(--mono)}
.fitem .thumb img{width:100%;height:100%;object-fit:cover}
.fitem .nm{font-weight:500;overflow-wrap:anywhere}
.fitem .mt{font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.fitem .ac{display:flex;gap:6px;align-items:center}
.fbtn{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--accent);font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.fbtn.has{background:var(--surface-2);border-color:var(--brand-2)}
@media (max-width:700px){.eng-grid{grid-template-columns:1fr!important}}
fieldset:disabled .in,fieldset:disabled .btn.add,fieldset:disabled .icon-btn{opacity:.7}
/* ===== Print documents (always paper: fixed ink colours, both themes) ===== */
.pv{position:fixed;inset:0;z-index:80;background:#4b5552;display:flex;flex-direction:column}
.pv-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:#152520;color:#fff;padding-top:calc(10px + env(safe-area-inset-top,0px));padding-bottom:10px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.pv-bar h3{margin:0;font:500 17px var(--display);letter-spacing:.5px;flex:1 1 240px;min-width:0}
.pv-meta{font:500 11px var(--mono);color:#b9cbc4}
.pv-note{font-size:12px;color:#ffe3a3;max-width:46ch}
.pv-bar .btn{min-height:38px}
.pv-scroll{flex:1;overflow:auto;padding:28px 16px calc(48px + env(safe-area-inset-bottom,0px))}
.pv-page{width:210mm;max-width:100%;margin:0 auto;background:#fff;color:#1b2622;box-shadow:0 10px 40px rgba(0,0,0,.45);padding:12mm 12mm 14mm;overflow-x:auto}
.pv-page.land{width:297mm}
.pv-run{display:flex;justify-content:space-between;gap:10px;font:600 7pt Oswald,Arial,sans-serif;letter-spacing:1.2pt;color:#1f4d3f;border-bottom:.4pt solid #cfd8d4;padding-bottom:2mm;margin-bottom:5mm}
.pv-run span:last-child{font:400 7pt Poppins,Arial,sans-serif;letter-spacing:0;color:#5f6f69}
.pdoc{--pk:#1b2622;--pg:#1f4d3f;--pg2:#2f7f73;--pgold:#a8862a;--prule:#cfd8d4;--pfill:#f2f6f4;--pmut:#5f6f69;color:var(--pk);font:400 8.6pt/1.45 Poppins,'Segoe UI',Arial,sans-serif;font-variant-numeric:tabular-nums;-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff}
.pdoc *{box-sizing:border-box}
.pdoc th,.pdoc td{background:none;border:0;color:inherit;font-size:inherit;letter-spacing:normal;text-transform:none;white-space:normal}
.p-tbl .nm{min-width:38mm}
.pdoc .mono{font-family:'JetBrains Mono',Menlo,monospace;font-size:.92em}
.p-mut{color:var(--pmut)}
/* masthead */
.p-mast{display:flex;flex-direction:column;gap:4mm;margin-bottom:6mm}
.p-brand{display:flex;align-items:center;gap:3mm;padding-bottom:3mm;border-bottom:1.2pt solid var(--pg)}
.p-leaf{width:9mm;height:9mm;flex:none}
.p-brand b{display:block;font:600 11pt Oswald,Arial,sans-serif;letter-spacing:2.4pt;color:var(--pg)}
.p-brand span{font-size:7pt;color:var(--pmut);letter-spacing:.4pt}
.p-brand .p-ctl{margin-left:auto;font:600 6.5pt Poppins,Arial,sans-serif;letter-spacing:1.4pt;text-transform:uppercase;color:var(--pgold);border:.8pt solid var(--pgold);padding:1mm 2.5mm;border-radius:1mm}
.p-titlerow{display:flex;justify-content:space-between;align-items:flex-end;gap:6mm}
.p-kicker{font:600 7pt Poppins,Arial,sans-serif;letter-spacing:2pt;text-transform:uppercase;color:var(--pgold)}
.p-titles h1{margin:1mm 0 0;font:500 24pt/1.05 Oswald,Arial,sans-serif;color:var(--pg);letter-spacing:.2pt;text-wrap:balance}
.p-subt{margin-top:1.5mm;font-size:10pt;color:var(--pk)}
.p-qr{display:flex;flex-direction:column;align-items:center;gap:1mm;flex:none;border:.6pt solid var(--prule);padding:1.5mm;border-radius:1.5mm}
.p-qr svg{width:24mm;height:24mm}
.p-qr span{font:500 6.5pt 'JetBrains Mono',monospace;color:var(--pmut)}
.p-ident{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));background:var(--pfill);border-top:.8pt solid var(--pg);border-bottom:.8pt solid var(--pg)}
.p-ident.scope{grid-template-columns:2fr repeat(4,minmax(0,1fr))}
.p-ident.scope.solo{grid-template-columns:1fr}
.p-tbl .loc{min-width:28mm}
.p-ident div{padding:2mm 2.5mm;border-left:.4pt solid var(--prule);min-width:0}
.p-ident div:first-child{border-left:0}
.p-ident dt{font:600 6pt Poppins,Arial,sans-serif;letter-spacing:1pt;text-transform:uppercase;color:var(--pmut)}
.p-ident dd{margin:.6mm 0 0;font-weight:600;font-size:8.6pt;overflow-wrap:anywhere}
.p-dc{width:100%;border-collapse:collapse;font-size:6.8pt}
.p-dc{border-top:.4pt solid var(--prule);border-bottom:.4pt solid var(--prule)}
.p-dc th{font-weight:600;color:var(--pmut);text-align:left;padding:1mm 1.5mm;white-space:nowrap;letter-spacing:.3pt}
.p-dc td{padding:1mm 1.5mm;border-right:.4pt solid var(--prule)}
.p-dc td:last-child{border-right:0;color:var(--pmut)}
/* headings */
.p-hwrap{break-after:avoid}
.p-h{display:flex;align-items:baseline;gap:3mm;margin:0 0 3mm;font:500 15pt Oswald,Arial,sans-serif;color:var(--pg);letter-spacing:.3pt;border-bottom:.6pt solid var(--pg);padding-bottom:1.5mm}
.p-n{font:600 15pt Oswald,Arial,sans-serif;color:var(--pgold);min-width:7mm}
.p-lead{margin:0 0 3mm;color:var(--pmut)}
.p-h3{margin:5mm 0 2mm;font:600 8pt Poppins,Arial,sans-serif;letter-spacing:1.6pt;text-transform:uppercase;color:var(--pg);display:flex;align-items:center;gap:2.5mm;break-after:avoid}
.p-h3::after{content:"";flex:1;height:.4pt;background:var(--prule)}
.p-body > .p-h3:first-child{margin-top:0}
/* key-values */
.p-kv{display:grid;margin:0;border-top:.4pt solid var(--prule)}
.p-kv.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.p-kv.c3{grid-template-columns:repeat(3,minmax(0,1fr))}.p-kv.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
.p-kv div{padding:1.6mm 2mm 1.6mm 0;border-bottom:.4pt solid var(--prule);min-width:0;break-inside:avoid}
.p-kv dt{font:600 6pt Poppins,Arial,sans-serif;letter-spacing:.9pt;text-transform:uppercase;color:var(--pmut)}
.p-kv dd{margin:.5mm 0 0;font-size:8.6pt;overflow-wrap:anywhere}
/* stats */
.p-stats{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);border:.8pt solid var(--pg);border-radius:1.5mm;margin:1mm 0 2mm;break-inside:avoid}
.p-stats div{padding:2.5mm 3mm;border-left:.4pt solid var(--prule);display:flex;flex-direction:column;gap:.5mm}
.p-stats div:first-child{border-left:0}
.p-stats b{font:500 17pt/1 Oswald,Arial,sans-serif;color:var(--pg)}
.p-stats span{font-size:6.6pt;color:var(--pmut);text-transform:uppercase;letter-spacing:.7pt;font-weight:600}
.p-stats .good b{color:#1e7a46}.p-stats .warn b{color:#9a5b00}.p-stats .bad b{color:#b0302f}
/* tables */
.p-tbl{width:100%;border-collapse:collapse;margin:1mm 0 2mm;font-size:7.8pt}
.p-tbl thead{display:table-header-group}
.p-tbl th{background:var(--pg);color:#fff;font:600 6.4pt Poppins,Arial,sans-serif;letter-spacing:.8pt;text-transform:uppercase;text-align:left;padding:1.8mm 2mm;vertical-align:bottom}
.p-tbl td{padding:1.6mm 2mm;border-bottom:.4pt solid var(--prule);vertical-align:top;overflow-wrap:anywhere}
.p-tbl tbody tr:nth-child(even) td{background:#f7faf8}
.p-tbl tr{break-inside:avoid}
.p-tbl .r{text-align:right;white-space:nowrap}
.p-tbl tfoot td{border-top:1pt solid var(--pg);border-bottom:0;background:var(--pfill);font-weight:600;padding:2mm}
.p-empty{margin:1mm 0 2mm;padding:3mm;border:.6pt dashed var(--prule);color:var(--pmut);text-align:center;font-style:italic}
.p-note{margin:2mm 0;padding:2mm 3mm;border-left:2pt solid var(--pgold);background:#fbf8ef;font-size:7.8pt;break-inside:avoid}
.ps{font-weight:600;white-space:nowrap}
.ps.good{color:#1e7a46}.ps.warn{color:#9a5b00}.ps.bad{color:#b0302f}.ps.info{color:#2a5d9a}
.p-bar{display:inline-block;width:40mm;height:2.4mm;background:var(--pfill);border:.4pt solid var(--prule);vertical-align:middle}
.p-bar i{display:block;height:100%;background:var(--pg2)}
.p-fill{display:inline-block;min-width:18mm;border-bottom:.6pt solid var(--pk);height:4mm}
/* photos */
.p-photos{display:grid;gap:2.5mm;margin:1mm 0 2mm}
.p-photos.c5{grid-template-columns:repeat(5,minmax(0,1fr))}.p-photos.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
.p-photos figure{margin:0;break-inside:avoid}
.p-photos img,.p-noph{width:100%;aspect-ratio:4/3;object-fit:cover;border:.6pt solid var(--prule);border-radius:1mm;display:block}
.p-noph{display:grid;place-items:center;background:repeating-linear-gradient(45deg,#f6f8f7 0 3mm,#eef2f0 3mm 6mm);color:var(--pmut);font-size:7pt}
.p-photos figcaption{font-size:6.6pt;color:var(--pmut);margin-top:.8mm}
.p-phset{margin-bottom:3mm;break-inside:avoid}
.p-eng{display:grid;grid-template-columns:26mm minmax(0,1fr);gap:4mm;align-items:start}
.p-eng img,.p-eng .p-noph{width:26mm;aspect-ratio:3/4;object-fit:cover;border:.6pt solid var(--prule);border-radius:1mm}
.p-eng .p-noph{height:auto}
/* toc, sections, signatures */
.p-toc ol{list-style:none;margin:0;padding:0;columns:2;column-gap:10mm}
.p-toc li{display:flex;gap:3mm;padding:1.6mm 0;border-bottom:.4pt dotted var(--prule);break-inside:avoid;font-size:9pt}
.p-toc li span{font:600 9pt Oswald,Arial,sans-serif;color:var(--pgold);min-width:6mm}
.p-sec{margin-top:4mm}
.p-sign{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8mm;margin-top:10mm;break-inside:avoid}
.p-sign div{display:flex;flex-direction:column;gap:.6mm}
.p-sl{height:12mm;border-bottom:.8pt solid var(--pk)}
.p-sign b{font-size:8pt;color:var(--pg);margin-top:1mm}
.p-sign span{font-size:6.6pt;color:var(--pmut)}
.p-endsign{break-inside:avoid;margin-top:6mm}
.p-end{margin-top:8mm;text-align:center;font:600 6.6pt Poppins,Arial,sans-serif;letter-spacing:1.4pt;text-transform:uppercase;color:var(--pmut)}
/* page breaks: real in print, drawn in preview */
.pv-page .p-newpage{border-top:1.5pt dashed #b7c3be;margin-top:10mm;padding-top:8mm;position:relative}
.pv-page .p-newpage::before{content:"New page";position:absolute;top:-3mm;left:50%;transform:translateX(-50%);background:#fff;padding:0 3mm;font:600 6.5pt Poppins,Arial,sans-serif;letter-spacing:1.2pt;text-transform:uppercase;color:#93a39d}
.pbtn{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px;border-radius:8px;border:1px solid rgba(255,255,255,.55);background:transparent;color:#fff;font:600 12px var(--body);cursor:pointer;margin-left:auto}
.pbtn:hover{background:rgba(255,255,255,.12)}
.pbtn.dark{border-color:var(--border);color:var(--accent);background:var(--surface)}
@media print{
  html,body{background:#fff!important}
  body > *:not(#printArea){display:none!important}
  #printArea{display:block!important;position:static}
  #printArea.labels{display:flex!important;flex-wrap:wrap;gap:3mm;padding:5mm}
  #printArea .label-paper{box-shadow:none;border:0.2mm dashed #999;border-radius:0;break-inside:avoid}
  #printArea.docmode .pdoc{font-size:8.6pt}
  .p-newpage{break-before:page}
  .pdoc.land .p-ident:not(.scope){grid-template-columns:repeat(6,minmax(0,1fr))}
}
html.pdfmode body > *:not(#printArea){display:none!important}
html.pdfmode #printArea{display:block!important}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ===== TAMS AMS application additions ===== */
/* Save status beside the sample tag */
.top-tags{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sync{display:inline-flex;align-items:center;gap:6px;font-size:12px;border-radius:6px;padding:4px 10px;background:rgba(255,255,255,.14);color:#fff;white-space:nowrap}
.sync::before{content:"";width:7px;height:7px;border-radius:50%;background:#7fd3a1}
.sync[data-state="saving"]::before{background:var(--gold)}
.sync[data-state="error"]{background:var(--bad-bg);color:var(--bad)}
.sync[data-state="error"]::before{background:var(--bad)}
/* Public scan page: /scan/<Asset ID> shows only the phone view, full width on the phone */
html.scanmode .side,html.scanmode .top{display:none}
html.scanmode .app{display:block}
html.scanmode .content{max-width:none;padding:0;gap:0}
html.scanmode body{margin:0;background:#f4f7f6}
.scan-public{display:flex;justify-content:center;width:100%}
html.scanmode .phone{width:100%;max-width:520px;border:0;border-radius:0;box-shadow:none;min-height:100vh}
html.scanmode .phone .ph-body{max-height:none}

/* ===== Theme switch (sun / moon, top right) ===== */
.theme-btn{width:38px;height:38px;flex:none;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.08);color:inherit;display:grid;place-items:center;cursor:pointer;transition:background .15s,transform .25s}
.theme-btn:hover{background:rgba(255,255,255,.18)}
.theme-btn:active{transform:rotate(-20deg) scale(.94)}
.theme-btn svg{grid-area:1/1}
:root[data-theme="dark"] .theme-btn .i-moon,:root[data-theme="light"] .theme-btn .i-sun{display:none}
:root[data-theme="dark"] .theme-btn .i-sun{color:var(--gold)}
body,.card,.kpi,.side,.top,.atile,.in,.btn{transition:background-color .2s,border-color .2s,color .2s}

/* ===== Bright mode: white chrome, green accents ===== */
:root[data-theme="light"]{
  --bg:#f3f7f5; --surface:#ffffff; --surface-2:#f2f8f5; --ink:#17251f; --muted:#5a6d65; --border:#dbe7e2;
  --brand-soft:#e4f1ec; --accent:#1c6656;
  --shadow:0 1px 2px rgba(20,50,40,.05),0 6px 18px rgba(20,50,40,.06); color-scheme:light}
:root[data-theme="light"] body{background:radial-gradient(1200px 500px at 85% -10%,#e2f2ec 0,transparent 60%),var(--bg);background-attachment:fixed}
:root[data-theme="light"] .side{background:#fff;color:var(--ink);border-right:1px solid var(--border);box-shadow:2px 0 12px rgba(20,50,40,.04)}
:root[data-theme="light"] .logo{border-bottom-color:var(--border)}
:root[data-theme="light"] .logo .mark{background:linear-gradient(135deg,#1f4d3f,#2f7f73);color:#fff;box-shadow:0 4px 10px rgba(31,77,63,.25)}
:root[data-theme="light"] .logo b{color:var(--brand)}
:root[data-theme="light"] .logo small{color:var(--muted);opacity:1}
:root[data-theme="light"] .nav-label{color:#a8862a}
:root[data-theme="light"] .nav{color:#3c514a}
:root[data-theme="light"] .nav:hover{background:var(--surface-2);color:var(--brand)}
:root[data-theme="light"] .nav[aria-current="page"]{background:var(--brand-soft);color:var(--brand);box-shadow:inset 3px 0 0 var(--brand-2)}
:root[data-theme="light"] .side .foot{color:var(--muted);opacity:1}
:root[data-theme="light"] .top{background:rgba(255,255,255,.85);color:var(--ink);border-left:0;border-bottom:1px solid var(--border);backdrop-filter:blur(8px)}
:root[data-theme="light"] .top h1{color:var(--brand)}
:root[data-theme="light"] .top .crumb{color:var(--muted);opacity:1}
:root[data-theme="light"] .sync{background:var(--brand-soft);color:var(--accent)}
:root[data-theme="light"] .sync::before{background:var(--good)}
:root[data-theme="light"] .theme-btn{border-color:var(--border);background:var(--surface-2);color:var(--accent)}
:root[data-theme="light"] .theme-btn:hover{background:var(--brand-soft)}
:root[data-theme="light"] .card,:root[data-theme="light"] .kpi{border:1px solid var(--border)}

/* ===== Users & roles ===== */
.avatar{width:36px;height:36px;border-radius:50%;flex:none;display:grid;place-items:center;font:600 12px var(--body);letter-spacing:.5px;background:var(--brand-soft);color:var(--accent)}
.avatar.off{opacity:.5}
.ucell{display:flex;gap:10px;align-items:center;min-width:230px}
.ucell .uemail{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}
.ucell b{font-weight:600;display:block}
.urow-acts{display:flex;gap:6px;justify-content:flex-end;align-items:center}
.urow-acts .btn{min-height:34px;padding:0 10px;font-size:12px}
tr.off td{color:var(--muted)}
.roles-grid{display:grid;grid-template-columns:290px minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:1000px){.roles-grid{grid-template-columns:1fr}}
.rolelist{display:flex;flex-direction:column;gap:8px}
.rolebtn{display:flex;flex-direction:column;gap:3px;text-align:left;font:inherit;color:inherit;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--border);border-radius:10px;padding:10px 12px}
.rolebtn:hover{background:var(--surface-2)}
.rolebtn[aria-pressed="true"]{border-color:var(--brand-2);border-left-color:var(--brand-2);box-shadow:0 0 0 3px var(--brand-soft)}
.rolebtn .rt{display:flex;justify-content:space-between;gap:8px;align-items:center;font-weight:600}
.rolebtn .rd{font-size:12px;color:var(--muted)}
.perm-tbl th,.perm-tbl td{text-align:center;padding-inline:8px}
.perm-tbl th:first-child,.perm-tbl td:first-child{text-align:left}
.perm-tbl td:last-child,.perm-tbl th:last-child{border-left:1px solid var(--border)}
.modal fieldset{grid-column:1/-1;border:1px solid var(--border);border-radius:8px;padding:10px 14px 12px;margin:0;display:flex;flex-wrap:wrap;gap:8px 18px}
.modal fieldset legend{font-size:13px;font-weight:500;padding:0 4px}
.modal fieldset label{flex-direction:row;align-items:center;gap:8px;font-weight:400}

/* ===== Signed-in user menu (top right) ===== */
.umenu{position:relative}
.ubtn{display:flex;align-items:center;gap:10px;height:42px;padding:0 10px 0 4px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.08);color:inherit;cursor:pointer;text-align:left}
.ubtn:hover{background:rgba(255,255,255,.16)}
.ubtn .avatar{width:34px;height:34px;background:var(--gold);color:#1d2b27}
.uname{display:flex;flex-direction:column;line-height:1.2;font-size:13px;font-weight:600;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uname small{font-size:11px;font-weight:400;opacity:.75}
@media (max-width:700px){.uname{display:none}}
.udrop{position:absolute;right:0;top:calc(100% + 8px);z-index:45;width:min(280px,calc(100vw - 32px));background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 40px rgba(0,0,0,.22);padding:8px;display:flex;flex-direction:column;gap:2px}
.udrop[hidden]{display:none}
.uhead{display:flex;gap:12px;align-items:center;padding:10px 10px 12px;border-bottom:1px solid var(--border);margin-bottom:4px}
.uhead .avatar{width:42px;height:42px;font-size:14px}
.uhead b{display:block;font-size:14px}
.uhead span:not(.avatar):not(.chip){display:block;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.udrop button{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:10px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:500;text-align:left;color:var(--ink)}
.udrop button:hover{background:var(--surface-2)}
.udrop button svg{color:var(--muted)}
.udrop button.out{color:var(--bad)} .udrop button.out svg{color:var(--bad)}
:root[data-theme="light"] .ubtn{border-color:var(--border);background:var(--surface-2)}
:root[data-theme="light"] .ubtn:hover{background:var(--brand-soft)}
:root[data-theme="light"] .ubtn .avatar{background:linear-gradient(135deg,#1f4d3f,#2f7f73);color:#fff}
