/* Hallmark · theme: custom "Four Strands / Night" · genre: retro-playful luxury (owner-directed supergraphic frame) · macrostructure: framed stages, edge-anchored splits, kinetic capsule bands
   nav: N9 selvedge strip in the frame · footer: Ft6 job ticket · owner exception: the four-strand frame exceeds the 5% accent rule by Alex's direction (11 Nov); every other accent stays ≤5% */
@import url('https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible+Next:wght@400;650&family=Martian+Mono:wght@400;600&display=swap');
/* Archivo (SIL OFL) as static instances baked by tools/build-fonts.py; width is chosen with font-stretch */
@font-face{font-family:"Archivo";font-weight:850;font-stretch:62%;font-display:swap;src:url(/assets/fonts/archivo-62-850.woff2) format("woff2")}
@font-face{font-family:"Archivo";font-weight:900;font-stretch:62%;font-display:swap;src:url(/assets/fonts/archivo-62-900.woff2) format("woff2")}
@font-face{font-family:"Archivo";font-weight:850;font-stretch:80%;font-display:swap;src:url(/assets/fonts/archivo-80-850.woff2) format("woff2")}
@font-face{font-family:"Archivo";font-weight:800;font-stretch:100%;font-display:swap;src:url(/assets/fonts/archivo-100-800.woff2) format("woff2")}
@font-face{font-family:"Archivo";font-weight:850;font-stretch:100%;font-display:swap;src:url(/assets/fonts/archivo-100-850.woff2) format("woff2")}
@font-face{font-family:"Archivo";font-weight:850;font-stretch:125%;font-display:swap;src:url(/assets/fonts/archivo-125-850.woff2) format("woff2")}


:root{
  /* ground: the board's dark indigo-ink */
  --ground:oklch(17% .028 268); --ground-2:oklch(22% .03 268); --ground-3:oklch(11% .025 268); --line:oklch(33% .03 268);
  --text:oklch(94% .016 88); --text-2:oklch(80% .02 88); --text-3:oklch(66% .02 88);
  /* the four strands, tuned for a dark ground */
  --mag:oklch(62% .23 355); --blu:oklch(60% .17 255); --grn:oklch(70% .17 150); --yel:oklch(86% .16 95);
  --accent:oklch(68% .19 355); --accent-ink:oklch(15% .028 268); --accent-hover:oklch(74% .17 355);
  /* garment colours (data: they match the blanks the press shows) */
  --sw-white:#f2efe8; --sw-bone:#e8decb; --sw-black:#222326; --sw-navy:#1f2a48; --sw-red:#972a2c; --sw-forest:#2c5340; --sw-sky:#93b8d6; --sw-graphite:#2e3035; --sw-sand:#e4d7bd;
  --focus:oklch(86% .16 95); --error:oklch(70% .17 28); --ok:oklch(74% .15 150);
  --font-display:"Archivo","Arial Narrow",sans-serif; --font-body:"Atkinson Hyperlegible Next","Atkinson Hyperlegible",system-ui,sans-serif; --font-mono:"Martian Mono",ui-monospace,monospace; --font-label:var(--font-body);
  --space-3xs:4px;--space-2xs:8px;--space-xs:12px;--space-sm:16px;--space-md:24px;--space-lg:32px;--space-xl:48px;--space-2xl:64px;--space-3xl:96px;--space-4xl:128px;--space-5xl:192px;
  --text-xs:.8125rem;--text-sm:.9375rem;--text-base:1.0625rem;--text-md:1.25rem;--text-lg:1.625rem;--text-xl:clamp(2rem,1.4rem + 2.4vw,3rem);--text-2xl:clamp(2.5rem,1.5rem + 4.6vw,4.75rem);--text-3xl:clamp(3rem,1.2rem + 8vw,7.5rem);
  --text-display:clamp(3rem,1rem + 7.2vw,8.5rem);
  --sw:clamp(6px,.82vw,13px); --sgap:clamp(3px,.36vw,6px); --inset:clamp(6px,.9vw,14px);
  --frame:calc(var(--inset) + 4*var(--sw) + 3*var(--sgap) + var(--space-2xs));
  --chamfer:clamp(18px,3vw,44px); --chamfer-c:clamp(56px,14vmin,150px);
  --radius-pill:999px; --radius-md:14px;
  --ease-press:cubic-bezier(.7,0,.2,1); --ease-out:cubic-bezier(.16,1,.3,1); --dur-fast:160ms; --dur-base:280ms; --dur-slow:640ms;
  --z-content:1; --z-frame:40; --z-nav:50; --z-drawer:60; --z-loom:70;
  color-scheme:dark;
}
@media (prefers-reduced-motion:reduce){:root{--dur-fast:0ms;--dur-base:0ms;--dur-slow:0ms}}
@view-transition{navigation:auto}
::view-transition-old(root){animation:280ms var(--ease-press) both vt-out}::view-transition-new(root){animation:360ms var(--ease-out) both vt-in}
@keyframes vt-out{to{clip-path:inset(0 0 100% 0)}}@keyframes vt-in{from{clip-path:inset(100% 0 0 0)}}
@media (prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none}}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;overflow-x:clip;background:var(--ground);color:var(--text)}
body{font-family:var(--font-body);font-size:var(--text-base);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;left:var(--frame);top:-60px;z-index:100;background:var(--text);color:var(--ground);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill)}.skip:focus{top:var(--frame)}

