*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; font-family:var(--font); background:var(--bg-grad); background-attachment:fixed;
  color:var(--text); font-size:14px; line-height:1.5; -webkit-font-smoothing:antialiased;
  overflow:hidden;
}
h1,h2,h3,h4,p,figure{margin:0}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
a{color:var(--accent);text-decoration:none}
ul,ol{margin:0;padding:0;list-style:none}
img{max-width:100%;display:block}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
[hidden]{display:none!important}
kbd{
  font-family:var(--font);font-size:10.5px;font-weight:700;color:var(--text-3);
  background:var(--surface-3);border-radius:6px;padding:3px 6px;border:1px solid var(--line);
  white-space:nowrap;
}
.hide{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* scrollbars */
*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px;border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:var(--text-3);background-clip:content-box;border:3px solid transparent}

/* icons */
[data-icon]{display:inline-flex;align-items:center;justify-content:center;flex:none}
[data-icon] svg{width:1.25em;height:1.25em;display:block}

/* ===== boot splash ===== */
.boot{
  position:fixed;inset:0;display:grid;place-content:center;justify-items:center;gap:14px;
  background:var(--bg-grad);z-index:9999;transition:opacity .45s var(--e-out),visibility .45s;
}
.boot.is-gone{opacity:0;visibility:hidden;pointer-events:none}
.boot__logo{animation:bootspin 1.4s var(--e-spring)}
.boot__logo svg{border-radius:18px;box-shadow:0 14px 34px rgba(27,58,123,.32)}
.boot__name{
  font-family:var(--font-display);
  font-weight:900;font-size:26px;letter-spacing:.05em;color:var(--navy);
  text-transform:uppercase;line-height:1;
}
[data-theme="dark"] .boot__name,[data-theme="neon"] .boot__name{color:var(--peri)}
.boot__bar{width:180px;height:4px;border-radius:99px;background:var(--line);overflow:hidden}
.boot__bar i{display:block;height:100%;width:40%;border-radius:99px;background:var(--grad-accent);animation:bootbar 1.1s var(--e-out) infinite}
@keyframes bootbar{0%{transform:translateX(-110%)}100%{transform:translateX(320%)}}
@keyframes bootspin{0%{transform:scale(.5) rotate(-40deg);opacity:0}100%{transform:none;opacity:1}}

/* shared animations */
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes pop{0%{transform:scale(.9);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes shake{10%,90%{transform:translateX(-2px)}30%,70%{transform:translateX(3px)}50%{transform:translateX(-3px)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
