/* 由 design/build-tokens.mjs 从 design/tokens/*.tokens.json 生成，不要手改。 */
:root {
  color-scheme: light;
  --font-family-heading: "MrPrivateer Display", "MrPrivateer Sans", sans-serif;
  --font-family-body: "MrPrivateer Sans", sans-serif;
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-bold: 700;
  --type-name-font-family: var(--font-family-heading);
  --type-name-font-size: 76px;
  --type-name-font-weight: 400;
  --type-name-line-height: 1.25;
  --type-name-letter-spacing: 0px;
  --type-detail-title-font-family: var(--font-family-heading);
  --type-detail-title-font-size: 60px;
  --type-detail-title-font-weight: 400;
  --type-detail-title-line-height: 1.25;
  --type-detail-title-letter-spacing: 0px;
  --type-work-title-font-family: var(--font-family-heading);
  --type-work-title-font-size: 42px;
  --type-work-title-font-weight: 400;
  --type-work-title-line-height: 1.25;
  --type-work-title-letter-spacing: 0px;
  --type-poster-title-font-family: var(--font-family-heading);
  --type-poster-title-font-size: 42px;
  --type-poster-title-font-weight: 400;
  --type-poster-title-line-height: 1.25;
  --type-poster-title-letter-spacing: 0px;
  --type-route-title-font-family: var(--font-family-heading);
  --type-route-title-font-size: 28px;
  --type-route-title-font-weight: 400;
  --type-route-title-line-height: 1.25;
  --type-route-title-letter-spacing: 0px;
  --type-section-title-font-family: var(--font-family-heading);
  --type-section-title-font-size: 24px;
  --type-section-title-font-weight: 400;
  --type-section-title-line-height: 1.25;
  --type-section-title-letter-spacing: 0px;
  --type-lede-font-family: var(--font-family-body);
  --type-lede-font-size: 24px;
  --type-lede-font-weight: 400;
  --type-lede-line-height: 1.75;
  --type-lede-letter-spacing: 0px;
  --type-body-font-family: var(--font-family-body);
  --type-body-font-size: 16px;
  --type-body-font-weight: 400;
  --type-body-line-height: 1.75;
  --type-body-letter-spacing: 0px;
  --type-label-font-family: var(--font-family-body);
  --type-label-font-size: 14px;
  --type-label-font-weight: 500;
  --type-label-line-height: 1.75;
  --type-label-letter-spacing: 0px;
  --type-role-font-family: var(--font-family-body);
  --type-role-font-size: 14px;
  --type-role-font-weight: 500;
  --type-role-line-height: 1.75;
  --type-role-letter-spacing: 0px;
  --type-meta-font-family: var(--font-family-body);
  --type-meta-font-size: 14px;
  --type-meta-font-weight: 400;
  --type-meta-line-height: 1.75;
  --type-meta-letter-spacing: 0px;
  --type-control-font-family: var(--font-family-body);
  --type-control-font-size: 14px;
  --type-control-font-weight: 400;
  --type-control-line-height: 1.28572;
  --type-control-letter-spacing: 0px;
  --type-caption-font-family: var(--font-family-body);
  --type-caption-font-size: 12px;
  --type-caption-font-weight: 400;
  --type-caption-line-height: 1.75;
  --type-caption-letter-spacing: 0px;
  --spacing-10: 64px;
  --spacing-02: 4px;
  --spacing-03: 8px;
  --spacing-04: 12px;
  --spacing-05: 16px;
  --spacing-06: 24px;
  --spacing-07: 32px;
  --spacing-08: 40px;
  --spacing-09: 48px;
  --layout-max-width: 1584px;
  --layout-margin: 32px;
  --layout-gutter: 32px;
  --layout-columns: 16;
  --layout-measure: 36em;
  --breakpoint-md: 672px;
  --breakpoint-lg: 1056px;
  --breakpoint-photo: 701px;
  --border-width: 1px;
  --border-radius: 0px;
  --focus-width: 2px;
  --focus-offset-control: -2px;
  --focus-offset-link: 2px;
  --control-height: 48px;
  --control-padding-start: 15px;
  --control-padding-end: 63px;
  --control-icon-size: 16px;
  --control-icon-inset: 16px;
  --control-underline-thickness-hover: 2px;
  --motion-duration-fast-01: 70ms;
  --motion-duration-fast-02: 110ms;
  --motion-easing-standard-productive: cubic-bezier(0.2, 0, 0.38, 0.9);
  --motion-easing-entrance-productive: cubic-bezier(0, 0, 0.38, 0.9);
  --site-cutout-shape: polygon(3% 5%,32% 1%,68% 3%,96% 0,100% 35%,97% 65%,99% 94%,66% 100%,28% 96%,1% 99%,3% 68%,0 31%);
  --site-cutout-rotation: -2deg;
  --site-cutout-padding: 24px;
  --site-poster-min-height: 240px;
  --site-media-phone-height: 212px;
  --site-media-phone-app-height: 184px;
  --site-media-portrait-height: 320px;
  --site-media-image-span: 7;
  --site-space-hero-top: var(--spacing-10);
  --site-space-hero-bottom: var(--spacing-08);
  --site-space-row-start: var(--spacing-07);
  --site-space-row-end: var(--spacing-07);
  --site-space-section: var(--spacing-07);
  --site-space-footer: var(--spacing-09);
  --site-columns: 16;
  --site-brand-size: 20px;
  --site-nav-size: var(--type-body-font-size);
  --site-role-size: var(--type-body-font-size);
  --site-facts-size: var(--type-body-font-size);
  --site-now-size: var(--type-body-font-size);
  --site-compact-title: 28px;
  --site-filter-height: var(--spacing-08);
  --site-ghost-end: 47px;
  --site-arrow-size: 20px;
  --site-icon-shift: var(--spacing-02);
  --site-line-offset: .2em;
  --site-button-max: 20rem;
  --site-ratio: 16 / 9;
  --site-photo-contrast: 1.05;
  --site-photo-gray: 1;
  --site-icon-baseline: -.15em;
  --site-cutout-mirror-x: polygon(97% 5%,68% 1%,32% 3%,4% 0,0 35%,3% 65%,1% 94%,34% 100%,72% 96%,99% 99%,97% 68%,100% 31%);
  --site-cutout-mirror-y: polygon(3% 95%,32% 99%,68% 97%,96% 100%,100% 65%,97% 35%,99% 6%,66% 0,28% 4%,1% 1%,3% 32%,0 69%);
  --site-rotation-1: 1.5deg;
  --site-rotation-2: -1deg;
  --site-rotation-back: 1deg;
  --site-rotation-back-positive: -1deg;
  --site-detail-poster-min: 280px;
  --site-404-min: 320px;
  --site-duration-row: 150ms;
  --site-duration-page: 240ms;
  --site-field-label-width: 4em;
  --site-timeline-time-width: 10em;
  --site-field-gap: var(--spacing-05);
  --site-poster-scale: 10cqi;
  --site-poster-row-min: 28px;
  --site-poster-row-max: 60px;
  --site-poster-page-min: 36px;
  --site-poster-page-max: 76px;
  --site-filter-size: var(--type-body-font-size);
  --site-filter-padding: var(--spacing-05);
  --site-detail-poster-gap: var(--spacing-07);
  --site-grid-gutter: var(--layout-gutter);
  --color-background: #EFE7D6;
  --color-layer-01: #E4DCCB;
  --color-text-primary: #1A1714;
  --color-text-secondary: #5E554A;
  --color-text-on-color: #EFE7D6;
  --color-text-on-color-disabled: #47433F;
  --color-link-primary: #1A1714;
  --color-link-primary-hover: #1A1714;
  --color-link-visited: #1A1714;
  --color-border-subtle-00: #D0C9B8;
  --color-border-strong-01: #7F7868;
  --color-focus: #D9452B;
  --color-focus-inset: #EFE7D6;
  --color-button-primary: #1A1714;
  --color-button-primary-hover: #0D0B08;
  --color-button-primary-active: #000000;
  --color-button-disabled: #B7AF9F;
  --color-site-cutout: #D9452B;
  --color-site-poster-text: #EFE7D6;
}
@media (min-width: 672px) and (max-width: 1055.98px) {
  :root {
    --layout-columns: 8;
    --site-media-image-span: 3;
    --site-columns: 8;
  }
}
@media (max-width: 671.98px) {
  :root {
    --type-name-font-size: 42px;
    --type-detail-title-font-size: 36px;
    --type-work-title-font-size: 28px;
    --type-poster-title-font-size: 28px;
    --type-route-title-font-size: 24px;
    --type-section-title-font-size: 20px;
    --type-lede-font-size: 20px;
    --layout-margin: 16px;
    --site-cutout-padding: 12px;
    --site-poster-min-height: 128px;
    --site-space-hero-top: var(--spacing-07);
    --site-space-hero-bottom: var(--spacing-05);
    --site-space-row-start: var(--spacing-06);
    --site-space-row-end: var(--spacing-05);
    --site-columns: 4;
    --site-compact-title: 24px;
    --site-detail-poster-min: 180px;
    --site-404-min: 220px;
    --site-filter-size: var(--type-meta-font-size);
    --site-filter-padding: var(--spacing-04);
    --site-detail-poster-gap: var(--spacing-06);
    --site-grid-gutter: var(--spacing-05);
  }
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --color-background: #17130F;
    --color-layer-01: #27231E;
    --color-text-primary: #EFE7D6;
    --color-text-secondary: #A69C8C;
    --color-text-on-color: #17130F;
    --color-text-on-color-disabled: #F2EAD9;
    --color-link-primary: #EFE7D6;
    --color-link-primary-hover: #EFE7D6;
    --color-link-visited: #EFE7D6;
    --color-border-subtle-00: #3A3631;
    --color-border-strong-01: #706B66;
    --color-focus: #E65339;
    --color-focus-inset: #17130F;
    --color-button-primary: #EFE7D6;
    --color-button-primary-hover: #DCD5C4;
    --color-button-primary-active: #AFA99D;
    --color-button-disabled: #3B3732;
    --color-site-cutout: #E8553A;
    --color-site-poster-text: #F1E9D7;
  }
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --color-background: #17130F;
  --color-layer-01: #27231E;
  --color-text-primary: #EFE7D6;
  --color-text-secondary: #A69C8C;
  --color-text-on-color: #17130F;
  --color-text-on-color-disabled: #F2EAD9;
  --color-link-primary: #EFE7D6;
  --color-link-primary-hover: #EFE7D6;
  --color-link-visited: #EFE7D6;
  --color-border-subtle-00: #3A3631;
  --color-border-strong-01: #706B66;
  --color-focus: #E65339;
  --color-focus-inset: #17130F;
  --color-button-primary: #EFE7D6;
  --color-button-primary-hover: #DCD5C4;
  --color-button-primary-active: #AFA99D;
  --color-button-disabled: #3B3732;
  --color-site-cutout: #E8553A;
  --color-site-poster-text: #F1E9D7;
}

