:root{--bg:#f4efe6;--paper:#fffaf3;--ink:#241c16;--muted:#6d6157;--line:#e2d6c8;--accent:#b5522a;--accent-ink:#fff8f3;--ok:#2f6b4f;--sidebar:#2a221c;--sidebar-ink:#f6eee4}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{font-family:Avenir Next,Segoe UI,sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}table{width:100%;border-collapse:collapse}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:var(--sidebar);color:var(--sidebar-ink);padding:24px 18px;display:flex;flex-direction:column;gap:28px}.brand strong{display:block;font-size:22px}.brand span{color:#cbbbaa;font-size:13px}.sidebar nav{display:flex;flex-direction:column;gap:6px}.sidebar a{padding:10px 12px;border-radius:10px;color:#eadfd4}.sidebar a.active,.sidebar a:hover{background:#3b3129;color:white}.main{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;gap:16px;align-items:flex-end;padding:16px 24px;background:var(--paper);border-bottom:1px solid var(--line)}.topbar label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.topbar select,form input,form select{min-width:180px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:white}.user{margin-left:auto;display:flex;gap:12px;align-items:center}.content{padding:24px;display:grid;grid-gap:20px;gap:20px}.login,.page-loading{min-height:100vh;display:grid;place-items:center}.login .card{width:min(calc(100% - 32px),380px)}.login .banner{margin:0}.login button[type=submit]:disabled{opacity:.65;cursor:progress}.card,.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:20px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:12px;gap:12px}.stat{font-size:28px;margin:8px 0 0}.muted{color:var(--muted)}.banner{margin:0 24px;padding:10px 12px;background:#f8e0d4;border-radius:8px}form{display:grid;grid-gap:10px;gap:10px}form.row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));align-items:end}label{display:grid;grid-gap:4px;gap:4px;font-size:13px}button.primary,button[type=submit]{background:var(--accent);color:var(--accent-ink);border:0;border-radius:10px;padding:10px 14px}button.ghost{background:transparent;border:1px solid var(--line);border-radius:10px;padding:8px 12px}td,th{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);font-size:14px}h1{margin:0 0 8px;font-size:28px}h2{margin:0 0 12px;font-size:18px}code{font-size:12px}