/* ---------- THE FRAME (three.js ribbons; SVG fallback) ---------- */
.frame{position:fixed;inset:0;z-index:var(--z-frame);pointer-events:none;transform:translateZ(0)}
.frame canvas,.frame svg{position:absolute;inset:0;width:100%;height:100%}
.frame svg path{fill:none;stroke-width:var(--sw);stroke-linejoin:miter}
.page{position:relative;z-index:var(--z-content);isolation:isolate;padding:calc(var(--frame) + var(--space-sm)) calc(var(--frame) + var(--space-md)) var(--frame) calc(var(--frame) + var(--space-md) + 44px)}

/* ---------- NAV: selvedge tabs riding the frame ---------- */
.selvedge{position:fixed;z-index:var(--z-nav);left:calc(var(--frame) - 6px);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}
.selvedge a,.selvedge button{display:flex;align-items:center;justify-content:center;width:44px;min-height:44px;border:2px solid var(--line);background:var(--ground-2);color:var(--text);border-radius:var(--radius-pill);font:650 11px/1 var(--font-label);letter-spacing:.14em;text-decoration:none;cursor:pointer;writing-mode:vertical-rl;padding:var(--space-sm) 0;transition:background-color var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast)}
.selvedge .mark{writing-mode:horizontal-tb;width:52px;height:52px;padding:0;border:0;background:transparent;border-radius:12px;overflow:hidden}
.selvedge .mark img{width:52px;height:52px;object-fit:cover;border-radius:12px}
.selvedge a:hover,.selvedge button:hover{border-color:var(--text);background:var(--ground-3)}
.selvedge .tab-quote{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.selvedge .tab-quote:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.selvedge .tab-press{border-color:var(--yel);color:var(--yel)}
.selvedge [data-bag-open]:has(.bag-count[hidden]){display:none}
.selvedge a:active,.selvedge button:active{transform:translateY(1px)}
.bag-count{writing-mode:horizontal-tb;display:inline-grid;place-items:center;min-width:20px;height:20px;margin-top:6px;border-radius:var(--radius-pill);background:var(--yel);color:var(--accent-ink);font:600 10px/1 var(--font-mono);letter-spacing:0}
.mbar{display:none}
@media (max-width:767px){
  :root{--sw:4px;--sgap:2px;--inset:5px;--chamfer:16px;--chamfer-c:56px}
  .page{padding:calc(var(--frame) + var(--space-xs)) calc(var(--frame) + var(--space-xs)) calc(var(--frame) + 96px + env(safe-area-inset-bottom))}
  .selvedge{display:none}
  .mbar{display:flex;position:fixed;z-index:var(--z-nav);left:calc(var(--frame) + 6px);right:calc(var(--frame) + 6px);bottom:calc(var(--frame) + 6px + env(safe-area-inset-bottom));gap:var(--space-2xs);padding:6px;background:var(--ground-2);border:2px solid var(--line);border-radius:var(--radius-pill)}
  .mbar a,.mbar button{flex:1;height:48px;display:flex;align-items:center;justify-content:center;gap:6px;border-radius:var(--radius-pill);border:0;background:transparent;color:var(--text);font:650 12px/1 var(--font-label);letter-spacing:.1em;text-decoration:none;white-space:nowrap}
  .mbar .tab-quote{background:var(--accent);color:var(--accent-ink)}
  .mbar::before{content:"";position:fixed;z-index:-1;left:var(--frame);right:var(--frame);bottom:var(--frame);height:calc(104px + env(safe-area-inset-bottom));background:linear-gradient(to bottom,transparent,var(--ground) 34%);pointer-events:none}
  .mbar [data-bag-open]:has(.bag-count[hidden]){display:none}
}

/* ---------- LOOM menu ---------- */
.loom{position:fixed;inset:0;z-index:var(--z-loom);background:var(--ground-3);display:grid;align-content:center;padding:var(--frame) calc(var(--frame) + 6vw);visibility:hidden;opacity:0;transition:opacity var(--dur-base),visibility 0s linear var(--dur-base)}
.loom[data-open]{visibility:visible;opacity:1;transition:opacity var(--dur-base)}
.loom ol{list-style:none;margin:0;padding:0;counter-reset:l}
.loom a{display:block;font-family:var(--font-display);font-weight:850;font-stretch:62%;font-size:clamp(40px,7.4vw,104px);line-height:1;text-decoration:none;color:var(--text);padding:.06em 0;background:linear-gradient(var(--c,var(--mag)),var(--c,var(--mag))) 0 92%/0 6px no-repeat;transition:background-size var(--dur-slow) var(--ease-out),color var(--dur-fast)}
.loom li:nth-child(4n+2) a{--c:var(--blu)}.loom li:nth-child(4n+3) a{--c:var(--grn)}.loom li:nth-child(4n+4) a{--c:var(--yel)}
.loom a:hover,.loom a:focus-visible{background-size:100% 6px}
.loom .close{position:absolute;right:calc(var(--frame) + 12px);top:calc(var(--frame) + 12px)}

/* ---------- type + buttons ---------- */
.eyebrow{font:650 12px/1.3 var(--font-label);letter-spacing:.14em;text-transform:uppercase;color:var(--text-2);margin:0 0 var(--space-sm)}
.display{font-family:var(--font-display);font-weight:850;font-stretch:62%;font-size:var(--text-display);line-height:.95;letter-spacing:0;margin:0;overflow-wrap:anywhere;min-width:0;text-wrap:balance}
.h2{font-family:var(--font-display);font-weight:850;font-stretch:125%;font-size:var(--text-2xl);line-height:1;letter-spacing:-.01em;margin:0 0 var(--space-md);overflow-wrap:anywhere;min-width:0}
.h3{font-family:var(--font-display);font-weight:800;font-stretch:100%;font-size:var(--text-lg);line-height:1.1;margin:0 0 var(--space-xs)}
.lede{font-size:var(--text-md);line-height:1.5;color:var(--text-2);max-width:52ch;margin:var(--space-md) 0}
.mono{font-family:var(--font-mono);letter-spacing:.08em}
.btns{display:flex;flex-wrap:wrap;gap:var(--space-xs);align-items:center}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 22px;border-radius:var(--radius-pill);border:2px solid var(--text);background:transparent;color:var(--text);font:650 15px/1 var(--font-body);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast),transform var(--dur-fast) var(--ease-press)}
.btn:hover{background:var(--text);color:var(--ground)}
.btn:active{transform:translateY(1px) scale(.99)}
.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;pointer-events:none}
.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink)}
.btn[data-loading]{color:transparent;position:relative}.btn[data-loading]::after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;border:2px solid var(--accent-ink);border-right-color:transparent;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(1turn)}}
.chip{display:inline-flex;align-items:center;height:36px;padding:0 14px;border-radius:var(--radius-pill);background:var(--ground-2);border:1px solid var(--line);font:650 12px/1 var(--font-label);letter-spacing:.1em;color:var(--text-2);white-space:nowrap}
.placeholder{display:inline-block;border:1.5px dashed var(--yel);color:var(--yel);border-radius:8px;padding:2px 8px;font:500 12px/1.5 var(--font-mono)}

