/* =========================================================
   Pei-Chi Yang — Design Tokens
   Direction: single dark world, professional studio feel,
   motion-forward. One accent (refined cinnabar — a nod to
   her ink-seal / chop heritage) against near-black, plus a
   cool slate secondary for the product/UX side of her work.
   ========================================================= */

:root{
  --bg:            #0a0a0b;
  --bg-elevated:   #131416;
  --bg-elevated-2: #1c1e21;
  --fg:            #f3f2ef;
  --sub:           #97968f;
  --line:          rgba(243,242,239,0.10);
  --line-strong:   rgba(243,242,239,0.20);

  --accent:        #c1442c;
  --accent-soft:   rgba(193,68,44,0.16);
  --accent-2:      #7c97a6;
  --accent-3:      #c9973e;
  --accent-4:      #5a9a8f;

  --serif:  "Songti TC","Noto Serif TC","Iowan Old Style",Georgia,serif;
  --sans:   -apple-system,BlinkMacSystemFont,"PingFang TC","Microsoft JhengHei","Segoe UI",sans-serif;
  --mono:   ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --display: Georgia,"Songti TC",serif;

  --container: 1180px;
  --ease-out: cubic-bezier(.16,1,.3,1);
}

*, *::before, *::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *, *::before, *::after{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
    scroll-behavior:auto !important;
  }
}

body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:var(--sans);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

a{ color:inherit; }
img{ max-width:100%; display:block; }
::selection{ background:var(--accent); color:#fff; }

.container{
  max-width:var(--container);
  margin:0 auto;
  padding:0 32px;
}

/* ---------- cursor glow (pointer:fine only) ---------- */
.cursor-glow{
  position:fixed; top:0; left:0; width:26px; height:26px;
  border-radius:50%;
  background:radial-gradient(circle, var(--accent) 0%, transparent 70%);
  opacity:0; pointer-events:none; z-index:400;
  mix-blend-mode:screen;
}
@media (pointer:fine){
  .cursor-glow.is-active{ opacity:0.55; }
}

/* ---------- scroll progress ---------- */
.scroll-progress{
  position:fixed; top:0; left:0; height:2px; width:0%;
  background:var(--accent); z-index:500;
  box-shadow:0 0 8px var(--accent);
  pointer-events:none;
}

/* ---------- Nav ---------- */
.site-nav{
  position:fixed;
  top:0; left:0; right:0;
  z-index:100;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:20px 32px;
  font-size:12.5px;
  letter-spacing:0.08em;
  color:var(--fg);
  background:rgba(10,10,11,0);
  border-bottom:1px solid transparent;
  backdrop-filter:blur(0px);
  transition:background .4s, border-color .4s, backdrop-filter .4s, padding .3s, transform .45s var(--ease-out);
}
.site-nav.is-scrolled{
  background:rgba(10,10,11,0.72);
  border-bottom-color:var(--line);
  backdrop-filter:blur(10px);
  padding:14px 32px;
}
.site-nav.is-hidden{ transform:translateY(-100%); }
.site-nav .mark{
  font-family:var(--serif);
  font-weight:600;
  font-size:15px;
}
.site-nav .links{ display:flex; gap:20px; }
.site-nav .links a .key{
  font-family:var(--mono); font-size:10px; color:var(--sub);
  margin-left:2px; opacity:0.7;
}
.site-nav .links a:hover .key,
.site-nav .links a.active .key{ color:var(--accent); }
.site-nav .links a{
  font-family:var(--serif);
  text-decoration:none;
  position:relative;
  padding-bottom:2px;
  display:inline-block;
}
.site-nav .links a::after{
  content:"";
  position:absolute; left:0; right:100%; bottom:-2px;
  height:1px; background:var(--accent);
  transition:right .35s var(--ease-out);
}
.site-nav .links a:hover::after,
.site-nav .links a.active::after{ right:0; }
.nav-toggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  width:32px; height:32px;
  background:none; border:none;
  cursor:pointer;
  padding:0;
  z-index:101;
}
.nav-toggle span{
  display:block;
  width:100%; height:1px;
  background:var(--fg);
  transition:transform .3s var(--ease-out), opacity .3s var(--ease-out);
}
.nav-toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }

