/* Shared semantic controls and accessibility primitives. Surface tokens belong to their own bundles. */
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; }
button, input { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }
button:focus-visible, a:focus-visible { outline: 3px solid #eaaa00; outline-offset: 5px; }
img { display: block; max-width: 100%; height: auto; }
h1, h2, h3, p, figure { margin: 0; }
ul, ol { list-style: none; padding: 0; margin: 0; }
[hidden] { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.skip-link { position: fixed; z-index: 20; top: 12px; left: 12px; padding: 14px 20px; background: #fff; border: 2px solid var(--royal); border-radius: 8px; transform: translateY(-180%); opacity: 0; pointer-events: none; }
.skip-link:focus { transform: none; opacity: 1; pointer-events: auto; }
.icon { display: inline-block; width: 24px; height: 24px; flex: 0 0 auto; background-color: currentColor; -webkit-mask: var(--icon-url) center / contain no-repeat; mask: var(--icon-url) center / contain no-repeat; vertical-align: middle; }
.icon-button { display: inline-flex; min-width: 44px; min-height: 44px; align-items: center; justify-content: center; border: 0; padding: 8px; background: transparent; color: inherit; border-radius: 10px; }
.icon-button:hover { background: var(--soft); color: var(--royal); }
.button { display: inline-flex; min-height: 52px; justify-content: center; align-items: center; gap: 14px; padding: 15px 22px; border: 1px solid transparent; border-radius: 12px; font-weight: 600; font-size: .86rem; line-height: 1.35; text-align: center; transition: transform 180ms ease, background-color 180ms ease, box-shadow 180ms ease; }
.button:hover { transform: translateY(-2px); }
.button:active { transform: translateY(0); }
.button .icon { width: 19px; height: 19px; }
.button-primary { background: var(--royal); color: #fff; box-shadow: 0 6px 20px #001bff0d; }
.button-primary:hover { background: #0020de; box-shadow: 0 8px 22px #001bff29; }
.button-white { background: #fff; color: var(--navy); }
.button-white:hover { background: #f0f5ff; box-shadow: 0 6px 20px #00032f33; }
.button-outline { color: var(--navy); border-color: var(--line); background: #fff; }
.button-outline:hover { border-color: var(--royal); background: var(--soft); }
.button-small { min-height: 44px; padding: 10px 19px; border-radius: 18px; }
