html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-stopped{overflow:hidden}::selection{background:var(--ts-gray-800);color:var(--ts-gray-50)}.icon{vertical-align:-.125em;overflow:visible}.ts-pagination .item.is-back:before,.ts-pagination .item.is-next:after{content:none}.ts-button.is-start-icon .icon{margin-right:.5em;font-size:1.2em}:root{height:auto;scroll-padding-top:7rem;display:block;overflow-y:scroll}@supports (scrollbar-gutter:stable){:root{scrollbar-gutter:stable;overflow-y:auto}}:root body{flex-direction:column;min-height:100vh;font-family:Noto Sans TC,PingFang TC,PingFang HK,Microsoft JhengHei,微軟正黑體,Noto Sans CJK TC,Heiti TC,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;overflow-x:clip}:root body>main{flex:1 0 auto;min-height:calc(100svh - 5rem)}.site-header{z-index:100;background:var(--ts-page-background-default);position:sticky;top:0}.site-header a.ts-header{font-size:1.45rem}.site-header .inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1.5rem 0;display:flex}.site-header nav{align-items:center;gap:.5rem;display:flex}.site-header .ts-tab{gap:.5rem}.site-header .ts-tab .item{transition:background-color .15s,filter .15s}.site-header .ts-tab .item:not(.is-active):hover{background:var(--ts-gray-100)}.site-header .ts-tab .item.is-active{cursor:pointer}.site-header .ts-tab .item.is-active:hover{filter:brightness(1.25)}@media (width<=767px){.site-header .inner{gap:.5rem;padding:.75rem 0}.site-header nav{gap:.25rem;width:100%}.site-header nav>.ts-button{flex:none}.site-header .ts-tab{scrollbar-width:none;flex-wrap:nowrap;flex:auto;min-width:0;overflow-x:auto}.site-header .ts-tab::-webkit-scrollbar{display:none}.site-header .ts-tab .item{white-space:nowrap;padding-inline:.5rem;font-size:.875rem}}.site-header .ts-header,.ts-chip,.links-list a,.links-list .ts-text.is-secondary,.post-row-text,.post-meta-author,.toc a,.post-title,.trophy-caption,.gallery-caption,.gear-label,.gear-body .ts-text.is-bold,.entry-note,.stat-grid,.search-results li a,.md-content{overflow-wrap:anywhere}.ts-chip{max-width:100%;height:auto;min-height:var(--height,auto)}.hero{padding:6rem 0 4rem}.hero.not-found{text-align:center}.section-title{justify-content:space-between;align-items:baseline;gap:1rem;margin:4rem 0 1.5rem;display:flex}.pagination-wrap{justify-content:center;margin:3rem 0;display:flex}.about-layout{grid-template-columns:288px minmax(0,1fr);align-items:start;gap:3rem;margin:3rem 0;display:grid}.about-aside{margin-top:2rem;position:sticky;top:7rem}.about-main .ts-box{border:0}.about-card{text-align:center;overflow:visible}.ts-box.about-card .ts-content{padding-block-start:3.75rem}.about-card .ts-header+.ts-text{margin-top:.25rem}.about-card .ts-header{justify-content:center}.about-main{flex-direction:column;gap:2rem;display:flex}.about-main .ts-header{gap:.5rem}.about-main .ts-header .ts-divider{flex:1;margin-inline-start:.5rem}.about-main .ts-content>.ts-header+*{margin-top:1.5rem}.about-avatar{border:3px solid var(--ts-gray-300);border-radius:50%;width:136px;height:136px;margin-inline:auto;display:block}.about-main .ts-timeline .content>.ts-text.is-secondary{font-size:var(--ts-font-size-tiny)}.about-main .ts-timeline{grid-template-columns:5.5rem min-content minmax(0,1fr)}.about-main .ts-timeline .aside{font-size:var(--ts-font-size-tiny)}.about-main .ts-timeline .item .indicator .icon{box-sizing:border-box;background:var(--ts-gray-100);width:30px;height:30px;color:var(--ts-gray-600);vertical-align:initial;border-radius:100rem;padding:7px}.entry-note{border-radius:var(--ts-border-radius-container);background:var(--ts-page-background-tertiary);margin-top:1rem;padding:1rem}:root.is-dark .entry-note,:root.is-dark .gear-card{background:var(--ts-page-background-secondary)}@media (prefers-color-scheme:dark){:root:not(.is-light) .entry-note,:root:not(.is-light) .gear-card{background:var(--ts-page-background-secondary)}}.entry-note p{margin-top:.5rem}.entry-note p:first-child{margin-top:0}.about-main p{text-align:justify}@media (width<=767px){.about-layout{grid-template-columns:minmax(0,1fr);gap:2rem}.about-aside{position:static}.about-main .ts-timeline{grid-template-columns:min-content minmax(0,1fr)}.about-main .ts-timeline .aside{display:none}.about-main .ts-timeline .item .aside+.indicator{grid-column:1}.about-main .ts-timeline .content>.ts-text.is-bold{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}}.ts-box.about-card .face-toggle{height:1.75rem;font:inherit;font-size:var(--ts-font-size-tiny);color:var(--ts-gray-800);background:var(--ts-gray-100);border:1px solid var(--ts-gray-200);border-radius:var(--ts-border-radius-element);cursor:pointer;align-items:center;gap:.25rem;margin:0;padding:0 .5rem;transition:background-color .15s;display:flex;position:absolute;top:1rem;right:1rem}.about-card .face-toggle:hover{background:var(--ts-gray-200)}.face-toggle .face-option{color:var(--ts-gray-600);transition:color .15s}.face-toggle .face-option.is-active{color:var(--ts-gray-800);font-weight:600}.face-toggle .face-divider{color:var(--ts-gray-300)}.faces{margin:3rem 0;position:relative}.faces .about-layout{margin:0}.face.is-hidden{visibility:hidden;pointer-events:none;transition:visibility .5s;position:absolute;inset:0;overflow:clip}.face .about-main{transition:opacity .3s .15s,transform .3s .15s}.face.is-hidden .about-main{opacity:0;transform:translateY(8px)}.face .about-card{transition:border-color .3s,background-color .3s}.face.is-hidden .about-card{background:0 0;border-color:#0000}.face .about-card .ts-content>:not(.about-avatar){transition:opacity .3s}.face.is-hidden .about-card .ts-content>:not(.about-avatar){opacity:0}.about-card .ts-content{perspective:40rem}.face .about-avatar{backface-visibility:hidden;transition:transform .5s}.face.is-hidden[data-face=personal] .about-avatar{transform:rotateY(180deg)}.face.is-hidden[data-face=professional] .about-avatar{transform:rotateY(-180deg)}@media (prefers-reduced-motion:reduce){.face.is-hidden,.face .about-main,.face .about-card,.face .about-card .ts-content>:not(.about-avatar),.face .about-avatar{transition:none}}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:1rem;display:grid}.stat-grid .ts-text.is-secondary{font-size:var(--ts-font-size-tiny)}.trophy-grid{grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:1rem;display:grid}.trophy-item,.gallery-item{width:100%;font:inherit;color:inherit;text-align:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;padding:0;display:flex}.trophy-item.is-link{text-decoration:none}.trophy-grid img,.gallery-item img{width:100%;height:auto;display:block}.gallery-item img{border-radius:var(--ts-border-radius-element)}.trophy-media{border-radius:var(--ts-border-radius-element);aspect-ratio:16/9;overflow:hidden}.trophy-grid img{object-fit:cover;height:100%}:root:has(dialog[open]){padding-right:var(--scrollbar-w,0px);scroll-padding-top:0;overflow:hidden}dialog.gallery-modal{background:#0c0c0ef0;border:0;width:100vw;max-width:100vw;height:100vh;max-height:100vh;margin:0;padding:0}.ts-box .ts-content>dialog.gallery-modal{margin:0}dialog.gallery-modal[open]{justify-content:center;align-items:center;display:flex}dialog.gallery-modal::backdrop{background:0 0}.gallery-modal-figure{flex-direction:column;align-items:center;gap:.6rem;margin:0;display:flex}.gallery-modal-figure img{width:auto;max-width:94vw;height:auto;max-height:calc(100vh - 5rem);display:block}.gallery-nav{color:#fff;cursor:pointer;background:#ffffff1f;border:0;border-radius:50%;justify-content:center;align-items:center;width:2.75rem;height:2.75rem;font-size:1.15rem;transition:background-color .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.gallery-nav:hover,.gallery-nav:focus-visible{background:#ffffff47}.gallery-nav.is-prev{left:max(1rem, env(safe-area-inset-left))}.gallery-nav.is-next{right:max(1rem, env(safe-area-inset-right))}.gallery-modal-figure figcaption{min-height:1.4em;color:var(--ts-gray-300);text-align:center;padding:0 1rem}.trophy-caption,.gallery-caption{margin-top:.25rem}.trophy-empty{background:var(--ts-gray-100);width:100%;height:100%}.gallery-masonry{columns:240px;column-gap:1rem}.gallery-item{break-inside:avoid;border-radius:var(--ts-border-radius-element);margin-bottom:1rem;position:relative;overflow:hidden}.gallery-item:after{content:"";opacity:0;pointer-events:none;background:#00000038;transition:opacity .18s;position:absolute;inset:0}.gallery-item .gallery-caption{z-index:1;color:#fff;text-align:start;opacity:0;pointer-events:none;padding:.65rem .75rem;transition:opacity .18s;position:absolute;inset:auto 0 0}.gallery-item:hover:after,.gallery-item:focus-visible:after,.gallery-item:hover .gallery-caption,.gallery-item:focus-visible .gallery-caption{opacity:1}@media (hover:none){.gallery-item:after,.gallery-item .gallery-caption{display:none}}@media (prefers-reduced-motion:reduce){.gallery-item:after,.gallery-item .gallery-caption{transition:none}}.gear-grid{grid-template-columns:repeat(auto-fill,minmax(min(14rem,100%),1fr));gap:1rem;display:grid}.gear-card{border-radius:var(--ts-border-radius-container);background:var(--ts-page-background-tertiary);align-items:flex-start;gap:.75rem;padding:1rem;display:flex}a.gear-card{color:inherit;text-decoration:none}.gear-card>.icon{color:var(--ts-gray-600);margin-top:.125rem;font-size:1.25rem}.gear-body{min-width:0}.gear-label{font-size:var(--ts-font-size-tiny)}.gear-label.ts-text.is-secondary{color:var(--ts-gray-600)}.links-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.links-list li{flex-wrap:wrap;align-items:baseline;gap:.5rem;display:flex}.links-list a,.md-content a{color:inherit;background-image:linear-gradient(currentColor,currentColor);background-position:50% calc(100% - 1px);background-repeat:no-repeat;background-size:0% 1.5px;text-decoration:none;transition:background-size .25s}.links-list a:hover,.links-list a:focus-visible,.md-content a:hover,.md-content a:focus-visible{background-size:100% 1.5px}@media (prefers-reduced-motion:reduce){.links-list a,.md-content a{transition:none}}.links-list a{font-weight:600}.gear-card{transition:transform .15s}.gear-card:hover{transform:scale(1.02)}@media (prefers-reduced-motion:reduce){.gear-card:hover{transform:none}}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(min(256px,100%),1fr));gap:1.5rem;display:grid}.cards-grid.is-wide{grid-template-columns:repeat(auto-fill,minmax(min(384px,100%),1fr))}.u-line{width:fit-content;position:relative}.u-line:after{content:"";transform-origin:50%;background:currentColor;height:1.5px;transition:transform .25s;position:absolute;bottom:-.15em;left:0;right:0;transform:scaleX(0)}@media (prefers-reduced-motion:reduce){.u-line:after{transition:none}}.blog-shell{grid-template-columns:11rem 1fr;gap:1rem 4rem;display:grid}.blog-filter{flex-direction:column;align-self:start;gap:2rem;margin-top:5rem;display:flex;position:sticky;top:8rem}.blog-filter-group{flex-direction:column;gap:.4rem;display:flex}.blog-filter-label{letter-spacing:.06em;margin-bottom:.25rem}.blog-filter-link{color:var(--ts-gray-600);width:fit-content;text-decoration:none}.blog-filter-link:hover:after,.blog-filter-link:focus-visible:after{transform:scaleX(1)}.blog-filter-link.is-active{color:var(--ts-gray-800);font-weight:700}.post-rows>*+* .post-row,.post-rows>*+*{border-top:1px solid var(--ts-gray-300)}.post-row-main{color:inherit;align-items:center;gap:2.5rem;padding:2rem 0;text-decoration:none;display:flex}.post-row-text{flex:1;min-width:0}.post-row-title{margin:0 0 .5rem;font-size:1.35rem;font-weight:700;line-height:1.4}.post-row-main:hover .post-row-title:after,.post-row-main:focus-visible .post-row-title:after{transform:scaleX(1)}.post-row-text p{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 .75rem;display:-webkit-box;overflow:hidden}.post-row-cover-wrap{border-radius:var(--ts-border-radius-element);flex-shrink:0;width:176px;height:117px;overflow:hidden}.post-row-cover,.project-item-cover img{object-fit:cover;width:100%;height:100%}.post-row-cover,.project-item-cover img,.landing-photo img,.trophy-item img{transition:transform .35s}.post-row-main:hover .post-row-cover,.post-row-main:focus-visible .post-row-cover,.project-item:hover .project-item-cover img,.project-item:focus-visible .project-item-cover img,.landing-photo:hover img,.trophy-item:hover img,.trophy-item:focus-visible img{transform:scale(1.06)}@media (prefers-reduced-motion:reduce){.post-row-cover,.project-item-cover img,.landing-photo img,.trophy-item img{transition:none}.post-row-main:hover .post-row-cover,.project-item:hover .project-item-cover img,.landing-photo:hover img,.trophy-item:hover img{transform:none}}@media (width<=767px){.blog-shell{grid-template-columns:1fr;gap:0}.blog-filter{flex-flow:wrap;gap:1.5rem;margin-top:0;position:static}.blog-filter-group{flex-flow:wrap;align-items:baseline;gap:.75rem}.blog-filter-label{margin-bottom:0}.post-row-main{gap:1rem;padding:1.5rem 0}.post-row-cover-wrap{width:96px;height:96px}.post-row-title{font-size:1.15rem}}.ts-timeline{--ts-timeline-content-distance:1.5rem}.social-icons{justify-content:center;gap:.5rem;display:flex}.social-icons>*{background:var(--ts-gray-50);border:1px solid var(--ts-gray-300);color:var(--ts-gray-800);transition:background-color .15s,color .15s,transform .15s;position:relative;overflow:visible}.social-icons>* .icon{color:inherit}.social-icons>:hover{background:var(--ts-gray-200);transform:scale(1.08)}@media (prefers-reduced-motion:reduce){.social-icons>:hover{transform:none}}.social-icons>:active{background:var(--ts-gray-900);color:var(--ts-gray-50)}.social-icons>:after{content:attr(aria-label);border-radius:var(--ts-border-radius-secondary);color:#fff;font-size:var(--ts-font-size-tiny);white-space:nowrap;opacity:0;pointer-events:none;z-index:20;background:#1f2430;padding:.25rem .5rem;line-height:1.4;transition:opacity .15s;position:absolute;bottom:calc(100% + .45rem);left:50%;transform:translate(-50%)}.social-icons>:hover:after,.social-icons>:focus-visible:after{opacity:1}#back-to-top{z-index:100;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s,visibility .2s,transform .15s;position:fixed;bottom:2.25rem;right:2.25rem}#back-to-top:hover{transform:scale(1.08)}@media (prefers-reduced-motion:reduce){#back-to-top:hover{transform:none}}#back-to-top.is-shown{opacity:1;visibility:visible;pointer-events:auto}.post-header{margin:3rem 0}.post-hero{aspect-ratio:21/9;object-fit:cover;border-radius:var(--ts-border-radius-element);width:100%;margin-bottom:2rem}.post-body{grid-template-columns:minmax(0,1fr);gap:2rem;display:grid}.post-rail{order:-1}@media (width>=1024px){.post-body{grid-template-columns:220px minmax(0,1fr)}.post-rail .toc{position:sticky;top:5rem}.toc-details>summary{pointer-events:none;list-style:none}.toc-details:not([open])>ul{display:block}.toc-details:not([open])::details-content{content-visibility:visible;block-size:auto}}.toc ul{margin:.5rem 0 0;padding:0;list-style:none}.toc-item.is-depth-3{padding-inline-start:1rem}.toc a{opacity:.75;text-decoration:none}.toc a.is-current{opacity:1;font-weight:600}.md-content{line-height:1.85}.md-content>*+*{margin-top:1em}.md-content h1,.md-content h2,.md-content h3,.md-content h4{margin-top:2em;font-weight:700;line-height:1.4}.md-content h1{font-size:1.8em}.md-content h2{border-inline-start:.25rem solid var(--ts-gray-800);padding-inline-start:.6rem;font-size:1.5em}.md-content h3{font-size:1.25em}.md-content h4{font-size:1.1em}.md-content p,.md-content li{text-align:justify}.md-content ul,.md-content ol{padding-inline-start:1.5em}.md-content li+li{margin-top:.4em}.md-content blockquote{border-inline-start:3px solid var(--ts-gray-300);color:var(--ts-gray-600);padding-inline-start:1em}.md-content .data-footnote-backref{display:none}.md-content img:not(a img),.post-hero{cursor:pointer}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.md-content :not(pre)>code{background:var(--ts-gray-100);border-radius:var(--ts-border-radius-secondary);padding:.15em .4em;font-size:.9em}.md-content pre:not(.expressive-code *){border-radius:var(--ts-border-radius-element);background:var(--ts-gray-100);padding:1rem;overflow-x:auto}.md-content img{border-radius:var(--ts-border-radius-element);max-width:100%;height:auto}.md-content table{border-collapse:collapse;display:block;overflow-x:auto}.md-content th,.md-content td{border:1px solid var(--ts-gray-300);padding:.4em .8em}.md-content hr{border:0;border-top:1px solid var(--ts-gray-300)}.post-nav{grid-template-columns:1fr 1fr;gap:1.5rem;margin-top:3rem;display:grid}.post-nav-link{color:inherit;flex-direction:column;gap:.35rem;text-decoration:none;display:flex}.post-nav-link[rel=prev]{grid-column:1;align-items:flex-start}.post-nav-link[rel=next]{text-align:right;grid-column:2;align-items:flex-end}.post-nav-link:hover .post-nav-title:after,.post-nav-link:focus-visible .post-nav-title:after{transform:scaleX(1)}.search-veil{z-index:99;background:#00000059;background:color-mix(in srgb, var(--ts-page-background-default) 30%, transparent);-webkit-backdrop-filter:blur(14px)saturate(140%);position:fixed;inset:0}@supports not (backdrop-filter:blur(1px)){.search-veil{background:#00000059}}.search-veil[hidden]{display:none}dialog.search-dialog{background:var(--ts-page-background-default);border:0;width:100%;max-width:none;margin:0;padding:.75rem 0 2.5rem;position:absolute;top:100%;left:0}.search-inner{flex-direction:column;gap:1rem;display:flex}@media (prefers-reduced-motion:no-preference){dialog.search-dialog[open]{animation:.18s ease-out search-drop}.search-veil:not([hidden]){animation:.18s ease-out veil-fade}dialog.search-dialog[open].is-closing{animation:.16s ease-in forwards search-close}.search-veil:not([hidden]).is-closing{animation:.16s ease-in forwards veil-hide}@keyframes search-drop{0%{opacity:.4;transform:translateY(-.5rem)}}@keyframes veil-fade{0%{opacity:0}}@keyframes search-close{to{opacity:0;transform:translateY(-.5rem)}}@keyframes veil-hide{to{opacity:0}}}.search-row{align-items:center;gap:.8rem;display:flex}.search-row>.icon{color:var(--ts-gray-500);font-size:1.3rem}.search-row input{min-width:0;font:inherit;color:inherit;background:0 0;border:0;outline:none;flex:1;padding:0;font-size:1.5rem;font-weight:500}.search-row input::placeholder{color:var(--ts-gray-500)}.search-dialog input[type=search]::-webkit-search-cancel-button{appearance:none;display:none}.search-clear{width:2rem;height:2rem;color:var(--ts-gray-500);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;font-size:1rem;display:flex}.search-clear:hover{background:var(--ts-page-background-tertiary);color:var(--ts-gray-800)}.search-clear[hidden]{display:none}.search-results{flex-direction:column;gap:.25rem;max-height:55vh;margin:0;padding:0 0 0 1.85rem;list-style:none;display:flex;overflow:hidden auto}.search-results li a{border-radius:var(--ts-border-radius-container);color:inherit;padding:.5rem;text-decoration:none;display:block}.search-results li a:hover{background:var(--ts-page-background-tertiary)}.search-results li.search-empty{color:var(--ts-gray-500);padding:.25rem .5rem}.search-results li strong{display:block}.search-results li span{font-size:var(--ts-font-size-tiny);color:var(--ts-gray-500);display:block}.post-back{color:var(--ts-gray-600);font-size:var(--ts-font-size-14px);background-image:linear-gradient(currentColor,currentColor);background-position:50% calc(100% - 1px);background-repeat:no-repeat;background-size:0% 1.5px;align-items:center;gap:.4rem;margin-bottom:1.25rem;text-decoration:none;transition:background-size .25s,color .2s;display:inline-flex}.post-back:hover,.post-back:focus-visible{color:var(--ts-gray-800);background-size:100% 1.5px}@media (prefers-reduced-motion:reduce){.post-back{transition:color .2s}}.post-title{letter-spacing:-.015em;font-size:2.5rem;line-height:1.2}.post-meta{align-items:center;gap:.75rem;margin-top:1.75rem;display:flex}.post-meta-avatar{border-radius:50%;width:44px;height:44px}.post-meta-author{font-weight:600;line-height:1.35}[data-pagefind-body] .md-content{font-size:1.1875rem}@media (width<=767px){[data-pagefind-body] .md-content{font-size:1.0625rem}.post-title{font-size:1.9rem}}.post-tags{margin-top:3rem}.landing-hero{padding:5rem 0 3rem}.landing-title{letter-spacing:.08em;max-width:22ch;margin:0 0 1rem;font-size:clamp(1.9rem,4.5vw,3.25rem);font-weight:500;line-height:1.3}.landing-title-line{display:block}.landing-hero .ts-text{font-size:var(--ts-font-size-large)}.landing-photo-hero{aspect-ratio:16/9;border-radius:1.5rem;overflow:hidden}.landing-photo-hero img{object-fit:cover;width:100%;height:100%}.landing-intro{text-align:center;font-size:var(--ts-font-size-large);letter-spacing:.04em;max-width:36rem;margin:5rem auto 0}.landing-section{grid-template-columns:14rem 1fr;gap:2rem 4rem;margin-top:6rem;display:grid}.landing-section.is-tinted{background:var(--ts-gray-75);margin-inline:calc(50% - 50vw);padding-block:4rem;padding-inline:calc(50vw - 50%)}.landing-section.is-tinted .ts-text.is-secondary{color:var(--ts-gray-600)}.landing-section.is-stacked{grid-template-columns:1fr;gap:1.5rem}.landing-section.is-stacked .landing-side{position:static}.landing-side{align-self:start;position:sticky;top:7rem}.landing-side-en{margin:0;font-size:2rem;font-weight:700}.landing-side-link{color:inherit;margin-top:1.5rem;text-decoration:none;display:inline-block}.landing-side-link span{transition:transform .2s;display:inline-block}.landing-side-link:hover span,.landing-side-link:focus-visible span{transform:rotate(45deg)}@media (prefers-reduced-motion:reduce){.landing-side-link span{transition:none}}.landing-blurb{font-size:var(--ts-font-size-large);max-width:38rem;margin:0;line-height:1.9}.landing-gallery{grid-template-columns:repeat(4,1fr);gap:1rem;text-decoration:none;display:grid}.landing-photo{aspect-ratio:1;border-radius:var(--ts-border-radius-container);overflow:hidden}.landing-photo img{object-fit:cover;width:100%;height:100%}.landing-rows{grid-template-columns:1fr 1fr;gap:2rem 3rem;display:grid}.landing-row{border-top:1px solid var(--ts-gray-300);color:inherit;padding-top:1rem;text-decoration:none}.landing-row-top{justify-content:space-between;margin-bottom:.5rem;display:flex}.landing-row:hover .ts-header:after{transform:scaleX(1)}.landing-row p{margin:.5rem 0 0}.landing-more{grid-column:2;justify-self:end}.footer-band{color:#eceff4;background:#1f2430;margin-top:6rem;padding-block:4rem}.footer-band .landing-side-en{color:#fff}.footer-band-line{color:#eceff4bf;margin:.5rem 0 1.5rem}.footer-band-links{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.footer-band-links .ts-button{color:#fff;background:#ffffff1a;border:1px solid #fff3}.footer-band-links .ts-button:hover{background:#ffffff38}.footer-band-copyright{font-size:var(--ts-font-size-small);color:#eceff480;margin:3rem 0 0}:root.is-dark .footer-band{background:#171717}@media (prefers-color-scheme:dark){:root:not(.is-light) .footer-band{background:#171717}}@media (width<=767px){.landing-hero{padding:2.5rem 0 2rem}.landing-section{grid-template-columns:1fr;gap:1.5rem;margin-top:4rem}.landing-side{position:static}.landing-side-link{margin-top:.5rem}.landing-gallery{grid-template-columns:repeat(2,1fr)}.landing-rows{grid-template-columns:1fr}.landing-more{grid-column:1}.footer-band{margin-top:4rem;padding-block:2.5rem}.landing-section.is-tinted{padding-block:2.5rem}}@media (prefers-reduced-motion:no-preference){.js .reveal{transition:opacity .85s cubic-bezier(.2,.6,.2,1),transform .85s cubic-bezier(.2,.6,.2,1);transition-delay:calc(var(--ri,0) * .12s)}.js .reveal.is-pending{opacity:0;transform:translateY(34px)}.js .reveal.from-left.is-pending{transform:translate(-32px)}.js .reveal.from-right.is-pending{transform:translate(32px)}}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));align-items:stretch;gap:3rem;display:grid}.projects-grid>.reveal{display:flex}.project-item{color:inherit;flex-direction:column;flex:1;align-items:flex-start;gap:.75rem;text-decoration:none;display:flex}.project-item-cover{aspect-ratio:16/9;border-radius:var(--ts-border-radius-element);width:100%;margin-bottom:.25rem;overflow:hidden}.project-item:hover .ts-header:after,.project-item:focus-visible .ts-header:after{transform:scaleX(1)}.project-item .ts-header{font-size:1.2rem}.project-item p{flex:1;margin:0}::view-transition-old(root),::view-transition-new(root){animation:none}@keyframes page-enter{0%{opacity:.5;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.page-enter{animation:.4s cubic-bezier(.22,1,.36,1) backwards page-enter}@media (prefers-reduced-motion:reduce){.page-enter{animation:none}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}
