/* Yang Tsung Han — V2.28 AISEO Authority / Answer Architecture — visual rules unchanged */
@font-face{
  font-family:"Roboto Web";
  src:url("/assets/fonts/Roboto-Regular.woff2") format("woff2");
  font-style:normal;
  font-weight:400;
  font-display:swap;
}

@font-face{
  font-family:"Roboto Web";
  src:url("/assets/fonts/Roboto-Bold.woff2") format("woff2");
  font-style:normal;
  font-weight:700;
  font-display:swap;
}

@font-face{
  font-family:"Noto Sans TC Web";
  src:url("/assets/fonts/NotoSansTC-YTH-v212.woff2") format("woff2");
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
}

/* =========================================================
   YANG TSUNG HAN — V2.08 UNIFIED GRID + TYPOGRAPHIC ALIGNMENT
   English: Roboto. Traditional Chinese: Noto Sans TC.
   One quiet grid, two script-specific font families, three type sizes.
   ========================================================= */

:root{
  --ink:#0b0b0b;
  --muted:#666;
  --line:#d8d8d8;
  --line-strong:#111;
  --paper:#fff;
  --max:1900px;

  --gutter:clamp(20px,3vw,48px);
  --header-h:60px;
  --page-top:clamp(66px,6.7vw,104px);
  --hero-gap:clamp(62px,6.2vw,96px);
  --section-gap:clamp(88px,8vw,132px);
  --row-pad:17px;

  --type-display:clamp(78px,9.25vw,154px);
  --type-reading:20px;
  --type-ui:14px;
  --editorial-measure:78ch;
  --grid-meta:110px;
  --grid-gap:28px;

  --font-sans:"Roboto Web","Noto Sans TC Web","PingFang TC","Microsoft JhengHei",Arial,sans-serif;
  --font-serif:"Roboto Web","Noto Sans TC Web","PingFang TC","Microsoft JhengHei",Arial,sans-serif;
}

*{box-sizing:border-box;font-size:inherit}
html{scroll-behavior:smooth;background:var(--paper);scrollbar-gutter:stable}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:clip;
  min-height:100vh;
  min-height:100svh;
  display:flex;
  flex-direction:column;
  font-synthesis:none;
}
main{width:100%;flex:1 0 auto}
body.menu-open,body.lightbox-open{overflow:hidden}
a{color:inherit;text-decoration:none}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
img{display:block;max-width:100%;height:auto}
p,h1,h2,h3,figure{margin:0}
ul,ol{margin:0;padding:0}
::selection{background:#ddd;color:#000}

/* Accessibility */
.skip-link{
  position:fixed;
  z-index:5000;
  left:var(--gutter);
  top:10px;
  transform:translateY(-180%);
  padding:8px 10px;
  background:#000;
  color:#fff;
}
.skip-link:focus{transform:none}
:focus-visible{outline:1px solid currentColor;outline-offset:3px}

/* =========================================================
   01. HEADER — identical geometry on every route
   ========================================================= */
.site-header{
  position:sticky;
  top:0;
  z-index:100;
  height:var(--header-h);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:0 var(--gutter);
  background:#fff;
  border-bottom:1px solid var(--line);
}
.wordmark,.nav a,.menu{
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1;
  font-weight:700;
  letter-spacing:.04em;
}
.wordmark{white-space:nowrap}
.nav{display:flex;align-items:center;gap:30px}
.nav a{padding:21px 0 19px;white-space:nowrap;border-bottom:1px solid transparent}
.nav a.active{border-bottom-color:var(--ink)}
.menu{display:none;border:0;background:transparent;padding:0}

/* =========================================================
   02. TYPOGRAPHY — exactly three visible sizes
   ========================================================= */
.page-title,
.series-top h1,
.home-hero-heading h1,
.contact h1{
  font-family:var(--font-sans);
  font-size:var(--type-display);
  line-height:.86;
  letter-spacing:-.055em;
  font-weight:700;
  text-wrap:nowrap;
  white-space:nowrap;
}

.page-intro .copy,
.statement .text,
.bio-block .content,
.manifesto-copy,
.artwork-title-meta,
.featured-title-v127 h2,
.series-panel-title h2,
.reference-row .name,
.exhibition-title,
.institutional-title,
.pixel-record-title,
.series-switch-v127 strong,
.contact-grid-v127 p,
.home-series-index-v123 strong,
.home-exhibitions-v123 .home-exhibition-row strong{
  font-family:var(--font-serif);
  font-size:var(--type-reading);
  line-height:1.62;
  font-weight:400;
  letter-spacing:0;
}

/* everything else intentionally inherits the UI size */
.crumb,.page-intro .label,.statement h2,.works-title,.bio-block h2,
.archive-count,.year,.where,.date,.institutional-year,.institutional-detail,
.exhibition-year,.exhibition-venue,.artist-meta,.medium-year,.dimension-line,
.edition-line,.zoom-hint,.series-position-v127,.series-position-v127 a,
.series-position-v127 span,.featured-kicker-v127,.featured-spec-v127,
.featured-link-v127,.artwork-hero-meta,.series-jump-v123 a,
.series-panel-title>span,.series-panel-title b,.series-panel-title>a,
.panel-thumb-v126>span,.pixel-intro-v124,.nft-series-facts,.nft-record-data,
.nft-attrs,.nft-tools,.nft-result-count,.contact-kicker-v127,
.contact-links-v127 a,.home-hero-side,.hero-work-cap,.wall-kicker,
.wall-piece figcaption,.wall-view-all,.manifesto-label,.series-index-head,
.home-series-index-v123 span,.home-series-index-v123 i,
.exhibitions-v123-head,.home-exhibitions-v123 .home-exhibition-row span,.home-exhibitions-v123 .home-exhibition-row em,
.footer,.footnav,.lightbox-title,.lightbox-caption,.lightbox-counter,
.lightbox-close,.lightbox-nav,.back-to-top{
  font-family:var(--font-sans);
  font-size:var(--type-ui);
}

/* =========================================================
   03. SHARED PAGE SHELL — same top rhythm everywhere
   ========================================================= */
.page,
.artwork-editorial-v123{
  width:100%;
  max-width:var(--max);
  margin:0 auto;
}
.page{
  padding:var(--page-top) var(--gutter) clamp(120px,11vw,180px);
}
.crumb{display:none}
.page-title{margin:0 0 var(--hero-gap)}
.contact .page-title{margin-bottom:clamp(32px,4vw,56px)}

.page-intro{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  column-gap:var(--grid-gap);
  padding:var(--row-pad) 0 var(--section-gap);
  border-top:1px solid var(--line);
}
.page-intro .label{
  font-weight:700;
  letter-spacing:.01em;
}
.page-intro .copy{max-width:none;min-width:0}
/* V1.87 — Biography intro uses the available editorial width so the opening sentence stays on one line when space allows. */
.biography-intro .copy{max-width:none}

/* V1.88 — One editorial measure across biography, art statements, and series statements. */
/* Generic editorial sections */
.bio-block{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  padding:var(--row-pad) 0 var(--section-gap);
  border-top:1px solid var(--line);
}
.bio-block h2{
  font-weight:700;
  letter-spacing:.01em;
}
.bio-block .content{max-width:var(--editorial-measure)}
.bio-block .content p{margin:0 0 1.35em}
.bio-block .content p:last-child{margin-bottom:0}
/* V1.79 — Biography narrative width: avoid short orphan endings. */
.bio-block.bio-narrative .content{max-width:var(--editorial-measure)}
.bio-block.bio-narrative .content p{text-wrap:pretty}
.award-detail-main,.award-detail-sub{display:block}
.award-detail-sub{margin-top:.15em}

.text-link{display:inline-block;border-bottom:1px solid currentColor}

/* Bibliography: same two-column editorial skeleton as the rest of the site. */
.bibliography-page .bio-block{
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  align-items:start;
}
.bibliography-page .bio-block>h2{
  grid-column:1;
  grid-row:1;
}
.bibliography-page .bio-block>.archive-count{
  grid-column:1;
  grid-row:1;
  margin-top:28px;
  color:var(--muted);
}
.bibliography-page .bio-block>.content{
  grid-column:2;
  grid-row:1;
  width:100%;
  max-width:none;
}

/* =========================================================
   04. INSTITUTIONAL / ARCHIVE ROWS
   ========================================================= */
.institutional-list,.exhibition-list,.archive{border-top:1px solid var(--line-strong)}
.institutional-row,
.exhibition-row,
.archive-row{
  min-width:0;
  border-bottom:1px solid var(--line);
}
.institutional-row{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1.25fr) minmax(0,1fr);
  gap:var(--grid-gap);
  padding:18px 0;
  align-items:start;
}
.institutional-title{line-height:1.35}
.institutional-year,.institutional-detail{color:var(--muted)}
.award-link{border-bottom:1px solid transparent}
.award-link:hover{border-bottom-color:currentColor}

