:root{--bg: #ffffff;--bg-2: #f9fafb;--surface: #ffffff;--surface-2: #f9fafb;--border: #e5e7eb;--border-strong: #d1d5db;--grid-line: rgba(17, 24, 39, .035);--text: #111827;--text-2: #374151;--muted: #6b7280;--muted-2: #9ca3af;--brand: #1e3a8a;--brand-bg: #eef2ff;--success: #16a34a;--success-bg: #f0fdf4;--warning: #ca8a04;--warning-bg: #fefce8;--danger: #dc2626;--danger-bg: #fef2f2;--font-sans: Inter, "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--fs-xs: .75rem;--fs-sm: .8rem;--fs-base: .95rem;--fs-md: 1rem;--fs-lg: 1.25rem;--fs-xl: 1.875rem;--tracking-tight: -.02em;--tracking-snug: -.01em;--radius: 0;--shadow: none;--t: .15s ease;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--max-app: 1200px;--header-h: 3.5rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg);background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:32px 32px;color:var(--text);font-size:var(--fs-base);-webkit-font-smoothing:antialiased;min-height:100vh}.mono,.tnum{font-family:var(--font-mono);font-variant-numeric:tabular-nums}code,pre,kbd,samp{font-family:var(--font-mono)}a{color:inherit}.wordmark{font-family:var(--font-sans);font-size:var(--fs-md);font-weight:600;color:var(--text);letter-spacing:var(--tracking-snug);line-height:1}.wordmark>span{font-weight:700;color:var(--brand)}.btn{font-family:inherit;font-size:var(--fs-sm);font-weight:500;padding:6px 14px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text-2);cursor:pointer;transition:background var(--t),border-color var(--t),color var(--t);text-decoration:none;display:inline-flex;align-items:center;gap:6px}.btn:hover{background:var(--bg-2);border-color:var(--muted-2)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--text);border-color:var(--text);color:#fff}.btn--primary:hover{background:var(--text-2);border-color:var(--text-2)}.btn--ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn--ghost:hover{background:var(--surface-2)}.btn--danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn--danger:hover{background:#b91c1c;border-color:#b91c1c}.btn--sm{padding:.35rem .75rem;font-size:var(--fs-xs)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-6);transition:border-color var(--t)}.card:hover{border-color:var(--border-strong)}.filter-btn{padding:.3rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--muted);font-size:var(--fs-xs);font-weight:500;cursor:pointer;transition:all var(--t)}.filter-btn:hover{border-color:var(--text);color:var(--text)}.filter-btn.active{background:var(--text);border-color:var(--text);color:#fff}.input{font-family:inherit;font-size:var(--fs-sm);padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);transition:border-color var(--t);width:100%}.input:focus{outline:none;border-color:var(--text)}.input.error,.input[aria-invalid=true]{border-color:var(--danger)}textarea.input{resize:vertical;min-height:4rem}.badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:var(--fs-xs);font-weight:500;border-radius:var(--radius);border:1px solid var(--border)}.badge--success{background:var(--success-bg);color:var(--success);border-color:transparent}.badge--warning{background:var(--warning-bg);color:var(--warning);border-color:transparent}.badge--danger{background:var(--danger-bg);color:var(--danger);border-color:transparent}.badge--dot{background:transparent;border-color:transparent;padding-left:0;gap:6px;color:var(--text-2)}.badge--dot:before{content:"";width:8px;height:8px;flex:none;background:var(--muted-2);box-shadow:0 0 0 3px var(--bg)}.badge--dot.is-available:before{background:var(--success)}.badge--dot.is-in_use:before{background:var(--brand)}.badge--dot.is-maintenance:before{background:var(--warning)}.badge--dot.is-retired:before{background:var(--muted-2)}.app-header{height:var(--header-h);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:var(--space-6);padding:0 var(--space-6);position:sticky;top:0;background:var(--bg);z-index:10}.app-header nav{display:flex;gap:var(--space-1);flex:1;flex-wrap:wrap}.app-header nav a{text-decoration:none;color:var(--muted);font-size:var(--fs-sm);font-weight:500;padding:6px 10px;border-bottom:2px solid transparent}.app-header nav a:hover{color:var(--text)}.app-header nav a.active{color:var(--text);border-bottom-color:var(--brand)}.app-header .user{font-size:var(--fs-sm);color:var(--muted);display:flex;align-items:center;gap:var(--space-3)}.main{max-width:var(--max-app);margin:0 auto;padding:var(--space-8) var(--space-6)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap}.page-head h1{font-size:var(--fs-xl);letter-spacing:var(--tracking-tight);font-weight:700;line-height:1.05}.page-head p{color:var(--muted);font-size:var(--fs-sm);margin-top:var(--space-1)}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.18em;color:var(--muted-2);font-weight:500;display:block;margin-bottom:var(--space-2)}.toolbar{display:flex;gap:var(--space-2);align-items:center;margin-bottom:var(--space-6);flex-wrap:wrap}.grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.row{display:flex;gap:var(--space-3);align-items:center}.col{display:flex;flex-direction:column;gap:var(--space-3)}.spacer{flex:1}.muted{color:var(--muted)}.small{font-size:var(--fs-sm)}.xs{font-size:var(--fs-xs)}.stack>*+*{margin-top:var(--space-2)}label{font-size:var(--fs-sm);font-weight:500;color:var(--text-2);display:block;margin-bottom:4px}.asset-card{display:flex;flex-direction:column;gap:var(--space-3)}.asset-card .title{font-weight:600;font-size:var(--fs-md)}.asset-card .meta{color:var(--muted);font-size:var(--fs-xs)}.asset-card .borrower{font-size:var(--fs-sm)}.note{display:flex;flex-direction:column;gap:var(--space-2);position:relative}.note .body{white-space:pre-wrap;font-size:var(--fs-sm)}.note.pinned{border-left:3px solid var(--text)}.group-section{margin-bottom:var(--space-8)}.group-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--border)}.group-name{cursor:pointer}.group-name:hover{color:var(--text)}.group-name-input{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.18em;font-size:var(--fs-xs);padding:2px 6px;width:auto;min-width:8rem}.group-droppable{min-height:3.5rem}.group-droppable.is-over>.items-grid{outline:1px dashed var(--border-strong);outline-offset:4px}.items-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.drag-handle{position:absolute;top:var(--space-3);right:var(--space-3);cursor:grab;color:var(--muted-2);font-size:13px;padding:3px;line-height:1;-webkit-user-select:none;user-select:none;touch-action:none}.drag-handle:active{cursor:grabbing;color:var(--text)}.sortable-ghost{opacity:.35}.drag-overlay-card{box-shadow:0 10px 32px #11182724;cursor:grabbing}.group-picker-wrap{position:relative}.group-picker{position:absolute;z-index:200;right:0;bottom:calc(100% + 4px);background:var(--surface);border:1px solid var(--border-strong);min-width:170px;max-height:220px;overflow-y:auto}.group-picker-item{display:block;width:100%;text-align:left;padding:6px var(--space-3);font-size:var(--fs-xs);font-family:inherit;border:none;background:transparent;cursor:pointer;color:var(--text-2)}.group-picker-item:hover{background:var(--bg-2)}.group-picker-item.active{font-weight:600;color:var(--text)}.group-picker-new{padding:var(--space-2);border-top:1px solid var(--border)}.group-picker-new .input{font-size:var(--fs-xs);padding:4px 8px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182766;display:flex;align-items:center;justify-content:center;z-index:50;padding:var(--space-4)}.modal{background:var(--surface);border:1px solid var(--border-strong);max-width:28rem;width:100%;padding:var(--space-6);max-height:90vh;overflow:auto}.modal h2{font-size:var(--fs-lg);margin-bottom:var(--space-4)}.modal .actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-6)}table.tl{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}table.tl th,table.tl td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}table.tl th{color:var(--muted);font-weight:500;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em}.center-state{text-align:center;color:var(--muted);padding:var(--space-12) var(--space-4)}.stat-grid{display:grid;gap:0;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));border:1px solid var(--border-strong);border-right:0;border-bottom:0;background:var(--surface)}.stat-tile{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-6);border-right:1px solid var(--border-strong);border-bottom:1px solid var(--border-strong);text-decoration:none;color:var(--text);position:relative;transition:background var(--t)}.stat-tile:hover{background:var(--bg-2)}.stat-tile:hover .stat-arrow{transform:translate(3px);opacity:1}.stat-tile .stat-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:3rem;font-weight:600;letter-spacing:-.045em;line-height:1;color:var(--text)}.stat-tile .stat-label{font-size:var(--fs-sm);color:var(--muted)}.stat-tile .stat-arrow{position:absolute;top:var(--space-6);right:var(--space-6);color:var(--muted-2);opacity:.5;transition:transform var(--t),opacity var(--t)}.pegboard{display:grid;grid-template-columns:repeat(auto-fill,minmax(94px,1fr));border:1px solid var(--border-strong);border-right:0;border-bottom:0;background:var(--surface)}.peg{position:relative;aspect-ratio:1 / 1;border:0;border-right:1px solid var(--border-strong);border-bottom:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-family:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:11px 12px;transition:background var(--t),color var(--t),box-shadow var(--t)}.peg:hover{z-index:1;box-shadow:inset 0 0 0 2px var(--brand)}.peg:focus-visible{outline:none;z-index:1;box-shadow:inset 0 0 0 2px var(--brand)}.peg .peg-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:1.65rem;font-weight:600;letter-spacing:-.04em;line-height:1}.peg .peg-dot{position:absolute;top:11px;right:11px;width:9px;height:9px;border:1.5px solid var(--border-strong);background:var(--surface)}.peg .peg-foot{font-size:var(--fs-xs);color:var(--muted);width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.peg--in_use{background:var(--text);color:#fff}.peg--in_use .peg-dot{background:#fff;border-color:#fff}.peg--in_use .peg-foot{color:#ffffffa6}.peg--in_use:hover{box-shadow:inset 0 0 0 2px var(--brand)}.peg--maintenance{background:var(--warning-bg);color:var(--warning)}.peg--maintenance .peg-dot{background:var(--warning);border-color:var(--warning)}.peg--retired{color:var(--muted-2)}.peg--retired .peg-num{text-decoration:line-through}.peg--retired .peg-dot{background:var(--muted-2);border-color:var(--muted-2)}.peg-legend{display:flex;gap:var(--space-6);margin-top:var(--space-4);font-size:var(--fs-xs);color:var(--muted);flex-wrap:wrap}.peg-legend span{display:inline-flex;align-items:center;gap:7px}.peg-legend i{width:12px;height:12px;display:inline-block;border:1px solid var(--border-strong)}.peg-legend i.is-free{background:var(--surface)}.peg-legend i.is-used{background:var(--text);border-color:var(--text)}.peg-legend i.is-maint{background:var(--warning-bg);border-color:var(--warning)}.sheet-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:3.25rem;font-weight:600;letter-spacing:-.05em;line-height:1;color:var(--text)}.sheet-head{display:flex;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6)}.sheet-head .sheet-name{font-size:var(--fs-lg);font-weight:700;letter-spacing:var(--tracking-snug)}.sheet-row{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-top:1px solid var(--border);font-size:var(--fs-sm)}.sheet-row .k{color:var(--muted)}.sheet-row .v{text-align:right}
