.duo-portfolio{--brilio-shell:79.5rem;--brilio-section-space:clamp(8rem,13vw,13rem);--brilio-copy-width:38rem;--brilio-radius:.75rem;background:var(--canvas);font-family:var(--font-body)}.duo-portfolio:before{opacity:.1}.duo-portfolio h1,.duo-portfolio h2,.duo-portfolio h3,.duo-portfolio h4,.duo-portfolio p{font-family:var(--font-display)}.story-traveler__bubble,.story-traveler__bubble p{color:var(--accent-contrast)}.story-traveler__bubble-meta,.story-traveler__bubble strong{color:color-mix(in srgb,var(--accent-contrast)68%,var(--accent))}.story-traveler__toggle{cursor:pointer;pointer-events:auto;touch-action:manipulation;background:0 0;border:0;padding:0}.story-traveler__toggle:focus-visible{outline:2px solid var(--accent);outline-offset:.35rem;border-radius:999px}.story-traveler__compact-avatar{display:none}.story-traveler[data-tooltip-open=false] .story-traveler__bubble{opacity:0;visibility:hidden;transform:translateY(.75rem)scale(.96)}@media (prefers-reduced-motion:no-preference){.story-traveler__bubble{transition:opacity .22s var(--ease-out),transform .22s var(--ease-out),visibility .22s step-end}.story-traveler[data-tooltip-open=true] .story-traveler__bubble{transition:opacity .22s var(--ease-out),transform .22s var(--ease-out),visibility 0s step-start}}.duo-shell,.duo-portfolio .duo-shell{width:min(calc(100% - clamp(2rem,8vw,9rem)),var(--brilio-shell));margin-inline:auto}.duo-section{padding-block:var(--brilio-section-space)}.duo-header{height:5.25rem;padding-inline:max(clamp(1rem,4vw,4.5rem),calc((100vw - var(--brilio-shell))/2));background:color-mix(in srgb,var(--canvas)90%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom-color:#0000}.duo-brand{font-family:var(--font-display);letter-spacing:-.045em;align-items:center;gap:.65rem;font-size:1.35rem;font-weight:650;display:inline-flex}.duo-brand__mark{border:1px solid color-mix(in srgb,var(--accent)62%,var(--line));background:color-mix(in srgb,var(--accent-soft)78%,var(--canvas));border-radius:50%;place-items:center;width:3rem;height:3rem;display:grid;position:relative;overflow:hidden}.duo-brand__mascot{width:175%;max-width:none;height:auto;transform:translate(-11%,7%)scale(1.06)}.duo-brand__wordmark{color:var(--ink)}.duo-brand:hover .duo-brand__mark{border-color:var(--accent);background:var(--accent-soft)}.duo-nav a{color:var(--ink);font-family:var(--font-display);padding:.5rem .7rem;font-size:1rem;font-weight:600}.duo-nav a:after{bottom:.2rem;left:.7rem;right:.7rem}.duo-header__actions{gap:.6rem}.duo-locale{position:relative}.duo-locale__trigger{border:1px solid var(--line);min-height:2.65rem;color:var(--ink);cursor:pointer;font-family:var(--font-mono);transition:border-color .22s var(--ease-out),background-color .22s var(--ease-out),color .22s var(--ease-out);border-radius:999px;align-items:center;gap:.35rem;padding:0 .65rem;font-size:.67rem;font-weight:700;list-style:none;display:inline-flex}.duo-locale__trigger::-webkit-details-marker{display:none}.duo-locale__trigger:hover,.duo-locale[open] .duo-locale__trigger{border-color:var(--accent);background:var(--accent-soft)}.duo-locale__trigger svg:last-child{transition:transform .22s var(--ease-out)}.duo-locale[open] .duo-locale__trigger svg:last-child{transform:rotate(180deg)}.duo-locale__menu{z-index:2;border:1px solid var(--line);border-radius:var(--brilio-radius);background:color-mix(in srgb,var(--canvas)96%,transparent);min-width:10.75rem;box-shadow:0 1rem 2.5rem color-mix(in srgb,var(--ink)14%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:.35rem;display:grid;position:absolute;top:calc(100% + .55rem);right:0}.duo-locale__menu a{border-radius:calc(var(--brilio-radius) - .2rem);min-height:2.45rem;color:var(--muted);font-family:var(--font-body);transition:background-color .18s var(--ease-out),color .18s var(--ease-out);grid-template-columns:2.35rem 1fr auto;align-items:center;gap:.55rem;padding:.35rem .5rem;font-size:.78rem;font-weight:600;display:grid}.duo-locale__menu a:hover,.duo-locale__menu a:focus-visible,.duo-locale__menu a[aria-current=page]{background:var(--accent-soft);color:var(--ink)}.duo-locale__code{color:var(--accent);font-family:var(--font-mono);font-size:.65rem;font-weight:700}.duo-button{min-height:4.75rem;transition:color .35s var(--ease-out),background-color .35s var(--ease-out),border-color .35s var(--ease-out);border-radius:999px;padding:1.4rem 3.4rem;font-size:1.05rem;font-weight:550}.duo-button--nav{min-height:2.65rem;padding:.7rem 1rem;font-size:.76rem}.duo-icon-button,.duo-menu{width:2.65rem;height:2.65rem}.duo-hero{min-height:calc(100dvh - 5.25rem);padding-block:clamp(3rem,7vw,6rem) clamp(7rem,12vw,11rem);position:relative;overflow:hidden}.duo-hero:before,.duo-hero:after{z-index:0;border:1px solid var(--line);content:"";pointer-events:none;border-radius:50%;position:absolute}.duo-hero:before{width:75rem;height:75rem;top:-44rem;left:19%}.duo-hero:after{width:25rem;height:25rem;top:14rem;right:15%}.duo-hero__grid{z-index:1;min-height:0;display:block;position:relative}.duo-hero__copy{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;column-gap:clamp(1rem,2vw,2rem);display:grid}.duo-hero__hello{color:var(--ink);letter-spacing:0;text-transform:none;grid-column:1/-1;margin:0;font-size:clamp(1rem,1.35vw,1.2rem);font-weight:450}.duo-hero h1{letter-spacing:-.065em;text-wrap:balance;grid-column:1/-1;max-width:none;margin:clamp(2rem,4vw,3.5rem) 0 0;font-size:clamp(4.5rem,7.1vw,7rem);font-weight:500;line-height:.98}.duo-hero h1 span{color:color-mix(in srgb,var(--accent)22%,var(--muted))}.duo-hero__description{max-width:var(--brilio-copy-width);color:var(--ink);grid-column:7/-1;margin:clamp(3rem,6vw,5rem) 0 0;font-size:clamp(1.15rem,1.65vw,1.4rem);font-weight:400;line-height:1.6}.duo-actions{grid-area:3/1/auto/span 5;align-self:start;margin-top:clamp(3rem,6vw,5rem)}.duo-button--green{background:var(--accent);color:var(--accent-contrast)}.duo-button--green:hover{background:var(--accent-hover);color:var(--accent-contrast);box-shadow:none}.duo-text-link,.duo-project__link{font-size:1rem;font-weight:600;position:relative}.duo-hero__meta{color:var(--muted);font-family:var(--font-mono);grid-column:7/-1;margin-top:2rem;font-size:.7rem}.duo-hero__art{display:none!important}.duo-section--cream,.duo-skills{background:var(--canvas)}.duo-section-heading,.duo-experience-heading,.duo-skills__heading{align-items:end;margin-bottom:clamp(4rem,8vw,7.5rem)}.duo-section-heading h2,.duo-skills h2{letter-spacing:-.055em;max-width:none;margin:0;font-size:clamp(2.7rem,4vw,3.5rem);font-weight:500;line-height:1.05}.duo-section-count{font-family:var(--font-display);font-size:1rem;font-weight:500}.duo-about{display:block}.duo-about__content{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,2vw,2rem);display:grid}.duo-about__content .scroll-fill-heading{grid-column:1/-1}.scroll-fill-heading{max-width:16ch;color:var(--ink);letter-spacing:-.07em;text-transform:none;margin:0;font-size:clamp(3.5rem,7vw,7rem);font-weight:500;line-height:.98}.scroll-fill-heading__word{white-space:nowrap;display:inline-block}.scroll-fill-heading__word>span{display:inline-block}.scroll-fill-heading__space{width:.24em;display:inline-block}.story-traveler__image{width:100%;height:100%}.duo-about__content>p{max-width:var(--brilio-copy-width);color:var(--muted);grid-column:7/-1;margin:clamp(3rem,7vw,6rem) 0 0;font-size:clamp(1.1rem,1.5vw,1.3rem);line-height:1.65}.duo-about__content>.duo-text-link{grid-column:7/-1;margin-top:2rem}.duo-stats{border-top:1px solid var(--line-strong);grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:clamp(6rem,11vw,10rem);display:grid}.duo-stat{border-right:1px solid var(--line);border-bottom:0;align-content:space-between;min-height:12rem;padding:1.5rem clamp(1rem,2.5vw,2.5rem) 1.75rem 0;display:grid}.duo-stat:not(:first-child){padding-left:clamp(1rem,2.5vw,2.5rem)}.duo-stat:last-child{border-right:0}.duo-stat strong{color:var(--ink);font-family:var(--font-display);letter-spacing:-.07em;font-size:clamp(3.4rem,6vw,5.5rem);font-weight:500}.duo-stat span{color:var(--muted);text-align:left;font-size:.92rem;font-weight:500}.duo-work{padding-top:clamp(7rem,10vw,10rem)}.duo-projects{display:block}.duo-project,.duo-project:nth-child(2n){background:0 0;border:0;margin:0 0 clamp(7rem,11vw,11rem);display:grid}.duo-project:last-child{margin-bottom:0}.duo-project__image{border-radius:var(--brilio-radius);aspect-ratio:16/10;background:var(--surface);clip-path:inset(0);margin:0}.duo-project__image:after{border:1px solid var(--line);border-radius:inherit;content:"";pointer-events:none;position:absolute;inset:0}.duo-project__image img{object-fit:cover}.duo-project__body,.duo-project--yellow .duo-project__body{background:0 0;grid-template-columns:minmax(0,1.2fr) minmax(18rem,.8fr);gap:0 clamp(2rem,6vw,6rem);padding:1.75rem 0 0;display:grid}.duo-project__top{border-bottom:1px solid var(--line);color:var(--muted);letter-spacing:.04em;grid-column:1/-1;padding-bottom:1.25rem;font-size:.75rem}.duo-project h3{letter-spacing:-.065em;grid-column:1;margin:1.5rem 0 0;font-size:clamp(2.4rem,5vw,4.8rem);font-weight:500;line-height:.98}.duo-project p{color:var(--muted);grid-column:2;margin:1.5rem 0 0;font-size:1.05rem;line-height:1.6}.duo-project .duo-tags{grid-column:1}.duo-project__link{grid-column:2;align-self:end;margin-bottom:1.1rem}.duo-tags span{padding:.4rem .7rem;font-size:.68rem}.duo-section--blue{--experience-background:var(--ink);--experience-foreground:var(--canvas);--experience-muted:color-mix(in srgb,var(--experience-foreground)70%,transparent);--experience-subtle:color-mix(in srgb,var(--experience-foreground)16%,transparent);--experience-accent:color-mix(in srgb,var(--accent)44%,var(--experience-foreground));background:var(--experience-background);color:var(--experience-foreground)}.dark .duo-section--blue{--experience-background:var(--canvas);--experience-foreground:var(--ink);--experience-accent:color-mix(in srgb,var(--accent)68%,var(--experience-foreground));background:var(--experience-background);color:var(--experience-foreground)}.duo-experience-heading{grid-template-columns:minmax(0,1.25fr) minmax(18rem,.75fr);gap:clamp(2rem,7vw,7rem);padding-right:0;display:grid}.duo-experience-heading h2,.duo-section--blue .duo-experience-heading h2{letter-spacing:-.07em;max-width:12ch;color:var(--experience-foreground);margin:0;font-size:clamp(3.7rem,7vw,7rem);font-weight:500;line-height:.96}.duo-experience-heading p,.duo-section--blue .duo-experience-heading p{color:var(--experience-muted);align-self:end;font-size:1.1rem}.duo-timeline{max-width:none;margin-left:0}.duo-timeline__item{grid-template-columns:4rem minmax(0,1fr)}.duo-timeline__rail{color:var(--experience-accent)}.duo-timeline__rail i{background:var(--experience-subtle)}.duo-timeline__card{grid-template-columns:minmax(0,1fr) minmax(18rem,.65fr);gap:0 clamp(2rem,6vw,6rem);padding-bottom:clamp(4rem,7vw,7rem);display:grid}@media (min-width:1181px){.duo-timeline__card{grid-template-columns:minmax(0,1fr) minmax(15rem,.56fr);padding-right:clamp(14rem,18vw,21rem)}}.duo-timeline__period,.duo-timeline__card h3,.duo-timeline__card>strong{grid-column:1}.duo-timeline__period{color:var(--experience-accent);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:.35rem .7rem;display:flex}.duo-timeline__period span+span:before{color:var(--experience-subtle);content:"/";margin-right:.7rem}.duo-timeline__card h3,.duo-section--blue .duo-timeline__card h3{letter-spacing:-.055em;color:var(--experience-foreground);margin-top:1.2rem;font-size:clamp(2.2rem,4vw,4.2rem);font-weight:500}.duo-timeline__card>strong,.duo-section--blue .duo-timeline__card>strong{color:var(--experience-foreground)}.duo-timeline__card p,.duo-section--blue .duo-timeline__card p{color:var(--experience-muted);grid-area:1/2/span 4;margin-top:0;font-size:1rem}.duo-timeline__card .duo-tags{grid-column:2}.duo-timeline__card .duo-tags span,.duo-section--blue .duo-timeline__card .duo-tags span{border-color:var(--experience-subtle);color:var(--experience-muted);background:0 0}.duo-tech-grid{background:0 0;border:0;gap:0}.duo-tech-group,.duo-tech-group--2,.duo-tech-group--3,.duo-tech-group--4{border-top:1px solid var(--line-strong);background:0 0;padding:1.75rem clamp(1rem,3vw,3rem) 3rem 0}.duo-tech-group:nth-child(2n){border-left:1px solid var(--line);padding-left:clamp(1rem,3vw,3rem);padding-right:0}.duo-tech-group__heading{margin-bottom:2rem}.duo-tech-group h3{text-transform:none;font-size:1.05rem;font-weight:550}.duo-tech-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.duo-tech-card{min-height:7rem}.duo-contact{background:radial-gradient(circle at 86% 12%,var(--accent-soft),transparent 22rem),color-mix(in srgb,var(--accent)12%,var(--canvas));color:var(--ink);padding-top:clamp(8rem,13vw,13rem)}.duo-contact__inner,.duo-portfolio .duo-contact__inner{grid-template-columns:minmax(12rem,18rem) minmax(0,1fr);gap:clamp(2rem,8vw,8rem);min-height:38rem;padding-right:0}.duo-contact h2{letter-spacing:-.075em;text-transform:none;max-width:12ch;margin:0 0 2rem;font-size:clamp(4rem,7.5vw,7.5rem);font-weight:500;line-height:.93}.duo-contact p{max-width:var(--brilio-copy-width);font-size:1.1rem}.duo-button--yellow{margin-top:.75rem}.duo-footer{border-top-color:color-mix(in srgb,var(--ink)18%,transparent);color:color-mix(in srgb,var(--ink)72%,transparent);padding-top:2rem;font-size:.78rem}.duo-contact p{color:color-mix(in srgb,var(--ink)72%,transparent)}@media (max-width:64rem){.duo-mobile-navigation{overscroll-behavior:contain;padding-bottom:max(2rem,env(safe-area-inset-bottom));overflow-y:auto}.duo-mobile-navigation__locale{border-top:1px solid var(--line);gap:.8rem;margin-top:2rem;padding-top:1.25rem;display:grid}.duo-mobile-navigation__locale-label{color:var(--muted);font-family:var(--font-mono);align-items:center;gap:.45rem;font-size:.68rem;font-weight:700;display:inline-flex}.duo-mobile-locale{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;display:grid}.duo-mobile-navigation .duo-mobile-locale a{border:1px solid var(--line);border-radius:var(--brilio-radius);min-width:0;min-height:3.4rem;color:var(--muted);font-family:var(--font-body);letter-spacing:0;opacity:1;grid-template-columns:1fr;gap:.2rem;padding:.6rem;font-size:.72rem;font-weight:600;line-height:1.2;display:grid;transform:none}.duo-mobile-navigation .duo-mobile-locale a span{color:var(--accent);padding:0;font-size:.62rem}.duo-mobile-navigation .duo-mobile-locale a[aria-current=page]{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}.duo-mobile-navigation a{font-weight:500}.duo-hero h1{font-size:clamp(4rem,9vw,6rem)}.duo-about__content>p,.duo-about__content>.duo-text-link,.duo-hero__description,.duo-hero__meta{grid-column:6/-1}.duo-actions{grid-column:1/span 5}.duo-project__body,.duo-timeline__card{grid-template-columns:minmax(0,1fr) minmax(16rem,.8fr)}}@media (max-width:800px){.duo-portfolio{--brilio-section-space:clamp(6rem,21vw,9rem)}.story-traveler{--story-stage-size:clamp(8.5rem,38vw,11rem);width:clamp(12rem,53vw,15rem);height:clamp(13rem,60vw,16rem)}.story-traveler__stage{box-shadow:none;filter:drop-shadow(0 .65rem .9rem #386f262e);background:0 0;border:0;border-radius:0;left:auto;right:0;overflow:visible}.story-traveler__pose{display:block}.story-traveler__compact-avatar{display:none}.story-traveler__bubble{width:min(11.75rem,48vw);top:0;left:auto;right:0}.story-traveler[data-active-beat=top] .story-traveler__bubble{display:block}.story-traveler__bubble:after{inset:auto 2.25rem -.45rem auto;transform:rotate(45deg)}.duo-shell,.duo-portfolio .duo-shell{width:min(calc(100% - 2rem),var(--brilio-shell))}.duo-header{height:4.5rem;padding-right:max(1rem,env(safe-area-inset-right));padding-left:max(1rem,env(safe-area-inset-left))}.duo-brand__mark{width:2.65rem;height:2.65rem}.duo-locale__trigger{min-height:2.4rem;padding-inline:.55rem}.duo-hero{min-height:auto;padding-block:3.5rem 7rem}.duo-hero:before{width:38rem;height:38rem;top:-22rem;left:5%}.duo-hero:after{display:none}.duo-hero__copy{grid-template-columns:1fr}.duo-hero__hello,.duo-hero h1,.duo-hero__description,.duo-actions,.duo-hero__meta{grid-area:auto/1}.duo-hero h1{margin-top:2rem;font-size:clamp(3.4rem,14.5vw,5rem);line-height:.95}.duo-hero__description,.duo-actions{margin-top:2.5rem}.duo-actions{flex-direction:column;align-items:flex-start;gap:1.25rem}.duo-button{min-height:3.75rem;padding:1rem 1.75rem}.duo-about__content{grid-template-columns:1fr}.duo-about__content .scroll-fill-heading,.duo-about__content>p,.duo-about__content>.duo-text-link{grid-column:1}.scroll-fill-heading{font-size:clamp(3rem,14vw,4.7rem)}.duo-stats{grid-template-columns:1fr;margin-top:5rem}.duo-stat,.duo-stat:not(:first-child){border-right:0;border-bottom:1px solid var(--line);min-height:9rem;padding:1.25rem 0}.duo-project,.duo-project:nth-child(2n){margin-bottom:clamp(4.5rem,16vw,6rem)}.duo-project__image{aspect-ratio:4/3}.duo-project__body,.duo-project--yellow .duo-project__body,.duo-timeline__card{grid-template-columns:1fr;padding-right:0}.duo-project__body,.duo-project--yellow .duo-project__body{min-width:0;padding-top:1.25rem}.duo-project__top{gap:1rem;padding-bottom:1rem}.duo-project__top span{overflow-wrap:anywhere;min-width:0}.duo-project h3{overflow-wrap:normal;text-wrap:balance;max-width:12ch;margin-top:1.25rem;font-size:clamp(2.25rem,12vw,3.5rem);line-height:.96}.duo-project p,.duo-project .duo-tags,.duo-project__link,.duo-timeline__card p,.duo-timeline__card .duo-tags{grid-area:auto/1}.duo-project p{max-width:34rem;margin-top:1rem;font-size:1rem;line-height:1.6}.duo-project .duo-tags{gap:.45rem;margin:1.25rem 0 0}.duo-project__link{border-top:1px solid var(--line);white-space:nowrap;justify-content:space-between;width:100%;min-height:3rem;margin-top:1.5rem;margin-bottom:0;padding-top:1rem}.duo-experience-heading{grid-template-columns:1fr;gap:1.25rem;margin-bottom:3rem}.duo-experience-heading h2{overflow-wrap:anywhere;max-width:100%;font-size:clamp(3rem,13vw,4.75rem);line-height:.94}.duo-experience-heading p,.duo-section--blue .duo-experience-heading p{max-width:31ch;font-size:1rem;line-height:1.55}.duo-timeline__item{grid-template-columns:.75rem minmax(0,1fr);gap:1rem}.duo-timeline__rail:before{border:2px solid var(--experience-background);background:var(--experience-accent);content:"";border-radius:50%;width:.5rem;height:.5rem;position:absolute;top:.22rem;left:50%;transform:translate(-50%)}.duo-timeline__rail i{height:calc(100% - .4rem);margin-top:.4rem}.duo-timeline__card{min-width:0;padding-bottom:clamp(4rem,17vw,5.5rem)}.duo-timeline__period{gap:.25rem .6rem;font-size:.67rem;line-height:1.45}.duo-timeline__period span+span:before{margin-right:.6rem}.duo-timeline__card h3,.duo-section--blue .duo-timeline__card h3{overflow-wrap:anywhere;margin-top:1rem;font-size:clamp(2.2rem,11vw,3.4rem);line-height:.98}.duo-timeline__card>strong,.duo-section--blue .duo-timeline__card>strong{margin-top:.5rem;font-size:.82rem;line-height:1.45}.duo-timeline__card p,.duo-section--blue .duo-timeline__card p{grid-area:auto/1;max-width:38rem;margin-top:1.35rem;font-size:.96rem;line-height:1.65}.duo-timeline__card .duo-tags{grid-area:auto/1;margin-top:1.15rem;margin-bottom:0}.duo-scroll-top{right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));left:auto}.duo-scroll-top,.duo-menu,.duo-icon-button,.duo-mobile-navigation .duo-mobile-locale a{touch-action:manipulation}.duo-tech-grid{grid-template-columns:1fr}.duo-tech-group,.duo-tech-group--2,.duo-tech-group--3,.duo-tech-group--4,.duo-tech-group:nth-child(2n){border-left:0;padding:1.5rem 0 3rem}.duo-contact__inner,.duo-portfolio .duo-contact__inner{grid-template-columns:1fr;gap:2rem;min-height:0}.duo-contact__mascot{width:min(12rem,44vw)}}@media (max-width:32rem){.duo-brand__wordmark{display:none}.duo-hero h1{font-size:clamp(3rem,14vw,4.1rem)}.duo-section-heading,.duo-experience-heading,.duo-skills__heading{margin-bottom:3.5rem}.duo-experience-heading{margin-bottom:2.75rem}.duo-experience-heading h2{font-size:clamp(2.7rem,12.5vw,3.75rem)}.duo-section-heading h2,.duo-skills h2{font-size:2.5rem}.duo-tech-list{grid-template-columns:repeat(3,minmax(0,1fr))}.duo-contact h2{font-size:clamp(3.3rem,15vw,4.5rem)}}@media (max-width:22rem){.duo-tech-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){[data-brilio-scroll-char]{color:var(--ink)!important}}
:root{--ink:#05070a;--ink-2:#0a0e12;--ink-card:#0a0e12b8;--bone:#dfe7e0;--bone-dim:#aab4ad;--muted:#78837c;--line:#dfe7e021;--line-soft:#dfe7e012;--vermilion:#e0231c;--ember:#ff5a3c;--gold:#c9a24a;--jade:#8ce019;--jade-dim:#6bb310;--jade-soft:#8ce01924;--jade-glow:#8ce01980;--cyan-light:#0fe3c5;--pad:clamp(20px,3.4vw,56px);--nav-h:84px;--ease:cubic-bezier(.22,.61,.36,1);--ease-out:cubic-bezier(.16,1,.3,1);--ease-io:cubic-bezier(.65,0,.35,1)}.kage-portfolio{background:var(--ink);color:var(--bone);min-height:100vh;font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative;overflow-x:hidden}#grain{z-index:60;pointer-events:none;opacity:.048;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:180px 180px;position:fixed;inset:-1px}#vignette{z-index:55;pointer-events:none;background:radial-gradient(125% 95% at 50% 42%,#0000 40%,#020406b3 100%);position:fixed;inset:0}#gl-canvas{z-index:0;background:var(--ink);pointer-events:none;width:100%;height:100%;display:block;position:fixed;inset:0}.kage-page{z-index:10;position:relative}.jp{font-family:Noto Serif JP,Hiragino Mincho ProN,Yu Mincho,PingFang TC,serif,sans-serif;font-weight:400}.kage-eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--bone-dim);text-shadow:0 1px 16px #030608e6;align-items:center;gap:10px;font-size:10px;font-weight:500;display:inline-flex}.kage-eyebrow .dot{background:var(--vermilion);width:6px;height:6px;box-shadow:0 0 10px var(--vermilion);border-radius:50%;animation:2.5s infinite pulse-dot}.kage-eyebrow .dot-jade{background:var(--jade);width:6px;height:6px;box-shadow:0 0 10px var(--jade);border-radius:50%;animation:2.4s infinite pulse-dot-jade}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}}@keyframes pulse-dot-jade{0%,to{opacity:1;box-shadow:0 0 8px var(--jade);transform:scale(1)}50%{opacity:.75;box-shadow:0 0 16px var(--cyan-light);transform:scale(1.4)}}.kage-display{text-transform:uppercase;letter-spacing:-.015em;text-shadow:0 2px 34px #030608b8;font-weight:400;line-height:1.05}.kage-lead{color:#c2cdc5;text-shadow:0 1px 20px #030608e6;font-size:clamp(15px,1.16vw,19px);font-weight:300;line-height:1.66}.kage-body{color:#9aa5a0;text-shadow:0 1px 18px #030608d9;font-size:14px;font-weight:300;line-height:1.68}.sec-head{align-items:baseline;gap:16px;margin-bottom:clamp(30px,5vh,66px);display:flex}.sec-head .k{letter-spacing:.24em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:500}.sec-head .k b{color:var(--vermilion);font-weight:500}.sec-head .rule{background:var(--line-soft);flex:auto;height:1px}.kage-sec{padding:clamp(88px,15vh,190px)var(--pad);position:relative;overflow:clip visible}.kage-sec:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(110% 62% at 30%,#04070a6b,#04070a2e 48%,#0000 76%);position:absolute;inset:-22% -4%;-webkit-mask-image:linear-gradient(#0000,#000 44%);mask-image:linear-gradient(#0000,#000 44%)}.kage-glass-card{-webkit-backdrop-filter:blur(20px);transition:background .5s var(--ease-out),border-color .5s var(--ease-out),box-shadow .5s var(--ease-out),transform .5s var(--ease-out);background:#060a0e6b;border:1px solid #dfe7e01f;position:relative;box-shadow:0 16px 40px #00000073,inset 0 1px 1px #ffffff17}.kage-glass-card:hover{background:#080e148f;border-color:#e0231c6b;box-shadow:0 24px 60px #000000a6,inset 0 1px 2px #ffffff29,0 0 32px #e0231c1f}.cur-dot{z-index:80;pointer-events:none;width:26px;height:26px;transition:width .35s var(--ease-out),height .35s var(--ease-out),margin .35s var(--ease-out),background .35s,border-color .35s,opacity .3s;opacity:0;transform:translate3d(var(--cx,0px),var(--cy,0px),0);will-change:transform;border:1px solid #dfe7e06b;border-radius:50%;margin:-13px 0 0 -13px;position:fixed;top:0;left:0}.cur-dot.act{background:#dfe7e014;border-color:#e0231cb3;width:52px;height:52px;margin:-26px 0 0 -26px}@media (hover:hover) and (pointer:fine){.cur-dot{opacity:1}}.rail{right:calc(var(--pad) - 4px);z-index:45;flex-direction:column;align-items:center;gap:14px;display:flex;position:fixed;top:50%;transform:translateY(-50%)}.rail button{cursor:pointer;background:0 0;border:0;place-items:center;width:28px;height:14px;padding:0;display:grid}.rail i{width:14px;height:1px;transition:width .45s var(--ease-out),background .45s;background:#dfe7e042;display:block}.rail button.on i{background:var(--vermilion);width:24px}.rail button:hover i{background:var(--bone);width:24px}@media (max-width:820px){.rail{display:none}}.kage-peek{z-index:2;width:clamp(180px,20vw,290px);transition:transform .8s var(--ease-out);display:block;position:absolute;top:clamp(110px,20vh,200px);right:clamp(40px,8vw,140px)}.kage-peek:hover{transform:translateY(-5px)}.kage-peek-fr{aspect-ratio:16/10;-webkit-backdrop-filter:blur(16px);outline-offset:-1px;background:#060a0e6b;border-radius:6px;outline:1px solid #dfe7e029;transition:outline-color .5s,box-shadow .5s;display:block;position:relative;overflow:hidden;box-shadow:0 34px 70px -30px #000000e6,inset 0 1px 1px #ffffff1a}.kage-peek:hover .kage-peek-fr{outline-color:#dfe7e06b}.kage-peek-play{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.kage-peek-play span{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:40px;height:40px;transition:transform .5s var(--ease-out),background .4s;background:#05070aa6;border-radius:50%;place-items:center;display:grid}.kage-peek:hover .kage-peek-play span{border-color:var(--vermilion);background:#e0231cd9;transform:scale(1.12)}.kage-peek-cap{align-items:baseline;gap:9px;margin-top:10px;display:flex}.kage-peek-cap b{letter-spacing:.18em;color:var(--bone-dim);font-size:13px}.kage-peek-cap i{letter-spacing:.2em;text-transform:uppercase;color:var(--muted);font-size:9px;font-style:normal}@media (max-width:860px){.kage-peek{display:none}}.hero-side{z-index:2;right:var(--pad);pointer-events:none;flex-direction:column;align-items:center;gap:14px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.hero-side .v{writing-mode:vertical-rl;letter-spacing:.5em;color:#dfe7e059;font-family:Noto Serif JP,serif;font-size:clamp(24px,2.5vw,38px)}@media (max-width:820px){.hero-side{display:none}}.arrowlink{letter-spacing:.2em;text-transform:uppercase;color:var(--bone);cursor:pointer;align-items:center;gap:12px;margin-top:34px;font-size:11px;font-weight:500;display:inline-flex}.arrowlink .ar{border:1px solid var(--line);width:36px;height:36px;transition:background .45s var(--ease),border-color .45s,transform .5s var(--ease-out);border-radius:50%;place-items:center;display:grid}.arrowlink:hover .ar{background:var(--bone);border-color:var(--bone);transform:scale(1.05)}.arrowlink:hover .ar svg{transform:translate(2px,-2px)}.arrowlink:hover .ar svg path{stroke:#05070a}.cta{border:1px solid var(--line);letter-spacing:.22em;text-transform:uppercase;color:var(--bone);transition:color .45s var(--ease),border-color .45s;border-radius:100px;align-items:center;gap:14px;margin-top:36px;padding:17px 32px;font-size:11px;font-weight:500;display:inline-flex;position:relative;overflow:hidden}.cta i{background:var(--bone);transition:transform .62s var(--ease-out);z-index:-1;position:absolute;inset:0;transform:translateY(101%)}.cta span,.cta svg{z-index:1;position:relative}.cta:hover{color:#05070a;border-color:var(--bone)}.cta:hover i{transform:none}.cta:hover svg path{stroke:#05070a}.card-fr{isolation:isolate;position:relative}.glow{z-index:1;pointer-events:none;left:var(--gx,50%);top:var(--gy,50%);width:calc(var(--gr,20%)*2);aspect-ratio:1;mix-blend-mode:screen;animation:glow-swell var(--gt2,8s)var(--ease-io)infinite alternate;position:absolute;translate:-50% -50%}.glow:before{content:"";background:radial-gradient(closest-side,var(--gc1,#ff8e6c80),var(--gc2,#d438263d)40%,transparent 72%);animation:glow-pulse var(--gt,5s)var(--ease-io)infinite;border-radius:50%;position:absolute;inset:0}@keyframes glow-swell{0%{transform:scale(.92)}to{transform:scale(1.08)}}@keyframes glow-pulse{0%{opacity:.75}50%{opacity:1}to{opacity:.75}}@keyframes glow-flame{0%{opacity:.74}6%{opacity:.97}12%{opacity:.63}19%{opacity:.9}27%{opacity:.55}34%{opacity:.94}42%{opacity:.71}51%{opacity:1}58%{opacity:.6}66%{opacity:.88}74%{opacity:.67}83%{opacity:.96}91%{opacity:.72}to{opacity:.74}}.glow--flame:before{animation-name:glow-flame}.glow--flame{animation-duration:var(--gt2,5s)}.glow--jade:before{background:radial-gradient(closest-side,#8ce01985,#0fe3c53d 42%,#0000 72%)!important}.cur{border-top:1px solid var(--line-soft)}.les{border-bottom:1px solid var(--line-soft);cursor:pointer;transition:padding .5s var(--ease-out);grid-template-columns:64px minmax(0,1.05fr) minmax(0,1.25fr) 110px;align-items:center;gap:clamp(14px,2.4vw,40px);padding:clamp(22px,2.6vw,34px) 0;display:grid;position:relative}.les:before{content:"";left:calc(var(--pad)*-1);opacity:0;transition:opacity .55s var(--ease);pointer-events:none;background:linear-gradient(90deg,#e0231c1a,#0000 46%);position:absolute;top:0;bottom:0;right:0}.les:hover:before{opacity:1}.les:hover{padding-left:clamp(8px,1.2vw,18px)}.les .k{letter-spacing:.16em;color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px;transition:color .4s}.les:hover .k{color:var(--vermilion)}.les h3{letter-spacing:-.005em;color:var(--bone);margin:0;font-size:clamp(16px,1.5vw,22px);font-weight:400}.les h3 em{color:var(--muted);letter-spacing:.24em;margin-left:12px;font-size:.75em;font-style:normal}.les p{color:#909b95;text-shadow:0 1px 16px #030608eb;margin:0;font-size:13px;line-height:1.6}.les .t{text-align:right;letter-spacing:.14em;color:#8b958f;font-variant-numeric:tabular-nums;font-size:11px}.les .bar{background:var(--vermilion);transform-origin:0;width:100%;height:1px;transition:transform .7s var(--ease-out);position:absolute;bottom:-1px;left:0;transform:scaleX(0)}.les:hover .bar{transform:scaleX(1)}@media (max-width:1080px){.les{grid-template-columns:44px minmax(0,1fr) 90px}.les p{display:none}}@media (max-width:640px){.les{grid-template-columns:36px 1fr;row-gap:8px}.les .t{text-align:left;grid-column:2}}@media (prefers-reduced-motion:reduce){.glow,.glow:before,.kage-eyebrow .dot{animation:none!important}.cur-dot{display:none!important}}