/* Experience rows: whole row is the external link; geometry matches awards. */
.experience-row{color:inherit}
.experience-row .institutional-year{white-space:nowrap}
.experience-row .institutional-title{border-bottom:1px solid transparent;width:max-content;max-width:100%}
.experience-arrow{display:inline-block;margin-left:.24em;line-height:1}
.experience-row:hover .institutional-title,.experience-row:focus-visible .institutional-title{border-bottom-color:currentColor}

.exhibition-row{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1.35fr) minmax(0,1fr);
  gap:var(--grid-gap);
  padding:19px 0 20px;
  align-items:start;
}
.exhibition-title{line-height:1.35}
.exhibition-year,.exhibition-venue{color:var(--muted)}
.exhibition-row.year-start .exhibition-year{color:var(--ink);font-weight:700}
.exhibition-row.year-start{border-top:1px solid var(--line-strong)}
.exhibition-row.year-start:first-child{border-top:0}
/* V1.79 — Exhibition year hierarchy: one visible year per group. */
.exhibition-row.year-start:not(:first-child){border-top:1px solid var(--line-strong)}
.exhibition-row:has(+ .year-start){border-bottom:0}
.exhibition-row:not(.year-start) .exhibition-year:empty{min-height:1em}


.archive-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) 100px minmax(140px,.75fr);
  gap:28px;
  padding:18px 0;
  align-items:start;
}
.archive-row .year,.archive-row .where{color:var(--muted)}
.archive-row.year-start .year{color:var(--ink);font-weight:700}
.reference-row .name{line-height:1.35}
.archive-link .name{display:inline-block;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:.16em;text-decoration-thickness:1px}
.archive-link:hover .name,.archive-link:focus-visible .name{text-decoration-color:currentColor}

.archive-section{padding:0 0 var(--section-gap)}
.archive-section-head{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:24px;
  padding:0 0 18px;
}
.archive-section-head h2,.archive-section-head .archive-count{font-weight:700}

.institutional-year,.exhibition-year,.archive-row .year,.series-top>.year,.series-panel-title b,.home-series-index-v123 span,.home-series-index-v123 i,.nft-record-data{font-variant-numeric:tabular-nums}

/* =========================================================
   05. CONTACT
   ========================================================= */
.contact-v127{max-width:none;min-height:0}
.contact-kicker-v127{
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding:var(--row-pad) 0 var(--section-gap);
  border-top:1px solid var(--line);
  color:var(--muted);
}
.contact-kicker-v127 span:first-child{white-space:nowrap}
.contact-grid-v127{
  display:grid;
  grid-template-columns:minmax(0,1.45fr) minmax(240px,.7fr);
  gap:clamp(48px,9vw,150px);
  padding:var(--row-pad) 0 0;
  border-top:1px solid var(--line-strong);
}
.contact-grid-v127 p{max-width:62ch}
.contact-links-v127{display:grid;align-content:start}
.contact-links-v127 a{
  display:flex;
  justify-content:space-between;
  padding:14px 0;
  border-bottom:1px solid var(--line);
  font-weight:700;
}

/* =========================================================
   06. ARTWORK INDEX — same title geometry, calmer grids
   ========================================================= */
.artwork-hero-v123{
  padding:var(--page-top) var(--gutter) 0;
}
.artwork-hero-v123 .page-title{margin-bottom:var(--hero-gap)}
.artwork-hero-meta{
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding:var(--row-pad) 0 var(--section-gap);
  border-top:1px solid var(--line);
  color:var(--muted);
}

.featured-work-v127,
.series-jump-v123,
.series-panel-v123{
  margin-left:var(--gutter);
  margin-right:var(--gutter);
}
.featured-work-v127{padding:0 0 var(--section-gap)}
.featured-kicker-v127{
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding:var(--row-pad) 0;
  border-top:1px solid var(--line-strong);
  font-weight:700;
}
.featured-image-v127{display:block}
.featured-image-v127 picture,.featured-image-v127 img{width:100%}
.featured-meta-v127{
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(220px,.7fr) auto;
  gap:32px;
  align-items:start;
  padding:18px 0 0;
}
.featured-title-v127 h2{line-height:1.35}
.featured-title-v127 p,.featured-spec-v127{color:var(--muted)}
.featured-spec-v127{display:grid;gap:2px}
.featured-link-v127{font-weight:700;white-space:nowrap}

.series-jump-v123{
  display:flex;
  flex-wrap:nowrap;
  gap:0;
  overflow-x:auto;
  overscroll-behavior-inline:contain;
  scrollbar-width:none;
  border-top:1px solid var(--line-strong);
  border-bottom:1px solid var(--line-strong);
}
.series-jump-v123::-webkit-scrollbar{display:none}
.series-jump-v123 a{
  flex:0 0 auto;
  padding:14px 20px 14px 0;
  margin-right:20px;
  font-weight:700;
  white-space:nowrap;
}

.series-panel-v123{
  padding:var(--section-gap) 0;
  border-bottom:1px solid var(--line-strong);
}
.series-panel-title{
  display:grid;
  grid-template-columns:56px minmax(0,1fr) 160px 120px;
  gap:24px;
  align-items:start;
  margin-bottom:clamp(42px,4vw,68px);
}
.series-panel-title h2{line-height:1.2}
.series-panel-title>span,
.series-panel-title b,
.series-panel-title>a{font-weight:700}
.series-panel-title>div{display:grid;gap:3px;color:var(--muted)}
.series-panel-title>a{text-align:right}

.panel-gallery-v126{
  display:grid;
  gap:clamp(22px,2vw,34px);
  align-items:start;
}
.panel-gallery-sck,
.panel-gallery-complete-24,
.panel-gallery-night,
.panel-gallery-pixel,
.panel-gallery-nft{grid-template-columns:repeat(3,minmax(0,1fr))}
.panel-gallery-four-seasons{grid-template-columns:repeat(2,minmax(0,1fr))}
.panel-thumb-v126{display:block;min-width:0}
.panel-thumb-v126 picture,.panel-thumb-v126 img{width:100%}
.panel-thumb-v126>span{display:block;margin-top:10px;color:var(--muted)}

/* =========================================================
   07. HOME — editorial, but on the same grid
   ========================================================= */
.home-hero-v123,
.curatorial-wall,
.home-manifesto-v123,
.home-series-index-v123,
.home-exhibitions-v123{
  width:100%;
  max-width:var(--max);
  margin-left:auto;
  margin-right:auto;
  padding-left:var(--gutter);
  padding-right:var(--gutter);
}
.home-hero-v123{padding-top:var(--page-top);padding-bottom:var(--section-gap)}
.home-hero-heading h1{margin-bottom:var(--hero-gap);white-space:nowrap}
.home-hero-side{
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding:var(--row-pad) 0 var(--section-gap);
  border-top:1px solid var(--line);
  color:var(--muted);
}
.hero-work{display:block}
.hero-work picture,.hero-work img{width:100%}
.hero-work-cap{
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding-top:10px;
  color:var(--muted);
}

.curatorial-wall{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(74px,8vw,132px) clamp(24px,3vw,48px);
  padding-bottom:var(--section-gap);
}
.wall-kicker,.wall-view-all{grid-column:1/-1}
.wall-kicker{
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding:var(--row-pad) 0;
  border-top:1px solid var(--line-strong);
  font-weight:700;
}
.wall-piece{display:block;align-self:start}
.wall-piece figure,.wall-piece picture,.wall-piece img{width:100%}
.wall-piece figcaption{
  display:flex;
  justify-content:space-between;
  gap:20px;
  padding-top:10px;
  color:var(--muted);
}
.wall-view-all{
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding:14px 0;
  border-top:1px solid var(--line-strong);
  border-bottom:1px solid var(--line-strong);
  font-weight:700;
}

