/* Story and Archive — Norelyn public design system.
 * Theme tokens come from /system-ui.css and /theme-boot.js.
 * The narrative has its own reading layout, not a separate visual identity.
 */
.story-page {
  --story-bg:var(--n-bg);--story-surface:var(--n-surface-2);--story-muted:var(--n-muted);
  --story-ink:var(--n-ink);--story-accent:var(--n-accent);
  --story-line:var(--n-line);--story-quiet:var(--n-quiet);
  margin:0;min-width:320px;background:var(--story-bg);color:var(--story-ink);
  font-family:var(--n-font-ui);line-height:1.65;
}
.story-page *, .story-page *::before,.story-page *::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
.story-page a{color:inherit;text-underline-offset:3px}
.story-page a:focus-visible,.story-page button:focus-visible{outline:2px solid var(--story-accent);outline-offset:4px}
.skip-link{position:fixed;top:-100px;left:12px;z-index:100;display:block;padding:12px;background:var(--story-ink);color:var(--story-bg)!important}.skip-link:focus{top:12px}
.story-header{position:sticky;z-index:50;top:0;width:100%;min-height:58px;padding:0 max(28px,calc((100vw - 1200px)/2));display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border-bottom:1px solid var(--story-line);background:var(--story-bg)}
.story-header .brand{display:inline-flex;align-items:center;gap:7px;text-decoration:none;min-width:0;color:var(--story-ink)}
.story-header .brand-mark{display:block;width:20px;height:20px}
.story-header .brand-wordmark{width:auto;height:18px;display:block}
:root[data-theme="dark"] .story-header .brand-wordmark,.story-page[data-page] .story-footer-wordmark:is(img){filter:none}
:root[data-theme="dark"] .story-header .brand-wordmark{filter:invert(1) grayscale(1) brightness(1.45)}
.story-header .brand-divider{color:var(--story-quiet);margin:0 3px}
.story-header .brand-product{font-size:12px;color:var(--story-quiet);white-space:nowrap}
.story-header .nav{display:flex;gap:clamp(14px,2vw,25px);align-items:center;font-size:11px;font-weight:500}
.story-header .nav a{color:var(--story-muted);text-decoration:none;white-space:nowrap}
.story-header .nav a:hover,.story-header .nav a[aria-current="page"]{color:var(--story-ink)}
.story-header .menu-button{display:none;border:0;color:var(--story-ink);background:none;font-size:12px;padding:10px;cursor:pointer}
.story-header .menu-button[aria-expanded="true"]{text-decoration:underline}
.story-hero{position:relative;min-height:0;padding:clamp(72px,10vw,135px) 0 clamp(56px,8vw,96px);border-bottom:1px solid var(--story-line)}
.story-hero .hero-grid{display:none}.story-hero::after{content:none}
.hero-inner{width:min(calc(100% - 56px),1180px);margin:auto;padding:0}
.eyebrow{margin:0 0 24px;font:600 11px/1.5 var(--n-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--story-quiet)}
.dot{display:inline-block;width:6px;height:6px;margin-right:8px;border-radius:50%;background:var(--story-accent);vertical-align:2px}
.story-hero h1{max-width:1080px;margin:0;font:550 clamp(44px,7vw,91px)/1.18 var(--n-font-display);letter-spacing:-.05em;color:var(--story-ink)}
.story-hero h1 em{color:var(--story-quiet);font-style:normal}
.hero-bottom{display:flex;align-items:end;justify-content:space-between;gap:25px;max-width:800px;margin-top:clamp(48px,6vw,80px);padding-top:24px;border-top:1px solid var(--story-line)}
.hero-bottom p{font-size:clamp(15px,1.5vw,17px);line-height:1.8;margin:0;color:var(--story-muted)}
.text-link{font-size:13px;font-weight:600;white-space:nowrap;text-decoration:none}
.text-link span{margin-left:10px}.text-link:hover{text-decoration:underline}
.hero-index{position:absolute;bottom:20px;right:max(28px,calc((100vw - 1180px)/2));font:11px var(--n-font-mono);color:var(--story-quiet)}
.narrative-layout{width:min(calc(100% - 56px),1180px);margin:auto;display:grid;grid-template-columns:minmax(170px,220px) minmax(0,800px);gap:clamp(32px,7vw,125px);align-items:start}
.story-rail{position:sticky;top:88px;padding:88px 0 25px;display:flex;flex-direction:column;align-items:start;gap:13px}
.story-rail p{font:600 11px var(--n-font-mono);letter-spacing:.1em;margin:0 0 15px;color:var(--story-quiet)}
.story-rail p span{font-weight:400}
.story-rail a{font-size:12px;color:var(--story-muted);text-decoration:none;transition:color .12s}
.story-rail a:hover,.story-rail a:focus-visible{color:var(--story-ink);text-decoration:underline}
.narrative{min-width:0}
.chapter{padding:clamp(74px,8vw,103px) 0;border-bottom:1px solid var(--story-line);scroll-margin-top:75px}
.chapter-meta{display:flex;justify-content:space-between;gap:20px;margin:0 0 26px;font:11px var(--n-font-mono);letter-spacing:.07em;color:var(--story-quiet)}
.chapter h2{max-width:800px;color:var(--story-ink);font:560 clamp(31px,3.6vw,48px)/1.25 var(--n-font-display);letter-spacing:-.035em;margin:0 0 36px}
.chapter p{max-width:690px;margin:0 0 1.3em;font-size:clamp(16px,1.5vw,18px);line-height:1.95;letter-spacing:0;color:var(--story-ink)}
.chapter p a{text-decoration:underline;text-decoration-color:var(--story-quiet)}
.aside-note{padding:18px 0 18px 20px;border-left:2px solid var(--story-line);margin-top:36px;max-width:680px;background:none}
.aside-note span{font:11px var(--n-font-mono);letter-spacing:.06em;color:var(--story-quiet)}
.aside-note p{font-size:14px;line-height:1.8;margin:9px 0 0;color:var(--story-muted)}
.feature-link{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 0;margin-top:38px;border-top:1px solid var(--story-line);border-bottom:1px solid var(--story-line);text-decoration:none}
.feature-link:hover{background:var(--n-accent-soft)}
.feature-link span:first-child{display:flex;flex-direction:column;gap:7px}
.feature-link small{font:11px var(--n-font-mono);letter-spacing:.08em;color:var(--story-quiet)}
.feature-link strong{font-size:20px;font-weight:550}
.feature-link>span:last-child{font-size:22px}
.archive-preview{padding:clamp(80px,9vw,125px) 0;border-top:1px solid var(--story-line);background:var(--n-surface)}
.archive-preview-inner{width:min(calc(100% - 56px),1180px);margin:auto}
.archive-preview h2{font:560 clamp(39px,6vw,75px)/1.18 var(--n-font-display);letter-spacing:-.045em;max-width:900px;margin:0 0 24px}
.archive-preview-inner>p:not(.eyebrow){max-width:630px;font-size:17px;line-height:1.85}
.archive-button{display:inline-flex;align-items:center;justify-content:space-between;gap:46px;margin-top:18px;padding:13px 18px;border:1px solid var(--story-ink);background:var(--story-ink);color:var(--story-bg)!important;text-decoration:none;font-size:13px;font-weight:600}
.archive-button:hover{background:transparent;color:var(--story-ink)!important}
.archive-preview-inner .archive-disclaimer{font-size:12px!important;margin:30px 0 0;color:var(--story-muted)}
.story-footer{display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap;padding:35px max(28px,calc((100vw - 1180px)/2));border-top:1px solid var(--story-line);background:var(--story-bg);font-size:12px}
.story-footer>div{display:flex;flex-direction:column;gap:5px}.footer-logo{font-size:19px;font-weight:620;letter-spacing:-.025em;text-decoration:none}.story-footer nav{display:flex;flex-wrap:wrap;gap:17px}.story-footer nav a{font-size:12px;color:var(--story-muted);text-decoration:none}.story-footer small{color:var(--story-quiet)}.story-footer nav a:hover{text-decoration:underline}
.archive-top{width:min(calc(100% - 56px),1180px);margin:auto;padding:clamp(70px,9vw,112px) 0 45px}
.archive-top h1{font:550 clamp(43px,6.5vw,82px)/1.2 var(--n-font-display);letter-spacing:-.048em;margin:15px 0 22px}
.archive-top>p:not(.eyebrow){font-size:17px;line-height:1.85;max-width:720px}
.archive-stats{font:11px var(--n-font-mono)!important;color:var(--story-quiet);margin-top:36px}
.archive-main{width:min(calc(100% - 56px),1180px);margin:auto;padding-bottom:100px}
.archive-controls{display:flex;flex-wrap:wrap;gap:8px;padding:18px 0 25px;border-top:1px solid var(--story-line);border-bottom:1px solid var(--story-line)}
.archive-controls button{min-height:40px;padding:8px 13px;border:1px solid var(--story-line);border-radius:0;background:none;color:var(--story-muted);font:12px var(--n-font-ui);cursor:pointer}
.archive-controls button[aria-pressed="true"]{background:var(--story-ink);border-color:var(--story-ink);color:var(--story-bg)}
.archive-controls button:hover:not([aria-pressed="true"]){border-color:var(--story-ink);color:var(--story-ink)}
.archive-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:36px}
.archive-entry{display:block;padding:27px 0;border-bottom:1px solid var(--story-line);color:var(--story-ink);text-decoration:none}
.archive-entry[hidden]{display:none}.archive-entry:hover{background:var(--n-accent-soft)}
.entry-top{display:flex;justify-content:space-between;align-items:start;gap:12px}
.entry-tag{font:11px var(--n-font-mono);color:var(--story-quiet)}
.entry-arrow{font-size:18px}.archive-entry h2{font:560 clamp(20px,2.1vw,27px)/1.3 var(--n-font-display);letter-spacing:-.025em;margin:12px 0 8px;overflow-wrap:anywhere}
.archive-entry p{font-size:13px;line-height:1.8;color:var(--story-muted);margin:0;max-width:440px}
.repo-id{display:block;font:11px var(--n-font-mono);color:var(--story-quiet);margin-top:14px;overflow-wrap:anywhere}
.archive-note{font-size:13px;color:var(--story-muted);line-height:1.7;margin:25px 0 0}
@media(max-width:900px){.story-header{padding:0 18px}.story-header .menu-button{display:block;justify-self:end}.story-header .nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;padding:6px 18px 14px;border-bottom:1px solid var(--story-line);background:var(--story-bg)}.story-header .nav.open{display:flex}.story-header .nav a{display:block;padding:13px 4px;font-size:13px}.narrative-layout{display:block}.story-rail{position:static;flex-direction:row;white-space:nowrap;overflow:auto;align-items:center;padding:21px 0;gap:17px;border-bottom:1px solid var(--story-line)}.story-rail a{flex-shrink:0}.story-rail p{flex-shrink:0;margin:0}.chapter{padding:74px 0}}
@media(max-width:650px){.story-header{min-height:58px}.story-header .brand-product{font-size:11px}.hero-inner,.narrative-layout,.archive-preview-inner,.archive-top,.archive-main{width:calc(100% - 38px)}.story-hero{padding:67px 0 77px}.story-hero h1{font-size:clamp(41px,10vw,57px)}.hero-bottom{margin-top:51px;display:block}.hero-bottom p{font-size:15px}.hero-bottom .text-link{display:inline-block;margin-top:21px}.hero-index{display:none}.chapter h2{font-size:clamp(31px,7.9vw,42px)}.chapter p{font-size:16px;line-height:1.9}.chapter-meta{font-size:10px}.chapter{scroll-margin-top:60px}.archive-preview{padding:76px 0}.archive-preview h2{font-size:clamp(38px,9vw,60px)}.archive-list{grid-template-columns:1fr}.archive-top{padding:67px 0 41px}.story-footer{padding:30px 19px;align-items:start;flex-direction:column}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