/* ---------- Buttons / small bits ---------- */
.eyebrow{
  font-family:var(--mono);
  font-size:11.5px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:600;
}
.stamp{
  width:60px; height:60px; border-radius:50%;
  background:var(--accent); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-size:18px;
  writing-mode:vertical-rl;
  flex-shrink:0;
  box-shadow:0 0 0 1px var(--line-strong), 0 12px 30px rgba(193,68,44,0.25);
}
.btn{
  display:inline-flex;
  align-items:center;
  gap:10px;
  border:1px solid var(--line-strong);
  padding:13px 24px;
  border-radius:100px;
  font-size:13px;
  letter-spacing:0.03em;
  text-decoration:none;
  color:var(--fg);
  transition:border-color .25s, background .25s, color .25s, transform .25s;
}
.btn:hover{
  border-color:var(--accent);
  background:var(--accent);
  color:#fff;
}

footer.site-footer{
  background:var(--bg-elevated);
  color:var(--fg);
  padding:64px 32px 32px;
  border-top:1px solid var(--line);
}
footer.site-footer .container{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  flex-wrap:wrap;
  gap:24px;
}
footer.site-footer .foot-title{
  font-family:var(--serif);
  font-size:26px;
  margin:0 0 6px;
}
footer.site-footer .foot-sub{ color:var(--sub); font-size:13px; font-family:var(--mono); }
footer.site-footer .foot-links{
  display:flex; flex-wrap:wrap; gap:14px 22px; font-size:12.5px;
  letter-spacing:0.04em;
}
footer.site-footer .foot-links a{ text-decoration:none; color:var(--sub); transition:color .2s; }
footer.site-footer .foot-links a:hover{ color:var(--fg); }
footer.site-footer .copyright{
  max-width:var(--container); margin:40px auto 0; padding:0 32px 0;
  font-size:11px; font-family:var(--mono); color:rgba(243,242,239,0.35);
}

.page-transition{
  position:fixed; inset:0; z-index:300;
  background:var(--accent);
  pointer-events:none;
}

/* ---------- reveal targets (JS adds .is-visible) ---------- */
[data-reveal]{
  opacity:0;
  transform:translateY(24px);
}

/* =========================================================
   HOME — full dark hero, split layout (content only),
   drifting glow field, big word-staggered headline
   ========================================================= */