.home-manifesto-v123{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  padding-top:var(--row-pad);
  padding-bottom:var(--section-gap);
  border-top:1px solid var(--line);
}
.manifesto-label{font-weight:700}
.manifesto-copy{max-width:64ch}
.manifesto-copy p{margin-bottom:1.2em}
.manifesto-copy a{font-family:var(--font-sans);border-bottom:1px solid currentColor}

.series-index-head,
.home-series-index-v123>a,
.exhibitions-v123-head,
.home-exhibitions-v123>a,
.home-exhibitions-v123 .home-exhibition-row{
  display:grid;
  align-items:baseline;
  gap:24px;
}
.series-index-head{grid-template-columns:minmax(0,1fr) auto;padding:var(--row-pad) 0;border-top:1px solid var(--line-strong);font-weight:700}
.series-index-head>a,.exhibitions-v123-head>a{color:var(--muted);transition:color .16s ease}
.series-index-head>a:hover,.series-index-head>a:focus-visible,.exhibitions-v123-head>a:hover,.exhibitions-v123-head>a:focus-visible{color:var(--ink)}
.home-series-index-v123>a{
  grid-template-columns:minmax(0,1fr) 150px 60px;
  padding:17px 0;
  border-top:1px solid var(--line);
}
.home-series-index-v123>a:last-child{border-bottom:1px solid var(--line)}
.home-series-index-v123 span,.home-series-index-v123 i{color:var(--muted);font-style:normal}
.home-series-index-v123 i{text-align:right}
.inline-link-arrow{
  display:inline-block;
  margin-left:.24em;
  color:var(--muted);
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1;
  font-weight:400;
  transition:transform .16s ease,color .16s ease;
}

.home-exhibitions-v123{padding-top:var(--section-gap);padding-bottom:var(--section-gap)}
.exhibitions-v123-head{grid-template-columns:minmax(0,1fr) auto;padding:var(--row-pad) 0;border-top:1px solid var(--line-strong);font-weight:700}
.home-exhibitions-v123 .home-exhibition-row{
  grid-template-columns:minmax(0,1fr) 150px minmax(220px,.55fr);
  padding:17px 0;
  border-top:1px solid var(--line);
}
.home-exhibitions-v123 .home-exhibition-row:last-child{border-bottom:1px solid var(--line)}
.home-exhibitions-v123 .home-exhibition-row span,.home-exhibitions-v123 .home-exhibition-row em{color:var(--muted);font-style:normal}
.home-exhibitions-v123 .home-exhibition-row strong{min-width:0}
.home-exhibitions-v123 .home-exhibition-row em{text-align:left}
.home-series-index-v123>a strong{
  text-decoration:underline;
  text-decoration-color:transparent;
  text-underline-offset:.16em;
  text-decoration-thickness:1px;
}
.home-series-index-v123>a:hover strong,.home-series-index-v123>a:focus-visible strong{
  text-decoration-color:currentColor;
}
.home-series-index-v123>a:hover .inline-link-arrow,
.home-series-index-v123>a:focus-visible .inline-link-arrow,
.bibliography-page .statement-row:hover .inline-link-arrow,
.bibliography-page .statement-row:focus-visible .inline-link-arrow,
.bibliography-page .press-link:hover .inline-link-arrow,
.bibliography-page .press-link:focus-visible .inline-link-arrow,
.bibliography-page .talk-link:hover .inline-link-arrow,
.bibliography-page .talk-link:focus-visible .inline-link-arrow{
  color:var(--ink);
  transform:translate(3px,-1px);
}

/* =========================================================
   08. SERIES PAGES — title first, consistent metadata row
   ========================================================= */
.series-top{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  column-gap:30px;
  padding-bottom:var(--section-gap);
}
.series-top h1{
  grid-column:1/-1;
  grid-row:1;
  margin:0 0 var(--hero-gap);
}
.series-position-v127{
  grid-column:1;
  grid-row:2;
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding-top:var(--row-pad);
  border-top:1px solid var(--line);
  color:var(--muted);
}
.series-top>.year{
  grid-column:2;
  grid-row:2;
  min-width:240px;
  padding-top:var(--row-pad);
  border-top:1px solid var(--line);
  text-align:right;
  color:var(--muted);
}

.series-cover{
  width:100%;
  margin:0 0 var(--section-gap);
}
.series-cover picture,.series-cover img{width:100%}
.series-cover img{max-height:78vh;object-fit:contain;background:#fff}

.statement{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  padding:var(--row-pad) 0 var(--section-gap);
  border-top:1px solid var(--line);
}
.statement h2{font-weight:700}
.statement .text{max-width:var(--editorial-measure)}
.statement .text p{margin:0 0 1.35em}
.statement .text p:last-child{margin-bottom:0}

.works{
  padding:var(--row-pad) 0 var(--section-gap);
  border-top:1px solid var(--line-strong);
}
.works-title{margin-bottom:clamp(36px,4vw,62px);font-weight:700}
.work-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(72px,7vw,110px) clamp(24px,3vw,46px);
}
.work-grid.portrait-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.work-card{min-width:0}
.work-card .media,.artwork-zoom,.artwork-zoom picture,.artwork-zoom img{width:100%}
.artwork-zoom{
  position:relative;
  display:block;
  padding:0;
  border:0;
  background:#fff;
  cursor:zoom-in;
}
.spec{padding-top:13px}
.artist-meta{font-weight:700;letter-spacing:.02em}
.artwork-title-meta{line-height:1.35;margin:2px 0}
.medium-year,.dimension-line,.edition-line{color:var(--muted)}
.medium-year{margin-bottom:12px}
.size-variant{margin-top:10px}

.zoom-hint{
  position:absolute;
  right:10px;
  bottom:10px;
  padding:5px 8px;
  background:rgba(255,255,255,.94);
  opacity:0;
}
.artwork-zoom:hover .zoom-hint,
.artwork-zoom:focus-visible .zoom-hint,
.nft-record-image:hover .zoom-hint,
.pixel-record-image-v124:hover .zoom-hint{opacity:1}

.series-switch-v127{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  border-top:1px solid var(--line-strong);
  border-bottom:1px solid var(--line-strong);
}
.series-switch-v127>a{padding:20px 0 22px;min-width:0}
.series-next-v127{text-align:right;border-left:1px solid var(--line)}
.series-prev-v127{padding-right:30px}
.series-next-v127{padding-left:30px}
.series-switch-v127 span,.series-switch-v127 em{display:block;color:var(--muted);font-style:normal}
.series-switch-v127 strong{display:block;line-height:1.3;margin:4px 0}

/* Pixel archive */
.pixel-intro-v124{padding-bottom:24px;color:var(--muted)}
.pixel-archive{border-top:1px solid var(--line-strong)}
.pixel-record{
  display:grid;
  grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);
  gap:clamp(42px,6vw,96px);
  padding:28px 0;
  border-bottom:1px solid var(--line);
  align-items:start;
}
.pixel-record-image-v124{position:relative;display:block}
.pixel-record-image-v124 picture,.pixel-record-image-v124 img{width:100%}
.pixel-record-sizes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:18px}
.pixel-record-title{line-height:1.35}

/* NFT archive */
.nft-series-facts{border-top:1px solid var(--line-strong)}
.nft-series-facts>div{
  display:grid;
  grid-template-columns:170px minmax(0,1fr);
  gap:24px;
  padding:14px 0;
  border-bottom:1px solid var(--line);
}
.nft-series-facts span{color:var(--muted)}
.nft-series-facts strong{font-weight:400}
.nft-tools{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(240px,360px);
  gap:32px;
  align-items:end;
  padding:0 0 16px;
}
.nft-range-nav{display:flex;flex-wrap:wrap;gap:18px}
.nft-range-nav a{font-weight:700}
.nft-search{display:grid;grid-template-columns:minmax(0,1fr) auto;border-bottom:1px solid var(--line-strong)}
.nft-search input{width:100%;border:0;background:transparent;padding:9px 0;outline:0}
.nft-search span{padding:9px 0;font-weight:700}
.nft-result-count{padding:0 0 18px;color:var(--muted)}
.nft-archive{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(56px,5vw,86px) clamp(22px,2.4vw,38px);
}
.nft-record{min-width:0;content-visibility:auto;contain-intrinsic-size:auto 760px}
.nft-record[hidden]{display:none}
.nft-record-image{position:relative;display:block}
.nft-record-image picture,.nft-record-image img{width:100%}
.nft-record-head{padding-top:12px}
.nft-record-data{margin-top:14px;color:var(--muted)}
.nft-attrs{margin-top:12px;border-top:1px solid var(--line)}
.nft-attr{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px solid var(--line)}
.nft-attr strong{font-weight:400;color:var(--ink);text-align:right}
.nft-jump{display:inline-block;margin-top:16px;font-weight:700}

