:root{
  --bg:#e8eef1; --panel:#f6f9fa; --ink:#10283a; --ink2:#4b6577; --line:#a7bcc8;
  --focus:#0a58b8; --focus-ink:#ffffff; --danger:#a5402a; --shadow:rgba(8,24,36,.2);
  --font:'PT Sans','Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  --font-n:'PT Sans Narrow','Arial Narrow','Roboto Condensed',Arial,sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
    --bg:#0e2130; --panel:#132c3c; --ink:#e4eff3; --ink2:#92b2c1; --line:#35566a;
    --focus:#74c4ff; --focus-ink:#08202f; --danger:#f0937c; --shadow:rgba(0,0,0,.45);
    color-scheme:dark;
  }}
:root[data-theme="dark"]{
  --bg:#0e2130; --panel:#132c3c; --ink:#e4eff3; --ink2:#92b2c1; --line:#35566a;
  --focus:#74c4ff; --focus-ink:#08202f; --danger:#f0937c; --shadow:rgba(0,0,0,.45);
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.4 var(--font);-webkit-text-size-adjust:100%}
button,input{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

.wrap{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:36px;padding:24px calc(env(safe-area-inset-right,0px) + 24px) calc(env(safe-area-inset-bottom,0px) + 24px) calc(env(safe-area-inset-left,0px) + 24px);
  text-align:center}

.brand{animation:rise .6s ease both}
.brand h1{margin:0;font:700 42px/1.1 var(--font-n);letter-spacing:.3px;display:inline-flex;align-items:center;gap:14px}
.brand h1 .logo{display:block;width:46px;height:46px;border-radius:11px;flex:none}
.brand p{margin:8px 0 0;color:var(--ink2);font-size:14px}

.stage{position:relative;width:min(300px,86vw);min-height:54px;
  transition:min-height .4s cubic-bezier(.22,.8,.24,1);
  animation:rise .6s .12s ease both}
.stage.open{min-height:250px}
.stage.shake{animation:shake .4s ease}

.go{position:relative;overflow:hidden;width:100%;padding:16px 0;border:0;border-radius:999px;
  background:var(--focus);color:var(--focus-ink);font:700 17px var(--font);cursor:pointer;
  box-shadow:0 8px 20px -8px var(--focus);
  transition:box-shadow .25s ease,transform .2s ease,opacity .3s ease;
  animation:pop .5s .1s cubic-bezier(.22,1.1,.36,1) both}
.go::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;
  background:linear-gradient(120deg,transparent,rgba(255,255,255,.55),transparent);
  transform:skewX(-20deg)}
.go:hover{box-shadow:0 12px 26px -6px var(--focus);transform:translateY(-2px)}
.go:hover::after{animation:shine 1s ease forwards}
.go:active{transform:translateY(0) scale(.96)}
.stage.open .go{position:absolute;inset:0;opacity:0;transform:scale(.92);pointer-events:none;animation:none}

.auth{position:absolute;inset:0;display:flex;flex-direction:column;gap:12px;
  opacity:0;transform:translateY(6px);pointer-events:none;
  transition:opacity .3s ease .1s,transform .3s ease .1s}
.stage.open .auth{position:relative;opacity:1;transform:none;pointer-events:auto}

.auth label{display:flex;flex-direction:column;gap:4px;text-align:left;font-size:13px;color:var(--ink2)}
.auth input{padding:10px 12px;border:1px solid var(--line);border-radius:8px;
  background:var(--panel);color:var(--ink)}
.auth input:focus-visible{outline:2px solid var(--focus);outline-offset:1px}

.err{margin:0;min-height:16px;color:var(--danger);font-size:13px}

.submit{margin-top:2px;padding:12px 0;border:0;border-radius:999px;
  background:var(--focus);color:var(--focus-ink);font:700 15px var(--font);cursor:pointer;
  transition:transform .2s ease}
.submit:hover{transform:translateY(-1px)}
.submit:disabled{opacity:.6;cursor:default;transform:none}

.reg{background:none;border:0;padding:0;font-size:13px;color:var(--ink2);
  text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.reg:hover{color:var(--focus)}

.guest{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:-12px;animation:rise .6s .2s ease both}
.guest[hidden]{display:none}
.guest a{color:var(--ink2);font-size:14px;text-decoration:underline;text-underline-offset:3px}
.guest a:hover{color:var(--focus)}
.guest span{color:var(--ink2);font-size:12.5px;opacity:.85}

@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes pop{0%{opacity:0;transform:scale(.85)}60%{opacity:1;transform:scale(1.04)}100%{opacity:1;transform:scale(1)}}
@keyframes shine{from{left:-60%}to{left:120%}}
@keyframes shake{0%,100%{transform:translateX(0)}15%,85%{transform:translateX(-3px)}30%,70%{transform:translateX(5px)}45%,60%{transform:translateX(-6px)}}
@media (prefers-reduced-motion:reduce){
  .brand,.stage,.go{animation:none!important}
  .go::after{display:none}
}

.adm-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;
  padding:24px;background:rgba(8,24,36,.55)}
.adm-box{width:min(340px,100%);display:flex;flex-direction:column;gap:12px;padding:22px;
  background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:14px;
  box-shadow:0 18px 48px -12px var(--shadow);text-align:left}
.adm-box h2{margin:0 0 2px;font:700 20px var(--font-n)}
.adm-box label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink2)}
.adm-box input{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}
.adm-err{margin:0;min-height:16px;color:var(--danger);font-size:13px}
.adm-row{display:flex;gap:10px;justify-content:flex-end}
.adm-submit,.adm-cancel{padding:10px 18px;border-radius:999px;font:700 14px var(--font);cursor:pointer}
.adm-submit{border:0;background:var(--focus);color:var(--focus-ink)}
.adm-submit:disabled{opacity:.6;cursor:default}
.adm-cancel{border:1px solid var(--line);background:none;color:var(--ink2)}