/* ---------- stages + scroll-linked motion (--p is 0 → 1 as an element crosses the viewport) ---------- */
.stage{position:relative;border-radius:var(--chamfer-c) var(--chamfer) var(--chamfer) var(--chamfer);overflow:clip;background:var(--ground-3)}
[data-scroll]{--p:.5}
.rise{transform:translate(0,calc((.5 - var(--p))*80px))}
.drift{transform:translate(calc((var(--p) - .5)*-12vw),0)}
.reveal{opacity:calc(min(1,var(--p)*3));transform:translate(0,calc(max(0,(.33 - var(--p)))*120px))}
.zoom{transform:scale(calc(1.12 - var(--p)*.12))}
@media (prefers-reduced-motion:reduce){.rise,.drift,.reveal,.zoom{transform:none;opacity:1}}

/* ---------- capsule bands ---------- */
.capsule{position:relative;padding:var(--space-4xl) 0 var(--space-3xl);border-top:1px solid var(--line)}
.capsule__name{font-family:var(--font-display);font-weight:900;font-stretch:62%;font-size:clamp(72px,17vw,280px);line-height:.86;letter-spacing:-.02em;margin:0;white-space:nowrap;color:transparent;-webkit-text-stroke:2px var(--c,var(--mag));pointer-events:none}
.capsule__rail{position:relative;margin-top:calc(-1 * clamp(40px,8vw,140px));display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1.4vw,22px);align-items:end}
.capsule__rail .card:nth-child(2){transform:translate(0,calc((.5 - var(--p))*60px - 40px))}
.capsule__rail .card:nth-child(4){transform:translate(0,calc((.5 - var(--p))*90px - 20px))}
.capsule__line{font:650 13px/1 var(--font-label);letter-spacing:.14em;text-transform:uppercase;color:var(--c,var(--mag));margin:0 0 var(--space-sm)}
.card{position:relative;display:block;text-decoration:none;color:inherit;border-radius:22px;overflow:clip;background:var(--ground-2);transition:transform var(--dur-base) var(--ease-out)}
.card img{width:100%;height:auto;aspect-ratio:2/3;object-fit:cover;transition:transform var(--dur-slow) var(--ease-out)}
.card:hover img{transform:scale(1.04)}
.card__meta{display:flex;justify-content:space-between;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm) var(--space-sm);font:650 13px/1.3 var(--font-label);letter-spacing:.02em}
.card__meta span:last-child{color:var(--text-3)}
@media (max-width:900px){.capsule__rail{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:var(--space-md)}.capsule__rail .card{transform:none!important}.capsule__name{white-space:normal;font-size:clamp(48px,15vw,120px);transform:none}}