/* =========================================================
   09. FOOTER
   ========================================================= */
.footer{
  width:100%;
  max-width:var(--max);
  margin:0 auto;
  display:flex;
  justify-content:space-between;
  gap:32px;
  padding:24px var(--gutter) 28px;
  border-top:1px solid var(--line);
  color:var(--muted);
}
.footnav{display:flex;gap:18px;flex-wrap:wrap;justify-content:flex-end}
.footnav a:hover,.footnav a:focus-visible{color:var(--ink)}

/* =========================================================
   10. LIGHTBOX / UTILITIES
   ========================================================= */
.lightbox{
  position:fixed;
  inset:0;
  z-index:1000;
  display:none;
  background:rgba(255,255,255,.99);
}
.lightbox.open{display:grid;grid-template-rows:var(--header-h) minmax(0,1fr) 72px}
.lightbox-top,.lightbox-bottom{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:0 var(--gutter);
}
.lightbox-top{border-bottom:1px solid var(--line)}
.lightbox-bottom{border-top:1px solid var(--line)}
.lightbox-stage{min-height:0;display:flex;align-items:center;justify-content:center;padding:20px var(--gutter)}
.lightbox-stage img{max-width:100%;max-height:100%;object-fit:contain}
.lightbox-close,.lightbox-nav{border:0;background:transparent;padding:10px}
.lightbox-arrows{display:flex;gap:10px}
.lightbox-caption{max-width:70ch}

.back-to-top{
  position:fixed;
  right:var(--gutter);
  bottom:24px;
  z-index:90;
  width:40px;
  height:40px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.96);
  opacity:0;
  pointer-events:none;
}
.back-to-top.visible{opacity:1;pointer-events:auto}

/* No decorative motion: works stay still. */
.reveal-item{opacity:1;transform:none}
.hero-work img,.wall-piece img,.featured-image-v127 img,.panel-thumb-v126 img{transform:none}


/* V1.99 — Artist portrait on biography page. */
.biography-intro .artist-portrait{
  grid-column:2;
  width:min(520px,100%);
  margin:clamp(28px,4vw,56px) 0 0;
}
.biography-intro .artist-portrait img{
  display:block;
  width:100%;
  height:auto;
}

/* =========================================================
   11. RESPONSIVE
   ========================================================= */
