/* VibeJam v2 — develop (warm). spec-develop.md. Layouts: desktop (>=1180x620), compact (desktop & max-height 819),
   small = tablet/phone/rail (everything else). Nothing loops at rest; every animation has a finite count. */
@font-face { font-family: "VJ SFX"; src: url(media/fx/sfx.woff2) format("woff2"); font-display: block; }
@property --k { syntax: "<number>"; inherits: false; initial-value: 0; }

:root {
  --desk: #E6D6B8; --paper: #FBF5E9; --paper-hi: #FFFDF8; --panel: #F4EAD6; --ink: #17110C; --ink-2: #5E554C;
  --red: #D8261F; --red-deep: #9E1914; --cream: #FFF6E4; --blue: #2A6F94; --guide: #8EC5DE; --marker: #FFD84A;
  --shadow: rgba(23, 17, 12, .10);
  --sans: "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;
  --mono: "JetBrains Mono", "Noto Sans SC", ui-monospace, Menlo, monospace;
  --sys: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;
  --sfx: "VJ SFX", "Noto Sans SC", sans-serif;
  --top: 64px; --tabh: 0px; --ease: cubic-bezier(.2, .8, .2, 1);
  --sm: 18px 18px 34px;
  color-scheme: light;
}
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { height: 100%; margin: 0; overflow: hidden; }
body { background: var(--desk); color: var(--ink); font: 400 16px/1.7 var(--sans); -webkit-font-smoothing: antialiased;
  -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
h1, h2, h3, p, ol, ul, dl, dd, figure, blockquote { margin: 0; padding: 0; }
ol, ul { list-style: none; }
a { color: inherit; }
button { font: inherit; color: inherit; cursor: pointer; touch-action: manipulation; }
img { display: block; max-width: 100%; }
svg { flex: none; }
:focus-visible { outline: 3px solid var(--blue); outline-offset: 2px; }
.kw, .nw { white-space: nowrap; }   /* keeps a CJK phrase on one line when a teaser line wraps */
.sr, .vh { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ------------------------------------------------------------------ atoms */
.tag { font: 700 12px/1.25 var(--mono); color: var(--blue); letter-spacing: .06em; }
.aitag { display: inline-block; margin-left: 8px; border: 1.6px solid var(--red); color: var(--red-deep); background: var(--paper-hi);
  font: 700 12px/1 var(--mono); padding: 4px 6px 3px; letter-spacing: .04em; vertical-align: 1px; white-space: nowrap; }
.aitag--ph { display: none; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 52px; padding: 0 22px; border: 2.5px solid var(--ink);
  background: var(--paper); color: var(--ink); font: 900 16px/1 var(--sans); text-decoration: none; white-space: nowrap;
  transition: transform .16s var(--ease), box-shadow .16s var(--ease); }
.btn-red { background: var(--red); color: var(--cream); box-shadow: 4px 4px 0 var(--ink); }
.btn:hover { transform: translate(-1px, -2px); box-shadow: 4px 6px 0 var(--ink); }
.btn-red:hover { box-shadow: 5px 7px 0 var(--ink); }
.btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--ink); }
.btn[disabled] { cursor: default; background: var(--paper); color: var(--ink-2); box-shadow: none; transform: none; border-style: dashed; }
.btn-sm { height: 44px; padding: 0 16px; font-size: 14px; }
.chip { display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 13px; border: 2px solid var(--ink); border-radius: 999px;
  background: var(--paper); font: 700 13px/1 var(--sans); white-space: nowrap; transition: background .16s, color .16s; }
.chip:hover { background: var(--paper-hi); box-shadow: inset 0 -3px 0 var(--guide); }
.chip[aria-pressed="true"] { background: var(--ink); color: var(--cream); box-shadow: none; }
.chip small { font: 700 11.5px/1 var(--mono); opacity: .75; }
.tape-red { display: inline-block; background: var(--red); color: var(--cream); font: 700 12px/1 var(--mono); padding: 6px 9px 5px;
  transform: rotate(-2deg); letter-spacing: .03em; white-space: nowrap; }
.live { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--red); margin-right: 7px; vertical-align: 1px; }
html.js:not(.rm) .live { animation: blink 1s steps(2, jump-none) 3; }
@keyframes blink { 50% { opacity: .15; } }

/* rubber stamp: double border, grit mask, rotated; .is-in = landed */
.stamp { --rot: -7deg; position: relative; display: inline-block; font: 700 13px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--red);
  border: 2.4px solid currentColor; padding: 7px 10px 6px; transform: rotate(var(--rot)); white-space: nowrap; background: rgba(255, 253, 248, .55);
  -webkit-mask: url(media/fx/stamp-grit.webp) var(--mx, 0px) var(--my, 0px) / 220px repeat; mask: url(media/fx/stamp-grit.webp) var(--mx, 0px) var(--my, 0px) / 220px repeat; }
.stamp::before { content: ""; position: absolute; inset: 2.5px; border: 1px solid currentColor; pointer-events: none; }
.stamp--sm { font-size: 12px; padding: 6px 8px 5px; }
.stamp-slot { position: absolute; font: 700 13px/1 var(--mono); letter-spacing: .08em; padding: 7px 10px 6px; border: 2px dashed var(--guide);
  color: transparent; background: rgba(251, 245, 233, .85); transform: rotate(-7deg); white-space: nowrap; pointer-events: none; }
@keyframes stamp-in { from { opacity: 0; transform: scale(1.6) rotate(-14deg); } 70% { opacity: 1; transform: scale(.94) rotate(-6deg); } to { opacity: 1; transform: rotate(-7deg); } }
.speck { position: absolute; width: 5px; height: 5px; border-radius: 50%; background: var(--red); pointer-events: none; }

/* grease-pencil ring */
.ring { position: absolute; overflow: visible; pointer-events: none; fill: none; stroke: var(--red); stroke-width: 3.2; stroke-linecap: round; stroke-linejoin: round; }
.ring path, .ring ellipse { stroke-dasharray: 1 1; stroke-dashoffset: 0; }   /* no non-scaling-stroke: it breaks pathLength dashes in Chrome */
@keyframes ring-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
.ring.is-off path, .ring.is-off ellipse { stroke-dashoffset: 1; }
.ring.is-drawn path, .ring.is-drawn ellipse { animation: ring-draw .6s ease-out both; }

/* SFX lettering: outlined, filled red to --p */
.sfx { position: relative; display: inline-block; flex: none; }
.sfx-t { display: block; font: 400 54px/1 var(--sfx); color: transparent; -webkit-text-stroke: 2.4px var(--ink); letter-spacing: .02em;
  background: linear-gradient(90deg, var(--red) calc(var(--p, 0) * 100%), var(--paper-hi) 0); -webkit-background-clip: text; background-clip: text; padding: 0 2px; }
.sfx .burst { position: absolute; left: 50%; top: 50%; width: 132%; height: 196%; translate: -50% -50%; fill: none; stroke: var(--red);
  stroke-width: 3; stroke-linecap: round; opacity: 0; pointer-events: none; overflow: visible; }
.sfx .burst path { vector-effect: non-scaling-stroke; }
.sfx.is-ding .sfx-t { animation: pop .16s var(--ease); }
.sfx.is-ding .burst { animation: burst .5s ease-out both; }
@keyframes pop { from { transform: scale(.7); } 60% { transform: scale(1.12); } to { transform: none; } }
@keyframes burst { from { opacity: 0; transform: scale(.5); } 30% { opacity: 1; } to { opacity: 0; transform: scale(1.15); } }
.step { font: 700 12px/1.3 var(--mono); color: var(--blue); letter-spacing: .04em; white-space: nowrap; font-variant-numeric: tabular-nums; }

