:root{--bg: #f5f4f0;--surface: #ffffff;--surface-sunken: #faf9f6;--border: #e6e3da;--border-strong: #d8d4c8;--ink: #15141a;--ink-soft: #232128;--ink-border: #33313b;--on-ink: #f2f1ee;--on-ink-muted: #96949e;--text: #1b1a20;--text-muted: #6f6d78;--text-faint: #9d9ba5;--accent: #4f46e5;--accent-hover: #4338ca;--accent-soft: #ece9fd;--on-accent: #ffffff;--ok: #17a161;--ok-soft: #e3f6ec;--warn: #d97a06;--warn-soft: #fbecd6;--busy: #dc2f3d;--busy-soft: #fbe4e5;--neutral: #8b8993;--neutral-soft: #eeedea;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(21, 20, 26, .06);--shadow: 0 4px 16px rgba(21, 20, 26, .08);--shadow-lg: 0 12px 32px rgba(21, 20, 26, .14);--font-display: "Manrope", "Segoe UI", system-ui, -apple-system, sans-serif;--font-body: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;--ease: cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);font-weight:800;letter-spacing:-.02em;color:var(--text);margin:0 0 var(--sp-4)}h1{font-size:22px}h2{font-size:15px;font-weight:700}p{margin:0 0 var(--sp-3)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.app-shell{display:flex;min-height:100vh}.sidebar{width:248px;flex-shrink:0;background:var(--ink);color:var(--on-ink);display:flex;flex-direction:column;padding:var(--sp-5) var(--sp-4)}.sidebar-brand{display:flex;align-items:center;margin-bottom:var(--sp-6);padding:0 var(--sp-2)}.sidebar-logo{height:28px;width:auto;display:block}.sidebar-nav{display:flex;flex-direction:column;gap:2px;flex:1}.sidebar-nav a{color:var(--on-ink-muted);text-decoration:none;padding:var(--sp-3) var(--sp-3);border-radius:var(--radius-sm);font-size:13px;font-weight:500;transition:background-color .15s var(--ease),color .15s var(--ease)}.sidebar-nav a:hover{background:var(--ink-soft);color:var(--on-ink)}.sidebar-nav a.active{background:var(--accent);color:var(--on-accent)}.sidebar-divider{height:1px;background:var(--ink-border);margin:var(--sp-4) var(--sp-2)}.sidebar-footer{display:flex;flex-direction:column;gap:var(--sp-3);padding-top:var(--sp-4);border-top:1px solid var(--ink-border)}.sidebar-footer-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.sidebar-footer-actions a{color:var(--on-ink-muted);text-decoration:none;font-size:12px;font-weight:500;transition:color .15s var(--ease)}.sidebar-footer-actions a:hover,.sidebar-footer-actions a.active{color:var(--on-ink)}.sidebar-user{font-size:12px;color:var(--on-ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page{flex:1;min-width:0;padding:var(--sp-6) var(--sp-7)}.page-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-5);flex-wrap:wrap}.btn{font-family:var(--font-body);font-size:13px;font-weight:600;padding:9px 16px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:transform .12s var(--ease),background-color .15s var(--ease),border-color .15s var(--ease),box-shadow .15s var(--ease);display:inline-flex;align-items:center;gap:var(--sp-2)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-sm)}.btn-primary:not(:disabled):hover{background:var(--accent-hover)}.btn-ghost{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-ghost:not(:disabled):hover{background:var(--surface-sunken);border-color:var(--text-faint)}.btn-danger{background:transparent;color:var(--busy);border-color:transparent;padding:6px 10px}.btn-danger:not(:disabled):hover{background:var(--busy-soft)}.field{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:600;color:var(--text-muted)}.field input[type=text],.field input[type=password],.field input[type=number],.field input:not([type]),.field select,.form-inline input[type=text],.form-inline input[type=password],.form-inline input[type=number],.form-inline input:not([type]),.input-with-action input[type=text],.input-with-action input[type=password]{font-family:var(--font-body);font-size:13px;font-weight:400;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:9px 12px;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.field select{-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%236F6D78' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.field select:hover{border-color:var(--text-faint)}.field input:focus,.field select:focus,.form-inline input:focus,.input-with-action input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-sm);max-width:420px}.form-row{display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-4)}.form-inline{display:flex;align-items:flex-end;gap:var(--sp-3);flex-wrap:wrap}.input-with-action{display:flex;align-items:stretch;gap:var(--sp-2)}.input-with-action input{flex:1;min-width:0}.generate-password-btn{flex-shrink:0;width:34px;display:flex;align-items:center;justify-content:center;background:var(--surface);color:var(--text-muted);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;transition:color .15s var(--ease),border-color .15s var(--ease)}.generate-password-btn:hover{color:var(--accent);border-color:var(--accent)}fieldset.field{border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:var(--sp-3)}fieldset.field legend{padding:0 var(--sp-1)}.checkbox-row{display:flex;align-items:center;gap:var(--sp-2);font-weight:400;color:var(--text);padding:4px 0}.table-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;box-shadow:var(--shadow-sm);margin-bottom:var(--sp-5)}table{width:100%;border-collapse:collapse}thead th{text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--surface-sunken);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border)}tbody td{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);font-size:13px;color:var(--text)}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background-color .12s var(--ease)}tbody tr:hover{background:var(--surface-sunken)}tbody td input[type=number]{width:88px;font-family:var(--font-body);font-variant-numeric:tabular-nums;padding:6px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface)}tbody td input[type=number]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent);cursor:pointer}.confirm-text{font-size:12px;color:var(--text-muted);align-self:center}[role=alert]{background:var(--busy-soft);color:var(--busy);border:1px solid transparent;border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);font-size:13px;font-weight:600;margin:0 0 var(--sp-4)}p[role=status]{background:var(--ok-soft);color:var(--ok);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);font-size:13px;font-weight:600;margin:var(--sp-4) 0 0;display:inline-block}.empty-state{color:var(--text-muted);font-size:13px}.loading-state{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);color:var(--text-muted);font-size:13px;width:100%;padding:var(--sp-7) 0}.loading-state--page{min-height:50vh}.spinner{width:15px;height:15px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--accent);animation:spin .7s linear infinite;flex-shrink:0}.spinner-light{border-color:#ffffff59;border-top-color:var(--on-accent)}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation:none;border-top-color:var(--border-strong)}}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 20% 20%,#1d1c26 0%,var(--ink) 55%)}.login-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--sp-6);width:100%;max-width:360px}.login-card h1{font-size:20px;margin-bottom:var(--sp-1)}.login-subtitle{color:var(--text-muted);font-size:12px;margin-bottom:var(--sp-5)}.login-card .btn-primary{width:100%;justify-content:center;margin-top:var(--sp-2)}.kds{background:var(--ink);border-radius:var(--radius-lg);padding:var(--sp-5);min-height:420px}.kds-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-4)}.kds-card{background:var(--ink-soft);border:1px solid var(--ink-border);border-radius:var(--radius);padding:var(--sp-4);border-left:3px solid var(--neutral);animation:card-in .32s var(--ease) backwards}.kds-card[data-status=ok]{border-left-color:var(--ok)}.kds-card[data-status=warn]{border-left-color:var(--warn)}.kds-card[data-status=busy]{border-left-color:var(--busy)}.kds-card-name{font-family:var(--font-display);font-weight:700;font-size:14px;color:var(--on-ink);margin-bottom:var(--sp-3)}.kds-metrics{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.kds-metric-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--on-ink-muted);margin-bottom:2px}.kds-metric-value{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-weight:800;font-size:18px;color:var(--on-ink)}.kds-metric-value.status-ok{color:var(--ok)}.kds-metric-value.status-warn{color:var(--warn)}.kds-metric-value.status-busy{color:var(--busy)}@keyframes card-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.mobile-topbar{display:none}.mobile-menu-button{width:36px;height:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--ink-border);border-radius:var(--radius-sm);cursor:pointer}.mobile-menu-icon,.mobile-menu-icon:before,.mobile-menu-icon:after{display:block;width:18px;height:2px;background:var(--on-ink);border-radius:1px}.mobile-menu-icon{position:relative}.mobile-menu-icon:before,.mobile-menu-icon:after{content:"";position:absolute;left:0}.mobile-menu-icon:before{top:-6px}.mobile-menu-icon:after{top:6px}.mobile-topbar-brand{display:flex;align-items:center}.mobile-topbar-brand .sidebar-logo{height:24px}.sidebar-backdrop{display:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#15141a80;display:flex;align-items:center;justify-content:center;padding:var(--sp-4);z-index:100;animation:card-in .15s var(--ease)}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--sp-5);max-width:420px;width:100%}.modal h2{margin:0 0 var(--sp-2)}.modal p{color:var(--text-muted);font-size:13px;margin:0 0 var(--sp-5)}.modal .input-with-action{margin:var(--sp-2) 0 var(--sp-5)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--sp-3)}@media (prefers-reduced-motion: reduce){.modal-backdrop{animation:none}}@media (max-width: 900px){.app-shell{display:block;overflow-x:hidden}.mobile-topbar{display:flex;align-items:center;gap:var(--sp-3);background:var(--ink);padding:var(--sp-3) var(--sp-4);position:sticky;top:0;z-index:30}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:40}.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(82vw,300px);z-index:50;transform:translate(-100%);transition:transform .2s var(--ease);box-shadow:var(--shadow-lg)}.sidebar.sidebar-open{transform:translate(0)}.sidebar .sidebar-brand{display:none}.page{padding:var(--sp-4)}.page-header{gap:var(--sp-3)}.form-card{max-width:100%}}@media (prefers-reduced-motion: reduce){.sidebar{transition:none}}
