:root{
  --bg:#F6F5FB; --surface:#FFFFFF; --surface-2:#F7F6FC; --ink:#1B1E3A; --ink-2:#555A78; --ink-3:#8F93AE;
  --line:#E9E7F3; --line-2:#DAD7EA; --accent:#3D3BB8; --accent-2:#5B58E2; --accent-soft:#EEEDFD; --on-accent:#FFFFFF;
  --pen:#D53A46; --pen-soft:#FDECEE; --peach:#FFE6DB; --lilac:#E6E0FF; --seyes:#DED8F3; --margin:#F3A9B0; --sh:27 30 58;
  --f-ui:"Instrument Sans","Segoe UI",system-ui,sans-serif; --f-display:"Instrument Serif",Georgia,serif; --f-hand:"Caveat","Segoe Print",cursive;
  color-scheme:light;
}
:root[data-app="nuit"]{
  --bg:#15131E; --surface:#211E2E; --surface-2:#282437; --ink:#F2F0FA; --ink-2:#BAB5D4; --ink-3:#8B85A9;
  --line:#2F2A42; --line-2:#3E3858; --accent:#9E99FF; --accent-2:#B7B3FF; --accent-soft:#2C2858; --on-accent:#15132A;
  --pen:#FF7E88; --pen-soft:#3C1E28; --peach:#33242A; --lilac:#29244A; --seyes:#2B2742; --margin:#5C2F38; --sh:0 0 0; color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font:15px/1.55 var(--f-ui);-webkit-font-smoothing:antialiased;display:grid;place-items:center;padding:24px 16px}
body::after{content:"";position:fixed;inset:0;z-index:-1;background:radial-gradient(900px 500px at 10% -10%,var(--lilac),transparent 62%),radial-gradient(700px 420px at 100% 0,var(--peach),transparent 60%)}
.card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:26px;padding:34px 30px 30px;
  box-shadow:0 1px 2px rgb(var(--sh)/.05),0 24px 60px -24px rgb(var(--sh)/.22);position:relative;overflow:hidden}
.card::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.55;
  background:repeating-linear-gradient(to bottom,transparent 0 31px,var(--seyes) 31px 32px);mask:linear-gradient(to bottom,transparent 0,#000 40%,transparent 100%)}
.card::after{content:"";position:absolute;top:0;bottom:0;left:22px;width:1.5px;background:var(--margin);opacity:.6}
.in{position:relative;display:flex;flex-direction:column;gap:18px}
.brand{display:flex;align-items:center;gap:12px}
.brand svg{width:42px;height:42px}
.brand b{font-family:var(--f-display);font-weight:400;font-size:1.6rem;line-height:1}
.brand span{display:block;font-family:var(--f-hand);color:var(--pen);font-size:1.3rem;line-height:1}
h1{font-size:1.05rem;font-weight:600;margin:6px 0 0}
p{margin:0;color:var(--ink-2);font-size:.92rem}
label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.88rem}
input{font:inherit;color:inherit;background:var(--surface-2);border:1px solid var(--line-2);border-radius:14px;padding:12px 14px;width:100%;transition:border-color .2s,box-shadow .2s}
input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
#code{letter-spacing:.35em;font-variant-numeric:tabular-nums;font-size:1.15rem;text-align:center}
button{font:inherit;font-weight:600;border:0;border-radius:14px;padding:13px 16px;cursor:pointer;color:var(--on-accent);
  background:linear-gradient(180deg,var(--accent-2),var(--accent));box-shadow:0 10px 22px -10px var(--accent);transition:transform .15s,filter .2s}
button:hover{filter:brightness(1.06)} button:active{transform:scale(.98)} button[disabled]{opacity:.6;cursor:wait}
.err{background:var(--pen-soft);color:var(--pen);border-radius:12px;padding:10px 12px;font-size:.9rem;font-weight:500}
.err:empty{display:none}
.small{font-size:.8rem;color:var(--ink-3);text-align:center}
