/* Weybridge 3D Print — base: reset, type, layout, masthead, footer, navigation.
   Colours, faces and sizes come from tokens.css; nothing is hard-coded here. */

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:auto;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink-1);font-family:var(--f-text);font-size:var(--t-body);line-height:1.55;-webkit-font-smoothing:antialiased;font-optical-sizing:auto;transition:background-color .5s,color .5s}
img,video,svg{max-width:100%}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--f-head);font-weight:500;line-height:1.02;margin:0;letter-spacing:-.015em;text-wrap:balance}
h1{font-size:var(--t-h1)} h2{font-size:var(--t-h2)} h3{font-size:var(--t-h3)} h4{font-size:1.15rem}
p{margin:0 0 1em;max-width:60ch}
ul,ol{margin:0 0 1em;padding-left:1.2em;max-width:60ch}
li{margin:.25em 0}
strong,b{font-weight:600}
em{font-style:italic}
hr{border:0;border-top:1px solid var(--line);margin:2em 0}
.lead{font-size:var(--t-lead);line-height:1.42;color:var(--ink-2);max-width:44ch}
.small{font-size:var(--t-small);color:var(--ink-3)}
.eyebrow{color:var(--amber-text);font-weight:500;font-size:.95rem;margin-bottom:14px}
.wrap>.eyebrow:not(:first-child){margin-top:clamp(40px,5vw,64px)}
.inst{font-family:var(--f-inst);font-variant-numeric:tabular-nums}
[hidden]{display:none!important}
.cs1{display:none;visibility:hidden}
[id]{scroll-margin-top:calc(var(--mast) + 8px)}
:focus-visible{outline:2px solid var(--amber);outline-offset:2px}

/* layout */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut)}
.band{padding:var(--band) 0}
.band.alt{background:var(--bg-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.band.tight{padding:calc(var(--band) * .55) 0}
.two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,80px);align-items:start}
.two.center{align-items:center}
.narrow{max-width:72ch}
.fit{width:fit-content;max-width:100%}
.note{max-width:none;margin-top:36px}
.fit .lead,.fit p{max-width:none}