.hero-split{
  min-height:100vh;
  display:grid;
  grid-template-columns:1fr 1fr;
  position:relative;
  background:var(--bg);
  overflow:hidden;
}
.hero-split .bleed{
  position:absolute; inset:-15%;
  background:
    radial-gradient(ellipse 38% 46% at 80% 18%, var(--accent-soft), transparent 62%),
    radial-gradient(ellipse 40% 40% at 12% 82%, rgba(124,151,166,0.14), transparent 65%);
  pointer-events:none;
}
.hero-name-bg{
  position:absolute; inset:0;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  pointer-events:none;
  gap:7vw;
}
.hero-name-bg span{
  font-family:var(--display);
  font-weight:800;
  font-size:clamp(70px, 20vw, 280px);
  line-height:1;
  letter-spacing:-0.01em;
  white-space:nowrap;
  color:transparent;
  -webkit-text-stroke:1px rgba(243,242,239,0.10);
  text-transform:uppercase;
}
.hero-clock{
  position:absolute; left:48px; bottom:22px;
  font-family:var(--mono); font-size:11px; letter-spacing:0.1em;
  color:var(--sub); text-transform:uppercase;
  z-index:5;
  display:flex; gap:8px; align-items:center;
}
.hero-clock .dot{
  width:5px; height:5px; border-radius:50%; background:var(--accent);
  box-shadow:0 0 6px var(--accent);
}
.hero-split .grid-lines{
  position:absolute; inset:0; pointer-events:none;
  background-image:linear-gradient(var(--line) 1px, transparent 1px);
  background-size:100% 64px;
  mask-image:linear-gradient(to bottom, transparent, black 15%, black 85%, transparent);
  opacity:0.5;
}
.hero-split .side{
  position:relative;
  padding:120px 48px 64px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  min-height:100vh;
  color:var(--fg);
}
.hero-split .side.practice-ux{ border-right:1px solid var(--line); }
.hero-split .side .role{
  font-family:var(--mono);
  font-size:12px; letter-spacing:0.16em; text-transform:uppercase;
  margin-bottom:22px;
}
.hero-split .side.practice-ux .role{ color:var(--accent-2); }
.hero-split .side.practice-art .role{ color:var(--accent); }
.hero-split .side h2{
  font-family:var(--display);
  font-size:clamp(32px,4.2vw,54px);
  line-height:1.14;
  margin:0 0 20px;
  font-weight:700;
}
.mask-lines .line{ display:block; overflow:hidden; }
.mask-lines .line > span{ display:block; transform:translateY(110%); }
.hero-split .side.practice-art h2{ font-weight:500; font-family:var(--serif); }
.hero-split .side p{
  max-width:none; color:var(--sub); font-size:14.5px; line-height:1.85;
  margin:0 0 26px;
}
.hero-split .chip-row{ display:flex; gap:10px; flex-wrap:wrap; }
.hero-split .chip-row span{
  border:1px solid var(--line-strong);
  border-radius:100px; padding:6px 14px; font-size:11px; font-family:var(--mono); color:var(--fg);
}
.hero-center{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  z-index:5;
  display:flex; flex-direction:column; align-items:center; gap:14px;
}
.hero-center .name{
  font-family:var(--mono); color:var(--sub); font-size:11px;
  letter-spacing:0.12em; text-align:center;
}
.scroll-cue{
  position:absolute; bottom:28px; left:50%; transform:translateX(-50%);
  font-family:var(--mono);
  font-size:10.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--sub); display:flex; flex-direction:column; align-items:center; gap:8px;
  z-index:5;
}
.scroll-cue .line{ width:1px; height:34px; background:var(--line-strong); overflow:hidden; }
.scroll-cue .line::after{
  content:""; display:block; width:100%; height:100%;
  background:var(--accent);
  transform:translateY(-100%);
  animation:cue 1.8s ease-in-out infinite;
}
@keyframes cue{
  0%{ transform:translateY(-100%); }
  50%{ transform:translateY(0); }
  100%{ transform:translateY(100%); }
}
@media (prefers-reduced-motion: reduce){ .scroll-cue .line::after{ animation:none; } }

