/* Gillemosai — product story. No external animation runtime required. */
:root { --ink:#f2ede3; --muted:#b9b0a1; --ember:#ff824c; --gold:#e3b23c; }
body { background:#15130f; }
::selection { background:#ff824c; color:#15130f; }
a,button { -webkit-tap-highlight-color:transparent; }
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible { outline:2px solid var(--ember); outline-offset:6px; }
.skip-link { position:fixed; top:12px; left:20px; z-index:100; padding:12px 18px; background:var(--ink); color:#15130f; transform:translateY(-180%); }
.skip-link:focus { transform:translateY(0); }
#site-header { background:rgba(21,19,15,.93); }
#site-header .header-inner { max-width:1440px; }
#mobile-menu:not(.hidden) { display:flex; }
section[id],#trabalho { scroll-margin-top:90px; }
.eyebrow { font:500 11px/1.5 'IBM Plex Mono',monospace; letter-spacing:.16em; color:var(--ember); }
.product-story { position:relative; isolation:isolate; background:radial-gradient(ellipse at 77% 43%,#51321c44,transparent 48%); }
.product-story::before { content:''; position:absolute; inset:0; pointer-events:none; opacity:.24; background-image:radial-gradient(#a38b6b55 .7px,transparent .7px); background-size:32px 32px; }
.story-sticky { position:relative; max-width:1440px; margin:auto; padding:44px 64px 24px; }
.story-grid { display:grid; grid-template-columns:1.05fr 1fr; gap:30px; align-items:center; min-height:560px; }
.hero-copy { position:relative; z-index:3; }
.availability { display:inline-flex; align-items:center; gap:8px; color:#becbb0; border:1px solid #8fbf862f; border-radius:99px; padding:7px 11px; font:400 10px/1.4 'IBM Plex Mono',monospace; letter-spacing:.035em; }
.availability>span { width:5px; height:5px; background:#a3c98c; border-radius:50%; box-shadow:0 0 12px #8fbf8644; }
.hero-eyebrow { margin-top:30px; margin-bottom:16px; }
.hero-copy h1 { font:500 clamp(48px,5.1vw,76px)/1.02 'Fraunces',Georgia,serif; letter-spacing:-.045em; margin:0 0 22px; }
.hero-copy h1 em { color:var(--ember); font-weight:500; }
.hero-description { max-width:410px; color:var(--muted); font:400 15px/1.8 'Inter',sans-serif; }
.hero-actions { display:flex; align-items:center; gap:22px; margin:28px 0 16px; flex-wrap:wrap; }
.primary-action { background:#ff824c; color:#20130e; border:1px solid #ffa279; display:inline-flex; align-items:center; justify-content:space-between; gap:32px; border-radius:6px; padding:17px 22px; font:600 12px/1 'Inter',sans-serif; transition:transform .25s,background .25s,box-shadow .25s; }
.primary-action:hover { background:#ff996c; transform:translateY(-2px); box-shadow:0 8px 28px #ff824c22; }
.primary-action>span { font-size:19px; font-weight:400; }
.secondary-action { font-size:12px; color:#d0c8bc; display:inline-flex; gap:12px; align-items:center; padding:12px 0; border-bottom:1px solid #ffffff22; transition:color .2s,border-color .2s; }
.secondary-action:hover { color:var(--ember); border-color:var(--ember); }
.hero-conversation { color:var(--muted); font-size:11px; }
.hero-conversation:hover { color:var(--ember); }
.hero-proof { display:flex; gap:30px; margin-top:28px; font:400 10px/1.5 'IBM Plex Mono',monospace; color:#a99f90; }
.hero-proof>span { display:flex; align-items:center; gap:8px; }
.hero-proof strong { color:#e7dfd0; font:500 17px 'Fraunces',serif; }
.product-visual { height:540px; position:relative; min-width:0; perspective:1200px; }
.orbit { position:absolute; border:1px solid #bb8a5126; border-radius:50%; width:460px; height:460px; top:42px; left:50%; transform:translateX(-50%); pointer-events:none; }
.orbit-two { width:540px; height:540px; top:2px; border-style:dashed; border-color:#bb8a5117; }
.orbit-one::before { content:''; position:absolute; top:86px; right:33px; width:6px; height:6px; border-radius:50%; background:var(--ember); box-shadow:0 0 18px #ff824c; }
.scene-coordinate { position:absolute; top:8px; right:10px; font:400 10px 'IBM Plex Mono',monospace; letter-spacing:.16em; color:#9e8d75; }
.device-stage { position:absolute; inset:0; perspective:1200px; }
.device-shadow { position:absolute; left:50%; bottom:21px; width:260px; height:30px; background:#0008; border-radius:50%; filter:blur(14px); transform:translateX(-50%); }
.phone { position:absolute; top:32px; left:50%; width:252px; height:466px; margin-left:-126px; transform-style:preserve-3d; transform:rotateX(8deg) rotateY(-17deg) rotateZ(7deg); }
.phone-front { position:absolute; inset:0; padding:7px; border:1px solid #b5a18a; border-radius:37px; background:linear-gradient(125deg,#9a8878,#26231f 18%,#84705a 57%,#211b17 80%); box-shadow:12px 18px 44px #0006,inset 0 0 0 2px #27211b; transform:translateZ(10px); overflow:hidden; }
.phone-edge { position:absolute; inset:0; border-radius:37px; background:linear-gradient(90deg,#2a241e,#bd9e7d,#332b24); transform:translateZ(-2px) translateX(7px); box-shadow:5px 2px 0 #191714; }
.phone-camera { position:absolute; top:14px; left:50%; transform:translateX(-50%); width:68px; height:17px; border-radius:20px; background:#0a0908; z-index:3; }
.phone-screen { height:100%; background:linear-gradient(155deg,#27231e,#131411 75%); border-radius:29px; overflow:hidden; padding:10px 17px; border:1px solid #000; color:#eee8db; }
.screen-top { display:flex; justify-content:space-between; font:500 8px 'Inter',sans-serif; padding:1px 4px 21px; }
.screen-brand { display:flex; align-items:center; gap:7px; font:500 9px 'Inter',sans-serif; }
.screen-brand small { display:block; color:#a79f90; font-size:6px; margin-top:3px; }
.screen-symbol { width:26px; height:26px; border-radius:8px; background:#e98a50; color:#242019; font:italic 600 23px 'Fraunces',serif; text-align:center; }
.screen-avatar { margin-left:auto; border:1px solid #8b766233; border-radius:50%; width:23px; height:23px; display:grid; place-items:center; color:#b8ac98; font-size:8px; }
.screen-greeting { margin-top:24px; font:400 8px 'Inter',sans-serif; color:#bbb1a0; }
.screen-title { margin-top:6px; font:500 28px/1.1 'Fraunces',serif; letter-spacing:-.02em; }
.screen-title i { color:#eea575; }
.app-panel { position:relative; border:1px solid #8e806433; border-radius:11px; background:#34302770; }
.panel-main { margin-top:18px; padding:12px; }
.panel-caption { display:flex; justify-content:space-between; font:400 6px 'IBM Plex Mono',monospace; letter-spacing:.05em; color:#d2c8b7; }
.chart { height:64px; display:flex; gap:6px; align-items:flex-end; margin-top:13px; border-bottom:1px solid #ffffff0d; }
.chart i { flex:1; border-radius:3px 3px 0 0; background:linear-gradient(#f5bc81,#f08b4b55); height:30%; transform-origin:bottom; }
.chart i:nth-child(2) { height:42%; }.chart i:nth-child(3) { height:35%; }.chart i:nth-child(4) { height:58%; }.chart i:nth-child(5) { height:48%; }.chart i:nth-child(6) { height:72%; }.chart i:nth-child(7) { height:65%; }.chart i:nth-child(8) { height:85%; }.chart i:nth-child(9) { height:100%; }
.chart-legend { display:flex; justify-content:space-between; margin-top:7px; font:400 6px 'Inter',sans-serif; color:#ac9f8b; }
.panel-small { display:flex; gap:8px; align-items:center; padding:10px 8px; margin-top:8px; font:500 7px 'Inter',sans-serif; }
.panel-small small { display:block; color:#a79e8e; font-size:6px; margin-top:4px; }
.task-icon { font-size:13px; color:#eeb583; }.task-check { margin-left:auto; color:#b5c49d; }
.screen-bottom { display:flex; justify-content:space-around; margin-top:15px; color:#d6b491; font:400 12px 'Inter',sans-serif; text-align:center; }
.screen-bottom small { display:block; color:#b3a38f; font-size:6px; margin-top:3px; }
.phone-home { position:absolute; bottom:13px; left:50%; transform:translateX(-50%); width:65px; height:3px; background:#a3998980; border-radius:4px; }
.wireframe { position:absolute; inset:55px 20px 45px; border:1px dashed #efaf78aa; border-radius:12px; padding:18px; transform:translateZ(38px); opacity:0; pointer-events:none; background:#241d14aa; }
.wireframe>span { font:400 8px 'IBM Plex Mono',monospace; color:#f5b77e; }
.wireframe>div { height:64px; border:1px dashed #e0ad7266; border-radius:7px; margin-top:23px; }
.floating-label { position:absolute; z-index:4; display:flex; align-items:center; gap:10px; background:#2b251eeb; border:1px solid #b491663b; box-shadow:0 12px 34px #0004; padding:13px 15px; border-radius:10px; font:500 11px 'Inter',sans-serif; color:#e7dfd1; }
.floating-label small { display:block; font-size:8px; font-weight:400; margin-top:5px; color:#baa98f; }
.label-icon { display:grid; place-items:center; width:30px; height:30px; border-radius:8px; background:#e99b5a15; color:#f5b77e; font:400 14px 'IBM Plex Mono',monospace; }
.label-design { top:135px; left:-8px; transform:rotate(-5deg); }
.label-code { bottom:91px; right:-12px; transform:rotate(4deg); }
.scene-caption { position:absolute; bottom:0; left:0; right:0; display:flex; align-items:center; justify-content:center; gap:7px; font:400 8px 'IBM Plex Mono',monospace; letter-spacing:.08em; color:#b8a78e; }
.scene-note { color:#8e8577; letter-spacing:0; font-size:8px; margin-left:8px; }
.status-dot { width:4px; height:4px; border-radius:50%; background:#dbab72; }
.story-footer { position:relative; display:flex; align-items:center; justify-content:space-between; gap:24px; margin-top:24px; padding:20px 0 12px; border-top:1px solid #b9a48024; }
.scroll-cue { display:flex; gap:12px; align-items:center; font:400 10px 'IBM Plex Mono',monospace; color:#a79b87; }
.scroll-cue>span { font-size:19px; color:var(--ember); }
.story-steps { list-style:none; display:flex; gap:34px; margin:0; padding:0; }
.story-steps li { display:flex; gap:9px; align-items:center; font:400 10px 'IBM Plex Mono',monospace; color:#8e8474; transition:color .3s; }
.story-steps li span { font-size:9px; }.story-steps li.is-current { color:#f5bd86; }
.story-progress { position:absolute; top:-1px; left:0; right:0; height:1px; overflow:hidden; }.story-progress>span { display:block; height:100%; background:linear-gradient(90deg,#ff824c,#e3b23c); transform:scaleX(.06); transform-origin:left; }
/* Sticky is an enhancement, enabled only after the controller initializes. */
@media(min-width:900px) and (min-height:650px) {
  .story-enhanced.product-story { height:185vh; }
  .story-enhanced .story-sticky { position:sticky; top:72px; height:calc(100vh - 72px); display:flex; flex-direction:column; justify-content:center; }
  .story-enhanced .story-grid { min-height:0; flex:1; max-height:660px; }
  .story-enhanced .product-visual { height:min(540px,calc(100vh - 200px)); min-height:410px; }
  .story-enhanced .device-stage { top:50%; height:540px; transform:translateY(-50%) scale(.88); }
  .story-enhanced .orbit { top:50%; transform:translate(-50%,-50%); }
}
.work-section { padding:96px 64px 65px; max-width:1440px; margin:auto; overflow:hidden; }
.work-heading { display:flex; justify-content:space-between; align-items:end; gap:30px; margin-bottom:28px; }
.work-heading h2 { font:500 clamp(36px,3.8vw,52px)/1.08 'Fraunces',serif; letter-spacing:-.035em; margin-top:15px; }.work-heading h2 em { color:#c6b69c; }
.work-heading>p { max-width:330px; color:var(--muted); font:400 13px/1.8 'Inter',sans-serif; padding-bottom:5px; }
.portfolio-carousel { position:relative; width:100%; }
.portfolio-carousel .mySwiper { padding:25px 0 50px!important; }
.portfolio-carousel .swiper-slide { width:290px; height:310px; border-radius:12px; }
.portfolio-carousel .slide-label { padding:28px 16px 16px; }
.portfolio-carousel .swiper-button-next,.portfolio-carousel .swiper-button-prev { width:38px; height:38px; border-radius:50%; background:#1c1912e8; border:1px solid #d2b08744; }
.portfolio-carousel .swiper-button-next::after,.portfolio-carousel .swiper-button-prev::after { font-size:14px; }
.portfolio-carousel .swiper-pagination-bullet { background:#dca777; }
/* A usable project list if the carousel library cannot load. */
.mySwiper:not(.swiper-initialized) .swiper-wrapper { display:flex; gap:20px; overflow-x:auto; padding-bottom:20px; }
.mySwiper:not(.swiper-initialized) .swiper-slide { flex:0 0 260px; }
.mySwiper:not(.swiper-initialized) .swiper-button-next,.mySwiper:not(.swiper-initialized) .swiper-button-prev { display:none; }
.dossier-card { border-radius:13px; box-shadow:0 5px 25px #0001; }
.dossier-card::before { opacity:.3; }
#servicos>div,#sobre>div { max-width:1280px; }
#servicos .dossier-card p { line-height:1.75; }
#sobre img[alt="Gil Lemos"] { filter:none; opacity:1; mix-blend-mode:normal; }
#sound-toggle { opacity:.65; }#sound-toggle:hover,#sound-toggle:focus-visible { opacity:1; }
.reveal-el:not(.reveal-ready),.reveal-stagger:not(.reveal-ready)>* { opacity:1; transform:none; }
.reveal-el:not(.reveal-ready) .img-wipe,.reveal-stagger:not(.reveal-ready) .img-wipe { clip-path:inset(0); }
.reveal-el,.reveal-stagger>* { will-change:auto; }
.marquee-track { animation-duration:45s; }
@media(min-width:900px) and (max-height:780px) {
 .story-sticky { padding-top:22px; padding-bottom:16px; }.hero-eyebrow { margin-top:18px; margin-bottom:12px; }.hero-copy h1 { font-size:clamp(46px,4.8vw,66px); margin-bottom:16px; }.hero-description { font-size:13px; }.hero-actions { margin-top:20px; margin-bottom:10px; }.hero-proof { margin-top:18px; }.story-footer { margin-top:14px; padding-top:16px; }.scene-caption { bottom:-4px; }
}
@media(max-width:1100px) {
 .story-sticky { padding-left:36px; padding-right:36px; }.story-grid { gap:12px; }.label-design { left:-3px; }.label-code { right:-6px; }.floating-label { padding:10px; font-size:9px; }.floating-label small { font-size:7px; }.orbit { width:370px; height:370px; top:85px; }.orbit-two { width:450px; height:450px; top:45px; }.work-section { padding-left:36px; padding-right:36px; }
}
@media(max-width:899px) {
 .story-sticky { padding:32px 24px 22px; overflow:hidden; }.story-grid { grid-template-columns:1fr; gap:12px; min-height:0; }.hero-copy { max-width:620px; }.hero-copy h1 { font-size:clamp(46px,8.5vw,72px); }.hero-copy h1 br:nth-child(2) { display:none; }.hero-copy h1 em::before { content:' '; }.hero-description { max-width:500px; }.hero-eyebrow { margin-top:25px; }.hero-proof { margin-top:22px; }.product-visual { max-width:570px; width:100%; height:510px; margin:6px auto 0; }.device-stage { transform:scale(.93); }.orbit-one { width:370px; height:370px; top:65px; }.orbit-two { width:450px; height:450px; top:25px; }.scene-coordinate { top:18px; right:8px; }.label-design { left:12px; }.label-code { right:12px; }.story-footer { margin-top:15px; }.scroll-cue { display:none; }.story-steps { width:100%; justify-content:space-between; }.scene-caption { bottom:0; }.work-section { padding:60px 24px 38px; }.work-heading { align-items:start; flex-direction:column; gap:20px; }.work-heading h2 { font-size:40px; }.work-heading>p { font-size:13px; }.portfolio-carousel .swiper-slide { width:255px; height:280px; }
}
@media(max-width:480px) {
 .story-sticky { padding-left:20px; padding-right:20px; }.hero-copy h1 { font-size:48px; }.hero-copy h1 br:nth-child(2) { display:block; }.hero-copy h1 em::before { content:none; }.hero-description { font-size:14px; }.hero-actions { gap:15px; }.primary-action { padding:16px; gap:20px; }.secondary-action { font-size:10px; gap:6px; }.hero-proof { gap:22px; font-size:9px; }.product-visual { height:460px; }.device-stage { inset:-27px -17px 0; transform:scale(.82); }.orbit-one { width:290px; height:290px; top:78px; }.orbit-two { width:355px; height:355px; top:45px; }.scene-coordinate { font-size:8px; top:12px; }.label-design { top:150px; left:-14px; }.label-code { bottom:80px; right:-14px; }.scene-caption { font-size:7px; gap:5px; }.scene-note { font-size:7px; margin-left:4px; }.work-heading h2 { font-size:36px; }.story-steps { gap:16px; }
}
@media(prefers-reduced-motion:reduce) {
 html { scroll-behavior:auto!important; }*,*::before,*::after { animation:none!important; transition:none!important; }.product-story.story-enhanced { height:auto; }.story-enhanced .story-sticky { position:relative; top:0; height:auto; }.phone { transform:rotateX(4deg) rotateY(-10deg) rotateZ(3deg)!important; }.wireframe { display:none; }.reveal-el,.reveal-stagger>* { opacity:1!important; transform:none!important; }.img-wipe { clip-path:inset(0)!important; }.scroll-cue { visibility:hidden; }
}

/* Scroll-driven 360° project gallery — October 2026. */
.gallery-section.work-section { max-width:none; padding:0; overflow:visible; }
.gallery-sticky { max-width:1440px; margin:auto; padding:76px 64px 50px; }
.gallery-section .work-heading { margin-bottom:12px; }
.gallery-shell { position:relative; }
.gallery-viewport { position:relative; }
.gallery-ring { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:20px; padding:24px 0; }
.gallery-card { position:relative; min-width:0; aspect-ratio:1; border:1px solid #bea07940; border-radius:13px; background:#211d15; overflow:hidden; }
.gallery-card-link { display:block; position:relative; width:100%; height:100%; }
.gallery-card img { width:100%; height:100%; object-fit:cover; user-select:none; -webkit-user-drag:none; }
.gallery-card-label { position:absolute; inset:auto 0 0; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:38px 17px 17px; background:linear-gradient(transparent,#15130fe8); }
.gallery-card-label>span:first-child { font:500 10px/1.4 'IBM Plex Mono',monospace; color:#f3ebdf; letter-spacing:.09em; }
.gallery-card-label>span:last-child { color:#ff9861; font-size:20px; }
.gallery-card-link:focus-visible { outline:3px solid #ffab71; outline-offset:-5px; border-radius:12px; }
.gallery-floor { display:none; }
.gallery-controls[hidden],.gallery-dots[hidden],.gallery-hint[hidden] { display:none; }
.gallery-ready .gallery-viewport { height:420px; overflow:hidden; perspective:1100px; touch-action:pan-y pinch-zoom; cursor:grab; }
.gallery-ready .gallery-ring,.gallery-ready .gallery-card,.gallery-ready .gallery-card-link,.gallery-ready .gallery-card-link * { touch-action:pan-y pinch-zoom; }
.gallery-ready .gallery-card { user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; }
.gallery-ready.is-dragging .gallery-viewport { cursor:grabbing; }
.gallery-ready .gallery-ring { position:absolute; inset:0; display:block; padding:0; transform-style:preserve-3d; }
.gallery-ready .gallery-card { position:absolute; left:50%; top:50%; width:290px; height:310px; margin:-155px 0 0 -145px; aspect-ratio:auto; box-shadow:0 18px 35px #0005; transform-origin:center; backface-visibility:hidden; }
.gallery-ready .gallery-card::after { content:''; position:absolute; inset:0; pointer-events:none; border-radius:inherit; background:#100e0b; opacity:var(--card-shade,0); }
.gallery-ready .gallery-card.is-front { border-color:#d4a36c99; }
.gallery-ready .gallery-floor { display:block; position:absolute; left:10%; right:10%; bottom:18px; height:55px; border-radius:50%; background:radial-gradient(ellipse,#c785361a,transparent 68%); border:1px solid #be98521a; transform:rotateX(60deg); pointer-events:none; }
.gallery-controls { display:flex; align-items:center; justify-content:center; gap:25px; margin-top:8px; }
.gallery-controls button { display:grid; place-items:center; width:42px; height:42px; flex-shrink:0; border:1px solid #b997624f; border-radius:50%; background:#242018; color:#f1be87; font-size:20px; transition:background .2s,border-color .2s,transform .2s; }
.gallery-controls button:hover { background:#443021; border-color:#edab70; transform:translateY(-2px); }
.gallery-selection { display:flex; flex-direction:column; align-items:center; gap:7px; min-width:225px; text-align:center; }
.gallery-counter { font:400 10px 'IBM Plex Mono',monospace; color:#b29d80; letter-spacing:.15em; font-variant-numeric:tabular-nums; }
.gallery-current { font:500 11px/1.4 'IBM Plex Mono',monospace; color:#eee0cc; letter-spacing:.08em; }
.gallery-dots { display:flex; justify-content:center; gap:2px; margin-top:15px; }
.gallery-dots button { width:28px; height:28px; display:grid; place-items:center; border:0; background:transparent; border-radius:50%; }
.gallery-dots button::before { content:''; width:5px; height:5px; border-radius:50%; background:#6f5c45; transition:background .2s,transform .2s; }
.gallery-dots button[aria-current="true"]::before { background:#f4bb7e; transform:scale(1.5); }
.gallery-hint { display:flex; justify-content:center; align-items:center; gap:8px; margin-top:7px; color:#ae9c83; font:400 10px/1.6 'IBM Plex Mono',monospace; text-align:center; }
.gallery-hint>span:first-child { color:#edb881; font-size:17px; }
.gallery-section.gallery-pinned { height:calc(100vh + 1800px); }
.gallery-pinned .gallery-sticky { position:sticky; top:70px; height:calc(100vh - 70px); padding-top:30px; padding-bottom:16px; display:flex; flex-direction:column; justify-content:center; }
.gallery-pinned .gallery-ready .gallery-viewport { height:clamp(280px,calc(100vh - 350px),440px); }
.gallery-pinned .work-heading h2 { font-size:clamp(34px,3.6vw,50px); }
@media(max-height:760px) and (min-width:900px) {
 .gallery-pinned .work-heading h2 { font-size:34px; }
 .gallery-pinned .work-heading .eyebrow { font-size:10px; }
 .gallery-pinned .gallery-ready .gallery-card { width:250px; height:268px; margin:-134px 0 0 -125px; }
 .gallery-pinned .gallery-dots { margin-top:7px; }.gallery-pinned .gallery-hint { margin-top:0; }
}
@media(max-width:1100px) { .gallery-sticky { padding-left:36px; padding-right:36px; }.gallery-selection { min-width:210px; } }
@media(max-width:899px) {
 .gallery-sticky { padding:55px 24px 38px; }.gallery-section .work-heading { gap:18px; margin-bottom:0; }
 .gallery-ring { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
 .gallery-ready .gallery-viewport { height:365px; margin:0 -24px; }
 .gallery-ready .gallery-card { width:240px; height:265px; margin:-132.5px 0 0 -120px; }
 .gallery-section.gallery-pinned { height:auto; }
}
@media(max-width:480px) {
 .gallery-sticky { padding-left:20px; padding-right:20px; }.gallery-ready .gallery-viewport { height:320px; margin:0 -20px; }
 .gallery-ready .gallery-card { width:208px; height:232px; margin:-116px 0 0 -104px; }
 .gallery-selection { min-width:190px; }.gallery-controls { gap:12px; }
 .gallery-card-label { padding:30px 12px 12px; }.gallery-card-label>span:first-child { font-size:8px; }
 .gallery-ring { gap:12px; }.gallery-hint { font-size:9px; }
}
@media(prefers-reduced-motion:reduce) {
 .gallery-section.gallery-pinned { height:auto; }.gallery-pinned .gallery-sticky { position:relative; top:0; height:auto; }
 .gallery-ring { transform:none; }.gallery-card { transform:none!important; }
}

/* A shared, restrained motion language for services, portrait and contact. */
.service-flight-slot { position:relative; min-width:0; display:flex; perspective:1100px; }
.service-flight-slot>.service-motion-card { width:100%; height:100%; transform-origin:50% 65%; transition:border-color .25s,box-shadow .25s; }
.service-flight-slot.motion-enabled>.service-motion-card { transition:none; }
.service-motion-card::after { background:radial-gradient(330px circle at var(--sx,50%) var(--sy,50%),#f4b7781c,transparent 70%); }
.service-flight-slot>.service-motion-card:hover,.service-flight-slot>.service-motion-card:focus-visible { border-color:#edb77c88; box-shadow:0 14px 40px #0002; }
.service-flight-slot>.service-motion-card:active { border-color:#ffc287; box-shadow:inset 0 0 0 1px #ffbe7b50,0 5px 22px #0002; }
.service-motion-card:focus-visible::after { opacity:1; }
.service-motion-card .material-symbols-outlined { transition:transform .25s; }
.service-motion-card:hover .material-symbols-outlined,.service-motion-card:focus-visible .material-symbols-outlined { transform:translateX(3px); }
.service-flight-slot .img-wipe { clip-path:inset(0); }
.portrait-motion-slot { perspective:1200px; }
.portrait-motion-frame { transform-origin:50% 60%; }
.portrait-motion-frame::after { content:''; position:absolute; inset:0; pointer-events:none; border-radius:inherit; box-shadow:inset 0 0 0 1px #e3b77930; background:radial-gradient(360px circle at var(--sx,50%) var(--sy,50%),#ffcfa317,transparent 70%); }
#site-header nav a,footer nav a { position:relative; }
#site-header nav a::after { content:''; position:absolute; left:0; right:0; bottom:-7px; height:1px; background:linear-gradient(90deg,#ff824c,#e3b23c); transform:scaleX(0); transform-origin:left; transition:transform .25s; pointer-events:none; }
#site-header nav a:hover::after,#site-header nav a:focus-visible::after { transform:scaleX(1); }
#mobile-menu a::after { bottom:3px; }
#contact-form { transition:border-color .25s,box-shadow .25s; }
#contact-form:focus-within { border-color:#dca47280; box-shadow:0 0 38px #e6973a0b; }
#contact-form>div { position:relative; }
#contact-form label { transition:color .2s; }
#contact-form>div:focus-within label { color:#ffc18c; }
#contact-form input,#contact-form textarea { transition:border-color .25s,box-shadow .25s; }
#contact-form input:focus,#contact-form textarea:focus { border-bottom-color:#ffc18c; box-shadow:0 3px 0 -2px #ffc18c; }
#contact-form #submit-btn { transition:background-color .2s,box-shadow .2s,border-color .2s; }
#contact-form #submit-btn:hover,#contact-form #submit-btn:focus-visible { background:#ff824c15; box-shadow:0 6px 24px #ff824c12; }
.primary-action:active,.gl-cta .gl-cta__btn:active { transform:translateY(1px); }
.gallery-controls button:active { transform:translateY(1px); }
@media(max-width:767px) {
 .service-motion-card:hover .material-symbols-outlined { transform:none; }
}
@media(prefers-reduced-motion:reduce) {
 [data-motion-slot]>.service-motion-card,[data-motion-slot]>.portrait-motion-frame,[data-motion-slot]>.gl-cta__in { opacity:1!important; transform:none!important; }
 .service-motion-card .material-symbols-outlined,.primary-action:active,.gl-cta .gl-cta__btn:active,.gallery-controls button:active { transform:none!important; }
 #site-header nav a::after { transition:none; }
}
