:root{--ink:#1c1b19;--ink-soft:#5c5850;--stone:#f4f2ee;--stone-dark:#e2ddd2;--paper:#fff;--forest:#2f4538;--forest-dark:#22332a;--brass:#b08d57;--line:#e2ddd2;--error:#a3372f;--error-bg:#fbeceb;--success-bg:#e4ede4;--success-text:#22332a;--warn-bg:#f5e9d8;--warn-text:#8a5a1e;--font-display:"Fraunces",Georgia,serif;--font-body:"Inter",-apple-system,BlinkMacSystemFont,sans-serif;--radius:6px;--sidebar-w:220px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--stone);color:var(--ink);font-family:var(--font-body);font-size:14px;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);font-weight:600;margin:0 0 .3em;color:var(--ink)}h1{font-size:1.6rem}h2{font-size:1.2rem}p{color:var(--ink-soft);margin:0 0 1em}a{color:var(--forest);text-decoration:none}a:hover{text-decoration:underline}.admin-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);background:var(--ink);color:#efece5;display:flex;flex-direction:column;padding:22px 0;flex-shrink:0}.sidebar-brand{font-family:var(--font-display);font-size:1.05rem;font-weight:600;padding:0 20px 20px;border-bottom:1px solid #35332e;margin-bottom:16px}.sidebar-link{display:block;padding:10px 20px;color:#c9c5ba;font-size:.88rem;font-weight:500;border-left:3px solid transparent}.sidebar-link:hover{color:#fff;text-decoration:none;background:hsla(0,0%,100%,.04)}.sidebar-link.active{color:#fff;border-left-color:var(--brass);background:hsla(0,0%,100%,.05)}.sidebar-footer{margin-top:auto;padding:16px 20px 0;border-top:1px solid #35332e}.sidebar-btn{background:none;border:none;color:#c9c5ba;font-size:.85rem;cursor:pointer;padding:0}.sidebar-btn:hover{color:#fff}.main{flex:1 1;padding:32px 40px;max-width:1100px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--forest);background:var(--forest);color:#fff;font-family:var(--font-body);font-size:.85rem;font-weight:600;padding:9px 16px;border-radius:var(--radius);cursor:pointer;transition:opacity .15s ease}.btn:hover{opacity:.88;text-decoration:none}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-outline{background:transparent;color:var(--ink);border-color:var(--stone-dark)}.btn-outline:hover{background:var(--stone)}.btn-danger{background:var(--error);border-color:var(--error)}.btn-sm{padding:5px 10px;font-size:.78rem}label{display:block;font-size:.8rem;font-weight:600;margin-bottom:6px;color:var(--ink-soft)}input,select,textarea{width:100%;font-family:var(--font-body);font-size:.9rem;padding:9px 11px;border:1px solid var(--stone-dark);border-radius:var(--radius);background:var(--paper);color:var(--ink)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--forest);box-shadow:0 0 0 3px rgba(47,69,56,.1)}.field{margin-bottom:14px}.error-text{color:var(--error);font-size:.85rem;margin-top:8px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px;margin-top:20px}.stat-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);margin-bottom:6px}.stat-value{font-family:var(--font-display);font-size:1.6rem;font-weight:600}table{width:100%;border-collapse:collapse;background:var(--paper);border-radius:var(--radius);overflow:hidden}th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);border-bottom:2px solid var(--line);background:var(--stone)}td,th{padding:11px 14px}td{border-bottom:1px solid var(--line);font-size:.88rem}tr:last-child td{border-bottom:none}.badge{display:inline-block;font-size:.7rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;padding:3px 9px;border-radius:20px;background:var(--stone);color:var(--ink-soft)}.badge-success{background:var(--success-bg);color:var(--success-text)}.badge-warn{background:var(--warn-bg);color:var(--warn-text)}.badge-error{background:var(--error-bg);color:var(--error)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.muted{font-size:.85rem}.empty-state,.muted{color:var(--ink-soft)}.empty-state{text-align:center;padding:50px 20px}