/* ---------- Marquee ticker ---------- */
.marquee{
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:var(--bg-elevated);
  overflow:hidden;
  padding:18px 0;
}
.marquee-track{
  display:flex;
  width:max-content;
  gap:48px;
  animation:marquee 26s linear infinite;
}
.marquee-track span{
  font-family:var(--mono);
  font-size:13px; letter-spacing:0.05em; color:var(--sub);
  white-space:nowrap;
  display:flex; align-items:center; gap:48px;
}
.marquee-track span em{ color:var(--accent); font-style:normal; margin-right:48px; }
@keyframes marquee{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@media (prefers-reduced-motion: reduce){ .marquee-track{ animation:none; } }

/* ---------- Home: index rows ---------- */
.section{ padding:120px 0; }
.section-head{
  display:flex; justify-content:space-between; align-items:flex-end;
  gap:24px; flex-wrap:wrap; margin-bottom:56px;
}
.section-head h3{
  font-family:var(--serif); font-size:clamp(26px,3.4vw,40px);
  margin:10px 0 0; font-weight:500;
}
.section-head p{ max-width:42ch; color:var(--sub); font-size:13.5px; line-height:1.8; }

.index-rows{ border-top:1px solid var(--line); }
.index-row{
  display:grid;
  grid-template-columns:70px 1fr 160px 24px;
  align-items:center;
  padding:28px 4px;
  border-bottom:1px solid var(--line);
  text-decoration:none;
  color:var(--fg);
  position:relative;
  transition:padding-left .35s var(--ease-out), color .35s;
}
.index-row::before{
  content:""; position:absolute; inset:0;
  background:var(--bg-elevated);
  transform:scaleX(0); transform-origin:left;
  transition:transform .4s var(--ease-out);
  z-index:-1;
}
.index-row:hover::before{ transform:scaleX(1); }
.index-row:hover{ padding-left:20px; color:var(--accent); }
.index-row .idx{ font-family:var(--mono); color:var(--accent); font-size:12px; font-weight:700; font-variant-numeric:tabular-nums; }
.index-row .title{ font-family:var(--serif); font-size:20px; }
.index-row .meta{ font-family:var(--mono); color:var(--sub); font-size:11px; letter-spacing:0.04em; text-align:right; }
.index-row .arrow{ justify-self:end; transition:transform .35s var(--ease-out); }
.index-row:hover .arrow{ transform:translateX(4px); }

/* ---------- About preview strip on home ---------- */
.about-strip{
  display:grid; grid-template-columns:0.9fr 1.1fr; gap:64px; align-items:start;
}
.portrait{
  aspect-ratio:3/4; max-width:220px; border-radius:4px; overflow:hidden;
  background:linear-gradient(155deg, var(--bg-elevated-2), var(--bg-elevated));
  border:1px solid var(--line);
  position:relative;
}
.portrait.is-empty::after{
  content:"PHOTO PLACEHOLDER";
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family:var(--mono); font-size:10.5px; letter-spacing:0.1em; color:var(--sub);
}
.portrait img{
  width:100%; height:100%; object-fit:cover; object-position:center top;
  filter:grayscale(0.6) contrast(1.05) brightness(0.9);
  transition:filter .6s ease, transform .6s var(--ease-out);
}
.portrait:hover img{
  filter:grayscale(0) contrast(1) brightness(1);
  transform:scale(1.03);
}
.about-strip blockquote{
  font-family:var(--serif); font-size:clamp(20px,2.4vw,28px);
  line-height:1.6; margin:0 0 24px; font-weight:500;
  text-wrap:balance;
}
.stats{ display:flex; gap:40px; margin-top:36px; }
.stat b{ display:block; font-family:var(--mono); font-size:30px; color:var(--accent); font-variant-numeric:tabular-nums; }
.stat span{ font-size:11.5px; color:var(--sub); letter-spacing:0.04em; }

/* =========================================================
   PAGE HERO (About / Work / Contact)
   ========================================================= */
.page-hero{
  padding:170px 0 80px;
  border-bottom:1px solid var(--line);
  position:relative;
  overflow:hidden;
}
.page-hero .eyebrow{ margin-bottom:18px; display:block; }
.page-hero h1{
  font-family:var(--serif); font-weight:500;
  font-size:clamp(30px,4.6vw,54px); margin:0; line-height:1.15; text-wrap:balance;
}
.page-hero h1#pTitleWrap{ font-size:clamp(26px,4vw,46px); }

/* =========================================================
   ABOUT — bio + timeline
   ========================================================= */
.bio-grid{
  display:grid; grid-template-columns:0.7fr 1fr 1fr; gap:56px;
  padding-top:90px; padding-bottom:90px; border-bottom:1px solid var(--line);
}
.bio-grid .portrait{ margin-top:6px; }
.bio-grid p{ font-size:15px; line-height:1.95; color:var(--sub); margin:0 0 20px; }
.bio-grid .lede{ font-family:var(--serif); font-size:22px; color:var(--fg); line-height:1.7; margin-bottom:28px; }

.timeline{ padding-top:90px; padding-bottom:90px; }
.timeline-year{
  display:grid; grid-template-columns:150px 1fr; gap:32px;
  padding:36px 0; border-top:1px solid var(--line);
}
.timeline-year:last-child{ border-bottom:1px solid var(--line); }
.timeline-year .year{
  font-family:var(--mono); font-size:17px; color:var(--accent); font-variant-numeric:tabular-nums;
}
.timeline-year ul{ margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:10px; }
.timeline-year li{ font-size:13.5px; line-height:1.7; color:var(--sub); }
.timeline-year li b{ color:var(--fg); font-weight:600; }
.timeline-tabs{ display:flex; gap:10px; margin-bottom:40px; flex-wrap:wrap; }
.timeline-tabs button{
  font:inherit; font-size:12.5px; letter-spacing:0.04em; cursor:pointer;
  border:1px solid var(--line-strong); background:transparent; color:var(--sub);
  padding:9px 18px; border-radius:100px; transition:all .25s;
}
.timeline-tabs button.active,
.timeline-tabs button:hover{ border-color:var(--accent); color:var(--accent); }

/* =========================================================
   WORK — grid, dark elevated cards, accent-tagged by practice
   ========================================================= */
.work-filter{
  display:flex; gap:10px; padding:48px 0 0; flex-wrap:wrap;
}
.work-filter button{
  font:inherit; font-size:12.5px; cursor:pointer;
  border:1px solid var(--line-strong); background:transparent; color:var(--sub);
  padding:9px 18px; border-radius:100px; transition:all .25s;
}
.work-filter button.active,
.work-filter button:hover{ border-color:var(--accent); color:var(--accent); }

.work-grid{
  display:grid; grid-template-columns:repeat(2,1fr); gap:2px;
  margin-top:56px; background:var(--line);
}
.work-card{
  background:var(--bg-elevated);
  padding:40px;
  min-height:340px;
  display:flex; flex-direction:column; justify-content:space-between;
  position:relative; overflow:hidden;
  text-decoration:none; color:var(--fg);
  transition:background .35s;
  transform-style:preserve-3d;
  will-change:transform;
}
.work-card:hover{ background:var(--bg-elevated-2); }
.work-card::before{
  content:""; position:absolute; left:40px; top:40px; width:28px; height:2px;
}
.work-card.practice-ux::before{ background:var(--accent-2); }
.work-card.practice-design::before{ background:var(--accent-3); }
.work-card.practice-illustration::before{ background:var(--accent-4); }
.work-card.practice-art::before{ background:var(--accent); }
.work-card.practice-art{ font-family:var(--serif); }
.work-card .wc-thumb{
  position:absolute; inset:0;
  background:radial-gradient(circle at 80% 20%, var(--accent-soft), transparent 60%);
  opacity:0; transition:opacity .4s;
}
.work-card:hover .wc-thumb{ opacity:1; }
.work-card .wc-top{ position:relative; display:flex; justify-content:space-between; font-family:var(--mono); font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--sub); margin-top:18px; }
.work-card h4{ position:relative; font-size:clamp(19px,2.2vw,26px); margin:0; line-height:1.3; font-weight:600; }
.work-card.practice-art h4{ font-weight:500; }
.work-card .wc-meta{ position:relative; display:flex; gap:14px; font-family:var(--mono); font-size:11px; color:var(--sub); }
.work-card p.wc-desc{
  position:relative; font-family:var(--sans); font-size:12.5px; line-height:1.75;
  color:var(--sub); margin:14px 0 0; max-width:46ch;
}

