/* Shared base: reset, type, buttons, focus, access gate. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--forest);font:400 17px/1.5 var(--font)}
h1,h2,p{margin:0}
a{color:inherit}
[hidden]{display:none}
img{max-width:100%;height:auto}
:focus-visible{outline:4px solid var(--berry);outline-offset:3px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap);padding:10px 22px;
  border:0;border-radius:var(--r-sm);background:var(--forest);color:var(--card);font:700 17px/1.2 var(--font);
  text-decoration:none;cursor:pointer;touch-action:manipulation;box-shadow:var(--shadow)}
.btn:hover{background:var(--forest-2)}
.btn.quiet{background:var(--card);color:var(--forest);border:1px solid var(--line);box-shadow:none}
.btn.quiet:hover{background:var(--sand)}
/* access gate (ids are read by pilot-access.js) */
.gate:not([hidden]){min-height:100vh;display:grid;place-items:center;padding:24px}
.gate form{width:min(420px,100%);display:grid;gap:12px;padding:28px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}
.gate h1{font-size:30px}
.gate label{font-weight:700}
.gate input{min-height:var(--tap);padding:8px 14px;border:2px solid var(--line);border-radius:var(--r-sm);
  font:600 20px var(--font);letter-spacing:.06em;text-transform:uppercase;background:#fff;color:var(--forest)}
.gate small,.gate .note{color:var(--muted);font-size:14px;line-height:1.4}
.gate .error{min-height:1.4em;color:var(--berry);font-weight:600}
