:root{font-family:Inter,"SF Pro Display","PingFang SC",system-ui,sans-serif;color:#17221d;background:#f5f7f4;--accent:#16835b;--accent-dark:#0d6847;--line:#dfe6e1;--muted:#6b7871;--surface:rgba(255,255,255,.88);--danger:#bf3b3b}*{box-sizing:border-box}body{margin:0;min-height:100vh}.glow{position:fixed;inset:0 0 auto;height:340px;background:radial-gradient(circle at 50% -20%,rgba(43,181,126,.22),transparent 65%);pointer-events:none}.shell{position:relative;width:min(1160px,calc(100% - 32px));margin:0 auto;padding:34px 0 80px}h1,h2,p{margin:0}.login-card{width:min(440px,100%);margin:12vh auto 0;padding:38px;border:1px solid rgba(255,255,255,.8);border-radius:28px;background:var(--surface);box-shadow:0 24px 80px rgba(27,65,48,.12);backdrop-filter:blur(20px)}.brand-mark{display:grid;width:48px;height:48px;place-items:center;border-radius:15px;color:white;background:linear-gradient(145deg,#22a572,#0b6948);font:700 22px Georgia,serif;box-shadow:0 8px 24px rgba(20,131,91,.25)}.brand-mark.small{width:38px;height:38px;border-radius:12px;font-size:18px}.eyebrow{margin-top:20px;color:var(--accent);font-size:11px;font-weight:750;letter-spacing:.13em}.login-card h1{margin-top:7px;font-size:32px}.muted,.brand p{color:var(--muted)}.login-card .muted{margin:8px 0 28px}label{display:grid;gap:8px;color:#435049;font-size:13px;font-weight:650}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 13px;color:inherit;background:#fff;font:inherit;outline:none;transition:.15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(22,131,91,.12)}button{border:0;border-radius:11px;padding:10px 14px;font:650 13px inherit;cursor:pointer;transition:.15s}button:disabled{opacity:.55;cursor:wait}.primary{color:white;background:var(--accent);box-shadow:0 5px 15px rgba(22,131,91,.18)}.primary:hover{background:var(--accent-dark)}.secondary{color:var(--accent-dark);background:#e5f3ed}.quiet,.icon{color:#526159;background:transparent}.quiet:hover,.icon:hover{background:#e8eeea}.full{width:100%;margin-top:10px;padding:12px}.error{min-height:20px;margin-top:8px;color:var(--danger);font-size:13px}header{display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:12px}.brand h1{font-size:19px}.brand p{margin-top:2px;font-size:12px}.header-actions,.toolbar-actions{display:flex;gap:8px}.icon{display:grid;width:38px;height:38px;place-items:center;padding:0;font-size:21px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:34px 0 22px}.stats article{padding:20px;border:1px solid rgba(255,255,255,.86);border-radius:18px;background:var(--surface);box-shadow:0 10px 36px rgba(34,68,52,.06)}.stats span{display:block;color:var(--muted);font-size:12px}.stats strong{display:block;margin-top:5px;font-size:27px;font-variant-numeric:tabular-nums}.toolbar{display:flex;justify-content:space-between;gap:14px;margin-bottom:15px}.search{display:flex;align-items:center;width:min(420px,100%);gap:7px;padding-left:12px;border:1px solid var(--line);border-radius:13px;background:var(--surface)}.search span{font-size:20px;color:var(--muted)}.search input{border:0;background:transparent;box-shadow:none}.table-wrap{overflow:hidden;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:0 18px 50px rgba(32,62,47,.07)}table{width:100%;border-collapse:collapse;text-align:left}th{padding:13px 17px;color:var(--muted);background:rgba(241,245,242,.8);font-size:11px;letter-spacing:.04em;text-transform:uppercase}td{padding:15px 17px;border-top:1px solid var(--line);font-size:13px}.name-cell strong{display:block;font-size:14px}.name-cell span{display:block;max-width:260px;margin-top:3px;overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.chip{display:inline-flex;padding:4px 8px;border-radius:999px;color:#55635c;background:#edf1ee;font-size:11px}.chip.ok{color:#0d744e;background:#dff3e9}.actions{display:flex;justify-content:flex-end;gap:6px}.actions button{padding:7px 9px}.danger{color:var(--danger)!important}.cards{display:none}.loading,.empty{padding:48px;text-align:center;color:var(--muted)}.notice{margin:0 0 15px;padding:13px 15px;border:1px solid #b9dfcf;border-radius:13px;color:#126a4a;background:#e9f6f0;font-size:13px}.notice.bad{border-color:#edc1c1;color:#a92f2f;background:#fff0f0}dialog{width:min(520px,calc(100% - 30px));border:0;border-radius:22px;padding:0;color:inherit;background:#fff;box-shadow:0 28px 100px rgba(15,37,27,.28)}dialog::backdrop{background:rgba(21,35,29,.45);backdrop-filter:blur(5px)}#operation-form{padding:25px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between}.modal-head .eyebrow{margin:0 0 5px}.modal-head h2{font-size:22px}.form-fields{display:grid;gap:15px;margin-top:22px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.check{display:flex;align-items:center;gap:9px;font-weight:500}.check input{width:auto}.upstream-row{display:grid;grid-template-columns:1fr 1.7fr auto;align-items:end;gap:8px}.upstream-row button{margin-bottom:1px}footer{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}@media(max-width:760px){.shell{width:min(100% - 22px,600px);padding-top:22px}.stats{gap:8px}.stats article{padding:15px}.stats strong{font-size:23px}.toolbar{flex-direction:column}.toolbar-actions{justify-content:flex-end}.table-wrap{display:none!important}.cards{display:grid;gap:10px}.rule-card{padding:16px;border:1px solid var(--line);border-radius:17px;background:var(--surface)}.rule-card-top{display:flex;justify-content:space-between;gap:12px}.rule-card p{margin:5px 0 13px;color:var(--muted);font-size:12px}.rule-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:13px}.rule-meta span{color:var(--muted);font-size:10px}.rule-meta strong{display:block;margin-top:2px;font-size:12px}.actions{justify-content:flex-start}.grid2,.upstream-row{grid-template-columns:1fr}.upstream-row button{justify-self:start}}@media(prefers-color-scheme:dark){:root{color:#e7eee9;background:#111713;--surface:rgba(25,34,29,.9);--line:#334039;--muted:#99a69f}.glow{opacity:.55}input,select,textarea,dialog{color:#e7eee9;background:#1a241e}.search input{background:transparent}.quiet,.icon{color:#b5c2bb}.quiet:hover,.icon:hover{background:#2b3831}.table-wrap,.rule-card{background:var(--surface)}th{background:#202b25}.chip{color:#c0cac4;background:#2b3731}}
