:root{--bg: #f4f6fa;--panel: #ffffff;--ink: #1b2430;--muted: #647084;--faint: #96a0b0;--line: #e7ecf3;--accent: #2563cc;--accent-soft: #eaf1fc;--p1: #d94a4a;--p1-soft: #fdecec;--p2: #c07d1f;--p2-soft: #fdf3e2;--p3: #6b7787;--p3-soft: #eef1f5;--ok: #0e8a5f;--ok-soft: #e7f6ef;--shadow: 0 1px 2px rgba(20,30,50,.05), 0 4px 16px rgba(20,30,50,.04)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5}button{font:inherit;cursor:pointer}input,select{font:inherit}a{color:var(--accent);text-decoration:none}.login-wrap{min-height:100%;display:grid;place-items:center;padding:24px}.login-card{width:360px;background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:28px}.login-card .brand{display:flex;align-items:center;gap:12px;margin-bottom:18px}.login-card h1{font-size:18px;margin:0}.login-card .sub{color:var(--muted);font-size:12.5px}.field{margin:12px 0}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}.field input{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:#fbfcfe}.field input:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.btn{background:var(--accent);color:#fff;border:none;border-radius:9px;padding:9px 14px;font-weight:600}.btn:hover{filter:brightness(1.05)}.btn.sm{padding:5px 10px;font-size:12.5px;border-radius:7px}.btn.ghost{background:var(--accent-soft);color:var(--accent)}.btn.danger{background:var(--p1-soft);color:var(--p1)}.btn.block{width:100%}.err{color:var(--p1);font-size:12.5px;margin-top:8px}.shell{display:grid;grid-template-columns:214px 1fr;min-height:100%}.side{background:var(--panel);border-right:1px solid var(--line);padding:16px 12px}.side .logo{display:flex;align-items:center;gap:10px;padding:6px 8px 14px}.side .logo b{font-size:15px}.env-chip{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:20px}.env-chip.test{background:var(--accent-soft);color:var(--accent)}.env-chip.live{background:var(--p1-soft);color:var(--p1)}.nav{display:flex;flex-direction:column;gap:2px;margin-top:6px}.nav button{text-align:left;background:none;border:none;color:var(--muted);padding:9px 10px;border-radius:8px;font-weight:500;display:flex;gap:9px;align-items:center}.nav button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav button:hover{background:#f2f5fa}.side .foot{position:absolute;bottom:14px;font-size:11px;color:var(--faint)}.main{padding:22px 26px;overflow:auto}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.topbar h2{margin:0;font-size:19px}.topbar .who{color:var(--muted);font-size:12.5px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.card{background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:14px 16px;box-shadow:var(--shadow)}.stat .big{font-size:26px;font-weight:800}.stat .lab{color:var(--muted);font-size:12.5px}.stat .sub{color:var(--faint);font-size:11.5px;margin-top:3px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:20px 0 8px}.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:700}.b-p1{background:var(--p1-soft);color:var(--p1)}.b-p2{background:var(--p2-soft);color:var(--p2)}.b-p3{background:var(--p3-soft);color:var(--p3)}.b-ok{background:var(--ok-soft);color:var(--ok)}.b-mut{background:#eef1f5;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.on{background:var(--ok)}.dot.off{background:var(--p1)}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.toolbar select,.toolbar input{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.toolbar input.search{min-width:220px}.spacer{flex:1}.table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}.table th,.table td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}.table th{background:#f7f9fc;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:#fafbfe}.mono{font-family:SF Mono,ui-monospace,Menlo,Consolas,monospace;font-size:12px}.rc{color:var(--ink)}.rc .why{color:var(--muted);font-size:12px;margin-top:2px}.group-hdr td{background:#eef2f8;font-weight:700}.empty{text-align:center;color:var(--faint);padding:40px}.switch{width:40px;height:22px;border-radius:20px;background:#d5dbe6;position:relative;border:none;transition:background .15s}.switch.on{background:var(--ok)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s}.switch.on:after{left:20px}.count{color:var(--muted);font-size:12.5px}.loading{color:var(--faint);padding:30px}.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin:14px 0 4px}.pager-info{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.saved-tick{color:var(--ok, #0e8a5f);font-size:11px;font-weight:700;margin-left:6px}.proj-row{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:#fff}.proj-head{display:flex;align-items:center;gap:10px;margin-bottom:9px;flex-wrap:wrap}.tag-muted{font-size:10.5px;font-weight:700;color:var(--muted);background:#eef1f5;border-radius:20px;padding:2px 9px}.tag-warn{font-size:10.5px;font-weight:800;color:#b76a00;background:#fdf3e4;border:1px solid #f3e0c0;border-radius:20px;padding:2px 9px}.chips{display:flex;flex-wrap:wrap;gap:7px;align-items:center}.chip{display:inline-flex;align-items:center;gap:6px;background:var(--accent-soft,#eaf1fc);color:#1b3f7a;border:1px solid #d6e3f9;border-radius:20px;padding:3px 5px 3px 11px;font-size:12px;font-weight:600}.chip-x{border:none;background:none;cursor:pointer;color:#5b6675;font-size:12px;line-height:1;padding:2px 4px;border-radius:50%}.chip-x:hover:not(:disabled){background:#fdeceb;color:#c0392b}.chip-add{display:inline-flex;gap:6px;align-items:center}.chip-add input{border:1px solid var(--line);border-radius:20px;padding:4px 11px;font-size:12px;min-width:170px}.err.sm{font-size:11.5px;margin-top:7px}
