:root{--bg:#0b1509;--surface1:#162014;--surface2:#1e2e1b;--brand:#22c55e;--accent:#4ade80;--text0:#f5f5f0;--text1:rgba(245,245,240,0.7);--text2:rgba(245,245,240,0.5);--border:rgba(255,255,255,0.07);--amber:#fbbf24;--red:#f87171;--blue:#60a5fa;--radius-card:16px;--radius-btn:12px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text0);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.5}a{color:inherit;text-decoration:none}h1{font-size:26px;margin:0 0 4px}h2{font-size:19px;margin:24px 0 12px}.muted{color:var(--text1)}.small{font-size:13px;color:var(--text2)}.amber{color:var(--amber)}.red{color:var(--red)}.green{color:var(--accent)}.blue{color:var(--blue)}.shell{display:flex;min-height:100vh}.sidebar{width:230px;flex-shrink:0;background:var(--surface1);border-right:1px solid var(--border);padding:20px 12px;display:flex;flex-direction:column;gap:4px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.sidebar .logo{font-size:18px;font-weight:700;padding:8px 12px 20px}.sidebar a{padding:10px 12px;border-radius:10px;color:var(--text1);font-size:14px}.sidebar a:hover{background:var(--surface2);color:var(--text0)}.sidebar a.active{background:var(--surface2);color:var(--accent);font-weight:600}.sidebar .spacer{flex:1 1}.content{flex:1 1;padding:32px 40px;max-width:1100px}.card{background:var(--surface1);border:1px solid var(--border);border-radius:var(--radius-card);padding:16px 20px}.grid{display:grid;grid-gap:12px;gap:12px}.grid-kpi{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.kpi .value{font-size:26px;font-weight:700;color:var(--accent)}.kpi .label{font-size:13px;color:var(--text1)}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text2);padding:8px 12px}td,th{border-bottom:1px solid var(--border)}td{padding:10px 12px;font-size:14px;vertical-align:top}tr:last-child td{border-bottom:none}tr:hover td{background:rgba(255,255,255,.02)}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--border)}.badge.inbox{color:var(--blue);border-color:rgba(96,165,250,.4)}.badge.needs_review{color:var(--amber);border-color:rgba(251,191,36,.4)}.badge.confirmed{color:var(--accent);border-color:rgba(74,222,128,.4)}.badge.archived{color:var(--text2)}.badge.alert{color:var(--red);border-color:rgba(248,113,113,.4)}.btn{display:inline-block;background:var(--brand);color:#06230f;border:none;border-radius:var(--radius-btn);padding:9px 18px;font-size:14px;font-weight:600;cursor:pointer}.btn:hover{filter:brightness(1.1)}.btn.secondary{background:var(--surface2);color:var(--text0)}.btn.ghost,.btn.secondary{border:1px solid var(--border)}.btn.ghost{background:transparent;color:var(--text1)}.btn.danger{background:transparent;color:var(--red);border:1px solid rgba(248,113,113,.4)}.btn.sm{padding:5px 12px;font-size:13px;border-radius:8px}.btn:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{background:var(--surface2);border:1px solid var(--border);border-radius:10px;color:var(--text0);padding:9px 12px;font-size:14px;font-family:inherit}input:focus,select:focus,textarea:focus{outline:1px solid var(--brand)}label{font-size:13px;color:var(--text1);display:block;margin-bottom:4px}.form-row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.form-row>div{display:flex;flex-direction:column}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:16px 0}.chip{padding:6px 14px;border-radius:999px;border:1px solid var(--border);background:var(--surface1);color:var(--text1);font-size:13px;cursor:pointer}.chip.active{background:var(--surface2);color:var(--accent);border-color:rgba(74,222,128,.4)}.dropzone{border:2px dashed var(--border);border-radius:var(--radius-card);padding:40px;text-align:center;color:var(--text1);cursor:pointer}.dropzone.over{border-color:var(--brand);background:rgba(34,197,94,.05)}.notice{padding:12px 16px;border-radius:10px;font-size:14px;margin:12px 0}.notice.warn{background:rgba(251,191,36,.1);color:var(--amber)}.notice.error{background:rgba(248,113,113,.1);color:var(--red)}.notice.ok{background:rgba(74,222,128,.1);color:var(--accent)}