*{box-sizing:border-box;margin:0;padding:0;border-radius:0}
html{scroll-behavior:smooth}
body{
  background:
    linear-gradient(rgba(111,168,220,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(111,168,220,.045) 1px, transparent 1px),
    var(--ink);
  background-size:56px 56px, 56px 56px, auto;
  color:var(--paper);font-family:var(--sans);font-size:15px;line-height:1.6;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
body::after{content:'';position:fixed;inset:0;pointer-events:none;opacity:.05;mix-blend-mode:overlay;z-index:1;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E")}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
input,textarea{font:inherit;color:var(--paper);background:none;border:none;outline:none}
::selection{background:#e8e1cf3d}
::-webkit-scrollbar{width:10px}::-webkit-scrollbar-thumb{background:var(--line);border:2px solid var(--ink)}
:focus-visible{outline:2px solid var(--mark);outline-offset:2px}
.wrap{max-width:1360px;margin:0 auto;padding:0 40px;position:relative;z-index:2}
.caps{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.plain{font-style:normal}
.noscript-note{padding:20px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
/* hidden SVG symbol sprite — a style="" attribute here would violate our
   own no-unsafe-inline CSP, which is how the CSP spec caught it */
.sprite{position:absolute}

/* view entrance — the console switches surfaces in place; a single composed
   fade replaces the old scroll-reveal choreography (nothing is ever left at
   opacity 0 — the animation's end state is the resting state) */
@keyframes viewIn{from{opacity:0;transform:translateY(10px)}}
#views > .view{display:none}
#views > .view.active{display:block;animation:viewIn .35s var(--ease)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
