/* app.css — additions on top of theme.css (theme.css is used unchanged). Login page, notifications, row links, line grids, print. */
.kpis a.kpi{color:inherit}
.kpis a.kpi:hover{border-color:var(--accent)}
.btn-mini{background:var(--ink-700);border:1px solid var(--ink-line);color:#bcd3d1;border-radius:6px;padding:4px 8px;font-size:11px;cursor:pointer;text-decoration:none}
.btn-mini:hover{color:#fff}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn.danger{border-color:var(--crit);color:var(--crit)}
.pill{cursor:default}
a.pill{cursor:pointer}
.notif-wrap{position:relative}
.notif-drop{position:absolute;right:0;top:36px;width:min(380px,92vw);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);z-index:30;max-height:70vh;overflow:auto}
.notif-drop .lst>div{align-items:flex-start}
.notif-drop form{margin:0}
tr.rowlink{cursor:pointer}
tr.rowlink:hover td{background:var(--accent-soft)}
td .btn,th .btn{padding:3px 8px;font-size:11px}
.fld input[readonly]{cursor:default}
.fld input.err,.fld select.err{border-color:var(--crit)}
.frm .fld.full{grid-column:1/-1}
.lines{width:100%;min-width:0;font-size:12.4px}
.lines th{position:static}
.lines td{padding:4px 5px}
.lines input,.lines select{width:100%;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:12.4px}
.lines .rm{background:none;border:0;color:var(--crit);cursor:pointer;font-size:15px}
.lines tfoot td{font-family:"IBM Plex Mono"}
.pad .lines{margin:-4px 0}
.mini{font-size:11px;color:var(--text-3)}
.tree td.lvl1{font-weight:700}.tree td.lvl2{padding-left:24px;font-weight:600}.tree td.lvl3{padding-left:40px}.tree td.lvl4{padding-left:56px;color:var(--text-2)}.tree td.lvl5{padding-left:72px;color:var(--text-3)}
.tag-inline{font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}
.steps div[data-goto]:hover{color:var(--accent-ink)}
.chips button.on,.scroll-pick button.on{position:relative}
.pick-search{background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:6px 10px;font-size:12.5px;width:100%}
.qr{font-family:"IBM Plex Mono";font-size:11px;letter-spacing:.04em}
.denom td input{width:90px;text-align:right}
.inline-form{display:inline}
.grid-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px 16px;font-size:12.6px}
.grid-kv b{display:block;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.grid-kv span{font-family:"IBM Plex Mono";font-variant-numeric:tabular-nums}
.sig{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:30px;font-size:11px;color:var(--text-3)}
.sig div{border-top:1px solid var(--line);padding-top:6px;text-align:center}
.label-qr{display:inline-block;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:6px;width:220px;vertical-align:top;background:#fff;color:#111}
.label-qr b{display:block;font-size:14px}
.label-qr .mono{font-size:11px}
.label-qr svg{width:100%;height:auto;margin-top:6px}
/* login */
.login-body{background:var(--bg);min-height:100%}
.login-wrap{display:flex;min-height:100vh}
.login-rail{width:min(420px,42%);background:var(--ink-900);color:var(--ink-text);display:flex;flex-direction:column;padding:20px 0}
.login-rail .brand{border-bottom:1px solid var(--ink-line);padding:0 22px 16px}
.login-blurb{padding:26px 24px;flex:1}
.login-blurb h2{color:#eaf6f3;font-size:20px;margin-bottom:8px}
.login-blurb p{font-size:13px;color:#9ab2b1;line-height:1.6}
.login-blurb ul{padding-left:18px;font-size:12.6px;line-height:1.7;color:#b6cbca}
.login-blurb li b{color:#7fe8cf}
.login-foot{padding:0 24px;font-size:11px;color:var(--ink-dim)}
.login-main{flex:1;display:grid;place-items:center;padding:24px}
.login-card{width:min(400px,100%)}
@media (max-width:820px){.login-rail{display:none}.login-main{padding:16px}}
/* print */
@media print{.rail,.top,.act,.bar,.modbar,.notif-wrap,.btn{display:none!important}.body{overflow:visible;padding:0}.app{display:block;height:auto}.main{overflow:visible}.card{box-shadow:none;break-inside:avoid}body{background:#fff;color:#000}}
