:root{--bg:#eef4f6;--bg-accent:#d7ebf0;--surface:#f7fbfc;--ink:#0f2a33;--muted:#5a7380;--line:#c5d8df;--cyan:#06b6d4;--teal:#0e7490;--teal-deep:#155e75;--danger:#b42318;--warn:#b54708;--ok:#067647;--ok-bg:#ecfdf3;--err-bg:#fef3f2;--warn-bg:#fffaeb;--shadow:0 12px 40px #0f2a3314;--radius:12px;--font:"IBM Plex Sans", "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;color:var(--ink);background:var(--bg);font-family:var(--font);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(1000px 480px at 12% -10%, #06b6d42e, transparent 55%), radial-gradient(800px 420px at 100% 0%, #0e749024, transparent 50%), linear-gradient(180deg, #f4fafb 0%, var(--bg) 40%, #e8f1f4 100%);min-height:100vh}button,input,textarea{font:inherit}code,.mono{font-family:var(--mono);font-size:.92em}a{color:var(--teal-deep)}.login-shell{place-items:center;min-height:100vh;padding:2rem;display:grid}.login-panel{border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);background:color-mix(in srgb, var(--surface) 92%, white);width:min(420px,100%);box-shadow:var(--shadow);padding:2rem}.login-panel h1{letter-spacing:-.03em;margin:.35rem 0 .75rem;font-size:1.75rem}.brand-mark{letter-spacing:.16em;text-transform:uppercase;background:linear-gradient(90deg, var(--cyan), var(--teal));color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:.78rem;font-weight:700}.app-shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:color-mix(in srgb, var(--surface) 88%, #dff3f7);flex-direction:column;gap:1.25rem;padding:1.25rem 1rem;display:flex}.sidebar-brand{gap:.15rem;padding:.35rem .5rem .75rem;display:grid}.sidebar-brand strong{letter-spacing:-.02em;font-size:1.15rem}.tiny{font-size:.78rem}.nav{flex:1;gap:.25rem;display:grid}.nav-link{color:var(--ink);border-radius:8px;padding:.55rem .7rem;font-weight:500;text-decoration:none}.nav-link:hover{background:#06b6d41a}.nav-link.active{color:var(--teal-deep);background:linear-gradient(90deg,#06b6d438,#0e749024)}.logout{width:100%}.sidebar-meta{gap:.65rem;margin-top:auto;display:grid}.sidebar-meta .tiny{padding:0 .5rem}.main{padding:1.5rem 1.75rem 2.5rem;overflow:auto}.page{gap:1rem;max-width:1100px;display:grid}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.page-header h1{letter-spacing:-.03em;margin:0;font-size:1.65rem}.page-header p{margin:.35rem 0 0}.page-actions{gap:.5rem;display:flex}.muted{color:var(--muted)}.stack{gap:.85rem;display:grid}.field{gap:.35rem;display:grid}.field span{color:var(--muted);font-size:.85rem;font-weight:600}.field.grow{flex:1}input,textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:8px;padding:.65rem .75rem}input:focus,textarea:focus{outline:2px solid color-mix(in srgb, var(--cyan) 55%, white);border-color:var(--cyan)}.btn{-webkit-appearance:none;appearance:none;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:8px;padding:.55rem .9rem;font-weight:600}.btn:hover:not(:disabled){border-color:var(--teal)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:linear-gradient(90deg, var(--cyan), var(--teal));color:#fff;border-color:#0000}.btn.danger{border-color:color-mix(in srgb, var(--danger) 35%, white);color:var(--danger);background:#fff5f5}.btn.warn{border-color:color-mix(in srgb, var(--warn) 35%, white);color:var(--warn);background:var(--warn-bg)}.btn.ghost{background:0 0}.btn.sm{padding:.35rem .65rem;font-size:.85rem}.banner{border:1px solid #0000;border-radius:8px;padding:.75rem .9rem;font-size:.95rem}.banner.ok{background:var(--ok-bg);border-color:color-mix(in srgb, var(--ok) 25%, white);color:var(--ok)}.banner.error{background:var(--err-bg);border-color:color-mix(in srgb, var(--danger) 25%, white);color:var(--danger)}.banner.warn{background:var(--warn-bg);border-color:color-mix(in srgb, var(--warn) 25%, white);color:var(--warn)}.error{color:var(--danger);margin:0;font-size:.92rem}.empty{border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);background:#ffffff73;margin:0;padding:1.25rem}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.stat{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, white 80%, var(--bg-accent));padding:1rem 1.1rem}.stat.wide{grid-column:1/-1}.stat-label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:.35rem;font-size:.8rem;font-weight:600;display:block}.stat-value{word-break:break-word;font-size:1.05rem;font-weight:600}.stat-value.wrap{white-space:pre-wrap}.panel{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, white 84%, var(--bg-accent));padding:1.15rem 1.25rem}.panel h2{margin:0 0 .35rem;font-size:1.1rem}.panel .muted{margin:0 0 1rem}.form-grid{flex-wrap:wrap;align-items:end;gap:.75rem;display:flex}.form-grid .field{min-width:180px}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:#ffffffb3;overflow:auto}table{border-collapse:collapse;width:100%;font-size:.95rem}th,td{text-align:left;border-bottom:1px solid var(--line);padding:.7rem .85rem}th{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:color-mix(in srgb, var(--bg-accent) 55%, white);font-size:.78rem}tr:last-child td{border-bottom:none}td.strong{font-weight:600}td.actions{text-align:right;white-space:nowrap}@media (max-width:860px){.app-shell{grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--line)}.nav{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}.stat-grid{grid-template-columns:1fr}}
