:root {
  color-scheme: light;
  --paper: #faf8f0; --ink: #2d3930; --muted: #637066; --orange: #d75c35;
  --yellow: #f4d578; --green: #38684b; --soft: #eeeee2; --radius: 22px;
  --ease: 240ms cubic-bezier(.22,1,.36,1);
  --body: "Noto Sans SC","Microsoft YaHei",sans-serif;
  --display: "Outfit",var(--body);
}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.8}
a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;color:inherit}
button,a{-webkit-tap-highlight-color:transparent}
button:focus-visible,a:focus-visible,summary:focus-visible,video:focus-visible{outline:3px solid var(--orange);outline-offset:6px}
img,video{display:block;max-width:100%}::selection{background:var(--yellow);color:var(--ink)}[hidden]{display:none!important}
.wrap{width:min(1240px,calc(100% - 96px));margin-inline:auto}
.skip-link{position:fixed;left:20px;top:-80px;z-index:100;background:var(--ink);color:var(--paper);padding:12px 22px}.skip-link:focus{top:15px}
.header{display:flex;align-items:center;justify-content:space-between;min-height:110px;gap:28px}
.wordmark{font-family:var(--display);font-size:33px;font-weight:800;line-height:1;letter-spacing:-1.8px;display:inline-flex;align-items:center}
.wordmark span{color:var(--orange)}.wordmark i{font-size:30px;font-style:normal;margin-left:9px;line-height:1}
.header nav{display:flex;align-items:center;gap:34px;font-size:14px;font-weight:500}.header nav a:hover{color:var(--orange)}
.github-link{padding:8px 18px;background:#eeeee3;border-radius:999px;font-family:var(--display);font-weight:600;font-size:15px}.github-link span{margin-left:9px}
.hero{display:grid;grid-template-columns:1.16fr 1fr;align-items:center;min-height:570px;padding-top:38px;padding-bottom:75px;gap:18px}
.eyebrow{font-family:var(--display);font-size:12px;letter-spacing:2px;font-weight:600;line-height:1.4;margin:0 0 24px}
.hero .eyebrow{display:flex;align-items:center;gap:10px;letter-spacing:2.2px}.sun{color:var(--orange);font-size:25px;line-height:1}
.hero h1{font-size:clamp(35px,3.8vw,55px);font-weight:800;letter-spacing:-1.9px;line-height:1.42;margin:0 0 26px;white-space:nowrap}
.scribble{position:relative;color:var(--orange);z-index:0}.scribble svg{position:absolute;left:0;bottom:-8px;width:100%;height:15px;fill:none;stroke:var(--yellow);stroke-width:6;stroke-linecap:round;z-index:-1}
.hero-description{font-size:15px;line-height:2.1;color:var(--muted);margin:0 0 28px}.hero-actions{display:flex;align-items:center;gap:24px}
.button{display:inline-flex;justify-content:center;align-items:center;gap:23px;padding:13px 23px;min-height:50px;border:0;border-radius:999px;font-size:14px;font-weight:600;line-height:1.5;transition:transform var(--ease),background var(--ease)}
.button:hover{transform:translateY(-3px)}.primary{background:var(--ink);color:var(--paper)}.primary:hover{background:var(--green)}
.hand-note{position:relative;font-size:12px;color:var(--muted);transform:rotate(-5deg)}.hand-note svg{width:55px;height:25px;position:absolute;top:18px;left:-28px;stroke:var(--muted);stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.hero-footnote{margin-top:43px;display:flex;align-items:center;gap:8px;font-size:10px;font-family:var(--display);letter-spacing:1px;color:var(--muted)}
.status-dot{display:inline-block;flex-shrink:0;width:7px;height:7px;border-radius:50%;background:#53835a}.separator{margin:0 7px;color:#a4aa9a}
.hero-art{position:relative;height:410px;isolation:isolate}.mascot-backdrop{position:absolute;inset:35px 0 12px 12px;border-radius:46% 49% 42% 47%;background:#f6dda0;transform:rotate(-7deg);z-index:-1}
.hero-mascot{position:absolute;width:100%;max-width:100%;height:390px;object-fit:cover;object-position:53% 50%;left:0;top:0;mix-blend-mode:multiply;mask-image:radial-gradient(ellipse 43% 48% at 52% 50%,#000 64%,transparent 100%)}
.hello-bubble{position:absolute;left:4px;top:14px;background:var(--paper);padding:11px 21px;z-index:2;border-radius:20px 20px 4px 20px;transform:rotate(-9deg);font-weight:500;font-size:13px;box-shadow:0 5px 0 #e6d3a7}
.art-star{position:absolute;color:var(--orange);z-index:2}.star-one{font-size:42px;right:8px;top:20px;transform:rotate(14deg)}.star-two{font-size:25px;left:9px;bottom:82px;color:var(--green)}
.mascot-caption{position:absolute;right:4px;bottom:-20px;transform:rotate(-5deg);font-size:16px;font-weight:700;line-height:1.8}.mascot-caption small{font-size:11px;font-weight:400;color:var(--muted)}.caption-arrow{position:absolute;left:-34px;top:-17px;font-size:35px;font-weight:400}
.orbit-note{position:absolute;left:35px;bottom:-10px;font:9px var(--display);letter-spacing:1.3px;transform:rotate(6deg);color:var(--muted)}
.works{padding-top:50px;padding-bottom:10px;scroll-margin-top:20px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px}.section-heading .eyebrow{margin-bottom:11px}.section-heading h2{font-size:32px;letter-spacing:-1px;line-height:1.5;margin:0;font-weight:800}
.orange{color:var(--orange)}.heading-star{font-size:35px;color:var(--orange);margin-left:12px;display:inline-block;transform:rotate(-9deg);vertical-align:middle}.section-heading>p{font-size:12px;line-height:2;color:var(--muted);margin:0 0 4px}
.work-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:32px 0 30px}.filters{display:flex;flex-wrap:wrap;gap:6px}.filter{background:transparent;border:0;border-radius:999px;padding:9px 16px;font-size:12px;font-weight:500;white-space:nowrap;transition:background var(--ease),color var(--ease)}
.filter span{font:10px var(--display);margin-left:6px;opacity:.75}.filter.active{background:var(--ink);color:var(--paper)}.filter:hover:not(.active){background:var(--soft)}.work-count{font-size:10px;color:var(--muted);white-space:nowrap}
.featured{background:#e6eee8;border-radius:var(--radius);display:grid;grid-template-columns:1.65fr 1fr;overflow:hidden;margin-bottom:55px}.featured .project-media{aspect-ratio:auto;min-height:350px;border-radius:0;background:#e6eee8}.featured .project-cover{height:100%;object-fit:cover}
.featured-copy{padding:35px 31px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.featured-kicker{font:11px var(--display);letter-spacing:1.2px;margin:0 0 20px;color:var(--green)}.featured h3{font-size:28px;line-height:1.4;margin:12px 0 3px;font-weight:800;letter-spacing:-.8px}.english-title{font:14px var(--display);color:var(--muted);margin:0}
.featured .project-description{font-size:13px;margin:20px 0 15px}.project-description{font-size:13px;line-height:1.95;color:var(--muted);margin:13px 0 17px;max-width:530px}.project-tags{display:flex;flex-wrap:wrap;gap:12px;font-size:10px;color:var(--green);margin:0 0 20px}
.project-actions{display:flex;align-items:center;flex-wrap:wrap;gap:16px;font-size:12px;margin-top:auto}.project-actions .button{padding:11px 18px;font-size:12px;min-height:42px;gap:20px}.text-link{font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:15px}.text-link:hover{color:var(--orange)}
.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:49px 34px}.project{min-width:0;display:flex;flex-direction:column}.project-media{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:var(--radius);background:var(--soft)}.project-cover{width:100%;height:100%;object-fit:cover;transition:transform 600ms cubic-bezier(.22,1,.36,1)}.project-media:hover>.project-cover{transform:scale(1.025)}.project-media video{width:100%;height:100%;object-fit:contain;background:#263a32}
.play-button{position:absolute;bottom:18px;left:18px;padding:9px 16px;background:var(--paper);border:0;border-radius:999px;font-size:11px;font-weight:600;display:flex;align-items:center;gap:9px;min-height:40px;transition:transform var(--ease),background var(--ease)}.play-button:hover{transform:translateY(-3px);background:var(--yellow)}.play-icon{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:var(--paper);font-size:8px;padding-left:1px}
.media-note{position:absolute;bottom:16px;right:18px;font-size:9px;background:#faf8f0ed;color:var(--muted);padding:3px 9px;border-radius:999px}.project-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:19px}.project-heading h3{margin:0;font-size:22px;line-height:1.5;letter-spacing:-.5px;font-family:var(--display);font-weight:700}.project-heading h3 small{font-size:12px;font-weight:400;color:var(--muted);margin-left:8px}
.project-status{font-size:10px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.project-status.development{color:#856024}.project-status.development .status-dot{background:#bf8d3c}.project-status.local{color:var(--muted)}.project-status.local .status-dot{background:#91998e}
.pending{font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.pending-video{font-size:11px;color:var(--muted)}.pending-video:before{content:'▷';margin-right:6px;font-size:14px}.project .project-tags{margin-top:auto;margin-bottom:16px}.project .project-description{min-height:51px}.project .project-actions{min-height:32px;margin-top:0}.project-actions .pending{font-size:12px}
.inline-film{grid-column:1/-1;margin-top:17px;padding:20px;background:#eeeee2;border-radius:var(--radius)}.film-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:15px;font-size:12px}.film-close{background:var(--paper);border:0;border-radius:999px;padding:8px 17px;font-size:12px}.inline-film iframe{display:block;width:100%;height:min(850px,76vw);min-height:450px;border:0;border-radius:12px;background:#eee9db}.film-fallback{display:inline-block;font-size:11px;margin-top:12px;text-decoration:underline;text-underline-offset:4px}.media-error{padding:15px;font-size:12px;background:var(--paper);margin:0}
.work-end{margin:63px 0 70px;display:flex;align-items:center;gap:18px;background:#efeee3;padding:24px 29px;border-radius:17px}.work-end>span{font-size:38px;color:var(--orange);line-height:1}.work-end p{margin:0;font-size:14px;font-weight:500}.work-end small{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:3px}.work-end a{margin-left:auto;font-size:12px}.work-end a:hover{color:var(--orange)}.work-end a span{margin-left:12px}
.about{background:#f1eadb;padding:66px 0 62px;scroll-margin-top:0}.about-inner{display:grid;grid-template-columns:1fr 1.03fr;gap:80px;align-items:center}.about .eyebrow{font-size:10px;margin-bottom:20px}.about h2{font-size:31px;line-height:1.65;letter-spacing:-1px;margin:0 0 21px}.about-copy>p:not(.eyebrow){font-size:12px;line-height:2.1;color:var(--muted);max-width:450px;margin:12px 0}.about-copy .text-link{margin-top:15px;font-size:12px}
.about-film video{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:17px;background:#d9dece}.film-label{display:flex;justify-content:space-between;font-size:9px;margin-bottom:10px;letter-spacing:1px;font-family:var(--display);color:var(--muted)}.about-film>p{font-size:11px;text-align:center;color:var(--muted);margin:11px 0 0}
.footer{padding-block:36px 32px;display:flex;align-items:center;justify-content:space-between;gap:25px}.footer .wordmark{font-size:25px}.footer .wordmark i{font-size:23px}.footer p{font-size:10px;color:var(--muted);margin:10px 0 0}.footer-right{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:12px 24px;font-size:11px}.footer-right>span{width:100%;text-align:right;color:var(--muted);font-size:10px}.footer-right a:hover{color:var(--orange)}
@media(min-width:1500px){.hero h1{font-size:56px}.hero{gap:45px;min-height:620px}.hero-art{height:440px}.hero-mascot{height:420px}}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.hero{grid-template-columns:1.2fr 1fr;gap:0;min-height:520px}.hero h1{font-size:38px}.hero-art{height:350px}.hero-mascot{height:340px}.mascot-backdrop{inset:38px -5px 5px 5px}.hero-description{font-size:13px}.hand-note{font-size:10px}.hero-actions{gap:17px}.hero-footnote{font-size:9px}.mascot-caption{font-size:14px;right:-8px}.orbit-note{left:13px;font-size:8px}.featured-copy{padding:24px}.featured .project-media{min-height:330px}.featured h3{font-size:25px}.featured-kicker{font-size:9px;margin-bottom:13px}.featured .project-description{font-size:12px}.featured .project-tags{gap:8px}.section-heading h2{font-size:28px}.about-inner{gap:40px}.project-heading h3{font-size:20px}}
@media(max-width:760px){
  .wrap{width:calc(100% - 40px)}.header{min-height:84px;gap:12px}.wordmark{font-size:28px}.wordmark i{font-size:26px;margin-left:5px}.header nav{gap:18px;font-size:12px}.header .github-link{padding:6px 11px;font-size:12px}
  .hero{grid-template-columns:1fr;padding-top:28px;padding-bottom:40px;gap:20px;min-height:0}.hero h1{font-size:clamp(32px,6.6vw,50px);letter-spacing:-1.5px}.hero .eyebrow{font-size:11px;margin-bottom:20px}.hero-description{font-size:13px}.hero-footnote{margin-top:31px;font-size:9px}.hero-art{width:min(450px,100%);height:320px;margin:0 auto 8px}.hero-mascot{height:320px}.mascot-backdrop{inset:30px 22px 10px}.hello-bubble{left:24px;top:24px;font-size:11px}.star-one{right:27px;font-size:35px;top:30px}.star-two{left:22px}.mascot-caption{right:24px;bottom:-4px;font-size:13px}.mascot-caption small{font-size:10px}.orbit-note{left:38px;bottom:4px;font-size:7px}
  .works{padding-top:25px}.section-heading{align-items:flex-start;gap:10px;flex-direction:column}.section-heading h2{font-size:clamp(22px,4.6vw,32px)}.section-heading .eyebrow{font-size:10px}.section-heading>p br{display:none}.section-heading>p{font-size:11px}.heading-star{font-size:28px;margin-left:6px}.work-toolbar{display:block;margin:24px 0 22px}.filters{gap:2px}.filter{font-size:11px;padding:8px 10px}.filter span{font-size:9px;margin-left:4px}.work-count{margin:13px 0 0;font-size:10px}
  .featured{grid-template-columns:1fr;margin-bottom:34px}.featured .project-media{min-height:0;aspect-ratio:16/9}.featured-copy{padding:25px}.featured h3{font-size:27px}.featured-kicker{margin-bottom:14px}.featured .project-description{font-size:13px;margin:15px 0}.project-grid{gap:34px 20px}.project-heading{align-items:flex-start;margin-top:14px;flex-wrap:wrap;gap:5px}.project-heading h3{font-size:19px}.project-heading h3 small{display:block;margin-left:0;font-size:10px}.project-status{font-size:9px}.project-description{font-size:12px;margin-top:10px;line-height:1.9}.project .project-description{min-height:0}.project-tags{font-size:9px;gap:7px}.project-actions{gap:10px}.project-actions .text-link{font-size:12px;gap:7px}.pending-video{font-size:10px}.play-button{bottom:12px;left:12px;padding:6px 11px;font-size:10px;min-height:34px;gap:6px}.play-icon{width:21px;height:21px}.media-note{font-size:8px;right:10px;bottom:10px;padding:2px 7px}
  .work-end{margin:40px 0;padding:20px;gap:12px;flex-wrap:wrap}.work-end p{font-size:12px}.work-end small{font-size:10px}.work-end a{font-size:11px}.about{padding:42px 0}.about-inner{grid-template-columns:1fr;gap:32px}.about h2{font-size:28px}.about-copy>p:not(.eyebrow){max-width:100%}.footer{align-items:flex-start;padding-block:29px;gap:20px}.footer-right{gap:8px 15px;font-size:10px;max-width:210px}.footer-right>span{font-size:9px}.inline-film{padding:14px}.inline-film iframe{min-height:550px;height:90vw}
}
@media(max-width:500px){.header nav{gap:13px;font-size:11px}.header .github-link{background:transparent;padding:0;font-size:12px}.header .github-link span{margin-left:2px}.hero h1{font-size:clamp(29px,7.3vw,37px)}.hero-actions{gap:18px}.hero-actions .button{font-size:12px;padding:13px 19px;gap:18px}.hand-note{font-size:10px}.project-grid{grid-template-columns:1fr;gap:34px}.project-heading{flex-wrap:nowrap;align-items:center}.project-heading h3{font-size:22px}.project-heading h3 small{display:inline;margin-left:7px;font-size:11px}.project-description{font-size:13px}.project-tags{font-size:10px}.project-actions{gap:19px}.project-actions .text-link{font-size:13px}.pending-video{font-size:11px}.filter{font-size:10px;padding:8px 9px}.filter span{margin-left:3px;font-size:8px}.play-button{font-size:11px}.work-end a{margin-left:48px}.work-end>span{font-size:32px}.footer-right{max-width:170px}.inline-film iframe{min-height:570px}}
@media(prefers-reduced-motion:no-preference){.hero-copy{animation:arrive 650ms both}.hero-art{animation:arrive 800ms 100ms both}.project{animation:arrive 400ms both}@keyframes arrive{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