@media(max-width:980px){
  .page-intro,.bio-block,.home-manifesto-v123,.statement{grid-template-columns:1fr;gap:20px}
  .biography-intro .artist-portrait{grid-column:1;width:min(520px,100%)}
  .bibliography-page .bio-block{grid-template-columns:1fr;gap:8px}
  .bibliography-page .bio-block>h2,
  .bibliography-page .bio-block>.archive-count,
  .bibliography-page .bio-block>.content{grid-column:1;grid-row:auto}
  .bibliography-page .bio-block>.archive-count{margin-top:-2px;color:var(--muted)}
  .bibliography-page .bio-block>.content{margin-top:10px}
  .institutional-row,.exhibition-row{grid-template-columns:90px minmax(0,1fr)}
  .institutional-detail,.exhibition-venue{grid-column:2}
  .archive-row{grid-template-columns:minmax(0,1fr) 90px}
  .archive-row .where{grid-column:1/-1}
  .contact-grid-v127{grid-template-columns:1fr;gap:48px}
  .featured-meta-v127{grid-template-columns:minmax(0,1fr) minmax(220px,.8fr)}
  .featured-link-v127{grid-column:1/-1}
  .series-panel-title{grid-template-columns:48px minmax(0,1fr) 130px}
  .series-panel-title>a{grid-column:2/-1;text-align:left}
  .panel-gallery-sck,.panel-gallery-complete-24,.panel-gallery-night,.panel-gallery-pixel,.panel-gallery-nft{grid-template-columns:repeat(2,minmax(0,1fr))}
  .work-grid.portrait-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nft-archive{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(max-width:720px){
  :root{
    --gutter:20px;
    --header-h:58px;
    --page-top:48px;
    --hero-gap:48px;
    --section-gap:72px;
    --type-display:clamp(31px,9.7vw,72px);
    --type-reading:19px;
    --type-ui:14px;
  }
  .site-header{position:sticky}
  .menu{display:block}
  .nav{
    position:fixed;
    left:0;
    right:0;
    top:var(--header-h);
    bottom:0;
    display:none;
    flex-direction:column;
    align-items:stretch;
    gap:0;
    padding:20px var(--gutter) 40px;
    background:#fff;
    border-top:1px solid var(--line);
  }
  .nav.open{display:flex}
  .nav a{
    font-family:var(--font-serif);
    font-size:var(--type-reading);
    line-height:1.2;
    font-weight:400;
    letter-spacing:0;
    padding:14px 0;
    border-bottom:1px solid var(--line);
  }
  .nav a.active{border-bottom:1px solid var(--ink)}

  .page-title,.series-top h1,.home-hero-heading h1,.contact h1{line-height:.9;letter-spacing:-.045em}
  .series-top h1{white-space:normal;text-wrap:balance}
  .page{padding-bottom:104px}
  .page-intro{padding-bottom:var(--section-gap)}

  .institutional-row,.exhibition-row,.archive-row{grid-template-columns:1fr;gap:4px;padding:16px 0}
  .institutional-detail,.exhibition-venue,.archive-row .where{grid-column:auto}
  .institutional-year,.exhibition-year,.archive-row .year{order:-1}

  .contact-kicker-v127{padding-bottom:var(--section-gap)}
  .contact-grid-v127{gap:40px}

  .artwork-hero-meta,.home-hero-side,.hero-work-cap{flex-direction:column;gap:5px}
  .featured-meta-v127{grid-template-columns:1fr;gap:14px}
  .series-jump-v123{display:flex;overflow-x:auto}
  .series-jump-v123 a{margin-right:18px;padding:12px 0;border-bottom:0}
  .series-panel-title{grid-template-columns:36px minmax(0,1fr);gap:12px}
  .series-panel-title>div,.series-panel-title>a{grid-column:2;text-align:left}
  .panel-gallery-four-seasons,
  .panel-gallery-sck,.panel-gallery-complete-24,.panel-gallery-night,.panel-gallery-pixel,.panel-gallery-nft{grid-template-columns:1fr}

  .curatorial-wall{grid-template-columns:1fr;gap:72px}
  .wall-kicker,.wall-view-all{grid-column:auto}
  .home-series-index-v123>a{grid-template-columns:minmax(0,1fr) auto}
  .home-series-index-v123 i{display:none}
  .series-index-head{grid-template-columns:minmax(0,1fr) auto}
  .home-exhibitions-v123 .home-exhibition-row{grid-template-columns:minmax(0,1fr) auto;gap:5px 18px}
  .home-exhibitions-v123 .home-exhibition-row strong{grid-column:1;grid-row:1}
  .home-exhibitions-v123 .home-exhibition-row span{grid-column:2;grid-row:1;text-align:right}
  .home-exhibitions-v123 .home-exhibition-row em{grid-column:1/-1;grid-row:2}

  .series-top{grid-template-columns:1fr}
  .series-position-v127,.series-top>.year{grid-column:1;min-width:0;text-align:left}
  .series-position-v127{grid-row:2}
  .series-top>.year{grid-row:3;border-top:0;padding-top:5px}
  .series-cover img{max-height:none}
  .work-grid,.work-grid.portrait-grid{grid-template-columns:1fr;gap:72px}
  .series-switch-v127{grid-template-columns:1fr}
  .series-next-v127{border-left:0;border-top:1px solid var(--line);text-align:left}
  .series-prev-v127,.series-next-v127{padding-left:0;padding-right:0}

  .pixel-record{grid-template-columns:1fr;gap:24px}
  .pixel-record-sizes{grid-template-columns:1fr;gap:12px}
  .nft-tools{grid-template-columns:1fr;gap:18px}
  .nft-series-facts>div{grid-template-columns:1fr;gap:3px}
  .nft-archive{grid-template-columns:1fr;gap:72px}

  .footer{flex-direction:column;gap:16px}
  .footnav{justify-content:flex-start}
  .lightbox-bottom{align-items:flex-start;padding-top:12px;padding-bottom:12px;height:auto}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms;
    animation-iteration-count:1;
    transition-duration:.01ms;
  }
}

/* =========================================================
   12. BIBLIOGRAPHY ARCHIVE — one canonical responsive system
   ========================================================= */
.bibliography-page .archive{width:100%;max-width:none}
.bibliography-page .statement-row,
.bibliography-page .press-row,
.bibliography-page .talk-row{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  align-items:baseline;
  padding:18px 0;
}
.bibliography-page .statement-row .year,
.bibliography-page .press-row .press-date,
.bibliography-page .talk-row .talk-date{
  grid-column:1;
  color:var(--muted);
  white-space:nowrap;
  text-align:left;
  font-variant-numeric:tabular-nums;
}
.bibliography-page .statement-row .name,
.bibliography-page .press-row .name,
.bibliography-page .talk-row .name{
  grid-column:2;
  min-width:0;
  overflow-wrap:break-word;
}
.bibliography-page .statement-row .name,
.bibliography-page .press-link .name,
.bibliography-page .talk-link .name{
  width:max-content;
  max-width:100%;
  text-decoration:underline;
  text-decoration-color:transparent;
  text-underline-offset:.16em;
  text-decoration-thickness:1px;
}
.bibliography-page .statement-row:hover .name,
.bibliography-page .statement-row:focus-visible .name,
.bibliography-page .press-link:hover .name,
.bibliography-page .press-link:focus-visible .name,
.bibliography-page .talk-link:hover .name,
.bibliography-page .talk-link:focus-visible .name{
  text-decoration-color:currentColor;
}
.bibliography-page .press-row.year-start,
.bibliography-page .talk-row.year-start{border-top:1px solid var(--line-strong)}
.bibliography-page .press-row.year-start:first-child,
.bibliography-page .talk-row.year-start:first-child{border-top:0}

.bibliography-page .press-row{
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
}
.bibliography-page .press-row .press-date{grid-column:1}
.bibliography-page .press-row .name{grid-column:2}
.bibliography-page .press-source-inline{color:inherit}

@media(max-width:720px){
  .bibliography-page .statement-row,
  .bibliography-page .press-row,
  .bibliography-page .talk-row{
    grid-template-columns:92px minmax(0,1fr);
    gap:12px;
    padding:16px 0;
    align-items:baseline;
  }
  .bibliography-page .statement-row .year,
  .bibliography-page .press-row .press-date,
  .bibliography-page .talk-row .talk-date{
    grid-column:1;
    grid-row:1;
  }
  .bibliography-page .statement-row .name,
  .bibliography-page .press-row .name,
  .bibliography-page .talk-row .name{
    grid-column:2;
    grid-row:1;
  }
}


/* =========================================================
   13. UNIFIED LINK LANGUAGE — one affordance across the site
   Content links use the same quiet underline + ↗ cue.
   Structural navigation (header, breadcrumbs, in-page jump nav)
   keeps its own navigation grammar.
   ========================================================= */
:where(
  .text-link,
  .manifesto-copy a,
  .featured-link-v127,
  .series-panel-title>a,
  .series-index-head>a,
  .exhibitions-v123-head>a,
  .contact-links-v127 a,
  .award-link
){
  text-decoration-line:underline;
  text-decoration-color:transparent;
  text-decoration-thickness:1px;
  text-underline-offset:.16em;
  transition:text-decoration-color .16s ease,color .16s ease;
}
:where(
  .text-link,
  .manifesto-copy a,
  .featured-link-v127,
  .series-panel-title>a,
  .series-index-head>a,
  .exhibitions-v123-head>a,
  .contact-links-v127 a,
  .award-link
):hover,
:where(
  .text-link,
  .manifesto-copy a,
  .featured-link-v127,
  .series-panel-title>a,
  .series-index-head>a,
  .exhibitions-v123-head>a,
  .contact-links-v127 a,
  .award-link
):focus-visible{
  text-decoration-color:currentColor;
}

/* Clickable image cards carry the same visible ↗ cue in captions. */
.panel-thumb-v126>span,
.wall-piece figcaption{
  text-decoration-line:underline;
  text-decoration-color:transparent;
  text-decoration-thickness:1px;
  text-underline-offset:.16em;
  transition:text-decoration-color .16s ease,color .16s ease;
}
.panel-thumb-v126>span::after{
  content:" ↗";
  display:inline-block;
  margin-left:.18em;
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1;
  color:var(--muted);
  transition:transform .16s ease,color .16s ease;
}
.wall-piece figcaption::after{
  content:"↗";
  flex:0 0 auto;
  margin-left:auto;
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1;
  color:var(--muted);
  transition:transform .16s ease,color .16s ease;
}
.panel-thumb-v126:hover>span,
.panel-thumb-v126:focus-visible>span,
.wall-piece:hover figcaption,
.wall-piece:focus-visible figcaption{
  text-decoration-color:currentColor;
  color:var(--ink);
}
.panel-thumb-v126:hover>span::after,
.panel-thumb-v126:focus-visible>span::after,
.wall-piece:hover figcaption::after,
.wall-piece:focus-visible figcaption::after{
  color:var(--ink);
  transform:translate(3px,-1px);
}

/* Row-style links: same underline behavior and same arrow motion. */
:where(
  .home-series-index-v123>a strong,
  .experience-row .institutional-title,
  .bibliography-page .statement-row .name,
  .bibliography-page .press-link .name,
  .bibliography-page .talk-link .name
){
  text-decoration-line:underline;
  text-decoration-color:transparent;
  text-decoration-thickness:1px;
  text-underline-offset:.16em;
  transition:text-decoration-color .16s ease,color .16s ease;
}
:where(
  .home-series-index-v123>a,
  .experience-row,
  .bibliography-page .statement-row,
  .bibliography-page .press-link,
  .bibliography-page .talk-link
):hover :where(strong,.institutional-title,.name),
:where(
  .home-series-index-v123>a,
  .experience-row,
  .bibliography-page .statement-row,
  .bibliography-page .press-link,
  .bibliography-page .talk-link
):focus-visible :where(strong,.institutional-title,.name){
  text-decoration-color:currentColor;
}

:where(
  .experience-arrow,
  .award-arrow
){
  display:inline-block;
  transition:transform .16s ease,color .16s ease;
}
:where(
  .experience-row,
  .award-link
):hover :where(.experience-arrow,.award-arrow),
:where(
  .experience-row,
  .award-link
):focus-visible :where(.experience-arrow,.award-arrow){
  color:var(--ink);
  transform:translate(3px,-1px);
}

/* Previous / next series are links too; signal that without adding a button. */
.series-switch-v127>a span::after{
  content:" ↗";
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1;
  color:var(--muted);
}
.series-switch-v127>a strong{
  text-decoration-line:underline;
  text-decoration-color:transparent;
  text-decoration-thickness:1px;
  text-underline-offset:.16em;
  transition:text-decoration-color .16s ease;
}
.series-switch-v127>a:hover strong,
.series-switch-v127>a:focus-visible strong{ text-decoration-color:currentColor; }

/* Keep focus visible and consistent for keyboard users. */
main a:focus-visible,
.footer a:focus-visible{
  outline:1px solid currentColor;
  outline-offset:4px;
}


/* =========================================================
   V2.00 — Homepage full artist biography
   The homepage closes with the artist portrait and complete biography.
   ========================================================= */
.home-about-full{
  margin-top:0;
  padding-top:var(--row-pad);
  padding-bottom:var(--section-gap);
  border-top:1px solid var(--line-strong);
}
.home-about-body{
  min-width:0;
  display:grid;
  grid-template-columns:minmax(220px,300px) minmax(0,1fr);
  gap:clamp(36px,5vw,80px);
  align-items:start;
}
.home-artist-portrait{
  width:100%;
  max-width:300px;
  margin:0;
}
.home-artist-portrait img{
  display:block;
  width:100%;
  height:auto;
}
.home-about-copy{
  max-width:var(--editorial-measure);
}
.home-about-copy p{
  margin:0 0 1.35em;
  text-wrap:pretty;
}
.home-about-copy p:last-child{margin-bottom:0}

@media(max-width:980px){
  .home-about-full{grid-template-columns:1fr;gap:20px}
  .home-about-body{grid-template-columns:minmax(180px,280px) minmax(0,1fr);gap:32px}
}
@media(max-width:720px){
  .home-about-body{grid-template-columns:1fr;gap:28px}
  .home-artist-portrait{max-width:260px}
}


/* =========================================================
   V2.04 — Homepage sticky identity through artist introduction
   The display wordmark stays fixed through the work sequence and
   remains pinned while the artist introduction is visible, releasing at the footer.
   ========================================================= */
.home-pre-about{
  position:relative;
  padding-top:var(--page-top);
}
.home-sticky-name{
  position:sticky;
  top:var(--header-h);
  z-index:72;
  width:100%;
  max-width:var(--max);
  margin:0 auto;
  padding:0 var(--gutter);
  background:var(--paper);
}
.home-sticky-name h1{
  margin:0;
  padding:0 0 18px;
  font-family:var(--font-sans);
  font-size:var(--type-display);
  line-height:.86;
  letter-spacing:-.055em;
  font-weight:700;
  white-space:nowrap;
}
.home-pre-about .home-hero-v123{
  padding-top:0;
}
.home-pre-about .home-hero-heading{
  padding-top:var(--hero-gap);
}

.home-about-body{
  grid-template-columns:minmax(320px,460px) minmax(0,1fr);
  gap:clamp(40px,5.5vw,92px);
}
.home-artist-portrait{
  max-width:460px;
}

@media(max-width:980px){
  .home-about-body{grid-template-columns:minmax(240px,360px) minmax(0,1fr);gap:36px}
  .home-artist-portrait{max-width:360px}
}
@media(max-width:720px){
  .home-sticky-name{top:var(--header-h)}
  .home-sticky-name h1{
    line-height:.9;
    letter-spacing:-.045em;
    padding-bottom:14px;
  }
  .home-about-body{grid-template-columns:1fr;gap:32px}
  .home-artist-portrait{width:min(100%,360px);max-width:360px}
}


/* =========================================================
   V2.04 — semantic, anchor and responsive-media refinements
   ========================================================= */
:where(main section[id],main article[id],.statement[id]){
  scroll-margin-top:calc(var(--header-h) + 24px);
}
.home-artist-portrait picture,
.artist-portrait picture{
  display:block;
  width:100%;
}
.home-artist-portrait picture img,
.artist-portrait picture img{
  width:100%;
  height:auto;
}


/* =========================================================
   V2.05 — AI citation architecture
   Visible first-party facts, concise answer leads and query fan-out.
   ========================================================= */
.answer-block{
  border-top:1px solid var(--line);
}
.series-facts{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  padding:var(--row-pad) 0 var(--section-gap);
}
.series-facts>h2,
.contact-answers>h2{
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1.5;
  font-weight:700;
  letter-spacing:.01em;
}
.fact-list{margin:0;max-width:var(--editorial-measure)}
.fact-row{
  display:grid;
  grid-template-columns:minmax(110px,150px) minmax(0,1fr);
  gap:24px;
  padding:12px 0;
  border-top:1px solid var(--line);
}
.fact-row:first-child{border-top:0;padding-top:0}
.fact-row dt{
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1.6;
  font-weight:700;
  color:var(--muted);
}
.fact-row dd{
  margin:0;
  font-family:var(--font-serif);
  font-size:var(--type-reading);
  line-height:1.62;
}
.answer-lead{
  padding-bottom:1.35em;
  margin-bottom:1.35em !important;
  border-bottom:1px solid var(--line);
}
.related-topics{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  padding:0 0 var(--section-gap);
}
.related-topics-label{
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1.5;
  font-weight:700;
}
.related-topics-links{
  display:flex;
  flex-wrap:wrap;
  gap:10px 22px;
  max-width:var(--editorial-measure);
}
.context-link{
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  line-height:1.5;
  text-decoration-line:underline;
  text-decoration-color:transparent;
  text-underline-offset:.16em;
  transition:text-decoration-color .16s ease;
}
.context-link:hover,.context-link:focus-visible{text-decoration-color:currentColor}
.qa-list{max-width:var(--editorial-measure)}
.qa-item{
  padding:18px 0;
  border-top:1px solid var(--line);
}
.qa-item:first-child{padding-top:0;border-top:0}
.qa-item h3{
  margin:0 0 6px;
  font-family:var(--font-serif);
  font-size:var(--type-reading);
  line-height:1.62;
  font-weight:400;
}
.qa-item p{
  margin:0;
  font-family:var(--font-serif);
  font-size:var(--type-reading);
  line-height:1.62;
}
@media(max-width:720px){
  .series-facts,.related-topics{grid-template-columns:1fr;gap:18px}
  .fact-row{grid-template-columns:90px minmax(0,1fr);gap:16px}
}


/* V2.06 — authorship and linked fact integrity */
.article-author,
.inline-fact-link{
  text-decoration-line:underline;
  text-decoration-color:transparent;
  text-decoration-thickness:1px;
  text-underline-offset:.16em;
  transition:text-decoration-color .18s ease;
}
.article-author:hover,.article-author:focus-visible,
.inline-fact-link:hover,.inline-fact-link:focus-visible{
  text-decoration-color:currentColor;
}


/* =========================================================
   V2.08 — one canonical x-axis grid
   x0 = page gutter; x1 = gutter + 110px + 28px.
   Editorial intros, section copy and archive titles share x1.
   ========================================================= */
.artist-facts-content{max-width:none !important;width:100%;min-width:0}
.artist-facts-content .fact-list{max-width:none;width:100%;min-width:0}
.artist-facts-content .fact-row{grid-template-columns:96px minmax(0,1fr);gap:20px}
.artist-facts-content .fact-row dd{min-width:0;overflow-wrap:anywhere}

.single-line-block .content{max-width:none}
.single-line-desktop{white-space:nowrap;max-width:none}

.exhibitions-page .page-intro{grid-template-columns:var(--grid-meta) minmax(0,1fr);column-gap:var(--grid-gap)}

.contact-grid-v127{
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
}
.contact-grid-v127>p,
.contact-grid-v127>.contact-links-v127{grid-column:2}
.contact-grid-v127>p{max-width:none}
.contact-links-v127{width:min(100%,620px)}

@media(max-width:980px){
  .single-line-desktop{white-space:normal}
  .contact-grid-v127{grid-template-columns:1fr;gap:48px}
  .contact-grid-v127>p,
  .contact-grid-v127>.contact-links-v127{grid-column:1}
}
@media(max-width:720px){
  :root{--grid-meta:92px;--grid-gap:12px}
  .artist-facts-content .fact-row{grid-template-columns:82px minmax(0,1fr);gap:12px}
  .contact-grid-v127>p,
  .contact-grid-v127>.contact-links-v127{grid-column:1}
}

/* =========================================================
   V2.09 — BLACK ARCHIVE SYSTEM
   White pages = works / exhibitions. Dark pages = artist / archive / contact.
   Geometry, type sizes, and x-axis grid remain identical to V2.08.
   ========================================================= */
.archive-dark-root{
  --ink:#f2f2f0;
  --muted:#a7a7a2;
  --line:#2b2b2b;
  --line-strong:#555551;
  --paper:#080808;
  background:var(--paper);
  color-scheme:dark;
}
.archive-dark-root body{
  background:var(--paper);
  color:var(--ink);
}
.archive-dark-root .site-header{
  background:var(--paper);
  border-bottom-color:var(--line);
}
.archive-dark-root .footer{
  color:var(--muted);
  border-top-color:var(--line);
}
.archive-dark-root .footnav a:hover,
.archive-dark-root .footnav a:focus-visible{color:var(--ink)}
.archive-dark-root .back-to-top{
  color:var(--ink);
  background:rgba(8,8,8,.96);
  border-color:var(--line);
}
.archive-dark-root ::selection{
  background:#efefeb;
  color:#080808;
}
.archive-dark-root .skip-link{
  background:#f2f2f0;
  color:#080808;
}

@media(max-width:720px){
  .archive-dark-root .nav{
    background:var(--paper);
    border-top-color:var(--line);
  }
}


/* =========================================================
   V2.10 — DARK ARCHIVE LAYOUT FIX
   Keep the canonical two-column x-axis while preventing nested
   biography data from collapsing into the meta column.
   ========================================================= */
.biography-page #artist-facts{
  width:100%;
}
.biography-page #artist-facts .artist-facts-content{
  min-width:0;
}
.biography-page #artist-facts .fact-row dd{
  min-width:0;
  overflow-wrap:break-word;
  word-break:normal;
}
.biography-page #artist-facts .inline-fact-link{
  overflow-wrap:normal;
  word-break:normal;
}

