:root{--ink:#43345a;--ink2:#6b5d80;--bg:#fbf7ff;--pink:#ff6f9c;--pink2:#ffd3e1;--lav:#e8dcff;--mint:#cdeedd;--yel:#fff0b3;--sky:#d6e8ff;--line:#43345a;--shadow:0 5px 0 var(--line)}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:Nunito,system-ui,sans-serif;color:var(--ink);line-height:1.65;background:
 radial-gradient(circle at 10% 0%,#ffe1ec 0,transparent 40%),radial-gradient(circle at 90% 30%,#e3dbff 0,transparent 45%),
 radial-gradient(#d9cdea 1px,transparent 1px) 0 0/22px 22px,var(--bg);min-height:100vh}
h1,h2,h3,.fd{font-family:Fredoka,Nunito,sans-serif;line-height:1.2}
a{color:inherit}
.mono{font-family:"JetBrains Mono",monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:800 15px Nunito;padding:12px 22px;border-radius:999px;border:2.5px solid var(--line);background:var(--pink);color:#fff;box-shadow:var(--shadow);cursor:pointer;text-decoration:none;transition:transform .15s,box-shadow .15s}
.btn:hover{transform:translateY(-2px);box-shadow:0 7px 0 var(--line)}
.btn:active{transform:translateY(3px);box-shadow:0 2px 0 var(--line)}
.btn.ghost{background:#fff;color:var(--ink)}
.btn[disabled]{opacity:.6;pointer-events:none}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;max-width:1140px;margin:0 auto}
.logo{display:flex;align-items:center;gap:10px;font:700 21px Fredoka;text-decoration:none}
.logo img{width:38px;height:38px}.logo b{color:var(--pink)}
.card{background:#fff;border:3px solid var(--line);border-radius:24px;box-shadow:0 8px 0 var(--line)}
label.f{display:block;font-weight:800;font-size:14px;margin:14px 0 6px}
input.i{width:100%;font:600 16px Nunito;padding:12px 14px;border:2.5px solid var(--line);border-radius:14px;background:#fff;color:var(--ink)}
input.i:focus{outline:3px solid var(--pink2)}
.hint{font-size:13px;color:var(--ink2);margin-top:4px}
.msg{margin-top:14px;padding:12px 14px;border-radius:14px;font-weight:700;font-size:14px;display:none}
.msg.err{display:block;background:#ffe3ea;border:2px solid #ff9db7}
.msg.ok{display:block;background:var(--mint);border:2px solid #7fcca5}
