:root{--ink:#1a3c34;--ink-soft:#2d5a4e;--gold:#c4a574;--gold-deep:#a8894f;--cream:#f7f3ec;--warm:#efe8dc;--surface:#fffcf7;--text:#1f2a26;--muted:#5c6b65;--border:#e5ddd0;--danger:#b54a3c;--success:#2f6b55;--font-display:"Noto Serif SC", "Songti SC", serif;--font-body:"Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);color:var(--text);background:radial-gradient(1200px 600px at 10% -10%, #c4a5742e, transparent), linear-gradient(160deg, #f3eee4 0%, var(--cream) 45%, #f8f5ef 100%)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.login-page{place-items:center;min-height:100%;padding:32px 16px;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:20px;width:min(420px,100%);padding:36px 32px;box-shadow:0 20px 50px #1a3c3414}.login-card h1{font-family:var(--font-display);color:var(--ink);margin:0 0 8px;font-size:32px}.login-card .lead{color:var(--muted);margin:0 0 28px}.field{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.field label{color:var(--muted);font-size:13px}.field input,.field select,.field textarea{border:1px solid var(--border);background:#fff;border-radius:10px;outline:none;padding:10px 12px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ink-soft)}.btn{cursor:pointer;border:none;border-radius:10px;padding:10px 16px;font-weight:600}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover{background:var(--ink-soft)}.btn-secondary{background:var(--warm);color:var(--ink)}.btn-ghost{color:var(--ink);border:1px solid var(--border);background:0 0}.btn-danger{background:var(--danger);color:#fff}.btn-sm{padding:6px 10px;font-size:13px}.btn:disabled{opacity:.55;cursor:not-allowed}.error{color:var(--danger);margin:0 0 12px;font-size:13px}.session-banner{background:var(--warm);border:1px solid var(--border);border-radius:12px;margin-bottom:20px;padding:14px}.session-banner p{margin:0 0 10px;font-size:14px}.shell{grid-template-columns:232px 1fr;min-height:100%;display:grid}.sidebar{background:linear-gradient(180deg, var(--ink) 0%, #142e28 100%);color:#f4efe6;flex-direction:column;gap:8px;padding:24px 16px;display:flex}.brand{font-family:var(--font-display);padding:8px 12px 20px;font-size:26px}.brand small{font-family:var(--font-body);opacity:.7;margin-top:4px;font-size:12px;font-weight:400;display:block}.nav-link{color:#ffffffc7;border-radius:10px;padding:10px 12px}.nav-link:hover,.nav-link.active{color:#fff;background:#c4a57433}.sidebar-foot{opacity:.8;margin-top:auto;padding:12px;font-size:13px}.main{padding:28px 32px 48px;overflow:auto}.page-title{font-family:var(--font-display);color:var(--ink);margin:0 0 6px;font-size:28px}.page-sub{color:var(--muted);margin:0 0 24px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:24px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px}.stat .label{color:var(--muted);font-size:13px}.stat .value{font-family:var(--font-display);color:var(--ink);margin-top:6px;font-size:30px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:18px;padding:16px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.toolbar input,.toolbar select{border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 10px}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:10px 8px}th{color:var(--muted);font-size:12px;font-weight:600}.tag{background:var(--warm);color:var(--ink);border-radius:999px;padding:2px 8px;font-size:12px;display:inline-block}.tag.ok{color:var(--success);background:#2f6b551f}.tag.warn{color:var(--danger);background:#b54a3c1f}.row-actions{flex-wrap:wrap;gap:6px;display:flex}.pager{color:var(--muted);align-items:center;gap:10px;margin-top:14px;font-size:13px;display:flex}.detail-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.muted{color:var(--muted)}.stack-8{flex-direction:column;gap:8px;display:flex}.stack-12{flex-direction:column;gap:12px;display:flex}@media (width<=960px){.shell{grid-template-columns:1fr}.sidebar{flex-flow:wrap;align-items:center}.sidebar-foot{width:100%;margin-top:0}.stats{grid-template-columns:1fr 1fr}.detail-grid{grid-template-columns:1fr}}
