@font-face{font-family:Caveat;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e44cdba7d0878bc5-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Caveat;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/07fccecd6728972a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Caveat;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/486fce9f36bc8f45-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Caveat;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/46bdd75a3ff56824-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Caveat;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/e44cdba7d0878bc5-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Caveat;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/07fccecd6728972a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Caveat;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/486fce9f36bc8f45-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Caveat;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/46bdd75a3ff56824-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Caveat Fallback;src:local("Arial");ascent-override:124.77%;descent-override:38.99%;line-gap-override:0.00%;size-adjust:76.94%}.__className_2d1901{font-family:Caveat,Caveat Fallback;font-style:normal}.__variable_2d1901{--font-caveat:"Caveat","Caveat Fallback"}@font-face{font-family:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(/_next/static/media/7ab938503e4547a1-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(/_next/static/media/13971731025ec697-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Sans Fallback;src:local("Arial");ascent-override:94.90%;descent-override:29.66%;line-gap-override:0.00%;size-adjust:104.53%}.__className_0d7163{font-family:DM Sans,DM Sans Fallback;font-style:normal}.__variable_0d7163{--font-dm-sans:"DM Sans","DM Sans Fallback"}

/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid}}}@layer theme{:host,:root{--font-sans:var(--font-dm-sans),system-ui,sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-ink:#1d2a4a;--color-pen:#1f3a93;--color-paper:#fbfbf8;--color-sticky:#f6e36a;--font-hand:var(--font-caveat),"Bradley Hand",cursive}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{:root{--inkmap:url(/assets/textures/ink-grain.jpg);--wood:url(/assets/textures/desk-black-wood.jpg);--wood-shade:#0000;--lines:#5484c457;--paper:#fbfbf8;--ink:#1d2a4a;--pen:#1f3a93;--text:#23262b;--muted:#5d636b;--sticky:#f6e36a;--gold:#c9a24a;--red:#d8342c;--hand:var(--font-caveat),"Bradley Hand","Segoe Print",cursive;--sans:var(--font-dm-sans),system-ui,-apple-system,"Segoe UI",sans-serif;box-sizing:border-box;padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--wood-shade:#0c050061}}:root[data-theme=dark]{--wood-shade:#0c050061}*,:after,:before{box-sizing:inherit}html{scroll-behavior:smooth;scroll-padding-top:calc(env(safe-area-inset-top,0px) + 30px)}.quick,html{scrollbar-width:none}.quick::-webkit-scrollbar,html::-webkit-scrollbar{display:none}body{min-height:100%;color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;background:linear-gradient(var(--wood-shade),var(--wood-shade)),var(--wood) center top /1400px auto repeat,#111;margin:0;overflow-x:hidden}.name{--c:var(--ink)}.role{--c:var(--text)}.tools,.where{--c:var(--muted)}.tools strong,.where strong{--c:var(--text)}.hand-h,.index em,.mail,.story h3{--c:var(--pen)}.about p:not(.tools),.index b{--c:var(--text)}.index span{--c:var(--muted)}.pic figcaption,.polaroid figcaption,.project h2,.sig{--c:var(--ink)}.index-group,.kind,.pg,.story p{--c:var(--muted)}.backlink{--c:var(--pen)}.about p,.backlink,.hand-h,.index b,.index em,.index span,.index-group,.kind,.mail,.mark,.name,.pg,.pic figcaption,.polaroid figcaption,.project h2,.role,.sig,.story h3,.story p,.tools,.tools strong,.where,.where strong{color:var(--c);background-image:var(--inkmap),linear-gradient(var(--c),var(--c));background-blend-mode:hard-light,normal;-webkit-text-fill-color:transparent;background-size:380px,auto;-webkit-background-clip:text;background-clip:text}.scene,.viewport{position:relative}.viewport{overflow-x:clip}.desk-obj:not(.model):not(.phone):not(.card),.deskplane{display:none}html.tilt{scroll-behavior:auto;scroll-padding-top:0}.tilt body{background:#0a0a0a}.tilt .viewport{perspective:1400px;perspective-origin:50% 45%;position:fixed;inset:0;overflow:clip}.tilt .scene{transform-origin:50% 0;will-change:transform;width:100%;position:absolute;top:0;left:0}@supports (animation-timeline:scroll()){.tilt .scene{animation:camera linear both;animation-timeline:scroll(root)}}@keyframes camera{0%{transform:translate3d(0,var(--focus),0) rotateX(var(--angle)) translate3d(0,calc(-1 * var(--focus)),0)}to{transform:translate3d(0,var(--focus),0) rotateX(var(--angle)) translate3d(0,calc(-1 * var(--focus) - var(--travel)),0)}}.tilt .deskplane{background:linear-gradient(var(--wood-shade),var(--wood-shade)),var(--wood) center top /1400px auto repeat,#111;width:140%;display:block;position:absolute;top:-700px;bottom:-700px;left:-20%}.tilt .wrap{perspective:none;margin-top:40px}.light{z-index:40;pointer-events:none;background:radial-gradient(60% 55% at 45% 30%,#ffffff0d,#0000 70%),radial-gradient(120% 100% at 50% 40%,#0000 50%,#00000073 100%);position:fixed;inset:0}button{font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0}a,button{color:inherit}:focus-visible{outline:3px solid var(--sticky);outline-offset:4px;border-radius:3px}.wrap{perspective:1600px;width:min(820px,100% - 32px);margin:72px auto 120px}.stack,.wrap{position:relative}.stack{z-index:2;transform-origin:50% 0;animation:land 1.1s cubic-bezier(.2,.75,.2,1) both;display:grid}@keyframes land{0%{opacity:0;transform:rotateX(24deg)translateY(60px)rotate(-2.5deg)}to{opacity:1;transform:none}}.sheet{min-width:0;transform:translate(var(--dx,0),var(--dy,0)) rotate(var(--rot,var(--tilt,0deg)));flex-direction:column;grid-area:1/1;align-self:start;transition:transform .6s cubic-bezier(.2,.7,.2,1);display:flex;position:relative;box-shadow:0 1px 1px #14080073,0 6px 8px #1408004d,0 24px 36px #14080059}.sheet[inert]{box-shadow:0 1px 2px #14080080}.sheet[inert] .paper>*{visibility:hidden}.sheet>:not(.paper){transition:opacity .4s}.sheet[inert]>:not(.paper){opacity:0}.sheet:nth-child(2){--crumple:-310px -540px}.sheet:nth-child(3){--crumple:-620px -180px}.sheet:nth-child(4){--crumple:-140px -760px}.sheet:nth-child(5){--crumple:-480px -380px}.paper{background-color:var(--paper);background-image:url(/assets/textures/paper-crumple.jpg),radial-gradient(ellipse 130% 90% at 50% 45%,transparent 60%,#7864461a 100%),linear-gradient(90deg,transparent 84px,#d8342c6b 84px 85px,transparent 85px 88px,#d8342c47 88px 89px,transparent 89px),repeating-linear-gradient(180deg,transparent 0 31px,var(--lines) 31px 32px),url(/assets/textures/paper-grain.jpg);background-size:900px,auto,auto,100% calc(100% - 64px),700px;background-position:var(--crumple,0 0),0 0,0 0,0 64px,0 0;background-blend-mode:multiply,multiply,multiply,multiply,normal;background-repeat:repeat,no-repeat,no-repeat,no-repeat,repeat;flex:1;min-height:0;padding:64px 72px 64px 112px;position:relative;overflow:hidden;-webkit-mask:radial-gradient(7px at 30px,#0000 96%,#000 100%) 0 0/100% 290px repeat-y;mask:radial-gradient(7px at 30px,#0000 96%,#000 100%) 0 0/100% 290px repeat-y}.pg{color:var(--muted);right:40px}.backlink,.pg{font:700 28px var(--hand);position:absolute;bottom:22px}.backlink{color:var(--pen);left:112px}.polaroid{z-index:3;background:#fdfdfb;width:320px;padding:14px 14px 0;position:absolute;top:-8px;right:-62px;transform:rotate(8deg);box-shadow:0 1px 2px #00000040,0 10px 16px #0003,0 26px 40px #00000024}.polaroid .img{aspect-ratio:1;color:#fff;background:linear-gradient(160deg,#c9cdd2,#8e969f);place-items:center;font-size:14px;font-weight:500;display:grid;position:relative;box-shadow:inset 0 0 0 1px #00000014,inset 0 0 30px #00000026}.polaroid .img img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.polaroid .img:after{content:"";background:linear-gradient(125deg,#ffffff47,#0000 40%);position:absolute;inset:0}.polaroid figcaption{font:700 34px/1 var(--hand);color:var(--ink);text-align:center;padding:14px 0 20px}.intro .name,.intro .role,.intro .where{max-width:calc(100% - 210px)}.name{font:700 80px/.9 var(--hand);color:var(--ink);max-width:9ch;margin:0 0 14px}.role{max-width:24ch;margin:0 0 8px;font-size:24px;font-weight:700;line-height:1.3}.where{color:var(--muted);margin:0 0 20px;font-size:19px;line-height:1.5}.btn{border:1.5px solid var(--ink);background:0 0;border-radius:3px;padding:10px 16px;font-size:17px;font-weight:700;text-decoration:none;display:inline-block}.btn.primary{background:var(--ink);color:var(--paper)}.btn:hover{background:var(--pen);border-color:var(--pen);color:var(--paper)}.block{margin-top:40px}.hand-h{font:700 46px/1 var(--hand);color:var(--pen);margin:0 0 12px}.about p{max-width:60ch;margin:0 0 20px;font-size:20px;line-height:1.5}.tools{color:var(--muted)}.tools strong{color:var(--text)}.index{margin:0;padding:0;list-style:none}.index a{grid-template-columns:1fr auto;align-items:baseline;gap:16px;padding:5px 0;text-decoration:none;display:grid}.index b{font-size:20px}.index span{color:var(--muted);margin-top:0;font-size:17px;line-height:1.4;display:block}.index em{font:500 25px var(--hand);color:var(--pen);white-space:nowrap;font-style:normal}.index a:hover b{text-decoration:underline;-webkit-text-decoration-color:var(--pen);text-decoration-color:var(--pen);text-underline-offset:4px}.sign a.mail{font:700 34px var(--hand);color:var(--pen)}.sign .contact{flex-direction:column;gap:2px;display:flex}.sign a.mail.tel{font-size:28px}.sign .sig{font:700 44px var(--hand);color:var(--ink);transform:rotate(-5deg)}.pen-spot{z-index:2;position:absolute;top:430px;right:-262px}.red-pen{cursor:pointer;background:0 0;border:0;padding:0;transition:transform .35s cubic-bezier(.2,.7,.2,1);display:block}.red-pen img{width:481px;max-width:none;height:auto;margin:-70px;display:block}.red-pen:focus-visible,.red-pen:hover{transform:translate(-4px,-6px)rotate(-3deg)}.red-pen:focus-visible{outline:2px dashed var(--red);outline-offset:4px}.mark{white-space:nowrap;position:relative}.mark:after{content:"";pointer-events:none;mix-blend-mode:multiply;opacity:.9;clip-path:inset(0 100% 0 0);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M1 6.5C20 4.6 44 7.6 64 5.6S91 4.3 99 5.2' fill='none' stroke='%23c4221b' stroke-width='3' stroke-linecap='round' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") 0 0/100% 100% no-repeat;height:.34em;transition:clip-path .2s ease-out;position:absolute;bottom:-.1em;left:-2%;right:-3%}.where strong .mark:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M1 3.5C20 2 44 4.6 64 2.8S91 1.8 99 2.6M4 8.4C26 7 50 9.2 70 7.6S93 7 97 7.8' fill='none' stroke='%23c4221b' stroke-width='3' stroke-linecap='round' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");height:.5em;bottom:-.26em}.marked .mark:after{clip-path:inset(0);transition:clip-path .25s cubic-bezier(.5,0,.3,1) calc(var(--order) * 70ms)}.pen-hint{white-space:nowrap;pointer-events:none;font:700 34px/1 var(--hand);color:var(--pen);align-items:center;gap:4px;display:flex;position:absolute;top:-18px;left:-150px;transform:rotate(-4deg)}.pen-hint svg{fill:none;stroke:currentColor;stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round;flex:none}.pen-hint span{padding-top:0}.pen-hint .tap-word{display:none}@media (hover:none),(pointer:coarse){.pen-hint .click-word{display:none}.pen-hint .tap-word{display:inline}}.skills{margin:16px 0 0}.index .index-group{font:700 13.5px/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;margin:6px 0 1px}.view-toggle{z-index:50;top:calc(16px + env(safe-area-inset-top,0px));font:700 16px var(--sans);color:var(--ink);background:var(--paper);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:8px;padding:10px 16px;display:inline-flex;position:fixed;right:16px;box-shadow:0 2px 4px #00000059,0 8px 20px #0000004d}.view-toggle svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.view-toggle:focus-visible,.view-toggle:hover{background:var(--sticky)}.view-toggle.in-quick{flex:none;position:static}html:has(.quick[open]){overflow:hidden}.quick{color:#f1efe9;background:#0e0c0af7;border:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;overflow-y:auto}.quick::backdrop{background:#0009}.zoom-btn{width:100%;display:block}.phone,.zoom-btn{cursor:zoom-in}.zoom{color:#f1efe9;background:#0e0c0af0;border:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0}.zoom[open]{place-items:center;display:grid}.zoom::backdrop{background:#0009}.zoom figure{flex-direction:column;align-items:center;gap:10px;margin:0;display:flex}.zoom img{object-fit:contain;cursor:default;width:min(92vw,1100px);height:auto;max-height:84vh;display:block}.zoom figcaption{font:700 30px/1 var(--hand);color:#f1efe9}.zoom-close{top:calc(16px + env(safe-area-inset-top,0px));font:700 16px var(--sans);color:var(--ink);background:var(--paper);border-radius:999px;padding:10px 16px;position:fixed;right:16px;box-shadow:0 2px 4px #00000059,0 8px 20px #0000004d}.zoom-close:focus-visible,.zoom-close:hover{background:var(--sticky)}html:has(.zoom[open]){overflow:hidden}.quick-in{width:min(1120px,100% - 32px);margin:0 auto;padding:28px 0 64px}.quick-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.quick-head h2{font:700 46px/1 var(--hand);color:#fff;margin:0 0 8px}.quick-head p{margin:0;font-size:20px;font-weight:700}.quick-head .quick-where{color:#bdb8ad;margin-top:4px;font-size:17px;font-weight:400}.quick-links{flex-wrap:wrap;gap:10px;margin:22px 0 14px;display:flex}.quick .btn{color:#f1efe9;border-color:#f1efe9}.quick .btn.primary{color:#141414;background:#f1efe9}.quick .btn:hover{background:var(--sticky);border-color:var(--sticky);color:#141414}.quick-skills{margin:0}.quick-skills span{color:#dcd8cf;border-color:#5d5950}.quick-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px;margin:32px 0 0;padding:0;list-style:none;display:grid}.quick-grid a{background:var(--paper);height:100%;color:var(--text);border-radius:4px;flex-direction:column;text-decoration:none;transition:transform .2s,box-shadow .2s;display:flex;overflow:hidden}.quick-grid a:hover{transform:translateY(-3px);box-shadow:0 12px 28px #00000073}.quick-grid a:focus-visible{outline:3px solid var(--sticky);outline-offset:3px}.q-img{aspect-ratio:4/3;color:#6b7069;text-align:center;background:repeating-linear-gradient(135deg,#e3e5e1 0 12px,#eceee9 12px 24px);place-items:center;font-size:13px;display:grid}.q-img span{padding:12px}.q-img img{object-fit:cover;width:100%;height:100%}.q-body{flex-direction:column;gap:4px;padding:14px 16px 18px;display:flex}.q-group{letter-spacing:.08em;text-transform:uppercase;color:var(--pen);font-size:13px;font-weight:700}.q-body b{color:var(--ink);font-size:21px;line-height:1.25}.q-sum{font-size:17.5px;line-height:1.45}.q-tags{color:var(--muted);margin-top:4px;font-size:15px}.phone-home{display:none}.phone-home,.quick.work{height:auto;min-height:100dvh;overflow:visible}.quick-about{max-width:62ch;margin:28px 0 0}.quick-about h3{font:700 34px/1 var(--hand);color:#fff;margin:0 0 10px}.quick-about p{color:#dcd8cf;margin:0 0 12px;font-size:17px;line-height:1.55}.quick-about strong{color:#f1efe9}@media (max-width:767px){.light,.view-toggle:not(.in-quick),.viewport{display:none}.phone-home{display:block}.quick-grid{grid-template-columns:1fr}.q-img{aspect-ratio:16/10}}.work-back{margin:0 0 26px;text-decoration:none;display:inline-flex}.work-kind{color:#bdb8ad;margin:0 0 6px;font-size:15px;line-height:1.45}.work-title{font:700 46px/1 var(--hand);color:#fff;margin:0 0 16px}.work-gallery{flex-direction:column;gap:28px;margin:30px 0 40px;display:flex}.work-pic{background:#fdfdfb;border-radius:3px;margin:0;padding:10px 10px 0;box-shadow:0 8px 24px #0006}.work-pic img{width:100%;height:auto;display:block}.work-pic figcaption{font:700 24px/1 var(--hand);color:var(--ink);padding:10px 2px 12px}.work-pic.logo img{padding:10% 8%}.work-pic.phone-shot{background:#1b1c1e;border-radius:34px;align-self:center;width:min(72%,300px);padding:10px}.work-pic.phone-shot img{border-radius:24px}.work-pic.phone-shot figcaption{color:#f1efe9;text-align:center;padding:12px 0 6px}.work-story h2{font:700 32px/1.1 var(--hand);color:#fff;margin:0 0 6px}.work-story p{color:#dcd8cf;max-width:62ch;margin:0 0 22px;font-size:17px;line-height:1.6}.work .contact{flex-direction:column;gap:4px;margin:6px 0 34px;display:flex}.work .mail{font:700 26px/1.1 var(--hand);color:#f1efe9;-webkit-text-fill-color:currentColor;overflow-wrap:anywhere;background:0 0;text-decoration:none}.work .mail.tel{font-size:22px}.work-nav{border-top:1px solid #3a3731;grid-template-columns:1fr 1fr;gap:12px;padding-top:20px;display:grid}.work-nav a{color:#f1efe9;background:#221f1b;border-radius:6px;flex-direction:column;gap:4px;padding:14px;text-decoration:none;display:flex}.work-nav a.next{text-align:right;grid-column:2}.work-nav span{color:#bdb8ad;font-size:14px}.work-nav b{font-size:16px;line-height:1.3}.kind{color:var(--muted);margin:0 0 4px;font-size:17.5px}.project h2{font:700 64px/.95 var(--hand);color:var(--ink);margin:0 0 14px}.tags{flex-wrap:wrap;gap:6px;margin-bottom:0;display:flex}.tags span{background:0 0;border:1px solid #b9bdc4;border-radius:20px;padding:4px 10px;font-size:16px;font-weight:500}.page-note{z-index:5;background:linear-gradient(172deg,#f8e87a,var(--sticky) 60%,#efd955);color:#3b3510;width:224px;font:500 26px/1.1 var(--hand);padding:14px 14px 16px 18px;position:absolute;top:50%;left:-172px;transform:rotate(-4deg);box-shadow:0 1px 1px #00000026,0 8px 14px #0000004d}.page-note:before{content:"";background:#0000000d;height:22px;position:absolute;inset:0 0 auto}.page-note b{margin-bottom:6px;font-size:32px;display:block}.page-note ol{margin:0;padding:0;list-style:none}.page-note a{gap:8px;padding:3px 0;text-decoration:none;display:flex;position:relative}.page-note a span{width:14px}.page-note em{font-style:normal}.page-note a:hover em{text-underline-offset:3px;text-decoration:underline}.page-note a[aria-current]:after{content:"";border:2px solid var(--pen);border-radius:52% 46% 55% 48%/58% 50% 46% 52%;position:absolute;inset:0 -6px 0 -8px;transform:rotate(-2deg)}.pic{transform:rotate(var(--r,2deg));margin:0;position:relative}.pic .frame{background:#fff;padding:10px 10px 0;box-shadow:0 1px 2px #0003,0 8px 16px #00000029}.pic .ph{aspect-ratio:16/10;text-align:center;color:var(--muted);background:repeating-linear-gradient(45deg,#efefea 0 12px,#e5e5df 12px 24px);place-items:center;padding:14px;font-size:14px;display:grid}.pic img.ph{background:#fff;padding:0}.pic figcaption{font:700 26px/1 var(--hand);color:var(--ink);padding:9px 2px 11px}.pic.main{width:92%;margin:14px 0 40px 3%}.pics .ph{aspect-ratio:4/3}.tape{z-index:2;clip-path:polygon(0 8%,6% 0,12% 10%,18% 0,26% 8%,34% 0,42% 9%,50% 0,58% 8%,66% 0,74% 10%,82% 0,90% 8%,100% 0,100% 92%,94% 100%,86% 90%,78% 100%,70% 92%,62% 100%,54% 90%,46% 100%,38% 92%,30% 100%,22% 90%,14% 100%,6% 92%,0 100%);background:linear-gradient(#f5eed69e,#e4dabcb8);width:100px;height:30px;position:absolute;box-shadow:0 1px 1px #0000001f}.tape.tl{top:-8px;left:-30px;transform:rotate(-38deg)}.tape.tr{top:-8px;right:-30px;transform:rotate(38deg)}.tape.top{top:-15px;left:50%;transform:translate(-50%)rotate(-3deg)}.pc{pointer-events:none;width:32px;height:112px;position:absolute;overflow:visible}.pc.cb{z-index:-1}.pc.cf{z-index:4;filter:drop-shadow(1px 2px 1px #00000059);z-index:6}.pc.edge-top{top:-40px;right:136px;transform:rotate(180deg)}.pc.edge-side{top:112px;right:-6px;transform:rotate(-90deg)}.side-pic{z-index:4;width:230px;position:absolute;top:96px;right:-26px}.side-pic .ph{aspect-ratio:4/3}.project .kind,.project .tags,.project h2{max-width:calc(100% - 170px)}.project.no-clip .kind,.project.no-clip .tags,.project.no-clip h2{max-width:none;min-height:0}.project .pic.main{margin-top:60px}.project .compact .pic.main{width:70%;margin:40px 0 0 1%}.compact .pics{z-index:2;margin-top:-50px;position:relative}.compact .pics .pic{justify-self:end;width:67%}.story h3{font:700 32px/1.1 var(--hand);color:var(--pen);margin:0 0 6px}.story p{max-width:62ch;margin:0 0 20px;font-size:20px;line-height:1.5}.story p.todo{color:var(--muted);font-style:italic}.desk-obj{z-index:1;text-decoration:none;transition:opacity .6s .8s,visibility 0s .8s;animation:appear .7s .7s backwards;position:absolute}.desk-obj[data-away]{opacity:0;visibility:hidden;transition:opacity .3s,visibility 0s .3s}@keyframes appear{0%{opacity:0}to{opacity:1}}.lift{transition:transform .45s cubic-bezier(.2,.7,.2,1);box-shadow:0 1px 1px #0003,0 6px 14px #00000040,0 18px 30px #0000002e}.item{pointer-events:none;filter:drop-shadow(2px 3px 2px #14080073)drop-shadow(8px 16px 18px #14080066);height:auto}.brush{width:560px;transform:rotate(8deg)}.arduino{width:300px;transform:rotate(9deg)}.chain{width:330px;transform:rotate(-12deg)}.airpods{width:170px;transform:rotate(-10deg)}.ruler{width:470px;transform:rotate(-6deg)}.car{width:150px;transform:rotate(62deg)}.cable{width:320px;transform:rotate(-14deg)}.lighter{width:58px;transform:rotate(24deg)}.pen{transform-origin:0;background:linear-gradient(#3a57c0,#1f3a93 55%,#152a6e);border-radius:8px 3px 3px 8px;width:260px;height:16px;transform:rotate(72deg);box-shadow:6px 6px 10px #00000059}.pen:before{border-top:5px solid #0000;border-bottom:5px solid #0000;border-left:28px solid #d9d9d9;top:3px;right:-26px}.pen:after,.pen:before{content:"";position:absolute}.pen:after{background:#c7cbd3;border-radius:3px;width:80px;height:6px;top:-3px;left:26px}.model{z-index:3;pointer-events:none}.model img{max-width:none;position:absolute;top:50%;left:50%;translate:-50% -50%}.sticky{background:var(--sticky);width:160px;height:140px;font:500 24px/1.05 var(--hand);color:#3b3510;padding:16px 14px;transform:rotate(-5deg)}.sticky:before{content:"";background:#0000000d;height:22px;position:absolute;inset:0 0 auto}.card{aspect-ratio:773/490;perspective:900px;cursor:pointer;width:300px;transform:rotate(-8deg)}.card-inner{transform-style:preserve-3d;transition:transform .7s cubic-bezier(.2,.7,.2,1);position:absolute;inset:0}.card:focus .card-inner,.card:hover .card-inner{transform:translateZ(30px)rotateY(180deg)}.face{backface-visibility:hidden;flex-direction:column;justify-content:space-between;padding:20px 22px;display:flex;position:absolute;inset:0}.card .front{background:#fff;padding:0}.card .front img{object-fit:cover;width:100%;height:100%}.card .back{background-blend-mode:multiply;background:#e87842 url(/assets/textures/paper-grain.jpg) 0 0/420px;transform:rotateY(180deg)}.phone{background:#1b1c1e;border-radius:40px;width:256px;height:506px;padding:13px;transform:rotate(-7deg)}.phone:hover{transform:rotate(-4deg)translateY(-6px)}.phone .screen{color:#1b1c1e;background:#f5f5f5;border-radius:29px;position:relative}.phone .screen img{object-fit:cover;object-position:top;flex:1;width:100%;min-height:0}.p-status{align-items:center;height:30px;padding:0 24px;font-size:12px;display:flex}.p-status i{background:#1b1c1e;border-radius:50%;width:12px;height:12px;margin-left:-6px;position:absolute;top:9px;left:50%}.phone.dark .screen{color:#f1ece4;background:#473e37}.phone.dark .p-status i{background:#000}.ipad{background:#1b1c1e;border-radius:26px;width:300px;height:420px;padding:14px;transform:rotate(6deg)}.ipad:hover,.poster:hover{transform:rotate(3deg)translateY(-6px)}.screen{color:#2b211b;background:#efe8e0;border-radius:12px;flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.s-nav{justify-content:space-between;padding:12px 14px;font-size:10px;font-weight:700;display:flex}.s-hero{color:#efe8e0;background:linear-gradient(135deg,#6b4a3a,#2b211b);border-radius:6px;flex-direction:column;justify-content:flex-end;height:118px;margin:0 10px;padding:14px;display:flex}.s-hero b{font-size:20px;line-height:1}.s-hero span{opacity:.8;margin-top:4px;font-size:10px}.s-list{padding:10px 14px;font-size:11px;display:block}.s-list span{border-bottom:1px solid #2b211b26;justify-content:space-between;padding:7px 0;display:flex}.s-book{color:#efe8e0;text-align:center;background:#2b211b;border-radius:4px;margin:auto 14px 14px;padding:10px;font-size:11px;font-weight:700}.vinyl{background:radial-gradient(circle,#6b4428 0 7px,var(--gold) 8px 34px,#000 35px 37px,#1a1a1a 38px 40%,#050505 41%,#151515 60%,#050505 61%,#111 100%);border-radius:50%;width:300px;height:300px}.poster{width:280px;height:392px;color:var(--gold);background:#000;flex-direction:column;padding:26px 22px;display:flex;transform:rotate(7deg)}.poster .p-top{letter-spacing:.3em;font-size:11px;font-weight:500}.poster .p-title{font:800 46px/.88 var(--sans);letter-spacing:-.03em;color:#f1e3bd;margin:auto 0 14px}.poster .p-line{border-top:1px solid var(--gold);padding-top:10px;font-size:12px;font-weight:500;line-height:1.9}.poster .p-line i{background:var(--gold);opacity:.55;height:7px;margin:4px 0;display:block}.bomb-rig{width:270px;height:300px}.bomb-rig .sticky{z-index:2;width:150px;height:130px;position:absolute;top:200px;left:120px}.bomb{perspective:900px;cursor:grab;touch-action:none;width:260px;height:210px;position:absolute;top:0;left:0}.bomb:active{cursor:grabbing}.box{width:220px;height:150px;transform-style:preserve-3d;transform:rotateX(var(--bx,-22deg)) rotateY(var(--by,26deg));top:30px;left:20px}.bf,.box{position:absolute}.bf{backface-visibility:hidden;background:#6d7278 linear-gradient(135deg,#ffffff14,#0000 60%);border:2px solid #4b4f54}.bf.front{grid-template-rows:1fr 1fr;grid-template-columns:repeat(3,1fr);gap:6px;padding:8px;display:grid;transform:translateZ(40px)}.bf.back,.bf.front{width:220px;height:150px}.bf.back{justify-content:center;align-items:center;gap:10px;display:flex;transform:rotateY(180deg)translateZ(40px)}.bf.right{transform:rotateY(90deg)translateZ(110px)}.bf.left,.bf.right{width:80px;height:150px;left:70px}.bf.left{transform:rotateY(-90deg)translateZ(110px)}.bf.top{transform:rotateX(90deg)translateZ(75px)}.bf.bottom,.bf.top{width:220px;height:80px;top:35px}.bf.bottom{transform:rotateX(-90deg)translateZ(75px)}.mod{background:#d9d6cc;border-radius:2px;position:relative;overflow:hidden}.mod:after{content:"";background:#3fbf5f;border-radius:50%;width:6px;height:6px;position:absolute;top:4px;right:4px}.timer{color:var(--red);text-shadow:0 0 6px #d8342cb3;background:#111;place-items:center;font:700 22px/1 ui-monospace,Courier New,monospace;display:grid}.timer:after{display:none}.wires{flex-direction:column;justify-content:center;gap:4px;padding:6px;display:flex}.wires i{border-radius:2px;height:3px}.bigbtn:before{content:"";background:var(--red);border-radius:50%;position:absolute;inset:9px;box-shadow:inset 0 -3px #00000040}.keys{grid-template-columns:1fr 1fr;gap:3px;padding:6px;display:grid}.keys i{background:#f3f1ea;border:1px solid #9a968a}.memory{font:700 18px var(--sans);color:#2b2b2b;place-items:center;display:grid}.battery{background:linear-gradient(90deg,#b8862f,#e0b451 50%,#b8862f);border-radius:4px;width:28px;height:56px}.serial{color:#222;background:#f3f1ea;padding:6px 8px;font:700 11px ui-monospace,Courier New,monospace}.port{background:#2c2e31;border-radius:3px;height:18px;position:absolute;left:14px;right:14px}.bomb-slot{background:#151515;border-radius:4px;justify-content:center;margin:0 0 36px;padding:10px 0 0;display:none;overflow:hidden}.wrap>.bomb-rig{transform-origin:0 0;transform:scale(1.3)}.bomb-slot .bomb-rig{width:270px;height:230px;animation:none;position:relative;transform:none}.bomb-slot .sticky{display:none}@media (max-width:1239px){.about p,.backlink,.hand-h,.index b,.index em,.index span,.index-group,.kind,.mail,.mark,.name,.pg,.pic figcaption,.polaroid figcaption,.project h2,.role,.sig,.story h3,.story p,.tools,.tools strong,.where,.where strong{-webkit-text-fill-color:currentColor;background-image:none;-webkit-background-clip:border-box;background-clip:border-box}.paper{-webkit-mask:none!important;mask:none!important}.sheet[inert] .paper{background:var(--paper) url(/assets/textures/paper-grain.jpg) 0 0 /500px auto}.desk-obj{display:none}.bomb-slot,.page-note{display:flex}.page-note{align-items:center;gap:8px;width:auto;padding:12px 12px 8px 16px;top:calc(100% - 16px);left:50%;transform:rotate(-1.5deg)}.page-note b{margin:0;font-size:27px}.page-note ol{display:flex}.page-note a{padding:2px 9px}.page-note a span{width:auto}.page-note em{display:none}.wrap{margin-bottom:110px}}@media (max-width:640px){body{background-size:auto,900px,auto}.wrap{margin:28px auto 40px}.paper{background-image:url(/assets/textures/paper-crumple.jpg),linear-gradient(90deg,transparent 46px,#d8342c6b 46px 47px,transparent 47px),repeating-linear-gradient(180deg,transparent 0 31px,var(--lines) 31px 32px),url(/assets/textures/paper-grain.jpg);background-size:640px,auto,100% calc(100% - 56px),500px;background-position:var(--crumple,0 0),0 0,0 56px,0 0;background-blend-mode:multiply,multiply,multiply,normal;background-repeat:repeat,no-repeat,no-repeat,repeat;padding:70px 20px 60px 58px;-webkit-mask:radial-gradient(6px at 20px,#0000 96%,#000 100%) 0 0/100% 240px repeat-y;mask:radial-gradient(6px at 20px,#0000 96%,#000 100%) 0 0/100% 240px repeat-y}.polaroid{width:180px;padding:9px 9px 0;top:-14px;right:-10px}.polaroid figcaption{padding:8px 0 11px;font-size:26px}.intro .paper{padding-top:270px}.pen-spot{top:56px;left:34px;right:auto}.red-pen img{width:240px;margin:-35px}.pen-hint{flex-direction:row-reverse;font-size:24px;top:-8px;left:44px}.pen-hint svg{width:34px;height:28px;transform:scaleX(-1)}.intro .name,.intro .role,.intro .where{max-width:none}.view-toggle{top:auto;bottom:calc(16px + env(safe-area-inset-bottom,0px))}.quick-head{flex-direction:column-reverse}.quick-head h2{font-size:38px}.side-pic{width:108px;top:34px;right:-8px}.side-pic .ph{padding:6px;font-size:11px}.side-pic figcaption{font-size:20px}.pc.edge-side{top:40px;right:-6px}.pc.edge-top{right:60px}.project .kind{max-width:calc(100% - 104px);min-height:148px}.project .tags,.project h2{max-width:none}.sign a.mail{overflow-wrap:anywhere;font-size:26px}.sign a.mail.tel{font-size:22px}.about p,.index b,.story p{font-size:18px}.index span{font-size:15.5px}.name{max-width:none;font-size:62px}.role{font-size:22px}.backlink{left:58px}.project h2{font-size:46px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.desk-obj,.stack{animation:none}.card-inner,.lift,.red-pen,.sheet{transition:none}.mark:after{transition:none!important}}}@layer utilities{.absolute{position:absolute}.sticky{position:sticky}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.table{display:table}.w-full{width:100%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-\[34px\]{gap:34px}.border{border-style:var(--tw-border-style);border-width:1px}.bg-paper{background-color:var(--color-paper)}.bg-sticky{background-color:var(--color-sticky)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-\[8\%\]{padding:8%}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.font-hand{font-family:var(--font-hand)}.text-ink{color:var(--color-ink)}.text-pen{color:var(--color-pen)}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}