/* ---------- split section ---------- */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,4vw,72px);align-items:center;padding:var(--space-4xl) 0;border-top:1px solid var(--line)}
.split--flip > :first-child{order:2}
@media (max-width:900px){.split{grid-template-columns:minmax(0,1fr)}.split--flip > :first-child{order:0}}
.patch-canvas{width:100%;aspect-ratio:1;display:block;cursor:grab;touch-action:pan-y;border-radius:var(--chamfer-c) var(--chamfer) var(--chamfer) var(--chamfer);background:var(--ground-3)}
.patch-canvas:active{cursor:grabbing}

/* ---------- footer: the job ticket ---------- */
.ticket{margin:var(--space-4xl) 0 var(--space-xl);display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:var(--space-xl);background:var(--ground-2);border:2px solid var(--line);border-radius:var(--chamfer-c) var(--chamfer) var(--chamfer) var(--chamfer);padding:clamp(24px,4vw,56px)}
.ticket__line{font-family:var(--font-display);font-weight:850;font-stretch:62%;font-size:var(--text-2xl);line-height:1;margin:0}
.ticket dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-xs) var(--space-md);margin:0;font:500 13px/1.5 var(--font-mono)}
.ticket dt{color:var(--text-3);letter-spacing:.12em}.ticket dd{margin:0}
.ticket a{text-decoration-color:var(--line);text-underline-offset:3px}.ticket a:hover{text-decoration-color:var(--text)}
.footline{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-lg);font:500 13px/1.4 var(--font-label);color:var(--text-3);padding-bottom:var(--space-lg)}
.footline a{color:var(--text-2)}
@media (max-width:767px){.ticket{grid-template-columns:minmax(0,1fr)}.ticket dl{grid-template-columns:minmax(0,1fr);gap:2px}.ticket dd{margin-bottom:var(--space-sm);font-size:14px}}