/* photo cards (Art / UI・UX pages) — image always shown in full, never cropped */
.work-card.has-photo{ padding:0; display:flex; flex-direction:column; }
.work-card.has-photo .wc-image{
  position:relative;
  width:100%; aspect-ratio:16/10; background:#050505;
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
.wc-award-logos{
  display:flex; gap:10px; align-self:flex-end;
}
.work-card.has-photo .wc-body .wc-award-logos img{
  width:64px; height:64px; border-radius:8px;
  background:#fff; padding:3px; object-fit:contain;
}
.work-card.has-photo .wc-image img{
  width:100%; height:100%; object-fit:contain;
  filter:grayscale(0.1) contrast(1.02);
  transition:transform .6s var(--ease-out), filter .5s;
}
.work-card.has-photo:hover .wc-image img{ transform:scale(1.03); filter:grayscale(0) contrast(1.05); }
/* Design cards: show a cropped detail of the artwork on the listing card (full image still shown on the detail page) */
.work-card.has-photo.practice-design .wc-image img{ object-fit:cover; object-position:center 25%; }
.work-card.has-photo .wc-body{ position:relative; padding:28px 32px 32px; flex:1; display:flex; flex-direction:column; gap:14px; }
.work-card.has-photo .wc-award-logos{ margin-top:auto; }
.work-card.has-photo p.wc-desc{ max-width:none; }
.work-card.has-photo::before{ display:none; }

/* =========================================================
   PROJECT DETAIL
   ========================================================= */
.project-back{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--mono); font-size:12px; letter-spacing:0.06em;
  text-decoration:none; color:var(--sub); transition:color .25s;
}
.project-back:hover{ color:var(--accent); }
.project-media{
  margin:40px auto 0; max-width:900px; border-radius:4px; overflow:hidden;
  aspect-ratio:16/9; position:relative;
  background:linear-gradient(155deg, var(--bg-elevated-2), var(--bg-elevated));
  border:1px solid var(--line);
}
.project-media img{ width:100%; height:100%; object-fit:contain; background:#050505; }
.project-media.is-empty::after{
  content:"PLACEHOLDER — REPLACE WITH REAL ARTWORK";
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family:var(--mono); font-size:11px; letter-spacing:0.1em; color:var(--sub); text-align:center; padding:0 20px;
}

/* full image gallery — every image renders at its natural ratio, never cropped */
.project-gallery{ margin:40px auto 0; max-width:900px; display:flex; flex-direction:column; gap:16px; }
.project-gallery img{
  width:100%; height:auto; display:block;
  border-radius:4px; border:1px solid var(--line);
  background:#050505;
}
.project-body{
  display:grid; grid-template-columns:1fr 1fr; gap:64px;
  padding:56px 0 80px; border-bottom:1px solid var(--line);
}
.project-meta{ display:flex; flex-direction:column; gap:20px; }
.project-meta .m-row{ display:flex; flex-direction:column; gap:6px; }
.project-meta .m-row label{
  font-family:var(--mono); font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--sub);
}
.project-meta .m-row span{ font-size:14px; }
.award-list{ display:flex; flex-direction:column; gap:6px; }
.award-list .award-line{ color:var(--accent); font-weight:600; font-size:14px; line-height:1.5; }
.award-logos{ display:flex; gap:14px; flex-wrap:wrap; margin-top:10px; }
.award-logos .logo-chip{
  background:#fff; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  width:64px; height:64px; flex-shrink:0;
}
.award-logos .logo-chip img{ width:100%; height:100%; object-fit:contain; }
.store-badges{ display:flex; gap:12px; flex-wrap:wrap; margin-top:10px; }
.store-badges img{ height:40px; width:auto; }
.project-body p{ font-size:15px; line-height:1.95; color:var(--sub); margin:0 0 20px; white-space:pre-line; }
.project-body p.zh{ color:var(--fg); font-family:var(--serif); font-size:14px; }
.desc-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.desc-list li{ position:relative; padding-left:22px; font-size:15px; line-height:1.85; color:var(--sub); }
.desc-list li::before{ content:"•"; position:absolute; left:2px; color:var(--accent); font-size:18px; line-height:1.5; }

