.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@view-transition{navigation:auto}:root{--concrete: #ECEAE5;--concrete-2: #E3E0D9;--paper: #F5F3EE;--ink: #0E0E0E;--ink-2: #1F1F1E;--mute: #7A7772;--mute-2: #B0ADA6;--hazard: #FF3D00;--hazard-deep:#CC3000;--grid: rgba(14,14,14,.06);--font-display: "Space Grotesk", "Noto Sans TC", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;--font-tc: "Noto Sans TC", system-ui, sans-serif;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--s-9: 96px;--s-10: 128px;--hair: 1px solid var(--ink);--thick: 2px solid var(--ink);--dash: 1px dashed var(--mute);--ease: cubic-bezier(.2, .8, .2, 1)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}ul,ol{margin:0;padding:0;list-style:none}body{background:var(--concrete);color:var(--ink);font-family:var(--font-display);font-size:16px;line-height:1.5;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:64px 64px}.mono{font-family:var(--font-mono);font-feature-settings:"ss01","zero"}.tc{font-family:var(--font-tc)}.upper{text-transform:uppercase;letter-spacing:.06em}.tight{letter-spacing:-.02em}.hazard{color:var(--hazard)}.mute{color:var(--mute)}.hide-desktop{display:block}@media(min-width:900px){.hide-desktop{display:none}}.hide-mobile{display:none}@media(min-width:900px){.hide-mobile{display:block}}.statusbar{position:sticky;top:0;z-index:50;display:grid;grid-template-columns:auto 1fr auto auto;gap:var(--s-5);padding:var(--s-2) var(--s-4);background:var(--concrete);border-bottom:var(--hair);font-family:var(--font-mono);font-size:11px;letter-spacing:.02em;text-transform:uppercase}.statusbar .sb-dot{display:inline-block;width:8px;height:8px;background:var(--hazard);margin-right:var(--s-2);vertical-align:middle;animation:blink 1.4s steps(2) infinite}.statusbar .sb-path{color:var(--ink)}.statusbar .sb-meta{color:var(--mute);text-align:right}.statusbar .sb-time{color:var(--mute)}.statusbar .sb-lang{display:inline-flex;gap:4px}.statusbar .sb-lang a{padding:2px 6px;border:var(--hair);color:var(--mute)}.statusbar .sb-lang a.is-active{background:var(--ink);color:var(--concrete)}@keyframes blink{0%{opacity:1}50%{opacity:.1}to{opacity:1}}.page{max-width:1440px;margin:0 auto}.section-head{display:grid;grid-template-columns:auto 1fr auto;gap:var(--s-5);align-items:baseline;padding:var(--s-5) var(--s-4) var(--s-3);border-top:var(--thick);border-bottom:var(--hair)}.section-head .eyebrow{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}.section-head h2{font-family:var(--font-display);font-weight:700;font-size:clamp(28px,4vw,44px);letter-spacing:-.02em;margin:0}.section-head .count{font-family:var(--font-mono);font-size:12px;color:var(--mute)}.hero{display:grid;grid-template-columns:1fr;padding:var(--s-7) var(--s-4) var(--s-8);border-bottom:var(--thick);position:relative}@media(min-width:900px){.hero{grid-template-columns:1.4fr 1fr;gap:var(--s-7);padding:var(--s-9) var(--s-5) var(--s-10)}}.hero h1{font-family:var(--font-display);font-weight:700;font-size:clamp(44px,8vw,112px);line-height:.92;letter-spacing:-.035em;margin:0 0 var(--s-5)}.hero h1 .tc-line{display:block;font-family:var(--font-tc);font-weight:900;font-size:.58em;letter-spacing:.02em;margin-top:var(--s-4);color:var(--ink-2)}.hero h1 .dot{display:inline-block;width:.28em;height:.28em;background:var(--hazard);transform:translateY(-.1em);margin-left:.1em;animation:blink 1.4s steps(2) infinite}.hero .bio{font-family:var(--font-mono);font-size:13px;line-height:1.7;color:var(--ink-2);max-width:42ch}.hero .bio .label{color:var(--mute);text-transform:uppercase;letter-spacing:.08em;font-size:11px;display:block;margin-bottom:var(--s-2)}.hero .bio-row{border-top:var(--dash);padding:var(--s-4) 0}.hero .bio-row:first-of-type{border-top:0;padding-top:0}.hero .pin{position:absolute;top:var(--s-4);right:var(--s-4);font-family:var(--font-mono);font-size:11px;text-transform:uppercase;color:var(--mute)}.bio figure{margin:0;padding:0}.bio figure picture{display:block;position:relative;border:var(--hair);background:var(--ink);overflow:hidden}.bio figure img{display:block;width:100%;height:auto}.bio figure figcaption{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);margin-top:var(--s-2)}.bio-row.bio-portrait figure{max-width:220px}.bio-row.bio-scale figure picture{aspect-ratio:16 / 9}.bio-row.bio-scale figure img{width:100%;height:100%;object-fit:cover}.grid{display:grid;grid-template-columns:repeat(12,1fr);border-bottom:var(--thick)}.card{grid-column:span 12;border-right:var(--hair);border-bottom:var(--hair);padding:var(--s-4);background:var(--concrete);position:relative;transition:background .2s var(--ease)}.card:last-child{border-bottom:0}@media(min-width:700px){.card{grid-column:span 6}.card:nth-child(2n){border-right:0}.card:nth-last-child(-n+2){border-bottom:0}}@media(min-width:1100px){.card{grid-column:span 4}.card:nth-child(2n){border-right:var(--hair)}.card:nth-child(3n){border-right:0}.card:nth-last-child(-n+2){border-bottom:var(--hair)}.card:nth-last-child(-n+3){border-bottom:0}}.card:hover{background:var(--paper)}.card:hover .card-id{color:var(--hazard)}.card:hover .card-cta:after{transform:translate(4px)}.card-thumb{position:relative;aspect-ratio:4 / 3;background:var(--ink);overflow:hidden;margin-bottom:var(--s-4)}.card-thumb[data-ratio=portrait]{aspect-ratio:3 / 4}.card-thumb[data-ratio=wide]{aspect-ratio:16 / 9}.card-thumb:after{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(135deg,transparent 0 22px,rgba(255,255,255,.04) 22px 44px)}.card-thumb .placeholder{position:absolute;inset:0;display:grid;place-items:center;color:var(--mute-2);font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}.card-meta{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--s-2)}.card-id{color:var(--ink)}.card-title{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.01em;margin:0 0 var(--s-1)}.card-title-tc{font-family:var(--font-tc);font-weight:700;font-size:14px;color:var(--mute);margin-bottom:var(--s-3)}.card-desc{font-family:var(--font-mono);font-size:12px;color:var(--ink-2);line-height:1.6}.card-cta{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin-top:var(--s-4);display:inline-block}.card-cta:after{content:" →";display:inline-block;transition:transform .2s var(--ease)}.card-thumb[data-kind=model]{background:var(--paper)}.card-thumb[data-kind=model]:after{background-image:linear-gradient(var(--mute) 1px,transparent 1px),linear-gradient(90deg,var(--mute) 1px,transparent 1px);background-size:24px 24px;opacity:.22}.card-thumb[data-kind=model] .placeholder{color:var(--mute)}.card-thumb[data-kind=hybrid]{background:var(--concrete-2)}.card-thumb[data-kind=hybrid] .placeholder{color:var(--mute)}.card.feat .card-thumb{aspect-ratio:16 / 10}@media(min-width:1100px){.card.feat{grid-column:span 6}.card.feat+.card{grid-column:span 6}}.series-hero{border-bottom:var(--thick);padding:0;position:relative}.series-hero .img{aspect-ratio:16 / 9;background:var(--ink);position:relative;overflow:hidden}.series-hero .img:after{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(135deg,transparent 0 30px,rgba(255,255,255,.04) 30px 60px)}.series-hero .img .placeholder{position:absolute;inset:0;display:grid;place-items:center;color:var(--mute-2);font-family:var(--font-mono);font-size:13px;letter-spacing:.1em}.series-meta{display:grid;grid-template-columns:1fr;gap:0;border-bottom:var(--thick)}@media(min-width:900px){.series-meta{grid-template-columns:1.3fr 1fr}}.series-title{padding:var(--s-7) var(--s-5);border-right:var(--hair)}.series-title .eyebrow{font-family:var(--font-mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin-bottom:var(--s-4)}.series-title h1{font-family:var(--font-display);font-weight:700;font-size:clamp(36px,5vw,72px);letter-spacing:-.025em;line-height:.98;margin:0 0 var(--s-4)}.series-title .h-tc{font-family:var(--font-tc);font-weight:700;font-size:clamp(18px,2vw,24px);color:var(--mute)}.series-intro{padding:var(--s-7) var(--s-5);font-family:var(--font-mono);font-size:13px;line-height:1.75;color:var(--ink-2)}.meta-strip{display:grid;grid-template-columns:repeat(2,1fr);border-bottom:var(--thick);font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em}@media(min-width:700px){.meta-strip{grid-template-columns:repeat(5,1fr)}}.meta-strip>div{padding:var(--s-4) var(--s-4);border-right:var(--hair)}.meta-strip>div:last-child{border-right:0}.meta-strip .k{color:var(--mute);display:block;margin-bottom:4px}.meta-strip .v{color:var(--ink)}.frames{display:grid;grid-template-columns:repeat(12,1fr);border-bottom:var(--thick)}.frame{grid-column:span 12;border-right:var(--hair);border-bottom:var(--hair);padding:var(--s-4)}.frame .img{aspect-ratio:3 / 2;background:var(--ink);position:relative;overflow:hidden;margin-bottom:var(--s-3)}.frame .img[data-ratio=portrait]{aspect-ratio:3 / 4}.frame .img[data-ratio=square]{aspect-ratio:1 / 1}.frame .img[data-ratio=wide]{aspect-ratio:16 / 9}.frame .img:after{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(135deg,transparent 0 20px,rgba(255,255,255,.04) 20px 40px)}.frame .img .placeholder{position:absolute;inset:0;display:grid;place-items:center;color:var(--mute-2);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em}.frame .caption{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.06em}.frame .caption .k{color:var(--ink)}@media(min-width:700px){.frame{grid-column:span 6}.frame.wide{grid-column:span 12}.frame.tall{grid-column:span 6}}@media(min-width:1100px){.frame{grid-column:span 4}.frame.wide{grid-column:span 8}.frame.tall{grid-column:span 4}.frame.full{grid-column:span 12}}.work-head{display:grid;grid-template-columns:1fr;border-bottom:var(--thick)}@media(min-width:900px){.work-head{grid-template-columns:1.5fr 1fr}}.work-head .title{padding:var(--s-7) var(--s-5);border-right:var(--hair)}.work-head .title .eyebrow{font-family:var(--font-mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin-bottom:var(--s-4)}.work-head .title h1{font-family:var(--font-display);font-weight:700;font-size:clamp(36px,5.5vw,84px);line-height:.96;letter-spacing:-.03em;margin:0 0 var(--s-3)}.work-head .title .h-tc{font-family:var(--font-tc);font-weight:700;font-size:clamp(18px,2vw,26px);color:var(--mute)}.work-head .info{padding:var(--s-7) var(--s-5);display:grid;grid-template-columns:1fr 1fr;gap:var(--s-4);font-family:var(--font-mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.work-head .info .k{color:var(--mute);display:block;margin-bottom:4px}.work-head .info .v{color:var(--ink)}.work-content{padding:var(--s-8) var(--s-5);border-bottom:var(--thick)}.work-content .lede{font-family:var(--font-display);font-size:clamp(22px,2.6vw,32px);line-height:1.28;letter-spacing:-.01em;max-width:28ch;margin:0 0 var(--s-8)}.work-content .lede .tc{font-family:var(--font-tc);display:block;font-size:.7em;color:var(--mute);margin-top:var(--s-2)}.work-content h3{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin:var(--s-8) 0 var(--s-4);padding-top:var(--s-4);border-top:var(--hair)}.work-content p{font-family:var(--font-mono);font-size:13px;line-height:1.75;max-width:60ch;margin:0 0 var(--s-4);color:var(--ink-2)}.work-content .fig{margin:var(--s-6) 0}.work-content .fig-hero{max-width:760px;margin:var(--s-6) auto var(--s-8)}.work-content .fig-grid{display:grid;grid-template-columns:1fr;gap:var(--s-5);margin:var(--s-7) 0 0;border-top:var(--hair);padding-top:var(--s-6)}@media(min-width:700px){.work-content .fig-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1100px){.work-content .fig-grid{grid-template-columns:repeat(3,1fr)}}.work-content .fig-grid .fig{margin:0}.work-content .fig-grid .fig .img{aspect-ratio:4 / 3}.work-content .fig-grid .fig .caption{font-size:10px;padding:6px 0}.work-content .fig .img{aspect-ratio:16 / 9;background:var(--ink);position:relative;overflow:hidden}.work-content .fig .img[data-ratio=schematic]{aspect-ratio:3 / 2;background:var(--paper);border:var(--hair)}.work-content .fig .img:after{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(135deg,transparent 0 24px,rgba(255,255,255,.04) 24px 48px)}.work-content .fig .img[data-ratio=schematic]:after{background-image:linear-gradient(var(--mute) 1px,transparent 1px),linear-gradient(90deg,var(--mute) 1px,transparent 1px);background-size:24px 24px;opacity:.25}.work-content .fig .img .placeholder{position:absolute;inset:0;display:grid;place-items:center;color:var(--mute-2);font-family:var(--font-mono);font-size:12px;letter-spacing:.08em}.work-content .fig[data-ratio=schematic] .placeholder{color:var(--mute)}.work-content .fig .caption{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;padding:var(--s-2) 0;border-top:var(--hair);margin-top:var(--s-2)}.work-content .fig .caption .k{color:var(--ink)}.spec-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:12px;margin:var(--s-5) 0}.spec-table tr{border-bottom:var(--hair)}.spec-table tr:first-child{border-top:var(--hair)}.spec-table th,.spec-table td{padding:var(--s-3) 0;text-align:left;vertical-align:top}.spec-table th{color:var(--mute);font-weight:400;text-transform:uppercase;letter-spacing:.06em;width:30%}.spec-table td{color:var(--ink)}.adjnav{display:grid;grid-template-columns:1fr 1fr;border-bottom:var(--thick)}.adjnav a{padding:var(--s-6) var(--s-5);border-right:var(--hair);display:block;transition:background .2s var(--ease)}.adjnav a:last-child{border-right:0;text-align:right}.adjnav a:hover{background:var(--paper)}.adjnav a:hover .id{color:var(--hazard)}.adjnav .dir{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin-bottom:var(--s-2)}.adjnav .id{font-family:var(--font-mono);font-size:12px;color:var(--ink);margin-bottom:var(--s-1)}.adjnav .t{font-family:var(--font-display);font-size:clamp(20px,2.2vw,28px);letter-spacing:-.01em;font-weight:700}.footer{background:var(--ink);color:var(--concrete);padding:var(--s-9) var(--s-5) var(--s-5);position:relative}.footer h2{font-family:var(--font-display);font-weight:700;font-size:clamp(40px,7vw,96px);line-height:.92;letter-spacing:-.035em;margin:0 0 var(--s-6)}.footer h2 .hazard{color:var(--hazard)}.footer h2 .tc{display:block;font-family:var(--font-tc);font-size:.4em;color:var(--mute-2);margin-top:var(--s-3)}.footer .cols{display:grid;grid-template-columns:1fr;gap:var(--s-6);padding:var(--s-6) 0;border-top:1px solid #2a2a2a}@media(min-width:900px){.footer .cols{grid-template-columns:2fr 1fr 1fr}}.footer .col .label{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--mute-2);margin-bottom:var(--s-3)}.footer .col p{font-family:var(--font-mono);font-size:13px;line-height:1.7;margin:0 0 var(--s-3);color:var(--concrete)}.footer .col a{display:block;font-family:var(--font-mono);font-size:13px;color:var(--concrete);padding:4px 0;border-bottom:1px solid transparent;transition:color .2s var(--ease),border-color .2s var(--ease)}.footer .col a:hover{color:var(--hazard);border-bottom-color:var(--hazard)}.footer .sig{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:11px;color:var(--mute-2);text-transform:uppercase;letter-spacing:.06em;padding-top:var(--s-4);border-top:1px solid #2a2a2a}@media(min-width:900px)and (hover:hover)and (pointer:fine){body,a,button,.card,.adjnav a{cursor:none}.cursor{position:fixed;top:0;left:0;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);will-change:transform}.cursor-dot{width:8px;height:8px;background:var(--ink);border-radius:50%;box-shadow:0 0 0 1px var(--concrete)}.cursor.is-hazard .cursor-dot{background:var(--hazard)}.cursor-label{position:absolute;top:14px;left:14px;padding:3px 6px;background:var(--ink);color:var(--concrete);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;opacity:0;transition:opacity .15s var(--ease)}.cursor.has-label .cursor-label{opacity:1}}[data-enter]{opacity:0;transform:translateY(24px)}[data-enter=fade]{transform:none}[data-enter=slide-left]{transform:translate(-32px)}.card-thumb picture,.series-hero .img picture,.frame .img picture,.work-content .fig .img picture{position:absolute;inset:0;display:block}.card-thumb img,.series-hero .img img,.frame .img img,.work-content .fig .img img,.work-content .fig .img video{width:100%;height:100%;object-fit:cover;display:block}.work-content .fig .img video{background:var(--ink)}.card-thumb:has(img):after,.series-hero .img:has(img):after,.frame .img:has(img):after,.work-content .fig .img:has(img):after{opacity:.25}.card-thumb:has(img) .placeholder,.series-hero .img:has(img) .placeholder,.frame .img:has(img) .placeholder,.work-content .fig .img:has(img) .placeholder{display:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}[data-enter]{opacity:1!important;transform:none!important}}body.theme-dark{--concrete: #0B0B0B;--concrete-2: #16161A;--paper: #161614;--ink: #ECEAE5;--ink-2: #D8D5CF;--mute: #7A7772;--mute-2: #4A4845;--grid: rgba(236,234,229,.04);color:var(--ink);background:var(--concrete)}body.theme-dark .card-thumb,body.theme-dark .series-hero .img,body.theme-dark .frame .img,body.theme-dark .work-content .fig .img:not([data-ratio=schematic]){background:#050505}body.theme-dark .card-thumb .placeholder,body.theme-dark .series-hero .img .placeholder,body.theme-dark .frame .img .placeholder,body.theme-dark .work-content .fig .img .placeholder{color:#55524c}body.theme-dark .card-thumb:after,body.theme-dark .series-hero .img:after,body.theme-dark .frame .img:after,body.theme-dark .work-content .fig .img:after{background-image:repeating-linear-gradient(135deg,transparent 0 30px,rgba(255,255,255,.025) 30px 60px)}body.theme-dark .footer{background:#050505;color:var(--ink);border-top:1px solid var(--hazard)}body.theme-dark .footer h2,body.theme-dark .footer .col p,body.theme-dark .footer .col a{color:var(--ink)}body.theme-dark .footer .cols,body.theme-dark .footer .sig{border-color:#1a1a18}body.theme-dark .statusbar{background:var(--concrete);border-bottom:1px solid #2a2a28}body.theme-dark .statusbar .sb-lang a{border-color:#2a2a28}body.theme-dark .statusbar .sb-lang a.is-active{background:var(--ink);color:#0b0b0b}body.theme-dark .section-head,body.theme-dark .series-meta,body.theme-dark .meta-strip,body.theme-dark .frames,body.theme-dark .work-head,body.theme-dark .work-content,body.theme-dark .adjnav,body.theme-dark .hero{border-color:#2a2a28}body.theme-dark .card,body.theme-dark .frame,body.theme-dark .meta-strip>div,body.theme-dark .adjnav a,body.theme-dark .series-title,body.theme-dark .work-head .title{border-color:#2a2a28}body.theme-dark .card:hover,body.theme-dark .adjnav a:hover{background:#141412}body.theme-dark .cursor-dot{background:var(--ink);box-shadow:0 0 0 1px var(--concrete)}body.theme-dark .cursor-label{background:var(--ink);color:#0b0b0b}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
