:root{--bg:#fafafa;--surface:#fff;--surface-2:#f4f4f5;--primary:#4f46e5;--primary-dark:#4338ca;--primary-light:#eef2ff;--accent:#52525b;--text:#18181b;--muted:#71717a;--border:#e4e4e7;--danger:#c62828;--warning:#ed6c02;--success:#2e7d32;--sidebar-bg:#fff;--sidebar-text:#52525b;--sidebar-text-active:#18181b;--sidebar-border:var(--border);--radius:10px;--radius-sm:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #1018280a;--shadow:0 1px 2px #1018280d, 0 1px 6px #1018280a;--shadow-lg:0 8px 24px #1018281f;--ease:.15s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5}a{color:var(--accent);transition:color var(--ease);text-decoration:none}a:hover{color:var(--primary)}h1,h2,h3{letter-spacing:-.01em;margin:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{border:2px solid var(--bg);background:#d4d4d8;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#b0b0b6}.app{min-height:100vh;display:flex}.sidebar{background:var(--sidebar-bg);width:232px;color:var(--sidebar-text);border-right:1px solid var(--sidebar-border);flex-direction:column;flex-shrink:0;height:100vh;display:flex;position:sticky;top:0}.sidebar .brand{align-items:center;gap:8px;padding:22px 18px 16px;font-size:18px;font-weight:800;display:flex}.sidebar nav{flex:1;padding:8px;overflow-y:auto}.nav-link{border-radius:var(--radius-sm);color:var(--sidebar-text);cursor:pointer;transition:background var(--ease), color var(--ease);align-items:center;gap:10px;margin-bottom:2px;padding:9px 12px;font-weight:600;display:flex;position:relative}.nav-link svg{opacity:.9;flex-shrink:0}.nav-link:hover{background:var(--surface-2);color:var(--sidebar-text-active)}.nav-link.active{background:var(--primary-light);color:var(--primary);box-shadow:inset 2px 0 0 var(--primary)}.sidebar .foot{border-top:1px solid var(--sidebar-border);color:var(--muted);padding:16px;font-size:12px}.sidebar .btn.ghost{background:var(--surface-2);color:var(--text);border-color:var(--border);box-shadow:none}.sidebar .btn.ghost:hover{background:var(--border);box-shadow:none;transform:none}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border);z-index:5;background:#ffffffd9;justify-content:space-between;align-items:center;height:64px;padding:0 26px;display:flex;position:sticky;top:0}.topbar h1{font-size:19px;font-weight:800}.content{flex:1;width:100%;max-width:1440px;margin:0 auto;padding:26px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:box-shadow var(--ease), transform var(--ease)}.card-pad{padding:20px}.grid{gap:16px;display:grid}.cols-2{grid-template-columns:repeat(2,1fr)}.cols-3{grid-template-columns:repeat(3,1fr)}.cols-4{grid-template-columns:repeat(4,1fr)}@media (width<=1100px){.cols-4,.cols-3{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.cols-2,.cols-3,.cols-4{grid-template-columns:1fr}}.stat{padding:18px 20px;position:relative;overflow:hidden}.stat:before{content:"";background:var(--primary);width:3px;position:absolute;top:0;bottom:0;left:0}.stat .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12.5px;font-weight:700}.stat .value{letter-spacing:-.02em;margin-top:6px;font-size:27px;font-weight:800}.stat .sub{color:var(--muted);margin-top:4px;font-size:12px}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);background:var(--surface-2);padding:12px 16px;font-size:11.5px;font-weight:700}td{border-bottom:1px solid var(--border);padding:13px 16px}tbody tr{transition:background var(--ease)}tbody tr:hover{background:var(--surface-2)}tbody tr:last-child td{border-bottom:none}tbody tr.clickable{cursor:pointer}.table-wrap{border-radius:var(--radius);overflow-x:auto}.btn{border-radius:var(--radius-sm);cursor:pointer;background:var(--primary);color:#fff;height:38px;transition:background var(--ease), box-shadow var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 18px;font-size:14px;font-weight:700;display:inline-flex}.btn:hover{background:var(--primary-dark)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.btn.secondary{background:var(--accent)}.btn.secondary:hover{filter:brightness(1.15)}.btn.danger{background:var(--danger)}.btn.danger:hover{background:#a92121}.btn.ghost{background:var(--surface);color:var(--text);border-color:var(--border);box-shadow:none}.btn.ghost:hover{background:var(--surface-2);border-color:var(--border)}.btn.sm{height:31px;padding:0 12px;font-size:13px}.pill{letter-spacing:.01em;border-radius:999px;align-items:center;padding:4px 11px;font-size:12px;font-weight:700;display:inline-flex}.field{margin-bottom:14px}.field label{color:var(--muted);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.input,select.input,textarea.input{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;height:38px;color:var(--text);transition:border-color var(--ease), box-shadow var(--ease);background:#fff;padding:0 12px;font-family:inherit;font-size:14px}textarea.input{resize:vertical;height:80px;padding:10px 12px}.input:hover{border-color:#c4c4c9}.input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #4f46e524}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;background:#18181b73;justify-content:center;align-items:flex-start;padding:40px 16px;animation:.16s overlayIn;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:560px;box-shadow:var(--shadow-lg);animation:.18s cubic-bezier(.16,1,.3,1) modalIn}.modal header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:20px 22px;display:flex}.modal header h2{font-size:17px;font-weight:800}.modal .body{padding:22px}.modal .footer{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;padding:16px 22px;display:flex}.modal .x{cursor:pointer;color:var(--muted);background:var(--surface-2);width:30px;height:30px;transition:background var(--ease), color var(--ease);border:none;border-radius:999px;justify-content:center;align-items:center;font-size:20px;line-height:1;display:inline-flex}.modal .x:hover{background:var(--primary-light);color:var(--primary)}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(-8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.row{align-items:center;gap:10px;display:flex}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.muted{color:var(--muted)}.error-text{color:var(--danger);font-weight:600}.section-title{letter-spacing:-.01em;margin:4px 0 12px;font-size:16px;font-weight:800}.empty{text-align:center;color:var(--muted);padding:44px 20px}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:32px;height:32px;margin:60px auto;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.tag-row{flex-wrap:wrap;gap:6px;display:flex}.kv{border-bottom:1px solid var(--border);justify-content:space-between;padding:8px 0;display:flex}.kv:last-child{border-bottom:none}.kv .k{color:var(--muted)}.kv .v{text-align:right;font-weight:600}.photo-thumb{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border);width:84px;height:84px;transition:transform var(--ease)}.photo-thumb:hover{transform:scale(1.04)}.mb{margin-bottom:16px}.bench-note{color:var(--muted);margin-top:6px;font-size:12px}@media print{.sidebar,.topbar,.btn,.no-print{display:none!important}.app,.main,.content{height:auto;display:block}.content{max-width:none;padding:0}.card{box-shadow:none;break-inside:avoid;page-break-inside:avoid;border:1px solid #ccc}body{background:#fff}}
