/* InkByte homepage. Loads after main.css and only styles the homepage (body.home).
   Idea: strategy as navigation. The radar finds one clear signal in the noise.
   Lime is used only as instrument phosphor; red stays the brand colour. */

.home{
  --night:#0a0a0b; --panel:#141416; --panel2:#18181b; --rule:#2a2a2e;
  --text:#ececec; --soft:#a9a9ae; --dim:#76767c;
  --red:#C3314A; --red-hi:#E04A63; --phos:#BADA55; --phos-dim:rgba(186,218,85,.28);
}
.home h1,.home h2,.home h3{text-transform:none}
.x-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Buttons: no arrows, sentence case */
.x-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.8rem 1.35rem;border-radius:3px;
  font:500 .95rem/1.1 var(--sans);letter-spacing:.02em;text-decoration:none;background:var(--red);color:#fff;border:1px solid var(--red);
  transition:background-color .15s,color .15s,border-color .15s}
.x-btn:hover{background:#fff;color:#000;border-color:#fff}
.x-btn--line{background:transparent;border-color:#5c5c62}
.x-btn--line:hover{background:#fff;color:#000;border-color:#fff}
.x-btn--small{min-height:42px;padding:.6rem 1.05rem;font-size:.88rem}
.x-link-btn{background:none;border:0;padding:0;color:#fff;font:inherit;text-decoration:underline;text-decoration-color:var(--red);
  text-underline-offset:4px;text-decoration-thickness:2px;cursor:pointer}
.x-link-btn:hover{color:var(--red-hi)}

/* ---------- Hero ---------- */
.x-hero{padding:3.2rem 0 3.6rem}
.x-hero__grid{display:grid;gap:2.6rem;align-items:center}
.x-hero h1{text-wrap:balance;font-size:clamp(2.15rem,5.6vw,4.3rem);font-weight:300;letter-spacing:-.012em;line-height:1.06;margin:0 0 1.6rem;max-width:15ch}
.x-lede{font-size:clamp(1.02rem,1.5vw,1.16rem);line-height:1.7;color:#d9d9dc;max-width:36em;margin:0 0 2rem}
.x-routes{display:flex;flex-wrap:wrap;gap:.8rem}
.x-quiet{margin:1.1rem 0 0;color:var(--soft);font-size:.95rem}

.x-scope{margin:0;justify-self:center;width:100%;max-width:600px}
.x-scope__frame{position:relative;aspect-ratio:1/1;width:100%}
.x-scope__canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:crosshair;touch-action:manipulation}
/* Bezel corners, like an instrument panel */
.x-scope__frame::before,.x-scope__frame::after{content:"";position:absolute;width:22px;height:22px;border:1px solid var(--phos-dim);pointer-events:none}
.x-scope__frame::before{top:0;left:0;border-right:0;border-bottom:0}
.x-scope__frame::after{right:0;bottom:0;border-left:0;border-top:0}
.x-hud{position:absolute;display:flex;flex-direction:column;gap:.15rem;font-size:.72rem;line-height:1.25;color:var(--dim);
  font-variant-numeric:tabular-nums;letter-spacing:.03em;pointer-events:none;max-width:46%}
.x-hud__v{color:var(--phos);font-weight:500;font-size:.8rem}
.x-hud--tl{top:.5rem;left:.9rem}.x-hud--tr{top:.5rem;right:.9rem;text-align:right}
.x-hud--bl{bottom:.5rem;left:.9rem}.x-hud--br{bottom:.5rem;right:.9rem;text-align:right}
.x-hud--bl .x-hud__v{color:#fff;font-weight:400}
.x-scope__cap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.4rem 1.2rem;margin-top:.9rem;font-size:.88rem;color:var(--soft)}
.x-scope.is-clear .x-hud--tl .x-hud__v{color:var(--red-hi)}

@media(min-width:980px){
  .x-hero{padding:4.2rem 0 4.6rem}
  .x-hero__grid{grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);gap:3.5rem;min-height:min(calc(100svh - 150px),760px)}
}
@media(max-width:520px){.x-hud{font-size:.64rem}.x-hud__v{font-size:.72rem}.x-hud--bl{max-width:62%}}

/* ---------- Shared section heads ---------- */
.x-section{padding:5rem 0}
.x-head{max-width:42rem;margin:0 0 2.6rem}
.x-head h2{font-size:clamp(1.7rem,3.6vw,2.6rem);font-weight:300;letter-spacing:-.005em;line-height:1.15;margin:0 0 .9rem}
.x-head p{color:var(--soft);margin:0;font-size:1.04rem}
.x-note{margin:2rem 0 0;color:var(--soft);max-width:46rem}

/* ---------- What I do ---------- */
.x-services{list-style:none;margin:0;padding:0;display:grid;gap:0 3rem}
.x-services li{border-top:1px solid var(--rule);padding:1.6rem 0 1.8rem;display:flex;flex-direction:column}
.x-services h3{font-size:1.35rem;font-weight:500;letter-spacing:0;margin:0 0 .6rem}
.x-services p{color:#cfcfd3;margin:0 0 1rem;flex:1}
.x-services a{font-weight:500;font-size:.92rem;align-self:flex-start}
@media(min-width:760px){.x-services{grid-template-columns:1fr 1fr}}
.x-aside{margin:1.4rem 0 0;padding:1rem 0 1rem 1.1rem;border-left:2px solid var(--red);color:var(--soft);max-width:46rem}

/* ---------- Demo ---------- */
.x-demo__grid{display:grid;gap:1.6rem;align-items:start}
@media(min-width:900px){.x-demo__grid{grid-template-columns:minmax(0,.8fr) minmax(0,1.5fr);gap:2.4rem}}
.x-brief{background:var(--panel);border:1px solid var(--rule);border-radius:6px;padding:1.4rem 1.5rem}
.x-brief h3{font-size:1.05rem;font-weight:500;margin:0 0 .2rem}
.x-brief__who{color:var(--soft);margin:0 0 1rem;font-size:.92rem}
.x-facts{list-style:none;margin:0;padding:0;display:grid;gap:.55rem;font-size:.95rem;color:#cfcfd3}
.x-facts li{display:grid;grid-template-columns:1.2rem 1fr;gap:.6rem;align-items:start}
.x-facts li::before{content:"";width:.8rem;height:.8rem;margin-top:.42rem;border:1px solid #55555b;border-radius:2px;transition:background-color .2s,border-color .2s}
.x-facts li.is-used{color:#fff}
.x-facts li.is-used::before{background:var(--phos);border-color:var(--phos)}
.x-draft{padding:0 0 1.4rem}
.x-draft p:last-child{font-size:clamp(1.12rem,1.9vw,1.38rem);line-height:1.55;margin:0;font-weight:300}
.x-draft--generic p:last-child{color:var(--soft)}
.x-draft__label{font-size:.82rem;font-weight:500;color:var(--soft);margin:0 0 .5rem;letter-spacing:.02em}
.x-live__text{font-size:clamp(1.12rem,1.9vw,1.38rem);line-height:1.55;margin:0;font-weight:300;min-height:6.2em}
.x-live__text span{transition:color .25s,opacity .25s}
.x-live__text .is-generic{color:var(--soft)}
.x-live__text .is-voice{color:#fff}
.x-live__text .is-next{text-decoration:underline wavy rgba(224,74,99,.8);text-decoration-thickness:1px;text-underline-offset:5px}
.js .x-draft{display:none}
.x-slider{display:block;margin:0;position:relative;z-index:1}
.x-slider input{width:100%;appearance:none;-webkit-appearance:none;height:2.6rem;background:transparent;cursor:grab;margin:0}
.x-slider input:active{cursor:grabbing}
.x-slider input::-webkit-slider-runnable-track{height:2px;background:linear-gradient(to right,var(--red) var(--p,0%),var(--rule) var(--p,0%))}
.x-slider input::-moz-range-track{height:2px;background:var(--rule)}
.x-slider input::-moz-range-progress{height:2px;background:var(--red)}
.x-slider input::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-10px;background:var(--red);border:2px solid #fff;transform:rotate(45deg);border-radius:2px}
.x-slider input::-moz-range-thumb{width:18px;height:18px;background:var(--red);border:2px solid #fff;transform:rotate(45deg);border-radius:2px}
.x-slider input:focus-visible{outline:2px solid var(--red-hi);outline-offset:4px}

/* Slider affordance: end labels, step ticks, a pulsing handle and a hint until first use */
.x-slider-wrap{position:relative;margin:1.5rem 0 1.1rem}
.x-slider__ends{display:flex;justify-content:space-between;font-size:.8rem;font-weight:500;color:var(--soft);margin:0}
.x-slider__ticks{position:relative;z-index:0;display:flex;justify-content:space-between;padding:0 10px;height:8px;margin-top:calc(-1.3rem + 3px);pointer-events:none}
.x-slider__ticks i{display:block;width:1px;height:8px;background:#5a5a60}
.x-slider__hint{margin:1rem 0 0;font-size:.9rem;font-weight:500;color:#fff;transition:opacity .4s}
.x-hint-arrow{display:inline-block;margin-left:.45rem;color:var(--red-hi)}
.is-hinting .x-hint-arrow{animation:x-nudge 1.1s ease-in-out infinite}
.is-touched .x-slider__hint{opacity:0}
.is-hinting .x-slider input::-webkit-slider-thumb{animation:x-pulse 1.6s ease-out infinite}
.is-hinting .x-slider input::-moz-range-thumb{animation:x-pulse 1.6s ease-out infinite}
@keyframes x-nudge{0%,100%{transform:translateX(0)}50%{transform:translateX(6px)}}
@keyframes x-pulse{0%{box-shadow:0 0 0 0 rgba(224,74,99,.75)}70%{box-shadow:0 0 0 14px rgba(224,74,99,0)}100%{box-shadow:0 0 0 0 rgba(224,74,99,0)}}
@media(prefers-reduced-motion:reduce){.is-hinting .x-hint-arrow,.is-hinting .x-slider input::-webkit-slider-thumb,.is-hinting .x-slider input::-moz-range-thumb{animation:none}}

.x-meters{display:flex;gap:2rem;flex-wrap:wrap}
.x-meters p{margin:0;color:var(--soft);font-size:.92rem}
.x-meter__v{color:#fff;font-weight:500;font-size:1.3rem;font-variant-numeric:tabular-nums;margin-right:.25rem}

/* ---------- Where are you stuck ---------- */
.x-toggle{display:inline-flex;border:1px solid #3a3a40;border-radius:4px;padding:3px;margin:0 0 1.8rem;gap:3px}
.x-toggle button{font:500 .92rem/1 var(--sans);color:var(--soft);background:transparent;border:0;border-radius:2px;padding:.75rem 1.1rem;cursor:pointer;min-height:44px}
.x-toggle button[aria-pressed="true"]{background:#fff;color:#000}
.x-group{max-width:52rem}
.x-group + .x-group{margin-top:2.6rem}
.js .x-group + .x-group{margin-top:0}
.x-group__title{font-size:1rem;font-weight:500;color:var(--soft);margin:0 0 .6rem}
.js .x-group__title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.x-group[hidden]{display:none}
.x-group details{border-top:1px solid var(--rule)}
.x-group details:last-child{border-bottom:1px solid var(--rule)}
.x-group summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:center;
  padding:1.15rem 0;font-size:clamp(1.05rem,1.8vw,1.25rem);font-weight:400;color:#fff}
.x-group summary::-webkit-details-marker{display:none}
.x-group summary::after{content:"";width:14px;height:14px;background:
  linear-gradient(var(--red-hi),var(--red-hi)) center/14px 2px no-repeat,
  linear-gradient(var(--red-hi),var(--red-hi)) center/2px 14px no-repeat;transition:transform .2s}
.x-group details[open] summary::after{transform:rotate(45deg)}
.x-group summary:hover{color:var(--red-hi)}
.x-answer{padding:0 0 1.5rem;max-width:44rem}
.x-answer p{color:#cfcfd3;margin:0 0 .7rem}
.x-answer b{color:#fff;font-weight:500}
.x-answer .x-btn{margin-top:.5rem}

/* ---------- Route ---------- */
.x-route__grid{display:grid;gap:2rem}
@media(min-width:900px){
  .x-route__grid{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:3.5rem;align-items:start}
  .x-plot{position:sticky;top:96px}
}
.x-plot{background:var(--panel);border:1px solid var(--rule);border-radius:6px;padding:1rem}
.x-plot__svg{display:block;width:100%;height:auto}
.x-plot__grid line{stroke:#232328;stroke-width:1}
.x-plot__grid text{fill:var(--dim);font:500 9px var(--sans);font-variant-numeric:tabular-nums}
.x-plot__ghost{fill:none;stroke:rgba(186,218,85,.22);stroke-width:1;stroke-dasharray:3 4}
.x-plot__path{fill:none;stroke:var(--phos);stroke-width:1.5;stroke-dasharray:var(--len,1000);stroke-dashoffset:calc(var(--len,1000) * (1 - var(--p,1)));opacity:.85}
.x-plot__dots circle{fill:var(--night);stroke:var(--phos-dim);stroke-width:1.5;transition:fill .25s,stroke .25s}
.x-plot__dots circle.is-on{fill:var(--red);stroke:var(--red-hi)}
.x-plot__dots text{fill:var(--soft);font:500 10px var(--sans)}
.x-plot__read{display:flex;justify-content:space-between;gap:1rem;margin:.6rem .2rem 0;font-size:.8rem;color:var(--soft);font-variant-numeric:tabular-nums}
.x-plot__read [data-plot="place"]{color:#fff;font-weight:500}
@media(max-width:899px){.x-plot{max-width:520px}}

.x-legs{list-style:none;margin:0;padding:0;counter-reset:leg;position:relative}
.x-legs::before{content:"";position:absolute;left:.45rem;top:.6rem;bottom:.6rem;width:1px;background:var(--rule)}
.x-legs li{counter-increment:leg;position:relative;padding:0 0 2rem 2.4rem}
.x-legs li::before{content:"";position:absolute;left:.08rem;top:.38rem;width:.75rem;height:.75rem;border-radius:50%;background:var(--night);border:1px solid #55555b;transition:background-color .25s,border-color .25s}
.x-legs li.is-on::before{background:var(--red);border-color:var(--red-hi)}
.x-legs__where{margin:0 0 .25rem;font-size:.85rem;color:var(--soft);font-variant-numeric:tabular-nums}
.x-legs__where::before{content:counter(leg,decimal-leading-zero) "  ";color:var(--red-hi);font-weight:500;white-space:pre}
.x-legs h3{font-size:1.2rem;font-weight:500;margin:0 0 .4rem}
.x-legs p{margin:0;color:#cfcfd3}
.x-legs cite{font-style:italic}


/* Sectors: a plain readout, not badges */
.x-sectors{margin:0 0 3rem;max-width:60rem}
.x-sectors h3{font-size:.95rem;font-weight:500;color:var(--soft);margin:0 0 .8rem}
.x-sectors ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.6rem}
.x-sectors li{border-top:1px solid var(--rule);padding:.65rem 0;color:#fff;font-size:1rem}
@media(min-width:760px){.x-sectors ul{grid-template-columns:repeat(3,minmax(0,1fr))}}


/* ---------- Work page and recent builds ---------- */
.x-work-hero{padding:4.2rem 0 1.6rem;border-bottom:0}
.x-work-hero h1{font-size:clamp(2.3rem,5.6vw,4.2rem);font-weight:300;letter-spacing:-.012em;line-height:1.06;margin:0 0 1.2rem;max-width:14ch;text-wrap:balance}
.x-case__head{max-width:48rem;margin:0 0 2.4rem}
.x-case__for{margin:0 0 .6rem;color:var(--red-hi);font-weight:500;font-size:.95rem}
.x-case__head h2{font-size:clamp(1.7rem,3.6vw,2.6rem);font-weight:300;line-height:1.15;margin:0 0 1rem;text-wrap:balance}
.x-case__head p{color:#cfcfd3}
.x-credit{font-size:.95rem;color:var(--soft)!important;border-left:2px solid var(--red);padding-left:.9rem;margin-top:1.2rem}
.x-apps{list-style:none;margin:0;padding:0;display:grid;gap:1.6rem 1.4rem}
@media(min-width:700px){.x-apps{grid-template-columns:repeat(2,minmax(0,1fr))}.x-apps__lead{grid-column:1/-1}}
@media(min-width:1100px){.x-apps{grid-template-columns:repeat(4,minmax(0,1fr))}}
.x-apps a,.x-recent__grid a{display:block;text-decoration:none;color:inherit}
.x-apps img,.x-recent__grid img,.x-proj__img img{display:block;width:100%;height:auto;border-radius:6px;border:1px solid var(--rule);transition:transform .2s,border-color .2s}
.x-apps a:hover img,.x-apps a:focus-visible img,.x-recent__grid a:hover img,.x-recent__grid a:focus-visible img,.x-proj__img:hover img{transform:translateY(-3px);border-color:#4a4a50}
.x-apps__text{display:flex;flex-direction:column;gap:.35rem;margin-top:.9rem}
.x-apps__name,.x-recent__name{font-size:1.15rem;font-weight:500;color:#fff}
.x-apps__desc,.x-recent__desc{color:#cfcfd3;font-size:.95rem;line-height:1.6}
.x-open{font-weight:500;font-size:.9rem;color:#fff;text-decoration:underline;text-decoration-color:var(--red);text-underline-offset:4px;text-decoration-thickness:2px;align-self:flex-start;margin-top:.2rem}
.x-apps a:hover .x-open{color:var(--red-hi)}
@media(min-width:700px){.x-apps__lead a{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:2rem;align-items:center}
  .x-apps__lead .x-apps__text{margin-top:0}.x-apps__lead .x-apps__name{font-size:1.6rem;font-weight:400}.x-apps__lead .x-apps__desc{font-size:1.02rem}}
.x-press{margin-top:2.6rem;display:grid;gap:.8rem;max-width:52rem;padding:1.4rem 1.6rem;background:var(--panel);border:1px solid var(--rule);border-radius:6px}
.x-press p{margin:0;color:#cfcfd3}
.x-press b{color:#fff;font-weight:500}
.x-proj{display:grid;gap:1.6rem;align-items:center;padding:2.2rem 0;border-top:1px solid var(--rule)}
@media(min-width:860px){.x-proj{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:3rem}.x-proj:nth-of-type(even) .x-proj__img{order:2}}
.x-proj h3{font-size:1.6rem;font-weight:400;margin:0 0 .2rem}
.x-proj h3 a{text-decoration:none}
.x-proj h3 a:hover{color:var(--red-hi)}
.x-proj__tag{color:var(--red-hi);font-weight:500;margin:0 0 .8rem}
.x-proj__body p{color:#cfcfd3}
.x-proj__credit{font-size:.9rem;color:var(--soft)!important}
.x-recent__grid{list-style:none;margin:0;padding:0;display:grid;gap:1.6rem 1.4rem}
@media(min-width:760px){.x-recent__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.x-recent__grid a{display:flex;flex-direction:column;gap:.4rem}
.x-recent__grid img{margin-bottom:.5rem}


.x-quote{margin:1.4rem 0 1.4rem;padding:.2rem 0 .2rem 1.1rem;border-left:3px solid var(--red)}
.x-quote blockquote{margin:0}
.x-quote blockquote p{margin:0;color:#fff!important;font-size:clamp(1.25rem,2.2vw,1.6rem);font-weight:300;line-height:1.35}
.x-quote figcaption{margin-top:.5rem;color:var(--soft);font-size:.92rem;font-weight:500}
.x-recent__quote{color:#fff;font-size:.92rem;font-style:italic;border-left:2px solid var(--red);padding-left:.7rem;margin-top:.3rem}

/* ---------- Books ---------- */
.x-books .wrap{display:grid;gap:0}
.x-book{display:grid;gap:1.8rem;align-items:center;padding:2.6rem 0;border-top:1px solid var(--rule)}
.x-book:first-child{border-top:0;padding-top:.6rem}
@media(min-width:820px){.x-book{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:3.4rem}
  .x-book:nth-of-type(even) .x-book__stage{order:2}}
.x-book__stage{perspective:1400px;display:flex;justify-content:center;padding:1.2rem 0 1.6rem}
.x-book__cover{position:relative;width:min(250px,58vw);transform-style:preserve-3d;
  transform:rotateY(var(--ry,-20deg)) rotateX(var(--rx,4deg));transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.x-book__cover img{display:block;width:100%;height:auto;border-radius:2px 4px 4px 2px;
  box-shadow:0 34px 60px -24px rgba(0,0,0,.9),0 0 0 1px rgba(255,255,255,.05)}
/* spine crease and light */
.x-book__cover::before{content:"";position:absolute;inset:0;border-radius:2px 4px 4px 2px;pointer-events:none;transform:translateZ(1px);
  background:linear-gradient(90deg,rgba(0,0,0,.38) 0,rgba(255,255,255,.2) 1.4%,rgba(0,0,0,.18) 3.2%,transparent 7%,transparent 80%,rgba(255,255,255,.07) 100%)}
/* page block, seen down the right-hand edge */
.x-book__cover::after{content:"";position:absolute;top:4px;bottom:4px;left:100%;width:20px;transform-origin:left center;transform:rotateY(90deg);
  background:repeating-linear-gradient(90deg,#efebe2 0 1px,#cfcabe 1px 2px);border-radius:0 2px 2px 0}
.x-book__stage.is-tilting .x-book__cover{transition:transform .12s linear}
.x-book__meta{margin:0 0 .5rem;color:var(--soft);font-size:.9rem;font-weight:500;letter-spacing:.02em}
.x-book__body h2{font-size:clamp(1.7rem,3.4vw,2.5rem);font-weight:300;line-height:1.12;margin:0 0 .3rem;text-wrap:balance}
.x-book__body p{color:#cfcfd3}
.x-book__ctas{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.4rem}
.x-book__ctas .x-open{margin-top:0}
.x-talks__grid{display:grid;gap:1.2rem}
@media(min-width:760px){.x-talks__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.x-talk{padding:1.4rem 1.6rem;background:var(--panel);border:1px solid var(--rule);border-radius:6px}
.x-talk__when{margin:0 0 .5rem;color:var(--red-hi);font-weight:500;font-size:.92rem}
.x-talk h3{font-size:1.25rem;font-weight:400;line-height:1.35;margin:0 0 .6rem}
.x-talk h3 a{text-decoration:underline;text-decoration-color:var(--red);text-underline-offset:4px;text-decoration-thickness:2px}
.x-talk h3 a:hover{color:var(--red-hi)}
.x-talk p{margin:0;color:#cfcfd3}
.x-shelf{display:flex;flex-wrap:wrap;align-items:center;gap:1.6rem 2.4rem;padding:1.6rem 0 0}
.x-shelf__covers{display:flex;gap:1rem;list-style:none;margin:0;padding:0}
.x-shelf__covers a{display:block}
.x-shelf__covers img{display:block;width:96px;height:auto;border-radius:2px 3px 3px 2px;box-shadow:0 16px 30px -14px rgba(0,0,0,.9);transition:transform .2s}
.x-shelf__covers a:hover img,.x-shelf__covers a:focus-visible img{transform:translateY(-4px) rotate(-1.5deg)}
.x-shelf__text{flex:1 1 18rem;max-width:34rem}
.x-shelf__text p{color:#cfcfd3;margin:0 0 .8rem}
@media(prefers-reduced-motion:reduce){.x-book__cover,.x-shelf__covers img{transition:none}}

/* ---------- Products ---------- */
.x-shop__grid{display:grid;gap:1.4rem}
@media(min-width:960px){.x-shop__grid{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr)}}
.x-item{background:var(--panel);border:1px solid var(--rule);border-radius:6px;padding:1.5rem;display:flex;flex-direction:column;gap:1.2rem}
.x-item h3{font-size:1.25rem;font-weight:500;margin:0 0 .5rem}
.x-item h3 a{text-decoration:none}
.x-item h3 a:hover{color:var(--red-hi)}
.x-item p{color:#cfcfd3;margin:0 0 .6rem}
.x-item__more{margin:auto 0 0!important}
.x-item__more a{font-weight:500}
.x-item--bb{flex-direction:row;align-items:flex-start}
.x-item--bb .x-item__img{flex:0 0 34%;max-width:170px}
.x-item__img img,.x-kits img{display:block;width:100%;height:auto;border-radius:3px;box-shadow:0 10px 30px rgba(0,0,0,.45)}
@media(max-width:560px){.x-item--bb{flex-direction:column}.x-item--bb .x-item__img{flex:none;width:150px}}
.x-kits{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.x-kits a{display:block;text-decoration:none;color:var(--soft);font-size:.82rem;line-height:1.35}
.x-kits a span{display:block;margin-top:.6rem}
.x-kits a:hover span{color:#fff}
.x-kits a img{transition:transform .2s}
.x-kits a:hover img,.x-kits a:focus-visible img{transform:translateY(-4px)}


/* ---------- On Voice: an on-air sign for the newsletter ----------
   The lamp lights when the trace above it tunes from noise to a clean signal. */
.x-onvoice{position:relative;overflow:hidden;padding:calc(130px + 1.2rem) 0 5.5rem;
  background:radial-gradient(55% 70% at 12% 18%,rgba(195,49,74,.17),rgba(195,49,74,0) 70%),#0d0c0e}
.x-onvoice__wave{position:absolute;left:0;top:0;width:100%;height:130px;display:block;pointer-events:none}
.x-onvoice__grid{position:relative;display:grid;gap:2.6rem;align-items:center}
@media(min-width:900px){.x-onvoice__grid{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:4.5rem}}
.ov-mark{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem 1rem;margin:0 0 1.7rem}
.ov-lamp{display:inline-flex;align-items:center;justify-content:center;padding:.32em .62em .36em;border:2px solid var(--red);border-radius:12px;
  font:700 clamp(1.7rem,3.6vw,2.6rem)/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--red);
  transition:background-color .25s,color .25s,box-shadow .5s}
.x-onvoice.is-live .ov-lamp,html:not(.js) .ov-lamp{background:var(--red);color:#fff;
  box-shadow:0 0 0 1px rgba(224,74,99,.65),0 0 26px rgba(224,74,99,.55),0 0 90px rgba(195,49,74,.4)}
.x-onvoice.is-live .ov-lamp{animation:ov-flicker 1s steps(1,end) 1}
@keyframes ov-flicker{0%{opacity:.35}8%{opacity:1}16%{opacity:.45}24%{opacity:1}34%{opacity:.7}40%{opacity:1}}
.ov-word{font:300 clamp(2.6rem,5.6vw,4.1rem)/1 var(--sans);letter-spacing:-.015em;color:#fff}
.x-onvoice h2{font-size:clamp(1.5rem,3vw,2.2rem);font-weight:300;line-height:1.2;margin:0 0 1rem;max-width:22ch;text-wrap:balance}
.x-onvoice__copy > p{color:#cfcfd3;max-width:36rem;margin:0}
.x-onvoice__copy > p.ov-mark{margin:0 0 1.9rem}
.ov-facts{display:grid;grid-template-columns:repeat(3,minmax(0,8.5rem));gap:1rem 1.6rem;margin:2rem 0 0}
.ov-facts div{border-top:1px solid #3d2a30;padding-top:.6rem;min-width:0}
.ov-facts dt{font-size:.78rem;color:var(--dim)}
.ov-facts dd{margin:.15rem 0 0;color:#fff;font-weight:500}
.x-onvoice__form{background:var(--panel);border:1px solid #33272b;border-radius:8px;padding:1.5rem 1.5rem 1.3rem;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.ov-form__label{margin:0 0 .9rem;font-weight:500;color:#fff;font-size:1.05rem}
.ov-form__embed{min-height:1rem}
.ov-form__alt{margin:1rem 0 0;font-size:.9rem;color:var(--soft)}
@media(prefers-reduced-motion:reduce){.x-onvoice.is-live .ov-lamp{animation:none}}

/* ---------- Close ---------- */
.x-close .btn::after{content:none}
.x-close p{max-width:40rem}


/* Without JavaScript: hide the instruments, keep every word readable */
.x-toggle[hidden]{display:none}
html:not(.js) .x-scope,html:not(.js) .x-plot{display:none}
.x-js-only{display:none}
.js .x-js-only{display:inline}

@media(prefers-reduced-motion:reduce){
  .x-kits a img,.x-live__text span,.x-facts li::before,.x-legs li::before{transition:none}
}
.x-shelf-sec .x-head{margin-bottom:.2rem}
.x-shelf__covers{align-items:flex-end}
.x-section.x-books{padding-top:1.4rem}

/* Books: the Reeperbahn interview. Poster first; YouTube only loads on play. */
.x-talkvid{display:grid;gap:1.8rem;margin:0 0 2.4rem}
@media(min-width:960px){.x-talkvid{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:2.8rem;align-items:start}}
.x-video{position:relative;aspect-ratio:16/9;border-radius:6px;overflow:hidden;background:#000;border:1px solid var(--rule)}
.x-video__poster{position:absolute;inset:0;display:block;color:#fff;text-decoration:none}
.x-video__poster img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.2,.7,.2,1),filter .3s}
.x-video__play{position:absolute;left:80%;top:44%;width:clamp(48px,13%,88px);aspect-ratio:1;border-radius:50%;background:#fff;transform:translate(-50%,-50%);
  box-shadow:0 0 0 0 rgba(255,255,255,.5),0 18px 40px -12px rgba(0,0,0,.8);transition:transform .2s,background .2s;animation:x-ping 2.6s ease-out infinite}
.x-video__play::after{content:"";position:absolute;left:39%;top:30%;width:30%;height:40%;background:var(--red);clip-path:polygon(0 0,100% 50%,0 100%);transition:background .2s}
.x-video__len{position:absolute;right:.8rem;bottom:.8rem;padding:.2rem .5rem;border-radius:3px;background:rgba(0,0,0,.75);font-size:.82rem;font-weight:500}
.x-video__poster:hover img,.x-video__poster:focus-visible img{transform:scale(1.02);filter:brightness(.9)}
.x-video__poster:hover .x-video__play,.x-video__poster:focus-visible .x-video__play{transform:translate(-50%,-50%) scale(1.08);background:var(--red)}
.x-video__poster:hover .x-video__play::after,.x-video__poster:focus-visible .x-video__play::after{background:#fff}
.x-video__poster:focus-visible{outline:3px solid #fff;outline-offset:-3px}
@keyframes x-ping{0%{box-shadow:0 0 0 0 rgba(255,255,255,.5),0 18px 40px -12px rgba(0,0,0,.8)}70%,100%{box-shadow:0 0 0 18px rgba(255,255,255,0),0 18px 40px -12px rgba(0,0,0,.8)}}
.x-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.x-talkvid__side h3{font-size:1.5rem;font-weight:400;margin:0 0 .7rem}
.x-talkvid__side p{color:#cfcfd3}
.x-talkvid__quote{margin:1rem 0 1.4rem;padding:.1rem 0 .1rem 1rem;border-left:3px solid var(--red)}
.x-talkvid__quote p{margin:0;color:#fff!important;font-size:1.12rem;font-weight:300;line-height:1.5}
.x-chapters__label{margin:0 0 .5rem;color:var(--soft)!important;font-size:.88rem;font-weight:500;letter-spacing:.02em}
.x-chapters{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}
.x-chapters a{display:flex;gap:.8rem;align-items:baseline;padding:.55rem .75rem;border:1px solid var(--rule);border-radius:4px;color:#fff;text-decoration:none;font-size:.95rem;transition:border-color .2s,background .2s}
.x-chapters a span{font-variant-numeric:tabular-nums;color:var(--red-hi);font-weight:500;min-width:2.8rem}
.x-chapters a:hover,.x-chapters a:focus-visible{border-color:#4a4a50;background:var(--panel)}
.x-chapters a[aria-current="true"]{border-color:var(--red);background:var(--panel)}
.x-talks__more{max-width:46rem}
@media(prefers-reduced-motion:reduce){.x-video__play{animation:none}.x-video__poster img{transition:none}}
.x-shelf__links{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;margin:0}