/* buttons and links */
.btn{display:inline-block;font-family:var(--f-text);font-weight:500;font-size:1rem;background:var(--amber);color:#1a140b;padding:15px 24px;text-decoration:none;border:0;cursor:pointer;transition:background var(--t1) ease-out}
.btn:hover{background:var(--amber-text)}
.btn.ghost{background:transparent;color:var(--ink-1);border:1px solid rgb(var(--ink) / .35)}
.btn.ghost:hover{background:rgb(var(--ink) / .06)}
.link{color:var(--amber-text);text-decoration:none;border-bottom:1px solid rgb(240 180 92 / .5)}
.link:hover{border-bottom-color:var(--amber-text)}
.more{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}

/* masthead */
.mast{position:sticky;top:0;z-index:40;background:color-mix(in oklab,var(--bg) 80%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);view-transition-name:mast}
.mast .wrap{display:flex;align-items:center;gap:22px;height:var(--mast)}
.mark{display:flex;align-items:center;gap:10px;text-decoration:none}
.mark svg{width:34px;height:34px;flex:none}
.mark b{font-family:var(--f-mark);font-weight:800;font-size:1.15rem;letter-spacing:-.02em;color:var(--ink-1);white-space:nowrap}
.mark.small svg{width:28px;height:28px}.mark.small b{font-size:1rem}
.nav{display:flex;gap:16px;margin-left:auto;font-size:.9rem;align-items:center}
.nav a{text-decoration:none;color:var(--ink-2);padding:6px 0;border-bottom:2px solid transparent;white-space:nowrap}
.nav a:hover{color:var(--ink-1)}
.nav a.on{color:var(--ink-1);border-bottom-color:var(--amber)}
.nav a.cta{background:var(--amber);color:#1a140b;padding:9px 14px;border:0;font-weight:500}
.nav a.cta:hover{background:var(--amber-text)}
.nav details{position:relative}
.nav summary{list-style:none;cursor:pointer;color:var(--ink-2);padding:6px 0;border-bottom:2px solid transparent;display:flex;align-items:center;gap:7px}
.nav summary::after{content:"";width:6px;height:6px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:translateY(-2px) rotate(45deg);transition:transform var(--t1)}
.nav details[open] summary::after{transform:translateY(1px) rotate(225deg)}
.nav summary::-webkit-details-marker{display:none}
.nav details[open] summary{color:var(--ink-1)}
.nav .menu{position:absolute;right:0;top:36px;background:var(--surface);border:1px solid var(--line);padding:10px 0;min-width:220px;display:grid;box-shadow:0 20px 40px rgb(0 0 0 / .4)}
.nav .menu a{padding:9px 18px;border:0}
.nav .menu a:hover{background:rgb(var(--ink) / .05)}
.menu-btn{display:none;margin-left:auto;background:none;border:1px solid var(--line);color:var(--ink-1);width:40px;height:40px;cursor:pointer;align-items:center;justify-content:center}
.menu-panel{display:none;background:var(--surface);border-bottom:1px solid var(--line)}
.menu-panel a{display:block;padding:12px var(--gut);text-decoration:none;color:var(--ink-1);border-top:1px solid var(--line)}
.menu-panel.open{display:block}
.menu-panel a.cta{background:var(--amber);color:#1a140b;font-weight:500}
.foot .cols a.hot{color:var(--amber-text)}

/* footer */
.foot{padding:56px 0 40px;border-top:1px solid var(--line);font-size:.9rem;color:var(--ink-3)}
.foot .cols{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:30px}
.foot .sitelinks{display:flex;flex-wrap:wrap;gap:4px 22px;margin-top:36px;padding-top:20px;border-top:1px solid var(--line);font-size:.85rem}
.foot .sitelinks a{text-decoration:none;color:var(--ink-3);padding:3px 0}
.foot .sitelinks a:hover{color:var(--ink-1)}
.foot h4{font-family:var(--f-text);font-weight:500;color:var(--ink-1);margin:0 0 10px;font-size:.95rem}
.foot .cols a{display:block;text-decoration:none;color:var(--ink-3);padding:3px 0}
.foot .cols a:hover{color:var(--ink-1)}
.foot .legal{margin-top:24px;font-size:.82rem;max-width:none}
.foot .mark{margin-bottom:12px}
.lights{background:none;border:1px solid var(--line);color:var(--ink-3);font:inherit;font-size:.82rem;padding:6px 10px;cursor:pointer;margin-top:6px}
.lights:hover{color:var(--ink-1)}

/* the watch-live pill follows the reader once the hero is behind them */
.watch-pill{position:fixed;right:18px;bottom:18px;z-index:35;display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);color:var(--ink-1);text-decoration:none;padding:6px 14px 6px 6px;box-shadow:0 14px 30px rgb(0 0 0 / .45);transform:translateY(90px);transition:transform var(--t2) var(--settle)}
.watch-pill.show{transform:none}
.watch-pill .frame{width:44px;height:44px;border-radius:50%;overflow:hidden;position:relative;border:2px solid rgb(var(--ink) / .25);box-shadow:inset 0 0 0 2px #000;flex:none;background:#000}
.watch-pill .frame img{width:100%;height:100%;object-fit:cover;filter:saturate(.7) brightness(.7);transition:filter var(--t2)}
.watch-pill.live .frame img{filter:none}
.watch-pill .onair{position:static;transform:rotate(-4deg);font-size:.68rem;padding:5px 9px;letter-spacing:.12em}
.watch-pill .onair::before,.watch-pill .onair::after{display:none}
.watch-pill .pcts{display:grid;gap:3px;font-family:var(--f-inst);font-size:.8rem;line-height:1}
.watch-pill .pcts b{display:flex;gap:6px;align-items:baseline;font-weight:400;color:var(--vfd);text-shadow:0 0 6px rgb(156 246 221 / .5)}
.watch-pill .pcts small{font-family:var(--f-text);font-size:.68rem;color:var(--ink-3);width:24px;text-shadow:none}
.watch-pill:not(.live) .pcts b{color:var(--ink-3);text-shadow:none}
body.page-live .watch-pill{display:none}

/* pages are one system: cross-document view transitions, the masthead stays put */
@view-transition{navigation:auto}
@media (prefers-reduced-motion:no-preference){
  ::view-transition-old(root){animation:vt-out .26s ease-out both}
  ::view-transition-new(root){animation:vt-in .26s ease-out both}
  ::view-transition-group(story){animation-duration:.7s;animation-timing-function:var(--settle)}
  ::view-transition-old(story),::view-transition-new(story){animation:none;mix-blend-mode:normal;height:100%;object-fit:cover}
  ::view-transition-old(mast),::view-transition-new(mast){animation:none}
}
@keyframes vt-out{to{opacity:0}}
@keyframes vt-in{from{opacity:0}}
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .rv{animation:rv linear both;animation-timeline:view();animation-range:entry 0% entry 45%}
    @keyframes rv{from{transform:translateY(22px)}to{transform:none}}
  }
}

@media (max-width:980px){
  .nav{display:none}
  .menu-btn{display:inline-flex}
  .two,.foot .cols{grid-template-columns:1fr}
}