/* CSS twin (degrade path + every develop outside the hero/detail) */
.twin { position: relative; display: block; overflow: hidden; container-type: size; background: var(--paper); }
.twin img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.twin .ink { position: absolute; inset: 0; background: var(--paper); --k: 0;
  -webkit-mask-image: url(media/fx/bleed.webp), linear-gradient(#000 0 0); mask-image: url(media/fx/bleed.webp), linear-gradient(#000 0 0);
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-size: calc(var(--k) * 100cqmax) calc(var(--k) * 100cqmax), 100% 100%; mask-size: calc(var(--k) * 100cqmax) calc(var(--k) * 100cqmax), 100% 100%;
  -webkit-mask-position: calc(var(--ox) * 100cqw - var(--k) * 50cqmax) calc(var(--oy) * 100cqh - var(--k) * 50cqmax), 0 0;
  mask-position: calc(var(--ox) * 100cqw - var(--k) * 50cqmax) calc(var(--oy) * 100cqh - var(--k) * 50cqmax), 0 0;
  -webkit-mask-composite: xor; mask-composite: exclude; }
.twin .ink img { mix-blend-mode: multiply; }
.twin .ink::after { content: ""; position: absolute; inset: 0; opacity: .35; background: radial-gradient(circle, var(--ink) 0 32%, transparent 36%) 0 0 / 4.4px 4.4px; }
.twin.is-dev .ink { animation: twin-dev 1s cubic-bezier(.6, 0, .2, 1) forwards; }
.twin.is-done .ink { display: none; }
@keyframes twin-dev { to { --k: 5; } }

/* ------------------------------------------------------------------ shell */
.app { position: fixed; inset: 0; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: var(--top) minmax(0, 1fr) var(--tabh); }
.top { position: relative; z-index: 5; display: flex; align-items: center; gap: 16px; padding: 0 20px; min-width: 0; }
.logo { display: flex; align-items: baseline; gap: 10px; text-decoration: none; white-space: nowrap; min-height: 44px; align-items: center; }
.logo b { font: 900 22px/1 var(--sans); letter-spacing: -.02em; }
.logo sup { font-size: 10px; vertical-align: 9px; margin-left: 1px; }
.logo small { font: 500 12px/1 var(--mono); color: var(--ink-2); letter-spacing: .02em; }
.top-r { display: flex; align-items: center; gap: 14px; flex: none; margin-left: auto; }
.online { font: 500 12px/1 var(--mono); color: var(--ink-2); white-space: nowrap; }
.cta-top { display: inline-flex; align-items: center; height: 44px; padding: 0 18px; background: var(--red); color: var(--cream); border: 2px solid var(--ink);
  box-shadow: 3px 3px 0 var(--ink); font: 900 15px/1 var(--sans); text-decoration: none; transform: rotate(-1.5deg); white-space: nowrap;
  transition: transform .16s var(--ease), box-shadow .16s var(--ease); }
.cta-top:hover { transform: rotate(-1.5deg) translate(-1px, -2px); box-shadow: 4px 5px 0 var(--ink); }
.cta-short { display: none; }
.float-cta { display: none; }
/* 纸质索引签：桌面竖立在纸张右缘（压在纸下），当前页抽出更多并盖红章；手机从底边探出 */
:root { --tabsw: 70px; }
.tabs { position: absolute; z-index: 0; right: 0; top: calc(var(--top) + 26px); width: var(--tabsw); display: flex; flex-direction: column; gap: 6px; }
.tabs a { --tx: -14px; position: relative; display: flex; flex-direction: column; align-items: center; gap: 7px; width: calc(var(--tabsw) + 6px); margin-left: -16px; padding: 12px 0 12px 16px;
  background: var(--tc, var(--paper)) url(media/fx/paper.webp) 0 0 / 256px; background-blend-mode: multiply; border: 2px solid var(--ink); border-left: 0; border-radius: 0 12px 12px 0;
  color: var(--ink); text-decoration: none; transform: translateX(var(--tx)) rotate(var(--tr, 0deg)); transform-origin: 0 50%;
  box-shadow: 2px 2px 0 rgba(23, 17, 12, .18); transition: transform .22s cubic-bezier(.3, 1.5, .5, 1), box-shadow .22s; }
.tabs a span { font: 900 15px/1.05 var(--sans); writing-mode: vertical-rl; text-orientation: mixed; letter-spacing: .12em; transform: rotate(-1.5deg); }
.tabs svg { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; opacity: .75; }
.tabs a:hover, .tabs a:focus-visible { --tx: -6px; box-shadow: 5px 4px 0 rgba(23, 17, 12, .22), 0 6px 10px rgba(23, 17, 12, .12); }
.tabs a[aria-current="page"] { --tx: 2px; z-index: 1; box-shadow: 4px 3px 0 rgba(23, 17, 12, .28); }
.tabs a[aria-current="page"] span { color: var(--red-deep); }
.tabs a[aria-current="page"]::after { content: "此"; position: absolute; right: 5px; bottom: -6px; display: grid; place-items: center; width: 22px; height: 22px; border: 2px solid var(--red);
  border-radius: 50%; color: var(--red); background: rgba(255, 253, 248, .7); font: 900 11px/1 var(--sans); transform: rotate(-14deg); pointer-events: none;
  -webkit-mask: url(media/fx/stamp-grit.webp) 0 0 / 80px; mask: url(media/fx/stamp-grit.webp) 0 0 / 80px; animation: stamp-in 240ms cubic-bezier(.2, 1.6, .4, 1) both; }

/* the manuscript sheet */
.sheet { position: relative; z-index: 1; margin: 4px var(--tabsw) 14px 20px; min-height: 0; background: var(--paper) url(media/fx/paper.webp) 0 0 / 256px; background-blend-mode: multiply;
  box-shadow: 6px 8px 0 var(--shadow), 0 1px 0 rgba(23, 17, 12, .06); }
.sheet::before { content: ""; position: absolute; inset: 9px; border: 1px dashed var(--guide); pointer-events: none; }
.reg { position: absolute; z-index: 2; top: -9px; left: 50%; width: 18px; height: 18px; margin-left: -9px; border: 1px solid var(--ink); border-radius: 50%;
  background: linear-gradient(var(--ink), var(--ink)) center / 1px 26px no-repeat, linear-gradient(var(--ink), var(--ink)) center / 26px 1px no-repeat; }
.crop { position: absolute; width: 16px; height: 16px; border: 0 solid var(--ink); pointer-events: none; }
.c1 { left: -8px; top: -8px; border-right-width: 1px; border-bottom-width: 1px; }
.c2 { right: -8px; top: -8px; border-left-width: 1px; border-bottom-width: 1px; }
.c3 { left: -8px; bottom: -8px; border-right-width: 1px; border-top-width: 1px; }
.c4 { right: -8px; bottom: -8px; border-left-width: 1px; border-top-width: 1px; }
.tape { position: absolute; z-index: 4; left: 28px; top: -6px; background: var(--ink); color: var(--cream); font: 700 11px/1 var(--mono); letter-spacing: .08em;
  padding: 6px 10px 5px; transform: rotate(-1.5deg); pointer-events: none; white-space: nowrap; }
.view { position: absolute; inset: 18px 18px 34px; }
.folio { position: absolute; left: 18px; right: 18px; bottom: 9px; display: flex; justify-content: space-between; gap: 16px; font: 500 11.5px/1 var(--mono);
  color: var(--ink-2); white-space: nowrap; pointer-events: none; }
.vfolio { display: none; }
.toast { position: absolute; z-index: 30; left: 50%; bottom: 46px; translate: -50% 0; max-width: calc(100% - 40px); padding: 10px 16px; background: var(--paper-hi);
  border: 2px solid var(--ink); box-shadow: 3px 3px 0 var(--ink); font: 500 13px/1.4 var(--mono); opacity: 0; pointer-events: none; transform: translateY(8px);
  transition: opacity .2s, transform .2s var(--ease); }
.toast.is-on { opacity: 1; transform: none; transition-duration: .16s; }

/* ------------------------------------------------------------------ home sheet */
.page { height: 100%; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: minmax(0, 1fr) clamp(184px, 27.5svh, 250px); gap: 14px; }
.pn { position: relative; border: 2.5px solid var(--ink); background: var(--panel); overflow: hidden; container-type: size; min-width: 0; }
.vt-frame { position: absolute; inset: 0; pointer-events: none; }

/* P.01 */
.p1 { grid-column: 9 / 13; grid-row: 1; padding: 20px 22px; background: var(--paper); display: flex; flex-direction: column; align-items: flex-start; }
.kick { font: 900 17px/1.3 var(--sans); padding-bottom: 3px; background: linear-gradient(var(--guide), var(--guide)) 0 100% / 100% 3px no-repeat; }
h1 { margin-top: 12px; font: 900 clamp(34px, 12cqi, 54px)/1.1 var(--sans); letter-spacing: -.02em; }
.ph { display: inline-block; white-space: nowrap; }
.nw { white-space: nowrap; }
.seen { position: relative; font-style: normal; color: var(--red); }
.seen .ring { left: -12%; top: -14%; width: 124%; height: 128%; stroke-width: 2.7; }
.mis { margin-top: 8px; font: 700 15px/1.4 var(--mono); letter-spacing: .24em; }
.lede { margin-top: 14px; font: 400 15px/1.7 var(--sans); color: var(--ink-2); max-width: 24em; }
/* 本周创作者：圆头像条，点开封面人物 */
.crew { margin: 12px 0 auto; padding: 10px 0 4px; width: 100%; border-top: 1.5px dashed var(--guide); }
.crew-h { font: 700 12px/1.3 var(--mono); color: var(--blue); }
.crew ul { display: flex; gap: 6px; margin-top: 8px; list-style: none; padding: 0; }
.crew li { flex: 1 1 0; min-width: 0; transform: rotate(var(--r, 0deg)); }
.crew a { display: flex; flex-direction: column; align-items: center; gap: 4px; text-decoration: none; color: var(--ink); transition: transform .18s var(--ease); }
.crew img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2.5px solid var(--ink); box-shadow: 2px 2px 0 var(--ink); background: var(--panel); }
.crew b { font: 900 12px/1.2 var(--sans); white-space: nowrap; }
.crew small { display: none; }
.crew a:hover, .crew a:focus-visible { transform: translateY(-3px) rotate(calc(var(--r, 0deg) * -1)); }
.crew a:hover img { box-shadow: 3px 4px 0 var(--red); }
.ctas { display: flex; gap: 12px; padding-top: 12px; }
.facts { margin-top: 12px; font: 500 13px/1.6 var(--mono); color: var(--ink-2); }