/* Contact remains on the same canonical x1 axis as all editorial copy. */
.contact-page .contact-grid-v127>p,
.contact-page .contact-grid-v127>.contact-links-v127,
.contact-page .contact-answers>.content{
  min-width:0;
}

/* Contact link rules follow the same editorial measure as the Q&A below. */
.contact-page .contact-links-v127{
  width:100%;
  max-width:var(--editorial-measure);
}

/* =========================================================
   V2.12 — UNIFIED RHYTHM / RULE / INLINE SYSTEM
   One x-axis, one separator language, one arrow rhythm.
   Long-form essays keep the 78ch reading measure; concise data,
   introductions and answers use the full content column so they
   stay on one line whenever the viewport genuinely allows it.
   ========================================================= */

/* One separator language everywhere: 1px, one theme-aware colour. */
:root{
  --line-strong:var(--line);
  --rule-width:1px;
  --arrow-gap:.24em;
}

/* Short / index / data content should not wrap merely because of an
   arbitrary editorial max-width. Long-form narrative remains 78ch. */
:where(
  .page-intro .copy,
  .single-line-block .content,
  .artist-facts-content,
  .artist-facts-content .fact-list,
  .series-facts .fact-list,
  .related-topics-links,
  .contact-grid-v127>p,
  .contact-grid-v127>.contact-links-v127,
  .contact-answers>.content,
  .contact-answers .qa-list,
  .archive-section,
  .institutional-list,
  .exhibition-list,
  .bibliography-page .archive
){
  width:100%;
  max-width:none;
  min-width:0;
}

