:root{--paper:#f5f6f9;--card:#fff;--ink:#16233a;--ink-soft:#566073;--ink-faint:#8a93a4;--line:#e7e9ef;--line-strong:#d6dae3;--accent:#1c4e8f;--accent-deep:#143a6b;--accent-wash:#e7eef7;--gold:#f5b825;--gold-deep:#cf9500;--gold-wash:#fcf1d6;--good:#2e7d5b;--good-wash:#e6f1eb;--warn:#c07c1b;--warn-wash:#f7eddc;--crit:#b23b33;--crit-wash:#f7e5e3;--radius:10px;--shadow:0 1px 2px #16233a0d,0 8px 24px #16233a0f;--sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--mono:ui-monospace,"SF Mono","Cascadia Mono","Segoe UI Mono",monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}h1,h2,h3{text-wrap:balance;margin:0}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:14px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:#0000}.login-wrap{background:radial-gradient(1100px 520px at 50% -12%, #e7eef7, var(--paper));place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;width:100%;max-width:400px;padding:34px 32px}.login-mark{align-items:center;gap:11px;margin-bottom:14px;display:flex}.login-brand{letter-spacing:.2px;font-size:25px;font-weight:700}.login-brand b{color:var(--gold-deep);font-weight:700}.login-eyebrow{letter-spacing:.18em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:2px;font-size:11px;font-weight:700}.login-sub{color:var(--ink-soft);margin:0 0 22px;font-size:14px}.login-form{flex-direction:column;gap:14px;display:flex}.login-form label{flex-direction:column;gap:5px;display:flex}.login-form label span{color:var(--ink-soft);font-size:12px;font-weight:600}.login-form input{border:1px solid var(--line-strong);background:#fff;border-radius:8px;padding:10px 12px}.login-btn{background:var(--accent);color:#fff;border:0;border-radius:8px;margin-top:4px;padding:11px;font-size:15px;font-weight:600}.login-btn:hover{background:var(--accent-deep)}.login-btn:disabled{opacity:.6}.login-error{background:var(--crit-wash);color:var(--crit);border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500}.login-notice{background:var(--accent-wash);color:var(--accent-deep);border-radius:8px;padding:9px 12px;font-size:13px}.login-switch{color:var(--ink-soft);text-align:center;margin-top:18px;font-size:13.5px}.login-switch button{color:var(--accent);background:0 0;border:0;font-size:13.5px;font-weight:600;text-decoration:underline}.app{grid-template-columns:230px 1fr;min-height:100vh;display:grid}.side{background:var(--ink);color:#c7ccd6;flex-direction:column;gap:6px;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:4px 8px 6px;display:flex}.ripple{flex:none}.mark{color:#fff;letter-spacing:.3px;font-size:21px;font-weight:700}.mark b{color:var(--gold);font-weight:700}.side-tag{letter-spacing:.14em;text-transform:uppercase;color:#7c8494;padding:0 8px 14px;font-size:10.5px}.nav{flex-direction:column;gap:2px;display:flex}.nav button{text-align:left;color:#aeb4c0;background:0 0;border:0;border-radius:8px;align-items:center;gap:9px;width:100%;padding:9px 11px;font-size:14px;font-weight:500;display:flex}.nav button:hover{color:#eaecef;background:#ffffff0f}.nav button.on{background:var(--gold);color:var(--ink);font-weight:600}.nav button.on:hover{background:var(--gold)}.nav .count{background:#ffffff26;border-radius:20px;margin-left:auto;padding:1px 7px;font-size:11px}.nav button.on .count{background:#16233a2e}.side-foot{color:#7c8494;border-top:1px solid #ffffff14;margin-top:auto;padding-top:12px;font-size:12px;line-height:1.6}.side-foot b{color:#b9c0cb}.signout{color:#aeb4c0;background:0 0;border:1px solid #ffffff24;border-radius:7px;width:100%;margin-top:8px;padding:6px 10px;font-size:12px;font-weight:600}.signout:hover{color:#fff;border-color:#ffffff4d}.main{max-width:1180px;padding:30px 40px 60px}.head{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:26px;display:flex}.head h1{letter-spacing:-.01em;font-size:26px;font-weight:650}.head p{color:var(--ink-soft);margin:5px 0 0;font-size:14px}.btn{background:var(--accent);color:#fff;box-shadow:var(--shadow);border:0;border-radius:8px;align-items:center;gap:8px;padding:10px 16px;font-size:14px;font-weight:600;display:inline-flex}.btn:hover{background:var(--accent-deep)}.btn:disabled{opacity:.6}.btn.ghost{color:var(--ink);border:1px solid var(--line-strong);box-shadow:none;background:#fff}.btn.ghost:hover{border-color:var(--ink-faint)}.stats{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px;display:grid}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.stat .lbl{letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);font-size:11.5px;font-weight:600}.stat .val{font-family:var(--mono);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:9px;font-size:27px;font-weight:600}.stat .sub{color:var(--ink-soft);margin-top:3px;font-size:12.5px}.stat.alert .val{color:var(--crit)}.stat.warn .val{color:var(--warn)}.grid2{grid-template-columns:1.15fr .85fr;align-items:start;gap:22px;display:grid}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.panel-h{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:15px 18px;display:flex}.panel-h h2{font-size:15px;font-weight:650}.panel-h .hint{color:var(--ink-faint);font-size:12px}.kd{border-bottom:1px solid var(--line);align-items:center;gap:13px;padding:13px 18px;display:flex}.kd:last-child{border-bottom:0}.kd .stripe{background:var(--line-strong);border-radius:3px;align-self:stretch;width:3px}.kd.crit .stripe{background:var(--crit)}.kd.warn .stripe{background:var(--warn)}.kd.ok .stripe{background:var(--good)}.kd .body{flex:1;min-width:0}.kd .t1{font-size:14px;font-weight:600}.kd .t2{color:var(--ink-soft);margin-top:1px;font-size:12.5px}.kd .when{text-align:right;flex:none}.kd .days{font-family:var(--mono);font-size:15px;font-weight:600}.kd.crit .days{color:var(--crit)}.kd.warn .days{color:var(--warn)}.kd.ok .days{color:var(--good)}.kd .date{color:var(--ink-faint);margin-top:1px;font-size:11.5px}.tagx{letter-spacing:.05em;text-transform:uppercase;vertical-align:1px;border-radius:5px;margin-left:7px;padding:2px 6px;font-size:10px;font-weight:700;display:inline-block}.tagx.notice{background:var(--warn-wash);color:var(--warn)}.tagx.exp{background:var(--crit-wash);color:var(--crit)}.cat{border-bottom:1px solid var(--line);padding:12px 18px}.cat:last-child{border-bottom:0}.cat .row{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.cat .nm{font-size:13.5px;font-weight:600}.cat .amt{font-family:var(--mono);font-size:13.5px}.bar{background:var(--line);border-radius:4px;height:6px;overflow:hidden}.bar span{background:var(--accent);border-radius:4px;height:100%;display:block}.tools{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.search{flex:1;min-width:200px}.search input{border:1px solid var(--line-strong);background:#fff;border-radius:8px;width:100%;padding:9px 12px}.tools select{border:1px solid var(--line-strong);color:var(--ink);background:#fff;border-radius:8px;padding:9px 12px}.tbl-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}thead th{text-align:left;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line-strong);white-space:nowrap;background:#fbfaf8;padding:11px 16px;font-size:11px;font-weight:700}tbody td{border-bottom:1px solid var(--line);vertical-align:middle;padding:13px 16px}tbody tr:last-child td{border-bottom:0}tbody tr{cursor:pointer}tbody tr:hover{background:#faf9f6}.c-name{font-weight:600}.c-name .cp{color:var(--ink-soft);margin-top:1px;font-size:12.5px;font-weight:400}.c-name .ref{font-family:var(--mono);color:var(--ink-faint);font-size:11.5px}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.pill{white-space:nowrap;border-radius:20px;align-items:center;gap:5px;padding:3px 9px;font-size:12px;font-weight:600;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.pill.active{background:var(--good-wash);color:var(--good)}.pill.soon{background:var(--warn-wash);color:var(--warn)}.pill.expired,.pill.notice{background:var(--crit-wash);color:var(--crit)}.renew{color:var(--accent);margin-top:2px;font-size:11px;font-weight:600}.muted{color:var(--ink-faint)}.empty{text-align:center;color:var(--ink-faint);padding:44px}.scrim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;background:#1419246b;justify-content:center;align-items:flex-start;padding:40px 20px;display:flex;position:fixed;inset:0;overflow:auto}.modal{background:var(--paper);border-radius:14px;width:100%;max-width:640px;overflow:hidden;box-shadow:0 20px 60px #1419244d}.modal-h{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:flex-start;padding:20px 24px;display:flex}.modal-h h2{font-size:19px;font-weight:650}.modal-h p{color:var(--ink-soft);margin:3px 0 0;font-size:13px}.x{color:var(--ink-faint);background:0 0;border:0;padding:2px 6px;font-size:22px;line-height:1}.x:hover{color:var(--ink)}.modal-b{padding:22px 24px}.drop{border:1.5px dashed var(--line-strong);text-align:center;cursor:pointer;background:#fff;border-radius:10px;margin-bottom:16px;padding:20px;transition:all .15s;display:block}.drop:hover{border-color:var(--accent);background:var(--accent-wash)}.drop .dt{color:var(--accent-deep);font-size:14px;font-weight:600}.drop .ds{color:var(--ink-soft);margin-top:2px;font-size:12.5px}.aiflash{border-radius:9px;margin-bottom:16px;padding:11px 14px;font-size:13px;font-weight:500}.aiflash.reading{border:1px solid var(--line-strong);color:var(--ink-soft);background:#f0efea}.aiflash.done{background:var(--accent-wash);color:var(--accent-deep);border:1px solid #bedcd8}.aiflash.error{background:var(--crit-wash);color:var(--crit);border:1px solid #e9c4c0}.form{grid-template-columns:1fr 1fr;gap:15px 16px;display:grid}.f{flex-direction:column;gap:5px;display:flex}.f.full{grid-column:1/-1}.f label{color:var(--ink-soft);font-size:12px;font-weight:600}.f input,.f select,.f textarea{border:1px solid var(--line-strong);background:#fff;border-radius:8px;width:100%;padding:9px 11px}.f textarea{resize:vertical;min-height:58px}.toggle{border:1px solid var(--line-strong);background:#fff;border-radius:8px;grid-column:1/-1;align-items:center;gap:10px;padding:11px 13px;display:flex}.toggle input{width:17px;height:17px;accent-color:var(--accent)}.toggle .tx b{font-size:13.5px}.toggle .tx div{color:var(--ink-soft);font-size:12px}.modal-f{border-top:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:10px;padding:16px 24px;display:flex}.modal-f-right{gap:10px;margin-left:auto;display:flex}.gsearch{border:1px solid var(--line-strong);box-shadow:var(--shadow);background:#fff;border-radius:10px;align-items:center;gap:10px;margin-bottom:24px;padding:4px 6px 4px 14px;display:flex}.gsearch svg{color:var(--accent);flex:none}.gsearch input{background:0 0;border:0;flex:1;padding:10px 4px;font-size:15px}.gsearch input:focus{outline:none}.gclear{background:var(--paper);border:1px solid var(--line-strong);color:var(--ink-soft);border-radius:7px;padding:7px 13px;font-size:13px;font-weight:600}.gclear:hover{color:var(--ink)}.gcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;margin-bottom:12px;padding:14px 18px}.gcard:hover{border-color:var(--accent)}.gcard-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.gcard-name{font-size:15px;font-weight:650}.gcard-meta{color:var(--ink-soft);margin-top:2px;font-size:12.5px}.gcard-hit{border-top:1px solid var(--line);gap:10px;margin-top:9px;padding-top:9px;font-size:13px;line-height:1.45;display:flex}.ghit-lbl{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);flex:none;width:120px;padding-top:2px;font-size:10.5px;font-weight:700}.ghit-snip{color:var(--ink);flex:1;min-width:0}.pill.archived{color:#6b7280;background:#eceae4}.detail{z-index:40;background:var(--paper);grid-template-columns:minmax(360px,440px) 1fr;display:grid;position:fixed;inset:0}.detail-left{border-right:1px solid var(--line-strong);flex-direction:column;min-height:0;display:flex}.detail-top{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:10px;padding:13px 18px;display:flex}.back{color:var(--ink-soft);background:0 0;border:0;border-radius:7px;padding:6px 8px;font-size:14px;font-weight:600}.back:hover{color:var(--ink);background:var(--paper)}.detail-actions{gap:8px;display:flex}.btn.sm{padding:7px 13px;font-size:13px}.detail-scroll{padding:22px 20px 44px;overflow-y:auto}.detail-scroll h2{letter-spacing:-.01em;margin-bottom:18px;font-size:19px;font-weight:650}.detail-left .form{grid-template-columns:1fr}.detail-right{background:#3a3f47;flex-direction:column;min-height:0;display:flex;position:relative}.pdf{border:0;flex:1;width:100%}.pdfjs-wrap{flex-direction:column;flex:1;align-items:center;min-height:0;padding:18px;display:flex;overflow-y:auto}.pdfjs-pages{flex-direction:column;align-items:center;gap:14px;width:100%;display:flex}.pdf-page{background:#fff;border-radius:2px;width:100%;max-width:840px;height:auto;box-shadow:0 3px 16px #00000073}.doc-msg{color:#c7ccd6;text-align:center;margin:auto;padding:20px;font-size:14px}.doc-empty{width:100%;max-width:440px;margin:auto;padding:24px}.doc-empty .drop{background:#fff}.doc-note{color:#aeb4c0;text-align:center;margin:14px 0 0;font-size:13px}.doc-hint{text-align:center;color:#aeb4c0;background:#2e333a;flex:none;padding:8px 12px;font-size:12px}.doc-bar{background:#2e333a;border-bottom:1px solid #22262c;flex:none;justify-content:space-between;align-items:center;gap:10px;padding:9px 14px;display:flex}.doc-bar-left{align-items:center;gap:12px;min-width:0;display:flex}.doc-label{color:#eaecef;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.doc-switch{color:#c7ccd6;cursor:pointer;background:#ffffff1a;border:0;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:600}.doc-switch:hover{color:#fff;background:#ffffff2e}.doc-body{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.doc-open{color:var(--accent-deep);white-space:nowrap;background:#ffffffeb;border-radius:7px;padding:6px 11px;font-size:12.5px;font-weight:600;text-decoration:none}.doc-open:hover{background:#fff}.mods{border-top:1px solid var(--line-strong);margin-top:24px;padding-top:16px}.mods-h{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:10px;font-size:12px;font-weight:700}.mods-empty{color:var(--ink-faint);margin:0 0 10px;font-size:13px}.mod{border:1px solid var(--line);background:#fff;border-radius:9px;align-items:flex-start;gap:10px;margin-bottom:8px;padding:10px 12px;display:flex}.mod-no{font-family:var(--mono);color:var(--accent-deep);background:var(--accent-wash);border-radius:6px;flex:none;margin-top:1px;padding:3px 7px;font-size:10.5px;font-weight:700}.mod-info{flex:1;min-width:0}.mod-desc{font-size:13px;font-weight:600}.mod-meta{color:var(--ink-soft);margin-top:2px;font-size:11.5px}.mod-view{color:var(--accent);cursor:pointer;background:0 0;border:0;flex:none;padding:2px 4px;font-size:12px;font-weight:600}.mod-view:hover{text-decoration:underline}.add-mod{border:1.5px dashed var(--line-strong);width:100%;color:var(--accent-deep);cursor:pointer;background:#fff;border-radius:9px;margin-top:2px;padding:10px;font-size:13px;font-weight:600}.add-mod:hover{border-color:var(--accent);background:var(--accent-wash)}.mod-form{border:1px solid var(--line-strong);background:#fff;border-radius:10px;flex-direction:column;gap:11px;margin-top:6px;padding:14px;display:flex}.mod-actions{justify-content:flex-end;gap:8px;margin-top:2px;display:flex}.drop.sm{margin-bottom:0;padding:12px}.drop.sm .dt{font-size:13px}@media (max-width:820px){.detail{grid-template-rows:auto 55vh;grid-template-columns:1fr}.detail-left{border-right:0;border-bottom:1px solid var(--line-strong)}.app{grid-template-columns:1fr}.side{flex-flow:wrap;align-items:center;height:auto;position:static}.side-foot{display:none}.nav{flex-direction:row}.main{padding:22px 18px}.stats{grid-template-columns:1fr 1fr}.grid2,.form{grid-template-columns:1fr}}
