*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; text-size-adjust:100%; }
html,body{ margin:0; padding:0; }
body{
  font-family: var(--font-sans);
  font-size: var(--fs-400);
  line-height: var(--lh-base);
  color: var(--c-text);
  background: var(--c-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

h1,h2,h3,h4,h5,h6{ margin:0 0 var(--sp-3); color:var(--c-text); font-weight:var(--fw-semi); line-height:var(--lh-tight); letter-spacing:-.01em; }
h1{ font-size: clamp(1.85rem, 1.2rem + 2.4vw, var(--fs-1000)); font-weight:var(--fw-bold); letter-spacing:-.02em; }
h2{ font-size: clamp(1.4rem, 1.05rem + 1.1vw, var(--fs-800)); }
h3{ font-size: var(--fs-600); }
p{ margin:0 0 var(--sp-4); color:var(--c-text-muted); }
p:last-child{ margin-bottom:0; }

a{ color: var(--c-primary); text-decoration:none; }
a:hover{ text-decoration:underline; }

ul,ol{ margin:0 0 var(--sp-4); padding-left: var(--sp-6); }
li{ margin-bottom: var(--sp-2); }

img,svg,video{ max-width:100%; height:auto; display:block; }
button{ font:inherit; color:inherit; }

hr{ border:0; border-top:1px solid var(--c-border); margin: var(--sp-6) 0; }

code,pre{ font-family: var(--font-mono); font-size:.92em; }
code{ background: var(--c-surface-2); padding:2px 6px; border-radius: var(--r-1); }

::selection{ background: var(--c-primary-soft); color: var(--c-text); }

:focus-visible{
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
  border-radius: var(--r-1);
}

.skip-link{
  position: absolute; top:-40px; left: var(--sp-4);
  background: var(--c-primary); color:#fff;
  padding: var(--sp-2) var(--sp-4); border-radius: var(--r-2);
  z-index: var(--z-toast);
  transition: top var(--dur-2) var(--ease);
}
.skip-link:focus{ top: var(--sp-3); text-decoration:none; }

@media print{
  .app-header, .site-footer, .skip-link{ display:none !important; }
  body{ font-size: 11pt; color:#000; background:#fff; }
}