/* ---------- bag drawer ---------- */
.drawer{position:fixed;z-index:var(--z-drawer);top:var(--frame);bottom:var(--frame);left:calc(var(--frame) + 56px);width:min(440px,calc(100vw - 2*var(--frame) - 64px));background:var(--ground-2);border:2px solid var(--line);border-radius:28px;display:flex;flex-direction:column;transform:translateX(calc(-100% - 120px));transition:transform var(--dur-slow) var(--ease-out);visibility:hidden}
.drawer[data-open]{transform:none;visibility:visible}
.drawer header,.drawer footer{padding:var(--space-md);border-bottom:1px solid var(--line)}.drawer footer{border-bottom:0;border-top:1px solid var(--line);margin-top:auto}
.drawer ul{list-style:none;margin:0;padding:var(--space-sm) var(--space-md);overflow:auto;display:grid;gap:var(--space-sm)}
.line-item{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:var(--space-sm);align-items:center}
.line-item img{width:72px;height:96px;object-fit:cover;border-radius:10px}
.line-item small{display:block;font:500 11px/1.5 var(--font-mono);color:var(--text-3)}
.qty{display:inline-flex;align-items:center;gap:6px}.qty button{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer}
@media (max-width:767px){.drawer{left:var(--frame);right:var(--frame);width:auto;top:auto;height:78svh;transform:translateY(110%)}}

/* ---------- forms (gate 39) ---------- */
.field{display:grid;gap:6px;margin-bottom:var(--space-sm)}
.field label{font:650 13px/1.3 var(--font-label);letter-spacing:.06em;color:var(--text-2)}
.input,.select,textarea.input{height:48px;width:100%;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:var(--ground-3);color:var(--text);font:400 16px/1.4 var(--font-body);outline:2px solid transparent;outline-offset:1px;transition:border-color var(--dur-fast),background-color var(--dur-fast)}
textarea.input{height:auto;min-height:120px;padding:12px 14px}
.input:hover,.select:hover{border-color:var(--text-3)}
.input:focus-visible,.select:focus-visible{outline:2px solid var(--focus);border-color:var(--focus)}
.input[aria-invalid=true]{border-color:var(--error);background:color-mix(in oklch,var(--error) 8%,var(--ground-3))}
.input:disabled{opacity:.55;cursor:not-allowed}
.help{min-height:1lh;font:500 13px/1.4 var(--font-label);color:var(--text-3)}.help[data-error]{color:var(--error)}
.choice{display:flex;flex-wrap:wrap;gap:8px}
.choice label{display:inline-flex;align-items:center;height:44px;padding:0 16px;border:1px solid var(--line);border-radius:var(--radius-pill);cursor:pointer;font:600 13px/1 var(--font-body);transition:border-color var(--dur-fast),background-color var(--dur-fast)}
.choice input{position:absolute;opacity:0;width:0;height:0}
.choice input:checked + span{color:var(--accent-ink)}
.choice label:has(input:checked){background:var(--yel);border-color:var(--yel);color:var(--accent-ink)}
.choice label:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}
.choice label:has(input:disabled){opacity:.55;cursor:not-allowed}

