@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/build/assets/schibsted-grotesk-latin-ext-wght-normal-hsMS0n0O.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/build/assets/schibsted-grotesk-latin-wght-normal-Bb8VGrTG.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/build/assets/source-serif-4-cyrillic-ext-wght-normal-DHTKMUil.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/build/assets/source-serif-4-cyrillic-wght-normal-B1g8a0vD.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/build/assets/source-serif-4-greek-wght-normal-BpXpdlRW.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/build/assets/source-serif-4-vietnamese-wght-normal-BsaNuasd.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/build/assets/source-serif-4-latin-ext-wght-normal-BVZ5su8S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/build/assets/source-serif-4-latin-wght-normal-DMe4EKeb.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/build/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/build/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/build/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/build/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/build/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#f9f8f4;--surface:#fff;--ink:#10201f;--muted:#556662;--line:#d3dbd7;--deep:#0f3836;--deep-ink:#e8f0ed;--deep-muted:#9fb7b2;--mark:#96d4db;--mark-ink:#10201f;--mark-strong:#2b7a83;--ok:#7fd6b0;--shadow:#0a1e1c59;--f-display:"Schibsted Grotesk Variable", "Helvetica Neue", Arial, sans-serif;--f-body:"Source Serif 4 Variable", Georgia, "Times New Roman", serif;--f-mono:"JetBrains Mono Variable", ui-monospace, Menlo, Consolas, monospace;--fs-body:1.125rem;--fs-small:1rem;--fs-label:.78rem;--fs-h3:1.5rem;--fs-h2:clamp(2rem, 4vw, 3.25rem);--fs-h1:clamp(2.5rem, 5.6vw, 4.6rem);--w:1180px;--gutter:16px;--section:5.5rem;--radius:10px;--radius-pill:999px;--ease-out:cubic-bezier(.16, 1, .3, 1);--reveal-duration:.9s;--reveal-distance:32px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#0e1716;--surface:#15211f;--ink:#e6ece9;--muted:#9aaba6;--line:#2a3a37;--deep:#0a2523;--deep-ink:#e8f0ed;--deep-muted:#8fa9a3;--mark-strong:#96d4db;--shadow:#0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#0e1716;--surface:#15211f;--ink:#e6ece9;--muted:#9aaba6;--line:#2a3a37;--deep:#0a2523;--deep-ink:#e8f0ed;--deep-muted:#8fa9a3;--mark-strong:#96d4db;--shadow:#0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:var(--fs-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}h1,h2,h3{font-family:var(--f-display);letter-spacing:-.02em;text-wrap:balance;margin:0;line-height:1.04}p{margin:0}img{max-width:100%;display:block}a{color:inherit}:focus-visible{outline:3px solid var(--mark);outline-offset:3px;border-radius:2px}[hidden]{display:none!important}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.wrap{max-width:var(--w);padding-left:max(var(--gutter), env(safe-area-inset-left,0px));padding-right:max(var(--gutter), env(safe-area-inset-right,0px));margin-inline:auto}.label{font-family:var(--f-mono);font-size:var(--fs-label);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}mark{background:linear-gradient(transparent 12%, var(--mark) 12%, var(--mark) 88%, transparent 88%);color:var(--mark-ink);-webkit-box-decoration-break:clone;box-decoration-break:clone;background-repeat:no-repeat;background-size:100% 100%;padding-inline:.12em}.btn{font-family:var(--f-display);border-radius:var(--radius-pill);border:1.5px solid var(--ink);color:var(--ink);cursor:pointer;background:0 0;align-items:center;gap:8px;padding:13px 20px;font-size:1rem;font-weight:700;text-decoration:none;transition:transform .15s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn--solid{background:var(--mark);border-color:var(--mark);color:var(--mark-ink)}.pill{font-family:var(--f-display);border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--radius-pill);cursor:pointer;padding:7px 14px;font-size:.9rem;font-weight:500}.pill[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.tags{flex-wrap:wrap;gap:6px;display:flex}.tag{font-family:var(--f-mono);letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line);color:var(--muted);border-radius:3px;padding:3px 8px;font-size:.72rem}.tag--metier{background:var(--mark);border-color:var(--mark);color:var(--mark-ink)}.term{font-family:var(--f-mono);white-space:pre;color:var(--deep-ink);background:#00000047;border:1px solid #ffffff14;border-radius:8px;margin:0;padding:14px 16px;font-size:.78rem;line-height:1.7;overflow-x:auto}.term .c{color:var(--deep-muted)}.term .y{color:var(--mark)}.term .g{color:var(--ok)}.field{font-family:var(--f-display);align-content:start;gap:6px;font-size:.875rem;font-weight:500;display:grid}.field input,.field select,.field textarea{font-family:var(--f-body);border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:6px;width:100%;padding:11px 12px;font-size:1rem}.field textarea{resize:vertical;min-height:120px}.field ul{color:#c2410c;margin:0;padding:0;font-size:.85rem;list-style:none}.prose{color:var(--ink);font-size:1.06rem;line-height:1.65}.prose>*+*{margin-top:.85em}.prose h3{margin-top:1.4em;font-size:1.25rem;font-weight:700}.prose h4{margin-top:1.2em;font-size:1.05rem;font-weight:700}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.3em}.prose a{color:var(--ink);-webkit-text-decoration-color:var(--mark);text-decoration-color:var(--mark);text-underline-offset:3px;text-decoration-thickness:2px}.prose blockquote{border-left:3px solid var(--mark);color:var(--muted);margin-left:0;padding-left:16px}.prose hr{border:0;border-top:1px solid var(--line)}.prose>:first-child{margin-top:0}.btn__icon{transition:transform .3s var(--ease-out);flex-shrink:0}.btn--send:hover .btn__icon{transform:translate(3px,-3px)}@media (prefers-reduced-motion:reduce){.btn--send:hover .btn__icon{transform:none}}body:before{content:"";height:env(safe-area-inset-top,0px);z-index:10;background:var(--surface);position:fixed;inset:0 0 auto}.site-header{top:env(safe-area-inset-top,0px);z-index:9;background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky}.site-header .wrap{align-items:center;gap:24px;padding-block:14px;display:flex}.brand{font-family:var(--f-display);letter-spacing:-.01em;flex-direction:column;gap:2px;font-size:1.2rem;font-weight:800;text-decoration:none;display:flex}.brand__name{align-items:baseline;gap:10px;display:flex}.brand small{font-family:var(--f-mono);color:var(--muted);font-size:.75rem;font-weight:400}.brand__place{font-family:var(--f-mono);letter-spacing:.02em;color:var(--muted);font-size:.72rem;font-weight:400}.site-nav{font-family:var(--f-display);gap:22px;margin-left:auto;font-size:.95rem;font-weight:500;display:flex}.site-nav a{color:var(--muted);text-decoration:none;transition:color .2s;position:relative}.site-nav a:hover{color:var(--ink)}.site-nav a:after{content:"";background:var(--mark);transform-origin:0;height:3px;transition:transform .35s var(--ease-out);border-radius:2px;position:absolute;bottom:-6px;left:0;right:0;transform:scaleX(0)}.site-nav a.is-active{color:var(--ink)}.site-nav a.is-active:after{transform:scaleX(1)}@media (prefers-reduced-motion:reduce){.site-nav a:after{transition:none}}.site-header__cta{font-family:var(--f-display);background:var(--mark-strong);color:var(--surface);border-radius:var(--radius-pill);padding:9px 16px;font-size:.95rem;font-weight:700;text-decoration:none;transition:background-color .2s}.site-header__cta:hover{background:var(--ink)}.site-nav a,.site-header__cta{white-space:nowrap}@media (width<=1000px){.site-nav,.brand small{display:none}.site-header__cta{margin-left:auto}}.section{padding-block:var(--section)}.section--flush-top{padding-top:0}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:40px;display:flex}.section-head h2{font-size:var(--fs-h2);max-width:18ch;font-weight:800}.section-head p{max-width:46ch;color:var(--muted)}.site-footer{border-top:1px solid var(--line)}.site-footer__id{gap:4px;display:grid}.site-footer__id strong{font-family:var(--f-display);color:var(--ink);font-size:.9rem;font-weight:700}.site-footer .wrap{font-family:var(--f-mono);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:16px;padding-block:28px;font-size:.78rem;display:flex}.section-head .section-note{border-left:3px solid var(--mark-strong);max-width:40ch;color:var(--ink);padding:4px 0 4px 18px;font-size:1.15rem;font-style:italic;line-height:1.55}.backstage .section-head .section-note{border-left-color:var(--mark);color:var(--deep-ink)}.hero .wrap{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:56px;padding-block:72px 64px;display:grid}.hero h1{font-size:var(--fs-h1);margin-top:18px;font-weight:800}.hero__lede{margin-top:26px;font-size:1.25rem}.hero__stack{font-family:var(--f-mono);flex-wrap:wrap;gap:8px;margin-top:28px;padding:0;font-size:.8rem;list-style:none;display:flex}.hero__stack li{border:1px solid var(--line);color:var(--muted);border-radius:4px;padding:4px 10px}.hero__actions{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.hero__viewer{min-width:0}.hero__fallback{border-radius:var(--radius);border:1px solid var(--line);overflow:hidden}@media (width<=900px){.hero .wrap{grid-template-columns:1fr;gap:40px;padding-block:44px}}.thesis{border-block:1px solid var(--line);background:var(--surface)}.thesis .wrap{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;padding-block:56px;display:grid}.thesis h2{font-size:clamp(1.75rem,3.4vw,2.6rem);font-weight:800}.thesis p{max-width:58ch;font-size:1.19rem}.thesis p+p{margin-top:14px}@media (width<=820px){.thesis .wrap{grid-template-columns:1fr;gap:20px}}.services{border-top:2px solid var(--ink);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.service{border-bottom:1px solid var(--line);grid-template-columns:80px 1fr;align-content:start;gap:4px 20px;padding:28px 28px 32px 0;display:grid}.service:nth-child(odd){border-right:1px solid var(--line)}.service:nth-child(2n){padding-left:28px}.service__kind{color:var(--mark-strong);grid-row:span 3;padding-top:6px}.service h3{font-size:var(--fs-h3);margin-bottom:10px;font-weight:700}.service p{color:var(--muted);max-width:46ch;font-size:1.06rem}.service__tech{font-family:var(--f-mono);margin-top:10px;font-size:.78rem;color:var(--ink)!important}@media (width<=820px){.services{grid-template-columns:1fr}.service,.service:nth-child(2n){border-right:0;grid-template-columns:1fr;padding-left:0}.service__kind{grid-row:auto;padding:0}}.process{counter-reset:step;grid-template-columns:repeat(6,minmax(0,1fr));column-gap:10px;margin:0;padding:0;list-style:none;display:grid}.step{border-top:2px solid var(--line);padding:22px 18px 0 0;position:relative}.step:before{counter-increment:step;content:"0" counter(step);background:var(--paper);font-family:var(--f-mono);color:var(--muted);padding-right:8px;font-size:.8rem;position:absolute;top:-13px;left:0}.step h3{margin-bottom:8px;font-size:1.19rem;font-weight:700}.step p{color:var(--muted);font-size:.97rem;line-height:1.5}.step__who{font-family:var(--f-mono);letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line);border-radius:3px;margin-top:12px;padding:2px 7px;font-size:.72rem;display:inline-block}@media (width<=1000px){.process{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:40px}}@media (width<=560px){.process{grid-template-columns:1fr;row-gap:36px}}.filters{flex-wrap:wrap;gap:8px;display:flex}.work{grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 40px;margin-top:36px;display:grid}.project{background:var(--surface);border-radius:12px;flex-direction:column;min-width:0;padding:25px;display:flex;box-shadow:6px 6px 12px #0003}.project__body{flex-direction:column;flex:1;display:flex}.project__body>:has(+.project__more){margin-bottom:18px}.project--wide .project__body{align-self:stretch}.project__img{aspect-ratio:16/10;border:1px solid var(--line);background:var(--surface);border-radius:8px;max-width:100%;overflow:hidden}.project__img img{object-fit:cover;object-position:top left;width:100%;height:100%;transition:transform .6s}.project:hover .project__img img{transform:scale(1.025)}.project__meta{justify-content:space-between;align-items:baseline;gap:16px;margin-top:16px;display:flex}.project h3{font-size:1.45rem;font-weight:700}.project__client{font-family:var(--f-mono);color:var(--muted);white-space:nowrap;font-size:.78rem;text-decoration:none}.project__client:hover{color:var(--ink);text-decoration:underline}.project p{color:var(--muted);max-width:52ch;margin-top:6px;font-size:1.03rem}.project .project__tech{font-family:var(--f-mono);color:var(--ink);margin-top:10px;font-size:.78rem}.project .tags{margin-top:12px}.project--wide{grid-column:1/-1;grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;gap:36px;display:grid}.project--wide .project__meta{margin-top:0}@media (width<=820px){.work{grid-template-columns:1fr;gap:44px}.project--wide{grid-template-columns:1fr;gap:16px}}.backstage{background:var(--deep);color:var(--deep-ink)}.backstage .label,.backstage .section-head p{color:var(--deep-muted)}.backstage .pledge .label{color:var(--mark)}.pledges{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;display:grid}.pledge{flex-direction:column;gap:14px;min-width:0;display:flex}.pledge h3{font-size:1.6rem;font-weight:800}.pledge p{color:var(--deep-muted);font-size:1.06rem}.pledge .term{margin-top:auto}@media (width<=960px){.pledges{grid-template-columns:1fr;gap:56px}}.contact .wrap{padding-block:var(--section);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;display:grid}.contact h2{margin-top:14px;font-size:clamp(2.1rem,4.4vw,3.6rem);font-weight:800}.contact__intro p{max-width:40ch;color:var(--muted);margin-top:20px;font-size:1.19rem}.contact-form{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);gap:16px;padding:28px;display:grid}.contact-form__row{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}.contact-form__kind{flex-wrap:wrap;gap:8px;display:flex}.contact-form__kind input{opacity:0;width:1px;height:1px;position:absolute}.contact-form__kind label{font-family:var(--f-display);border:1px solid var(--line);border-radius:var(--radius-pill);cursor:pointer;background:var(--paper);padding:7px 13px;font-size:.875rem;font-weight:500}.contact-form__kind input:checked+label{background:var(--ink);color:var(--paper);border-color:var(--ink)}.contact-form__kind input:focus-visible+label{outline:3px solid var(--mark);outline-offset:2px}.contact-form__hp{position:absolute;left:-9999px}.flash{font-family:var(--f-mono);background:var(--mark);color:var(--mark-ink);border-radius:6px;padding:12px 16px;font-size:.85rem;font-weight:400;line-height:1.55}@media (width<=820px){.contact .wrap{grid-template-columns:1fr;gap:36px}.contact-form__row{grid-template-columns:1fr}}.project__img{position:relative}.project__zoom{all:unset;cursor:zoom-in;width:100%;height:100%;display:block;position:relative}.project__zoom:focus-visible{outline:3px solid var(--mark);outline-offset:-3px}.project__count{font-family:var(--f-display);border-radius:var(--radius-pill);background:var(--ink);color:var(--paper);box-shadow:0 4px 14px -4px var(--shadow);pointer-events:none;padding:7px 12px;font-size:.82rem;font-weight:600;line-height:1;position:absolute;top:12px;right:12px}.project__count:before{content:"⧉ ";color:var(--mark)}.project__more{font-family:var(--f-display);color:var(--ink);cursor:pointer;background:0 0;background-image:linear-gradient(var(--mark), var(--mark));transition:background-size .25s var(--ease-out);background-position:0 100%;background-repeat:no-repeat;background-size:100% 2px;border:0;align-self:flex-end;align-items:center;gap:8px;margin-top:auto;padding:0;font-size:.95rem;font-weight:600;display:inline-flex}.project__more:after{content:"→";transition:transform .25s var(--ease-out)}.project__more:hover{background-size:100% 100%}.project__more:hover:after{transform:translate(3px)}.project__more:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.project__details{flex-direction:column;margin-top:auto;padding-top:16px;display:flex}.project__details summary{list-style:none;display:inline-flex}.project__details summary::-webkit-details-marker{display:none}.project__details[open] .prose{margin-top:14px}.prepare{background:var(--deep);color:var(--deep-ink)}.prepare__grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:64px;display:grid}.prepare__head{gap:16px;display:grid;position:sticky;top:120px}.prepare__head h2{font-size:var(--fs-h2);max-width:14ch;font-weight:800}.prepare__head p:not(.label){color:var(--deep-muted);max-width:40ch;font-size:1.06rem}.prepare .label{color:var(--mark)}.tips{counter-reset:tip;margin:0;padding:0;list-style:none}.tip{counter-increment:tip;border-top:1px solid color-mix(in srgb, var(--deep-ink) 16%, transparent);grid-template-columns:56px minmax(0,1fr);gap:10px 16px;padding-block:28px;display:grid}.tip:last-child{border-bottom:1px solid color-mix(in srgb, var(--deep-ink) 16%, transparent)}.tip:before{content:"0" counter(tip);font-family:var(--f-mono);color:var(--mark);grid-area:1/1;padding-top:6px;font-size:.85rem}.tip>*{grid-column:2}.tip h3{font-size:1.35rem;font-weight:700}.tip p{color:var(--deep-muted);max-width:58ch;font-size:1.04rem}.tip__chips{flex-wrap:wrap;gap:8px;margin:4px 0 0;padding:0;list-style:none;display:flex}.tip__chips li{font-family:var(--f-mono);color:var(--deep-muted);border:1px solid color-mix(in srgb, var(--deep-ink) 22%, transparent);border-radius:6px;padding:5px 10px;font-size:.78rem}.tip__chips b{color:var(--deep-ink);margin-right:4px;font-weight:600}.tip__chips:not(.tip__chips--plain) li:first-child{border-color:var(--mark)}.tip__chips li:first-child b{color:var(--mark)}.tip__chips--steps{align-items:center;gap:8px 0}.tip__chips--steps li+li:before{content:"→";color:var(--deep-muted);margin:0 10px 0 -2px}.tip__chips--steps li{border:0;align-items:center;padding:0;display:inline-flex}.tip__chips--steps b{border:1px solid color-mix(in srgb, var(--deep-ink) 22%, transparent);border-radius:6px;margin:0;padding:5px 10px}.tip__chips--steps li:first-child b{border-color:var(--mark)}.tip__chips--steps li+li:before{margin:0 10px}@media (width<=960px){.prepare__grid{grid-template-columns:1fr;gap:32px}.prepare__head{position:static}}@media (width<=560px){.tip{grid-template-columns:1fr}.tip:before{grid-row:auto;padding-top:0}.tip>*{grid-column:1}}.testimonials{background:var(--surface);border-block:1px solid var(--line)}.testimonials .section-head .label{margin-bottom:12px}.quotes{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;display:grid}.quote{border-top:2px solid var(--ink);flex-direction:column;gap:22px;margin:0;padding-top:22px;display:flex}.quote blockquote{margin:0;position:relative}.quote blockquote:before{content:"“";font-family:var(--f-display);height:.55em;color:var(--mark-strong);font-size:3.4rem;font-weight:800;line-height:.8;display:block}.quote blockquote p{color:var(--ink);font-size:1.08rem;line-height:1.65}.quote figcaption{gap:4px;margin-top:auto;display:grid}.quote figcaption strong{font-family:var(--f-display);font-size:1rem;font-weight:700}.quote figcaption span{font-family:var(--f-mono);color:var(--muted);font-size:.78rem}@media (width<=960px){.quotes{grid-template-columns:1fr;gap:48px}}.quote figcaption .quote__project{color:var(--mark-strong)}.project__desc{white-space:pre-line}.contact__intro .label{color:var(--mark-strong)}.flash--error{color:#7a1a12;background:#fde8e6}.flash--error ul{color:inherit;font-size:inherit;margin:0;padding:0;list-style:none}.flash{align-items:flex-start;gap:12px;display:flex}.flash:before{content:"";width:20px;height:20px;-webkit-mask:var(--flash-icon) center / contain no-repeat;-webkit-mask:var(--flash-icon) center / contain no-repeat;mask:var(--flash-icon) center / contain no-repeat;--flash-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m8 12.5 2.8 2.8L16.5 9.5'/%3E%3C/svg%3E");background:currentColor;flex-shrink:0;margin-top:1px}.flash--error:before{--flash-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 7.5v5.5'/%3E%3Cpath d='M12 16.5h.01'/%3E%3C/svg%3E")}.has-reveal [data-reveal]:not(.is-visible),.has-reveal [data-reveal-stagger]>:not(.is-visible),.has-reveal .reveal:not(.is-visible){opacity:0;transform:translate3d(0, var(--reveal-distance), 0)}.reveal{transition:opacity var(--reveal-duration) var(--ease-out) var(--reveal-delay,0s), transform var(--reveal-duration) var(--ease-out) var(--reveal-delay,0s)}.has-reveal .project.reveal .project__img img{transition:transform 1.4s var(--ease-out) var(--reveal-delay,0s)}.has-reveal .project.reveal:not(.is-visible) .project__img img{transform:scale(1.08)}.has-reveal .project.reveal.is-visible:hover .project__img img{transition-duration:.6s;transition-delay:0s}@media (prefers-reduced-motion:no-preference){.hero__intro>*,.hero__viewer{animation:rise 1s var(--ease-out) both}.hero__intro>:nth-child(2){animation-delay:80ms}.hero__intro>:nth-child(3){animation-delay:.16s}.hero__intro>:nth-child(4){animation-delay:.24s}.hero__intro>:nth-child(5){animation-delay:.32s}.hero__viewer{animation-duration:1.2s;animation-delay:.2s}.hero h1 mark{animation:mark-sweep .9s var(--ease-out) .55s both}}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}@keyframes mark-sweep{0%{background-size:0% 100%}}.rv[data-v-ce330f24]{margin:0}.rv__flip[data-v-ce330f24]{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-pill);gap:2px;margin-bottom:14px;padding:4px;display:inline-flex}.rv__flip button[data-v-ce330f24]{font-family:var(--f-display);color:var(--muted);border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:0;padding:8px 16px;font-size:.875rem;font-weight:700}.rv__flip button[aria-pressed=true][data-v-ce330f24]{background:var(--ink);color:var(--paper)}.rv__frame[data-v-ce330f24]{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);box-shadow:0 30px 60px -30px var(--shadow);overflow:hidden}.rv__bar[data-v-ce330f24]{border-bottom:1px solid var(--line);font-family:var(--f-mono);color:var(--muted);align-items:center;gap:6px;padding:10px 12px;font-size:.75rem;display:flex}.rv__bar i[data-v-ce330f24]{background:var(--line);border-radius:50%;width:9px;height:9px}.rv__url[data-v-ce330f24]{background:var(--paper);white-space:nowrap;text-overflow:ellipsis;border-radius:4px;min-width:0;margin-left:10px;padding:3px 10px;overflow:hidden}.rv__shot[data-v-ce330f24]{aspect-ratio:16/9.4;background:var(--paper);max-width:100%;position:relative;overflow:hidden}.rv__shot img[data-v-ce330f24]{object-fit:cover;object-position:top left;width:100%;height:100%;transition:opacity .45s,transform .6s;position:absolute;inset:0}.rv__shot img.off[data-v-ce330f24]{opacity:0;transform:scale(1.02)}.rv__caption[data-v-ce330f24]{color:var(--muted);justify-content:space-between;align-items:flex-start;gap:16px;margin-top:14px;font-size:1rem;display:flex}.rv__caption strong[data-v-ce330f24]{color:var(--ink);font-family:var(--f-display);font-weight:700}.rv__pager[data-v-ce330f24]{flex-shrink:0;gap:6px;display:flex}.rv__pager button[data-v-ce330f24]{border:1px solid var(--line);background:var(--surface);width:36px;height:36px;color:var(--ink);cursor:pointer;border-radius:50%;font-size:1rem}.lb[data-v-a43ffb7c]{color:#e8f0ed;background:#0f1a19;border:1px solid #ffffff14;border-radius:14px;flex-direction:column;gap:14px;width:min(1240px,100vw - 32px);max-width:none;height:min(900px,100dvh - 48px);max-height:none;margin:auto;padding:16px 20px;overflow:hidden;box-shadow:0 40px 120px -20px #000000b3}.lb[open][data-v-a43ffb7c]{animation:lb-in-a43ffb7c .3s var(--ease-out);display:flex}.lb[data-v-a43ffb7c]::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#081211b8}.lb__bar[data-v-a43ffb7c],.lb__foot[data-v-a43ffb7c]{flex-shrink:0;align-items:center;gap:16px;display:flex}.lb__title[data-v-a43ffb7c]{min-width:0;font-family:var(--f-display);flex:1;align-items:baseline;gap:14px;margin:0;display:flex}.lb__title strong[data-v-a43ffb7c]{text-overflow:ellipsis;white-space:nowrap;font-size:1.1rem;overflow:hidden}.lb__count[data-v-a43ffb7c]{font-family:var(--f-mono);color:#9fb7b2;font-variant-numeric:tabular-nums;font-size:.8rem}.lb__stage[data-v-a43ffb7c]{flex:1;min-height:0;position:relative}.lb__img[data-v-a43ffb7c]{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.lb__foot[data-v-a43ffb7c]{justify-content:space-between}.lb__caption[data-v-a43ffb7c]{text-align:center;color:#9fb7b2;flex:1;min-width:0;margin:0;font-size:.95rem}.lb__close[data-v-a43ffb7c],.lb__nav[data-v-a43ffb7c]{color:#e8f0ed;cursor:pointer;background:#ffffff0f;border:1px solid #fff3;border-radius:50%;flex-shrink:0;width:42px;height:42px;font-size:1.05rem}.lb__close[data-v-a43ffb7c]:hover,.lb__nav[data-v-a43ffb7c]:hover{background:var(--mark);color:var(--mark-ink);border-color:var(--mark)}.lb-fade-enter-active[data-v-a43ffb7c],.lb-fade-leave-active[data-v-a43ffb7c]{transition:opacity .2s ease, transform .25s var(--ease-out)}.lb-fade-enter-from[data-v-a43ffb7c]{opacity:0;transform:scale(.985)}.lb-fade-leave-to[data-v-a43ffb7c]{opacity:0}@keyframes lb-in-a43ffb7c{0%{opacity:0;transform:translateY(12px)scale(.98)}}@media (width<=600px){.lb[data-v-a43ffb7c]{border-radius:10px;width:calc(100vw - 16px);height:calc(100dvh - 24px);padding:12px}}.drawer[data-v-94544eb7]{border:0;border-left:1px solid var(--line);background:var(--paper);width:min(680px,100vw);max-width:none;height:100dvh;max-height:none;color:var(--ink);overscroll-behavior:contain;margin:0;padding:0;position:fixed;inset:0 0 0 auto;overflow-y:auto;box-shadow:-30px 0 80px -30px #08121173}.drawer[open][data-v-94544eb7]{animation:drawer-in-94544eb7 .45s var(--ease-out)}.drawer.is-closing[data-v-94544eb7]{animation:.26s ease-in forwards drawer-out-94544eb7}.drawer[data-v-94544eb7]::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#08121173;animation:.3s fade-in-94544eb7}.drawer.is-closing[data-v-94544eb7]::backdrop{animation:.26s ease-in forwards fade-out-94544eb7}.drawer__inner[data-v-94544eb7]{gap:28px;padding:28px 44px 48px;display:grid}.drawer__head[data-v-94544eb7]{background:var(--paper);border-bottom:1px solid var(--line);z-index:1;justify-content:space-between;align-items:flex-start;gap:20px;margin:-28px -44px 0;padding:28px 44px 18px;display:flex;position:sticky;top:-28px}.drawer__title[data-v-94544eb7]{margin:6px 0 8px;font-size:clamp(1.5rem,1.2rem + 1vw,2rem);font-weight:700;line-height:1.15}.drawer__close[data-v-94544eb7]{border:1px solid var(--line);background:var(--surface);width:42px;height:42px;color:var(--ink);cursor:pointer;border-radius:50%;flex-shrink:0;font-size:1rem}.drawer__close[data-v-94544eb7]:hover{background:var(--mark);border-color:var(--mark);color:var(--mark-ink)}.drawer__photos[data-v-94544eb7]{gap:14px;display:grid}.drawer__photos.is-pair[data-v-94544eb7]{grid-template-columns:repeat(2,minmax(0,1fr))}.drawer__photos figure[data-v-94544eb7]{aspect-ratio:16/9;border:1px solid var(--line);background:var(--surface);border-radius:10px;margin:0;overflow:hidden}.drawer__photos.is-pair figure[data-v-94544eb7]{aspect-ratio:16/10}.drawer__photos img[data-v-94544eb7]{object-fit:cover;object-position:top center;width:100%;height:100%;display:block}@keyframes drawer-in-94544eb7{0%{transform:translate(100%)}}@keyframes drawer-out-94544eb7{to{transform:translate(100%)}}@keyframes fade-in-94544eb7{0%{opacity:0}}@keyframes fade-out-94544eb7{to{opacity:0}}@media (width<=600px){.drawer__inner[data-v-94544eb7]{gap:22px;padding:20px 18px 36px}.drawer__head[data-v-94544eb7]{margin:-20px -18px 0;padding:20px 18px 14px;top:-20px}}@media (prefers-reduced-motion:reduce){.drawer[open][data-v-94544eb7],.drawer[data-v-94544eb7]::backdrop{animation:none}}
