/* Humdinger Cycles: fictional bike shop concept (Gmax Media). Tokens first, phone first. */
@font-face{font-family:"Big Shoulders";src:url("../fonts/bigshoulders-var.woff2") format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Figtree";src:url("../fonts/figtree-var.woff2") format("woff2");font-weight:300 900;font-display:swap}
:root{
  --hot:#FF4A1F; --ink:#16130F; --paper:#FFF3DF; --sun:#FFD21F; --cobalt:#2B3FFF;
  --pad:16px; --r-l:26px; --r-m:18px;
  --display:"Big Shoulders","Arial Narrow",sans-serif; --text:"Figtree",system-ui,sans-serif;
  --head-h:50px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:var(--head-h);-webkit-text-size-adjust:100%}
body{background:var(--hot);color:var(--ink);font-family:var(--text);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
ul{list-style:none}

/* header */
.top{position:sticky;top:0;z-index:20;height:var(--head-h);display:flex;align-items:center;justify-content:space-between;padding:0 var(--pad);background:var(--hot)}
.mark{display:flex;align-items:center;gap:7px;text-decoration:none;font-family:var(--display);font-weight:900;font-size:25px;letter-spacing:.01em;text-transform:uppercase;line-height:1}
.mark svg{width:24px;height:24px}
.top-nav{display:none}
.pill{display:inline-flex;align-items:center;justify-content:center;height:34px;padding:0 16px;border-radius:99px;font-weight:700;font-size:14px;text-decoration:none;white-space:nowrap}
.pill-ink{background:var(--ink);color:var(--paper)}
.pill-sun{background:var(--sun);color:var(--ink)}
.pill-big{height:54px;font-family:var(--display);font-weight:900;font-size:24px;text-transform:uppercase;letter-spacing:.02em;width:100%}
.pill:active{transform:scale(.97)}

/* type */
.shout{font-family:var(--display);font-weight:900;text-transform:uppercase;line-height:.88;letter-spacing:-.005em;font-size:clamp(50px,15.2vw,66px)}
.shout span{display:block;white-space:nowrap}
.shout-2{font-size:clamp(42px,12.4vw,54px)}

/* hero / configurator */
.ride{padding:10px var(--pad) 30px;display:grid;gap:10px}
.ride h1{color:var(--paper);padding:2px 0 4px}
.ride h1 span + span{color:var(--ink)}
.tabs{position:relative;display:grid;grid-template-columns:repeat(3,1fr);height:46px;border-radius:99px;background:rgba(22,19,15,.16)}
.tabs-thumb{position:absolute;left:0;top:0;bottom:0;width:33.3333%;border-radius:99px;background:var(--ink);transform:translateX(calc(var(--m,0) * 100%))}
.tab{position:relative;font-family:var(--display);font-weight:800;font-size:21px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink)}
.tab.is-on{color:var(--paper)}
.stage{position:relative;aspect-ratio:358/204;border-radius:var(--r-l);background:var(--paper);overflow:hidden;isolation:isolate}
.stage-id{position:absolute;left:16px;top:11px;z-index:2;display:flex;align-items:center;gap:8px}
.stage-name{font-family:var(--display);font-weight:900;font-size:30px;line-height:1;text-transform:uppercase}
.stage-type{font-style:normal;font-weight:700;font-size:13px;line-height:1;background:var(--sun);border-radius:99px;padding:5px 9px}
.stage-no{position:absolute;right:16px;top:14px;z-index:2;font-family:var(--display);font-weight:700;font-size:17px;line-height:1;letter-spacing:.04em}
.road{position:absolute;left:0;right:0;bottom:5.4%;height:3px;background:repeating-linear-gradient(90deg,var(--ink) 0 34px,transparent 34px 48px);background-position-x:var(--road,0px);opacity:.9}
.bike{position:absolute;left:8%;width:84%;bottom:3.6%;height:auto;overflow:visible;transform-origin:50% 96%}
.bike .tyre{fill:none;stroke:var(--ink);stroke-width:7}
.bike .rim{fill:none;stroke:var(--ink);stroke-width:1.6;opacity:.55}
.bike .spokes{fill:none;stroke:var(--ink);stroke-width:1.1;opacity:.6}
.bike .knobs{fill:none;stroke:var(--ink);stroke-width:4;stroke-dasharray:3.5 5.4}
.bike .reflector{fill:var(--sun);stroke:var(--ink);stroke-width:1.2}
.bike .hub{fill:var(--ink)}
.bike .chain{fill:none;stroke:var(--ink);stroke-width:1.8}
.bike .frame{fill:none;stroke:var(--frame);stroke-linecap:round;stroke-linejoin:round}
.bike .frame-fill{fill:var(--frame)}
.bike .ink-line{fill:none;stroke:var(--ink);stroke-linecap:round;stroke-linejoin:round}
.bike .ink-fill{fill:var(--ink)}
.bike .ring{fill:var(--paper);stroke:var(--ink);stroke-width:4.5}
.bike .bag{fill:var(--sun);stroke:var(--ink);stroke-width:2.5;stroke-linejoin:round}
.bike .basket path:first-child{fill:var(--sun);stroke:var(--ink);stroke-width:3;stroke-linejoin:round}
.bike .weave{fill:none;stroke:var(--ink);stroke-width:1.6}

.paint{display:flex;align-items:center;justify-content:space-between;height:48px}
.paint-label{font-weight:600;font-size:14px;line-height:1.15;display:grid}
.paint-name{font-family:var(--display);font-weight:900;font-size:25px;text-transform:uppercase;letter-spacing:.02em;color:var(--paper)}
.swatches{display:flex;gap:10px}
.sw{position:relative;width:40px;height:40px;border-radius:50%;background:var(--c);border:3px solid var(--paper)}
.sw.is-on{box-shadow:0 0 0 3px var(--ink)}

.specs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding-top:2px}
.spec{display:grid;gap:5px}
.spec dd{display:flex;align-items:baseline;gap:4px;color:var(--paper);overflow:hidden}
.spec-v{font-family:var(--display);font-weight:900;font-size:50px;line-height:.86;font-variant-numeric:tabular-nums;display:inline-block}
.spec dd i{font-style:normal;font-weight:700;font-size:13px;color:var(--ink)}
.spec dt{font-weight:700;font-size:13px}
.bar{display:block;height:7px;border-radius:9px;background:rgba(22,19,15,.2);overflow:hidden}
.bar-fill{display:block;height:100%;width:100%;border-radius:9px;background:var(--ink);transform-origin:0 50%;transform:scaleX(var(--v,0))}
.ride-foot{display:grid;gap:12px;padding-top:26px}
.ride-line{font-weight:600;font-size:16px}

