/* Additions to the original ANZA layout. Original motion and identity stay in place. */
.hero { isolation:isolate; }
.hero-film-layer { position:absolute; z-index:0; inset:-3vh -2vw -1vh 20%; opacity:.34; overflow:hidden; pointer-events:none; border-radius:24px; -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 37%,#000 82%,transparent 100%); mask-image:linear-gradient(90deg,transparent 0%,#000 37%,#000 82%,transparent 100%); }
.hero-film-layer > img,.hero-film-layer > video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 35%; filter:saturate(.55); }
.hero-film-layer > video { opacity:0; transition:opacity 1s ease; }
.hero.is-film-playing .hero-film-layer > video { opacity:1; }
.hero-film-layer::after { content:""; position:absolute; inset:0; background:linear-gradient(0deg,var(--ink) 0%,transparent 45%,rgba(var(--ink-rgb),.08)); }
.hero-vis { pointer-events:none; }
.hero-reel-controls { position:absolute; right:1vw; bottom:7vh; z-index:3; display:flex; flex-wrap:wrap; align-items:center; gap:18px; }
.reel-link,.ambient-toggle { display:inline-flex; align-items:center; gap:10px; min-height:44px; border:0; background:transparent; color:var(--paper); font-family:var(--mono); font-size:11px; letter-spacing:.04em; cursor:pointer; }
.reel-link { border-bottom:1px solid rgba(var(--paper-rgb),.2); }
.reel-link span { color:var(--accent); font-size:17px; display:inline-block; transition:transform .3s ease; }
.reel-link:hover span,.reel-link:focus-visible span { transform:translate(3px,-3px); }
.ambient-toggle { color:var(--paper-soft); font-size:9px; }
.ambient-toggle:hover { color:var(--accent); }
.ambient-mark { width:7px; height:8px; border-left:6px solid currentColor; border-top:4px solid transparent; border-bottom:4px solid transparent; }
.ambient-toggle[aria-pressed="true"] .ambient-mark { border:0; border-left:2px solid currentColor; border-right:2px solid currentColor; }
.work-cover { position:relative; display:block; width:100%; padding:0; aspect-ratio:16/9; border:1px solid rgba(var(--paper-rgb),.08); border-radius:12px; overflow:hidden; margin-bottom:3vh; background:#080d14; cursor:pointer; }
.work-cover > img,.work-hover-video { width:100%; height:100%; object-fit:cover; transition:transform .75s cubic-bezier(.2,.7,.2,1),opacity .4s; }
.work-hover-video { position:absolute; inset:0; opacity:0; }
.work.is-preview-playing .work-hover-video { opacity:1; }
.work-cover:hover > img { transform:scale(1.035); }
.cover-action { position:absolute; right:14px; bottom:14px; border-radius:999px; padding:7px 12px; background:rgba(2,3,5,.7); backdrop-filter:blur(8px); color:var(--paper); border:1px solid rgba(var(--paper-rgb),.25); font-family:var(--mono); font-size:10px; transition:color .3s,border-color .3s,transform .3s; }
.work-cover:hover .cover-action,.work-cover:focus-visible .cover-action { color:var(--accent); border-color:rgba(var(--accent-rgb),.6); transform:translateY(-3px); }
.work-actions { display:flex; gap:28px; align-items:center; flex-wrap:wrap; }
button.work-link { padding:0; background:transparent; border:0; cursor:pointer; min-height:44px; }
.work-link { min-height:44px; }
.work-cover:focus-visible { outline-offset:5px; }
.copy-email { border:1px solid rgba(var(--paper-rgb),.25); background:transparent; padding:6px 12px; min-height:40px; border-radius:999px; color:var(--paper-soft); font-family:var(--mono); font-size:10px; letter-spacing:.03em; cursor:pointer; transition:border-color .25s,color .25s; }
.copy-email:hover { color:var(--accent); border-color:var(--accent); }
.copy-status { min-height:20px; color:var(--accent)!important; font-family:var(--mono); font-size:10px!important; border:0!important; letter-spacing:.03em; }
.account-copy { min-height:44px; margin-top:22px; padding:10px 20px; color:var(--ink-deep); background:var(--accent); border:1px solid var(--accent); border-radius:999px; font-family:var(--mono); font-size:12px; cursor:pointer; transition:transform .25s; }
.account-copy:hover { transform:translateY(-2px); }
.account-mark { background:rgba(var(--accent-rgb),.08)!important; opacity:1!important; border:1px solid rgba(var(--accent-rgb),.25); flex-direction:column; gap:4px; color:var(--accent)!important; }
.account-mark > span { font-family:var(--mono); font-size:42px; letter-spacing:-.04em; line-height:1; }
.account-mark > small { font-size:13px; letter-spacing:.16em; }
.modal-box { max-height:calc(100svh - 40px); overflow:auto; background:linear-gradient(150deg,#10251f,#101923); }
.modal-x { width:40px; height:40px; }
.modal-text { overflow-wrap:anywhere; }
.chan { color:var(--paper); font:inherit; cursor:pointer; }
.chan:focus-visible .ch-ico { transform:scale(1.1); animation:logoFade .6s ease forwards; }
.chan:focus-visible .ch-label { opacity:1; }
.idtag:focus-visible,.idtag.is-keyboard-focus { outline:2px solid var(--accent); outline-offset:4px; }
.film-dialog { width:min(1000px,calc(100% - 40px)); max-height:calc(100svh - 40px); padding:24px; border:1px solid rgba(var(--paper-rgb),.2); border-radius:18px; color:var(--paper); background:#080e16; overflow:auto; margin:auto; box-shadow:0 24px 90px rgba(0,0,0,.6); cursor:auto; }
.film-dialog::backdrop { background:rgba(2,3,5,.85); backdrop-filter:blur(10px); }
.film-dialog[open] { animation:modalIn .3s ease; }
.film-dialog-head { display:flex; justify-content:space-between; align-items:center; gap:24px; margin-bottom:20px; }
.film-dialog-head h2 { font-family:var(--mono); font-size:23px; font-weight:500; }
.film-dialog-head p { font-size:10px; color:var(--paper-soft); margin-top:3px; letter-spacing:.08em; }
[data-close-film] { width:44px; height:44px; border:1px solid rgba(var(--paper-rgb),.2); color:var(--paper); background:transparent; border-radius:50%; font-size:25px; cursor:pointer; }
[data-close-film]:hover { color:var(--accent); border-color:var(--accent); }
#filmPlayer { display:block; width:100%; aspect-ratio:16/9; object-fit:contain; background:#020305; border-radius:8px; max-height:68svh; }
.film-dialog-foot { display:flex; flex-wrap:wrap; gap:16px; justify-content:space-between; align-items:center; font-family:var(--mono); font-size:10px; color:var(--paper-soft); padding-top:14px; }
.film-dialog-foot a { color:var(--accent); display:inline-flex; align-items:center; min-height:40px; text-decoration:none; }
html:not(.js) .cur-dot,html:not(.js) .cur-ring { display:none; }
html:not(.js) body { cursor:default; }
@media(max-width:860px) {
  .hero-reel-controls { position:relative; right:auto; bottom:auto; margin-top:8px; gap:20px; }
  .hero-film-layer { inset:-1vh -4vw 15% 5%; opacity:.23; -webkit-mask-image:linear-gradient(90deg,transparent,#000 40%,#000 85%,transparent); mask-image:linear-gradient(90deg,transparent,#000 40%,#000 85%,transparent); }
  .work-cover { margin-bottom:24px; }
  .film-dialog { padding:18px; }
}
@media(max-width:520px) {
  main { padding-inline:6vw; }
  .hero .typer { min-height:4em; margin-top:4vh; }
  .reel-link { font-size:10px; }
  .ambient-toggle { font-size:9px; }
  .chan-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
  .chan { min-width:0; padding:24px 10px; gap:10px; }
  .ch-ico { width:40px; height:40px; }
  .ch-label { opacity:1; margin-top:8px; }
  .ch-name { font-size:11px; }
  .ch-handle { font-size:9px; white-space:normal; }
  .work { padding:22px; }
  .work .work-desc { font-size:13px; }
  .contact .lines { font-size:11px; gap:16px; }
  .contact .lines a { overflow-wrap:anywhere; min-width:0; }
  .contact .lines .ico-mail { width:16px; height:16px; }
  .film-dialog { width:calc(100% - 24px); max-height:calc(100svh - 24px); padding:14px; border-radius:14px; }
  .film-dialog-head h2 { font-size:19px; }
  .film-dialog-head { margin-bottom:14px; }
  .modal { padding:14px; }
  .modal-box { padding:32px 22px 24px; }
}
@media(hover:none),(pointer:coarse) {
  .chan .ch-label { opacity:1; }
  .chip,.card,.chan,.work { transform:none!important; }
  .cur-dot,.cur-ring { display:none; }
  body { cursor:default; }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; scroll-behavior:auto!important; }
  .cur-dot,.cur-ring { display:none; }
  body { cursor:default; }
  html.js .reveal { opacity:1; transform:none; }
  .cv-card { opacity:1!important; filter:none!important; transform:none!important; }
}
/* Typography refinement requested by the owner: lighter, cleaner Chinese text. */
:root {
  --sans:"Space Grotesk","Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --serif:"Noto Sans SC","Space Grotesk","PingFang SC",sans-serif;
  --mono:"Space Grotesk","Noto Sans SC","PingFang SC",sans-serif;
}
body { font-weight:400; }
.hero h1 { font-weight:400; letter-spacing:-.045em; }
.typer { font-weight:400; }
.skills-head h2,.contact h2,.sub-left h3,.work h3,.card h3,.chip h3,.cat-head h3,.modal-title { font-weight:400; }
.cv-co,.edu-co,.about-h { font-weight:400; }
.cv-yr { font-weight:400; }
.skill-item { font-weight:400; }
.sub-price { font-weight:400; }
strong,b,.lede b,.wx-txt strong { font-weight:500; }
.tab.active,.act,.sub-cta,.sub-badge { font-weight:500; }
.cv-logo.txt,.cv-bglogo.txt { font-weight:400; }

/* Owner request: one angular Light typeface throughout the website. */
@font-face {
  font-family:"ANZA Square Light";
  font-style:normal;
  font-weight:300;
  font-display:swap;
  src:url('fonts/anza-square-light.ttf') format('truetype');
}
:root {
  --sans:"ANZA Square Light","Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  --serif:var(--sans);
  --mono:var(--sans);
}
body,body * {
  font-family:var(--sans)!important;
  font-weight:300!important;
  font-synthesis:none;
}
body *::before,body *::after {
  font-family:var(--sans)!important;
  font-weight:300!important;
  font-synthesis:none;
}

/* The name stays still, with only a faint ambient glow. */
.hero h1 {
  background:none;
  -webkit-background-clip:border-box;
  background-clip:border-box;
  color:var(--paper);
  -webkit-text-fill-color:var(--paper);
  animation:none;
  text-shadow:0 0 18px rgba(var(--accent-rgb),.12),0 0 40px rgba(var(--accent-rgb),.035);
}
.hero h1::after {
  background:radial-gradient(50% 55% at 50% 50%,rgba(var(--accent-rgb),.05),transparent 70%);
  filter:blur(28px);
  opacity:.6;
  transform:none;
  animation:none;
}
.hero h1 .dot {
  animation:none;
  text-shadow:0 0 12px rgba(var(--accent-rgb),.18);
}
