:root{--surface: #fcf9f3;--surface-card: #ffffff;--surface-container: #f0eee8;--surface-container-low: #f7f5ef;--text: #1c1c18;--muted: #584238;--primary: #9c3f00;--primary-soft: #f4dccb;--secondary: #735846;--tertiary: #5f6b3c;--outline: #e0c0b2;--outline-strong: #8c7166;--success: #386a1f;--warn: #b15c00;--error: #ba1a1a}*{box-sizing:border-box}body{margin:0;font-family:Work Sans,system-ui,sans-serif;background:var(--surface);color:var(--text)}button{font:inherit;cursor:pointer}a{color:var(--primary)}.layout{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{border-right:1px solid var(--outline);padding:24px 16px;background:var(--surface-container);display:flex;flex-direction:column}.sidebar nav{display:flex;flex-direction:column;gap:4px;margin-top:18px}.sidebar nav a{display:block;padding:8px 12px;border-radius:.5rem;text-decoration:none;color:var(--text);font-size:.95rem;transition:background .12s ease}.sidebar nav a:hover{background:var(--primary-soft)}.sidebar nav a.active{background:var(--primary);color:#fff}.sidebar .profile{margin:16px 0 0;font-size:.8rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis}.sidebar .logout{margin-top:auto;background:transparent;border:1px solid var(--outline);color:var(--muted);padding:8px 12px;border-radius:.5rem;text-align:left}.sidebar .logout:hover{background:var(--primary-soft)}.brand{font-family:"Noto Serif",serif;font-size:1.3rem;margin:6px 0 0}.page{padding:24px 32px;width:100%}.card{border:1px solid var(--outline);border-radius:1rem;background:var(--surface-card);padding:24px;box-shadow:0 10px 30px #cc55000f;margin-bottom:20px}.card h2{margin:4px 0 12px;font-family:"Noto Serif",serif;font-size:1.4rem}.label{margin:0;color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-size:.75rem}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.btn{padding:8px 14px;border-radius:999px;border:1px solid var(--outline);background:var(--surface-card);color:var(--text);font-weight:500}.btn:hover{background:var(--primary-soft)}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn.primary:hover{background:#803100}.btn.danger{color:var(--error);border-color:var(--error)}.btn.danger:hover{background:#fde4e4}.btn:disabled{opacity:.6;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;font-size:.9rem}.field label{font-weight:500;color:var(--muted)}.field input,.field select,.field textarea{font:inherit;padding:8px 12px;border:1px solid var(--outline);border-radius:.5rem;background:var(--surface);color:var(--text)}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--primary);outline-offset:1px}.error-msg{background:#fde4e4;color:var(--error);border:1px solid var(--error);border-radius:.5rem;padding:10px 12px;font-size:.9rem;margin-bottom:12px}.info-msg{background:var(--primary-soft);color:var(--muted);border-radius:.5rem;padding:10px 12px;font-size:.9rem;margin-bottom:12px}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:16px}.metric{border:1px solid var(--outline);border-radius:.75rem;padding:14px;background:var(--surface-container-low)}.metric-label{display:block;font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.metric-value{display:block;font-family:"Noto Serif",serif;font-size:1.8rem;margin-top:6px}.data-table{width:100%;border-collapse:collapse;margin-top:8px;font-size:.92rem}.data-table th,.data-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--outline)}.data-table th{font-weight:600;color:var(--muted);background:var(--surface-container-low)}.data-table tr:hover td{background:var(--primary-soft)}.data-table .empty{text-align:center;color:var(--muted);padding:22px}.chip{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;border:1px solid var(--outline);background:var(--surface-container-low);color:var(--muted)}.chip-success{background:#e3f1d4;color:var(--success);border-color:var(--success)}.chip-warn{background:#fde9d4;color:var(--warn);border-color:var(--warn)}.chip-error{background:#fde4e4;color:var(--error);border-color:var(--error)}.chip-info{background:var(--primary-soft);color:var(--primary);border-color:var(--primary)}.login-shell{min-height:100vh;display:grid;place-items:center;background:linear-gradient(160deg,#fef3e0,#f9d9b7 60%,#f0bd86)}.login-card{width:360px;background:var(--surface-card);border-radius:1.25rem;padding:32px;box-shadow:0 20px 60px #9c3f002e;border:1px solid var(--outline)}.login-card h1{font-family:"Noto Serif",serif;margin:4px 0 0}.login-card .label{font-size:.7rem}.login-card form{margin-top:18px}.chart-wrap{background:var(--surface-card);border:1px solid var(--outline);border-radius:1rem;padding:16px}.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-top:16px}.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:900px){.layout,.editor-grid{grid-template-columns:1fr}}.route-loading{padding:24px;color:var(--text-muted);font-size:14px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
