:root{--bg: #f4efe6;--paper: #fffaf3;--ink: #1c1916;--muted: #6b6258;--line: #e6ddd0;--accent: #b45309;--accent-ink: #fffaf3;--danger: #b42318;--ok: #3f6b4a;--side: #241c16;--side-ink: #f4efe6;--side-dim: #c4b8a8}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Iowan Old Style,Palatino Linotype,Palatino,Songti SC,serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100%}.side{background:var(--side);color:var(--side-ink);padding:28px 20px;display:flex;flex-direction:column;gap:28px}.brand{letter-spacing:.14em;font-size:13px;text-transform:uppercase}.brand small{display:block;margin-top:6px;letter-spacing:0;text-transform:none;color:var(--side-dim);font-size:12px}.nav{display:flex;flex-direction:column;gap:4px}.nav a{padding:10px 12px;color:var(--side-dim);border-left:2px solid transparent}.nav a.active,.nav a:hover{color:var(--side-ink);border-left-color:#d97706;background:#ffffff0a}.side-foot{margin-top:auto;font-size:13px;color:var(--side-dim)}.side-foot button{margin-top:10px;background:transparent;color:var(--side-ink);border:1px solid #5a4c3e;padding:6px 10px;cursor:pointer}.main{padding:32px 40px 56px}.page-title{font-size:28px;font-weight:600;margin:0 0 6px}.page-sub{color:var(--muted);margin:0 0 24px;font-size:14px}.toolbar{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;align-items:center}input,select,textarea{background:var(--paper);border:1px solid var(--line);padding:8px 10px;color:var(--ink)}textarea{min-height:88px;width:100%}button.primary,button.ghost,button.danger{border:1px solid var(--ink);background:var(--ink);color:var(--paper);padding:8px 14px;cursor:pointer}button.ghost{background:transparent;color:var(--ink)}button.danger{background:transparent;border-color:var(--danger);color:var(--danger)}button:disabled{opacity:.5;cursor:not-allowed}.table-wrap{background:var(--paper);border:1px solid var(--line);overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-weight:600;color:var(--muted);font-size:12px;letter-spacing:.04em}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.badge{display:inline-block;padding:2px 8px;font-size:12px;border:1px solid var(--line)}.badge.ok{color:var(--ok);border-color:#c9ddce}.badge.bad{color:var(--danger);border-color:#f0c7c2}.badge.warn{color:var(--accent)}.pager{display:flex;gap:8px;align-items:center;margin-top:14px;color:var(--muted);font-size:13px}.login-wrap{min-height:100%;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);background:var(--paper);border:1px solid var(--line);padding:36px 32px}.login-card h1{margin:0 0 8px;font-size:26px}.login-card p{margin:0 0 24px;color:var(--muted)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;font-size:14px}.field span{color:var(--muted)}.error{color:var(--danger);font-size:13px;margin:0 0 12px}.okmsg{color:var(--ok);font-size:13px}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c191659;display:grid;place-items:center;padding:16px}.modal{width:min(520px,100%);background:var(--paper);border:1px solid var(--line);padding:22px}.checks{display:flex;flex-direction:column;gap:8px;margin:12px 0 18px;font-size:14px}@media (max-width: 840px){.shell{grid-template-columns:1fr}.side{flex-direction:row;flex-wrap:wrap;gap:12px}.nav{flex-direction:row;flex-wrap:wrap}.side-foot{margin-top:0}.main{padding:20px 16px 40px}}
