/* Login und Code-Gate. Markenneutral: alle Farben und Schriften kommen aus
   /brand-shell.css (tokens.css + brand/<id>/shell.css). Hier gehört kein
   Farb- oder Schriftliteral hinein. */
* { box-sizing: border-box; }
body { margin:0; color:var(--ink); background:var(--paper-2); font-family:var(--font-body); }
.login-page,.gate-page { min-height:100vh; display:grid; place-items:center; padding:24px; }
.login-card,.gate-card { width:min(620px,100%); padding:clamp(30px,5vw,58px); background:var(--paper); border-top:9px solid var(--blue); }
.login-card img,.gate-card img { width:150px; height:auto; margin-bottom:48px; }
.eyebrow { margin:0 0 12px; color:var(--blue); font:700 12px/1.2 var(--font-ui); letter-spacing:.09em; text-transform:uppercase; }
h1 { margin:0 0 24px; font:800 clamp(42px,7vw,68px)/.96 var(--font-display); }
.login-card>p:not(.eyebrow),.gate-card>p:not(.eyebrow) { color:var(--ink-2); font-size:20px; line-height:1.4; }
form { display:grid; gap:12px; margin-top:30px; }
label { display:grid; gap:7px; font:700 13px/1.3 var(--font-ui); }
input { width:100%; min-height:52px; padding:13px 14px; color:var(--ink); background:var(--paper); border:1px solid var(--rule-strong); border-radius:0; font:16px var(--font-ui); text-transform:none; }
input:focus { outline:3px solid color-mix(in srgb,var(--blue) 35%,transparent); border-color:var(--blue); }
button { min-height:50px; padding:12px 18px; color:var(--on-accent); background:var(--blue); border:1px solid var(--blue); border-radius:0; font:700 14px var(--font-ui); cursor:pointer; }
button:hover,button:focus-visible { color:var(--blue); background:var(--paper); }
button:disabled { opacity:.55; cursor:wait; }
.form-message,.form-error { min-height:24px; margin:0; color:var(--ink-2); font-size:14px; }
.form-error { color:var(--danger); }