/* 高保真新增：以下具名值补充 design/tokens.css，依据任务书 3.1–3.3 与 motion.md。 */



*{box-sizing:border-box}html{background:var(--color-background);color:var(--color-text-primary)}
body{margin:0;background:var(--color-background);font:var(--type-body-font-weight) var(--type-body-font-size)/var(--type-body-line-height) var(--font-family-body);font-synthesis:none;letter-spacing:var(--type-body-letter-spacing)}
h1,h2,h3,p,figure,dl,dd,ul{margin:0}h1,h2,h3{text-wrap:balance;font-weight:var(--font-weight-regular)}p,li,dd{text-wrap:pretty}
section,article,div,nav,figure,aside,main,header,footer{min-width:0}p,h1,h2,h3,dd,dt,a,span{overflow-wrap:anywhere}
img{display:block;max-width:100%;height:auto}
.name,.page-title,.work-title,.poster-title,.novel-title,.pager-title,.route-title,.section-title,.hero .lede,.facts dd,.fields dd,.role-value{word-break:keep-all;overflow-wrap:anywhere}.nobr{white-space:nowrap}.trim-end{letter-spacing:-.5em}[hidden]{display:none!important}
.shell{width:calc(100% - var(--layout-margin)*2);max-width:var(--layout-max-width);margin-inline:auto}
.grid{display:grid;grid-template-columns:repeat(var(--site-columns),minmax(0,1fr));column-gap:var(--site-grid-gutter)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.label,.kicker{font:var(--type-label-font-weight) var(--type-label-font-size)/var(--type-label-line-height) var(--font-family-body);color:var(--color-text-secondary)}
.meta,.secondary,.count{font-size:var(--type-meta-font-size);color:var(--color-text-secondary)}.secondary{font-size:var(--type-body-font-size)}.measure{max-width:var(--layout-measure)}
.name{font:var(--type-name-font-weight) var(--type-name-font-size)/var(--type-name-line-height) var(--font-family-heading)}
.page-title{font:var(--type-detail-title-font-weight) var(--type-detail-title-font-size)/var(--type-detail-title-line-height) var(--font-family-heading)}
.work-title{font:var(--type-work-title-font-weight) var(--type-work-title-font-size)/var(--type-work-title-line-height) var(--font-family-heading)}
.section-title{font:var(--type-section-title-font-weight) var(--type-section-title-font-size)/var(--type-section-title-line-height) var(--font-family-heading)}
.lede{font:var(--type-lede-font-weight) var(--type-lede-font-size)/var(--type-lede-line-height) var(--font-family-body);max-width:var(--layout-measure)}
a{color:var(--color-link-primary);text-decoration:underline;text-decoration-thickness:var(--border-width);text-underline-offset:var(--site-line-offset)}a:visited{color:var(--color-link-visited)}
a:active,a.is-active{outline:var(--focus-width) solid var(--color-focus);outline-offset:var(--focus-offset-link)}
:focus-visible,.is-focus{outline:var(--focus-width) solid var(--color-focus);outline-offset:var(--focus-offset-link)}
#main:focus{outline:none}.icon{display:inline-block;vertical-align:var(--site-icon-baseline);width:var(--control-icon-size);height:var(--control-icon-size);margin-left:var(--spacing-03);fill:currentColor;flex-shrink:0}
.skip{position:absolute;top:var(--spacing-03);left:var(--layout-margin);z-index:10;transform:translateY(-200%);background:var(--color-background);padding:var(--spacing-03) var(--spacing-05)}.skip:focus{transform:none}
.topbar{display:flex;align-items:center;gap:var(--spacing-09);padding-block:var(--spacing-06);border-bottom:var(--border-width) solid var(--color-border-subtle-00)}
.brand{display:flex;gap:var(--spacing-03);font:var(--font-weight-regular) var(--site-brand-size)/var(--type-work-title-line-height) var(--font-family-heading);text-decoration:none;flex-shrink:0}
.nav-links{display:flex;gap:var(--spacing-07);margin-left:auto;font-size:var(--site-nav-size)}.nav-links a{text-decoration:none}.nav-links a[aria-current=page]{font-weight:var(--font-weight-medium);text-decoration:underline;text-decoration-thickness:var(--focus-width)}
.language{font-size:var(--type-meta-font-size);white-space:nowrap;flex-shrink:0}
main{padding-top:var(--spacing-10)}.home main{padding-top:0}
.hero{padding-top:var(--site-space-hero-top);padding-bottom:var(--spacing-10);align-items:start}.hero-copy{grid-column:1/span 11}.hero-copy .lede{margin-top:var(--spacing-05)}.now{margin-top:var(--spacing-03);font-size:var(--site-now-size);color:var(--color-text-secondary);max-width:var(--layout-measure)}
.portrait{grid-column:13/-1;height:var(--site-media-portrait-height);background-size:cover;background-position:center;filter:grayscale(var(--site-photo-gray)) contrast(var(--site-photo-contrast));mix-blend-mode:multiply}

@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .portrait{mix-blend-mode:normal}}:root[data-theme=dark] .portrait{mix-blend-mode:normal}
.hero.no-photo .hero-copy{grid-column:1/-1}
.work{position:relative;align-items:start;border-top:var(--border-width) solid var(--color-border-strong-01);padding-block:var(--spacing-07);margin-bottom:var(--spacing-07)}
.work>.cutout{grid-column:1/span 8}.work-copy{grid-column:10/-1}.compact>.cutout{grid-column:1/span 6}.compact .work-copy{grid-column:8/-1}.compact .work-title{font-size:var(--site-compact-title)}
.work-title{margin-top:var(--spacing-03)}.work-title a{text-decoration:none}.summary{margin-top:var(--spacing-03);max-width:var(--layout-measure)}
.role,.fields>div{display:grid;grid-template-columns:var(--site-field-label-width) minmax(0,1fr);column-gap:var(--site-field-gap);align-items:baseline}
.role{margin-top:var(--spacing-05);font-size:var(--type-meta-font-size)}.role-value{font-size:var(--site-role-size);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}
.fields{margin-top:var(--spacing-02);font-size:var(--type-meta-font-size);color:var(--color-text-secondary)}.fields dt{font-weight:var(--font-weight-medium)}
.cutout{--shape:var(--site-cutout-shape);--rot:var(--site-cutout-rotation);--rot-back:var(--site-rotation-back);position:relative;isolation:isolate;padding:var(--site-cutout-padding);display:block;text-decoration:none}
.cutout::before{content:"";position:absolute;inset:0;background:var(--color-site-cutout);clip-path:var(--shape);transform:rotate(var(--rot));z-index:-1}
.variant-1{--shape:var(--site-cutout-mirror-x);--rot:var(--site-rotation-1);--rot-back:var(--site-rotation-back-positive)}.variant-2{--shape:var(--site-cutout-mirror-y);--rot:var(--site-rotation-2)}
.frame{width:100%;aspect-ratio:var(--site-ratio);background:var(--color-layer-01)}.frame>img{width:100%;height:100%;object-fit:cover;aspect-ratio:var(--site-ratio)}
.triptych{display:flex;justify-content:center;gap:var(--spacing-05);background:transparent}.triptych>img{height:100%;width:auto;min-width:0;max-width:calc((100% - var(--spacing-05)*2)/3);object-fit:contain;aspect-ratio:auto}
.poster{width:100%;aspect-ratio:var(--site-ratio);display:flex;align-items:flex-end;padding:var(--spacing-07);color:var(--color-site-poster-text);min-height:auto;container-type:inline-size}
/* Keep the existing height floor without disabling the content minimum. */
.poster::after{content:"";width:0;min-height:calc(var(--site-poster-min-height) - 2*var(--spacing-07))}
.poster,.poster:visited{color:var(--color-site-poster-text);text-decoration:none}
.poster-title{display:block;text-wrap:balance;font:var(--type-poster-title-font-weight) clamp(var(--site-poster-row-min),var(--site-poster-scale),var(--site-poster-row-max))/var(--type-poster-title-line-height) var(--font-family-heading)}
.poster.inverse,.poster.inverse:visited{color:var(--color-background)}.poster.inverse::before{background:var(--color-text-primary)}.compact .poster{min-height:auto}
.compact .poster::after{min-height:0}
.actions{display:flex;flex-wrap:wrap;gap:var(--spacing-03);margin-top:var(--spacing-05)}
.button,.copy-button{position:relative;display:inline-flex;align-items:center;justify-content:flex-start;min-height:var(--control-height);padding:0 var(--control-padding-end) 0 var(--control-padding-start);border:var(--border-width) solid var(--color-button-primary);border-radius:var(--border-radius);background:var(--color-button-primary);color:var(--color-text-on-color);font:var(--type-control-font-weight) var(--type-control-font-size)/var(--type-control-line-height) var(--font-family-body);text-decoration:none;white-space:nowrap;cursor:pointer;max-width:var(--site-button-max)}
.button:visited{color:var(--color-text-on-color)}.button-icon{position:absolute;right:var(--control-icon-inset);width:var(--control-icon-size);height:var(--control-icon-size);fill:currentColor}
.button:active,.button.is-active{background:var(--color-button-primary-active);border-color:var(--color-button-primary-active);outline:none}
.button:focus-visible,.button.is-focus{transition-property:background-color;outline:none;border-color:var(--color-focus);box-shadow:inset 0 0 0 var(--border-width) var(--color-focus),inset 0 0 0 var(--focus-width) var(--color-focus-inset)}
.copy-wrap{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--spacing-03)}.copy-button{padding-right:var(--site-ghost-end);background:transparent;color:var(--color-text-primary);border-color:transparent}.copy-button .icon{position:absolute;right:var(--control-icon-inset);margin:0}.check-icon{display:none}.copy-button.is-copied .copy-icon{display:none}.copy-button.is-copied .check-icon{display:block}.copy-error{font-size:var(--type-meta-font-size)}
.routes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--site-grid-gutter);border-top:var(--border-width) solid var(--color-border-strong-01);padding-top:var(--spacing-07);margin-top:var(--spacing-07);margin-bottom:var(--spacing-10)}.routes a{text-decoration:none}.route-top{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-05)}.route-title{font:var(--type-route-title-font-weight) var(--type-route-title-font-size)/var(--type-route-title-line-height) var(--font-family-heading)}.route-icon{width:var(--site-arrow-size);height:var(--site-arrow-size);fill:currentColor;flex-shrink:0}.route-meta{display:block;margin-top:var(--spacing-03);font-size:var(--type-meta-font-size);color:var(--color-text-secondary)}
.section{border-top:var(--border-width) solid var(--color-border-strong-01);padding-top:var(--spacing-07);margin-bottom:var(--spacing-10);align-items:start}.section-heading{grid-column:1/span 3}.section-heading .meta{margin-top:var(--spacing-03)}.section-content{grid-column:5/-1}.section-content>.actions:first-child{margin-top:0}.email-line{display:flex;align-items:center;gap:var(--spacing-05);flex-wrap:wrap}.email{font-size:var(--type-lede-font-size);color:var(--color-text-primary);user-select:text}.contact-account{margin-top:var(--spacing-05)}
.footer{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--site-grid-gutter);border-top:var(--border-width) solid var(--color-border-subtle-00);padding-block:var(--spacing-09);margin-top:var(--spacing-10);color:var(--color-text-secondary);font-size:var(--type-meta-font-size)}.footer .email{font-size:var(--type-body-font-size)}.footer .email-line{gap:var(--spacing-03)}.footer .accounts{padding-top:var(--spacing-06)}.updated{font-size:var(--type-caption-font-size);text-align:right;padding-top:var(--spacing-06)}
.page-heading{display:flex;align-items:baseline;gap:var(--spacing-05);margin-bottom:var(--spacing-07)}.count{white-space:nowrap}.number,.entry-date{font-variant-numeric:tabular-nums}
.filters{display:flex;flex-wrap:wrap;gap:var(--spacing-03);margin-bottom:var(--spacing-07)}.filter{background:transparent;color:var(--color-text-primary);border:var(--border-width) solid var(--color-border-strong-01);border-radius:var(--border-radius);padding:0 var(--site-filter-padding);min-height:var(--site-filter-height);font:var(--font-weight-regular) var(--site-filter-size)/var(--type-body-line-height) var(--font-family-body);cursor:pointer;white-space:nowrap}.filter[aria-pressed=true]{background:var(--color-text-primary);color:var(--color-background);border-color:var(--color-text-primary)}
.detail-header{align-items:start;margin-bottom:var(--spacing-10)}.detail-intro{grid-column:1/span 11}.detail-intro .page-title{margin-top:var(--spacing-03)}.detail-intro .lede{margin-top:var(--spacing-05)}.detail-intro .actions{margin-top:var(--spacing-06)}.facts{grid-column:13/-1}.facts>div{padding-block:var(--spacing-04)}.facts>div:first-child{padding-top:0}.facts>div+div{border-top:var(--border-width) solid var(--color-border-subtle-00)}.facts dt{font-size:var(--type-label-font-size);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.facts dd{font-size:var(--site-facts-size);margin-top:var(--spacing-02)}
.detail-poster{margin-top:var(--site-detail-poster-gap);min-height:auto}.detail-poster::after{min-height:calc(var(--site-detail-poster-min) - 2*var(--spacing-07))}.detail-poster .poster-title,.notfound-poster .page-title{font-size:clamp(var(--site-poster-page-min),var(--site-poster-scale),var(--site-poster-page-max))}.detail-gallery{margin-bottom:var(--spacing-10)}.gallery-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--site-grid-gutter);margin-top:var(--spacing-07)}
.shows li{font-size:var(--type-lede-font-size);line-height:var(--type-lede-line-height);padding-block:var(--spacing-05)}.shows li:first-child{padding-top:0}.shows li:last-child{padding-bottom:0}.shows li+li{border-top:var(--border-width) solid var(--color-border-subtle-00)}
[data-section="did"] .section-content>p+p,[data-section="ai"] .section-content>p+p{margin-top:var(--spacing-05)}
.pager{border-top:var(--border-width) solid var(--color-border-strong-01);padding-top:var(--spacing-07);margin-top:var(--spacing-10)}.pager-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--site-grid-gutter)}.pager-item{position:relative;text-decoration:none;display:block}.pager-title{display:block;margin-top:var(--spacing-03);font:var(--font-weight-regular) var(--type-route-title-font-size)/var(--type-route-title-line-height) var(--font-family-heading)}.pager-item.next{text-align:right;padding-right:var(--spacing-07)}.pager-item.prev{padding-left:var(--spacing-07)}.pager-icon{position:absolute;right:0;bottom:var(--spacing-02);width:var(--site-arrow-size);height:var(--site-arrow-size);fill:currentColor}.prev .pager-icon{left:0;transform:rotate(180deg)}.pager-back{display:inline-block;margin-top:var(--spacing-07)}
.entry+.entry{border-top:var(--border-width) solid var(--color-border-subtle-00);margin-top:var(--spacing-07);padding-top:var(--spacing-07)}.novel{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--site-grid-gutter)}.novel-title{font:var(--font-weight-regular) var(--type-work-title-font-size)/var(--type-work-title-line-height) var(--font-family-heading)}.novel-name .meta{margin-top:var(--spacing-03)}.novel-shows{margin-top:var(--spacing-05);margin-bottom:var(--spacing-05)}.novel-shows .label{display:block;margin-bottom:var(--spacing-02)}
.essay{display:grid;grid-template-columns:var(--site-timeline-time-width) minmax(0,1fr) auto;gap:var(--spacing-06);align-items:baseline}.essay.entry+.entry{margin-top:var(--spacing-06);padding-top:var(--spacing-06)}.entry-date,.entry-note{font-size:var(--type-meta-font-size);color:var(--color-text-secondary)}.entry-note{text-align:right}.entry-link,.entry-title{font-weight:var(--font-weight-medium)}
.bio-short{margin-top:var(--spacing-07);max-width:var(--layout-measure)}.bio-short .label{margin-bottom:var(--spacing-03)}.timeline{display:grid;grid-template-columns:var(--site-timeline-time-width) minmax(0,1fr);gap:var(--spacing-06)}.timeline-role{font-size:var(--type-body-font-size);font-weight:var(--font-weight-medium);line-height:var(--type-body-line-height)}.timeline .secondary{margin-top:var(--spacing-03)}.skills>div{display:grid;grid-template-columns:var(--site-timeline-time-width) minmax(0,1fr);gap:var(--spacing-06)}.skills .entry+.entry{margin-top:var(--spacing-05);padding-top:var(--spacing-05)}.resume-meta{margin-top:var(--spacing-05)}
.not-found{width:calc((100% + var(--site-grid-gutter))*11/16 - var(--site-grid-gutter));margin-bottom:var(--spacing-10)}.notfound-poster{min-height:var(--site-404-min)}.not-found>p{margin-top:var(--spacing-07)}.notfound-links{display:flex;gap:var(--spacing-07);margin-top:var(--spacing-06)}.notfound-links a{font-weight:var(--font-weight-medium);display:inline-flex;gap:var(--spacing-05);align-items:center}
.state-line{display:flex;flex-wrap:wrap;gap:var(--spacing-06);align-items:center}.states-page .cutout{view-transition-name:none!important}.stress-page .poster{width:100%;aspect-ratio:auto;min-height:var(--site-poster-min-height)}
/* 固定各态，排列说明写在 HANDOFF-TOKENS.md，不向页面添加词条外文案。 */
a.is-hover{text-decoration-thickness:var(--focus-width)}.button.is-hover{background:var(--color-button-primary-hover);border-color:var(--color-button-primary-hover)}.button.is-hover .button-icon{transform:translateX(var(--site-icon-shift))}.copy-button.is-hover,.copy-button.is-active{background:var(--color-layer-01)}.copy-button:active,.copy-button.is-active,.filter:active,.filter.is-active{background:var(--color-layer-01);outline:var(--focus-width) solid var(--color-focus);outline-offset:var(--focus-offset-link)}.filter.is-hover{background:var(--color-layer-01)}.work.is-hover>.cutout::before{transform:rotate(calc(var(--rot) + var(--rot-back))) translate(var(--site-icon-shift),var(--site-icon-shift))}.work.is-hover .work-title a{text-decoration:underline;text-decoration-thickness:var(--focus-width)}
@media(any-hover:hover){
 a:hover{text-decoration-thickness:var(--focus-width)}.nav-links a:hover{text-decoration:underline;text-decoration-thickness:var(--border-width)}.nav-links a[aria-current=page]:hover{text-decoration-thickness:var(--focus-width)}
 .button:hover{background:var(--color-button-primary-hover);border-color:var(--color-button-primary-hover);color:var(--color-text-on-color)}.copy-button:hover{background:var(--color-layer-01)}.filter:hover{background:var(--color-layer-01)}.filter[aria-pressed=true]:hover{background:var(--color-text-primary)}
 .work:has(.media-link:hover,.work-title a:hover,.work-title a:focus-visible)>.cutout::before{transform:rotate(calc(var(--rot) + var(--rot-back))) translate(var(--site-icon-shift),var(--site-icon-shift))}
 .work:has(.media-link:hover,.work-title a:hover,.work-title a:focus-visible) .work-title a{text-decoration:underline;text-decoration-thickness:var(--focus-width)}.routes a:hover .route-title{text-decoration:underline;text-decoration-thickness:var(--focus-width)}
}
@media(prefers-reduced-motion:no-preference){
 html{scroll-behavior:smooth}
 a{transition:text-decoration-thickness var(--motion-duration-fast-01) var(--motion-easing-standard-productive)}
 .button,.copy-button{transition:background-color var(--motion-duration-fast-01) var(--motion-easing-entrance-productive),border-color var(--motion-duration-fast-01) var(--motion-easing-entrance-productive)}
 .button-icon,.route-icon{transition:transform var(--motion-duration-fast-02) var(--motion-easing-standard-productive)}
 .cutout::before{transition:transform var(--site-duration-row) var(--motion-easing-standard-productive)}
 .filter{transition:background-color var(--motion-duration-fast-01) var(--motion-easing-standard-productive)}
 .button:active{transition-duration:var(--motion-duration-fast-02)}
 @media(any-hover:hover){.button:hover .button-icon,.routes a:hover .route-icon{transform:translateX(var(--site-icon-shift))}}
 @view-transition{navigation:auto}
 ::view-transition-old(root),::view-transition-new(root){animation-duration:var(--motion-duration-fast-02);animation-timing-function:var(--motion-easing-standard-productive)}
 
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}.work:has(a:hover,a:focus-visible)>.cutout::before,.work.is-hover>.cutout::before{transform:rotate(var(--rot))}.button-icon,.route-icon{transform:none!important}}
@media(min-width:672px) and (max-width:1055.98px){
 .hero-copy,.detail-intro{grid-column:1/span 5}.portrait,.facts{grid-column:7/-1}.work>.cutout,.compact>.cutout{grid-column:1/span 4}.work-copy,.compact .work-copy{grid-column:5/-1}.section-heading{grid-column:1/span 2}.section-content{grid-column:3/-1}.brand{flex-shrink:1}.novel{grid-template-columns:1fr}.essay{grid-template-columns:1fr auto}.essay .entry-date{grid-column:1}.essay .entry-note{grid-column:2;grid-row:1}.essay .entry-link,.essay .entry-title{grid-column:1/-1;grid-row:2}.not-found{width:100%}.footer{grid-template-columns:2fr 1fr}.footer .updated{grid-column:1/-1;text-align:left;padding-top:0}
}
@media(min-width:1056px){.footer{align-items:end}.footer .accounts,.footer .updated{padding-top:0;line-height:var(--control-height)}.contact .section-title{line-height:var(--control-height)}}
@media(max-width:700px){.portrait{display:none}.hero-copy{grid-column:1/-1}}
@media(max-width:671.98px){
 
 .topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--spacing-03) var(--spacing-03);padding-block:var(--spacing-04)}.brand{grid-column:1;grid-row:1}.language{grid-column:2;grid-row:1}.nav-links{grid-column:1/-1;grid-row:2;margin:0;gap:var(--spacing-06)}
 main{padding-top:var(--spacing-09)}.hero{display:block;padding-top:var(--spacing-07);padding-bottom:var(--spacing-09)}
 .work,.section,.detail-header{display:block}.work{padding-top:var(--spacing-06);padding-bottom:var(--spacing-06);margin-bottom:var(--spacing-06)}.work-copy{margin-top:var(--spacing-06)}
 .poster{padding:var(--spacing-05);min-height:auto}.triptych{gap:var(--spacing-03)}.triptych>img{max-width:calc((100% - var(--spacing-03)*2)/3)}
 .poster::after{min-height:0}
 /* Short titles keep their previous position; a title that outgrows the box keeps an 8px top inset. */
 .poster-title{position:relative;bottom:var(--spacing-03);margin-bottom:calc(0px - var(--spacing-03))}
 .actions .button{max-width:none;flex:1 1 calc((100% - var(--spacing-03))/2);min-width:max-content}
 .actions .button[data-link-kind="read"]{padding-right:calc(var(--control-icon-inset) + var(--control-icon-size) + var(--spacing-03))}
 .routes{display:block;padding-top:0;margin-top:var(--spacing-06);margin-bottom:var(--spacing-09)}.routes a{display:block;padding-block:var(--spacing-06)}.routes a+a{border-top:var(--border-width) solid var(--color-border-subtle-00)}.routes a:last-child{padding-bottom:0}
 .section{padding-top:var(--spacing-06);margin-bottom:var(--spacing-09)}.section-heading{margin-bottom:var(--spacing-06)}.section-heading .meta{margin-top:var(--spacing-03)}.email{font-size:var(--type-lede-font-size)}
 .footer{display:block;margin-top:var(--spacing-09);padding-block:var(--spacing-07)}.footer>div+div,.footer .updated{margin-top:var(--spacing-06)}.footer .accounts,.footer .updated{padding-top:0}.updated{text-align:left}
 .page-heading{margin-bottom:var(--spacing-06)}.filters{margin-bottom:var(--spacing-06)}
 .detail-header{margin-bottom:var(--spacing-10)}.detail-intro .lede{margin-top:var(--spacing-05)}.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--spacing-05);margin-top:var(--spacing-07)}.facts>div,.facts>div:first-child{padding-block:var(--spacing-04)}.facts>div:nth-child(2){border-top:0}.gallery-pair{display:block;margin-top:var(--spacing-06)}.gallery-pair>figure+figure{margin-top:var(--spacing-06)}.detail-gallery{margin-bottom:var(--spacing-09)}
 .pager{margin-top:var(--spacing-09);padding-top:var(--spacing-06)}.pager-grid{display:block}.pager-item+.pager-item{margin-top:var(--spacing-06)}.pager-title{font-size:var(--type-route-title-font-size)}
 .novel{display:block}.novel-copy{margin-top:var(--spacing-06)}.entry+.entry{margin-top:var(--spacing-06);padding-top:var(--spacing-06)}.novel-title{font-size:var(--type-work-title-font-size)}.essay{grid-template-columns:1fr auto;gap:var(--spacing-03)}.essay .entry-date{grid-column:1}.essay .entry-note{grid-column:2;grid-row:1}.essay .entry-link,.essay .entry-title{grid-column:1/-1;grid-row:2}.timeline{display:block}.timeline>div{margin-top:var(--spacing-03)}.skills>div{grid-template-columns:1fr;gap:var(--spacing-03)}.resume-meta{margin-top:var(--spacing-05)}
 .not-found{width:100%}.notfound-links{flex-wrap:wrap;gap:var(--spacing-06)}.notfound-poster{min-height:var(--site-404-min)}
}

