@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{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}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{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{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,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{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-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{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.relative{position:relative}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.block{display:block}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.border{border-style:var(--tw-border-style);border-width:1px}.uppercase{text-transform:uppercase}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@font-face{font-family:Olivetti;src:url(/fonts/OlivettiVB-Regular03.woff)format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter-VariableFont_opsz,wght.ttf)format("truetype");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter-Italic-VariableFont_opsz,wght.ttf)format("truetype");font-weight:100 900;font-style:italic;font-display:swap}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--font-display:"Inter",sans-serif;--font-body:"Inter",sans-serif;--font-mono:"Olivetti","Courier New",monospace;--font-display-weight:400;--font-body-weight:400;--h1-size:40px;--h2-size:28px;--h3-size:17px;--body-size:14px;--label-size:10px;--mono-size:12px;--line-height:1.5;--letter-spacing-display:-.02em;--letter-spacing-body:-.01em;--letter-spacing-mono:0em;--letter-spacing-label:.08em;--sidebar-width-rest:65%;--sidebar-width-active:40%;--page-padding:32px;--item-gap:0px;--card-gap:16px;--sidebar-padding-right:48px;--bg:#fff;--fg:#111;--accent:#111;--gray-100:#f7f7f7;--gray-200:#ebebeb;--gray-300:#d0d0d0;--gray-400:#aaa;--gray-500:#666;--divider:transparent;--hover-bg:transparent;--stage-bg:#fff;--detail-padding:40px;--detail-text-max-width:520px;--detail-text-indent:0px;--image-radius:6px;--gallery-columns:2;--gallery-aspect:4/3}html{font-size:16px}body{font-family:var(--font-body);font-weight:var(--font-body-weight);font-size:var(--body-size);line-height:var(--line-height);letter-spacing:var(--letter-spacing-body);color:var(--fg);background:var(--bg);flex-direction:column;height:100vh;display:flex;overflow:hidden}.shell{flex:1;min-height:0;display:flex}.sidebar{width:var(--sidebar-width-rest);min-width:var(--sidebar-width-rest);border-right:1px solid var(--divider);flex-direction:column;height:100%;transition:width .5s cubic-bezier(.16,1,.3,1),min-width .5s cubic-bezier(.16,1,.3,1);display:flex;overflow:hidden}.shell.detail-open .sidebar{width:var(--sidebar-width-active);min-width:var(--sidebar-width-active)}.shell.view-gallery:not(.detail-open) .sidebar{width:75%;min-width:75%}.sidebar-header{padding:var(--page-padding);padding-bottom:0}.logo{font-family:var(--font-mono);font-size:var(--mono-size);letter-spacing:var(--letter-spacing-mono);text-transform:uppercase;cursor:pointer;color:inherit;background:0 0;border:none;padding:0}.nav-row{top:var(--page-padding);right:var(--page-padding);z-index:100;gap:20px;display:flex;position:fixed}.nav-row.nav-row-hidden{display:none}.nav-link{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);cursor:pointer;background:0 0;border:none;padding:4px 0;text-decoration:none;transition:color .2s}.nav-link:hover,.nav-link.active{color:var(--fg)}.sub-header{margin:20px var(--page-padding)0;border-bottom:1px solid var(--divider);justify-content:flex-start;align-items:center;gap:24px;display:flex}.view-toggle{gap:0;display:flex}.view-btn{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);cursor:pointer;background:0 0;border:none;padding:10px 16px 10px 0;transition:color .2s;position:relative}.view-btn:hover,.view-btn.active{color:var(--fg)}.view-btn.active:after{content:"";background:var(--fg);height:1.5px;position:absolute;bottom:-1px;left:0;right:16px}.filter-toggle-btn{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);cursor:pointer;background:0 0;border:none;padding:10px 0;transition:color .2s}.filter-toggle-btn:hover,.filter-toggle-btn.active{color:var(--fg)}.filter-toggle-symbol{margin-left:4px;transition:transform .2s;display:inline-block}.filter-toggle-btn.active .filter-toggle-symbol{transform:rotate(45deg)}.filter-row{padding:12px var(--page-padding);border-bottom:1px solid var(--divider);opacity:0;flex-wrap:wrap;gap:8px;max-height:0;padding-top:0;padding-bottom:0;transition:max-height .35s cubic-bezier(.16,1,.3,1),opacity .25s,padding .35s;display:flex;overflow:hidden}.filter-row.visible{opacity:1;max-height:60px;padding-top:12px;padding-bottom:12px}.filter-pill{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;border:1px solid var(--gray-200);color:var(--gray-400);cursor:pointer;background:0 0;border-radius:0;padding:4px 12px;transition:all .15s}.filter-pill:hover{color:var(--fg);border-color:var(--gray-400)}.filter-pill.active{color:var(--fg);border-color:var(--fg);background:var(--gray-100)}.page-intro{padding:28px var(--page-padding)4px;padding-right:var(--sidebar-padding-right)}.page-intro p{font-family:var(--font-body);color:var(--gray-500);max-width:440px;margin:0;font-size:13px;line-height:1.55}.about-view{padding:0 var(--page-padding);padding-right:var(--sidebar-padding-right);padding-top:20px;display:none}.about-view.visible{display:block}.shell.cv-page .sidebar,.shell.cv-page.detail-open .sidebar{border-right:none;width:100%;min-width:100%}.shell.cv-page .stage{display:none}.cv-view{padding:0 var(--page-padding);padding-top:20px;padding-bottom:64px;display:none}.cv-view.visible{display:block}.cv-grid{grid-template-columns:minmax(200px,25%) 1fr;align-items:start;gap:32px;display:grid}.cv-page-title{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:var(--h1-size);letter-spacing:var(--letter-spacing-display);color:var(--fg);margin:0;line-height:1.05}.cv-sections{flex-direction:column;gap:48px;display:flex}.cv-section{border-top:1px solid var(--gray-200);grid-template-columns:minmax(140px,20%) 1fr;gap:24px;padding-top:28px;display:grid}.cv-section:first-child{border-top:none;padding-top:0}.cv-section-label{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-500);padding-top:4px}.cv-table{gap:24px;display:grid}.cv-table-3col{grid-template-columns:2fr 2fr 1.5fr}.cv-table-head{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-500);padding-bottom:8px}.cv-table-cell{font-family:var(--font-body);font-size:var(--body-size);color:var(--fg);line-height:1.5}.cv-skill-col{flex-direction:column;gap:6px;display:flex}.cv-view a{color:var(--fg);text-underline-offset:3px;text-decoration:underline}@media (max-width:900px){.cv-grid{grid-template-columns:1fr;gap:24px}.cv-section{grid-template-columns:1fr;gap:16px}.cv-table-3col{grid-template-columns:1fr;row-gap:20px}.cv-table-head{padding-bottom:0}}.about-body{font-family:var(--font-body);font-size:var(--body-size);color:var(--fg);max-width:520px;margin-bottom:48px;line-height:1.75}.about-body p{margin-bottom:1.5em}.about-list{counter-reset:wish;margin:32px 0;padding-left:0;list-style:none}.about-list li{counter-increment:wish;font-family:var(--font-body);font-size:var(--body-size);padding:6px 0;line-height:1.75}.about-list li:before{content:counter(wish)". ";font-family:var(--font-mono);font-size:var(--mono-size);color:var(--gray-400);margin-right:8px}.site-footer{padding:16px var(--page-padding);border-top:1px solid var(--gray-200);font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;display:flex}.site-footer-right{align-items:center;gap:0;display:inline-flex}.site-footer-link{font-family:inherit;font-size:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0;transition:color .15s}.site-footer-link:hover{color:var(--fg)}.site-footer-sep{color:var(--gray-300)}.site-footer a{color:var(--gray-400);text-decoration:none;transition:color .15s}.site-footer a:hover{color:var(--fg)}.home-clients{margin-top:72px;padding-top:0}.home-clients-intro{font-family:var(--font-body);font-size:var(--body-size);color:var(--gray-500);max-width:520px;margin-bottom:20px;line-height:1.65}.client-list{grid-template-columns:1fr 1fr;gap:2px 24px;margin:0;padding:0;list-style:none;display:grid}.client-list li{padding:0}.client-link{font-family:var(--font-mono);font-size:var(--mono-size);letter-spacing:var(--letter-spacing-mono);color:var(--fg);cursor:pointer;text-align:left;background:0 0;border:none;padding:6px 0;transition:color .15s;display:inline-block}.client-link:hover{color:var(--accent);text-underline-offset:4px;text-decoration:underline}.client-gate{z-index:500;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.client-gate.visible{display:flex}.client-gate-backdrop{-webkit-backdrop-filter:blur(6px);background:#14141459;position:absolute;inset:0}.client-gate-box{background:var(--bg);border-radius:var(--image-radius);width:460px;max-width:90vw;padding:40px;position:relative;box-shadow:0 20px 60px #0000002e}.client-gate-close{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);cursor:pointer;background:0 0;border:none;padding:4px 0;position:absolute;top:16px;right:20px}.client-gate-close:hover{color:var(--fg)}.client-gate-lede{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-500);margin-bottom:14px}.client-gate-title{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:var(--h2-size);letter-spacing:var(--letter-spacing-display);margin-bottom:18px;line-height:1.1}.client-gate-copy{font-family:var(--font-body);font-size:var(--body-size);line-height:var(--line-height);color:var(--gray-500);margin-bottom:24px}.client-gate-copy a{color:var(--fg);text-underline-offset:3px;text-decoration:underline}.client-gate-form{border-bottom:1px solid var(--gray-300);align-items:stretch;margin-bottom:10px;display:flex}.client-gate-input{font-family:var(--font-mono);font-size:var(--mono-size);letter-spacing:var(--letter-spacing-mono);color:var(--fg);background:0 0;border:none;outline:none;flex:1;padding:10px 0}.client-gate-input::placeholder{color:var(--gray-400)}.client-gate-submit{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--fg);cursor:pointer;background:0 0;border:none;padding:10px 4px 10px 12px;transition:color .15s}.client-gate-submit:hover{color:var(--accent)}.client-gate-error{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:#b54a4a;min-height:14px}.client-gate-success{font-family:var(--font-body);font-size:var(--body-size);line-height:var(--line-height);color:var(--gray-500);display:none}.client-gate-success a{color:var(--fg);text-underline-offset:3px;text-decoration:underline}.client-gate.granted .client-gate-copy,.client-gate.granted .client-gate-form,.client-gate.granted .client-gate-error{display:none}.client-gate.granted .client-gate-success{display:block}.about-cta{border-top:1px solid var(--divider);margin-top:48px;padding-top:32px}.about-cta p{font-family:var(--font-body);font-size:var(--body-size);line-height:1.75}.about-cta a{color:var(--fg);text-underline-offset:3px;text-decoration:underline}.about-portrait{background:var(--gray-100);position:absolute;inset:0;overflow:hidden}.sidebar-content{padding:20px var(--page-padding)var(--page-padding);padding-right:var(--sidebar-padding-right);flex:1;overflow:hidden auto}.index-item{border-bottom:1px solid var(--divider);cursor:pointer;grid-template-columns:48px 1fr auto;align-items:baseline;gap:12px;padding:14px 0;transition:background .15s,padding .15s;display:grid}.index-item:first-child{border-top:1px solid var(--divider)}.index-item:hover{background:var(--hover-bg)}.index-item:hover .item-title{color:var(--accent)}.item-desc{font-family:var(--font-mono);font-size:var(--mono-size);letter-spacing:var(--letter-spacing-mono);color:var(--gray-400);opacity:0;grid-column:2/3;max-height:0;margin-top:0;line-height:1.5;transition:max-height .25s,opacity .2s,margin .25s;overflow:hidden}.index-item:hover .item-desc{opacity:1;max-height:40px;margin-top:4px}.index-item.selected{background:var(--gray-100);margin:0 calc(var(--page-padding)*-1)0 calc(var(--page-padding)*-1);padding-left:var(--page-padding);padding-right:var(--page-padding)}.item-date{font-family:var(--font-mono);font-size:var(--mono-size);letter-spacing:var(--letter-spacing-mono);color:var(--gray-400);white-space:nowrap}.item-title{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:var(--h3-size);letter-spacing:var(--letter-spacing-display);line-height:1.15;transition:letter-spacing .2s}.item-type{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);white-space:nowrap;justify-self:end}.gallery-sidebar{gap:var(--card-gap);grid-template-columns:repeat(2,1fr);display:grid}.gallery-thumb{cursor:pointer}.gallery-thumb.selected .thumb-title{text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1.5px}.gallery-thumb .thumb-image{width:100%;aspect-ratio:var(--gallery-aspect);background:var(--gray-100);border-radius:var(--image-radius);margin-bottom:8px;position:relative;overflow:hidden}.gallery-thumb .thumb-title{font-family:var(--font-mono);font-size:var(--mono-size);letter-spacing:var(--letter-spacing-mono);text-transform:uppercase}.gallery-thumb .thumb-type{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400)}.stage{background:var(--stage-bg);flex:1;transition:background .3s,flex .5s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden}.stage-empty{height:100%;color:var(--gray-300);font-family:var(--font-mono);font-size:var(--mono-size);letter-spacing:var(--letter-spacing-mono);text-transform:uppercase;padding:var(--page-padding);flex-direction:column;justify-content:center;align-items:center;transition:opacity .3s;display:flex}.stage-empty .empty-line{background:var(--gray-200);width:1px;height:60px;margin-bottom:16px;transition:height .4s}.stage-empty.hidden{opacity:0;pointer-events:none}.stage-preview{opacity:0;pointer-events:none;padding:0;transition:opacity .35s;position:absolute;inset:0}.stage-preview.visible{opacity:1}.stage-preview .preview-image{background:var(--gray-100);position:absolute;inset:0;overflow:hidden}.stage-preview .preview-label{bottom:var(--detail-padding);left:var(--detail-padding);font-family:var(--font-mono);font-size:var(--mono-size);letter-spacing:var(--letter-spacing-mono);text-transform:uppercase;color:var(--gray-400);position:absolute}.stage-about{position:absolute;inset:0}.stage-detail{padding:var(--detail-padding);opacity:0;pointer-events:none;transition:opacity .45s .1s,transform .5s cubic-bezier(.16,1,.3,1);position:absolute;inset:0;overflow:hidden;transform:translate(20px)}.stage-detail.visible{opacity:1;pointer-events:all;overflow:hidden auto;transform:translate(0)}.detail-close{float:left;font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);cursor:pointer;z-index:10;background:0 0;border:none;padding:4px 0;position:sticky;top:0}.detail-close:hover{color:var(--fg)}.detail-cover{aspect-ratio:16/9;background:var(--gray-100);border-radius:var(--image-radius);justify-content:center;align-items:center;width:100%;margin-bottom:40px;display:flex;position:relative;overflow:hidden}.detail-cover img{object-fit:cover;width:100%;height:100%}.detail-title{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:var(--h1-size);letter-spacing:var(--letter-spacing-display);max-width:600px;margin-bottom:12px;line-height:1.05}.detail-subtitle{font-family:var(--font-body);font-weight:400;font-size:var(--body-size);color:var(--gray-500);max-width:520px;line-height:var(--line-height);margin-bottom:32px}.detail-tags{border-top:1px solid var(--gray-200);font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);flex-wrap:wrap;margin-top:48px;padding-top:20px;display:flex}.detail-tags:empty{display:none}.detail-tag{border:none;border-radius:0;padding:0}.detail-tag+.detail-tag:before{content:"/";color:var(--gray-300);margin:0 10px}.detail-body{font-size:var(--body-size);line-height:var(--line-height);color:var(--gray-500);margin-bottom:48px}.detail-body p{max-width:var(--detail-text-max-width);margin-left:var(--detail-text-indent);margin-bottom:1em}.detail-body h2{font-family:var(--font-display);font-weight:var(--font-display-weight);letter-spacing:var(--letter-spacing-display);color:var(--fg);max-width:var(--detail-text-max-width);margin:2em 0 .5em var(--detail-text-indent);font-size:24px;line-height:1.15}.detail-body h3{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:var(--h3-size);letter-spacing:var(--letter-spacing-display);color:var(--fg);max-width:var(--detail-text-max-width);margin:2em 0 .5em var(--detail-text-indent);line-height:1.2}.detail-body>:first-child{margin-top:0}.detail-body a{color:var(--fg);text-underline-offset:3px;text-decoration:underline}.body-figure{margin:32px 0}.body-figure-media{width:100%;aspect-ratio:var(--body-figure-aspect,16/9);background:var(--body-figure-bg,var(--gray-100));border-radius:var(--image-radius);padding:var(--body-figure-padding,0);box-sizing:border-box;position:relative;overflow:hidden}.body-figure-media img{object-fit:var(--body-figure-fit,cover)!important}.body-figure figcaption{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);color:var(--gray-400);max-width:520px;margin-top:10px;line-height:1.55}.body-gallery{grid-template-columns:repeat(var(--body-gallery-cols,2),1fr);gap:12px;margin:32px 0;display:grid}.body-gallery .body-figure{margin:0}@media (max-width:900px){.body-gallery{grid-template-columns:1fr}}.body-gallery--feature-right,.body-gallery--feature-left{grid-template-columns:1fr 1.3fr}.body-gallery--feature-right{grid-template-areas:"a c""b c"}.body-gallery--feature-left{grid-template-columns:1.3fr 1fr;grid-template-areas:"c a""c b"}.body-gallery--feature-right>:first-child,.body-gallery--feature-left>:first-child{grid-area:a}.body-gallery--feature-right>:nth-child(2),.body-gallery--feature-left>:nth-child(2){grid-area:b}.body-gallery--feature-right>:nth-child(3),.body-gallery--feature-left>:nth-child(3){grid-area:c}.body-gallery--feature-right>:nth-child(3) .body-figure-media,.body-gallery--feature-left>:nth-child(3) .body-figure-media{aspect-ratio:auto;height:100%}@media (max-width:900px){.body-gallery--feature-right,.body-gallery--feature-left{grid-template-columns:1fr;grid-template-areas:"a""b""c"}.body-gallery--feature-right>:nth-child(3) .body-figure-media,.body-gallery--feature-left>:nth-child(3) .body-figure-media{aspect-ratio:var(--body-figure-aspect,16/9);height:auto}}.detail-images{grid-template-columns:repeat(var(--gallery-columns),1fr);gap:28px 12px;margin-bottom:0;display:grid}.detail-images:empty{display:none}.detail-images .d-img{flex-direction:column;gap:8px;width:100%;margin:0;display:flex}.detail-images .d-img-media{aspect-ratio:4/3;background:var(--gray-100);border-radius:var(--image-radius);justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.detail-images .d-img-media img{object-fit:cover;width:100%;height:100%}.detail-images .d-img:first-child{grid-column:1/-1}.detail-images .d-img:first-child .d-img-media{aspect-ratio:16/9}.detail-images .d-img figcaption{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);color:var(--gray-400);padding:0 2px;line-height:1.55}.detail-images .d-img figcaption:empty{display:none}.detail-credits{border-top:1px solid var(--gray-200);margin-top:48px;padding-top:28px}.detail-credits:empty{display:none}.detail-credits-grid{grid-template-columns:1fr 1fr;gap:20px 48px;display:grid}.detail-credit{flex-direction:column;gap:2px;display:flex}.detail-credit-role{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-500)}.detail-credit-name{font-family:var(--font-body);font-size:var(--body-size);color:var(--fg);line-height:1.35}.detail-credits-extended{opacity:0;max-height:0;margin-top:0;transition:max-height .45s cubic-bezier(.16,1,.3,1),opacity .3s,margin-top .45s;overflow:hidden}.detail-credits.expanded .detail-credits-extended{opacity:1;max-height:1200px;margin-top:20px}.detail-credits-toggle{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-500);cursor:pointer;background:0 0;border:none;margin-top:20px;padding:4px 0;transition:color .2s}.detail-credits-toggle:hover{color:var(--fg)}.detail-credits .label-less,.detail-credits.expanded .label-more{display:none}.detail-credits.expanded .label-less{display:inline}.ph{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.ph svg{opacity:.06;width:40%;height:40%}.cards-item-thumb .ph svg{width:50%;height:50%}.controls-panel{color:#ccc;letter-spacing:0;z-index:1000;background:#111;width:300px;height:100vh;padding:16px;font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:11px;font-weight:400;line-height:1.4;transition:transform .3s;position:fixed;top:0;right:0;overflow-y:auto;transform:translate(100%)}.controls-panel.open{transform:translate(0)}.toggle-btn{z-index:1001;color:#fff;cursor:pointer;letter-spacing:.06em;text-transform:uppercase;background:#111;border:none;border-radius:3px;padding:7px 12px;font-family:-apple-system,sans-serif;font-size:10px;position:fixed;bottom:64px;right:12px}.toggle-btn:hover{background:#333}.ctrl-section{border-bottom:1px solid #2a2a2a;margin-bottom:20px;padding-bottom:16px}.ctrl-section:last-child{border-bottom:none}.ctrl-section h3{text-transform:uppercase;letter-spacing:.2em;color:#666;margin-bottom:12px;font-size:9px;font-weight:600}.cr{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.cr label{color:#999;white-space:nowrap;min-width:72px;font-size:11px}.cr input[type=range]{appearance:none;background:#333;border-radius:2px;outline:none;flex:1;height:3px}.cr input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#fff;border-radius:50%;width:12px;height:12px}.cr .val{color:#555;text-align:right;min-width:36px;font-family:SF Mono,monospace;font-size:9px}.cr select{color:#ccc;cursor:pointer;background:#1e1e1e;border:1px solid #333;border-radius:2px;flex:1;padding:4px 6px;font-family:-apple-system,sans-serif;font-size:11px}.cr input[type=color]{cursor:pointer;background:0 0;border:1px solid #333;border-radius:2px;width:24px;height:24px;padding:0}.btn-row{flex-wrap:wrap;gap:3px;display:flex}.btn-row button{color:#aaa;cursor:pointer;text-transform:uppercase;letter-spacing:.04em;background:#1e1e1e;border:1px solid #333;border-radius:2px;padding:4px 8px;font-family:-apple-system,sans-serif;font-size:9px;transition:all .15s}.btn-row button:hover{color:#fff;background:#2a2a2a}.btn-row button.active{color:#fff;background:#0058ff;border-color:#0058ff}.presets{flex-wrap:wrap;gap:4px;margin-bottom:16px;display:flex}.presets button{color:#666;cursor:pointer;letter-spacing:.04em;text-transform:uppercase;background:0 0;border:1px solid #333;border-radius:2px;padding:5px 10px;font-family:-apple-system,sans-serif;font-size:9px;transition:all .15s}.presets button:hover{color:#fff;border-color:#666}.presets button.active{color:#fff;background:#0058ff26;border-color:#0058ff}.info-label{background:var(--fg);color:var(--bg);letter-spacing:.08em;text-transform:uppercase;z-index:100;pointer-events:none;border-radius:3px;padding:5px 12px;font-family:-apple-system,sans-serif;font-size:9px;position:fixed;bottom:64px;left:12px}.sidebar-content::-webkit-scrollbar{width:4px}.stage::-webkit-scrollbar{width:4px}.stage-detail::-webkit-scrollbar{width:4px}.sidebar-content::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:2px}.stage::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:2px}.stage-detail::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:2px}.controls-panel::-webkit-scrollbar{width:4px}.controls-panel::-webkit-scrollbar-thumb{background:#333;border-radius:2px}.cards-item{border-bottom:1px solid var(--gray-200);cursor:pointer;grid-template-columns:1fr 1fr;align-items:start;gap:32px;padding:32px 0;transition:opacity .2s;display:grid}.cards-item:first-child{border-top:1px solid var(--gray-200)}.cards-item:hover{opacity:.75}.cards-item.selected{background:var(--gray-100);margin:0 calc(var(--page-padding)*-1)0 calc(var(--page-padding)*-1);padding-left:var(--page-padding);padding-right:var(--page-padding)}.cards-item-info{flex-direction:column;gap:0;padding-top:4px;display:flex}.cards-item-title{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:var(--h3-size);letter-spacing:var(--letter-spacing-display);margin-bottom:12px;line-height:1.15}.cards-item-desc{font-family:var(--font-body);font-size:var(--body-size);color:var(--gray-500);line-height:var(--line-height);max-width:360px;margin-bottom:16px}.cards-item-type{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400)}.cards-item-thumb{aspect-ratio:4/3;background:var(--gray-100);border-radius:var(--image-radius);justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.cards-item-thumb img{object-fit:cover;width:100%;height:100%}.mindmap-overlay{background:var(--bg);z-index:50;flex-direction:column;display:none;position:fixed;inset:0}.mindmap-overlay.visible{display:flex}.mindmap-overlay .mm-topbar{padding:var(--page-padding);z-index:60;pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.mindmap-overlay .mm-topbar>*{pointer-events:all}.mindmap-overlay .mm-logo{font-family:var(--font-mono);font-size:var(--mono-size);letter-spacing:var(--letter-spacing-mono);text-transform:uppercase;cursor:pointer;color:var(--fg);background:0 0;border:none;padding:0}.mindmap-overlay .mm-nav{gap:20px;display:flex}.mindmap-overlay .mm-nav-link{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:none;transition:color .2s}.mindmap-overlay .mm-nav-link:hover{color:var(--fg)}.mindmap-overlay .mm-view-row{top:calc(var(--page-padding) + 36px);left:var(--page-padding);z-index:60;gap:0;display:flex;position:absolute}.mindmap-overlay .mm-view-btn{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);cursor:pointer;background:0 0;border:none;padding:10px 16px 10px 0;transition:color .2s}.mindmap-overlay .mm-view-btn:hover,.mindmap-overlay .mm-view-btn.active{color:var(--fg)}.mindmap-svg{flex:1;width:100%;height:100%}.mm-node circle{cursor:pointer;transition:r .2s,fill-opacity .3s}.mm-node text{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;fill:var(--gray-400);pointer-events:none;font-size:10px;transition:fill .2s,fill-opacity .3s}.mm-node text.mm-node-label-hub{fill:var(--fg);letter-spacing:.06em;font-size:11px}.mm-node:hover circle{r:7}.mm-node:hover text{fill:var(--fg)}.mm-node.dimmed circle{fill-opacity:.15}.mm-node.dimmed text{fill-opacity:.2}.mm-link{stroke:var(--gray-200);stroke-width:.5px;transition:stroke .2s,stroke-opacity .3s}.mm-link.dimmed{stroke-opacity:.1}.mm-link.highlighted{stroke:var(--gray-400);stroke-width:1px}.mm-legend{bottom:var(--page-padding);left:var(--page-padding);z-index:60;gap:16px;display:flex;position:absolute}.mm-legend-item{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);align-items:center;gap:6px;display:flex}.mm-legend-dot{border-radius:50%;width:8px;height:8px}.mm-detail{background:var(--bg);border-left:1px solid var(--gray-200);width:420px;height:100%;padding:var(--detail-padding);z-index:70;transition:transform .4s cubic-bezier(.16,1,.3,1);position:absolute;top:0;right:0;overflow-y:auto;transform:translate(100%)}.mm-detail.visible{transform:translate(0)}.mm-detail .detail-close{float:left;font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--gray-400);cursor:pointer;z-index:10;background:0 0;border:none;padding:4px 0;position:sticky;top:0}.mm-detail .detail-close:hover{color:var(--fg)}.labs-toast{background:var(--fg);color:var(--bg);font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--letter-spacing-label);text-transform:uppercase;z-index:2000;pointer-events:none;opacity:0;border-radius:4px;padding:8px 16px;transition:opacity .25s;position:fixed;bottom:56px;left:50%;transform:translate(-50%)}.labs-toast.visible{opacity:1}@media (max-width:900px){:root{--page-padding:24px;--sidebar-padding-right:24px;--detail-padding:24px;--h1-size:36px;--h2-size:26px;--h3-size:18px}html{height:auto}body{height:auto;overflow-y:auto}.shell{flex-direction:column;flex:none;height:auto;min-height:0}.sidebar{border-right:none;width:100%;min-width:100%;height:auto;transition:none;overflow:visible}.shell.detail-open .sidebar{width:100%;min-width:100%}.sidebar-content{flex:none;overflow:visible}.stage{display:none}.shell.detail-open .stage{z-index:200;background:var(--bg);height:100vh;display:block;position:fixed;inset:0}.stage-detail{transition:transform .4s cubic-bezier(.16,1,.3,1),opacity .3s;position:absolute;inset:0;overflow-y:auto;transform:translateY(100%)}.stage-detail.visible{transform:translateY(0)}.stage-detail .detail-close{background:var(--bg);z-index:20;margin-bottom:4px;padding:0 0 12px;position:sticky;top:0}.stage-detail{padding-top:12px}.cards-item{grid-template-columns:1fr;gap:16px;padding:24px 0}.cards-item-thumb{order:-1}.cards-item-desc{max-width:none}.detail-images{grid-template-columns:1fr;gap:20px}.detail-credits-grid{grid-template-columns:1fr;gap:16px}.client-list{grid-template-columns:1fr}.home-clients{margin-top:48px}.page-intro p{max-width:none;font-size:12px}.about-view{padding-right:var(--page-padding)}.about-body{max-width:none}.nav-row{gap:14px}.filter-row.visible{max-height:200px}.client-gate-box{padding:32px 28px}.gallery-sidebar{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){:root{--page-padding:20px;--sidebar-padding-right:20px;--detail-padding:20px;--h1-size:30px;--h2-size:22px;--h3-size:17px;--body-size:14px}.cards-item{padding:20px 0}.site-footer{padding:14px var(--page-padding);flex-direction:column;align-items:flex-start;gap:6px}.client-gate-box{padding:28px 22px}.client-gate-title{font-size:22px}}.nav-row,.stage-preview .preview-label{mix-blend-mode:difference;color:#fff}.nav-row .nav-link{color:inherit}.nav-link:hover,.nav-link.active{color:inherit;text-decoration:underline}@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}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
