*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-fg);line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;text-rendering:optimizeLegibility}
img,svg,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;background:none;border:none;color:inherit}
ul,ol{list-style:none}
.mono{font-family:var(--font-mono)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
::selection{background:var(--color-bg-inverse);color:var(--color-fg-inverse)}
.container{max-width:var(--max-width);margin:0 auto;padding-inline:var(--gutter)}
:focus-visible{outline:2px solid currentColor;outline-offset:3px}
a:focus-visible,button:focus-visible{outline:2px solid var(--color-fg);outline-offset:3px}
.skip-link{position:absolute;top:-100%;right:1rem;z-index:200;background:var(--color-bg-inverse);color:var(--color-fg-inverse);padding:0.75rem 1.5rem;border-radius:var(--radius-sm);transition:top var(--duration) var(--ease)}
.skip-link:focus{top:1rem}
.material-symbols-outlined{font-variation-settings:'FILL' 0,'wght' 400,'GRAD' 0,'opsz' 24;line-height:1;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
/* Inline SVG icon primitive: 1em box so it inherits size via the
   surrounding font-size, mirroring the old icon-font sizing. */
.icon{width:1em;height:1em;display:inline-block;flex-shrink:0;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.news-ticker{max-width:var(--max-width);margin:0 auto;background:var(--glass-bg);color:var(--color-fg);border:1px solid var(--glass-border);border-top:none;overflow:hidden;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}
.ticker-inner{display:flex;align-items:center;gap:var(--sp-4);height:3rem;margin:0 auto;padding-inline:var(--gutter)}
.ticker-label{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--fs-2);font-weight:700;color:var(--color-fg-inverse);flex-shrink:0;background:var(--color-bg-inverse);padding:.4rem .75rem;border-radius:var(--radius-sm)}
.ticker-label .material-symbols-outlined{font-size:var(--icon-sm)}
.ticker-viewport{flex:1;overflow:hidden;position:relative;height:100%;display:flex;align-items:center}
.ticker-track{position:relative;display:block;height:100%;width:100%;touch-action:pan-y;cursor:grab}
.ticker-track:active{cursor:grabbing}
.ticker-item{position:absolute;inset:0;width:100%;display:flex;align-items:center;gap:.5rem;white-space:nowrap;overflow:hidden;font-size:var(--fs-2);font-weight:400;color:var(--color-fg);padding-inline:.25rem;transition:transform .5s cubic-bezier(.4,0,.2,1),opacity .5s ease;will-change:transform,opacity}
.ticker-track.dragging .ticker-item{transition:none}
.ticker-item a{display:inline-flex;align-items:center;gap:.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:inherit;transition:color var(--duration) var(--ease)}
.ticker-item .material-symbols-outlined{font-size:var(--icon-md);color:var(--color-fg)}
.ticker-controls{display:inline-flex;align-items:center;gap:.25rem;flex-shrink:0}
.ticker-btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;color:var(--color-fg);border-radius:var(--radius-sm);transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}
.ticker-btn .material-symbols-outlined{font-size:var(--icon-md)}
.ticker-dots{display:inline-flex;align-items:center;gap:.3rem;flex-shrink:0;padding-inline-end:.35rem}
.ticker-dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.2);padding:0;transition:background var(--duration) var(--ease),transform var(--duration) var(--ease)}
.ticker-dot.is-active{background:var(--color-fg);transform:scale(1.35)}
@media(max-width:720px){
  .ticker-dots{display:none}
  .ticker-btn{width:30px;height:30px}
}
@media (prefers-reduced-motion: reduce){
  .ticker-track{transition:none}
}