:root{
  --bg:#F5F8F6;--card:#fff;--ink:#101512;--mut:#5B6862;--line:#E2E8E4;
  --green:#00A85E;--green-2:#00C974;--green-dark:#00814A;--green-soft:#E4F7ED;
  --red:#E05B4B;--spring:cubic-bezier(.22,1.2,.36,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:78px}
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;font-feature-settings:'tnum' 1;overflow-x:hidden}
::selection{background:var(--green);color:#fff}
.mono{font-family:'JetBrains Mono',monospace}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px}
button{font-family:inherit;cursor:pointer}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:6px}
.ic{width:18px;height:18px;flex:none}
.btn{display:inline-flex;gap:9px;align-items:center;justify-content:center;font-weight:600;font-size:14.5px;padding:13px 22px;border-radius:12px;border:1.5px solid transparent;transition:transform .25s var(--spring),box-shadow .2s,background .15s,border-color .15s,color .15s}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0) scale(.98)}
.btn-g{background:var(--green);color:#fff;box-shadow:0 8px 22px rgba(0,168,94,.28)}
.btn-g:hover{background:var(--green-dark)}
.btn-o{background:#fff;border-color:var(--line);color:var(--ink)}
.btn-o:hover{border-color:var(--green);color:var(--green-dark)}
.btn-sm{padding:9px 15px;font-size:13px;border-radius:10px}
.btn:disabled{opacity:.5;cursor:default;transform:none}
.btn-danger{border-color:#F0C8C0;color:#B3492F}
.btn-danger:hover{background:#B3492F;border-color:#B3492F;color:#fff}
.spin{width:15px;height:15px;border:2px solid var(--green-soft);border-top-color:var(--green);border-radius:50%;animation:spin 1s linear infinite;display:none;flex:none}
.spin.on{display:block}
@keyframes spin{to{transform:rotate(360deg)}}
.chip{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;background:#F0F4F1;color:var(--mut);white-space:nowrap}
.chip.g{background:var(--green-soft);color:var(--green-dark)}
.st{font-size:11.5px;font-weight:800;padding:4px 10px;border-radius:999px;width:max-content}
.st.ok{background:var(--green-soft);color:var(--green-dark)}
.st.w{background:#FBF3E2;color:#A87A1F}
.st.n{background:#EDF1FA;color:#4A63B8}
.st.d{background:#FBEAE7;color:#B3492F}
.fld{display:block;margin-bottom:16px}
.fld>span{display:block;font-size:12px;font-weight:700;color:var(--mut);margin-bottom:7px}
.fld input{width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;font:inherit;outline:none;background:#fff;transition:border-color .15s}
.fld input:focus{border-color:var(--green)}
.fld input.err{border-color:var(--red);animation:shake .35s}
@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
#toasts{position:fixed;right:18px;bottom:18px;z-index:500;display:flex;flex-direction:column;gap:10px}
.toast{display:flex;gap:12px;background:#0E1411;color:#fff;padding:14px 17px;border-radius:13px;border-left:3px solid var(--green);max-width:360px;box-shadow:0 14px 40px rgba(0,0,0,.25);animation:tin .4s var(--spring)}
.toast.out{animation:tout .3s forwards}
.toast .ic{color:var(--green-2);margin-top:2px}
.toast b{display:block;font-size:14px}
.toast span{display:block;font-size:12px;color:#A9C4B4;margin-top:2px}
@keyframes tin{from{opacity:0;transform:translateY(16px) scale(.95)}}
@keyframes tout{to{opacity:0;transform:translateY(10px)}}
html.js .rv{transition:opacity .7s ease,transform .8s var(--spring)}
html.js .rv:not(.on){opacity:0;transform:translateY(28px) scale(.985)}
.rv.on{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}