/* Contact uses exactly the same x1 content axis and the same full rule width
   as the Q&A section below. The section boundary owns the final rule, so
   two rules can never stack on the same y-coordinate. */
.contact-page .contact-links-v127{width:100%;max-width:none}
.contact-page .contact-links-v127 a:last-child{border-bottom:0}
.contact-page .contact-answers{border-top:1px solid var(--line)}
.contact-page .qa-list{width:100%;max-width:none}

/* Keep concise contact answers on one line on desktop when they fit.
   Below 1100px they return to natural wrapping rather than overflow. */
@media(min-width:1101px){
  .contact-page .qa-item h3,
  .contact-page .qa-item p{
    white-space:nowrap;
  }
}

/* One row-rule grammar: containers own their top rule, rows own their
   bottom rule; special year starts do not become visually heavier. */
:where(.institutional-list,.exhibition-list,.archive){
  border-top:1px solid var(--line);
}
:where(.institutional-row,.exhibition-row,.archive-row){
  border-bottom:1px solid var(--line);
}
:where(
  .exhibition-row.year-start,
  .bibliography-page .press-row.year-start,
  .bibliography-page .talk-row.year-start
){
  border-top:1px solid var(--line);
}

/* Major editorial sections all use the same rule treatment. */
:where(
  .page-intro,
  .bio-block,
  .contact-kicker-v127,
  .contact-grid-v127,
  .answer-block,
  .statement,
  .series-facts,
  .featured-kicker-v127,
  .series-jump-v123,
  .home-about-full,
  .series-index-head,
  .exhibitions-v123-head
){
  border-color:var(--line);
}

/* One arrow grammar: same optical gap, baseline and motion. */
:where(.inline-link-arrow,.experience-arrow,.award-arrow){
  display:inline-block;
  margin-left:var(--arrow-gap);
  line-height:1;
  vertical-align:baseline;
  white-space:nowrap;
}

/* Link labels and compact metadata stay intact whenever space allows. */
:where(
  .experience-row .institutional-year,
  .bibliography-page .statement-row .year,
  .bibliography-page .press-row .press-date,
  .bibliography-page .talk-row .talk-date,
  .featured-link-v127,
  .series-position-v127,
  .contact-kicker-v127 span,
  .contact-links-v127 a
){
  white-space:nowrap;
}

/* Desktop short-form copy: one line if the content column can contain it.
   Narrative paragraphs deliberately remain normal multi-line reading text. */
@media(min-width:1101px){
  :where(
    .page-intro .copy.single-line-desktop,
    .single-line-block .single-line-desktop,
    .contact-summary.single-line-desktop
  ){
    white-space:nowrap;
  }
}

@media(max-width:1100px){
  :where(
    .single-line-desktop,
    .contact-page .qa-item h3,
    .contact-page .qa-item p
  ){
    white-space:normal;
  }
}


/* =========================================================
   V2.15 — COLLECT CONVERSION / DATA INTEGRITY
   Quiet viewing-room language; Email is the primary formal route.
   ========================================================= */
.collect-link,
.collect-primary-link,
.collect-action,
.collect-utilities button,
.collect-social a,
.collect-back{
  font-family:var(--font-sans);
  font-size:var(--type-ui);
}
.collect-link{
  display:inline-block;
  margin-top:18px;
  padding-bottom:2px;
  border-bottom:1px solid transparent;
  font-weight:700;
  white-space:nowrap;
}
.collect-link:hover,.collect-link:focus-visible{border-bottom-color:currentColor}
.pixel-record-meta-v124>.collect-link{margin-top:28px}
.collect-app{margin-top:var(--section-gap);border-top:1px solid var(--line)}
.collect-empty{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  padding:var(--row-pad) 0 var(--section-gap);
}
.collect-empty p{grid-column:2;font-family:var(--font-serif);font-size:var(--type-reading);line-height:1.62}
.collect-empty .collect-primary-link{grid-column:2;margin-top:10px}
.collect-layout{
  display:grid;
  grid-template-columns:minmax(0,1.3fr) minmax(340px,.7fr);
  gap:clamp(48px,7vw,112px);
  padding:clamp(32px,4vw,58px) 0 var(--section-gap);
  align-items:start;
}
.collect-visual{min-width:0;margin:0}
.collect-visual img{display:block;width:100%;height:auto}
.collect-panel{min-width:0}
.collect-work-head{padding:0 0 28px;border-bottom:1px solid var(--line)}
.collect-work-title{font-family:var(--font-serif);font-size:var(--type-reading);line-height:1.35;font-weight:400}
.collect-work-meta{margin-top:5px;color:var(--muted)}
.collect-availability{margin-top:18px;color:var(--muted);font-size:var(--type-ui)}
.collect-source-link{display:inline-block;margin-top:11px;border-bottom:1px solid transparent}
.collect-source-link:hover,.collect-source-link:focus-visible{border-bottom-color:currentColor}
.collect-choice{border:0;margin:0;padding:27px 0 0;min-width:0}
.collect-choice legend{padding:0;margin:0 0 12px;font-weight:400}
.collect-variants{display:grid;gap:0}
.collect-variant{
  position:relative;
  display:grid;
  grid-template-columns:22px minmax(0,1fr);
  gap:12px;
  padding:13px 0;
  border-bottom:1px solid var(--line);
  cursor:pointer;
}
.collect-variant:first-child{border-top:1px solid var(--line)}
.collect-variant input{width:14px;height:14px;margin:3px 0 0;accent-color:var(--ink)}
.collect-variant:has(input:focus-visible){outline:1px solid currentColor;outline-offset:3px}
.collect-variant:has(input:disabled){opacity:.42;cursor:not-allowed}
.collect-variant-copy{display:grid;gap:2px}
.collect-variant-copy span:not(:first-child){color:var(--muted)}
.collect-final{padding-top:30px}
.collect-final-label{margin-bottom:12px}
.collect-action{
  width:100%;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:18px;
  padding:14px 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:transparent;
  text-align:left;
  font-weight:700;
}
.collect-action:hover span:first-child,.collect-action:focus-visible span:first-child{text-decoration:underline;text-underline-offset:3px}
.collect-email-address{margin-top:9px;color:var(--muted);font-size:var(--type-ui)}
.collect-note{margin-top:14px;color:var(--muted);line-height:1.55}
.collect-utilities{display:flex;flex-wrap:wrap;gap:18px;margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.collect-utilities button{border:0;padding:0;background:transparent;color:var(--ink);font-weight:700;text-align:left}
.collect-utilities button:hover,.collect-utilities button:focus-visible{text-decoration:underline;text-underline-offset:3px}
.collect-social{display:flex;gap:18px;margin-top:16px}
.collect-social a{font-weight:700}
.collect-social a:hover,.collect-social a:focus-visible{text-decoration:underline;text-underline-offset:3px}
.collect-status{color:var(--muted);margin-top:12px;min-height:1.5em}
.collect-direct-price{font-family:var(--font-serif);font-size:var(--type-reading);margin-bottom:12px}
.collect-back{display:inline-block;margin-top:28px;color:var(--muted);border-bottom:1px solid transparent}
.collect-back:hover,.collect-back:focus-visible{color:var(--ink);border-bottom-color:currentColor}
@media(max-width:980px){
  .collect-layout{grid-template-columns:1fr;gap:48px}
  .collect-panel{max-width:none}
}
@media(max-width:720px){
  .collect-app{margin-top:clamp(28px,8vw,44px)}
  .collect-empty{grid-template-columns:1fr;gap:12px}
  .collect-empty p,.collect-empty .collect-primary-link{grid-column:1}
  .collect-layout{gap:36px;padding-top:24px}
  .collect-social{flex-direction:column;gap:10px}
}



/* =========================================================
   V2.19 — INDIVIDUAL ARTWORK / PROVENANCE ARCHITECTURE
   Every physical limited-edition work has one stable canonical page.
   ========================================================= */
.work-actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:18px;
  margin-top:18px;
}
.work-actions .collect-link{margin-top:0}
.work-detail-link{
  display:inline-block;
  padding-bottom:2px;
  border-bottom:1px solid transparent;
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  font-weight:700;
  white-space:nowrap;
}
.work-detail-link:hover,.work-detail-link:focus-visible{border-bottom-color:currentColor}