.project-pagination{
  display:flex; justify-content:space-between; padding:88px 0 160px; gap:24px; flex-wrap:wrap;
}
.project-pagination a{
  text-decoration:none; color:var(--fg);
  font-family:var(--mono); font-size:12px; letter-spacing:0.05em; color:var(--sub);
  display:flex; flex-direction:column; gap:8px;
  transition:color .25s;
}
.project-pagination a:hover{ color:var(--accent); }
.project-pagination a .p-title{ font-family:var(--serif); font-size:20px; color:var(--fg); }
.project-pagination a:hover .p-title{ color:var(--accent); }
.project-pagination .next{ text-align:right; align-items:flex-end; margin-left:auto; }

/* =========================================================
   CONTACT
   ========================================================= */
.contact-wrap{
  display:grid; grid-template-columns:1fr 1fr; gap:64px;
  padding-top:90px; padding-bottom:140px;
}
.contact-info .big-link{
  display:block; font-family:var(--serif); font-size:clamp(24px,3.4vw,36px);
  text-decoration:none; color:var(--fg); border-bottom:1px solid var(--line);
  padding:22px 0; transition:color .3s;
}
.contact-info .big-link:hover{ color:var(--accent); }
.contact-info .meta-row{ display:flex; gap:14px; font-family:var(--mono); font-size:12px; color:var(--sub); margin-top:18px; }