.shows{list-style:none;padding:0}
/* Frozen interface §9.8: one combined contact/footer block. */
.contact-footer.footer{border-top:var(--border-width) solid var(--color-border-strong-01);padding-top:var(--spacing-07);padding-bottom:var(--spacing-09);margin-top:0;margin-bottom:0;grid-template-columns:repeat(var(--site-columns),minmax(0,1fr));align-items:start;color:var(--color-text-primary);font-size:var(--type-body-font-size)}
.contact-footer .email{font-size:var(--type-lede-font-size)}
.contact-footer .email-line{gap:var(--spacing-05)}
.contact-footer .accounts{padding-top:0;margin-top:var(--spacing-05);line-height:var(--type-body-line-height)}
.contact-footer .updated{padding-top:0;margin-top:var(--spacing-06);text-align:left;color:var(--color-text-secondary)}
@media(min-width:672px){.contact-footer .accounts{margin-bottom:var(--spacing-06)}.contact-footer .updated{margin-top:0}}
@media(min-width:1056px){.contact-footer .section-title{line-height:var(--control-height)}}
@media(max-width:671.98px){.contact-footer.footer{display:block;padding-top:var(--spacing-06);padding-bottom:var(--spacing-07)}.contact-footer.footer>div+div{margin-top:0}}
/* Keep normal labels on one line; oversized labels retain eight pixels of ink clearance. */
.button>span:not(.sr-only){min-width:0;white-space:normal;padding-block:calc(var(--spacing-03) + var(--border-width))}
@media(max-width:359.98px){.actions .button{flex-basis:100%;min-width:0}.facts{grid-template-columns:minmax(0,1fr)}.facts>div:nth-child(2){border-top:var(--border-width) solid var(--color-border-subtle-00)}.facts .status-boundary{white-space:nowrap}}
/* A flex row applies its column gap only between items on the same line. */
@media(max-width:671.98px){
 .copy-wrap{display:contents}
 .copy-button{margin-left:calc(0px - var(--control-padding-start) - var(--border-width))}
 .copy-error{flex-basis:100%;margin-top:calc(var(--spacing-03) - var(--spacing-05))}
 .footer:not(.contact-footer) .copy-error{margin-top:0}
 .copy-button:focus-visible,.copy-button.is-focus,.copy-button:active,.copy-button.is-active{outline-offset:var(--focus-offset-control)}
 .email-line,.contact-footer .email-line{column-gap:calc(var(--spacing-05) + var(--control-padding-start) + var(--border-width))}
 .footer:not(.contact-footer) .email-line{column-gap:calc(var(--spacing-03) + var(--control-padding-start) + var(--border-width))}
}
/* Keep the complete keyboard target and focus ring inside the viewport. */
a,button{scroll-margin-block:var(--spacing-03)}
@media(scripting:none){.filters,.copy-wrap,.copy-button,.copy-error{display:none}}

