:root{--paper: #F2ECE0;--paper-2: #ECE4D5;--ink: #1B1714;--ink-soft: #4A413A;--ink-faint: #8A7F73;--line: #D6CCBA;--line-strong: #C7BBA6;--accent: #BF4D2A;--accent-deep: #97391C;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--sans: "Hanken Grotesk", -apple-system, sans-serif;--serif: "Fraunces", Georgia, serif;--maxw: 1240px;--gutter: clamp(1.25rem, 4vw, 4rem)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{font-family:var(--sans);background:var(--paper);color:var(--ink);line-height:1.5;font-size:clamp(1rem,.95rem + .3vw,1.125rem);overflow-x:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body:after{content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:multiply}.progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--accent);z-index:102;transition:width .1s linear}.grid-bg{position:fixed;inset:0;z-index:0;pointer-events:none;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);display:grid;grid-template-columns:repeat(4,1fr)}.grid-bg span{border-left:1px solid var(--line);opacity:.55;transform:scaleY(0);transform-origin:top;animation:gridIn 1.2s cubic-bezier(.2,.8,.2,1) forwards}.grid-bg span:nth-child(2){animation-delay:.08s}.grid-bg span:nth-child(3){animation-delay:.16s}.grid-bg span:nth-child(4){animation-delay:.24s}.grid-bg span:last-child{border-right:1px solid var(--line)}@keyframes gridIn{to{transform:scaleY(1)}}@media(max-width:720px){.grid-bg{grid-template-columns:repeat(2,1fr)}}.wrap{position:relative;z-index:1;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}a{color:inherit;text-decoration:none}.mono{font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.sec-num{font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;color:var(--accent);display:inline-flex;align-items:center;gap:.6em}.sec-num:before{content:"";width:1.8em;height:1px;background:var(--accent);opacity:.6}header{position:fixed;top:0;left:0;right:0;z-index:100;backdrop-filter:blur(6px);background:color-mix(in srgb,var(--paper) 72%,transparent);border-bottom:1px solid transparent;transition:border-color .4s,background .4s}header.scrolled{border-bottom-color:var(--line)}.nav{max-width:var(--maxw);margin:0 auto;padding:1.05rem var(--gutter);display:flex;align-items:center;justify-content:space-between}.brand .logo{font-family:var(--serif);font-weight:600;font-size:1.6rem;letter-spacing:-.02em;font-variation-settings:"SOFT" 40,"WONK" 1;line-height:1}.brand .logo .dot{color:var(--accent)}nav.links{display:flex;gap:1.6rem;align-items:center}nav.links a{font-family:var(--mono);font-size:.74rem;letter-spacing:.05em;color:var(--ink-soft);position:relative;transition:color .25s}nav.links a:not(.cta):after{content:"";position:absolute;left:0;bottom:-4px;width:0;height:1px;background:var(--accent);transition:width .3s}nav.links a:not(.cta):hover{color:var(--ink)}nav.links a:not(.cta):hover:after{width:100%}@media(max-width:880px){nav.links>a:not(.cta){display:none}}.lang-switch{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--mono);font-size:.74rem;letter-spacing:.05em}.lang-switch .sep{color:var(--line-strong)}.lang-switch a.lang{color:var(--ink-faint);transition:color .25s}.lang-switch a.lang:after{display:none}.lang-switch a.lang:hover{color:var(--ink)}.lang-switch a.lang.on{color:var(--accent)}.cta{border:1px solid var(--ink);padding:.5rem 1rem;border-radius:100px;color:var(--ink)!important;transition:background .25s,color .25s,transform .25s}.cta:hover{background:var(--ink);color:var(--paper)!important;transform:translateY(-1px)}.hero{padding-top:clamp(8rem,16vh,12rem);padding-bottom:clamp(4rem,8vh,7rem);min-height:100svh;display:flex;flex-direction:column;justify-content:center}.hero .sec-num{margin-bottom:2rem}.hero h1{font-family:var(--serif);font-weight:360;font-size:clamp(2.7rem,1.5rem + 7vw,7rem);line-height:.99;letter-spacing:-.025em;font-variation-settings:"SOFT" 25,"opsz" 144;max-width:15ch}.hero h1 .ln{display:block;overflow:hidden;padding-bottom:.18em;margin-bottom:-.18em}.hero h1 .ln>i{display:block;font-style:normal;transform:translateY(116%);animation:lineRise 1s cubic-bezier(.2,.8,.2,1) forwards}.hero h1 .ln:nth-child(1)>i{animation-delay:.12s}.hero h1 .ln:nth-child(2)>i{animation-delay:.24s}.hero h1 .ln:nth-child(3)>i{animation-delay:.36s}@keyframes lineRise{to{transform:none}}.hero h1 em{font-style:italic;font-weight:420;color:var(--accent);font-variation-settings:"SOFT" 60,"WONK" 1,"opsz" 144}.hero h1 em.draw{background:linear-gradient(var(--accent),var(--accent)) no-repeat left bottom / 0% 2px;padding-bottom:.04em;animation:draw .7s cubic-bezier(.2,.8,.2,1) 1.1s forwards}@keyframes draw{to{background-size:100% 2px}}.hero .lede{margin-top:clamp(1.8rem,4vh,2.8rem);max-width:46ch;font-size:clamp(1.1rem,1rem + .5vw,1.4rem);color:var(--ink-soft);line-height:1.45}.hero-actions{margin-top:2.6rem;display:flex;align-items:center;gap:1.6rem;flex-wrap:wrap}.btn-primary{display:inline-flex;align-items:center;gap:.7rem;background:var(--accent);color:var(--paper);padding:.95rem 1.6rem;border-radius:100px;font-weight:500;font-size:1rem;transition:background .25s,transform .15s ease-out,box-shadow .3s;box-shadow:0 1px 0 var(--accent-deep)}.btn-primary .arr{transition:transform .3s}.btn-primary:hover{background:var(--accent-deep);box-shadow:0 12px 26px -10px var(--accent)}.btn-primary:hover .arr{transform:translate(4px)}.hero-actions .meta{color:var(--ink-faint)}.marquee{margin-top:clamp(3rem,8vh,5rem);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:.85rem 0;overflow:hidden;white-space:nowrap;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.marquee .track{display:inline-flex;gap:2.4rem;animation:scroll 32s linear infinite;will-change:transform}.marquee span{font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;color:var(--ink-soft);text-transform:uppercase}.marquee span:before{content:"✦";color:var(--accent);margin-right:2.4rem}@keyframes scroll{to{transform:translate(-50%)}}section.block{padding:clamp(5rem,12vh,9rem) 0;position:relative}.block-head{margin-bottom:clamp(2.5rem,6vh,4.5rem)}.block-head h2{font-family:var(--serif);font-weight:380;font-size:clamp(2rem,1.3rem + 3vw,3.6rem);line-height:1.04;letter-spacing:-.02em;margin-top:1.2rem;font-variation-settings:"SOFT" 30,"opsz" 100;max-width:18ch}#about .prose{max-width:38ch;margin:0 auto;font-family:var(--serif);font-weight:340;font-size:clamp(1.35rem,1.1rem + 1vw,1.85rem);line-height:1.5;letter-spacing:-.01em;font-variation-settings:"SOFT" 30,"opsz" 60}#about .prose p{margin-bottom:1.4em}#about .prose b{font-style:normal;font-weight:500}#about .prose .close{color:var(--accent);font-style:italic}#about .footnote{max-width:38ch;margin:3rem auto 0;padding-top:1.6rem;border-top:1px dashed var(--line-strong);font-family:var(--mono);font-size:.8rem;line-height:1.7;color:var(--ink-faint)}#about .footnote b{color:var(--ink-soft);font-weight:500}.service{display:grid;grid-template-columns:4rem 1fr;gap:clamp(1rem,4vw,3rem);padding:clamp(2rem,4vh,3rem) 0;border-top:1px solid var(--line);align-items:start}.service:last-child{border-bottom:1px solid var(--line)}.service .idx{font-family:var(--mono);font-size:.85rem;color:var(--accent);padding-top:.5rem}.service h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.5rem,1.1rem + 1.6vw,2.4rem);line-height:1.05;letter-spacing:-.02em;margin-bottom:.9rem;font-variation-settings:"SOFT" 30}.service p{max-width:52ch;color:var(--ink-soft)}.checks{margin-top:1.4rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.5rem 1.5rem;list-style:none}.checks li{font-family:var(--mono);font-size:.8rem;color:var(--ink-soft);padding:.55rem 0;border-bottom:1px solid var(--line);display:flex;gap:.6rem}.checks li b{color:var(--ink);font-weight:500}.checks li:before{content:"→";color:var(--accent)}@media(max-width:560px){.service{grid-template-columns:1fr;gap:.4rem}.service .idx{padding-top:0}}.work-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1.2rem,3vw,2.2rem)}@media(max-width:720px){.work-grid{grid-template-columns:1fr}}.project{display:block;border:1px solid var(--line);border-radius:6px;background:var(--paper-2);overflow:hidden;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,border-color .35s}.project:hover{transform:translateY(-5px);box-shadow:0 22px 40px -24px #1b171480;border-color:var(--line-strong)}.project .thumb{aspect-ratio:16/10;position:relative;overflow:hidden;display:grid;place-items:center;background:repeating-linear-gradient(45deg,transparent 0 11px,color-mix(in srgb,var(--accent) 6%,transparent) 11px 12px),var(--paper)}.project .thumb:after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,color-mix(in srgb,var(--paper) 75%,#fff) 48%,transparent 66%);transform:translate(-120%);transition:transform .7s cubic-bezier(.2,.8,.2,1)}.project:hover .thumb:after{transform:translate(120%)}.project .thumb .ph{font-family:var(--serif);font-style:italic;font-size:clamp(2.2rem,5vw,3.4rem);color:var(--line-strong);font-variation-settings:"SOFT" 60,"WONK" 1;transition:transform .5s,color .35s;position:relative;z-index:1}.project:hover .thumb .ph{transform:scale(1.06);color:var(--accent)}.project .body{padding:1.3rem 1.4rem 1.5rem}.project .body .meta{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:.7rem}.project .body h3{font-family:var(--serif);font-weight:420;font-size:1.5rem;letter-spacing:-.015em;line-height:1.1;margin-bottom:.4rem;font-variation-settings:"SOFT" 30}.project .body p{color:var(--ink-soft);font-size:.96rem}.project .body .go{margin-top:1rem;font-family:var(--mono);font-size:.74rem;color:var(--accent);display:inline-flex;gap:.4rem;align-items:center}.work-note{margin-top:2rem;text-align:center}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0}@media(max-width:860px){.steps{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.steps{grid-template-columns:1fr}}.step{padding:1.8rem clamp(1rem,2vw,1.6rem) 2.4rem 0;border-top:2px solid var(--ink);position:relative}.step .n{font-family:var(--mono);font-size:.78rem;color:var(--accent)}.step h3{font-family:var(--serif);font-weight:440;font-size:1.4rem;letter-spacing:-.015em;margin:1.2rem 0 .6rem;font-variation-settings:"SOFT" 30}.step p{font-size:.94rem;color:var(--ink-soft)}.step .tick{position:absolute;top:-7px;left:0;width:12px;height:12px;border-radius:50%;background:var(--accent)}#contact{text-align:center}#contact .big{font-family:var(--serif);font-weight:360;font-size:clamp(2rem,1.2rem + 4vw,4.4rem);line-height:1.05;letter-spacing:-.02em;font-variation-settings:"SOFT" 30,"opsz" 120;max-width:22ch;margin:0 auto}#contact .big em{font-style:italic;color:var(--accent);padding-right:.08em}#contact .sub{margin:1.4rem auto 2.6rem;max-width:44ch;color:var(--ink-soft)}.mail{display:inline-flex;align-items:baseline;gap:.6rem;font-family:var(--mono);font-size:clamp(1.1rem,.9rem + 1.4vw,1.9rem);color:var(--ink);border-bottom:2px solid var(--accent);padding-bottom:.3rem;transition:color .25s,gap .25s}.mail:hover{color:var(--accent);gap:1rem}#contact .loc{margin-top:2.4rem}.contact-form{max-width:38rem;margin:0 auto 2.8rem;text-align:left;display:grid;gap:1.1rem}.contact-form .row{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem;align-items:start}@media(max-width:560px){.contact-form .row{grid-template-columns:1fr}}.field{display:grid;gap:.45rem}.field label{font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.field input,.field textarea{font-family:var(--sans);font-size:1rem;color:var(--ink);background:var(--paper-2);border:1px solid var(--line);border-radius:6px;padding:.8rem .95rem;width:100%;transition:border-color .25s,box-shadow .25s,background .25s}.field textarea{resize:vertical;min-height:8rem;line-height:1.5}.field input::placeholder,.field textarea::placeholder{color:var(--ink-faint);opacity:.7}.field input:focus,.field textarea:focus{outline:none;border-color:var(--accent);background:var(--paper);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}.contact-form .actions{display:flex;align-items:center;gap:1.2rem;flex-wrap:wrap}.contact-form button[type=submit]{display:inline-flex;align-items:center;gap:.7rem;background:var(--accent);color:var(--paper);border:none;padding:.9rem 1.6rem;border-radius:100px;font-family:var(--sans);font-weight:500;font-size:1rem;cursor:pointer;box-shadow:0 1px 0 var(--accent-deep);transition:background .25s,transform .15s ease-out,box-shadow .3s}.contact-form button[type=submit]:hover:not(:disabled){background:var(--accent-deep);box-shadow:0 12px 26px -10px var(--accent)}.contact-form button[type=submit]:disabled{opacity:.6;cursor:progress}.contact-form .form-note{font-family:var(--mono);font-size:.74rem;color:var(--ink-faint);min-height:1.2em}.contact-form .form-note.ok{color:var(--accent)}.contact-form .form-note.err{color:#9c3434}.field-error{font-family:var(--mono);font-size:.68rem;letter-spacing:.04em;color:#9c3434;min-height:1em}.field-error:empty{display:none}.field input.invalid,.field textarea.invalid{border-color:#9c3434;background:color-mix(in srgb,#9c3434 5%,var(--paper-2))}.field input.invalid:focus,.field textarea.invalid:focus{box-shadow:0 0 0 3px color-mix(in srgb,#9c3434 14%,transparent)}.contact-form .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}footer{border-top:1px solid var(--line);padding:2.4rem 0 3rem}.foot{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;flex-wrap:wrap}.foot .brand .logo{font-size:1.4rem}.foot .left{max-width:30ch}.foot .left p{font-family:var(--mono);font-size:.74rem;color:var(--ink-faint);margin-top:.7rem;line-height:1.6}.foot .right{display:flex;gap:1.4rem}.foot .right a{font-family:var(--mono);font-size:.76rem;color:var(--ink-soft);transition:color .25s}.foot .right a:hover{color:var(--accent)}.palette{position:fixed;right:clamp(1rem,3vw,2rem);bottom:clamp(1rem,3vw,2rem);z-index:103;display:flex;align-items:center;gap:.5rem;padding:.5rem .6rem;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:100px;box-shadow:0 8px 24px -16px #1b171499}.palette .lbl{font-family:var(--mono);font-size:.6rem;letter-spacing:.1em;color:var(--ink-faint);text-transform:uppercase;padding-left:.3rem}.palette button{width:18px;height:18px;border-radius:50%;border:2px solid transparent;background:var(--sw);cursor:pointer;padding:0;transition:transform .2s,border-color .2s}.palette button:hover{transform:scale(1.18)}.palette button.on{border-color:var(--ink)}@media(max-width:560px){.palette .lbl{display:none}}.cursor{position:fixed;top:0;left:0;z-index:9998;width:30px;height:30px;margin:-15px 0 0 -15px;border:1px solid var(--accent);border-radius:50%;pointer-events:none;opacity:0;mix-blend-mode:multiply;transition:width .25s,height .25s,margin .25s,background .25s,opacity .3s;will-change:transform}.cursor.show{opacity:1}.cursor.hov{width:56px;height:56px;margin:-28px 0 0 -28px;background:color-mix(in srgb,var(--accent) 14%,transparent)}.reveal{opacity:0;transform:translateY(14px);transition:opacity .8s cubic-bezier(.2,.8,.2,1),transform .8s cubic-bezier(.2,.8,.2,1)}.reveal.in{opacity:1;transform:none}.hero .anim{opacity:0;transform:translateY(18px);animation:rise .9s cubic-bezier(.2,.8,.2,1) forwards}.hero .anim.d1{animation-delay:.05s}.hero .anim.d3{animation-delay:.62s}.hero .anim.d4{animation-delay:.76s}.hero .anim.d5{animation-delay:.9s}@keyframes rise{to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}.hero .anim,.hero h1 .ln>i{opacity:1;transform:none}.hero h1 em.draw{background-size:100% 2px}.grid-bg span{transform:scaleY(1)}.cursor{display:none}html{scroll-behavior:auto}}