/* ---------- dialog (preview guard) ---------- */
dialog.preview{max-width:min(560px,92vw);background:var(--ground-2);color:var(--text);border:2px solid var(--yel);border-radius:22px;padding:var(--space-lg)}
dialog.preview::backdrop{background:color-mix(in oklch,var(--ground-3) 80%,transparent)}
dialog.preview pre{white-space:pre-wrap;font:500 13px/1.5 var(--font-mono);background:var(--ground-3);border-radius:12px;padding:var(--space-sm);max-height:44svh;overflow:auto}

/* ---------- shop + product ---------- */
.shop-hero{padding:var(--space-3xl) 0 var(--space-xl);max-width:980px}
.shop-hero .chip{text-decoration:none;transition:border-color var(--dur-fast),color var(--dur-fast)}.shop-hero .chip:hover{border-color:var(--text);color:var(--text)}
.product{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(20px,3.4vw,64px);align-items:start;padding-top:var(--space-md)}
.product-scene{margin:0;position:sticky;top:calc(var(--frame) + var(--space-sm));aspect-ratio:2/3;max-height:calc(100svh - 2*var(--frame) - 32px)}
.product-scene img,.product-scene .scene__still{width:100%;height:100%;object-fit:cover}
.product-scene canvas{position:absolute;inset:0;width:100%;height:100%}
.product-scene .scene__controls{position:absolute;left:50%;bottom:var(--space-md);transform:translateX(-50%);z-index:3;background:color-mix(in oklch,var(--ground) 86%,transparent);border:1px solid var(--line);border-radius:var(--radius-pill);padding:8px 16px}
.peel-label{display:flex;align-items:center;gap:12px;font:650 12px/1 var(--font-label);letter-spacing:.12em;white-space:nowrap}
.peel-label input{width:160px;accent-color:var(--yel)}
.product__ticket{padding:var(--space-xl) 0}
.product__name{font-size:clamp(48px,6vw,112px)}
.product__ticket .eyebrow a{text-decoration:none;color:var(--c,var(--text-2))}
.spec{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px var(--space-md);margin:var(--space-lg) 0;padding:var(--space-md) 0;border-block:1px solid var(--line);font:500 13px/1.5 var(--font-mono)}
.spec dt{color:var(--text-3);letter-spacing:.12em}.spec dd{margin:0}
.buy{margin-top:var(--space-md)}.buy .select{max-width:280px}
.ask{font:500 14px/1.6 var(--font-label);color:var(--text-3)}
.ask a,.linkish{color:var(--text-2);background:none;border:0;padding:0;font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line)}
.ask a:hover,.linkish:hover{color:var(--text);text-decoration-color:var(--text)}
.artwork{margin:var(--space-md) 0 0;border-radius:var(--radius-md);overflow:clip;background:var(--ground-3)}
@media (max-width:900px){.product{grid-template-columns:minmax(0,1fr)}.product-scene{position:relative;top:auto;max-height:none}}


.ticket dd{min-width:0;overflow-wrap:break-word}
.ticket dd a{white-space:nowrap}