@font-face{font-family:"MrPrivateer Display";src:url("/fonts/mrprivateerdisplay.89e690d493339e20.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"MrPrivateer Sans";src:url("/fonts/mrprivateersans.c456c1c57deab12f.woff2") format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
@media(min-width:701px){.portrait{background-image:url("/img/portrait-480.e5d60a1c7c2862bb.webp")}}
[data-media="processed"] { view-transition-name: media-processed; }
@media (prefers-reduced-motion: no-preference) { ::view-transition-group(media-processed) { animation-duration: var(--site-duration-page); animation-timing-function: var(--motion-easing-entrance-productive); } }
[data-media="soul-knight"] { view-transition-name: media-soul-knight; }
@media (prefers-reduced-motion: no-preference) { ::view-transition-group(media-soul-knight) { animation-duration: var(--site-duration-page); animation-timing-function: var(--motion-easing-entrance-productive); } }
[data-media="galvoyage"] { view-transition-name: media-galvoyage; }
@media (prefers-reduced-motion: no-preference) { ::view-transition-group(media-galvoyage) { animation-duration: var(--site-duration-page); animation-timing-function: var(--motion-easing-entrance-productive); } }
[data-media="day0"] { view-transition-name: media-day0; }
@media (prefers-reduced-motion: no-preference) { ::view-transition-group(media-day0) { animation-duration: var(--site-duration-page); animation-timing-function: var(--motion-easing-entrance-productive); } }
[data-media="cogito"] { view-transition-name: media-cogito; }
@media (prefers-reduced-motion: no-preference) { ::view-transition-group(media-cogito) { animation-duration: var(--site-duration-page); animation-timing-function: var(--motion-easing-entrance-productive); } }
[data-media="bad-tutoring"] { view-transition-name: media-bad-tutoring; }
@media (prefers-reduced-motion: no-preference) { ::view-transition-group(media-bad-tutoring) { animation-duration: var(--site-duration-page); animation-timing-function: var(--motion-easing-entrance-productive); } }
[data-media="rebel-god-localization"] { view-transition-name: media-rebel-god-localization; }
@media (prefers-reduced-motion: no-preference) { ::view-transition-group(media-rebel-god-localization) { animation-duration: var(--site-duration-page); animation-timing-function: var(--motion-easing-entrance-productive); } }
[data-media="girls-journey"] { view-transition-name: media-girls-journey; }
@media (prefers-reduced-motion: no-preference) { ::view-transition-group(media-girls-journey) { animation-duration: var(--site-duration-page); animation-timing-function: var(--motion-easing-entrance-productive); } }