/* built from parts: exploded product view */
.parts{padding:0 12px 34px}
.parts-panel{position:relative;aspect-ratio:366/388;border-radius:var(--r-l);overflow:hidden;background:radial-gradient(120% 90% at 50% 46%,#FFFBF1 0,#FFF3DF 52%,#F3E2C4 100%);--frame:rgb(43,63,255);--frame-d:color-mix(in srgb,var(--frame) 66%,#1a1208);--frame-l:color-mix(in srgb,var(--frame) 52%,#fff)}
.parts-head{position:absolute;left:16px;top:12px;z-index:2;pointer-events:none}
.parts-title{font-family:var(--display);font-weight:900;font-size:28px;line-height:1;text-transform:uppercase}
.parts-sub{font-weight:700;font-size:13px;line-height:1.3;color:var(--hot)}
.hd{position:absolute;inset:0;width:100%;height:100%;cursor:pointer}
.hd path{stroke-linecap:round;stroke-linejoin:round}
.hd-shadow{fill:#3b2a12}
.hd-axes path{fill:none;stroke:var(--ink);stroke-width:.9;stroke-dasharray:1 4}
.hd-lead{fill:none;stroke:var(--ink);stroke-width:1.1}
.hd-dot{fill:var(--paper);stroke:var(--ink);stroke-width:1.4}
.hd-t1{font-family:var(--display);font-weight:900;font-size:17px;text-transform:uppercase;letter-spacing:.03em;fill:var(--ink)}
.hd-t2{font-family:var(--text);font-weight:700;font-size:13px;fill:var(--hot)}
.parts-btn{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);height:40px;padding:0 20px;font-size:15px;z-index:2}
.parts-btn:active{transform:translateX(-50%) scale(.97)}

/* shop floor */
.floor{background:var(--paper);border-radius:32px 32px 0 0;padding:34px 0 40px}
.floor h2{padding:0 20px}
.floor h2 span + span{color:var(--hot)}
.chips{position:sticky;top:var(--head-h);z-index:5;display:flex;gap:8px;overflow-x:auto;padding:14px 20px 12px;background:var(--paper);scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;height:36px;padding:0 15px;border-radius:99px;border:2px solid var(--ink);font-weight:700;font-size:14px;white-space:nowrap}
.chip.is-on{background:var(--ink);color:var(--paper)}
.grid{position:relative;margin:0 20px}
.card{position:absolute;left:0;top:0;border-radius:var(--r-m);overflow:hidden;background:#e9dcc4;transform-origin:50% 50%}
.card img{width:100%;height:100%;object-fit:cover}
.card-name{position:absolute;left:8px;top:8px;background:var(--paper);border-radius:99px;padding:5px 10px 4px;font-family:var(--display);font-weight:800;font-size:17px;line-height:1;text-transform:uppercase;letter-spacing:.03em}
.floor-note{padding:18px 20px 0;font-weight:600}

/* workshop */
.bench{background:var(--ink);color:var(--paper);padding:0 0 44px}
.bench-photo{background:var(--paper)}
.bench-photo img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:0 0 32px 32px}
.bench-body{padding:30px 20px 0;display:grid;gap:14px}
.bench h2 span + span{color:var(--sun)}
.bench-lead{font-size:16px}
.jobs{display:grid;gap:8px}
.job{width:100%;display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:12px;height:54px;padding:0 16px;border-radius:var(--r-m);border:2px solid rgba(255,243,223,.35);text-align:left}
.job b{font-weight:700;font-size:16px}
.job i{font-style:normal;font-weight:600;font-size:14px;opacity:.8}
.tick{width:26px;height:26px;border-radius:50%;border:2px solid var(--paper);position:relative}
.job.is-on{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.job.is-on .tick{background:var(--hot);border-color:var(--hot)}
.job.is-on .tick::after{content:"";position:absolute;left:8px;top:4px;width:6px;height:11px;border:solid var(--paper);border-width:0 3px 3px 0;transform:rotate(42deg)}
.ticket{background:var(--sun);color:var(--ink);border-radius:var(--r-l);padding:18px 20px 20px;display:grid;gap:6px}
.ticket-label{font-weight:700;font-size:14px}
.ticket-v{display:flex;align-items:baseline;gap:8px}
.ticket-n{font-family:var(--display);font-weight:900;font-size:84px;line-height:.82;font-variant-numeric:tabular-nums}
.ticket-v i{font-style:normal;font-weight:800;font-size:18px}
.bar-ticket{height:10px;margin-top:6px}
.ticket-note{font-size:14px;font-weight:600;padding-top:4px}

/* visit + footer */
.visit{background:var(--sun);padding:38px 20px 40px;display:grid;gap:22px}
.visit h2 span + span{color:var(--hot)}
.visit-grid{display:grid;gap:18px}
.visit h3{font-family:var(--display);font-weight:900;font-size:24px;text-transform:uppercase;letter-spacing:.02em;line-height:1.1}
.visit p{font-size:17px;font-weight:500}
.foot{background:var(--ink);color:var(--paper);padding:28px 20px 34px;display:grid;gap:10px;font-size:13px}
.foot-mark{font-family:var(--display);font-weight:900;font-size:30px;text-transform:uppercase;line-height:1;color:var(--hot)}

/* desktop: a showcase, not a stretched phone */
@media (min-width:900px){
  :root{--pad:40px;--head-h:68px}
  .mark{font-size:34px}.mark svg{width:32px;height:32px}
  .top-nav{display:flex;gap:34px;font-weight:700;font-size:16px}
  .top-nav a{text-decoration:none}
  .pill{height:42px;padding:0 22px;font-size:15px}
  .ride{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-template-areas:"h st" "tabs st" "paint st" "specs st" "foot st";column-gap:clamp(32px,5vw,90px);row-gap:22px;align-items:center;padding:clamp(20px,4vh,60px) var(--pad) 70px;max-width:1680px;margin:0 auto;min-height:calc(100vh - var(--head-h))}
  .ride h1{grid-area:h;font-size:clamp(80px,8.4vw,150px)}
  .tabs{grid-area:tabs;height:58px}.tab{font-size:26px}
  .stage{grid-area:st;border-radius:44px;aspect-ratio:1/.68}
  .stage-id{left:34px;top:28px}.stage-name{font-size:clamp(44px,4.6vw,72px)}.stage-type{font-size:15px;padding:7px 13px}
  .stage-no{right:34px;top:34px;font-size:24px}
  .road{height:4px}
  .paint{grid-area:paint;height:60px}.paint-name{font-size:34px}.sw{width:50px;height:50px}
  .specs{grid-area:specs}.spec-v{font-size:clamp(60px,6vw,96px)}.spec dd i,.spec dt{font-size:15px}
  .ride-foot{grid-area:foot;grid-template-columns:1fr auto;align-items:center;padding-top:6px}
  .pill-big{width:auto;height:64px;padding:0 36px;font-size:28px}
  .shout-2{font-size:clamp(70px,7vw,120px)}
  .parts{padding:0 var(--pad) 80px;max-width:1680px;margin:0 auto}
  .parts-panel{aspect-ratio:16/8.2;border-radius:44px}
  .parts-head{left:34px;top:28px}.parts-title{font-size:clamp(44px,4.6vw,72px)}.parts-sub{font-size:17px}
  .hd-t1{font-size:24px}.hd-t2{font-size:16px}
  .parts-btn{bottom:26px;height:52px;padding:0 30px;font-size:17px}
  .floor{border-radius:56px 56px 0 0;padding:80px 0 90px}
  .floor h2,.chips,.floor-note{padding-left:max(40px,calc(50vw - 800px));padding-right:max(40px,calc(50vw - 800px))}
  .chips{padding-top:26px;padding-bottom:22px;gap:12px}
  .chip{height:46px;padding:0 22px;font-size:16px}
  .grid{margin:0 max(40px,calc(50vw - 800px))}
  .card{border-radius:28px}.card-name{left:14px;top:14px;font-size:22px;padding:8px 14px 6px}
  .bench{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;padding:0}
  .bench-photo{background:var(--ink)}
  .bench-photo img{height:100%;aspect-ratio:auto;border-radius:0 56px 56px 0}
  .bench-body{padding:90px clamp(40px,6vw,110px);align-content:center;gap:20px}
  .visit{padding:90px max(40px,calc(50vw - 800px));gap:40px}
  .visit-grid{grid-template-columns:repeat(3,1fr)}
  .foot{padding:40px max(40px,calc(50vw - 800px)) 50px;font-size:14px}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
