@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-600-normal.woff2) format("woff2")}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d0e1b;--surface:#131428;--surface2:#1a1c35;--border:#252644;--border2:#313350;--accent:#7c6af5;--accent-bg:rgba(124,106,245,.12);--accent2:#2dd4bf;--text:#dde0f2;--muted:#686a8c;--danger:#f87171;--warn:#fbbf24;--success:#34d399}body,html{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:.9rem;line-height:1.5}.layout{display:flex;min-height:100vh}.sidebar{width:230px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:1.25rem 0}.sidebar-logo{padding:.5rem 1.25rem 1.25rem;margin-bottom:.5rem}.sidebar-logo h2{font-size:1.05rem;font-weight:600;color:var(--text);letter-spacing:-.01em}.sidebar-logo .sidebar-tagline{font-size:.72rem;color:var(--muted);display:block;margin-top:.15rem}.nav-link{display:flex;align-items:center;gap:.5rem;padding:.5rem 1.25rem;color:var(--muted);text-decoration:none;font-size:.875rem;font-weight:400;transition:color .12s,background .12s;cursor:pointer;border:none;border-radius:0;background:none;width:100%;text-align:left;margin:1px 0}.nav-link:hover{color:var(--text);background:hsla(0,0%,100%,.04)}.nav-link.active{color:var(--text);background:var(--accent-bg);border-left:2px solid var(--accent);padding-left:calc(1.25rem - 2px);font-weight:500}.sidebar-spacer{flex:1}.sidebar-user{padding:.75rem 1.25rem 0;border-top:1px solid var(--border);font-size:.78rem;color:var(--muted)}.main{flex:1;overflow:auto;padding:2rem 2.25rem}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;gap:1rem;flex-wrap:wrap}.page-title{font-size:1.4rem;font-weight:600;color:var(--text);letter-spacing:-.02em}.page-title span{color:var(--muted);font-weight:400}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.875rem;margin-bottom:1.5rem}.stat{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem}.stat-val{font-family:IBM Plex Mono,monospace;font-size:1.75rem;font-weight:600;line-height:1;margin-bottom:.3rem;color:var(--text)}.stat-val.green{color:var(--success)}.stat-val.blue{color:var(--accent2)}.stat-val.red{color:var(--danger)}.stat-val.warn{color:var(--warn)}.stat-label{font-size:.73rem;color:var(--muted);font-weight:500}.toolbar{display:flex;gap:.625rem;align-items:center;margin-bottom:1.125rem;flex-wrap:wrap}.search-wrap{position:relative;flex:1;min-width:180px;max-width:300px}.search-wrap input{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:inherit;font-size:.85rem;padding:.5rem .75rem .5rem 2rem;outline:none;transition:border-color .15s}.search-wrap input:focus{border-color:var(--accent)}.search-wrap .icon{position:absolute;left:.6rem;top:50%;transform:translateY(-50%);color:var(--muted);font-size:.85rem}.filter-group{display:flex;border-radius:6px;overflow:hidden;border:1px solid var(--border)}.filter-btn{padding:.45rem .85rem;background:var(--surface);border:none;border-right:1px solid var(--border);color:var(--muted);font-size:.8rem;font-family:inherit;cursor:pointer;transition:all .12s}.filter-btn:last-child{border-right:none}.filter-btn:hover{color:var(--text);background:hsla(0,0%,100%,.04)}.filter-btn.active{background:var(--accent-bg);color:var(--accent);font-weight:500}.btn{padding:.5rem 1rem;border:none;font-family:inherit;font-size:.82rem;font-weight:500;cursor:pointer;transition:opacity .12s,background .12s;border-radius:6px;white-space:nowrap}.btn:hover{opacity:.85}.btn-primary{background:var(--accent);color:#fff}.btn-danger{background:transparent;border:1px solid var(--danger);color:var(--danger)}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--muted)}.btn-sm{padding:.3rem .65rem;font-size:.78rem}.table-wrap{overflow-x:auto;border-radius:8px;border:1px solid var(--border)}table{width:100%;border-collapse:collapse}thead th{padding:.65rem .9rem;text-align:left;font-size:.72rem;font-weight:600;color:var(--muted);background:var(--surface);white-space:nowrap;letter-spacing:.02em}tbody tr,thead th{border-bottom:1px solid var(--border)}tbody tr{transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:hsla(0,0%,100%,.025)}tbody td{padding:.7rem .9rem;vertical-align:middle}.mono{font-family:IBM Plex Mono,monospace;font-size:.82rem}.badge{display:inline-block;padding:.18rem .55rem;font-size:.7rem;font-weight:600;border-radius:4px}.badge-active{background:rgba(52,211,153,.15);color:var(--success)}.badge-unused{background:rgba(45,212,191,.12);color:var(--accent2)}.badge-revoked{background:hsla(0,91%,71%,.15);color:var(--danger)}.badge-expired{background:rgba(251,191,36,.15);color:var(--warn)}.cmd-progress{display:flex;align-items:center;gap:.3rem}.cmd-check{display:inline-flex;align-items:center;gap:.2rem;font-size:.72rem;color:var(--muted);cursor:default;white-space:nowrap;padding:.18rem .45rem;border:1px solid var(--border);border-radius:4px}.cmd-check.done{color:var(--success);border-color:rgba(52,211,153,.3);background:rgba(52,211,153,.08)}.breadcrumb{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--muted);margin-bottom:1.5rem;flex-wrap:wrap}.breadcrumb a{color:var(--muted);text-decoration:none;transition:color .12s}.breadcrumb a:hover{color:var(--accent)}.breadcrumb .sep{color:var(--border2)}.breadcrumb .cur{color:var(--text);font-weight:500}.drill-table tbody tr{cursor:pointer}.drill-table tbody tr:hover td{background:rgba(124,106,245,.04)}.filter-bar{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:1.125rem;padding:.75rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:8px}.filter-bar input,.filter-bar select{background:var(--bg);border:1px solid var(--border);border-radius:5px;color:var(--text);font-family:inherit;font-size:.82rem;padding:.4rem .65rem;outline:none;transition:border-color .15s}.filter-bar input:focus,.filter-bar select:focus{border-color:var(--accent)}.filter-bar label{font-size:.75rem;color:var(--muted);font-weight:500}.actions{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center}.actions form{margin:0;display:inline-flex;align-items:center}.modal-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.65);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;align-items:center;justify-content:center}.modal-bg.open{display:flex}.modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.75rem;width:100%;max-width:420px;box-shadow:0 24px 60px rgba(0,0,0,.5),0 0 0 1px hsla(0,0%,100%,.04)}.modal h3{font-size:1rem;font-weight:600;margin-bottom:1.25rem;letter-spacing:-.01em}.modal-actions{display:flex;gap:.625rem;justify-content:flex-end;margin-top:1.25rem}.form-row{margin-bottom:1rem}.form-row label{display:block;font-size:.78rem;font-weight:500;color:var(--muted);margin-bottom:.35rem}.form-row input,.form-row select{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:inherit;font-size:.875rem;padding:.5rem .75rem;outline:none;transition:border-color .15s,box-shadow .15s}.form-row input:focus,.form-row select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,106,245,.15)}.flash{padding:.7rem 1rem;background:rgba(52,211,153,.08);border:1px solid rgba(52,211,153,.25);color:var(--success);font-size:.84rem;margin-bottom:1.25rem;border-radius:6px}.flash.err{background:hsla(0,91%,71%,.08);border-color:hsla(0,91%,71%,.25);color:var(--danger)}.\!empty{text-align:center!important;padding:3rem!important;color:var(--muted)!important;font-size:.875rem!important}.empty{text-align:center;padding:3rem;font-size:.875rem}.empty,.td-date{color:var(--muted)}.td-date{font-size:.78rem}.td-date.warn{color:var(--warn)}.td-meta{color:var(--muted);font-size:.75rem}.td-count{color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:.82rem}.main-narrow{max-width:820px}.device-pill{display:inline-flex;align-items:center;gap:.3rem;font-family:IBM Plex Mono,monospace;font-size:.75rem;padding:.22rem .6rem;background:rgba(45,212,191,.08);border:1px solid rgba(45,212,191,.2);border-radius:5px;color:var(--accent2);cursor:pointer;transition:all .12s}.device-pill:hover{background:rgba(45,212,191,.15);border-color:var(--accent2)}.device-pill.full{color:var(--warn);background:rgba(251,191,36,.08);border-color:rgba(251,191,36,.25)}.device-list{display:flex;flex-direction:column;gap:.5rem;margin-top:.875rem}.device-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.65rem .875rem;background:var(--bg);border:1px solid var(--border);border-radius:6px}.device-item-info{display:flex;flex-direction:column;gap:.15rem}.device-item-chip{font-family:IBM Plex Mono,monospace;font-size:.82rem;color:var(--text)}.device-item-meta{font-size:.72rem;color:var(--muted)}.copy-btn{background:none;border:none;cursor:pointer;color:var(--muted);font-size:.75rem;padding:0 .25rem;transition:color .12s;border-radius:3px}.copy-btn:hover{color:var(--accent)}.section{margin-bottom:2.25rem}.section h3{font-size:.875rem;font-weight:600;color:var(--text);margin-bottom:.875rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.section p{color:var(--muted);font-size:.875rem;margin-bottom:.75rem;line-height:1.65}.section code{font-size:.82rem;padding:.1rem .35rem;border-radius:3px;color:var(--accent2)}.section code,pre{font-family:IBM Plex Mono,monospace;background:var(--surface2)}pre{border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;font-size:.78rem;line-height:1.7;overflow-x:auto;color:var(--text)}pre .comment{color:var(--muted)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);background-image:radial-gradient(ellipse 70% 50% at 50% -10%,rgba(124,106,245,.18) 0,transparent 65%)}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2.25rem 2.25rem 2rem;width:100%;max-width:360px;box-shadow:0 24px 60px rgba(0,0,0,.45)}.card .logo{font-size:1rem;font-weight:600;color:var(--text);letter-spacing:-.01em;margin-bottom:.25rem}.card .logo-sub{font-size:.75rem;color:var(--muted);margin-bottom:1.75rem;display:block}.card h1{font-size:1.35rem;font-weight:600;margin-bottom:1.5rem;letter-spacing:-.02em}.card label{display:block;font-size:.78rem;font-weight:500;color:var(--muted);margin-bottom:.35rem}.card input{display:block;width:100%;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:inherit;font-size:.9rem;padding:.6rem .85rem;margin-bottom:1rem;outline:none;transition:border-color .15s,box-shadow .15s}.card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,106,245,.15)}.card button{width:100%;padding:.7rem;background:var(--accent);color:#fff;border:none;border-radius:6px;font-family:inherit;font-size:.875rem;font-weight:600;cursor:pointer;transition:opacity .15s;margin-top:.5rem}.card button:hover{opacity:.88}.card .error{background:hsla(0,91%,71%,.1);border:1px solid hsla(0,91%,71%,.3);border-radius:6px;color:var(--danger);font-size:.82rem;padding:.6rem .85rem;margin-bottom:1rem}.visible{visibility:visible}.static{position:static}.flex{display:flex}.table{display:table}.hidden{display:none}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}