.artwork-detail-page .page-title{
  white-space:normal;
  text-wrap:balance;
  max-width:15ch;
  margin-bottom:clamp(34px,4.2vw,64px);
}
.artwork-detail-context{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:20px;
  padding:0 0 18px;
  color:var(--muted);
  font-family:var(--font-sans);
  font-size:var(--type-ui);
}
.artwork-detail-context a{
  color:var(--ink);
  border-bottom:1px solid transparent;
}
.artwork-detail-context a:hover,.artwork-detail-context a:focus-visible{border-bottom-color:currentColor}
.artwork-detail-visual{
  width:100%;
  margin:0 0 var(--section-gap);
  display:flex;
  justify-content:center;
  background:#fff;
}
.artwork-detail-visual .artwork-zoom{width:100%;}
.artwork-detail-visual picture,.artwork-detail-visual img{width:100%}
.artwork-detail-visual img{
  max-height:84vh;
  object-fit:contain;
  object-position:center;
}
.artwork-detail-record{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  padding:var(--row-pad) 0 var(--section-gap);
  border-top:1px solid var(--line-strong);
}
.artwork-detail-label{
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  font-weight:700;
}
.artwork-detail-meta{max-width:var(--editorial-measure)}
.artwork-detail-meta .artwork-title-meta{margin:0 0 3px}
.artwork-detail-meta .size-variant{margin-top:18px}
.artwork-detail-actions{
  display:flex;
  flex-wrap:wrap;
  gap:18px;
  margin-top:28px;
}
.artwork-detail-actions .collect-link{margin-top:0}
.artwork-detail-series{
  display:grid;
  grid-template-columns:var(--grid-meta) minmax(0,1fr);
  gap:var(--grid-gap);
  padding:var(--row-pad) 0 var(--section-gap);
  border-top:1px solid var(--line);
}
.artwork-detail-series>span{
  font-family:var(--font-sans);
  font-size:var(--type-ui);
  font-weight:700;
}
.artwork-detail-series a{
  width:max-content;
  max-width:100%;
  font-family:var(--font-serif);
  font-size:var(--type-reading);
  line-height:1.62;
  border-bottom:1px solid transparent;
}
.artwork-detail-series a:hover,.artwork-detail-series a:focus-visible{border-bottom-color:currentColor}
.artwork-detail-nav{margin-top:0}
@media(max-width:720px){
  .artwork-detail-context{grid-template-columns:1fr;gap:5px}
  .artwork-detail-page .page-title{max-width:none}
  .artwork-detail-visual img{max-height:none}
  .artwork-detail-record,.artwork-detail-series{grid-template-columns:1fr;gap:18px}
  .artwork-detail-actions,.work-actions{gap:14px 18px}
}


/* --- V2.24 Consent / Privacy additions --- */
/* Yang Tsung Han — V2.24 Consent Mode / Cookie Consent */
.consent-banner{
  position:fixed;z-index:10050;left:0;right:0;bottom:0;
  background:#fff;color:#111;border-top:1px solid #d8d8d4;
  font-family:var(--font-sans,Arial,sans-serif);
  box-shadow:0 -12px 40px rgba(0,0,0,.08);
}
.consent-inner{
  width:100%;max-width:var(--max,1600px);margin:0 auto;
  padding:18px var(--gutter,32px);display:grid;
  grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:end;
}
.consent-copy{max-width:920px}
.consent-copy h2,.consent-copy p,.consent-actions{font-size:var(--type-ui,13px);line-height:1.5}
.consent-copy h2{margin:0 0 5px;font-weight:700;letter-spacing:.01em}
.consent-copy p{margin:0;color:#555}
.consent-copy .consent-current{margin-top:6px;color:#111;font-weight:700}
.consent-actions{display:flex;gap:18px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.consent-actions button,.consent-actions a,.foot-consent{
  appearance:none;border:0;border-bottom:1px solid transparent;background:transparent;
  color:inherit;font:inherit;padding:0;cursor:pointer;text-decoration:none;white-space:nowrap;
}
.consent-actions button{font-weight:700}
.consent-actions button:hover,.consent-actions button:focus-visible,
.consent-actions a:hover,.consent-actions a:focus-visible,.foot-consent:hover,.foot-consent:focus-visible{
  border-bottom-color:currentColor;outline:none;
}
.foot-consent{color:inherit}
.privacy-policy .content{max-width:760px}
.privacy-policy .content h3{font:700 var(--type-ui) var(--font-sans);margin:2.2em 0 .7em;letter-spacing:.01em}
.privacy-policy .content h3:first-child{margin-top:0}
.privacy-policy .content ul{margin:.3em 0 1.35em;padding-left:1.25em}
.privacy-policy .content li{margin:.35em 0}
.privacy-policy .content a{border-bottom:1px solid currentColor}
.privacy-policy .privacy-settings-inline{margin-top:2em}
.privacy-policy .privacy-settings-inline button{appearance:none;background:transparent;color:inherit;border:0;border-bottom:1px solid currentColor;padding:0;font:700 var(--type-ui) var(--font-sans);cursor:pointer}
@media(max-width:720px){
  .consent-inner{grid-template-columns:1fr;gap:14px;padding:16px 20px 18px}
  .consent-actions{justify-content:flex-start;gap:16px 20px}
}

/* V2.30 Accessibility / Semantic HTML — keyboard-only visibility upgrades */
.consent-actions button:focus-visible,
.consent-actions a:focus-visible,
.foot-consent:focus-visible,
.privacy-policy .privacy-settings-inline button:focus-visible{
  outline:1px solid currentColor;
  outline-offset:4px;
}
.lightbox button:focus-visible{
  outline:1px solid currentColor;
  outline-offset:4px;
}
[aria-current="page"]{
  text-underline-offset:3px;
}