.field{ margin-bottom:26px; }
.field label{ display:block; font-family:var(--mono); font-size:11px; letter-spacing:0.06em; text-transform:uppercase; color:var(--sub); margin-bottom:10px; }
.field input, .field textarea{
  width:100%; border:none; border-bottom:1px solid var(--line);
  background:transparent; color:var(--fg); font:inherit; font-size:15px;
  padding:10px 2px; outline:none; transition:border-color .25s;
}
.field input:focus, .field textarea:focus{ border-color:var(--accent); }
.field textarea{ resize:vertical; min-height:100px; }
.submit-btn{
  font:inherit; font-size:13px; letter-spacing:0.04em; cursor:pointer;
  border:1px solid var(--fg); background:transparent; color:var(--fg);
  padding:14px 28px; border-radius:100px; transition:all .25s;
}
.submit-btn:hover{ background:var(--accent); border-color:var(--accent); color:#fff; }
.submit-btn:disabled{ opacity:0.6; cursor:default; }
.form-status{ margin:18px 0 0; font-family:var(--mono); font-size:12.5px; letter-spacing:0.02em; min-height:1em; }
.form-status.is-success{ color:var(--accent-2); }
.form-status.is-error{ color:var(--accent); }

/* =========================================================
   EMBROIDERY CAROUSEL
   ========================================================= */
.carousel{ max-width:640px; margin:48px auto 0; }
.carousel-stage{
  position:relative; aspect-ratio:1/1; border-radius:4px; overflow:hidden;
  background:#050505; border:1px solid var(--line);
}
.carousel-img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:contain;
  opacity:0; transition:opacity .5s ease; pointer-events:none;
}
.carousel-img.is-active{ opacity:1; pointer-events:auto; }
.carousel-arrow{
  position:absolute; top:50%; transform:translateY(-50%); z-index:3;
  width:40px; height:40px; border-radius:50%;
  border:1px solid var(--line-strong); background:rgba(10,10,11,0.55);
  color:var(--fg); font-size:16px; line-height:1; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:background .25s, border-color .25s;
}
.carousel-arrow:hover{ background:var(--accent); border-color:var(--accent); }
.carousel-arrow.prev{ left:14px; }
.carousel-arrow.next{ right:14px; }
.carousel-dots{ display:flex; justify-content:center; gap:9px; margin-top:22px; }
.carousel-dots .dot{
  width:8px; height:8px; border-radius:50%; padding:0;
  border:none; background:var(--line-strong); cursor:pointer;
  transition:background .25s, transform .25s;
}
.carousel-dots .dot.is-active{ background:var(--accent); transform:scale(1.2); }
.carousel-counter{
  text-align:center; margin-top:14px;
  font-family:var(--mono); font-size:12px; letter-spacing:0.05em; color:var(--sub);
}

@media (max-width: 860px){
  .site-nav{ padding:16px 20px; }
  .site-nav.is-scrolled{ padding:14px 20px; }
  .site-nav .mark{ font-size:13px; }
  .nav-toggle{ display:flex; }
  .site-nav .links{
    position:fixed;
    top:0; right:0;
    width:min(280px, 78vw);
    height:100vh;
    flex-direction:column;
    align-items:flex-start;
    gap:0;
    padding:88px 32px 32px;
    background:rgba(10,10,11,0.97);
    backdrop-filter:blur(10px);
    border-left:1px solid var(--line);
    transform:translateX(100%);
    transition:transform .4s var(--ease-out);
  }
  .site-nav .links.is-open{ transform:translateX(0); }
  .site-nav .links a{ width:100%; padding:14px 0; font-size:14px; }
  .hero-split{ grid-template-columns:1fr; }
  .hero-split .side{ min-height:auto; padding:150px 28px 64px; }
  .hero-split .side.practice-ux{ border-right:none; border-bottom:1px solid var(--line); padding-top:140px; }
  .hero-center{ display:none; }
  .hero-clock{ display:none; }
  .scroll-cue{ display:none; }
  .about-strip, .bio-grid, .contact-wrap{ grid-template-columns:1fr; }
  .project-body{ grid-template-columns:1fr; gap:40px; }
  .work-grid{ grid-template-columns:1fr; }
  .index-row{ grid-template-columns:40px 1fr 24px; }
  .index-row .meta{ display:none; }
  .container{ padding:0 22px; }
  .section{ padding:80px 0; }
  .timeline-year{ grid-template-columns:1fr; gap:10px; }
  .cursor-glow{ display:none; }
}

@media (max-width: 480px){
  .site-nav{ padding:14px 18px; }
  .site-nav.is-scrolled{ padding:12px 18px; }
  .site-nav .mark{ font-size:12.5px; }
  .site-nav .mark .mark-en{ display:none; }
  .site-nav .links{ gap:14px; }
  .site-nav .links a{ font-size:10.5px; }
}
