@import url("/assets/tokens.css");
@import url("/assets/ui.css");
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--text);-webkit-font-smoothing:antialiased}::selection{background:#e0c9ff;color:#221c2d}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{cursor:pointer}img{max-width:100%}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--heading)}h1{letter-spacing:-.065em}h2{letter-spacing:-.055em}h3{letter-spacing:-.035em}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.container{max-width:1280px;margin:0 auto;padding:0 5.5%}.site-header{height:92px;position:sticky;top:0;z-index:100;background:var(--header-bg,rgba(250,248,246,.96));border-bottom:1px solid var(--line);backdrop-filter:blur(18px)}.nav-inner{height:100%;max-width:1280px;margin:auto;padding:0 5.5%;display:flex;align-items:center;justify-content:space-between;gap:36px}.wordmark{display:inline-flex;align-items:center;gap:10px;font-family:var(--heading);font-weight:800;font-size:24px;letter-spacing:-.07em;white-space:nowrap}.wordmark-star{color:var(--accent);font-size:25px;letter-spacing:0}.wordmark-dot{color:var(--accent)}.nav-links{display:flex;align-items:center;gap:34px}.nav-link{font-size:13px;font-weight:650;color:var(--muted);position:relative}.nav-link:hover,.nav-link.active{color:var(--ink)}.nav-link.active:after{content:'';position:absolute;bottom:-11px;left:0;right:0;height:2px;background:var(--accent)}.nav-language{display:flex;gap:8px;font-size:11px;align-items:center;font-weight:700}.nav-language a{opacity:.4}.nav-language a.active{opacity:1}.nav-cta{padding:13px 18px;background:var(--ink);color:var(--button-text);border-radius:6px;font-size:12px;font-weight:700;transition:transform .2s,background .2s}.nav-cta:hover,.button:hover{transform:translateY(-3px)}.nav-cta span,.button span,.text-link span{margin-left:16px}.menu-toggle{display:none}.hero{padding-top:74px}.hero-eyebrow,.eyebrow{font-size:11px;font-weight:800;letter-spacing:.17em;color:var(--muted);text-transform:uppercase}.hero-eyebrow{display:flex;gap:9px;align-items:center;margin-bottom:30px}.accent-spark{font-size:23px;line-height:0;color:var(--accent)}.hero h1{font-weight:800;font-size:clamp(55px,7.6vw,118px);line-height:1.075;max-width:1040px;margin:0;letter-spacing:-.083em}.hero-main{position:relative}.hero-bottom{display:grid;grid-template-columns:minmax(0,650px) 1fr;gap:30px;align-items:end;margin-top:36px}.hero-intro>p{font-size:clamp(17px,2vw,23px);max-width:620px;line-height:1.65;color:var(--muted);margin:0}.hero-actions{display:flex;align-items:center;gap:30px;margin-top:30px;flex-wrap:wrap}.button{border:0;border-radius:7px;display:inline-flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 20px;font-weight:700;font-size:13px;transition:transform .2s,background .2s}.button-dark{background:var(--ink);color:#fff}.button-dark:hover{background:#3d4137}.button-light{background:var(--paper);color:var(--ink)}.button-light:hover{background:#ede4f9}.text-link{font-size:13px;font-weight:700;border-bottom:1px solid var(--ink);padding:12px 0}.hero-side{display:flex;flex-direction:column;align-items:center;gap:22px}.hero-orbit{height:170px;width:255px;position:relative;display:flex;justify-content:center;align-items:center}.hero-orbit:before,.hero-orbit:after{content:'';position:absolute;border:1px solid #b3a5c8;border-radius:100%;width:265px;height:96px;transform:rotate(-26deg)}.hero-orbit:after{transform:rotate(30deg);height:90px}.orb{width:153px;height:153px;border-radius:50%;background:#e9ddf8;border:1px solid #d7c5ec;display:grid;place-items:center;z-index:1;box-shadow:inset -15px -15px 50px rgba(61,112,70,.08)}.orb>span{font-size:18px;font-family:var(--heading);font-weight:800;line-height:1.08;letter-spacing:-.045em;transform:rotate(-11deg)}.orb-dot{color:var(--accent)}.orb-mark{position:absolute;right:12px;top:4px;font-size:34px;color:var(--accent);z-index:2}.availability{font-size:11px;font-weight:750;display:inline-flex;align-items:center;gap:8px;color:var(--muted)}.status-dot{width:8px;height:8px;background:#4b9b64;border-radius:50%;box-shadow:0 0 0 4px #e2f0df}.status-dot.unavailable{background:#b79a86;box-shadow:0 0 0 4px #e9e2df}.hero-rule{margin-top:80px;border-top:1px solid var(--line);padding:22px 0;display:flex;justify-content:space-between;font-size:10px;letter-spacing:.12em;font-weight:800;color:var(--muted)}.work-section{padding-top:85px;padding-bottom:120px}.section-heading{display:flex;justify-content:space-between;gap:35px;align-items:end;margin-bottom:47px}.section-heading h2{font-size:clamp(37px,4.9vw,65px);line-height:1.1;margin:15px 0 0;max-width:650px}.section-heading-copy{font-size:16px;line-height:1.7;color:var(--muted);max-width:350px;margin:0}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:75px 32px}.project-card{min-width:0;display:block}.project-thumb{height:clamp(290px,35vw,490px);display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative;background:#ded0ee;border-radius:10px;transition:transform .25s}.project-card:hover .project-thumb{transform:translateY(-4px)}.thumb-0{background:#cdb8e6}.thumb-1{background:#c8dfcf}.thumb-2{background:#c7d9cb}.thumb-3{background:#e6d2f2}.project-visual{height:100%;width:100%;display:grid;place-items:center;padding:35px;overflow:hidden}.project-image{width:100%;height:100%;object-fit:contain;box-shadow:0 18px 45px rgba(0,0,0,.17);border-radius:3px;transition:transform .5s}.project-card:hover .project-image{transform:scale(1.045)}.project-arrow{position:absolute;right:18px;top:18px;border-radius:50%;background:#fdfaf5;display:grid;place-items:center;width:44px;height:44px;font-size:21px}.project-info{display:flex;justify-content:space-between;gap:30px;margin-top:23px}.project-num,.project-year{font-weight:700;text-transform:uppercase;font-size:10px;letter-spacing:.12em;color:var(--muted)}.project-info h3{font-size:30px;line-height:1.2;margin:11px 0}.project-info p{font-size:14px;color:var(--muted);line-height:1.6;max-width:400px;margin:0}.section-more{margin-top:58px;display:flex;align-items:center;justify-content:space-between;max-width:100%;padding:22px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);font-weight:800;font-size:13px}.section-more span{font-size:26px}.services-strip{padding:100px 0;background:var(--soft-section)}.services-preview{margin-top:50px}.service-row{border-top:1px solid #d6cbe4;display:grid;grid-template-columns:100px 1fr 44px;gap:10px;align-items:center;padding:24px 0;font-family:var(--heading);font-weight:700;font-size:clamp(23px,3vw,42px);letter-spacing:-.045em}.service-row:last-child{border-bottom:1px solid #d6cbe4}.service-count{font-family:var(--text);letter-spacing:0;font-size:12px;color:var(--muted)}.service-row>span:last-child{text-align:right;font-size:25px;transition:transform .2s}.service-row:hover>span:last-child{transform:translate(5px,-4px)}.process-section{padding-top:114px;padding-bottom:130px}.process-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:36px}.process-item{padding-top:22px;border-top:1px solid var(--line)}.process-item>span{font-size:13px;font-weight:800}.process-item p{color:var(--muted);font-size:15px;line-height:1.75;margin-top:18px}.cta-panel{background:var(--surface-inverse);border-radius:14px;color:var(--inverse-text);padding:76px 8%;margin-bottom:120px;position:relative;overflow:hidden}.cta-panel .eyebrow{color:#b8c5b3}.cta-panel h2{font-size:clamp(38px,5.8vw,79px);line-height:1.1;max-width:760px;margin:23px 0;position:relative;z-index:1}.cta-panel p:not(.eyebrow){color:#b7beb4;font-size:16px;max-width:450px;line-height:1.7}.cta-panel .button{margin-top:24px;position:relative;z-index:1}.cta-decoration{font-size:350px;position:absolute;color:#43344e;top:-80px;right:0;line-height:1;transform:rotate(-12deg)}.cta-glow{position:absolute;width:440px;height:440px;border-radius:50%;background:#71518c;filter:blur(120px);right:-200px;top:10px;opacity:.3}.site-footer{background:var(--footer-bg);padding:65px 0 26px}.footer-top{display:flex;justify-content:space-between;gap:40px;align-items:start}.footer-wordmark{font-family:var(--heading);font-size:62px;font-weight:800;letter-spacing:-.12em}.footer-wordmark span{color:var(--accent)}.footer-top p{font-size:13px;color:var(--muted);margin-top:5px}.footer-links{display:grid;grid-template-columns:1fr 1fr;gap:16px 50px;font-weight:700;font-size:13px}.footer-links a:hover,.footer-bottom a:hover{color:var(--accent)}.footer-bottom{border-top:1px solid #dcd4e6;margin-top:60px;padding-top:25px;display:flex;gap:24px;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted)}.social-links{display:flex;gap:20px;flex-wrap:wrap}.social-links a{font-size:12px;font-weight:750;color:var(--muted)}.social-links a span{color:var(--accent)}.page-hero{padding-top:100px;padding-bottom:70px}.page-hero h1{font-size:clamp(49px,7vw,100px);line-height:1.1;max-width:1080px;margin:25px 0}.page-intro{font-size:clamp(18px,2vw,23px);color:var(--muted);line-height:1.65;max-width:740px}.headline-star{font-size:54px;color:var(--accent);margin-left:20px}.work-index{padding-bottom:135px}.filter-row{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:44px}.filter-btn{border:1px solid var(--line);background:transparent;padding:11px 15px;border-radius:40px;font-size:12px;font-weight:700;color:var(--muted)}.filter-btn.selected,.filter-btn:hover{background:var(--ink);color:var(--button-text);border-color:var(--ink)}.filter-btn span{font-size:10px;opacity:.7;padding-left:7px}.project-card[hidden]{display:none}#no-projects{font-size:20px;color:var(--muted);padding:55px 0}.case-article{padding-top:65px}.case-pre{display:flex;justify-content:space-between;align-items:center;color:var(--muted);letter-spacing:.12em;font-weight:750;font-size:10px;text-transform:uppercase}.back-link{color:var(--ink);letter-spacing:0;font-size:12px}.case-header{display:flex;align-items:end;justify-content:space-between;gap:40px;padding:80px 0 52px}.case-header h1{font-size:clamp(70px,9vw,132px);margin:12px 0;line-height:1}.case-header h1 span{color:var(--accent)}.case-dek{font-size:20px;max-width:630px;line-height:1.55;color:var(--muted)}.case-tools{max-width:290px;display:flex;flex-wrap:wrap;gap:7px;justify-content:flex-end}.case-tools span,.about-tags span{font-size:11px;font-weight:750;padding:10px 13px;border-radius:30px;border:1px solid var(--line)}.case-hero-media{margin-bottom:115px}.case-cover{background:#e6d6f4;min-height:460px;height:min(68vw,720px);border-radius:12px;display:flex;align-items:center;justify-content:center;padding:50px}.case-cover img{object-fit:contain;max-height:100%;width:auto;filter:drop-shadow(0 24px 34px rgba(0,0,0,.15))}.case-layout{display:grid;grid-template-columns:270px 1fr;gap:110px;margin-bottom:90px}.case-aside{display:flex;flex-direction:column;gap:35px}.case-aside>div{border-top:1px solid var(--line);padding-top:15px}.case-aside div>span{font-size:10px;font-weight:800;color:var(--muted);letter-spacing:.09em;text-transform:uppercase}.case-aside div p{font-size:14px;line-height:1.6;margin:11px 0}.case-lead{font-size:clamp(25px,3vw,40px);font-family:var(--heading);font-weight:650;letter-spacing:-.045em;line-height:1.4;margin:0 0 80px}.case-section{border-top:1px solid var(--line);padding:33px 0 50px;display:grid;grid-template-columns:200px 1fr;gap:15px}.case-section h2{font-size:22px;line-height:1.35}.case-section p{font-size:16px;line-height:1.85;color:var(--muted);max-width:600px;white-space:pre-wrap}.external-links>div{display:flex;flex-direction:column;gap:0}.external-link{display:flex;justify-content:space-between;gap:12px;font-weight:750;border-bottom:1px solid var(--line);padding:13px 0}.external-link:hover{color:var(--accent)}.case-gallery{margin-bottom:120px}.case-gallery .eyebrow{margin-bottom:35px}.gallery-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px}.gallery-frame{background:#e7e9df;border-radius:12px;padding:32px;display:grid;place-items:center;margin:0;min-height:280px}.gallery-frame img{max-height:560px;object-fit:contain;filter:drop-shadow(0 10px 18px rgba(0,0,0,.08))}.gallery-frame:first-child:nth-last-child(1){grid-column:span 2}.next-project{padding-bottom:120px}.next-project>a{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--ink);font-family:var(--heading);font-size:clamp(35px,6vw,76px);letter-spacing:-.065em;font-weight:750;padding:20px 0}.services-list{padding-bottom:100px}.service-detail{display:grid;grid-template-columns:90px 1fr 50px;gap:20px;padding:35px 0 45px;border-top:1px solid var(--line)}.service-detail:last-of-type{border-bottom:1px solid var(--line)}.service-number{font-size:12px;color:var(--muted);font-weight:750}.service-detail h2{font-size:clamp(28px,3vw,43px);margin:0 0 13px}.service-detail p{font-size:16px;color:var(--muted);max-width:630px;line-height:1.7}.service-asterisk{color:var(--accent);font-size:35px}.service-note{padding-top:35px;color:var(--muted);font-size:13px}.about-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:80px;align-items:center;padding-bottom:130px}.about-art{min-height:510px;background:#e9dcf9;border-radius:9px;position:relative;display:grid;place-items:center;overflow:hidden}.about-a{font-size:min(38vw,390px);font-family:var(--heading);font-weight:800;letter-spacing:-.16em;transform:rotate(-12deg);color:#6f4ca3}.about-spark{position:absolute;right:9%;top:7%;font-size:110px;color:var(--accent)}.about-note{position:absolute;bottom:30px;left:30px;font-size:10px;font-weight:700;letter-spacing:.1em;color:#715a87}.about-content>p{font-size:18px;line-height:1.8;color:var(--muted)}.about-content>p:nth-of-type(1){font-size:22px;color:var(--ink);font-weight:500}.about-tags{display:flex;flex-wrap:wrap;gap:8px;margin:30px 0}.values-section{padding-bottom:150px}.values-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:35px}.values-grid>div{border-top:1px solid var(--line);padding-top:25px}.values-grid span{color:var(--muted);font-weight:800;font-size:12px}.values-grid h3{font-size:23px;margin:19px 0}.values-grid p{font-size:15px;line-height:1.75;color:var(--muted)}.contact-page{padding-top:120px;padding-bottom:180px;display:grid;grid-template-columns:.87fr 1.13fr;gap:100px}.contact-aside h1{font-size:clamp(55px,6vw,83px);line-height:1.09;margin:24px 0}.contact-sub{font-size:19px;line-height:1.7;color:var(--muted);max-width:400px;margin-bottom:35px}.direct-email{margin:60px 0 28px;display:flex;flex-direction:column;gap:10px}.direct-email span{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.direct-email a{font-size:19px;font-weight:750;overflow-wrap:anywhere}.contact-social{gap:20px}.contact-form-wrap{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;padding:42px}.contact-form-wrap h2{font-size:28px;margin:0 0 8px}.contact-form-wrap>p{font-size:14px;color:var(--muted);line-height:1.6;margin-bottom:34px}.contact-form-wrap form{display:flex;flex-direction:column;gap:19px}.contact-form-wrap label{display:flex;flex-direction:column;gap:8px;font-size:12px;font-weight:750}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.contact-form-wrap input,.contact-form-wrap textarea,.contact-form-wrap select{border:1px solid var(--line);background:var(--input-bg);border-radius:6px;padding:12px 13px;outline:none;font-size:13px;width:100%;color:var(--ink)}.contact-form-wrap input:focus,.contact-form-wrap textarea:focus,.contact-form-wrap select:focus{border-color:#8455d6;box-shadow:0 0 0 3px #eee3ff}.contact-form-wrap textarea{resize:vertical}.full{width:100%;margin-top:6px}.form-note{color:var(--muted);font-size:11px;line-height:1.6}.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}#form-feedback{font-size:13px;font-weight:700;min-height:15px}#form-feedback.ok{color:#2c7448}#form-feedback.err{color:#b14437}.legal-page{min-height:65vh}.legal-page .button{margin-top:35px}
@media(max-width:960px){.nav-links{gap:20px}.nav-cta{padding:11px}.hero-bottom{grid-template-columns:1fr}.hero-side{flex-direction:row;justify-content:space-between}.hero-rule{margin-top:50px}.case-layout{grid-template-columns:200px 1fr;gap:35px}.contact-page{gap:40px}.about-layout{gap:35px}}@media(max-width:700px){.site-header{height:72px}.nav-inner{padding:0 5%}.wordmark{font-size:21px}.menu-toggle{display:flex;border:0;background:transparent;width:42px;height:42px;padding:9px;flex-direction:column;justify-content:center;gap:7px;z-index:3}.menu-toggle span{height:2px;width:24px;background:var(--ink);display:block}.nav-links{display:none;position:absolute;top:72px;left:0;right:0;background:var(--bg);padding:25px 5% 30px;box-shadow:0 25px 45px #20202018;align-items:stretch;flex-direction:column;gap:22px}.nav-links.open{display:flex}.nav-link{font-size:17px}.nav-link.active:after{bottom:-5px}.nav-language{font-size:13px;justify-content:flex-start}.nav-cta{text-align:center;max-width:300px}.container{padding:0 6%}.hero{padding-top:55px}.hero h1{font-size:clamp(54px,13vw,90px);letter-spacing:-.08em}.hero-bottom{margin-top:23px}.hero-intro>p{font-size:17px}.hero-side{margin-top:25px}.hero-orbit{transform:scale(.78);transform-origin:left center;margin-right:-40px;width:205px;height:125px}.availability{font-size:10px}.hero-rule{margin-top:40px;font-size:9px}.work-section{padding-top:65px;padding-bottom:80px}.section-heading{display:block;margin-bottom:31px}.section-heading h2{font-size:39px}.section-heading-copy{margin-top:15px}.project-grid{grid-template-columns:1fr;gap:50px}.project-thumb{height:350px}.project-info h3{font-size:26px}.services-strip{padding:75px 0}.service-row{grid-template-columns:42px 1fr 28px;padding:22px 0;font-size:24px}.process-section{padding-top:75px;padding-bottom:90px}.process-grid{grid-template-columns:1fr;gap:15px}.process-item p{margin:9px 0 25px}.cta-panel{padding:55px 8%;margin-bottom:70px}.cta-panel h2{font-size:41px}.cta-decoration{font-size:170px;right:-45px;top:-35px}.footer-top{display:block}.footer-links{margin-top:32px;grid-template-columns:1fr 1fr}.footer-bottom{flex-wrap:wrap;gap:14px}.page-hero{padding-top:75px;padding-bottom:35px}.page-hero h1{font-size:clamp(48px,10vw,70px)}.work-index{padding-bottom:90px}.case-article{padding-top:25px}.case-header{display:block;padding:55px 0 30px}.case-header h1{font-size:clamp(60px,16vw,95px)}.case-dek{font-size:18px}.case-tools{margin-top:30px;justify-content:flex-start}.case-hero-media{margin-bottom:55px}.case-cover{min-height:320px;height:420px;padding:25px}.case-layout{grid-template-columns:1fr;gap:25px;margin-bottom:45px}.case-aside{display:grid;grid-template-columns:1fr 1fr;gap:15px}.case-aside>.eyebrow{grid-column:span 2}.case-lead{font-size:28px;margin:25px 0 50px}.case-section{grid-template-columns:1fr;padding:25px 0}.case-section h2{margin-bottom:0}.gallery-grid{grid-template-columns:1fr;gap:15px}.gallery-frame:first-child:nth-last-child(1){grid-column:auto}.gallery-frame{padding:17px}.case-gallery{margin-bottom:80px}.next-project{padding-bottom:75px}.service-detail{grid-template-columns:37px 1fr 24px;gap:10px}.service-detail h2{font-size:26px}.about-layout{grid-template-columns:1fr;gap:40px;padding-bottom:90px}.about-art{min-height:340px}.about-a{font-size:240px}.about-content>p{font-size:16px}.values-section{padding-bottom:90px}.values-grid{grid-template-columns:1fr;gap:15px}.contact-page{grid-template-columns:1fr;padding-top:70px;padding-bottom:80px;gap:35px}.contact-aside h1{font-size:56px}.direct-email{margin:35px 0 22px}.contact-form-wrap{padding:25px}.form-grid{grid-template-columns:1fr}.legal-page{min-height:65vh}}@media(max-width:390px){.project-thumb{height:280px}.hero h1{font-size:52px}.hero-actions{gap:18px}.button{padding:14px}.contact-aside h1{font-size:48px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none;animation:none}}

.about-portrait{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}

/* V1.1.0 · Lilac palette & theme system */

.theme-toggle {flex:0 0 auto;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:50%;
  font-size:16px;transition:background .2s,transform .2s,border-color .2s;cursor:pointer;}
.theme-toggle:hover{background:var(--wash);border-color:var(--accent);transform:translateY(-2px)}
.theme-toggle:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.nav-inner{gap:18px}.nav-links{margin-left:auto;gap:clamp(15px,2.5vw,34px)}
.wordmark-star i,.accent-spark i,.orb-mark i,.headline-star i,.about-spark i,.service-asterisk i{color:var(--accent)}
.wordmark-star i{font-size:21px}.accent-spark i{font-size:21px}.orb-mark i{font-size:32px}
.headline-star i{font-size:.62em}.about-spark i{font-size:.75em}.service-asterisk i{font-size:29px}
.button i,.text-link i,.nav-cta i,.section-more i,.external-link i,.service-row i,.next-project i{font-size:.87em;vertical-align:middle}
.button-dark,.nav-cta,.filter-btn.selected,.filter-btn:hover{color:var(--button-text)}
.button-dark:hover{background:var(--accent);color:#fff}
.filter-btn:hover,.filter-btn.selected{background:var(--ink)}
.contact-form-wrap input,.contact-form-wrap textarea,.contact-form-wrap select{background:var(--input-bg);color:var(--ink);border-color:var(--line)}
.contact-form-wrap input:focus,.contact-form-wrap textarea:focus,.contact-form-wrap select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
.contact-form-wrap{border-color:var(--line)}
html[data-theme="dark"] .hero-intro>p,html[data-theme="dark"] .page-intro,html[data-theme="dark"] .about-content>p,
html[data-theme="dark"] .case-section p,html[data-theme="dark"] .case-dek,html[data-theme="dark"] .service-detail p,
html[data-theme="dark"] .process-item p,html[data-theme="dark"] .project-info p,html[data-theme="dark"] .contact-sub,
html[data-theme="dark"] .section-heading-copy,html[data-theme="dark"] .case-aside div p,
html[data-theme="dark"] .footer-top p,html[data-theme="dark"] .social-links a{color:var(--muted)}
html[data-theme="dark"] .nav-link{color:var(--muted)}
html[data-theme="dark"] .nav-link.active,html[data-theme="dark"] .nav-link:hover{color:var(--ink)}
html[data-theme="dark"] .orb{background:#342741;border-color:#65527e;box-shadow:inset -12px -12px 38px rgba(0,0,0,.2)}
html[data-theme="dark"] .orb>span{color:#f5eafe}
html[data-theme="dark"] .hero-orbit:before,html[data-theme="dark"] .hero-orbit:after{border-color:#6a567f}
html[data-theme="dark"] .project-thumb,html[data-theme="dark"] .thumb-0,html[data-theme="dark"] .thumb-1,
html[data-theme="dark"] .thumb-2,html[data-theme="dark"] .thumb-3{background:#3a3046}
html[data-theme="dark"] .project-arrow{background:#e8d9ff;color:#261e32}
html[data-theme="dark"] .gallery-frame,html[data-theme="dark"] .case-cover{background:#30293d}
html[data-theme="dark"] .about-art{background:#342641}html[data-theme="dark"] .about-a{color:#d3b9fa}
html[data-theme="dark"] .about-note{color:#c3b2d7}
html[data-theme="dark"] .service-row,html[data-theme="dark"] .service-row:last-child{border-color:var(--line)}
html[data-theme="dark"] .cta-panel{background:#30263e;color:#f9f5ff}
html[data-theme="dark"] .cta-panel p:not(.eyebrow){color:#ccc0d9}
html[data-theme="dark"] .cta-panel .eyebrow{color:#c4b0d9}
html[data-theme="dark"] .cta-decoration{color:#51366b}
html[data-theme="dark"] .cta-glow{background:#9d7aca}
html[data-theme="dark"] .footer-bottom{border-color:var(--line)}
html[data-theme="dark"] .filter-btn{border-color:var(--line);color:var(--muted)}
html[data-theme="dark"] .filter-btn.selected,html[data-theme="dark"] .filter-btn:hover{background:#bfa4eb;color:#20182d}
html[data-theme="dark"] .menu-toggle span{background:var(--ink)}
html[data-theme="dark"] .contact-form-wrap{background:var(--paper)}
@media(max-width:700px){.theme-toggle{order:2;margin-left:auto;width:38px;height:38px}.menu-toggle{order:3;margin-left:0}.nav-inner{gap:8px}.nav-links{margin-left:0}.nav-cta{color:var(--button-text)}.nav-links.open{background:var(--bg)}}



/* Site-specific composed elements: tokens, not page-local overrides. */
:root{--hero-orbit-line:var(--border-strong);--project-frame:var(--surface-muted)}
html[data-theme="dark"]{--hero-orbit-line:var(--border-strong);--project-frame:var(--surface-muted)}
.site-header{height:var(--header-height);background:var(--header-backdrop)}
.theme-toggle{background:var(--surface-raised);color:var(--content-primary);border-color:var(--border-default)}
.theme-toggle[data-mode="dark"]{background:var(--surface-elevated);color:var(--content-primary)}
.nav-cta,.button-dark{background:var(--action-primary);color:var(--action-primary-foreground)}
.nav-cta:hover,.button-dark:hover{background:var(--action-primary-hover);color:var(--action-primary-foreground)}
.button-light{background:var(--action-secondary);color:var(--action-secondary-foreground)}
.button-light:hover{background:var(--action-secondary-hover)}
.project-thumb,.thumb-0,.thumb-1,.thumb-2,.thumb-3{background:var(--project-frame)}
.project-arrow{background:var(--surface-raised);color:var(--content-primary)}
.hero-orbit:before,.hero-orbit:after{border-color:var(--hero-orbit-line)}
.orb{background:var(--surface-subtle);border-color:var(--border-default)}
.services-strip,.site-footer{background:var(--surface-subtle)}
.service-row,.service-row:last-child,.footer-bottom{border-color:var(--border-default)}
.cta-panel{background:var(--surface-inverse);color:var(--content-inverse)}
.cta-glow{background:var(--brand-accent);opacity:.075}
.cta-decoration{color:var(--content-tertiary);opacity:.16}
.case-cover,.gallery-frame,.about-art{background:var(--surface-muted)}
.contact-form-wrap input,.contact-form-wrap textarea,.contact-form-wrap select{background:var(--field-background);color:var(--content-primary)}
html[data-theme="dark"] .cta-panel{background:var(--surface-inverse);color:var(--content-inverse)}
html[data-theme="dark"] .project-thumb,html[data-theme="dark"] .thumb-0,html[data-theme="dark"] .thumb-1,html[data-theme="dark"] .thumb-2,html[data-theme="dark"] .thumb-3{background:var(--project-frame)}
html[data-theme="dark"] .orb{background:var(--surface-muted);border-color:var(--border-strong)}
:where(.project-card,.service-row,.nav-link,.external-link):hover{cursor:pointer}

/* Work browser: sticky filters occupy their own column and never obscure the case cards. */
:root{
  --filter-surface:var(--surface-raised);
  --filter-active:var(--brand-accent-soft);
  --filter-sticky-offset:calc(var(--header-height) + var(--space-4));
  --filter-sidebar-width:228px;
  --filter-layout-gap:var(--space-8);
  --filter-viewport-reserve:var(--space-8);
  --filter-mobile-panel-height:68dvh;
}
.project-browser{display:grid;grid-template-columns:var(--filter-sidebar-width) minmax(0,1fr);gap:var(--filter-layout-gap);align-items:start}
.project-results{min-width:0}
.project-browser .project-grid{min-width:0;gap:var(--space-16) var(--space-6)}
.portfolio-filter{position:sticky;top:var(--filter-sticky-offset);align-self:start;z-index:10;
  max-height:calc(100dvh - var(--filter-sticky-offset) - var(--filter-viewport-reserve));
  overflow-y:auto;overscroll-behavior:contain;
  padding:var(--space-4);border:1px solid var(--border-default);border-radius:var(--radius-lg);
  background:var(--filter-surface);scrollbar-width:thin;
}
.filter-panel,.filter-main{display:flex;flex-direction:column;gap:var(--space-3)}
.filter-title,.filter-footer{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}
.filter-kicker{font-size:var(--font-size-xs);letter-spacing:.105em;font-weight:700;color:var(--content-secondary)}
.filter-result-count,.filter-explanation{font-size:var(--font-size-xs);color:var(--content-secondary)}
.filter-result-count{font-weight:600;color:var(--content-primary)}
.filter-categories,.filter-subcategories{display:flex;flex-direction:column;gap:var(--space-1)}
.filter-pill,.filter-subpill{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);
  width:100%;min-height:var(--touch-target);border:1px solid transparent;border-radius:var(--radius-sm);
  background:transparent;color:var(--content-primary);text-align:left;font-family:inherit;
  font-size:var(--font-size-sm);font-weight:600;padding:var(--space-2) var(--space-3);
  cursor:pointer;transition:background var(--duration-normal),border-color var(--duration-normal),color var(--duration-normal);
}
.filter-pill:hover,.filter-subpill:hover{background:var(--surface-subtle);border-color:var(--border-default)}
.filter-pill.is-selected{background:var(--brand-accent-soft);border-color:var(--brand-accent);color:var(--content-primary)}
.filter-subpill{font-weight:500;padding-left:var(--space-4);}
.filter-subpill.is-selected{background:var(--filter-active);color:var(--content-primary);border-color:var(--brand-accent)}
.filter-pill>span,.filter-subpill>.filter-count{font-weight:500;font-size:var(--font-size-xs);opacity:.7}
.filter-subpanel{border-top:1px solid var(--border-default);padding-top:var(--space-3)}
.filter-subpanel[hidden],.filter-utility[hidden],.filter-empty[hidden],.project-card[hidden]{display:none}
.filter-subtitle{font-size:var(--font-size-xs);color:var(--content-secondary);margin-bottom:var(--space-2)}
.filter-footer{border-top:1px solid var(--border-default);padding-top:var(--space-3);margin-top:var(--space-2)}
.filter-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1)}
.filter-utility{min-height:var(--touch-target);display:inline-flex;align-items:center;gap:var(--space-2);
  border:0;background:transparent;color:var(--content-secondary);cursor:pointer;font-family:inherit;
  font-size:var(--font-size-xs);font-weight:600;padding:var(--space-2)}
.filter-utility:hover{color:var(--brand-accent)}
.filter-pill:focus-visible,.filter-subpill:focus-visible,.filter-utility:focus-visible,
.filter-mobile-toggle:focus-visible,.filter-mobile-apply:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.filter-mobile-toggle,.filter-mobile-apply{display:none}
.filter-empty{padding:var(--space-12) var(--space-4);text-align:center;color:var(--content-secondary);
  border:1px dashed var(--border-strong);border-radius:var(--radius-lg)}
.filter-empty button{margin:auto}
#work-section{scroll-margin-top:var(--filter-sticky-offset)}
@media(min-width:961px) and (max-width:1120px){
  :root{--filter-sidebar-width:204px;--filter-layout-gap:var(--space-5)}
  .project-browser .project-grid{gap:var(--space-12) var(--space-4)}
}
/* Below desktop, the controls collapse to one sticky row; the optional panel opens on request. */
@media(max-width:960px){
  .project-browser{display:block}
  .portfolio-filter{top:calc(var(--header-height) + var(--space-2));overflow:visible;
    max-height:none;margin:0 0 var(--space-6);padding:0;border-radius:var(--radius-md);
    box-shadow:var(--shadow-raised);isolation:isolate}
  .filter-mobile-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;
    min-height:var(--touch-target);padding:var(--space-3) var(--space-4);border:0;border-radius:var(--radius-md);
    background:var(--filter-surface);font:inherit;font-size:var(--font-size-sm);font-weight:700;
    color:var(--content-primary);text-align:left;cursor:pointer}
  .filter-mobile-toggle-left,.filter-mobile-toggle-right{display:inline-flex;align-items:center;gap:var(--space-3)}
  .filter-mobile-toggle-left{min-width:0}
  .filter-mobile-toggle-left>i{color:var(--brand-accent)}
  .filter-mobile-active{font-size:var(--font-size-xs);font-weight:500;color:var(--content-secondary);
    max-width:31vw;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .filter-mobile-toggle-right{flex:0 0 auto;color:var(--content-secondary)}
  .filter-mobile-toggle-right>i{transition:transform var(--duration-normal)}
  .portfolio-filter.is-open .filter-mobile-toggle-right>i{transform:rotate(180deg)}
  .filter-panel{display:none;position:absolute;top:calc(100% + var(--space-2));left:0;right:0;
    max-height:var(--filter-mobile-panel-height);overflow-y:auto;overscroll-behavior:contain;
    padding:var(--space-4);border:1px solid var(--border-default);border-radius:var(--radius-md);
    background:var(--filter-surface);box-shadow:var(--shadow-raised);scrollbar-width:thin}
  .portfolio-filter.is-open .filter-panel{display:flex}
  .filter-title{flex-direction:row;justify-content:space-between;align-items:center}
  .filter-categories,.filter-subcategories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}
  .filter-pill,.filter-subpill{min-width:0;padding:var(--space-2);font-size:var(--font-size-xs)}
  .filter-pill>span,.filter-subpill>.filter-count{flex:0 0 auto}
  .filter-footer{gap:var(--space-2)}
  .filter-mobile-apply{display:flex;justify-content:center;align-items:center;gap:var(--space-2);
    width:100%;min-height:var(--touch-target);border:0;border-radius:var(--radius-sm);
    background:var(--action-primary);color:var(--action-primary-foreground);font:inherit;
    font-size:var(--font-size-sm);font-weight:700;cursor:pointer}
  .filter-mobile-apply:hover{background:var(--action-primary-hover)}
  .project-browser .project-grid{gap:var(--space-12) var(--space-5)}
}
@media(max-width:530px){
  .filter-categories,.filter-subcategories{grid-template-columns:1fr}
  .filter-mobile-active{max-width:28vw}
  .project-browser .project-grid{gap:var(--space-10)}
}
@media(prefers-reduced-motion:reduce){.filter-pill,.filter-subpill,.filter-mobile-toggle-right>i{transition:none}}

.video-gallery{display:grid;grid-template-columns:1fr;gap:var(--space-6);max-width:920px;margin:var(--space-6) auto 0}
.video-frame{position:relative;aspect-ratio:16/9;background:var(--surface-subtle);border:1px solid var(--border-default);border-radius:var(--radius-md);overflow:hidden}
.video-frame iframe,.video-gallery video{width:100%;height:100%;display:block;border:0}
.video-gallery video{aspect-ratio:16/9;border-radius:var(--radius-md);background:var(--surface-subtle)}

/* v1.4: progressive enhancements; performance-first and accessible */
[data-intro="pending"]{opacity:0;transform:translate3d(0,var(--motion-distance-enter),0)}
[data-intro="shown"]{opacity:1;transform:translate3d(0,0,0)}
[data-intro]{transition:opacity var(--motion-duration-enter) var(--motion-ease),transform var(--motion-duration-enter) var(--motion-ease);transition-delay:calc(var(--intro-order,0)*var(--motion-stagger))}
[data-reveal="pending"]{opacity:0;transform:translate3d(0,var(--motion-distance-enter),0)}
[data-reveal="shown"]{opacity:1;transform:translate3d(0,0,0)}
[data-reveal]{transition:opacity var(--motion-duration-enter) var(--motion-ease),transform var(--motion-duration-enter) var(--motion-ease);transition-delay:var(--reveal-delay,0ms)}
.site-header{transition:box-shadow var(--motion-duration-ui) var(--motion-ease-quiet), background-color var(--motion-duration-ui) var(--motion-ease-quiet)}
.is-scrolled .site-header{box-shadow:0 1px 0 var(--border-default),0 12px 32px rgba(20,20,24,.04)}
.reading-progress{position:fixed;top:0;left:0;right:0;height:2px;background:var(--brand-accent);transform:scaleX(0);transform-origin:0 50%;z-index:1200;pointer-events:none}
.nav-link::before{content:"";position:absolute;left:0;right:0;bottom:-11px;height:2px;background:var(--brand-accent);transform:scaleX(0);transform-origin:left;transition:transform var(--motion-duration-ui) var(--motion-ease)}
.nav-link.active::before,.nav-link:hover::before,.nav-link:focus-visible::before{transform:scaleX(1)}
.nav-link.active::after{display:none}
:where(.button,.nav-cta,.text-link,.section-more,.service-row,.external-link,.next-project) :where(i,svg){transition:transform var(--motion-duration-ui) var(--motion-ease);will-change:auto}
:where(.button,.nav-cta,.text-link,.section-more,.external-link):where(:hover,:focus-visible) :where(i,svg){transform:translate(3px,-3px)}
.service-row:where(:hover,:focus-visible)>span:last-child :where(i,svg){transform:translate(3px,-3px)}
.project-thumb{transition:transform var(--motion-duration-ui) var(--motion-ease),box-shadow var(--motion-duration-ui) var(--motion-ease)}
.project-image{transition:transform 750ms var(--motion-ease)}
.project-arrow{transition:transform var(--motion-duration-ui) var(--motion-ease),background var(--motion-duration-ui) var(--motion-ease),color var(--motion-duration-ui) var(--motion-ease)}
.project-info h3{transition:color var(--motion-duration-ui) var(--motion-ease)}
.theme-toggle{transition:transform var(--motion-duration-micro) var(--motion-ease),background var(--motion-duration-ui),border-color var(--motion-duration-ui)}
@media(hover:hover) and (pointer:fine){
  .project-card:hover .project-thumb{transform:translate3d(0,calc(-1*var(--motion-card-lift)),0);box-shadow:0 16px 45px rgba(20,20,24,.08)}
  .project-card:hover .project-image{transform:scale(var(--motion-card-zoom))}
  .project-card:hover .project-arrow{transform:rotate(45deg)}
  .project-card:hover .project-info h3{color:var(--brand-accent-hover)}
  .theme-toggle:hover{transform:rotate(12deg)}
}
.project-card:focus-visible .project-thumb{outline:2px solid var(--focus-ring);outline-offset:3px}
.project-card:focus-visible .project-image{transform:scale(var(--motion-card-zoom))}
/* The panel is intentionally quiet: lightweight movement, no full-screen overlays. */
@media(max-width:700px){.nav-link::before{bottom:-5px}}
@media(prefers-reduced-motion:reduce){
  [data-intro],[data-reveal]{opacity:1;transform:none;transition:none}
  .reading-progress{transition:none}
  .project-card:hover .project-thumb,.project-card:hover .project-image,.theme-toggle:hover{transform:none}
}


/* Homepage: compact, one-row, sticky discipline filters. The full nested sidebar is exclusive to Work. */
:root{--home-filter-height:60px;--home-filter-height-compact:52px}
.home-project-browser{display:block;min-width:0}
.home-project-browser .project-results{width:100%}
.home-macro-filter{
  position:sticky;top:calc(var(--header-height) + var(--space-2));z-index:18;
  display:flex;align-items:center;gap:var(--space-3);min-width:0;
  min-height:var(--home-filter-height);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-8);
  border:1px solid var(--border-default);border-radius:var(--radius-md);
  background:var(--surface-raised);box-shadow:var(--shadow-raised);
}
.home-filter-kicker{flex:0 0 auto;font-size:var(--font-size-xs);font-weight:700;letter-spacing:.1em;color:var(--content-secondary)}
.home-filter-controls{display:flex;align-items:center;gap:var(--space-2);flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:thin;white-space:nowrap;padding:2px 0}
.home-filter-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--touch-target);padding:var(--space-2) var(--space-3);border:1px solid var(--border-default);border-radius:var(--radius-round);color:var(--content-secondary);background:transparent;font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:color var(--motion-duration-ui),border-color var(--motion-duration-ui),background var(--motion-duration-ui)}
.home-filter-chip:hover{background:var(--surface-subtle);color:var(--content-primary);border-color:var(--border-strong)}
.home-filter-chip.is-selected{background:var(--brand-accent-soft);color:var(--content-primary);border-color:var(--brand-accent)}
.home-filter-chip:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.home-chip-count{font-size:var(--font-size-xs);opacity:.7;font-weight:500}
.home-filter-result{flex:0 0 auto;white-space:nowrap;margin-left:auto;font-size:var(--font-size-xs);font-weight:600;color:var(--content-secondary)}
@media(max-width:1100px){.home-filter-kicker{display:none}.home-macro-filter{gap:var(--space-2)}}
@media(max-width:700px){.home-macro-filter{min-height:var(--home-filter-height-compact);padding:var(--space-1) var(--space-2);margin-bottom:var(--space-6);top:calc(var(--header-height) + var(--space-1))}.home-filter-result{display:none}.home-filter-controls{gap:var(--space-1)}.home-filter-chip{font-size:var(--font-size-xs)}}
@media(prefers-reduced-motion:reduce){.home-filter-chip{transition:none}}


/* v1.4.2 — Tactile micro-detail: quiet monochrome grain + custom pointer states.
   Decorative texture only touches large background surfaces; project images remain pristine.
   Browser-native keyboard focus and text selection are deliberately preserved. */
body {
  background-image:var(--portfolio-grain);
  background-size:var(--portfolio-grain-size);
  background-repeat:repeat;
  background-attachment:fixed;
}
.services-strip,.site-footer {
  background-image:var(--portfolio-grain);
  background-size:var(--portfolio-grain-size);
  background-repeat:repeat;
}
.cta-panel {
  background-image:url('/assets/textures/grain-dark.png');
  background-size:var(--portfolio-grain-size);
  background-repeat:repeat;
}
/* Click cursor: these selectors intentionally outrank page-specific cursor:pointer rules.
   Child elements (icons/spans) get the same cursor when hovered independently. */
@media (hover:hover) and (pointer:fine) and (forced-colors:none) {
  body {cursor:var(--portfolio-cursor-default);}
  body a[href]:not(.project-card),
  body a[href]:not(.project-card) *,
  body button:not(:disabled),
  body button:not(:disabled) *,
  body [role="button"],
  body [role="button"] *,
  body label[for],
  body label[for] *,
  body summary,
  body select,
  body input:is([type="checkbox"],[type="radio"],[type="submit"],[type="button"]){
    cursor:var(--portfolio-cursor-action);
  }
  /* CSS fallback when JS, hover overlay or motion is unavailable. */
  body .project-card,body .project-card *{cursor:var(--portfolio-cursor-action)}
  html.has-project-hover-cursor body .project-card,
  html.has-project-hover-cursor body .project-card *{cursor:none}
  body :where(input:not([type]),input[type="text"],input[type="email"],input[type="search"],input[type="tel"],input[type="url"],input[type="number"],textarea,[contenteditable="true"]),
  body :where(input:not([type]),input[type="text"],input[type="email"],input[type="search"],input[type="tel"],input[type="url"],input[type="number"],textarea,[contenteditable="true"]) *{cursor:text}
  body :where(button,a,input,select):disabled{cursor:not-allowed}
}

/* Full-bleed project covers. Contain/letterboxing is intentional for case-study galleries,
   but thumbnail cover images fill every card edge without distortion or stretching. */
.project-card .project-thumb{isolation:isolate}
.project-card .project-visual{display:block;width:100%;height:100%;padding:0;overflow:hidden}
.project-card .project-image{display:block;width:100%;height:100%;max-width:none;max-height:none;object-fit:cover;object-position:center;border:0;border-radius:0;box-shadow:none}
.case-hero-media .case-cover{padding:0;overflow:hidden}
.case-hero-media .case-cover img{display:block;width:100%;height:100%;max-height:none;object-fit:cover;object-position:center;filter:none}

/* Animated VIEW/VER cursor: not an image cursor, since CSS cursor assets cannot scale.
   Pointer-follow position has no transition; only appearance animates. */
:root{--project-pointer-size:76px;--project-pointer-start-scale:.12;
  --project-pointer-enter-duration:310ms;--project-pointer-ease:cubic-bezier(.16,1.36,.38,1);
  --project-pointer-background:var(--brand-accent);--project-pointer-foreground:var(--color-white)}
html[data-theme="dark"]{--project-pointer-foreground:var(--color-neutral-950)}
.project-hover-cursor{position:fixed;z-index:1100;top:0;left:0;
  width:var(--project-pointer-size);height:var(--project-pointer-size);
  pointer-events:none;visibility:hidden;opacity:0;
  transition:opacity var(--motion-duration-micro) ease,visibility 0s linear var(--motion-duration-micro);
  will-change:transform;contain:layout style}
.project-hover-cursor.is-visible{visibility:visible;opacity:1;
  transition:opacity var(--motion-duration-micro) ease,visibility 0s}
.project-hover-cursor__bubble{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  width:100%;height:100%;border:0;border-radius:var(--radius-round);
  background:var(--project-pointer-background);color:var(--project-pointer-foreground);
  box-shadow:0 14px 34px rgba(35,23,56,.19);
  transform:scale(var(--project-pointer-start-scale));opacity:.65;
  transition:transform var(--project-pointer-enter-duration) var(--project-pointer-ease),opacity var(--motion-duration-micro) ease}
.project-hover-cursor.is-visible .project-hover-cursor__bubble{transform:scale(1);opacity:1}
.project-hover-cursor__icon{width:18px;height:18px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.project-hover-cursor__label{font-family:var(--font-body);font-size:11px;font-weight:800;line-height:1.2;letter-spacing:.10em}
@media(prefers-reduced-motion:reduce),(pointer:coarse),(hover:none),(forced-colors:active){
  .project-hover-cursor{display:none}
}

@media (pointer:coarse), (hover:none), (forced-colors:active) {
  body {cursor:auto;}
}
@media print {
  body,.services-strip,.site-footer,.cta-panel {background-image:none;}
}

@media (pointer:coarse) { body { background-attachment:scroll; } }

/* v1.4.6 — persistent case context, magnetic controls, sketch-trail layer.
   These effects are site-specific and never included in the administrative UI. */
@media (min-width:961px) {
  .case-layout {align-items:start}
  .case-aside {
    position:sticky;
    top:calc(var(--header-height) + var(--space-8));
    align-self:start;
    max-height:calc(100dvh - var(--header-height) - var(--space-12));
    overflow-y:auto;
    scrollbar-width:thin;
    overscroll-behavior:contain;
  }
}
/* The gallery remains unobstructed: the trail draws behind opaque case images and text. */
.pointer-trail-canvas {
  position:fixed;
  inset:0;
  width:100%;height:100%;
  z-index:1;pointer-events:none;
  contain:strict;
}
body > main#main-content {position:relative;z-index:2}

:root {--trail-rgb:128,108,160;
  --magnetic-distance:80px;
  --magnetic-hover-duration:330ms;
  --magnetic-hover-ease:cubic-bezier(.22,1,.36,1);
}
html[data-theme="dark"]{--trail-rgb:181,166,206}

/* Magnetism uses CSS variables controlled by the public-only motion controller.
   Retains standard click cursor and keyboard focus. */
.magnetic-button {
  position:relative;
  isolation:isolate;
  overflow:hidden;
  transform:translate3d(var(--magnetic-x,0px),var(--magnetic-y,0px),0) scale(var(--magnetic-scale,1));
  transition:transform var(--magnetic-hover-duration) var(--magnetic-hover-ease),
    color var(--motion-duration-ui) var(--motion-ease),
    box-shadow var(--motion-duration-ui) var(--motion-ease),
    border-color var(--motion-duration-ui) var(--motion-ease);
  will-change:transform;
}
.magnetic-button::before{
  content:"";position:absolute;inset:0;
  background:var(--brand-accent);
  transform:translate3d(0,105%,0);
  opacity:0;
  pointer-events:none;
  border-radius:inherit;
  z-index:0;
  transition:transform 430ms var(--magnetic-hover-ease),opacity 240ms ease;
}
/* Text and icons stay above the animated fill; never hidden by it. */
.magnetic-button > *{position:relative;z-index:1}
.magnetic-button .magnetic-button__label{margin-left:0}
.magnetic-button:is(:hover,:focus-visible)::before{
  transform:translate3d(0,0,0);opacity:1;
}
.magnetic-button:is(:hover,:focus-visible){
  --magnetic-scale:1.025;
  transform:translate3d(var(--magnetic-x,0px),var(--magnetic-y,0px),0) scale(var(--magnetic-scale));
  color:var(--color-white);
  box-shadow:0 12px 28px rgba(72,48,113,.16);
}
html[data-theme="dark"] .magnetic-button:is(:hover,:focus-visible){color:var(--color-neutral-950)}
.magnetic-button:active{--magnetic-scale:.985;
  transform:translate3d(var(--magnetic-x,0px),var(--magnetic-y,0px),0) scale(var(--magnetic-scale))}
.magnetic-button:where(:hover,:focus-visible) :where(i,svg){transform:translate(3px,-3px)}
.magnetic-button :where(i,svg){transition:transform 330ms var(--magnetic-hover-ease)}
/* Keep backgrounds from legacy hover declarations from hiding the highlight layer. */
.magnetic-button.button-dark:is(:hover,:focus-visible),
.magnetic-button.nav-cta:is(:hover,:focus-visible){background:var(--action-primary)}
@media (pointer:coarse),(hover:none),(prefers-reduced-motion:reduce),(forced-colors:active){
  .pointer-trail-canvas{display:none}
  .magnetic-button{transform:none;will-change:auto}
  .magnetic-button::before{display:none}
  .magnetic-button:is(:hover,:focus-visible){box-shadow:none}
}
@media(max-width:960px){.case-aside{position:static;max-height:none;overflow:visible}}