/* P.02 首页显影转盘（reel 组件精简版） */
.hreel { grid-column: 1 / 9; grid-row: 1; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto minmax(0, 1fr) auto; background: var(--paper-hi); container-type: normal; }
.hr-h { grid-column: 1 / -1; display: flex; align-items: center; gap: 4px; min-width: 0; padding: 8px 8px 8px 16px; border-bottom: 2px solid var(--ink); background: var(--paper); }
.hr-h .tag { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hr-all { margin-left: auto; flex: none; display: inline-flex; align-items: center; height: 40px; padding: 0 16px; background: var(--ink); color: var(--cream); border: 2px solid var(--ink);
  font: 900 14px/1 var(--sans); text-decoration: none; white-space: nowrap; transition: transform .16s var(--ease), box-shadow .16s var(--ease); }
.hr-all:hover { transform: translate(-1px, -2px); box-shadow: 3px 4px 0 var(--red); }
.hreel .rstage { grid-area: 2 / 1 / 3 / -1; border: 0; }
.hr-cap { grid-area: 3 / 1; min-width: 0; padding: 9px 16px 11px; border-top: 2px solid var(--ink); background: var(--paper); }
.hr-row { display: flex; align-items: center; gap: 10px; min-width: 0; }
.hr-t { font: 900 19px/1.25 var(--sans); letter-spacing: -.01em; text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.hr-t:hover { text-decoration: underline; text-decoration-color: var(--guide); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.hr-by { flex: none; font: 500 12px/1 var(--mono); color: var(--ink-2); white-space: nowrap; }
.hr-by .sig { font-size: 21px; }
.hr-cap .stamp { flex: none; margin-left: auto; --rot: -6deg; opacity: 0; }
.hr-cap .stamp.is-in { opacity: 1; }
.hr-p { margin-top: 4px; font: 400 12px/1.5 var(--mono); color: var(--ink); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; overflow-wrap: anywhere; }
.hr-p b { color: var(--blue); font-weight: 700; letter-spacing: .06em; }
.hr-cap.is-in .hr-t, .hr-cap.is-in .hr-p { animation: b-up .38s cubic-bezier(.2, .8, .2, 1) both; }
.hr-cap.is-in .hr-p { animation-delay: .08s; }
.hr-cap.is-in .hr-by { animation: b-up .38s cubic-bezier(.2, .8, .2, 1) both .1s; }
.hreel .rnav { grid-area: 3 / 2; align-self: center; justify-self: end; margin: 0 12px; padding-left: 4px; }
canvas[data-gl] { position: absolute; inset: 0; width: 100%; height: 100%; display: block; opacity: 0; transition: opacity .15s linear; }
canvas[data-gl].is-on { opacity: 1; }
html.js:not(.rm) .p1 .ring path { animation: ring-draw .6s ease-out 1s both; }
.pg { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 2px solid var(--ink); background: var(--paper); transition: background .16s; }
.pg:hover { background: var(--paper-hi); box-shadow: inset 0 -3px 0 var(--guide); }
.pg svg { width: 20px; height: 20px; fill: none; stroke: var(--ink); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.pg .i-play { display: none; fill: var(--ink); }
.pg[aria-pressed="true"] .i-pause { display: none; }
.pg[aria-pressed="true"] .i-play { display: block; }
.pg[aria-pressed="true"] { background: var(--ink); }
.pg[aria-pressed="true"] svg { stroke: var(--cream); fill: var(--cream); }
.pg-n { display: grid; place-items: center; min-width: 46px; height: 44px; padding: 0 6px; border: 2px solid var(--ink); background: var(--paper-hi);
  font: 700 13px/1 var(--mono); font-variant-numeric: tabular-nums; }
.brush { position: absolute; z-index: 4; left: 0; top: 0; width: 64px; height: 64px; margin: -32px 0 0 -32px; border: 2px dashed var(--blue); border-radius: 50%;
  pointer-events: none; opacity: 0; transition: opacity .15s; visibility: hidden; }
.brush b { position: absolute; left: 50%; top: calc(100% + 4px); translate: -50% 0; font: 700 12px/1 var(--mono); color: var(--blue); white-space: nowrap;
  background: rgba(251, 245, 233, .9); padding: 3px 5px; }
.dslot.brushing .brush { visibility: visible; }

/* teasers P.03–P.07 */
.t { display: flex; flex-direction: column; padding: 14px 16px; color: var(--ink); text-decoration: none; background: var(--panel);
  transition: transform .16s var(--ease), box-shadow .16s var(--ease); }
.t:hover, .t:focus-visible { transform: translateY(-2px); box-shadow: 0 4px 0 var(--ink); }
.t3 { grid-column: 1 / 4; } .t4 { grid-column: 4 / 7; } .t5 { grid-column: 7 / 9; } .t6 { grid-column: 9 / 11; } .t7 { grid-column: 11 / 13; }
.t .tag { display: block; padding-right: 30px; }
.ear { position: absolute; right: 10px; top: 10px; width: 24px; height: 24px; padding: 3px; border: 2px solid var(--ink); background: var(--paper);
  fill: none; stroke: var(--ink); stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; transition: background .16s; }
.t:hover .ear { background: var(--red); stroke: var(--cream); }
.vis { position: relative; flex: 1; min-height: 0; margin: 10px 0; display: flex; gap: 8px; align-items: center; container-type: size; }
.num { display: block; font: 900 34px/1 var(--sans); letter-spacing: -.02em; white-space: nowrap; }
.num small { margin-left: 6px; font: 700 13px/1 var(--sans); color: var(--ink-2); letter-spacing: 0; }
.line { display: block; margin-top: 5px; font: 500 13px/1.4 var(--sans); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.film { --fs: min(128px, calc((100cqw - 26px) / 3), calc(100cqh - 24px)); display: flex; align-self: flex-start; gap: 5px; padding: 12px 5px; flex: none;
  background: repeating-linear-gradient(90deg, var(--ink) 0 10px, var(--paper) 10px 16px) 0 3.5px / 100% 5px no-repeat,
              repeating-linear-gradient(90deg, var(--ink) 0 10px, var(--paper) 10px 16px) 0 calc(100% - 3.5px) / 100% 5px no-repeat, var(--ink); }
.film > img, .film > .twin { width: var(--fs); height: var(--fs); flex: none; object-fit: cover; }
.jamv img { height: 100cqh; width: auto; aspect-ratio: 3 / 4; object-fit: cover; border: 2px solid var(--ink); flex: none; }
.sfx-red { font: 400 34px/1.05 var(--sfx); color: var(--red); -webkit-text-stroke: 1px var(--ink); white-space: nowrap; display: inline-block; }
.duo { gap: 6px; }
.duo > .twin, .duo > img { width: min(calc((100cqw - 26px) / 2), 100cqh); height: min(calc((100cqw - 26px) / 2), 100cqh); border: 2px solid var(--ink); flex: none; object-fit: cover; }
.arr { font: 700 14px/1 var(--mono); color: var(--ink-2); font-style: normal; }
.rcpt-mini { flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 2px; padding: 9px 10px 14px; background: var(--paper-hi); border: 1.5px solid var(--ink);
  -webkit-mask: linear-gradient(#000 0 0) top / 100% calc(100% - 6px) no-repeat, conic-gradient(from -45deg at 50% 100%, #000 90deg, #0000 0) bottom / 10px 6px repeat-x;
  mask: linear-gradient(#000 0 0) top / 100% calc(100% - 6px) no-repeat, conic-gradient(from -45deg at 50% 100%, #000 90deg, #0000 0) bottom / 10px 6px repeat-x; }
.rl { display: block; font: 500 12px/1.5 var(--mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rl-b { font-weight: 700; }
.rcpt-mini .stamp { position: absolute; right: 10px; bottom: 14px; }
.seatv { justify-content: center; }
.no19 { position: relative; display: grid; place-items: center; width: min(92px, 100cqh); height: min(92px, 100cqh); font: 700 20px/1 var(--mono); color: var(--red); letter-spacing: -.02em; }
.no19 .ring { inset: 0; width: 100%; height: 100%; stroke-dasharray: none; stroke-width: 3.2; }
.no19 .ring path { stroke-dasharray: .035 .025; stroke-dashoffset: 0; }
.no19 .ring.is-drawn path { stroke-dasharray: 1 1; }

/* ------------------------------------------------------------------ views (shared frame) */
.vframe { position: absolute; inset: 0; display: flex; flex-direction: column; border: 3px solid var(--ink); background: var(--paper) url(media/fx/paper.webp) 0 0 / 256px;
  background-blend-mode: multiply; padding: 0 20px 20px; container-type: size; }
.vhead { position: relative; display: flex; align-items: center; gap: 18px; height: 48px; flex: none; margin: 0 -20px 18px; padding: 0 6px 0 20px; border-bottom: 2px solid var(--ink); background: var(--paper-hi); }
.vhead .tag { white-space: nowrap; }
.vhead h2 { font: 900 26px/1.2 var(--sans); letter-spacing: -.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.vh-side { font: 500 12px/1 var(--mono); color: var(--ink-2); white-space: nowrap; }
.x { margin-left: auto; flex: none; display: inline-flex; align-items: center; height: 36px; padding: 0 14px; border: 2px solid var(--ink); background: var(--paper);
  font: 700 14px/1 var(--sans); white-space: nowrap; }
.x:hover { background: var(--ink); color: var(--cream); }
.vbody { position: relative; flex: 1; min-height: 0; container-type: size; }
.view h2:focus { outline: none; }
.body { font: 400 16px/1.7 var(--sans); color: var(--ink-2); text-wrap: pretty; }
.quote { border-left: 3px solid var(--red); padding: 2px 0 2px 14px; }
.quote p { font: 700 15px/1.6 var(--sans); }
.quote cite { display: block; margin-top: 4px; font: 500 12px/1.4 var(--mono); color: var(--ink-2); font-style: normal; }
.quote cite a { text-decoration-color: var(--guide); text-decoration-thickness: 2px; text-underline-offset: 3px; }

/* works：显影转盘（3D 胶片鼓 + 暗房工作台） */
.wall { display: flex; flex-direction: column; gap: 8px; container-type: normal; }
.wtools { display: flex; align-items: center; justify-content: space-between; gap: 12px; height: 40px; flex: none; }
.chips { display: flex; gap: 6px; flex-wrap: nowrap; }
.mode { display: inline-flex; border: 2px solid var(--ink); flex: none; }
.mode-b { height: 36px; padding: 0 14px; border: 0; background: var(--paper); font: 700 13px/1 var(--sans); }
.mode-b + .mode-b { border-left: 2px solid var(--ink); }
.mode-b[aria-pressed="true"] { background: var(--ink); color: var(--cream); }
.reel { position: relative; flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 360px; grid-template-rows: minmax(0, 1fr); gap: 18px; }
.rstage { position: relative; grid-area: 1 / 1; min-width: 0; overflow: hidden; border: 2px solid var(--ink); touch-action: pan-y; cursor: grab; user-select: none; -webkit-user-select: none;
  background: radial-gradient(ellipse 70% 55% at 50% 0, rgba(216, 38, 31, .13), transparent 70%),
              linear-gradient(transparent calc(100% - 46px), rgba(23, 17, 12, .05) 0), var(--paper-hi);
  perspective: 1200px; -webkit-tap-highlight-color: transparent; }
.rstage.is-drag { cursor: grabbing; }
.rstage::after { content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 1900;   /* 两侧压暗：鼓的边缘隐入暗房 */
  background: linear-gradient(90deg, rgba(251, 245, 233, .95), transparent 13%, transparent 87%, rgba(251, 245, 233, .95)); }
.rdesc { position: absolute; z-index: 1950; left: 10px; top: 8px; max-width: calc(100% - 20px); padding: 3px 6px; background: rgba(255, 253, 248, .9); font: 500 12px/1.4 var(--mono); color: var(--ink-2); pointer-events: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rnav { grid-area: 1 / 1; align-self: end; justify-self: end; z-index: 3; display: flex; gap: 5px; margin: 0 12px 12px 0; }
.rnav .pg, .rnav .pg-n { height: 40px; }
.rnav .pg { width: 40px; }
/* 一帧：墨色胶片底 + 上下齿孔 + 画面（twin：彩色 / 墨线两层） */
.rf { position: absolute; left: 50%; top: 50%; width: var(--cw); height: var(--ch); margin: calc(var(--ch) / -2) 0 0 calc(var(--cw) / -2); display: block; color: var(--ink);
  text-decoration: none; will-change: transform; transform-origin: 50% 50%; -webkit-user-drag: none; outline-offset: 4px;
  background: repeating-linear-gradient(90deg, transparent 0 4px, var(--paper) 4px 11px, transparent 11px 16px) 0 calc(var(--band) / 2 - 3px) / 100% 6px no-repeat,
              repeating-linear-gradient(90deg, transparent 0 4px, var(--paper) 4px 11px, transparent 11px 16px) 0 calc(100% - var(--band) / 2 + 3px) / 100% 6px no-repeat, var(--ink); }
.rf .twin { position: absolute; left: var(--gx); right: var(--gx); top: var(--band); bottom: var(--band); background: var(--paper); }
.rf .twin img { -webkit-user-drag: none; pointer-events: none; }
.rf .twin .ink { opacity: calc(1 - var(--h, 0)); transition: opacity .45s ease; }
.rf.lit .twin .ink { opacity: 0; }
.rf .no { position: absolute; left: calc(var(--gx) + 2px); bottom: 1px; font: 700 10px/1 var(--mono); color: var(--guide); letter-spacing: .04em; }
.rf .code { position: absolute; z-index: 2; left: calc(var(--gx) + 4px); bottom: calc(var(--band) + 4px); padding: 3px 4px 2px; background: var(--paper-hi); border: 1.5px solid var(--ink); font: 700 10px/1 var(--mono); }
.rf .glyph { position: absolute; z-index: 2; right: calc(var(--gx) + 4px); top: calc(var(--band) + 4px); width: 20px; height: 20px; padding: 3px; background: var(--paper-hi);
  border: 1.5px solid var(--ink); border-radius: 50%; fill: none; stroke: var(--ink); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.rf .earn { position: absolute; right: calc(var(--gx) + 2px); top: calc(var(--band) / 2 - 4px); width: 8px; height: 8px; border-radius: 50%; background: var(--red); box-shadow: 0 0 0 1.5px var(--paper); }
.rf .ring { left: -12%; top: -9%; width: 124%; height: 118%; z-index: 3; stroke-width: 3; }
.rf:not(.is-cr) .ring { display: none; }
.rf.is-cr .ring { filter: drop-shadow(0 0 1px var(--paper)); }
.rstage.has-cr .rf:not(.is-cr) .twin { filter: grayscale(.6) opacity(.55); }
/* 背面一圈：镜像的墨线稿压暗，像从片基背后看 */
.rf.is-back { background-color: rgba(58, 38, 20, .55); }
.rf.is-back > :not(.twin) { visibility: hidden; }
.rf.is-back .twin { opacity: .62; filter: sepia(.5) contrast(1.15) brightness(.9); }
.rf.is-hot .twin { box-shadow: 0 0 0 3px var(--marker); }
.rf[aria-current="true"] .twin { box-shadow: 0 0 0 2px var(--paper-hi); }
.rf[aria-current="true"]:hover .twin, .rf[aria-current="true"]:focus-visible .twin { box-shadow: 0 0 0 3px var(--red); cursor: zoom-in; }
.rf canvas[data-gl] { z-index: 1; }
/* 正前方唯一的主操作：「点开看创意」 */
.rf-go { position: absolute; z-index: 4; left: 50%; bottom: calc(var(--band) * -.2 - 14px); translate: -50% 0; padding: 6px 10px 5px; background: var(--red); color: var(--cream);
  border: 2px solid var(--ink); box-shadow: 2px 2px 0 var(--ink); font: 900 12px/1 var(--sans); white-space: nowrap; pointer-events: none;
  opacity: 0; transform: translateY(6px) rotate(-2deg); transition: opacity .18s, transform .18s var(--ease); }
.rf[aria-current="true"] .rf-go { opacity: 1; transform: rotate(-2deg); }
.rf[aria-current="true"]:hover .rf-go { transform: translateY(-2px) rotate(-2deg); box-shadow: 3px 4px 0 var(--ink); }
.rstage.is-strip .rf-go { font-size: 10px; padding: 4px 6px 3px; bottom: -10px; }
.rcoach { position: absolute; z-index: 1960; left: calc(50% + var(--cw) * .62); top: 14%; display: flex; flex-direction: column; align-items: flex-start; pointer-events: none;
  font: 900 13px/1.3 var(--sans); color: var(--red); transform: rotate(-3deg); transition: opacity .3s; }
.rcoach svg { width: 72px; height: 42px; margin: 0 0 2px -8px; fill: none; stroke: var(--red); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; transform: scaleX(-1) rotate(10deg); overflow: visible; }
.rcoach span { background: rgba(255, 253, 248, .92); padding: 3px 6px; border: 1.5px dashed var(--red); }
html:not(.rm) .rcoach:not([hidden]) svg path { stroke-dasharray: 1 1; animation: ring-draw .5s ease-out both .15s; }
.rcoach path { stroke-dasharray: none; }
.rcoach.is-out { opacity: 0; }
.rstage.is-strip .rcoach { left: auto; right: 8px; top: 6px; font-size: 12px; }
.rstage.is-strip .rcoach svg { display: none; }
/* 暗房工作台 */
.bench.is-wait > * { visibility: hidden; }
.bench.is-wait::after { content: "胶片转动中…"; position: absolute; left: 16px; right: 16px; top: 50%; text-align: center; font: 700 13px/1 var(--mono); color: var(--blue);
  padding: 10px; border: 1px dashed var(--guide); animation: blink 1.2s steps(2) infinite; }
.bench { grid-area: 1 / 2; position: relative; min-height: 0; display: flex; flex-direction: column; gap: 8px; padding: 14px 16px 16px; background: var(--paper-hi); border: 2.5px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink); overflow: hidden; }
.b-t { font: 900 24px/1.2 var(--sans); letter-spacing: -.01em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.b-sig { position: relative; display: inline-flex; align-self: flex-start; margin-top: -2px; padding-bottom: 4px; }
.sig { font: italic 400 30px/1.15 "Snell Roundhand", "Segoe Script", "Bradley Hand", "Apple Chancery", "Brush Script MT", cursive; color: var(--ink); white-space: nowrap; }
.swash { position: absolute; left: -4px; right: -10px; bottom: -3px; width: calc(100% + 14px); height: 12px; fill: none; stroke: var(--red); stroke-width: 2.4; stroke-linecap: round; overflow: visible; }
.swash path { stroke-dasharray: 1 1; stroke-dashoffset: 0; }
.b-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 2px 4px; font: 500 12px/1.5 var(--mono); color: var(--blue); white-space: nowrap; }
.b-meta a { color: var(--red-deep); }
.b-desc { font: 400 14px/1.65 var(--sans); color: var(--ink-2); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; min-height: 3.3em; flex: none; }
.slip { position: relative; flex: 1 1 0; min-height: 96px; display: flex; flex-direction: column; padding: 8px 12px 18px; background: var(--paper); border: 1.5px solid var(--ink); border-bottom: 0;
  -webkit-mask: linear-gradient(#000 0 0) top / 100% calc(100% - 7px) no-repeat, conic-gradient(from -45deg at 50% 100%, #0000, #000 1deg 89deg, #0000 90deg) bottom / 12px 7px repeat-x;
  mask: linear-gradient(#000 0 0) top / 100% calc(100% - 7px) no-repeat, conic-gradient(from -45deg at 50% 100%, #0000, #000 1deg 89deg, #0000 90deg) bottom / 12px 7px repeat-x; }
.slip-h { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding-bottom: 6px; margin-bottom: 6px; border-bottom: 1.5px dashed var(--ink-2); font: 700 11.5px/1 var(--mono); color: var(--blue); }
.slip-copy { height: 28px; padding: 0 10px; font-size: 12px; }
.slip-t { flex: 1 1 0; min-height: 0; overflow: hidden; font: 400 12px/19px var(--mono); color: var(--ink); }
.pl { display: block; white-space: pre; }
.slip .stamp { position: absolute; right: 10px; bottom: 14px; --rot: -8deg; opacity: 0; pointer-events: none; background: rgba(251, 245, 233, .82); }
.slip .stamp.is-in { opacity: 1; }
.bench.is-in .pl { animation: print .2s steps(6, end) both; }
@keyframes print { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
.b-more { flex: none; display: flex; flex-direction: column; gap: 6px; }
.b-more-h { font: 700 11.5px/1 var(--mono); color: var(--blue); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.b-thumbs { display: flex; gap: 8px; }
.b-thumbs:empty { display: none; }
.b-thumbs button { width: 56px; height: 56px; padding: 0; border: 2px solid var(--ink); background: var(--ink); box-shadow: 2px 2px 0 var(--ink); transition: transform .14s; }
.b-thumbs button:hover { transform: translate(-1px, -2px) rotate(-2deg); box-shadow: 3px 4px 0 var(--red); }
.b-thumbs img { display: block; width: 100%; height: 100%; object-fit: cover; }
.bench.is-in .b-thumbs button { animation: b-up .38s cubic-bezier(.2, .8, .2, 1) both; }
.bench.is-in .b-thumbs button:nth-child(2) { animation-delay: .06s; } .bench.is-in .b-thumbs button:nth-child(3) { animation-delay: .12s; } .bench.is-in .b-thumbs button:nth-child(4) { animation-delay: .18s; }
.b-earn { position: relative; margin-left: 6px; padding: 4px 6px; font: 700 12px/1 var(--mono); color: var(--red-deep); }
.b-earn .ring { left: -6px; top: -5px; width: calc(100% + 12px); height: calc(100% + 10px); stroke-width: 2.4; }
.b-open { height: 48px; font-size: 15px; flex: none; }
.bench.is-in .b-t { animation: b-up .38s cubic-bezier(.2, .8, .2, 1) both; }
.bench.is-in .b-meta, .bench.is-in .b-desc { animation: b-up .38s cubic-bezier(.2, .8, .2, 1) both; animation-delay: .06s; }
.bench.is-in .sig { animation: write .8s cubic-bezier(.45, 0, .25, 1) both .1s; }
.bench.is-in .swash path { animation: ring-draw .5s ease-out both .7s; }
@keyframes b-up { from { opacity: 0; transform: translateY(8px); } }
@keyframes write { from { clip-path: inset(-20% 100% -20% -6%); } to { clip-path: inset(-20% -6% -20% -6%); } }
/* 创作者索引 */
.wfoot { display: flex; align-items: center; justify-content: space-between; gap: 16px; height: 44px; flex: none; }
.crs { display: flex; align-items: center; gap: 6px; min-width: 0; }
.rack-l { font: 700 12px/1 var(--mono); color: var(--blue); margin-right: 4px; white-space: nowrap; }
.crb { display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 10px 0 4px; border: 2px solid var(--ink); border-radius: 999px; background: var(--paper);
  font: 700 12.5px/1 var(--sans); white-space: nowrap; transition: background .16s, color .16s; }
.crb i { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: var(--ink); color: var(--cream); font: 700 10px/1 var(--mono); font-style: normal; }
.crb small { font: 700 11px/1 var(--mono); color: var(--red-deep); }
.crb:hover { background: var(--paper-hi); box-shadow: inset 0 -3px 0 var(--guide); }
.crb[aria-pressed="true"] { background: var(--paper-hi); border-color: var(--red); box-shadow: 0 0 0 2px var(--red); }
.crb[aria-pressed="true"] i { background: var(--red); }
.slot-cta { display: inline-flex; align-items: center; height: 44px; padding: 0 18px; border: 2px dashed var(--ink); background: var(--paper-hi); font: 700 14px/1 var(--sans);
  text-decoration: none; white-space: nowrap; flex: none; }
.slot-cta:hover { border-color: var(--red); color: var(--red-deep); }
/* 手机：横向胶片带 */
.rstage.is-strip::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: var(--ch); translate: 0 -50%; pointer-events: none;
  background: repeating-linear-gradient(90deg, transparent 0 4px, var(--paper) 4px 11px, transparent 11px 16px) 0 calc(var(--band) / 2 - 3px) / 100% 6px no-repeat,
              repeating-linear-gradient(90deg, transparent 0 4px, var(--paper) 4px 11px, transparent 11px 16px) 0 calc(100% - var(--band) / 2 + 3px) / 100% 6px no-repeat, rgba(23, 17, 12, .85); }

/* works detail */
.detail { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 32px; }
.dleft { --cv: min(560px, calc(100cqh - 62px)); display: flex; flex-direction: column; gap: 14px; width: var(--cv); }
.dslot { position: relative; width: var(--cv); height: var(--cv); border: 2.5px solid var(--ink); box-sizing: content-box; background: var(--paper); overflow: hidden; cursor: crosshair; }
.dslot .twin { position: absolute; inset: 0; }
.dload { position: absolute; inset: 0; display: grid; place-items: center; font: 700 13px/1 var(--mono); color: var(--blue);
  background: linear-gradient(var(--guide), var(--guide)) center / calc(100% - 40px) 1px no-repeat; }
.dload span { background: var(--paper); padding: 6px 10px; border: 1px dashed var(--guide); }
.dslot .stamp-slot, .dslot .stamp { position: absolute; z-index: 3; left: 20px; bottom: 22px; }
.dload[hidden] ~ .stamp-slot { display: none; }   /* the dashed outline belongs to the loading state only */
.dpager { display: flex; align-items: center; gap: 5px; margin-left: auto; }
.dpager .pg, .dpager .pg-n { height: 36px; }
.dpager .pg { width: 40px; }
.dpager .pg-n { min-width: 72px; font-size: 13px; }
.dpager + .x { margin-left: 14px; }
.dslot .stamp { opacity: 0; }
.dslot .stamp.is-in { opacity: 1; }
.dslot.brushing { cursor: none; }
.dslot.brushing .brush { opacity: 1; }
.dctl { display: flex; align-items: center; gap: 12px; height: 48px; }
.sfx--d .sfx-t { font-size: 34px; }
.scrub { display: inline-flex; gap: 6px; margin-left: auto; }
.dright { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; min-height: 0; overflow: hidden; padding-top: 4px; }
.dchips { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.chip-s { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; border: 2px solid var(--ink); border-radius: 999px; font: 700 13px/1 var(--sans); background: var(--paper-hi); }
.chip-s svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; }
#d-stamp { opacity: 0; }
#d-stamp.is-in { opacity: 1; }
.dtitle { font: 900 40px/1.15 var(--sans); letter-spacing: -.02em; }
.dby { font: 500 15px/1.5 var(--sans); }
.dby a { color: var(--blue); text-decoration: none; padding: 8px 0; }
.dby a:hover { text-decoration: underline; }
.dstats { font: 500 13px/1.4 var(--mono); color: var(--ink-2); }
.dbadges { display: flex; gap: 8px; flex-wrap: wrap; }
.dbadges span { font: 700 12px/1 var(--mono); padding: 6px 8px; border: 1.5px solid var(--ink); background: var(--paper-hi); }
.dbadges span + span { color: var(--blue); }
.ddesc { font: 400 15px/1.7 var(--sans); color: var(--ink-2); min-height: 51px; max-width: 40em; }
.skel { display: block; height: 12px; margin: 7px 0 13px; background: var(--panel); width: 92%; }
.skel + .skel { width: 64%; }
.pcard { width: 100%; border: 2px solid var(--ink); background: var(--paper-hi); margin-top: 4px; }
.pc-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 6px 6px 14px; border-bottom: 1.5px dashed var(--ink); }
.pc-n { font: 700 12px/1 var(--mono); color: var(--blue); letter-spacing: .04em; }
.pc-copy { position: relative; height: 44px; border-radius: 0; }
.pc-copy .stamp { position: absolute; right: -6px; top: -12px; }
.pc-t { padding: 12px 14px 14px; font: 400 14px/1.6 var(--mono); overflow-wrap: anywhere; }
.pc-t .tk { background: linear-gradient(var(--guide), var(--guide)) 0 100% / 0 2px no-repeat; transition: background-size .12s linear; }
.pc-t .tk.read { background-size: 100% 2px; }
.pc-t .tk.now { background: var(--marker); }
.detail .brush { position: absolute; }

/* jam */
.jam { display: grid; grid-template-columns: auto minmax(0, 1fr) minmax(0, 1.32fr); gap: 30px; }
.jcover { position: relative; width: min(31cqw, calc(100cqh * .75)); height: 100%; }
.jcover .twin { position: absolute; inset: 0; border: 2.5px solid var(--ink); }
.jsfx { position: absolute; left: 50%; top: 9%; translate: -50% 0; font: 400 72px/1 var(--sfx); color: var(--red); -webkit-text-stroke: 2.4px var(--ink); white-space: nowrap;
  transform: rotate(-4deg); text-shadow: 3px 3px 0 var(--paper-hi); }
.burst-stamp { position: absolute; right: 6%; bottom: 7%; width: 132px; height: 132px; display: grid; place-items: center; color: var(--cream); transform: rotate(-8deg); }
.burst-stamp svg { position: absolute; inset: 0; width: 100%; height: 100%; fill: var(--red); stroke: var(--ink); stroke-width: 2.4; stroke-linejoin: round; }
.burst-stamp b { position: relative; font: 900 18px/1.15 var(--sans); text-align: center; }
.jinfo { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 18px; padding-bottom: 6%; min-height: 0; }
.jinfo h2, .tcopy h2, .bcopy h2, .sleft h2 { font: 900 36px/1.2 var(--sans); letter-spacing: -.02em; text-wrap: balance; }
.jdue { border: 2px solid var(--ink); background: var(--paper-hi); padding: 12px 16px; }
.jdue-l { font: 700 13px/1.4 var(--sans); }
.jdue-c { font: 700 24px/1.3 var(--mono); color: var(--red-deep); font-variant-numeric: tabular-nums; white-space: nowrap; }
.jtop { font: 500 15px/1.7 var(--sans); text-wrap: pretty; }
.jtop b { color: var(--red-deep); }
.jboard { display: flex; flex-direction: column; min-height: 0; }
.jb-h { display: flex; align-items: center; gap: 4px; height: 32px; flex: none; font: 700 13px/1 var(--mono); border-bottom: 2px solid var(--ink); }
.jb-h .live { margin-left: 6px; }
.jb-s { margin-left: auto; font-weight: 500; color: var(--ink-2); font-size: 12px; }
.jrows { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.jrow { position: relative; flex: 1; min-height: 0; max-height: 64px; display: grid; grid-template-columns: 34px 44px minmax(0, 1fr) auto; align-items: center; gap: 10px;
  padding: 0 2px; border-bottom: 1px solid rgba(23, 17, 12, .18); cursor: pointer; }
.jrow:hover { background: var(--paper-hi); }
.jr-n { font: 900 24px/1 var(--sans); text-align: center; }
.jrow:nth-child(-n + 3) .jr-n { color: var(--red); }
.jr-th { width: 44px; height: 44px; overflow: hidden; border: 2px solid var(--ink); }
.jr-th img { width: 100%; height: 100%; object-fit: cover; }
.jr-th--crop img { transform: scale(1.7); transform-origin: 66% 38%; }
.jr-b { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.jr-t { font: 700 14px/1.2 var(--sans); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.jr-t span { font-weight: 400; color: var(--ink-2); font-size: 13px; }
.jr-m { display: flex; align-items: center; gap: 8px; min-width: 0; }
.jr-st { font: 700 10.5px/1 var(--mono); letter-spacing: .04em; color: var(--red-deep); border: 1.5px solid currentColor; padding: 3px 4px 2px; white-space: nowrap; flex: none; }
.jr-bar { flex: 1; height: 10px; min-width: 30px; position: relative; }
.jr-bar i { position: absolute; left: 0; top: 0; bottom: 0; width: calc(var(--v) * 100%); background: radial-gradient(circle, var(--red) 0 34%, transparent 40%) 0 0 / 4.4px 4.4px;
  border: 1.5px solid var(--red); transition: width .32s var(--ease); }
.jr-c { font: 700 13px/1 var(--mono); width: 36px; text-align: right; font-variant-numeric: tabular-nums; flex: none; }
.vote { height: 44px; min-width: 64px; padding: 0 10px; border: 2px solid var(--ink); background: var(--paper); font: 700 13px/1 var(--sans); white-space: nowrap; position: relative; }
.vote:hover { background: var(--red); color: var(--cream); }
.vote[disabled] { background: var(--ink); color: var(--cream); cursor: default; }
.jr-cand { position: absolute; right: 84px; top: 5px; pointer-events: none; --rot: -4deg; }
.jr-cand.stamp { font-size: 10.5px; padding: 4px 6px 3px; }
.pa { position: absolute; left: 50%; top: -6px; translate: -50% -100%; font: 400 22px/1 var(--sfx); color: var(--red); -webkit-text-stroke: 1px var(--ink); pointer-events: none; white-space: nowrap; }
.jrow-cta { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 44px; margin-top: 8px; padding: 6px 14px;
  border: 2px dashed var(--ink); background: var(--paper-hi); font: 500 13px/1.3 var(--sans); text-decoration: none; }
.jrow-cta b { color: var(--red-deep); white-space: nowrap; }
.jrow-cta:hover { border-color: var(--red); }

/* team */
.team { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 30px; }
.tboard { position: relative; border: 2px solid var(--ink); background: var(--paper-hi);
  background-image: linear-gradient(rgba(142, 197, 222, .35) 1px, transparent 1px), linear-gradient(90deg, rgba(142, 197, 222, .35) 1px, transparent 1px);
  background-size: 24px 24px; overflow: hidden; container-type: size; }
.tlines { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; fill: none; stroke: var(--blue); stroke-width: 2.2; stroke-linecap: round; stroke-dasharray: 1 1; }
.tlines path { stroke-dasharray: 1 1; stroke-dashoffset: 1; }
.tlines path.on { stroke-dashoffset: 0; transition: stroke-dashoffset .5s ease-out; }
.node { position: absolute; left: var(--x); top: var(--y); translate: -50% -50%; display: flex; flex-direction: column; align-items: center; gap: 2px; text-decoration: none;
  text-align: center; z-index: 2; }
.node img { width: 72px; height: 72px; border-radius: 50%; border: 2.5px solid var(--ink); object-fit: cover; background: var(--paper); transition: transform .16s var(--ease); }
.node:hover img { transform: scale(1.06); }
.node b { margin-top: 4px; font: 700 13px/1.2 var(--sans); background: var(--paper-hi); padding: 0 4px; }
.node span { font: 400 12px/1.3 var(--sans); color: var(--ink-2); white-space: nowrap; background: var(--paper-hi); padding: 0 4px; }
.reply { position: absolute; bottom: calc(100% + 2px); left: 50%; translate: -50% 0; quotes: none; white-space: nowrap; background: var(--paper-hi); border: 2px solid var(--ink);
  border-radius: 14px; padding: 6px 10px; font: 700 13px/1.2 var(--sans); opacity: 0; transform: scale(.6); transition: opacity .16s, transform .2s cubic-bezier(.2, 1.6, .4, 1); }
.reply.on { opacity: 1; transform: none; }
.idea { position: absolute; left: 50%; top: 46%; translate: -50% -50%; width: min(260px, 46cqh); z-index: 1; }
.idea .twin { width: 100%; aspect-ratio: 1; border: 2.5px solid var(--ink); }
.idea-seal { position: absolute; left: -10px; top: 10px; opacity: 0; }
.idea-seal.is-in { opacity: 1; }
.idea-tape { position: absolute; right: -12px; top: -10px; opacity: 0; transition: opacity .2s; }
.idea-tape.on { opacity: 1; }
.sticky { position: absolute; left: 62%; bottom: -28px; width: max-content; min-width: 190px; padding: 9px 11px; background: var(--marker); border: 1.5px solid var(--ink); box-shadow: 2px 3px 0 var(--shadow);
  transform: rotate(2.5deg); font: 400 12px/1.45 var(--sans); }
.sticky b { display: block; font: 700 13px/1.35 var(--sans); }
.sticky span { display: block; white-space: nowrap; }
.sticky b { white-space: nowrap; }
.tboard { grid-column: 1; grid-row: 1; }
.tdemo { grid-column: 1; grid-row: 1; align-self: end; justify-self: start; position: relative; z-index: 3; margin: 0 0 16px 16px; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }   /* overlays the board's foot, stacked so it stays left of Weijie */
.tcopy { grid-column: 2; grid-row: 1; }
.timer { font: 700 13px/1 var(--mono); padding: 8px 10px; border: 2px solid var(--ink); background: var(--paper); white-space: nowrap; font-variant-numeric: tabular-nums; }
.timer.done { background: var(--ink); color: var(--cream); }
.tcopy { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 16px; padding-bottom: 4%; min-height: 0; }
.steps { display: flex; flex-direction: column; gap: 6px; font: 500 15px/1.5 var(--sans); }
.steps b { color: var(--red); margin-right: 8px; font-weight: 900; }
.tcopy .quote p { font-size: 14px; }

/* biz */
.biz { display: grid; grid-template-columns: auto auto minmax(0, 1fr); gap: 32px; align-items: center; }
.bimg { position: relative; width: min(460px, calc(100cqh - 64px)); }
.bimg .twin { width: 100%; aspect-ratio: 1; border: 2.5px solid var(--ink); }
.bimg .stamp { position: absolute; left: 16px; top: calc(min(460px, 100cqh - 64px) - 52px); opacity: 0; }
.bimg .stamp.is-in { opacity: 1; }
.bimg figcaption { margin-top: 10px; font: 400 14px/1.5 var(--sans); color: var(--ink-2); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.bimg figcaption b { color: var(--ink); font-weight: 900; }
.rcpt { position: relative; width: 300px; padding: 16px 16px 26px; background: var(--paper-hi); border: 1.5px solid var(--ink); border-bottom: 0; font: 400 13px/1.6 var(--mono);
  box-shadow: 4px 5px 0 var(--shadow);
  -webkit-mask: linear-gradient(#000 0 0) top / 100% calc(100% - 9px) no-repeat, conic-gradient(from -45deg at 50% 100%, #000 90deg, #0000 0) bottom / 14px 9px repeat-x;
  mask: linear-gradient(#000 0 0) top / 100% calc(100% - 9px) no-repeat, conic-gradient(from -45deg at 50% 100%, #000 90deg, #0000 0) bottom / 14px 9px repeat-x; }
.rg { position: relative; padding: 8px 0; }
.rg + .rg { border-top: 1px dashed rgba(23, 17, 12, .45); }
.rg-h { text-align: center; padding-top: 0; }
.rg-h .rc-c:first-child { font-weight: 700; letter-spacing: .12em; }
.rg-f { border-top: 1.5px solid var(--ink) !important; color: var(--ink-2); }
.rc-r { display: flex; justify-content: space-between; gap: 8px; }
.rc-s { padding-left: 1.6em; color: var(--ink-2); }
.rg .stamp { position: relative; display: inline-block; margin: 7px 0 1px 1.6em; opacity: 0; }
.rg .stamp.is-in { opacity: 1; }
html.js:not(.rm) .rcpt.is-armed .rg { clip-path: inset(0 0 100% 0); }
.bcopy { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; min-height: 0; }
.nums { display: grid; grid-template-columns: repeat(3, auto); gap: 22px; }
.nums div { display: flex; flex-direction: column-reverse; }
.nums dd { font: 900 34px/1.05 var(--sans); letter-spacing: -.02em; }
.nums dt { font: 500 13px/1.4 var(--sans); color: var(--ink-2); margin-top: 4px; }
.bctas { display: flex; gap: 12px; flex-wrap: wrap; }

/* seats */
.seats { display: grid; grid-template-columns: minmax(0, 1fr) 430px; gap: 36px; }
.sleft { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; min-height: 0; }
.sfacts { font: 500 15px/1.5 var(--sans); color: var(--ink-2); }
.sfacts b { color: var(--ink); font: 900 18px/1 var(--sans); }
.scount { font: 500 14px/1.3 var(--sans); }
.scount b { font: 700 28px/1.2 var(--mono); color: var(--red-deep); margin-left: 8px; font-variant-numeric: tabular-nums; }
.csheet { --fs: 70px; display: flex; flex-direction: column; gap: 6px; margin: 6px 0 4px; }
.cs-row { display: flex; gap: 6px; padding: 7px 8px; background: repeating-linear-gradient(90deg, var(--paper) 0 6px, transparent 6px 12px) 6px 2px / calc(100% - 12px) 3px no-repeat, var(--ink); }
.cs-f { position: relative; width: var(--fs); height: calc(var(--fs) * .72); display: grid; place-items: center; font: 700 13px/1 var(--mono); background: var(--paper); color: var(--ink-2); }
.cs-f.taken { background: var(--panel); color: var(--ink); }
.cs-f.taken::after { content: "✓"; position: absolute; right: 4px; top: 3px; font: 700 11px/1 var(--mono); color: var(--red); }
.cs-f.blank { background: var(--paper); color: rgba(94, 85, 76, .55); box-shadow: inset 0 0 0 1px var(--guide); outline: 1px dashed var(--guide); outline-offset: -5px; }
.cs-f.me { background: var(--paper-hi); color: var(--red); }
.cs-f.me .ring { left: -14%; top: -22%; width: 128%; height: 144%; }
.cs-f.me .lab { position: absolute; top: calc(100% + 10px); left: 50%; translate: -50% 0; font: 700 13px/1 var(--sans); color: var(--red); white-space: nowrap; transform: rotate(-3deg);
  background: var(--paper-hi); padding: 3px 6px; border: 1.5px solid var(--red); z-index: 3; }
.cs-f.me .stamp { position: absolute; left: 50%; top: 50%; translate: -50% -50%; font-size: 11px; padding: 4px 5px 3px; opacity: 0; }
.cs-f.me .stamp.is-in { opacity: 1; }
.perks { font: 700 15px/1.5 var(--sans); }
.coupons { display: flex; flex-direction: column; gap: 12px; min-height: 0; }
.cp { position: relative; display: flex; min-height: 150px; flex: 1; max-height: 176px; background: var(--paper-hi); border: 2px solid var(--ink); }
.cp-stub { flex: none; width: 46px; display: grid; place-items: center; border-right: 2px dashed var(--ink); font: 700 13px/1 var(--mono); letter-spacing: .14em;
  writing-mode: vertical-rl; transform: rotate(180deg); background: var(--panel); }
.cp-b { flex: 1; padding: 16px 18px; display: flex; flex-direction: column; gap: 10px; justify-content: center; }
.cp-h { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.cp-h b { font: 900 20px/1.2 var(--sans); }
.cp-p { font: 900 22px/1.1 var(--sans); white-space: nowrap; }
.cp-p small { font: 500 12px/1 var(--sans); color: var(--ink-2); margin-left: 4px; }
.cp-f { font: 400 14px/1.6 var(--sans); color: var(--ink-2); text-wrap: pretty; }
.cp-found { border: 3px solid var(--red); box-shadow: 5px 5px 0 var(--ink); }
.cp-found .cp-stub { background: var(--red); color: var(--cream); border-right-color: var(--red-deep); }
.cp-found .cp-p { color: var(--red); }
.cp-stamp { position: absolute; right: 14px; top: -12px; }
.cp-pro { border-color: var(--blue); }
.cp-pro .cp-stub { color: var(--blue); border-right-color: var(--blue); }
.cp-pro .cp-p { color: var(--blue); }
.faq-link { align-self: flex-start; display: inline-flex; align-items: center; min-height: 44px; font: 700 14px/1 var(--sans); color: var(--blue); text-decoration: none; }
.faq-link:hover { text-decoration: underline; text-underline-offset: 4px; }

/* ------------------------------------------------------------------ overlays */
.ov { padding: 0; border: 3px solid var(--ink); background: var(--paper) url(media/fx/paper.webp) 0 0 / 256px; background-blend-mode: multiply; color: var(--ink);
  max-width: none; max-height: none; overflow: hidden; }
.ov::backdrop { background: rgba(23, 17, 12, .38); }
.ov-in { height: 100%; overflow: auto; overscroll-behavior: contain; }
.ov-x { position: absolute; top: 10px; right: 10px; z-index: 5; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 2px solid var(--ink); background: var(--paper-hi); }
.ov-x svg { width: 20px; height: 20px; fill: none; stroke: var(--ink); stroke-width: 2.4; stroke-linecap: round; }
.ov-x:hover { background: var(--ink); }
.ov-x:hover svg { stroke: var(--cream); }
.ov-faq { position: fixed; inset: calc(var(--top) + 4px) 20px 14px auto; width: 520px; height: auto; margin: 0; box-shadow: -8px 8px 0 var(--shadow); }
.ov-faq .ov-in { padding: 22px 26px 18px; }
.ov-head { margin-bottom: 12px; padding-right: 50px; }
.ov-head h2 { font: 900 32px/1.2 var(--sans); }
.ov-head h2:focus { outline: none; }
.ov-head p { font: 500 14px/1.6 var(--sans); color: var(--ink-2); }
.ov-faq details { border-top: 2px solid var(--ink); }
.ov-faq details:last-of-type { border-bottom: 2px solid var(--ink); }
.ov-faq summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 52px; cursor: pointer; font: 700 16px/1.4 var(--sans); list-style: none; padding: 6px 0; }
.ov-faq summary::-webkit-details-marker { display: none; }
.ov-faq summary::after { content: "+"; font: 700 20px/1 var(--mono); color: var(--red); flex: none; }
.ov-faq details[open] summary::after { content: "−"; }
.ov-faq details p { padding: 0 0 14px; font: 400 15px/1.75 var(--sans); color: var(--ink-2); }
.ov-folio { margin-top: 14px; font: 500 11.5px/1.4 var(--mono); color: var(--ink-2); }
.ov[open] { animation: ov-in .22s var(--ease); }
.ov-faq[open] { animation-name: ov-slide; }
@keyframes ov-in { from { opacity: 0; transform: scale(.97); } }
@keyframes ov-slide { from { opacity: 0; transform: translateX(30px); } }
.ov-cr { width: 760px; height: 522px; margin: auto; box-shadow: 8px 10px 0 var(--shadow); }
.cr { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 26px; padding: 18px; }
.cr-cover { position: relative; height: 480px; border: 2.5px solid var(--ink); overflow: hidden; background: var(--ink); }
.cr-cover img { width: 100%; height: 100%; object-fit: cover; }
.cr-mast { position: absolute; left: 14px; top: 10px; font: 900 44px/1 var(--sans); color: var(--cream); letter-spacing: -.03em; text-shadow: 2px 2px 0 var(--ink); }
.cr-issue { position: absolute; left: 14px; bottom: 16px; background: var(--ink); color: var(--cream); font: 700 12px/1 var(--mono); padding: 6px 9px 5px; transform: rotate(-2deg); letter-spacing: .06em; }
.cr-b { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 6px 40px 0 0; min-width: 0; }
.cr-n { font: 900 40px/1.1 var(--sans); letter-spacing: -.02em; }
.cr-n:focus { outline: none; }
.cr-r { font: 500 14px/1.4 var(--sans); color: var(--ink-2); }
.cr-q { position: relative; margin: 6px 0 4px; padding: 10px 14px; background: var(--paper-hi); border: 2.2px solid var(--ink); border-radius: 18px; font: 700 15px/1.5 var(--sans); }
.cr-s { font: 500 13px/1.4 var(--mono); color: var(--ink-2); }
.cr-l { margin-top: 4px; font: 700 12px/1 var(--mono); color: var(--blue); letter-spacing: .06em; }
.cr-m { display: flex; flex-wrap: wrap; gap: 6px 10px; padding: 4px 0 2px; }
.cr-m .stamp { --rot: -3deg; font-size: 11px; padding: 5px 7px 4px; }
.cr-p { display: flex; gap: 10px; }
.cr-p a { display: block; width: 84px; height: 84px; border: 2px solid var(--ink); overflow: hidden; }
.cr-p img { width: 100%; height: 100%; object-fit: cover; transition: transform .2s var(--ease); }
.cr-p a:hover img { transform: scale(1.06); }
.cr .btn { margin-top: 6px; height: 48px; }
.cr .ov-folio { display: none; }

/* SE2 — view transitions: only the empty frame is named */
::view-transition-group(frame) { animation-duration: .42s; animation-timing-function: cubic-bezier(.2, .8, .2, 1); border: 3px solid var(--ink); box-sizing: border-box; }
::view-transition-old(frame), ::view-transition-new(frame) { animation: none; opacity: 0; }
::view-transition-old(root) { animation: vt-fade-out .25s ease both; }
::view-transition-new(root) { animation: vt-fade-in .25s ease .12s both; }
@keyframes vt-fade-out { to { opacity: 0; } }
@keyframes vt-fade-in { from { opacity: 0; } }
.flip-frame { position: fixed; z-index: 50; border: 3px solid var(--ink); pointer-events: none; transform-origin: 0 0; }
.focus-lines { position: absolute; z-index: 40; pointer-events: none; overflow: visible; stroke: var(--ink); stroke-width: 2; stroke-linecap: round; opacity: 0; }

/* ================================================================== DESKTOP-ONLY tweaks (>= 1180 x 620) */
@media (min-width: 1180px) and (min-height: 620px) {
  .t .vis img { min-height: 0; }
}
@media (max-width: 1099px) { .colophon { display: none; } }

/* ================================================================== COMPACT desktop (max-height 819) */
@media (min-width: 1180px) and (min-height: 620px) and (max-height: 819px) {
  :root { --top: 56px; }
  .cta-top { height: 40px; font-size: 14px; }
  .sheet { margin: 2px var(--tabsw) 10px 16px; }
  .view { inset: 14px 14px 30px; }
  .folio { bottom: 8px; left: 14px; right: 14px; }
  .page { grid-template-rows: minmax(0, 1fr) clamp(170px, 26svh, 250px); }
  :root { --tabsw: 62px; }
  .tabs { top: calc(var(--top) + 16px); gap: 5px; }
  .tabs a { padding: 9px 0 9px 16px; gap: 5px; }
  .tabs a span { font-size: 14px; }
  .tabs svg { width: 16px; height: 16px; }
  .p1 { padding: 16px 18px; }
  .kick { font-size: 15px; }
  h1 { margin-top: 8px; }
  .hr-h { padding: 6px 6px 6px 14px; }
  .hr-all { height: 36px; font-size: 13px; }
  .hr-cap { padding: 7px 14px 8px; }
  .hr-t { font-size: 17px; }
  .hreel .rnav .pg, .hreel .rnav .pg-n { height: 36px; }
  .hreel .rnav .pg { width: 36px; }
  .ctas { padding-top: 12px; }
  .crew { padding-top: 10px; }
  .crew ul { margin-top: 8px; }
  .crew img { width: 46px; height: 46px; }
  .p1 .lede { display: none; }   /* 矮屏：让位给创作者头像条 */
  .ctas .btn { height: 48px; }
  .facts { margin-top: 12px; }
  .t { padding: 12px 14px; }
  .vis { margin: 8px 0; }
  .num { font-size: 30px; }
  .film { --fs: min(128px, calc((100cqw - 26px) / 3), calc(100cqh - 16px)); padding: 8px 5px;
    background: repeating-linear-gradient(90deg, var(--ink) 0 10px, var(--paper) 10px 16px) 0 2px / 100% 4px no-repeat,
                repeating-linear-gradient(90deg, var(--ink) 0 10px, var(--paper) 10px 16px) 0 calc(100% - 2px) / 100% 4px no-repeat, var(--ink); }
  .no19 { font-size: 17px; }
  .rcpt-mini { padding: 6px 9px 10px; gap: 0; }
  .rcpt-mini .rl { line-height: 1.4; }
  .rcpt-mini .stamp { right: 8px; bottom: 8px; font-size: 12px; padding: 3px 5px 2px; }
  .vframe { padding: 0 14px 14px; }
  .vhead { height: 44px; margin: 0 -14px 14px; padding-left: 14px; }
  .vhead h2 { font-size: 22px; }
  .wtools { height: 36px; }
  .chip { height: 32px; }
  .mode-b { height: 32px; }
  .wfoot { height: 36px; }
  .crb { height: 32px; }
  .crb i { width: 22px; height: 22px; }
  .reel { grid-template-columns: minmax(0, 1fr) 330px; gap: 14px; }
  .bench { padding: 8px 14px 12px; gap: 4px; }
  .slip { padding: 6px 10px 14px; }
  .slip-h { padding-bottom: 4px; margin-bottom: 4px; }
  .b-t { font-size: 21px; }
  .sig { font-size: 25px; }
  .b-desc { -webkit-line-clamp: 2; line-clamp: 2; min-height: 0; font-size: 13px; line-height: 1.6; }
  .b-open { height: 42px; }
  .slip { min-height: 84px; }
  .b-thumbs button { width: 42px; height: 42px; }
  .b-thumbs { gap: 6px; }
  .b-more { flex-direction: row; align-items: center; gap: 10px; }
  .b-more-h { flex: 1; min-width: 0; white-space: normal; line-height: 1.35; }
  .dleft { --cv: min(560px, calc(100cqh - 58px)); gap: 10px; }
  .dctl { height: 44px; }
  .dtitle { font-size: 32px; }
  .dright { gap: 8px; }
  .ddesc { font-size: 14px; line-height: 1.65; }
  .pc-t { font-size: 13px; line-height: 1.55; padding: 10px 12px 12px; }
  .jinfo h2, .tcopy h2, .bcopy h2, .sleft h2 { font-size: 30px; }
  .jinfo { gap: 12px; }
  .jsfx { font-size: 58px; }
  .burst-stamp { width: 112px; height: 112px; }
  .burst-stamp b { font-size: 16px; }
  .jrow { max-height: 44px; }
  .jr-n { font-size: 20px; }
  .jr-th { width: 36px; height: 36px; }
  .jrow { grid-template-columns: 30px 36px minmax(0, 1fr) auto; }
  .jr-b { gap: 3px; }
  .vote { height: 36px; }
  .jrow-cta { margin-top: 6px; min-height: 40px; }
  .jdue-c { font-size: 21px; }
  .tcopy { gap: 11px; }
  .tcopy .body, .bcopy .body { font-size: 15px; line-height: 1.65; }
  .steps { font-size: 14px; gap: 3px; }
  .quote p { font-size: 14px; }
  .node img { width: 60px; height: 60px; }
  .idea { width: min(220px, 42cqh); }
  .node[data-slug="weijie"] .reply { left: calc(50% + 36px); bottom: auto; top: 16px; translate: none; }   /* short board: beside the avatar, off the note */
  .bcopy { gap: 13px; }
  .biz { gap: 28px; }
  .bimg { width: min(400px, calc(100cqh - 60px)); }
  .bimg .stamp { top: calc(min(400px, 100cqh - 60px) - 52px); }
  .nums { gap: 18px; }
  .nums dd { font-size: 30px; }
  .rcpt { font-size: 12px; line-height: 1.5; padding: 12px 14px 22px; }
  .rg { padding: 6px 0; }
  .sleft { gap: 8px; }
  .scount b { font-size: 24px; }
  .csheet { --fs: 48px; gap: 5px; margin: 4px 0 2px; }
  .cs-row { padding: 6px 7px; gap: 5px; }
  .cs-f { font-size: 12px; }
  .cp { min-height: 0; max-height: 150px; }
  .cp-b { padding: 12px 16px; gap: 6px; }
  .cp-f { font-size: 13px; line-height: 1.55; }
  .ov-faq .ov-in { padding: 18px 22px 14px; }
  .ov-faq summary { min-height: 48px; font-size: 15px; }
  .ov-faq details p { font-size: 14px; line-height: 1.7; padding-bottom: 10px; }
  .ov-head h2 { font-size: 28px; }
  .ov-cr { height: min(520px, calc(100svh - 40px)); }
  .cr-cover { height: calc(min(520px, 100svh - 40px) - 42px); }
}

/* ================================================================== SMALL layouts: tablet, phone, landscape rail */
@media not all and (min-width: 1180px) and (min-height: 620px) {
  :root { --top: 64px; --tabh: calc(72px + env(safe-area-inset-bottom)); }
  .online { display: none; }
  .top { padding: 0 max(16px, env(safe-area-inset-right)) 0 max(16px, env(safe-area-inset-left)); }
  .top-r { margin-left: auto; gap: 10px; }
  /* 底边的纸签：一排从屏幕下缘探出，当前页更高并盖红章，点按时纸片回弹 */
  .tabs { position: relative; z-index: 5; top: auto; right: auto; width: auto; flex-direction: row; justify-content: center; align-items: flex-end; gap: 3px; background: var(--desk);
    padding: 0 max(6px, env(safe-area-inset-right)) env(safe-area-inset-bottom) max(6px, env(safe-area-inset-left)); overflow: hidden; }
  .tabs a { --ty: 8px; flex: 1 1 0; max-width: 120px; min-width: 0; width: auto; height: calc(100% - 6px); margin: 0; padding: 8px 0 10px; gap: 3px; justify-content: flex-start;
    border: 2px solid var(--ink); border-bottom: 0; border-radius: 10px 10px 0 0; transform: translateY(var(--ty)) rotate(var(--tr, 0deg)); transform-origin: 50% 100%;
    box-shadow: 0 -2px 0 rgba(23, 17, 12, .1); transition: transform .32s cubic-bezier(.3, 1.9, .45, 1); }
  .tabs a span { writing-mode: horizontal-tb; letter-spacing: 0; font: 900 13px/1 var(--sans); transform: none; }
  .tabs svg { width: 20px; height: 20px; }
  .tabs a:hover, .tabs a:focus-visible { --tx: 0; --ty: 4px; box-shadow: 0 -3px 0 rgba(23, 17, 12, .14); }
  .tabs a:active { --ty: 12px; transition-duration: .08s; }
  .tabs a[aria-current="page"] { --tx: 0; --ty: -2px; box-shadow: 0 -3px 0 rgba(23, 17, 12, .2); }
  .tabs a[aria-current="page"]::after { right: 3px; top: 3px; bottom: auto; width: 18px; height: 18px; font-size: 9px; border-width: 1.5px; }
  .sheet { z-index: 1; margin: 0 8px; box-shadow: none; }
  .sheet::before, .crop, .reg, .tape, .folio { display: none; }
  .view { inset: 0; overflow-y: auto; overflow-x: clip; overscroll-behavior: contain; padding: 14px 12px 18px; -webkit-overflow-scrolling: touch; }
  .vfolio { display: flex; flex-direction: column; gap: 2px; margin-top: 12px; padding: 8px 2px 2px; border-top: 1px dashed var(--guide); font: 500 11px/1.45 var(--mono); color: var(--ink-2); }
  .pn { container-type: inline-size; }
  .page { height: auto; grid-template-rows: auto; gap: 12px; }
  .vframe { position: relative; inset: auto; min-height: 100%; padding: 0 16px 18px; container-type: inline-size; border-width: 2.5px; }
  .vbody { container-type: inline-size; flex: none; }
  .vhead { height: auto; min-height: 52px; flex-wrap: wrap; row-gap: 4px; padding: 6px 4px 8px 16px; margin: 0 -16px 16px; }
  .vhead h2 { white-space: normal; flex-basis: 100%; order: 3; font-size: 24px; }
  .x { height: 44px; }
  .hr-t { display: inline-block; max-width: 100%; vertical-align: top; padding: 12px 0; margin: -12px 0; }   /* 44px tap box, same line box */
  /* tablet home: P.01 full width, then the reel, teasers 3 + 2 */
  .p1 { grid-column: 1 / -1; grid-row: auto; padding: 18px 22px; }
  h1 { font-size: 44px; line-height: 1.12; }
  .facts { margin-top: 12px; padding-top: 0; }
  .hreel { grid-column: 1 / -1; grid-row: auto; }
  .hreel .rstage { height: clamp(300px, 42vh, 420px); }
  .t3 { grid-column: 1 / 5; } .t4 { grid-column: 5 / 9; } .t5 { grid-column: 9 / 13; } .t6 { grid-column: 1 / 7; } .t7 { grid-column: 7 / 13; }
  .t { min-height: 196px; }
  .vis { min-height: 96px; flex: 1 1 96px; container-type: size; }
  /* views → one column under 900, two columns kept on tablets */
  .wtools { height: auto; flex-wrap: wrap; }
  .chips { flex-wrap: wrap; }
  .chip, .mode-b { height: 44px; }
  .reel { display: flex; flex-direction: column; gap: 10px; flex: none; }
  .rstage { height: clamp(320px, 44vh, 460px); flex: none; }
  .rnav { align-self: center; justify-self: auto; margin: 0; }
  .rnav .pg, .rnav .pg-n { height: 44px; }
  .rnav .pg { width: 44px; }
  .bench { box-shadow: 3px 3px 0 var(--ink); }
  .slip { flex: none; min-height: 0; }
  .slip-t { flex: none; }
  .wfoot { height: auto; flex-direction: column; align-items: stretch; gap: 10px; margin-top: 4px; }
  .crs { flex-wrap: wrap; }
  .crb { height: 44px; }
  .detail { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .dleft { --cv: auto; width: 100%; }
  .dslot { width: auto; height: auto; aspect-ratio: 1; }
  .dctl { flex-wrap: wrap; height: auto; }
  .scrub { margin-left: 0; }
  .chip { height: 44px; }
  .dright { overflow: visible; }
  .jam, .team, .biz, .seats { display: flex; flex-direction: column; gap: 22px; }
  .jcover { width: 100%; height: auto; aspect-ratio: 4 / 3; }
  .jcover .twin img { object-position: 50% 40%; }
  .jrows { display: block; }
  .jrow { min-height: 52px; max-height: none; }
  .vote { height: 44px; }
  .dpager .pg, .dpager .pg-n { height: 44px; }
  .dpager .pg { width: 44px; }
  .node { width: max-content; }
  .tboard { aspect-ratio: 1; width: 100%; max-width: 640px; margin: 0 auto; }
  .node img { width: 56px; height: 56px; }
  .bimg { width: 100%; }
  .bimg .twin { aspect-ratio: 16 / 9; }
  .bimg .stamp { top: auto; bottom: 64px; }
  .rcpt { width: 100%; max-width: 420px; }
  .coupons .cp { max-height: none; }
  .csheet { --fs: min(70px, calc((100cqw - 74px) / 10)); }
  .ov-faq { inset: auto 0 0 0; width: 100%; max-height: 88dvh; height: auto; border-width: 3px 0 0; padding-bottom: env(safe-area-inset-bottom); }
  .ov-faq[open] { animation-name: ov-up; }
  @keyframes ov-up { from { transform: translateY(40px); opacity: 0; } }
  .ov-faq .ov-in { max-height: 88dvh; padding: 20px 18px 18px; }
  .ov-cr { width: 100%; height: 100%; max-height: 100dvh; inset: 0; border-width: 0; }
  .cr { grid-template-columns: minmax(0, 1fr); gap: 16px; padding: 0 0 22px; align-content: start; }   /* rows hug the cover; no stretched gap */
  .cr-cover { height: auto; aspect-ratio: 16 / 9; border-width: 0 0 2.5px; }
  .cr-b { padding: 0 18px; }
  .cr .ov-folio { display: block; }
}

/* tablet specifics (721–1179) */
@media (min-width: 721px) and (max-width: 1179px), (min-width: 1180px) and (max-height: 619px) and (min-height: 501px) {
  .jam { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .jcover { grid-column: 1 / -1; }
  .team { display: grid; grid-template-columns: minmax(0, 1fr); }
  .tcopy { grid-column: 1; grid-row: 2; }
  .tdemo { margin-left: calc((100% - min(100%, 640px)) / 2 + 16px); }
}

/* phone (<= 720), also the base for landscape phones (overridden at the end) */
@media (max-width: 720px), (max-height: 500px) and (orientation: landscape) {
  :root { --top: 56px; --tabh: calc(64px + env(safe-area-inset-bottom)); }
  .logo b { font-size: 20px; }
  .logo small { display: none; }
  .cta-full { display: none; }
  .cta-short { display: inline; }
  .cta-top { height: 44px; padding: 0 14px; font-size: 14px; border-radius: 999px; box-shadow: 2px 2px 0 var(--ink); }
  .tabs a span { font-size: 11px; }
  .tabs svg { width: 18px; height: 18px; }
  .sheet { margin: 0 6px; }
  .view { padding: 10px 12px 12px; }
  .page { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
  .vfolio { display: block; margin-top: 10px; padding-top: 6px; }
  .vfolio span + span::before { content: " · "; }
  .p1, .p2, .t3 { grid-column: 1 / -1; }
  .t4, .t5, .t6, .t7 { grid-column: auto; }
  .p1 { padding: 12px 16px; }
  .kick { font-size: 16px; }
  h1 { margin-top: 8px; font-size: 34px; line-height: 1.15; }
  .mis { margin-top: 6px; font-size: 13px; letter-spacing: .14em; }
  .p1 .lede, .p1 .ctas, .p1 .crew, .f-biz { display: none; }
  .p1 { flex-direction: row; flex-wrap: wrap; align-items: baseline; column-gap: 14px; }
  .p1 .kick, .p1 h1 { flex-basis: 100%; }
  .p1 .kick { flex: none; }
  .facts { margin-top: 0; padding-top: 0; font-size: 12px; }
  .hreel { margin: 0 -12px; border-width: 2px 0; }
  .hr-h { padding: 4px 4px 4px 12px; }
  .hr-h .tag { font-size: 11px; letter-spacing: 0; }
  .hr-h .aitag { display: none; }
  .hr-all { height: 36px; padding: 0 10px; font-size: 12px; }
  .hreel .rstage { height: 236px; margin: 0; border-width: 0; }
  .hr-cap { grid-area: 3 / 1 / 4 / -1; padding: 8px 12px 10px; }
  .hr-row { flex-wrap: wrap; row-gap: 0; }
  .hr-t { font-size: 17px; flex-basis: 100%; }
  .hr-by .sig { font-size: 18px; }
  .hreel .rnav { grid-area: 4 / 1 / 5 / -1; justify-self: center; margin: 0 0 10px; }
  .hreel .rnav .pg, .hreel .rnav .pg-n { height: 40px; }
  .hreel .rnav .pg { width: 44px; }
  .t { min-height: 0; }
  .t3 { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "vis tag" "vis num" "vis line"; column-gap: 14px; align-items: center; padding: 10px 12px; }
  .t3 .tag { grid-area: tag; align-self: end; }
  .t3 .vis { grid-area: vis; margin: 0; flex: none; container-type: normal; min-height: 0; }
  .t3 .film { --fs: 48px; padding: 6px 4px; background: repeating-linear-gradient(90deg, var(--ink) 0 8px, var(--paper) 8px 13px) 0 1.5px / 100% 3px no-repeat, repeating-linear-gradient(90deg, var(--ink) 0 8px, var(--paper) 8px 13px) 0 calc(100% - 1.5px) / 100% 3px no-repeat, var(--ink); gap: 4px; }
  .t3 .num { grid-area: num; font-size: 26px; }
  .t3 .line { grid-area: line; margin: 0; align-self: start; font-size: 12px; }
  .t4, .t5, .t6, .t7 { display: grid; grid-template-columns: 48px minmax(0, 1fr); grid-template-areas: "tag tag" "vis num" "vis line"; column-gap: 10px; row-gap: 2px;
    padding: 8px 10px 8px 11px; min-height: 88px; align-content: start; }
  .t4 .tag, .t5 .tag, .t6 .tag, .t7 .tag { grid-area: tag; margin-bottom: 4px; }
  .t .tl { display: none; }
  .t4 .vis, .t5 .vis, .t6 .vis, .t7 .vis { grid-area: vis; width: 48px; height: 48px; margin: 0; flex: none; container-type: normal; min-height: 0; }
  .t4 .num, .t5 .num, .t6 .num, .t7 .num { grid-area: num; font-size: 22px; align-self: end; }
  .t4 .line, .t5 .line, .t6 .line, .t7 .line { grid-area: line; margin: 0; font-size: 12px; white-space: normal; line-height: 1.3; }
  .num small { font-size: 12px; margin-left: 4px; }
  .ear { width: 22px; height: 22px; top: 8px; right: 8px; }
  .jamv img { height: 48px; width: 36px; aspect-ratio: auto; }
  .t4 { grid-template-columns: 36px minmax(0, 1fr); } .t4 .vis { width: 36px; }   /* the 3:4 cover stays portrait; RM390 + 奖池 needs the room */
  .jamv .sfx-red, .duo .arr, .duo > img { display: none; }
  .duo > .twin { width: 48px; height: 48px; }
  .rcpt-mini { padding: 6px; width: 48px; height: 48px; gap: 0; }
  .rcpt-mini .rl { display: none; }
  .rcpt-mini { padding: 0; display: grid; place-items: center; }
  .rcpt-mini .stamp { position: static; font-size: 12px; padding: 4px 3px 3px; letter-spacing: -.02em; --rot: -12deg; margin: 0; }
  .rcpt-mini .stamp .ck { display: none; }
  .rcpt-mini .stamp::before { inset: 1.5px; }
  .no19 { width: 48px; height: 48px; font-size: 12px; }
  .vframe { padding: 0 12px 16px; border-width: 2.5px; }
  .vhead { margin: 0 -12px 14px; padding-left: 12px; }
  .vhead .vh-side { display: none; }
  .wtools { flex-wrap: nowrap; gap: 8px; margin: 0 -12px; padding: 0 12px; }
  .chips { flex-wrap: nowrap; overflow-x: auto; min-width: 0; flex: 1; scrollbar-width: none; overscroll-behavior-x: contain; padding: 2px 0; }
  .chips::-webkit-scrollbar { display: none; }
  .chips .chip { flex: none; }
  .mode-b { padding: 0 9px; font-size: 12px; }
  .vhead { margin-bottom: 10px; }
  .rstage { height: 250px; margin: 0 -12px; border-width: 2px 0; touch-action: pan-y; }
  .rstage::after { background: linear-gradient(90deg, rgba(251, 245, 233, .9), transparent 9%, transparent 91%, rgba(251, 245, 233, .9)); }
  .rdesc { display: none; }
  .rf .glyph { width: 17px; height: 17px; padding: 2px; }
  .rf .code { font-size: 9px; padding: 2px 3px 1px; }
  .rf .no { font-size: 9px; }
  .rf .ring { stroke-width: 2.6; }
  .bench { padding: 12px 14px 14px; }
  .b-t { font-size: 22px; white-space: normal; }
  .b-desc { min-height: 0; }
  .crs { flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain; margin: 0 -12px; padding: 2px 12px 4px; scrollbar-width: none; }
  .crs::-webkit-scrollbar { display: none; }
  .jinfo h2, .tcopy h2, .bcopy h2, .sleft h2 { font-size: 24px; }
  .jinfo { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px 12px; padding: 0; }
  .jinfo h2 { grid-row: 1; grid-column: 1 / -1; }
  .jinfo .body { grid-row: 2; grid-column: 1 / -1; font-size: 15px; }
  .jinfo .jtop { grid-row: 3; grid-column: 1 / -1; font-size: 14px; line-height: 1.6; }
  .jinfo .jdue { grid-row: 4; grid-column: 1; border: 0; background: none; padding: 0; }
  .jinfo .btn { grid-row: 4; grid-column: 2; height: 48px; padding: 0 16px; }
  .jdue-l { font-size: 12px; }
  .jdue-c { font-size: 17px; }
  .jsfx { font-size: 44px; top: 8%; }
  .burst-stamp { width: 96px; height: 96px; right: 4%; bottom: 6%; }
  .burst-stamp b { font-size: 14px; }
  .jrow { grid-template-columns: 26px 44px minmax(0, 1fr) auto; gap: 8px; }
  .jr-n { font-size: 18px; }
  .jr-cand { display: none; }
  .jr-c { width: auto; margin-left: auto; }
  .jr-bar { display: none; }   /* no room next to the longest model stamp (CURSOR + CLAUDE); rank + count carry the order */
  .vote { min-width: 52px; padding: 0 6px; font-size: 12px; }
  .jrow-cta { flex-direction: column; align-items: flex-start; }
  .tboard { max-width: none; }
  .node img { width: 48px; height: 48px; border-width: 2px; }
  .node b { font-size: 12px; }
  .node span { display: none; }
  .reply { font-size: 12px; padding: 4px 8px; }
  .idea { top: 44%; width: 124px; }
  .idea-tape { right: auto; left: 50%; translate: -50% 0; top: -14px; }
  .sticky { left: -36px; right: auto; bottom: -44px; width: 200px; min-width: 0; font-size: 12px; padding: 6px 8px; }
  .sticky b { font-size: 12px; }
  /* small board: nodes and replies re-seated so no bubble leaves the board or lands on the note */
  .node[data-slug="kavya"] { --x: 16% !important; --y: 21% !important; }
  .node[data-slug="hafiz"] { --x: 80% !important; --y: 21% !important; }
  .node[data-slug="aina"] { --y: 47% !important; }
  .node[data-slug="mei"] { --x: 11% !important; --y: 68% !important; }
  .node[data-slug="weijie"] { --x: 80% !important; --y: 88% !important; }
  .node[data-slug="kavya"] .reply { left: -6px; translate: none; }
  .node[data-slug="hafiz"] .reply { left: auto; right: -6px; translate: none; }
  .node[data-slug="weijie"] .reply { left: auto; right: calc(50% + 28px); bottom: auto; top: 10px; translate: none; }
  .tboard { overflow: visible; }
  .tdemo { position: static; margin: -10px 0 0; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px 10px; }   /* below the board, never over a node */
  .biz { gap: 14px; }
  .bcopy { display: contents; }
  .bcopy h2 { order: 1; }
  .bcopy .body { order: 2; margin-top: -4px; }
  .bimg { order: 3; }
  .rcpt { order: 4; font-size: 12px; line-height: 1.5; padding: 12px 14px 22px; }
  .rg { padding: 6px 0; }
  .nums { order: 5; }
  .bcopy .quote { order: 6; }
  .bctas { order: 7; }
  .sticky b, .sticky span { white-space: normal; }
  .nums { grid-template-columns: repeat(3, auto); justify-content: start; gap: 10px clamp(12px, 5cqi, 24px); }   /* auto columns: RM48,600 never runs into RM18,400 */
  .nums dd { font-size: 22px; }
  .nums dt { font-size: 12px; }
  .bimg .twin { aspect-ratio: auto; height: 196px; }
  .bimg .twin img { object-position: 50% 62%; }
  .csheet { --fs: calc((100cqw - 60px) / 10); gap: 4px; }
  .cs-row { gap: 4px; padding: 5px 4px; }
  .cs-f { font-size: 0; height: var(--fs); }
  .cs-f.n { font-size: 9px; letter-spacing: -.04em; }
  .cs-f.taken::after { font-size: 9px; right: 2px; top: 1px; }
  .cs-f.me .lab { font-size: 11px; top: calc(100% + 6px); }
  .scount b { font-size: 22px; }
  .cp-stub { width: 36px; font-size: 11px; }
  .cp-b { padding: 12px 14px; }
  .ov-faq .ov-in { padding: 18px 16px 16px; }
  .ov-head h2 { font-size: 26px; }
  .cr-n { font-size: 30px; }
  .cr-p a { width: 76px; height: 76px; }
}
@media (min-width: 414px) and (max-width: 720px) { .logo small { display: inline; font-size: 11px; } }
@media (max-width: 380px) {
  .view { padding: 8px 10px 12px; }
  .page { gap: 8px; }
  .p1 { column-gap: 8px; padding: 10px 14px; }
  .mis { font-size: 12px; letter-spacing: .08em; }
  .facts { letter-spacing: -.01em; }
  .t3 { padding: 6px 10px; }
  .t4, .t5, .t6, .t7 { padding: 8px 8px 8px 9px; min-height: 88px; column-gap: 8px; }
  .t4 .num, .t5 .num, .t6 .num, .t7 .num { font-size: 20px; }
  .t3 { column-gap: 10px; } .t3 .film { --fs: 44px; }
  .t4 .tag, .t5 .tag, .t6 .tag, .t7 .tag { margin-bottom: 2px; }
  .vfolio { margin-top: 8px; padding-top: 6px; }
  .jcover { aspect-ratio: 16 / 9; }
  .jcover .twin img { object-position: 50% 46%; }
  .jsfx { font-size: 38px; top: 6%; }
  .burst-stamp { width: 84px; height: 84px; }
  .burst-stamp b { font-size: 13px; }
  .jrow { min-height: 48px; }
  h1 { font-size: 30px; }
}

/* landscape phone / short screens: left rail, no top bar */
@media (max-height: 500px) and (orientation: landscape) {
  :root { --top: 0px; --tabh: 0px; --railw: calc(72px + env(safe-area-inset-left)); }
  .app { grid-template-columns: var(--railw) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); }
  .top { display: none; }
  .tabs { grid-column: 1; grid-row: 1; flex-direction: column; justify-content: center; align-items: flex-end; gap: 2px; padding: 4px 0 env(safe-area-inset-bottom) env(safe-area-inset-left); }
  .tabs a { --ty: 0; --tx: 6px; flex: none; width: calc(100% - 4px); height: 46px; max-width: none; padding: 4px 6px 4px 0; justify-content: center; border: 2px solid var(--ink); border-right: 0;
    border-radius: 10px 0 0 10px; transform: translateX(var(--tx)) rotate(var(--tr, 0deg)); transform-origin: 100% 50%; }
  .tabs a:hover, .tabs a:focus-visible { --tx: 3px; --ty: 0; }
  .tabs a:active { --tx: 8px; --ty: 0; }
  .tabs a[aria-current="page"] { --tx: 0; --ty: 0; }
  .tabs a[aria-current="page"]::after { top: 2px; right: auto; left: 2px; }
  .sheet { grid-column: 2; grid-row: 1; margin: 0 max(6px, env(safe-area-inset-right)) 0 6px; }
  .view { padding: 10px 12px 12px; }
  .vfolio { margin-top: 10px; padding-right: 140px; }   /* the floating pill parks beside the last lines */
  .float-cta { position: fixed; z-index: 6; right: max(14px, env(safe-area-inset-right)); bottom: max(12px, env(safe-area-inset-bottom)); display: inline-flex; align-items: center;
    height: 44px; padding: 0 18px; border-radius: 999px; background: var(--red); color: var(--cream); border: 2px solid var(--ink); box-shadow: 2px 2px 0 var(--ink);
    font: 900 14px/1 var(--sans); text-decoration: none; }

  /* home: P.01 on the left, the reel on the right, five teasers in one row */
  .page { grid-template-columns: repeat(10, minmax(0, 1fr)); grid-template-rows: auto auto; gap: 12px;
    grid-template-areas: "p1 p1 p1 p1 rl rl rl rl rl rl" "t3 t3 t4 t4 t5 t5 t6 t6 t7 t7"; }
  .p1 { grid-area: p1; padding: 12px 14px 13px; }
  .p1 .kick { font-size: 14px; }
  h1 { font-size: 28px; line-height: 1.15; margin-top: 6px; }
  .mis { font-size: 12px; letter-spacing: .16em; }
  .hreel { grid-area: rl; margin: 0; border-width: 2.5px; }
  .hreel .rstage { height: 200px; }
  .t3 { grid-area: t3; } .t4 { grid-area: t4; } .t5 { grid-area: t5; } .t6 { grid-area: t6; } .t7 { grid-area: t7; }
  .t3, .t4, .t5, .t6, .t7 { display: flex; flex-direction: column; align-items: stretch; padding: 9px 10px 10px; min-height: 0; }
  .t3 .tag, .t4 .tag, .t5 .tag, .t6 .tag, .t7 .tag { margin: 0 0 6px; padding-right: 0; }
  .t .ear { display: none; }   /* 137px teasers: the tag needs the corner */
  .t3 .vis, .t4 .vis, .t5 .vis, .t6 .vis, .t7 .vis { width: auto; height: 52px; margin: 0 0 6px; flex: none; container-type: normal; min-height: 0; justify-content: flex-start; }
  .t3 .film { --fs: 34px; padding: 7px 3px; gap: 3px; align-self: center; }
  .jamv img { width: 100%; height: 52px; object-position: 50% 40%; }
  .duo > .twin, .rcpt-mini, .no19 { width: 52px; height: 52px; }
  .t3 .num, .t4 .num, .t5 .num, .t6 .num, .t7 .num { font-size: 22px; align-self: auto; }
  .t3 .line, .t4 .line, .t5 .line, .t6 .line, .t7 .line { margin: 3px 0 0; font-size: 12px; line-height: 1.3; white-space: normal; }

  /* works */
  .reel { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px 14px; }
  .rstage { grid-area: 1 / 1; height: 230px; margin: 0; border-width: 2px; }
  .rnav { grid-area: 2 / 1; align-self: start; justify-self: center; }
  .bench { grid-area: 1 / 2 / span 2; }
  .detail { grid-template-columns: min(44%, calc(100dvh - 90px)) minmax(0, 1fr); gap: 18px; align-items: start; }
  .dleft { width: auto; }
  /* jam */
  .jam { display: grid; grid-template-columns: minmax(0, 45fr) minmax(0, 55fr); grid-template-rows: auto minmax(0, 1fr); gap: 14px 18px; align-items: start; }
  .jcover { grid-column: 1; grid-row: 1; aspect-ratio: 16 / 9; }
  .jinfo { grid-column: 1; grid-row: 2; }
  .jboard { grid-column: 2; grid-row: 1 / span 2; }
  .jrow { min-height: 46px; }
  .jsfx { font-size: 34px; top: 7%; }
  .burst-stamp { width: 80px; height: 80px; }
  .burst-stamp b { font-size: 13px; }
  /* team */
  .team { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px 18px; align-items: start; }
  .tdemo { grid-column: 1; grid-row: 2; margin: 0; }
  .tcopy { grid-column: 2; grid-row: 1 / span 2; }
  /* biz */
  .biz { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px 18px; align-items: start;
    grid-template-areas: "h2 rcpt" "body rcpt" "img rcpt" "nums rcpt" "quote ctas"; }
  .bcopy h2 { grid-area: h2; } .bcopy .body { grid-area: body; margin-top: 0; } .bimg { grid-area: img; } .nums { grid-area: nums; }
  .bcopy .quote { grid-area: quote; } .bctas { grid-area: ctas; align-self: end; }
  .rcpt { grid-area: rcpt; width: 100%; max-width: none; }
  .bimg .twin { height: 168px; }
  /* seats */
  .seats { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; align-items: start; }
  .sleft { container-type: inline-size; }
  /* overlays */
  .ov-faq { inset: 0 0 0 auto; width: min(520px, 70vw); max-height: none; height: 100%; border-width: 0 0 0 3px; }
  .ov-faq .ov-in { max-height: 100dvh; }
}

/* ================================================================== reduced motion: end states, no tweens */
html.rm *, html.rm *::before, html.rm *::after { animation-duration: 1ms !important; animation-delay: 0s !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; }
html.rm .ring path, html.rm .ring ellipse { stroke-dashoffset: 0 !important; }

