*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Montserrat,Noto Sans TC,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-bottom-\[14px\]{bottom:-14px}.-top-\[10\%\]{top:-10%}.bottom-4{bottom:1rem}.bottom-6{bottom:1.5rem}.bottom-7{bottom:1.75rem}.left-0{left:0}.left-4{left:1rem}.left-6{left:1.5rem}.right-4{right:1rem}.right-6{right:1.5rem}.top-4{top:1rem}.top-\[56px\]{top:56px}.top-full{top:100%}.z-0{z-index:0}.z-10{z-index:10}.z-40{z-index:40}.z-\[50\]{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.order-1{order:1}.order-2{order:2}.col-span-10{grid-column:span 10/span 10}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-7{grid-column:span 7/span 7}.col-span-9{grid-column:span 9/span 9}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-14{margin-top:3.5rem;margin-bottom:3.5rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-auto{margin-top:auto;margin-bottom:auto}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-20{margin-bottom:5rem}.mb-24{margin-bottom:6rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-7{margin-bottom:1.75rem}.mb-8{margin-bottom:2rem}.mb-9{margin-bottom:2.25rem}.ml-auto{margin-left:auto}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.\!grid{display:grid!important}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-\[16\/10\]{aspect-ratio:16/10}.aspect-\[16\/9\]{aspect-ratio:16/9}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-\[4\/5\]{aspect-ratio:4/5}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.h-14{height:3.5rem}.h-16{height:4rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-\[1\.4em\]{height:1.4em}.h-\[120\%\]{height:120%}.h-\[1px\]{height:1px}.h-\[58svh\]{height:58svh}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80svh\]{min-height:80svh}.min-h-\[80vh\]{min-height:80vh}.min-h-full{min-height:100%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-\[5em\]{width:5em}.w-\[78vw\]{width:78vw}.w-\[82vw\]{width:82vw}.w-\[88px\]{width:88px}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.max-w-0{max-width:0}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[14ch\]{max-width:14ch}.max-w-\[680px\]{max-width:680px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-screen-2xl{max-width:1536px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-bottom{transform-origin:bottom}.origin-center{transform-origin:center}.translate-x-0\.5{--tw-translate-x:0.125rem}.translate-x-0\.5,.translate-y-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y:1rem}.translate-y-8{--tw-translate-y:2rem}.translate-y-8,.translate-y-\[1px\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[1px\]{--tw-translate-y:1px}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.resize{resize:both}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-center{scroll-snap-align:center}.scroll-mt-24{scroll-margin-top:6rem}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[5px\]{gap:5px}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-12{row-gap:3rem}.gap-y-3{row-gap:.75rem}.gap-y-8{row-gap:2rem}.gap-y-9{row-gap:2.25rem}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(3rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-brand-brown\/15>:not([hidden])~:not([hidden]){border-color:rgba(59,38,29,.15)}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.text-wrap{text-wrap:wrap}.text-balance{text-wrap:balance}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.border{border-width:1px}.border-0{border-width:0}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-brand-beige\/70{border-color:hsla(30,43%,92%,.7)}.border-brand-beige\/80{border-color:hsla(30,43%,92%,.8)}.border-brand-brown{--tw-border-opacity:1;border-color:rgb(59 38 29/var(--tw-border-opacity,1))}.border-brand-brown\/10{border-color:rgba(59,38,29,.1)}.border-brand-brown\/15{border-color:rgba(59,38,29,.15)}.border-brand-brown\/20{border-color:rgba(59,38,29,.2)}.border-brand-brown\/25{border-color:rgba(59,38,29,.25)}.border-brand-brown\/30{border-color:rgba(59,38,29,.3)}.border-brand-terracotta{--tw-border-opacity:1;border-color:rgb(166 75 42/var(--tw-border-opacity,1))}.border-brand-terracotta\/30{border-color:rgba(166,75,42,.3)}.border-current{border-color:currentColor}.border-transparent{border-color:transparent}.bg-\[\#111111\]{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity,1))}.bg-\[\#E5D5C5\]{--tw-bg-opacity:1;background-color:rgb(229 213 197/var(--tw-bg-opacity,1))}.bg-\[\#FDFBF9\]{--tw-bg-opacity:1;background-color:rgb(253 251 249/var(--tw-bg-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-brand-beige{--tw-bg-opacity:1;background-color:rgb(243 234 225/var(--tw-bg-opacity,1))}.bg-brand-beige\/40{background-color:hsla(30,43%,92%,.4)}.bg-brand-brown{--tw-bg-opacity:1;background-color:rgb(59 38 29/var(--tw-bg-opacity,1))}.bg-brand-brown\/25{background-color:rgba(59,38,29,.25)}.bg-brand-brown\/30{background-color:rgba(59,38,29,.3)}.bg-brand-brown\/5{background-color:rgba(59,38,29,.05)}.bg-brand-brown\/85{background-color:rgba(59,38,29,.85)}.bg-brand-terracotta{--tw-bg-opacity:1;background-color:rgb(166 75 42/var(--tw-bg-opacity,1))}.bg-brand-terracotta\/10{background-color:rgba(166,75,42,.1)}.bg-brand-terracotta\/50{background-color:rgba(166,75,42,.5)}.bg-current{background-color:currentColor}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-brand-brown\/55{--tw-gradient-from:rgba(59,38,29,.55) var(--tw-gradient-from-position);--tw-gradient-to:rgba(59,38,29,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),transparent var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.fill-brand-beige{fill:#f3eae1}.object-cover{-o-object-fit:cover;object-fit:cover}.p-10{padding:2.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-2{padding-left:.5rem;padding-right:.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-14{padding-bottom:3.5rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-32{padding-bottom:8rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pr-1{padding-right:.25rem}.pr-\[12vw\]{padding-right:12vw}.pt-10{padding-top:2.5rem}.pt-14{padding-top:3.5rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-20{padding-top:5rem}.pt-28{padding-top:7rem}.pt-3{padding-top:.75rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Montserrat,Noto Sans TC,sans-serif}.font-script{font-family:Mea Culpa,cursive}.font-serif{font-family:Baskervville,"Cactus Classical Serif",serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[1\.05rem\]{font-size:1.05rem}.text-\[1\.25rem\]{font-size:1.25rem}.text-\[1\.2rem\]{font-size:1.2rem}.text-\[1\.35rem\]{font-size:1.35rem}.text-\[1\.5rem\]{font-size:1.5rem}.text-\[1\.6rem\]{font-size:1.6rem}.text-\[1\.85rem\]{font-size:1.85rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[2\.5rem\]{font-size:2.5rem}.text-\[2\.75rem\]{font-size:2.75rem}.text-\[2rem\]{font-size:2rem}.text-\[3\.25rem\]{font-size:3.25rem}.text-\[3rem\]{font-size:3rem}.text-\[4rem\]{font-size:4rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.not-italic{font-style:normal}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[0\.8\]{line-height:.8}.leading-\[0\.92\]{line-height:.92}.leading-\[0\.95\]{line-height:.95}.leading-\[1\.02\]{line-height:1.02}.leading-\[1\.04\]{line-height:1.04}.leading-\[1\.05\]{line-height:1.05}.leading-\[1\.15\]{line-height:1.15}.leading-\[1\.1\]{line-height:1.1}.leading-\[1\.25\]{line-height:1.25}.leading-\[1\.2\]{line-height:1.2}.leading-\[1\.3\]{line-height:1.3}.leading-\[1\.4\]{line-height:1.4}.leading-\[1\.55\]{line-height:1.55}.leading-\[1\.6\]{line-height:1.6}.leading-\[1\.7\]{line-height:1.7}.leading-\[1\.85\]{line-height:1.85}.leading-\[1\.8\]{line-height:1.8}.leading-\[1\.9\]{line-height:1.9}.leading-\[2\]{line-height:2}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.06em\]{letter-spacing:.06em}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.22em\]{letter-spacing:.22em}.tracking-\[0\.24em\]{letter-spacing:.24em}.tracking-\[0\.25em\]{letter-spacing:.25em}.tracking-\[0\.28em\]{letter-spacing:.28em}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-\[0\.32em\]{letter-spacing:.32em}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-brand-beige{--tw-text-opacity:1;color:rgb(243 234 225/var(--tw-text-opacity,1))}.text-brand-beige\/70{color:hsla(30,43%,92%,.7)}.text-brand-beige\/85{color:hsla(30,43%,92%,.85)}.text-brand-brown{--tw-text-opacity:1;color:rgb(59 38 29/var(--tw-text-opacity,1))}.text-brand-brown\/40{color:rgba(59,38,29,.4)}.text-brand-brown\/45{color:rgba(59,38,29,.45)}.text-brand-brown\/50{color:rgba(59,38,29,.5)}.text-brand-brown\/55{color:rgba(59,38,29,.55)}.text-brand-brown\/60{color:rgba(59,38,29,.6)}.text-brand-brown\/65{color:rgba(59,38,29,.65)}.text-brand-brown\/70{color:rgba(59,38,29,.7)}.text-brand-brown\/75{color:rgba(59,38,29,.75)}.text-brand-brown\/80{color:rgba(59,38,29,.8)}.text-brand-brown\/85{color:rgba(59,38,29,.85)}.text-brand-terracotta{--tw-text-opacity:1;color:rgb(166 75 42/var(--tw-text-opacity,1))}.text-current{color:currentColor}.underline{text-decoration-line:underline}.decoration-1{text-decoration-thickness:1px}.underline-offset-\[8px\]{text-underline-offset:8px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-brand-terracotta{accent-color:#a64b2a}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\[0_4px_20px_rgba\(59\2c 38\2c 29\2c 0\.08\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(59\2c 38\2c 29\2c 0\.08\)\]{--tw-shadow:0 4px 20px rgba(59,38,29,.08);--tw-shadow-colored:0 4px 20px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px)}.blur,.brightness-95{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)}.brightness-95{--tw-brightness:brightness(.95)}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale,.sepia{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)}.sepia{--tw-sepia:sepia(100%)}.sepia-\[0\.15\]{--tw-sepia:sepia(0.15)}.filter,.sepia-\[0\.15\]{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)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-md,.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-\[cubic-bezier\(0\.25\2c 1\2c 0\.35\2c 1\)\]{transition-timing-function:cubic-bezier(.25,1,.35,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[hostname\:port\]{hostname:port}.selection\:bg-brand-terracotta ::-moz-selection{--tw-bg-opacity:1;background-color:rgb(166 75 42/var(--tw-bg-opacity,1))}.selection\:bg-brand-terracotta ::selection{--tw-bg-opacity:1;background-color:rgb(166 75 42/var(--tw-bg-opacity,1))}.selection\:text-white ::-moz-selection{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.selection\:text-white ::selection{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.selection\:bg-brand-terracotta::-moz-selection{--tw-bg-opacity:1;background-color:rgb(166 75 42/var(--tw-bg-opacity,1))}.selection\:bg-brand-terracotta::selection{--tw-bg-opacity:1;background-color:rgb(166 75 42/var(--tw-bg-opacity,1))}.selection\:text-white::-moz-selection{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.selection\:text-white::selection{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:border-brand-terracotta:hover{--tw-border-opacity:1;border-color:rgb(166 75 42/var(--tw-border-opacity,1))}.hover\:bg-brand-brown\/5:hover{background-color:rgba(59,38,29,.05)}.hover\:bg-brand-terracotta:hover{--tw-bg-opacity:1;background-color:rgb(166 75 42/var(--tw-bg-opacity,1))}.hover\:text-brand-brown:hover{--tw-text-opacity:1;color:rgb(59 38 29/var(--tw-text-opacity,1))}.hover\:text-brand-terracotta:hover{--tw-text-opacity:1;color:rgb(166 75 42/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-\[0_4px_20px_rgba\(166\2c 75\2c 42\2c 0\.15\)\]:hover{--tw-shadow:0 4px 20px rgba(166,75,42,.15);--tw-shadow-colored:0 4px 20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:border-brand-terracotta:focus{--tw-border-opacity:1;border-color:rgb(166 75 42/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.active\:bg-brand-brown\/5:active{background-color:rgba(59,38,29,.05)}.group:hover .group-hover\:max-w-xs{max-width:20rem}.group:hover .group-hover\:translate-x-1,.group\/btn:hover .group-hover\/btn\:translate-x-1,.group\/it:hover .group-hover\/it\:translate-x-1{--tw-translate-x:0.25rem}.group:hover .group-hover\:translate-x-1,.group:hover .group-hover\:translate-x-2,.group\/btn:hover .group-hover\/btn\:translate-x-1,.group\/it:hover .group-hover\/it\:translate-x-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-2{--tw-translate-x:0.5rem}.group:hover .group-hover\:translate-y-1{--tw-translate-y:0.25rem}.group:hover .group-hover\:scale-105,.group:hover .group-hover\:translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05}.group:hover .group-hover\:scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-brand-terracotta,.group\/it:hover .group-hover\/it\:text-brand-terracotta{--tw-text-opacity:1;color:rgb(166 75 42/var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width:640px){.sm\:block{display:block}.sm\:inline{display:inline}.sm\:h-\[60vh\]{height:60vh}.sm\:w-\[60vw\]{width:60vw}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:gap-8{gap:2rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-6xl{font-size:3.75rem;line-height:1}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width:768px){.md\:sticky{position:sticky}.md\:-bottom-\[18px\]{bottom:-18px}.md\:bottom-10{bottom:2.5rem}.md\:bottom-8{bottom:2rem}.md\:left-10{left:2.5rem}.md\:right-10{right:2.5rem}.md\:top-28{top:7rem}.md\:top-32{top:8rem}.md\:top-8{top:2rem}.md\:top-\[80px\]{top:80px}.md\:order-1{order:1}.md\:order-2{order:2}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-10{grid-column:span 10/span 10}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-7{grid-column:span 7/span 7}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-start-1{grid-column-start:1}.md\:col-start-10{grid-column-start:10}.md\:col-start-11{grid-column-start:11}.md\:col-start-2{grid-column-start:2}.md\:col-start-3{grid-column-start:3}.md\:col-start-5{grid-column-start:5}.md\:col-start-6{grid-column-start:6}.md\:col-start-7{grid-column-start:7}.md\:col-start-8{grid-column-start:8}.md\:col-start-9{grid-column-start:9}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-20{margin-top:5rem;margin-bottom:5rem}.md\:my-7{margin-top:1.75rem;margin-bottom:1.75rem}.md\:-mt-12{margin-top:-3rem}.md\:mb-0{margin-bottom:0}.md\:mb-10{margin-bottom:2.5rem}.md\:mb-12{margin-bottom:3rem}.md\:mb-14{margin-bottom:3.5rem}.md\:mb-16{margin-bottom:4rem}.md\:mb-2{margin-bottom:.5rem}.md\:mb-20{margin-bottom:5rem}.md\:mb-24{margin-bottom:6rem}.md\:mb-3{margin-bottom:.75rem}.md\:mb-32{margin-bottom:8rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-40{margin-bottom:10rem}.md\:mb-5{margin-bottom:1.25rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-7{margin-bottom:1.75rem}.md\:mb-8{margin-bottom:2rem}.md\:mb-9{margin-bottom:2.25rem}.md\:mt-0{margin-top:0}.md\:mt-10{margin-top:2.5rem}.md\:mt-12{margin-top:3rem}.md\:mt-16{margin-top:4rem}.md\:mt-2{margin-top:.5rem}.md\:mt-20{margin-top:5rem}.md\:mt-24{margin-top:6rem}.md\:mt-3{margin-top:.75rem}.md\:mt-32{margin-top:8rem}.md\:mt-4{margin-top:1rem}.md\:mt-6{margin-top:1.5rem}.md\:mt-7{margin-top:1.75rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:aspect-\[21\/8\]{aspect-ratio:21/8}.md\:aspect-\[3\/1\]{aspect-ratio:3/1}.md\:aspect-auto{aspect-ratio:auto}.md\:h-16{height:4rem}.md\:h-20{height:5rem}.md\:h-8{height:2rem}.md\:h-\[80vh\]{height:80vh}.md\:min-h-\[100svh\]{min-height:100svh}.md\:min-h-\[560px\]{min-height:560px}.md\:min-h-screen{min-height:100vh}.md\:w-16{width:4rem}.md\:w-20{width:5rem}.md\:w-5\/12{width:41.666667%}.md\:w-6\/12{width:50%}.md\:w-8{width:2rem}.md\:w-\[112px\]{width:112px}.md\:w-\[480px\]{width:480px}.md\:w-auto{width:auto}.md\:snap-none{scroll-snap-type:none}.md\:snap-align-none{scroll-snap-align:none}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:gap-0{gap:0}.md\:gap-10{gap:2.5rem}.md\:gap-12{gap:3rem}.md\:gap-14{gap:3.5rem}.md\:gap-16{gap:4rem}.md\:gap-20{gap:5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:gap-8{gap:2rem}.md\:gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.md\:gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.md\:gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.md\:gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.md\:gap-y-12{row-gap:3rem}.md\:space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem*var(--tw-space-y-reverse))}.md\:space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(4rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4rem*var(--tw-space-y-reverse))}.md\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.md\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.md\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.md\:space-y-9>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.25rem*var(--tw-space-y-reverse))}.md\:self-start{align-self:flex-start}.md\:overflow-visible{overflow:visible}.md\:border-l{border-left-width:1px}.md\:border-brand-brown\/15{border-color:rgba(59,38,29,.15)}.md\:p-12{padding:3rem}.md\:p-5{padding:1.25rem}.md\:p-8{padding:2rem}.md\:px-0{padding-left:0;padding-right:0}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}.md\:px-12{padding-left:3rem;padding-right:3rem}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:py-11{padding-top:2.75rem;padding-bottom:2.75rem}.md\:py-16{padding-top:4rem;padding-bottom:4rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:py-24{padding-top:6rem;padding-bottom:6rem}.md\:py-28{padding-top:7rem;padding-bottom:7rem}.md\:py-3{padding-top:.75rem;padding-bottom:.75rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:py-4{padding-top:1rem;padding-bottom:1rem}.md\:py-40{padding-top:10rem;padding-bottom:10rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}.md\:pb-0{padding-bottom:0}.md\:pb-12{padding-bottom:3rem}.md\:pb-14{padding-bottom:3.5rem}.md\:pb-16{padding-bottom:4rem}.md\:pb-20{padding-bottom:5rem}.md\:pb-24{padding-bottom:6rem}.md\:pb-28{padding-bottom:7rem}.md\:pb-32{padding-bottom:8rem}.md\:pb-48{padding-bottom:12rem}.md\:pl-10{padding-left:2.5rem}.md\:pl-12{padding-left:3rem}.md\:pl-6{padding-left:1.5rem}.md\:pl-8{padding-left:2rem}.md\:pr-\[20vw\]{padding-right:20vw}.md\:pt-12{padding-top:3rem}.md\:pt-14{padding-top:3.5rem}.md\:pt-16{padding-top:4rem}.md\:pt-24{padding-top:6rem}.md\:pt-28{padding-top:7rem}.md\:pt-32{padding-top:8rem}.md\:pt-36{padding-top:9rem}.md\:pt-4{padding-top:1rem}.md\:pt-40{padding-top:10rem}.md\:pt-44{padding-top:11rem}.md\:pt-5{padding-top:1.25rem}.md\:pt-6{padding-top:1.5rem}.md\:pt-8{padding-top:2rem}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}.md\:text-\[1\.75rem\]{font-size:1.75rem}.md\:text-\[11px\]{font-size:11px}.md\:text-\[2\.4rem\]{font-size:2.4rem}.md\:text-\[2\.6rem\]{font-size:2.6rem}.md\:text-\[9rem\]{font-size:9rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:text-xs{font-size:.75rem;line-height:1rem}.md\:leading-\[1\.05\]{line-height:1.05}.md\:leading-\[1\.2\]{line-height:1.2}.md\:leading-\[1\.35\]{line-height:1.35}.md\:leading-\[1\.55\]{line-height:1.55}.md\:leading-\[1\.8\]{line-height:1.8}.md\:leading-\[1\.9\]{line-height:1.9}.md\:leading-\[2\.1\]{line-height:2.1}.md\:leading-loose{line-height:2}.md\:first\:border-l-0:first-child{border-left-width:0}}@media (min-width:1024px){.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-start-5{grid-column-start:5}.lg\:mt-48{margin-top:12rem}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:gap-12{gap:3rem}.lg\:gap-14{gap:3.5rem}.lg\:gap-16{gap:4rem}.lg\:gap-20{gap:5rem}.lg\:px-14{padding-left:3.5rem;padding-right:3.5rem}.lg\:py-20{padding-top:5rem;padding-bottom:5rem}.lg\:pl-14{padding-left:3.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg\:text-5xl{font-size:3rem;line-height:1}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-\[1\.75rem\]{font-size:1.75rem}.lg\:text-\[11rem\]{font-size:11rem}.lg\:text-\[2\.25rem\]{font-size:2.25rem}.lg\:text-\[2\.4rem\]{font-size:2.4rem}.lg\:text-\[2\.6rem\]{font-size:2.6rem}.lg\:text-\[3\.4rem\]{font-size:3.4rem}.lg\:text-\[3rem\]{font-size:3rem}.lg\:text-\[4\.5rem\]{font-size:4.5rem}.lg\:text-\[5rem\]{font-size:5rem}.lg\:text-\[6rem\]{font-size:6rem}.lg\:text-\[7\.5rem\]{font-size:7.5rem}.lg\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media (min-width:1280px){.xl\:text-\[5\.5rem\]{font-size:5.5rem}}.\[\&_iframe\]\:h-full iframe{height:100%}.\[\&_iframe\]\:w-full iframe{width:100%}

/* ============ Scent.M custom theme CSS ============ */
/* ===== 404.html ===== */
/* ───── 全局設定 ───── */
        :root {
            --ease: cubic-bezier(0.25, 1, 0.35, 1);
            --morph-target-color: #A64B2A;
            --safe-bottom: env(safe-area-inset-bottom, 0px);
        }
        
        html.lenis, html.lenis body { height: auto; }
        .lenis.lenis-smooth { scroll-behavior: auto !important; }
        .lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
        .lenis.lenis-stopped { overflow: hidden; }

        html { overflow-x: clip; }
        @supports not (overflow: clip) {
            html { overflow-x: hidden; }
        }

        body {
            transition: background-color 0.45s ease, color 0.45s ease;
            background-color: #FDFBF9; 
            color: #3B261D;
            -webkit-tap-highlight-color: transparent;
        }

        /* iOS Safari momentum scroll on horizontal carousels */
        .h-snap {
            -webkit-overflow-scrolling: touch;
            overscroll-behavior-x: contain;
            touch-action: pan-x pan-y;
            scroll-behavior: smooth;
        }
        /* Center-snap "tug" — release auto-pulls active item to viewport center */
        @media (max-width: 767px) {
            [data-carousel] > * { scroll-snap-stop: always; }
            /* Match actual padding to scroll-padding so first/last cards centre properly */
            [data-carousel="odm"] {
                scroll-padding-inline: 7vw;
                padding-left: 7vw !important;
                padding-right: 7vw !important;
            }
            [data-carousel="journal"] {
                scroll-padding-inline: 9vw;
                padding-left: 9vw !important;
                padding-right: 9vw !important;
            }
            [data-carousel="workshops"] {
                scroll-padding-inline: 11vw;
                padding-left: 11vw !important;
                padding-right: 11vw !important;
            }
            /* ODM card: stack title + badge so neither cuts off, equalise paragraph height */
            [data-carousel="odm"] article > .flex {
                flex-direction: column;
                align-items: flex-start;
                gap: 0.4rem;
                margin-bottom: 1.1rem;
            }
            [data-carousel="odm"] article h3 {
                font-size: 1.65rem;
                line-height: 1.15;
            }
            [data-carousel="odm"] article p {
                display: -webkit-box;
                -webkit-line-clamp: 3;
            }
        }

        /* ───── ODM Scroll-story (desktop only) ───── */
        @media (min-width: 768px) {
            [data-carousel="odm"] article {
                opacity: 0.42;
                transition: opacity 0.7s cubic-bezier(0.25,1,0.35,1);
            }
            [data-carousel="odm"] article.is-active {
                opacity: 1;
            }
            .odm-now {
                margin-top: 2.25rem;
                padding-top: 1.5rem;
                border-top: 1px solid rgba(59,38,29,0.14);
            }
            .odm-now-label {
                font-size: 11px;
                letter-spacing: 0.28em;
                text-transform: uppercase;
                opacity: 0.5;
                font-weight: 500;
                margin-bottom: 0.9rem;
                display: block;
            }
            .odm-now-content {
                transition: opacity 0.45s cubic-bezier(0.25,1,0.35,1), transform 0.45s cubic-bezier(0.25,1,0.35,1);
            }
            .odm-now-content.swap {
                opacity: 0;
                transform: translateY(6px);
            }
            .odm-now-roman {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                color: #A64B2A;
                font-size: 1.05rem;
                letter-spacing: 0.05em;
                margin-right: 0.5rem;
            }
            .odm-now-title {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                font-size: 1.35rem;
                line-height: 1.25;
                color: inherit;
                display: inline;
            }
            .odm-now-tagline {
                font-size: 0.78rem;
                letter-spacing: 0.18em;
                text-transform: uppercase;
                opacity: 0.55;
                margin-top: 0.55rem;
                display: block;
            }
            .odm-now-progress {
                display: flex;
                gap: 0.4rem;
                margin-top: 1.1rem;
            }
            .odm-now-progress span {
                width: 18px;
                height: 1px;
                background: rgba(59,38,29,0.2);
                transition: background 0.5s ease, width 0.5s ease;
            }
            .odm-now-progress span.on {
                background: #A64B2A;
                width: 28px;
            }
        }

        .hero-img { transform: scale(1.15); }
        .film-filter { filter: contrast(1.05) sepia(0.15) brightness(0.95); }

        body.in-terracotta {
            background-color: #A64B2A;
            color: #F3EAE1;
            --morph-target-color: #F3EAE1;
        }
        /* 橙色背景下，hover 變橙色會睇唔到 —
           改為反向處理：hover 變深啡，與米色預設文字形成強烈對比，呼應品牌色階 */
        body.in-terracotta .group:hover .group-hover\:text-brand-terracotta,
        body.in-terracotta .hover\:text-brand-terracotta:hover {
            color: #3B261D !important;
        }
        body.in-terracotta .hover\:border-brand-terracotta:hover {
            border-color: #3B261D !important;
        }
        body.in-terracotta .group:hover .group-hover\:border-brand-terracotta {
            border-color: #3B261D !important;
        }
        
        #main-header {
            color: #3B261D; 
            transition: padding 0.4s var(--ease), background-color 0.4s ease, color 0.4s ease;
        }
        #main-header.is-scrolled {
            padding-top: 1.5rem;
            padding-bottom: 1.5rem;
            background-color: rgba(253, 251, 249, 0.95);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
        }
        @media (max-width: 767px) {
            #main-header.is-scrolled {
                padding-top: 1rem;
                padding-bottom: 1rem;
            }
        }
        body.in-terracotta #main-header.is-scrolled { background-color: rgba(166, 75, 42, 0.95); }
        body.in-brown #main-header.is-scrolled { background-color: rgba(59, 38, 29, 0.95); color: #F3EAE1; }

        body.menu-open #main-header { 
            background-color: #111111 !important;
            transition: background-color 0.35s ease; 
            color: #F3EAE1 !important; 
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
            border-bottom: 1px solid rgba(255,255,255,0.1);
        }
        body.menu-open .line-1, body.menu-open .line-2 { background-color: #F3EAE1 !important; }
        /* 選單高過矮 viewport → overlay 內原生滾動（data-lenis-prevent 令停咗嘅 Lenis 放行）；contain 防 rubber-band 傳去背景頁 */
        #fullscreen-menu { overscroll-behavior: contain; user-select: none; -webkit-user-select: none; scrollbar-width: none; }
        #fullscreen-menu::-webkit-scrollbar { display: none; }

        /* ───── Scroll Reveal ───── */
        .ani-this { transition: transform 0.8s var(--ease), opacity 0.8s var(--ease); }
        .ani-this.bottom-in { transform: translateY(40px); opacity: 0; }
        .ani-this.left-in   { transform: translateX(-40px); opacity: 0; }
        .ani-this.in { transform: translate(0, 0) !important; opacity: 1 !important; }
        .delay-1 { transition-delay: 0.1s; }
        .delay-2 { transition-delay: 0.2s; }
        .delay-3 { transition-delay: 0.3s; }
        .delay-4 { transition-delay: 0.4s; }

        .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
        .hover-scale-img { will-change: transform; }

        .text-balance { text-wrap: balance; }

        /* 隱藏 Scrollbar */
        .hide-scrollbar {
            -ms-overflow-style: none;
            scrollbar-width: none;
        }
        .hide-scrollbar::-webkit-scrollbar {
            display: none;
        }

        /* ───── Hibi Lab wordmark (inherits currentColor for scroll theme swap) ───── */
        .hibi-mark {
            display: inline-block;
            width: clamp(160px, 22vw, 320px);
            aspect-ratio: 600 / 338;
            background-color: currentColor;
            -webkit-mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
                    mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
        }

        /* ───── Fluid Typography (Utopia-style: anchor 768→1600, plateau past 1600) ─────
           Only kicks in ≥ 768px so mobile sizes stay intact.
           Calibrated against Aesop / Le Labo / luxury editorial baselines.
        */
        @media (min-width: 768px) {
            .fluid-display     { font-size: clamp(3.5rem,  2.12rem + 2.88vw, 5rem)    !important; }
            .fluid-display-md  { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-h2          { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-h3-card     { font-size: clamp(1.75rem, 1.29rem + 0.96vw, 2.25rem) !important; }
            .fluid-script-lg   { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-script-xl   { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-body-lg     { font-size: clamp(1.05rem, 0.96rem + 0.19vw, 1.2rem)  !important; }
            .fluid-quote       { font-size: clamp(2.5rem,  1.12rem + 2.88vw, 4rem)    !important; }
        }

                /* 純 CSS Morph */
        .css-morph-container {
            display: inline-flex;
            position: relative;
            vertical-align: bottom;
        }

        .css-morph-char {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            height: 1.6em;
        }

        .css-morph-top {
            display: inline-block;
            transform-origin: bottom;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
            line-height: 1;
        }

        .css-morph-bottom {
            position: absolute;
            left: 0;
            display: inline-block;
            transform-origin: top;
            transform: scaleY(0) translateY(-4%);
            color: var(--morph-target-color, #A64B2A);
            font-family: Baskervville, "Cactus Classical Serif", serif;
            font-style: italic;
            font-size: 1.25em;
            line-height: 1;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
        }

        .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: scaleY(0); }
        .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(1) translateY(-4%); }

        /* 觸控裝置上停用 hover morph，避免 tap 後仍卡住 */
        @media (hover: none) {
            .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: none; }
            .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(0) translateY(-4%); }
        }


        /* ─── Mobile-only refinements (DO NOT touch md+) ─── */
        @media (max-width: 767px) {
            /* 防止橫向溢出 */
            body { overflow-x: hidden; }

            /* 手機版 Hero - 維持比例但更克制留白 */
            .hero-mobile-meta {
                font-feature-settings: "kern" 1, "liga" 1;
            }

            /* 手機版 Carousel 進度指示器 */
            .mobile-progress {
                position: relative;
                width: 56px;
                height: 1px;
                background: rgba(59, 38, 29, 0.15);
                overflow: hidden;
            }
            body.in-brown .mobile-progress { background: rgba(243, 234, 225, 0.2); }
            body.in-terracotta .mobile-progress { background: rgba(243, 234, 225, 0.25); }
            .mobile-progress-fill {
                position: absolute;
                inset: 0;
                background: #A64B2A;
                transform-origin: left center;
                transform: scaleX(0);
                transition: transform 0.5s cubic-bezier(0.25, 1, 0.35, 1);
            }

            /* 手機 carousel slide hover-on-tap → focus-visible 視覺 */
            .h-snap > *:active .hover-scale-img {
                transform: scale(1.03);
                transition: transform 0.4s ease-out;
            }

            /* 浮動 WhatsApp 在手機放大且更易按 */
            .wa-float {
                bottom: calc(1.25rem + var(--safe-bottom));
            }
        }

        @media (min-width: 768px) {
            #mobile-anchor-bar { display: none; }
            .mobile-only-block { display: none !important; }
        }

        /* Pull‑indicator (僅手機 carousel 邊緣指示) */
        /* ───── Editorial drop cap (CSS initial-letter w/ float fallback) ───── */
        .essay-dropcap::first-letter {
            font-family: Baskervville, "Cactus Classical Serif", serif;
            font-style: italic;
            color: #A64B2A;
            font-weight: 400;
            -webkit-initial-letter: 3 2;
                    initial-letter: 3 2;
            margin-right: 0.4rem;
        }
        @supports not ((initial-letter: 3) or (-webkit-initial-letter: 3)) {
            .essay-dropcap::first-letter {
                float: left;
                font-size: 5.5em;
                line-height: 0.82;
                margin-top: 0.02em;
                margin-right: 0.5rem;
                margin-bottom: -0.1em;
            }
            @media (min-width: 768px) {
                .essay-dropcap::first-letter { font-size: 6.2em; }
            }
        }

        .edge-fade-r {
            background: linear-gradient(to left, rgba(253,251,249,1), rgba(253,251,249,0));
        }
        body.in-brown .edge-fade-r {
            background: linear-gradient(to left, rgba(59,38,29,1), rgba(59,38,29,0));
        }

        /* 手機 Hero CTA tappable 強化 */
        @media (max-width: 767px) {
            .hero-cta-primary, .hero-cta-secondary {
                min-height: 48px;
                display: inline-flex;
                align-items: center;
            }
        }

/* ===== index.html ===== */
/* ───── 全局設定 ───── */
        :root {
            --ease: cubic-bezier(0.25, 1, 0.35, 1);
            --morph-target-color: #A64B2A;
            --safe-bottom: env(safe-area-inset-bottom, 0px);
        }
        
        html.lenis, html.lenis body { height: auto; }
        .lenis.lenis-smooth { scroll-behavior: auto !important; }
        .lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
        .lenis.lenis-stopped { overflow: hidden; }

        html { overflow-x: clip; }
        @supports not (overflow: clip) {
            html { overflow-x: hidden; }
        }

        body {
            transition: background-color 0.45s ease, color 0.45s ease;
            background-color: #FDFBF9; 
            color: #3B261D;
            -webkit-tap-highlight-color: transparent;
        }

        /* iOS Safari momentum scroll on horizontal carousels */
        .h-snap {
            -webkit-overflow-scrolling: touch;
            overscroll-behavior-x: contain;
            touch-action: pan-x pan-y;
            scroll-behavior: smooth;
        }
        /* Center-snap "tug" — release auto-pulls active item to viewport center */
        @media (max-width: 767px) {
            [data-carousel] > * { scroll-snap-stop: always; }
            /* Match actual padding to scroll-padding so first/last cards centre properly */
            [data-carousel="odm"] {
                scroll-padding-inline: 7vw;
                padding-left: 7vw !important;
                padding-right: 7vw !important;
            }
            [data-carousel="journal"] {
                scroll-padding-inline: 9vw;
                padding-left: 9vw !important;
                padding-right: 9vw !important;
            }
            [data-carousel="workshops"] {
                scroll-padding-inline: 11vw;
                padding-left: 11vw !important;
                padding-right: 11vw !important;
            }
            /* ODM card: stack title + badge so neither cuts off, equalise paragraph height */
            [data-carousel="odm"] article > .flex {
                flex-direction: column;
                align-items: flex-start;
                gap: 0.4rem;
                margin-bottom: 1.1rem;
            }
            [data-carousel="odm"] article h3 {
                font-size: 1.65rem;
                line-height: 1.15;
            }
            [data-carousel="odm"] article p {
                display: -webkit-box;
                -webkit-line-clamp: 3;
            }
        }

        /* ───── ODM Scroll-story (desktop only) ───── */
        @media (min-width: 768px) {
            [data-carousel="odm"] article {
                opacity: 0.42;
                transition: opacity 0.7s cubic-bezier(0.25,1,0.35,1);
            }
            [data-carousel="odm"] article.is-active {
                opacity: 1;
            }
            .odm-now {
                margin-top: 2.25rem;
                padding-top: 1.5rem;
                border-top: 1px solid rgba(59,38,29,0.14);
            }
            .odm-now-label {
                font-size: 11px;
                letter-spacing: 0.28em;
                text-transform: uppercase;
                opacity: 0.5;
                font-weight: 500;
                margin-bottom: 0.9rem;
                display: block;
            }
            .odm-now-content {
                transition: opacity 0.45s cubic-bezier(0.25,1,0.35,1), transform 0.45s cubic-bezier(0.25,1,0.35,1);
            }
            .odm-now-content.swap {
                opacity: 0;
                transform: translateY(6px);
            }
            .odm-now-roman {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                color: #A64B2A;
                font-size: 1.05rem;
                letter-spacing: 0.05em;
                margin-right: 0.5rem;
            }
            .odm-now-title {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                font-size: 1.35rem;
                line-height: 1.25;
                color: inherit;
                display: inline;
            }
            .odm-now-tagline {
                font-size: 0.78rem;
                letter-spacing: 0.18em;
                text-transform: uppercase;
                opacity: 0.55;
                margin-top: 0.55rem;
                display: block;
            }
            .odm-now-progress {
                display: flex;
                gap: 0.4rem;
                margin-top: 1.1rem;
            }
            .odm-now-progress span {
                width: 18px;
                height: 1px;
                background: rgba(59,38,29,0.2);
                transition: background 0.5s ease, width 0.5s ease;
            }
            .odm-now-progress span.on {
                background: #A64B2A;
                width: 28px;
            }
        }

        .hero-img { transform: scale(1.15); }
        .film-filter { filter: contrast(1.05) sepia(0.15) brightness(0.95); }

        body.in-terracotta {
            background-color: #A64B2A;
            color: #F3EAE1;
            --morph-target-color: #F3EAE1;
        }
        /* 橙色背景下，hover 變橙色會睇唔到 —
           改為反向處理：hover 變深啡，與米色預設文字形成強烈對比，呼應品牌色階 */
        body.in-terracotta .group:hover .group-hover\:text-brand-terracotta,
        body.in-terracotta .hover\:text-brand-terracotta:hover {
            color: #3B261D !important;
        }
        body.in-terracotta .hover\:border-brand-terracotta:hover {
            border-color: #3B261D !important;
        }
        body.in-terracotta .group:hover .group-hover\:border-brand-terracotta {
            border-color: #3B261D !important;
        }
        
        #main-header {
            color: #3B261D; 
            transition: padding 0.4s var(--ease), background-color 0.4s ease, color 0.4s ease;
        }
        #main-header.is-scrolled {
            padding-top: 1.5rem;
            padding-bottom: 1.5rem;
            background-color: rgba(253, 251, 249, 0.95);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
        }
        @media (max-width: 767px) {
            #main-header.is-scrolled {
                padding-top: 1rem;
                padding-bottom: 1rem;
            }
        }
        body.in-terracotta #main-header.is-scrolled { background-color: rgba(166, 75, 42, 0.95); }
        body.in-brown #main-header.is-scrolled { background-color: rgba(59, 38, 29, 0.95); color: #F3EAE1; }

        body.menu-open #main-header { 
            background-color: #111111 !important;
            transition: background-color 0.35s ease; 
            color: #F3EAE1 !important; 
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
            border-bottom: 1px solid rgba(255,255,255,0.1);
        }
        body.menu-open .line-1, body.menu-open .line-2 { background-color: #F3EAE1 !important; }
        /* 選單高過矮 viewport → overlay 內原生滾動（data-lenis-prevent 令停咗嘅 Lenis 放行）；contain 防 rubber-band 傳去背景頁 */
        #fullscreen-menu { overscroll-behavior: contain; user-select: none; -webkit-user-select: none; scrollbar-width: none; }
        #fullscreen-menu::-webkit-scrollbar { display: none; }

        /* ───── Scroll Reveal ───── */
        .ani-this { transition: transform 0.8s var(--ease), opacity 0.8s var(--ease); }
        .ani-this.bottom-in { transform: translateY(40px); opacity: 0; }
        .ani-this.left-in   { transform: translateX(-40px); opacity: 0; }
        .ani-this.in { transform: translate(0, 0) !important; opacity: 1 !important; }
        .delay-1 { transition-delay: 0.1s; }
        .delay-2 { transition-delay: 0.2s; }
        .delay-3 { transition-delay: 0.3s; }
        .delay-4 { transition-delay: 0.4s; }

        .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
        .hover-scale-img { will-change: transform; }

        .text-balance { text-wrap: balance; }

        /* 隱藏 Scrollbar */
        .hide-scrollbar {
            -ms-overflow-style: none;
            scrollbar-width: none;
        }
        .hide-scrollbar::-webkit-scrollbar {
            display: none;
        }

        /* ───── Hibi Lab wordmark (inherits currentColor for scroll theme swap) ───── */
        .hibi-mark {
            display: inline-block;
            width: clamp(160px, 22vw, 320px);
            aspect-ratio: 600 / 338;
            background-color: currentColor;
            -webkit-mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
                    mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
        }

        /* ───── Fluid Typography (Utopia-style: anchor 768→1600, plateau past 1600) ─────
           Only kicks in ≥ 768px so mobile sizes stay intact.
           Calibrated against Aesop / Le Labo / luxury editorial baselines.
        */
        @media (min-width: 768px) {
            .fluid-display     { font-size: clamp(3.5rem,  2.12rem + 2.88vw, 5rem)    !important; }
            .fluid-display-md  { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-h2          { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-h3-card     { font-size: clamp(1.75rem, 1.29rem + 0.96vw, 2.25rem) !important; }
            .fluid-script-lg   { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-script-xl   { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-body-lg     { font-size: clamp(1.05rem, 0.96rem + 0.19vw, 1.2rem)  !important; }
            .fluid-quote       { font-size: clamp(2.5rem,  1.12rem + 2.88vw, 4rem)    !important; }
        }

                /* 純 CSS Morph */
        .css-morph-container {
            display: inline-flex;
            position: relative;
            vertical-align: bottom;
        }

        .css-morph-char {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            height: 1.6em;
        }

        .css-morph-top {
            display: inline-block;
            transform-origin: bottom;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
            line-height: 1;
        }

        .css-morph-bottom {
            position: absolute;
            left: 0;
            display: inline-block;
            transform-origin: top;
            transform: scaleY(0) translateY(-4%);
            color: var(--morph-target-color, #A64B2A);
            font-family: Baskervville, "Cactus Classical Serif", serif;
            font-style: italic;
            font-size: 1.25em;
            line-height: 1;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
        }

        .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: scaleY(0); }
        .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(1) translateY(-4%); }

        /* 觸控裝置上停用 hover morph，避免 tap 後仍卡住 */
        @media (hover: none) {
            .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: none; }
            .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(0) translateY(-4%); }
        }


        /* ─── Mobile-only refinements (DO NOT touch md+) ─── */
        @media (max-width: 767px) {
            /* 防止橫向溢出 */
            body { overflow-x: hidden; }

            /* 手機版 Hero - 維持比例但更克制留白 */
            .hero-mobile-meta {
                font-feature-settings: "kern" 1, "liga" 1;
            }

            /* 手機版 Carousel 進度指示器 */
            .mobile-progress {
                position: relative;
                width: 56px;
                height: 1px;
                background: rgba(59, 38, 29, 0.15);
                overflow: hidden;
            }
            body.in-brown .mobile-progress { background: rgba(243, 234, 225, 0.2); }
            body.in-terracotta .mobile-progress { background: rgba(243, 234, 225, 0.25); }
            .mobile-progress-fill {
                position: absolute;
                inset: 0;
                background: #A64B2A;
                transform-origin: left center;
                transform: scaleX(0);
                transition: transform 0.5s cubic-bezier(0.25, 1, 0.35, 1);
            }

            /* 手機 carousel slide hover-on-tap → focus-visible 視覺 */
            .h-snap > *:active .hover-scale-img {
                transform: scale(1.03);
                transition: transform 0.4s ease-out;
            }

            /* 浮動 WhatsApp 在手機放大且更易按 */
            .wa-float {
                bottom: calc(1.25rem + var(--safe-bottom));
            }
        }

        @media (min-width: 768px) {
            #mobile-anchor-bar { display: none; }
            .mobile-only-block { display: none !important; }
        }

        /* Pull‑indicator (僅手機 carousel 邊緣指示) */
        .edge-fade-r {
            background: linear-gradient(to left, rgba(253,251,249,1), rgba(253,251,249,0));
        }
        body.in-brown .edge-fade-r {
            background: linear-gradient(to left, rgba(59,38,29,1), rgba(59,38,29,0));
        }

        /* 手機 Hero CTA tappable 強化 */
        @media (max-width: 767px) {
            .hero-cta-primary, .hero-cta-secondary {
                min-height: 48px;
                display: inline-flex;
                align-items: center;
            }
        }

/* ===== index.html ===== */
html, body { scrollbar-width: none; -ms-overflow-style: none; }
      html::-webkit-scrollbar, body::-webkit-scrollbar { width: 0; height: 0; display: none; }
      @media (max-width: 767px){
        body.home #main-header:not(.is-scrolled){ color:#F3EAE1 !important; }
        body.home #main-header:not(.is-scrolled) .line-1,
        body.home #main-header:not(.is-scrolled) .line-2{ background-color:#F3EAE1 !important; }
      }

/* ===== index.html ===== */
.odm-hsection { background: #fff; }
        @media (min-width: 768px) {
            .odm-haccordion { display: flex; height: 78vh; max-height: 760px; gap: 6px; }
            .odm-panel {
                position: relative; flex: 1 1 0; overflow: hidden; border-radius: 2px; cursor: pointer;
                transition: flex 1.05s cubic-bezier(0.33, 0, 0.1, 1);
            }
            .odm-panel.is-open { flex: 5.5 1 0; cursor: default; }
            /* Hover preview — non-open panels nudge wider on hover */
            .odm-haccordion:hover .odm-panel:not(.is-open):hover { flex: 1.5 1 0; }
        }
        @media (max-width: 767px) {
            .odm-haccordion { display: flex; flex-direction: column; gap: 6px; }
            .odm-panel {
                position: relative; overflow: hidden; border-radius: 2px; cursor: pointer; height: 88px;
                transition: height 1.05s cubic-bezier(0.33, 0, 0.1, 1);
            }
            .odm-panel.is-open { height: 560px; cursor: default; }
            /* No zoom + no bleed: panel-open and image share ONE fixed px height (no vh —
               vh is re-evaluated independently on iOS Safari and the transient mismatch
               between panel and image was exposing the section background = the "穿透").
               Image is locked to that height + anchored top, so the accordion only crops
               more/less of a still image — a true reveal, never a rescale. */
            .odm-panel .odm-panel-img {
                height: 560px; top: 0; bottom: auto;
                object-position: center top;
                transform: none !important;
                transition: none;
            }
            @media (prefers-reduced-motion: reduce) {
                .odm-panel { transition: height 0.3s ease; }
            }
        }

        .odm-panel-img {
            position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
            filter: contrast(1.05) sepia(0.15) brightness(0.95);
            transform: scale(1.12);
            transition: transform 1.6s cubic-bezier(0.16,1,0.3,1);
        }
        .odm-panel.is-open .odm-panel-img { transform: scale(1); }
        @media (min-width: 768px) {
            .odm-panel:not(.is-open):hover .odm-panel-img { transform: scale(1.18); }
        }

        .odm-panel-scrim {
            position: absolute; inset: 0;
            background: linear-gradient(to top, rgba(59,38,29,0.82) 0%, rgba(59,38,29,0.42) 42%, rgba(59,38,29,0.18) 100%);
            transition: background 0.6s ease;
        }
        .odm-panel.is-open .odm-panel-scrim {
            background: linear-gradient(to top, rgba(59,38,29,0.85) 0%, rgba(59,38,29,0.4) 50%, rgba(59,38,29,0.08) 100%);
        }
        .odm-panel-grain {
            position: absolute; inset: 0; pointer-events: none; opacity: 0.10; mix-blend-mode: overlay;
            background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
        }

        /* Spine label (collapsed) */
        .odm-panel-spine {
            position: absolute; z-index: 2; display: flex; align-items: center;
            transition: opacity 0.45s ease;
        }
        @media (min-width: 768px) {
            .odm-panel-spine { inset: 0; flex-direction: column; justify-content: flex-end; align-items: center; padding-bottom: 2.5rem; gap: 1.1rem; }
            .odm-panel-vtitle { writing-mode: vertical-rl; text-orientation: mixed; font-size: 1.3rem; letter-spacing: 0.06em; color: #F3EAE1; white-space: nowrap; }
            .odm-panel-roman { font-size: 1.5rem; color: #F3EAE1; opacity: 0.9; }
            .odm-panel-spine-rule { width: 1px; height: 28px; background: rgba(243,234,225,0.5); transition: height 0.5s cubic-bezier(0.16,1,0.3,1); }
            .odm-panel:hover .odm-panel-spine-rule { height: 52px; }
        }
        @media (max-width: 767px) {
            .odm-panel-spine { inset: 0; align-items: center; padding: 0 1.5rem; gap: 0.9rem; }
            .odm-panel-vtitle { font-size: 1.15rem; color: #F3EAE1; }
            .odm-panel-roman { font-size: 1.2rem; color: #F3EAE1; opacity: 0.9; }
            .odm-panel-spine-rule { width: 24px; height: 1px; background: rgba(243,234,225,0.5); }
        }
        .odm-panel.is-open .odm-panel-spine { opacity: 0; pointer-events: none; }

        /* Expanded content + staggered reveal */
        .odm-panel-content {
            position: absolute; z-index: 3; left: 0; bottom: 0; padding: 2rem 1.75rem; pointer-events: none;
        }
        @media (min-width: 768px) { .odm-panel-content { padding: 3rem 3.5rem; max-width: 640px; } }
        .odm-rev { opacity: 0; transform: translateY(18px); }
        .odm-panel.is-open .odm-panel-content { pointer-events: auto; }
        .odm-panel.is-open .odm-rev { animation: odmRise 0.8s cubic-bezier(0.16,1,0.3,1) forwards; }
        .odm-panel.is-open .odm-rev-1 { animation-delay: 0.18s; }
        .odm-panel.is-open .odm-rev-2 { animation-delay: 0.28s; }
        .odm-panel.is-open .odm-rev-3 { animation-delay: 0.40s; }
        .odm-panel.is-open .odm-rev-4 { animation-delay: 0.52s; }
        @keyframes odmRise { to { opacity: 1; transform: translateY(0); } }
        @media (prefers-reduced-motion: reduce) {
            .odm-panel-img, .odm-panel { transition: none; }
            .odm-panel.is-open .odm-rev { animation: none; opacity: 1; transform: none; }
        }

/* ===== odm-home.html ===== */
/* ODM soft-nav fade */
        #odm-swap{animation:odmSwapIn .55s cubic-bezier(0.25,1,0.35,1);}
        @keyframes odmSwapIn{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
        @media (prefers-reduced-motion: reduce){#odm-swap{animation:none;}}
        /* NOTE: the Journal in-place category filter replays this SAME odmSwapIn fade, but it is driven
           from page-journal.js via the Web Animations API (Element.animate) — the journal swaps the grid's
           innerHTML and keeps the node, so a CSS-class re-trigger can't restart the animation reliably the
           way the ODM nav's element-replacement does. Keep odmSwapIn's values in sync with that JS call. */

        /* Article-body prose links — the 文字段落 (rich_text) block's editor allows an inline link; give it
           the brand link treatment (terracotta + thin underline) so a prose link is distinguishable and
           on-brand. The HTML demo's prose contains no links, so existing articles render byte-identically;
           this only styles links a client chooses to add. */
        .essay-prose a { color:#A64B2A; text-decoration:underline; text-underline-offset:0.18em; text-decoration-thickness:1px; transition:color 0.3s ease; }
        .essay-prose a:hover { color:#3B261D; }


        /* ───── 全局設定 ───── */
        :root {
            --ease: cubic-bezier(0.25, 1, 0.35, 1);
            --morph-target-color: #A64B2A;
            --safe-bottom: env(safe-area-inset-bottom, 0px);
        }
        
        html.lenis, html.lenis body { height: auto; }
        .lenis.lenis-smooth { scroll-behavior: auto !important; }
        .lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
        .lenis.lenis-stopped { overflow: hidden; }

        html { overflow-x: clip; }
        @supports not (overflow: clip) {
            html { overflow-x: hidden; }
        }

        body {
            transition: background-color 0.45s ease, color 0.45s ease;
            background-color: #FDFBF9; 
            color: #3B261D;
            -webkit-tap-highlight-color: transparent;
        }

        /* iOS Safari momentum scroll on horizontal carousels */
        .h-snap {
            -webkit-overflow-scrolling: touch;
            overscroll-behavior-x: contain;
            touch-action: pan-x pan-y;
            scroll-behavior: smooth;
        }
        /* Center-snap "tug" — release auto-pulls active item to viewport center */
        @media (max-width: 767px) {
            [data-carousel] > * { scroll-snap-stop: always; }
            /* Match actual padding to scroll-padding so first/last cards centre properly */
            [data-carousel="odm"] {
                scroll-padding-inline: 7vw;
                padding-left: 7vw !important;
                padding-right: 7vw !important;
            }
            [data-carousel="journal"] {
                scroll-padding-inline: 9vw;
                padding-left: 9vw !important;
                padding-right: 9vw !important;
            }
            [data-carousel="workshops"] {
                scroll-padding-inline: 11vw;
                padding-left: 11vw !important;
                padding-right: 11vw !important;
            }
            /* ODM card: stack title + badge so neither cuts off, equalise paragraph height */
            [data-carousel="odm"] article > .flex {
                flex-direction: column;
                align-items: flex-start;
                gap: 0.4rem;
                margin-bottom: 1.1rem;
            }
            [data-carousel="odm"] article h3 {
                font-size: 1.65rem;
                line-height: 1.15;
            }
            [data-carousel="odm"] article p {
                display: -webkit-box;
                -webkit-line-clamp: 3;
            }
        }

        /* ───── ODM Scroll-story (desktop only) ───── */
        @media (min-width: 768px) {
            [data-carousel="odm"] article {
                opacity: 0.42;
                transition: opacity 0.7s cubic-bezier(0.25,1,0.35,1);
            }
            [data-carousel="odm"] article.is-active {
                opacity: 1;
            }
            .odm-now {
                margin-top: 2.25rem;
                padding-top: 1.5rem;
                border-top: 1px solid rgba(59,38,29,0.14);
            }
            .odm-now-label {
                font-size: 11px;
                letter-spacing: 0.28em;
                text-transform: uppercase;
                opacity: 0.5;
                font-weight: 500;
                margin-bottom: 0.9rem;
                display: block;
            }
            .odm-now-content {
                transition: opacity 0.45s cubic-bezier(0.25,1,0.35,1), transform 0.45s cubic-bezier(0.25,1,0.35,1);
            }
            .odm-now-content.swap {
                opacity: 0;
                transform: translateY(6px);
            }
            .odm-now-roman {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                color: #A64B2A;
                font-size: 1.05rem;
                letter-spacing: 0.05em;
                margin-right: 0.5rem;
            }
            .odm-now-title {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                font-size: 1.35rem;
                line-height: 1.25;
                color: inherit;
                display: inline;
            }
            .odm-now-tagline {
                font-size: 0.78rem;
                letter-spacing: 0.18em;
                text-transform: uppercase;
                opacity: 0.55;
                margin-top: 0.55rem;
                display: block;
            }
            .odm-now-progress {
                display: flex;
                gap: 0.4rem;
                margin-top: 1.1rem;
            }
            .odm-now-progress span {
                width: 18px;
                height: 1px;
                background: rgba(59,38,29,0.2);
                transition: background 0.5s ease, width 0.5s ease;
            }
            .odm-now-progress span.on {
                background: #A64B2A;
                width: 28px;
            }
        }

        .hero-img { transform: scale(1.15); }
        .film-filter { filter: contrast(1.05) sepia(0.15) brightness(0.95); }

        body.in-terracotta {
            background-color: #A64B2A;
            color: #F3EAE1;
            --morph-target-color: #F3EAE1;
        }
        /* 橙色背景下，hover 變橙色會睇唔到 —
           改為反向處理：hover 變深啡，與米色預設文字形成強烈對比，呼應品牌色階 */
        body.in-terracotta .group:hover .group-hover\:text-brand-terracotta,
        body.in-terracotta .hover\:text-brand-terracotta:hover {
            color: #3B261D !important;
        }
        body.in-terracotta .hover\:border-brand-terracotta:hover {
            border-color: #3B261D !important;
        }
        body.in-terracotta .group:hover .group-hover\:border-brand-terracotta {
            border-color: #3B261D !important;
        }
        
        #main-header {
            color: #3B261D; 
            transition: padding 0.4s var(--ease), background-color 0.4s ease, color 0.4s ease;
        }
        /* head-hidden */
        #main-header { transition: transform 0s, padding 0.4s var(--ease), background-color 0.4s ease, color 0.4s ease; }
        body.head-hidden #main-header { transform: translateY(-100%); }
        body.head-hidden #odm-tabs { top: 0 !important; }
        /* odm-tab-logo */
        #odm-tabs .odm-tab-logo {
            max-width: 0; opacity: 0; overflow: hidden; white-space: nowrap;
            border-right: 1px solid transparent;
            transition: max-width 0.45s var(--ease), opacity 0.3s ease, margin 0.45s var(--ease), padding 0.45s var(--ease), border-color 0.45s var(--ease);
        }
        body.head-hidden #odm-tabs .odm-tab-logo {
            max-width: 9rem !important; opacity: 1 !important;
            margin-right: 1.75rem; padding-right: 1.75rem;
            border-right-color: rgba(59,38,29,0.15);
        }
        @media (max-width: 767px) {
            body.head-hidden #odm-tabs .odm-tab-logo { max-width: 6.5rem !important; margin-right: 1rem; padding-right: 1rem; }
        }
        #main-header.is-scrolled {
            padding-top: 1.5rem;
            padding-bottom: 1.5rem;
            background-color: rgba(253, 251, 249, 0.95);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
        }
        @media (max-width: 767px) {
            #main-header.is-scrolled {
                padding-top: 1rem;
                padding-bottom: 1rem;
            }
        }
        body.in-terracotta #main-header.is-scrolled { background-color: rgba(166, 75, 42, 0.95); }
        body.in-brown #main-header.is-scrolled { background-color: rgba(59, 38, 29, 0.95); color: #F3EAE1; }

        body.menu-open #main-header { 
            background-color: #111111 !important;
            transition: background-color 0.35s ease; 
            color: #F3EAE1 !important; 
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
            border-bottom: 1px solid rgba(255,255,255,0.1);
        }
        body.menu-open .line-1, body.menu-open .line-2 { background-color: #F3EAE1 !important; }
        /* 選單高過矮 viewport → overlay 內原生滾動（data-lenis-prevent 令停咗嘅 Lenis 放行）；contain 防 rubber-band 傳去背景頁 */
        #fullscreen-menu { overscroll-behavior: contain; user-select: none; -webkit-user-select: none; scrollbar-width: none; }
        #fullscreen-menu::-webkit-scrollbar { display: none; }

        /* ───── Scroll Reveal ───── */
        .ani-this { transition: transform 0.8s var(--ease), opacity 0.8s var(--ease); }
        .ani-this.bottom-in { transform: translateY(40px); opacity: 0; }
        .ani-this.left-in   { transform: translateX(-40px); opacity: 0; }
        .ani-this.in { transform: translate(0, 0) !important; opacity: 1 !important; }
        .delay-1 { transition-delay: 0.1s; }
        .delay-2 { transition-delay: 0.2s; }
        .delay-3 { transition-delay: 0.3s; }
        .delay-4 { transition-delay: 0.4s; }

        .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
        .hover-scale-img { will-change: transform; }

        .text-balance { text-wrap: balance; }

        /* 隱藏 Scrollbar */
        .hide-scrollbar {
            -ms-overflow-style: none;
            scrollbar-width: none;
        }
        .hide-scrollbar::-webkit-scrollbar {
            display: none;
        }

        /* ───── Hibi Lab wordmark (inherits currentColor for scroll theme swap) ───── */
        .hibi-mark {
            display: inline-block;
            width: clamp(160px, 22vw, 320px);
            aspect-ratio: 600 / 338;
            background-color: currentColor;
            -webkit-mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
                    mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
        }

        /* ───── Fluid Typography (Utopia-style: anchor 768→1600, plateau past 1600) ─────
           Only kicks in ≥ 768px so mobile sizes stay intact.
           Calibrated against Aesop / Le Labo / luxury editorial baselines.
        */
        @media (min-width: 768px) {
            .fluid-display     { font-size: clamp(3.5rem,  2.12rem + 2.88vw, 5rem)    !important; }
            .fluid-display-md  { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-h2          { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-h3-card     { font-size: clamp(1.75rem, 1.29rem + 0.96vw, 2.25rem) !important; }
            .fluid-script-lg   { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-script-xl   { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-body-lg     { font-size: clamp(1.05rem, 0.96rem + 0.19vw, 1.2rem)  !important; }
            .fluid-quote       { font-size: clamp(2.5rem,  1.12rem + 2.88vw, 4rem)    !important; }
        }

                /* 純 CSS Morph */
        .css-morph-container {
            display: inline-flex;
            position: relative;
            vertical-align: bottom;
        }

        .css-morph-char {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            height: 1.6em;
        }

        .css-morph-top {
            display: inline-block;
            transform-origin: bottom;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
            line-height: 1;
        }

        .css-morph-bottom {
            position: absolute;
            left: 0;
            display: inline-block;
            transform-origin: top;
            transform: scaleY(0) translateY(-4%);
            color: var(--morph-target-color, #A64B2A);
            font-family: Baskervville, "Cactus Classical Serif", serif;
            font-style: italic;
            font-size: 1.25em;
            line-height: 1;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
        }

        .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: scaleY(0); }
        .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(1) translateY(-4%); }

        /* 觸控裝置上停用 hover morph，避免 tap 後仍卡住 */
        @media (hover: none) {
            .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: none; }
            .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(0) translateY(-4%); }
        }


        /* ─── Mobile-only refinements (DO NOT touch md+) ─── */
        @media (max-width: 767px) {
            /* 防止橫向溢出 */
            body { overflow-x: hidden; }

            /* 手機版 Hero - 維持比例但更克制留白 */
            .hero-mobile-meta {
                font-feature-settings: "kern" 1, "liga" 1;
            }

            /* 手機版 Carousel 進度指示器 */
            .mobile-progress {
                position: relative;
                width: 56px;
                height: 1px;
                background: rgba(59, 38, 29, 0.15);
                overflow: hidden;
            }
            body.in-brown .mobile-progress { background: rgba(243, 234, 225, 0.2); }
            body.in-terracotta .mobile-progress { background: rgba(243, 234, 225, 0.25); }
            .mobile-progress-fill {
                position: absolute;
                inset: 0;
                background: #A64B2A;
                transform-origin: left center;
                transform: scaleX(0);
                transition: transform 0.5s cubic-bezier(0.25, 1, 0.35, 1);
            }

            /* 手機 carousel slide hover-on-tap → focus-visible 視覺 */
            .h-snap > *:active .hover-scale-img {
                transform: scale(1.03);
                transition: transform 0.4s ease-out;
            }

            /* 浮動 WhatsApp 在手機放大且更易按 */
            .wa-float {
                bottom: calc(1.25rem + var(--safe-bottom));
            }
        }

        @media (min-width: 768px) {
            #mobile-anchor-bar { display: none; }
            .mobile-only-block { display: none !important; }
        }

        /* Pull‑indicator (僅手機 carousel 邊緣指示) */
        /* ───── Editorial drop cap (CSS initial-letter w/ float fallback) ───── */
        .essay-dropcap::first-letter {
            font-family: Baskervville, "Cactus Classical Serif", serif;
            font-style: italic;
            color: #A64B2A;
            font-weight: 400;
            -webkit-initial-letter: 3 2;
                    initial-letter: 3 2;
            margin-right: 0.4rem;
        }
        @supports not ((initial-letter: 3) or (-webkit-initial-letter: 3)) {
            .essay-dropcap::first-letter {
                float: left;
                font-size: 5.5em;
                line-height: 0.82;
                margin-top: 0.02em;
                margin-right: 0.5rem;
                margin-bottom: -0.1em;
            }
            @media (min-width: 768px) {
                .essay-dropcap::first-letter { font-size: 6.2em; }
            }
        }

        .edge-fade-r {
            background: linear-gradient(to left, rgba(253,251,249,1), rgba(253,251,249,0));
        }
        body.in-brown .edge-fade-r {
            background: linear-gradient(to left, rgba(59,38,29,1), rgba(59,38,29,0));
        }

        /* 手機 Hero CTA tappable 強化 */
        @media (max-width: 767px) {
            .hero-cta-primary, .hero-cta-secondary {
                min-height: 48px;
                display: inline-flex;
                align-items: center;
            }
        }
    
        .caption-meta{font-family:'Montserrat',sans-serif;font-size:10px;letter-spacing:0.32em;text-transform:uppercase;color:rgba(59,38,29,0.55);line-height:1.6;}
        @media(min-width:768px){.caption-meta{font-size:11px;}}
        .grain{position:relative;}
        .grain::after{content:'';position:absolute;inset:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.231 0 0 0 0 0.149 0 0 0 0 0.114 0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:0.09;mix-blend-mode:multiply;}
        .pfx{will-change:transform;}
        .conc-bar{position:relative;height:2px;background:rgba(59,38,29,0.12);overflow:hidden;}
        .conc-fill{position:absolute;inset:0;background:#A64B2A;transform-origin:left;transform:scaleX(0);transition:transform 1.5s cubic-bezier(0.22,1,0.36,1);}
        .ani-this.in .conc-fill{transform:scaleX(var(--fill,0.5));}
        /* big italic display numeral */
        .big-num{font-family:'Baskervville',serif;font-style:italic;color:#A64B2A;line-height:0.7;}
            /* odm-tabs-mobile-fix */
        @media (max-width: 767px){
            #odm-tabs{ top: 64px !important; background-color: #FDFBF9 !important; }
        }

/* ===== odm-home.html ===== */
.vsl-tab { cursor: pointer; }
        .vsl-tab .vsl-num { color: rgba(59,38,29,0.3); transition: color 0.3s; }
        .vsl-tab .vsl-zh { color: rgba(59,38,29,0.5); }
        .vsl-tab.is-active .vsl-num { color: #A64B2A; }
        .vsl-tab.is-active .vsl-zh { color: #3B261D; }
        .vsl-tab:hover .vsl-zh { color: #A64B2A; }

/* ===== testimonials.html ===== */
/* ───── 全局設定 ───── */
        :root {
            --ease: cubic-bezier(0.25, 1, 0.35, 1);
            --morph-target-color: #A64B2A;
            --safe-bottom: env(safe-area-inset-bottom, 0px);
        }
        
        html.lenis, html.lenis body { height: auto; }
        .lenis.lenis-smooth { scroll-behavior: auto !important; }
        .lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
        .lenis.lenis-stopped { overflow: hidden; }

        html { overflow-x: clip; }
        @supports not (overflow: clip) {
            html { overflow-x: hidden; }
        }

        body {
            transition: background-color 0.45s ease, color 0.45s ease;
            background-color: #FDFBF9; 
            color: #3B261D;
            -webkit-tap-highlight-color: transparent;
        }

        /* iOS Safari momentum scroll on horizontal carousels */
        .h-snap {
            -webkit-overflow-scrolling: touch;
            overscroll-behavior-x: contain;
            touch-action: pan-x pan-y;
            scroll-behavior: smooth;
        }
        /* Center-snap "tug" — release auto-pulls active item to viewport center */
        @media (max-width: 767px) {
            [data-carousel] > * { scroll-snap-stop: always; }
            /* Match actual padding to scroll-padding so first/last cards centre properly */
            [data-carousel="odm"] {
                scroll-padding-inline: 7vw;
                padding-left: 7vw !important;
                padding-right: 7vw !important;
            }
            [data-carousel="journal"] {
                scroll-padding-inline: 9vw;
                padding-left: 9vw !important;
                padding-right: 9vw !important;
            }
            [data-carousel="workshops"] {
                scroll-padding-inline: 11vw;
                padding-left: 11vw !important;
                padding-right: 11vw !important;
            }
            /* ODM card: stack title + badge so neither cuts off, equalise paragraph height */
            [data-carousel="odm"] article > .flex {
                flex-direction: column;
                align-items: flex-start;
                gap: 0.4rem;
                margin-bottom: 1.1rem;
            }
            [data-carousel="odm"] article h3 {
                font-size: 1.65rem;
                line-height: 1.15;
            }
            [data-carousel="odm"] article p {
                display: -webkit-box;
                -webkit-line-clamp: 3;
            }
        }

        /* ───── ODM Scroll-story (desktop only) ───── */
        @media (min-width: 768px) {
            [data-carousel="odm"] article {
                opacity: 0.42;
                transition: opacity 0.7s cubic-bezier(0.25,1,0.35,1);
            }
            [data-carousel="odm"] article.is-active {
                opacity: 1;
            }
            .odm-now {
                margin-top: 2.25rem;
                padding-top: 1.5rem;
                border-top: 1px solid rgba(59,38,29,0.14);
            }
            .odm-now-label {
                font-size: 11px;
                letter-spacing: 0.28em;
                text-transform: uppercase;
                opacity: 0.5;
                font-weight: 500;
                margin-bottom: 0.9rem;
                display: block;
            }
            .odm-now-content {
                transition: opacity 0.45s cubic-bezier(0.25,1,0.35,1), transform 0.45s cubic-bezier(0.25,1,0.35,1);
            }
            .odm-now-content.swap {
                opacity: 0;
                transform: translateY(6px);
            }
            .odm-now-roman {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                color: #A64B2A;
                font-size: 1.05rem;
                letter-spacing: 0.05em;
                margin-right: 0.5rem;
            }
            .odm-now-title {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                font-size: 1.35rem;
                line-height: 1.25;
                color: inherit;
                display: inline;
            }
            .odm-now-tagline {
                font-size: 0.78rem;
                letter-spacing: 0.18em;
                text-transform: uppercase;
                opacity: 0.55;
                margin-top: 0.55rem;
                display: block;
            }
            .odm-now-progress {
                display: flex;
                gap: 0.4rem;
                margin-top: 1.1rem;
            }
            .odm-now-progress span {
                width: 18px;
                height: 1px;
                background: rgba(59,38,29,0.2);
                transition: background 0.5s ease, width 0.5s ease;
            }
            .odm-now-progress span.on {
                background: #A64B2A;
                width: 28px;
            }
        }

        .hero-img { transform: scale(1.15); }
        .film-filter { filter: contrast(1.05) sepia(0.15) brightness(0.95); }

        body.in-terracotta {
            background-color: #A64B2A;
            color: #F3EAE1;
            --morph-target-color: #F3EAE1;
        }
        /* 橙色背景下，hover 變橙色會睇唔到 —
           改為反向處理：hover 變深啡，與米色預設文字形成強烈對比，呼應品牌色階 */
        body.in-terracotta .group:hover .group-hover\:text-brand-terracotta,
        body.in-terracotta .hover\:text-brand-terracotta:hover {
            color: #3B261D !important;
        }
        body.in-terracotta .hover\:border-brand-terracotta:hover {
            border-color: #3B261D !important;
        }
        body.in-terracotta .group:hover .group-hover\:border-brand-terracotta {
            border-color: #3B261D !important;
        }
        
        #main-header {
            color: #3B261D; 
            transition: padding 0.4s var(--ease), background-color 0.4s ease, color 0.4s ease;
        }
        #main-header.is-scrolled {
            padding-top: 1.5rem;
            padding-bottom: 1.5rem;
            background-color: rgba(253, 251, 249, 0.95);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
        }
        @media (max-width: 767px) {
            #main-header.is-scrolled {
                padding-top: 1rem;
                padding-bottom: 1rem;
            }
        }
        body.in-terracotta #main-header.is-scrolled { background-color: rgba(166, 75, 42, 0.95); }
        body.in-brown #main-header.is-scrolled { background-color: rgba(59, 38, 29, 0.95); color: #F3EAE1; }

        body.menu-open #main-header { 
            background-color: #111111 !important;
            transition: background-color 0.35s ease; 
            color: #F3EAE1 !important; 
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
            border-bottom: 1px solid rgba(255,255,255,0.1);
        }
        body.menu-open .line-1, body.menu-open .line-2 { background-color: #F3EAE1 !important; }
        /* 選單高過矮 viewport → overlay 內原生滾動（data-lenis-prevent 令停咗嘅 Lenis 放行）；contain 防 rubber-band 傳去背景頁 */
        #fullscreen-menu { overscroll-behavior: contain; user-select: none; -webkit-user-select: none; scrollbar-width: none; }
        #fullscreen-menu::-webkit-scrollbar { display: none; }

        /* ───── Scroll Reveal ───── */
        .ani-this { transition: transform 0.8s var(--ease), opacity 0.8s var(--ease); }
        .ani-this.bottom-in { transform: translateY(40px); opacity: 0; }
        .ani-this.left-in   { transform: translateX(-40px); opacity: 0; }
        .ani-this.in { transform: translate(0, 0) !important; opacity: 1 !important; }
        .delay-1 { transition-delay: 0.1s; }
        .delay-2 { transition-delay: 0.2s; }
        .delay-3 { transition-delay: 0.3s; }
        .delay-4 { transition-delay: 0.4s; }

        .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
        .hover-scale-img { will-change: transform; }

        .text-balance { text-wrap: balance; }

        /* 隱藏 Scrollbar */
        .hide-scrollbar {
            -ms-overflow-style: none;
            scrollbar-width: none;
        }
        .hide-scrollbar::-webkit-scrollbar {
            display: none;
        }

        /* ───── Hibi Lab wordmark (inherits currentColor for scroll theme swap) ───── */
        .hibi-mark {
            display: inline-block;
            width: clamp(160px, 22vw, 320px);
            aspect-ratio: 600 / 338;
            background-color: currentColor;
            -webkit-mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
                    mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
        }

        /* ───── Fluid Typography (Utopia-style: anchor 768→1600, plateau past 1600) ─────
           Only kicks in ≥ 768px so mobile sizes stay intact.
           Calibrated against Aesop / Le Labo / luxury editorial baselines.
        */
        @media (min-width: 768px) {
            .fluid-display     { font-size: clamp(3.5rem,  2.12rem + 2.88vw, 5rem)    !important; }
            .fluid-display-md  { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-h2          { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-h3-card     { font-size: clamp(1.75rem, 1.29rem + 0.96vw, 2.25rem) !important; }
            .fluid-script-lg   { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-script-xl   { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-body-lg     { font-size: clamp(1.05rem, 0.96rem + 0.19vw, 1.2rem)  !important; }
            .fluid-quote       { font-size: clamp(2.5rem,  1.12rem + 2.88vw, 4rem)    !important; }
        }

                /* 純 CSS Morph */
        .css-morph-container {
            display: inline-flex;
            position: relative;
            vertical-align: bottom;
        }

        .css-morph-char {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            height: 1.6em;
        }

        .css-morph-top {
            display: inline-block;
            transform-origin: bottom;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
            line-height: 1;
        }

        .css-morph-bottom {
            position: absolute;
            left: 0;
            display: inline-block;
            transform-origin: top;
            transform: scaleY(0) translateY(-4%);
            color: var(--morph-target-color, #A64B2A);
            font-family: Baskervville, "Cactus Classical Serif", serif;
            font-style: italic;
            font-size: 1.25em;
            line-height: 1;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
        }

        .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: scaleY(0); }
        .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(1) translateY(-4%); }

        /* 觸控裝置上停用 hover morph，避免 tap 後仍卡住 */
        @media (hover: none) {
            .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: none; }
            .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(0) translateY(-4%); }
        }


        /* ─── Mobile-only refinements (DO NOT touch md+) ─── */
        @media (max-width: 767px) {
            /* 防止橫向溢出 */
            body { overflow-x: hidden; }

            /* 手機版 Hero - 維持比例但更克制留白 */
            .hero-mobile-meta {
                font-feature-settings: "kern" 1, "liga" 1;
            }

            /* 手機版 Carousel 進度指示器 */
            .mobile-progress {
                position: relative;
                width: 56px;
                height: 1px;
                background: rgba(59, 38, 29, 0.15);
                overflow: hidden;
            }
            body.in-brown .mobile-progress { background: rgba(243, 234, 225, 0.2); }
            body.in-terracotta .mobile-progress { background: rgba(243, 234, 225, 0.25); }
            .mobile-progress-fill {
                position: absolute;
                inset: 0;
                background: #A64B2A;
                transform-origin: left center;
                transform: scaleX(0);
                transition: transform 0.5s cubic-bezier(0.25, 1, 0.35, 1);
            }

            /* 手機 carousel slide hover-on-tap → focus-visible 視覺 */
            .h-snap > *:active .hover-scale-img {
                transform: scale(1.03);
                transition: transform 0.4s ease-out;
            }

            /* 浮動 WhatsApp 在手機放大且更易按 */
            .wa-float {
                bottom: calc(1.25rem + var(--safe-bottom));
            }
        }

        @media (min-width: 768px) {
            #mobile-anchor-bar { display: none; }
            .mobile-only-block { display: none !important; }
        }

        /* Pull‑indicator (僅手機 carousel 邊緣指示) */
        /* ───── Editorial drop cap (CSS initial-letter w/ float fallback) ───── */
        .essay-dropcap::first-letter {
            font-family: Baskervville, "Cactus Classical Serif", serif;
            font-style: italic;
            color: #A64B2A;
            font-weight: 400;
            -webkit-initial-letter: 3 2;
                    initial-letter: 3 2;
            margin-right: 0.4rem;
        }
        @supports not ((initial-letter: 3) or (-webkit-initial-letter: 3)) {
            .essay-dropcap::first-letter {
                float: left;
                font-size: 5.5em;
                line-height: 0.82;
                margin-top: 0.02em;
                margin-right: 0.5rem;
                margin-bottom: -0.1em;
            }
            @media (min-width: 768px) {
                .essay-dropcap::first-letter { font-size: 6.2em; }
            }
        }

        .edge-fade-r {
            background: linear-gradient(to left, rgba(253,251,249,1), rgba(253,251,249,0));
        }
        body.in-brown .edge-fade-r {
            background: linear-gradient(to left, rgba(59,38,29,1), rgba(59,38,29,0));
        }

        /* 手機 Hero CTA tappable 強化 */
        @media (max-width: 767px) {
            .hero-cta-primary, .hero-cta-secondary {
                min-height: 48px;
                display: inline-flex;
                align-items: center;
            }
        }
    
        .caption-meta {
            font-family: 'Montserrat', sans-serif;
            font-size: 10px;
            letter-spacing: 0.32em;
            text-transform: uppercase;
            color: rgba(59,38,29,0.55);
            line-height: 1.6;
        }
        @media (min-width: 768px) { .caption-meta { font-size: 11px; } }

        /* ============ Testimonials peek carousel ============ */
        .t-track {
            display: flex;
            gap: clamp(20px, 2.6vw, 36px);
            overflow-x: auto;
            scroll-snap-type: x mandatory;
            scroll-behavior: smooth;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: none;
            padding-bottom: 28px;
            padding-right: clamp(48px, 12vw, 18vw);
        }
        .t-track::-webkit-scrollbar { display: none; }

        /* Dual-state card: text default → image background on focus */
        .t-card {
            position: relative;
            flex: 0 0 auto;
            width: clamp(320px, 38vw, 520px);
            aspect-ratio: 4/5.6;
            scroll-snap-align: start;
            border-radius: 2px;
            overflow: hidden;
            background: #FDFBF9;
            border: 1px solid rgba(59,38,29,0.12);
            transition: opacity 0.55s ease, transform 0.7s cubic-bezier(0.22,1,0.36,1);
            cursor: pointer;
        }
        .t-card:not(.is-focused):not(:hover) { opacity: 0.55; }
        .t-card.is-focused, .t-card:hover { opacity: 1; }

        /* Background image — hidden by default, fades in on focus */
        /* Staggered vertical offset — alternating card heights with more variation */
        .t-card:nth-child(1) { transform: translateY(0); }
        .t-card:nth-child(2) { transform: translateY(60px); }
        .t-card:nth-child(3) { transform: translateY(20px); }
        .t-card:nth-child(4) { transform: translateY(90px); }
        .t-card:nth-child(5) { transform: translateY(40px); }
        @media (min-width: 768px) {
            .t-card:nth-child(1) { transform: translateY(0); }
            .t-card:nth-child(2) { transform: translateY(110px); }
            .t-card:nth-child(3) { transform: translateY(36px); }
            .t-card:nth-child(4) { transform: translateY(150px); }
            .t-card:nth-child(5) { transform: translateY(72px); }
        }
        .t-track { padding-top: 12px; padding-bottom: 200px; }
        .t-card .t-img {
            position: absolute; inset: 0;
            width: 100%; height: 100%;
            object-fit: cover;
            filter: contrast(1.02) sepia(0.18) brightness(0.85) saturate(0.95);
            opacity: 0;
            transform: scale(1.06);
            transition: opacity 0.7s ease, transform 1.4s cubic-bezier(0.22,1,0.36,1);
            z-index: 0;
        }
        .t-card.is-focused .t-img, .t-card:hover .t-img { opacity: 1; transform: scale(1.0); }

        /* Dark vignette over image — only when focused */
        .t-card .t-veil {
            position: absolute; inset: 0;
            background:
                linear-gradient(180deg, rgba(59,38,29,0.18) 0%, rgba(59,38,29,0) 28%, rgba(59,38,29,0.25) 55%, rgba(59,38,29,0.82) 95%),
                radial-gradient(110% 60% at 50% 110%, rgba(166,75,42,0.22) 0%, rgba(59,38,29,0) 60%);
            z-index: 1;
            pointer-events: none;
            opacity: 0;
            transition: opacity 0.6s ease;
        }
        .t-card.is-focused .t-veil, .t-card:hover .t-veil { opacity: 1; }

        /* Grain — only on focused (image) state */
        .t-card .t-grain {
            position: absolute; inset: 0;
            background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' /%3E%3CfeColorMatrix values='0 0 0 0 0.231 0 0 0 0 0.149 0 0 0 0 0.114 0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' /%3E%3C/svg%3E");
            opacity: 0;
            mix-blend-mode: overlay;
            z-index: 2;
            pointer-events: none;
            transition: opacity 0.6s ease;
        }
        .t-card.is-focused .t-grain, .t-card:hover .t-grain { opacity: 0.16; }

        /* All in-card content lives on z-3, colors flip via class */
        .t-tag, .t-num, .t-glyph, .t-body { transition: color 0.5s ease; }

        .t-tag {
            position: absolute;
            top: 24px; left: 24px;
            display: inline-flex;
            align-items: center;
            gap: 10px;
            z-index: 3;
            font-family: 'Montserrat', sans-serif;
            font-size: 9px;
            letter-spacing: 0.32em;
            text-transform: uppercase;
            color: #A64B2A;
        }
        .t-tag::before {
            content: '';
            display: inline-block;
            width: 18px; height: 1px;
            background: #A64B2A;
            transition: background 0.5s ease;
        }
        .t-card.is-focused .t-tag, .t-card:hover .t-tag { color: rgba(243,234,225,0.85); }
        .t-card.is-focused .t-tag::before, .t-card:hover .t-tag::before { background: rgba(243,234,225,0.55); }

        .t-num {
            position: absolute;
            top: 24px; right: 24px;
            z-index: 3;
            font-family: 'Baskervville', serif;
            font-style: italic;
            font-size: 13px;
            color: rgba(59,38,29,0.4);
        }
        .t-card.is-focused .t-num, .t-card:hover .t-num { color: rgba(243,234,225,0.65); }

        .t-glyph {
            position: absolute;
            top: 24%; left: 24px;
            z-index: 2;
            font-family: 'Baskervville', serif;
            font-style: italic;
            font-size: 120px;
            line-height: 0.5;
            color: rgba(166,75,42,0.32);
            user-select: none;
            pointer-events: none;
        }
        .t-card.is-focused .t-glyph, .t-card:hover .t-glyph { color: rgba(166,75,42,0.55); }

        .t-body {
            position: absolute;
            inset: auto 24px 24px 24px;
            z-index: 3;
            color: #3B261D;
        }
        .t-card.is-focused .t-body, .t-card:hover .t-body { color: #F3EAE1; }
        .t-quote {
            font-family: 'Baskervville', "Cactus Classical Serif", serif;
            font-style: italic;
            font-size: clamp(14px, 1.25vw, 18px);
            line-height: 1.55;
            margin-bottom: 22px;
            text-wrap: balance;
            color: inherit;
        }
        .t-rule {
            display: block; height: 1px;
            background: rgba(59,38,29,0.18);
            margin-bottom: 14px;
            transition: background 0.5s ease;
        }
        .t-card.is-focused .t-rule, .t-card:hover .t-rule { background: rgba(243,234,225,0.28); }
        .t-name {
            font-family: 'Baskervville', serif;
            font-size: clamp(13px, 1vw, 16px);
            margin-bottom: 3px;
            color: inherit;
        }
        .t-role {
            font-family: 'Montserrat', sans-serif;
            font-size: 9px;
            letter-spacing: 0.22em;
            text-transform: uppercase;
            line-height: 1.5;
            color: rgba(59,38,29,0.55);
            transition: color 0.5s ease;
        }
        .t-card.is-focused .t-role, .t-card:hover .t-role { color: rgba(243,234,225,0.6); }

        /* Minimal numeric nav matching homepage CTA pattern */
        .t-nav {
            display: flex;
            align-items: baseline;
            gap: 28px;
            font-family: 'Baskervville', serif;
            font-style: italic;
            font-size: 18px;
            line-height: 1;
            color: rgba(59,38,29,0.7);
        }
        .t-nav-link {
            display: inline-flex;
            align-items: center;
            gap: 10px;
            background: transparent;
            border: 0;
            padding: 0;
            cursor: pointer;
            font: inherit;
            font-style: normal;
            color: #3B261D;
            letter-spacing: 0.04em;
            transition: color 0.4s ease;
            position: relative;
        }
        .t-nav-link svg { transition: transform 0.4s cubic-bezier(0.22,1,0.36,1); }
        .t-nav-link:hover { color: #A64B2A; }
        .t-nav-link.t-next:hover svg { transform: translateX(4px); }
        .t-nav-link.t-prev:hover svg { transform: translateX(-4px); }
        .t-nav-link[aria-disabled="true"] { opacity: 0.3; pointer-events: none; }
        .t-nav-divider {
            display: inline-block;
            height: 1px;
            width: 24px;
            background: rgba(59,38,29,0.25);
            margin: 0 2px;
            transform: translateY(-5px);
        }
        .t-counter {
            font-family: 'Baskervville', serif;
            font-style: italic;
            color: rgba(59,38,29,0.5);
            font-size: 15px;
            letter-spacing: 0.02em;
            margin-top: 18px;
        }
        .t-counter b { color: #A64B2A; font-weight: 400; }

/* ===== workshops.html ===== */
/* ───── 全局設定 ───── */
        :root {
            --ease: cubic-bezier(0.25, 1, 0.35, 1);
            --morph-target-color: #A64B2A;
            --safe-bottom: env(safe-area-inset-bottom, 0px);
        }
        
        html.lenis, html.lenis body { height: auto; }
        .lenis.lenis-smooth { scroll-behavior: auto !important; }
        .lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
        .lenis.lenis-stopped { overflow: hidden; }

        html { overflow-x: clip; }
        @supports not (overflow: clip) {
            html { overflow-x: hidden; }
        }

        body {
            transition: background-color 0.45s ease, color 0.45s ease;
            background-color: #FDFBF9; 
            color: #3B261D;
            -webkit-tap-highlight-color: transparent;
        }

        /* iOS Safari momentum scroll on horizontal carousels */
        .h-snap {
            -webkit-overflow-scrolling: touch;
            overscroll-behavior-x: contain;
            touch-action: pan-x pan-y;
            scroll-behavior: smooth;
        }
        /* Center-snap "tug" — release auto-pulls active item to viewport center */
        @media (max-width: 767px) {
            [data-carousel] > * { scroll-snap-stop: always; }
            /* Match actual padding to scroll-padding so first/last cards centre properly */
            [data-carousel="odm"] {
                scroll-padding-inline: 7vw;
                padding-left: 7vw !important;
                padding-right: 7vw !important;
            }
            [data-carousel="journal"] {
                scroll-padding-inline: 9vw;
                padding-left: 9vw !important;
                padding-right: 9vw !important;
            }
            [data-carousel="workshops"] {
                scroll-padding-inline: 11vw;
                padding-left: 11vw !important;
                padding-right: 11vw !important;
            }
            /* ODM card: stack title + badge so neither cuts off, equalise paragraph height */
            [data-carousel="odm"] article > .flex {
                flex-direction: column;
                align-items: flex-start;
                gap: 0.4rem;
                margin-bottom: 1.1rem;
            }
            [data-carousel="odm"] article h3 {
                font-size: 1.65rem;
                line-height: 1.15;
            }
            [data-carousel="odm"] article p {
                display: -webkit-box;
                -webkit-line-clamp: 3;
            }
        }

        /* ───── ODM Scroll-story (desktop only) ───── */
        @media (min-width: 768px) {
            [data-carousel="odm"] article {
                opacity: 0.42;
                transition: opacity 0.7s cubic-bezier(0.25,1,0.35,1);
            }
            [data-carousel="odm"] article.is-active {
                opacity: 1;
            }
            .odm-now {
                margin-top: 2.25rem;
                padding-top: 1.5rem;
                border-top: 1px solid rgba(59,38,29,0.14);
            }
            .odm-now-label {
                font-size: 11px;
                letter-spacing: 0.28em;
                text-transform: uppercase;
                opacity: 0.5;
                font-weight: 500;
                margin-bottom: 0.9rem;
                display: block;
            }
            .odm-now-content {
                transition: opacity 0.45s cubic-bezier(0.25,1,0.35,1), transform 0.45s cubic-bezier(0.25,1,0.35,1);
            }
            .odm-now-content.swap {
                opacity: 0;
                transform: translateY(6px);
            }
            .odm-now-roman {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                color: #A64B2A;
                font-size: 1.05rem;
                letter-spacing: 0.05em;
                margin-right: 0.5rem;
            }
            .odm-now-title {
                font-family: var(--font-serif, 'Cormorant Garamond', serif);
                font-size: 1.35rem;
                line-height: 1.25;
                color: inherit;
                display: inline;
            }
            .odm-now-tagline {
                font-size: 0.78rem;
                letter-spacing: 0.18em;
                text-transform: uppercase;
                opacity: 0.55;
                margin-top: 0.55rem;
                display: block;
            }
            .odm-now-progress {
                display: flex;
                gap: 0.4rem;
                margin-top: 1.1rem;
            }
            .odm-now-progress span {
                width: 18px;
                height: 1px;
                background: rgba(59,38,29,0.2);
                transition: background 0.5s ease, width 0.5s ease;
            }
            .odm-now-progress span.on {
                background: #A64B2A;
                width: 28px;
            }
        }

        .hero-img { transform: scale(1.15); }
        .film-filter { filter: contrast(1.05) sepia(0.15) brightness(0.95); }

        body.in-terracotta {
            background-color: #A64B2A;
            color: #F3EAE1;
            --morph-target-color: #F3EAE1;
        }
        /* 橙色背景下，hover 變橙色會睇唔到 —
           改為反向處理：hover 變深啡，與米色預設文字形成強烈對比，呼應品牌色階 */
        body.in-terracotta .group:hover .group-hover\:text-brand-terracotta,
        body.in-terracotta .hover\:text-brand-terracotta:hover {
            color: #3B261D !important;
        }
        body.in-terracotta .hover\:border-brand-terracotta:hover {
            border-color: #3B261D !important;
        }
        body.in-terracotta .group:hover .group-hover\:border-brand-terracotta {
            border-color: #3B261D !important;
        }
        
        #main-header {
            color: #3B261D; 
            transition: padding 0.4s var(--ease), background-color 0.4s ease, color 0.4s ease;
        }
        #main-header.is-scrolled {
            padding-top: 1.5rem;
            padding-bottom: 1.5rem;
            background-color: rgba(253, 251, 249, 0.95);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
        }
        @media (max-width: 767px) {
            #main-header.is-scrolled {
                padding-top: 1rem;
                padding-bottom: 1rem;
            }
        }
        body.in-terracotta #main-header.is-scrolled { background-color: rgba(166, 75, 42, 0.95); }
        body.in-brown #main-header.is-scrolled { background-color: rgba(59, 38, 29, 0.95); color: #F3EAE1; }

        body.menu-open #main-header { 
            background-color: #111111 !important;
            transition: background-color 0.35s ease; 
            color: #F3EAE1 !important; 
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
            border-bottom: 1px solid rgba(255,255,255,0.1);
        }
        body.menu-open .line-1, body.menu-open .line-2 { background-color: #F3EAE1 !important; }
        /* 選單高過矮 viewport → overlay 內原生滾動（data-lenis-prevent 令停咗嘅 Lenis 放行）；contain 防 rubber-band 傳去背景頁 */
        #fullscreen-menu { overscroll-behavior: contain; user-select: none; -webkit-user-select: none; scrollbar-width: none; }
        #fullscreen-menu::-webkit-scrollbar { display: none; }

        /* ───── Scroll Reveal ───── */
        .ani-this { transition: transform 0.8s var(--ease), opacity 0.8s var(--ease); }
        .ani-this.bottom-in { transform: translateY(40px); opacity: 0; }
        .ani-this.left-in   { transform: translateX(-40px); opacity: 0; }
        .ani-this.in { transform: translate(0, 0) !important; opacity: 1 !important; }
        .delay-1 { transition-delay: 0.1s; }
        .delay-2 { transition-delay: 0.2s; }
        .delay-3 { transition-delay: 0.3s; }
        .delay-4 { transition-delay: 0.4s; }

        .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
        .hover-scale-img { will-change: transform; }

        .text-balance { text-wrap: balance; }

        /* 隱藏 Scrollbar */
        .hide-scrollbar {
            -ms-overflow-style: none;
            scrollbar-width: none;
        }
        .hide-scrollbar::-webkit-scrollbar {
            display: none;
        }

        /* ───── Hibi Lab wordmark (inherits currentColor for scroll theme swap) ───── */
        .hibi-mark {
            display: inline-block;
            width: clamp(160px, 22vw, 320px);
            aspect-ratio: 600 / 338;
            background-color: currentColor;
            -webkit-mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
                    mask: url('../img/hibi-lab-logo.png') no-repeat center / contain;
        }

        /* ───── Fluid Typography (Utopia-style: anchor 768→1600, plateau past 1600) ─────
           Only kicks in ≥ 768px so mobile sizes stay intact.
           Calibrated against Aesop / Le Labo / luxury editorial baselines.
        */
        @media (min-width: 768px) {
            .fluid-display     { font-size: clamp(3.5rem,  2.12rem + 2.88vw, 5rem)    !important; }
            .fluid-display-md  { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-h2          { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-h3-card     { font-size: clamp(1.75rem, 1.29rem + 0.96vw, 2.25rem) !important; }
            .fluid-script-lg   { font-size: clamp(2.5rem,  1.35rem + 2.40vw, 3.75rem) !important; }
            .fluid-script-xl   { font-size: clamp(3rem,    1.62rem + 2.88vw, 4.5rem)  !important; }
            .fluid-body-lg     { font-size: clamp(1.05rem, 0.96rem + 0.19vw, 1.2rem)  !important; }
            .fluid-quote       { font-size: clamp(2.5rem,  1.12rem + 2.88vw, 4rem)    !important; }
        }

                /* 純 CSS Morph */
        .css-morph-container {
            display: inline-flex;
            position: relative;
            vertical-align: bottom;
        }

        .css-morph-char {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            height: 1.6em;
        }

        .css-morph-top {
            display: inline-block;
            transform-origin: bottom;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
            line-height: 1;
        }

        .css-morph-bottom {
            position: absolute;
            left: 0;
            display: inline-block;
            transform-origin: top;
            transform: scaleY(0) translateY(-4%);
            color: var(--morph-target-color, #A64B2A);
            font-family: Baskervville, "Cactus Classical Serif", serif;
            font-style: italic;
            font-size: 1.25em;
            line-height: 1;
            transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
        }

        .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: scaleY(0); }
        .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(1) translateY(-4%); }

        /* 觸控裝置上停用 hover morph，避免 tap 後仍卡住 */
        @media (hover: none) {
            .group:hover .css-morph-top, .css-morph-container:hover .css-morph-top { transform: none; }
            .group:hover .css-morph-bottom, .css-morph-container:hover .css-morph-bottom { transform: scaleY(0) translateY(-4%); }
        }


        /* ─── Mobile-only refinements (DO NOT touch md+) ─── */
        @media (max-width: 767px) {
            /* 防止橫向溢出 */
            body { overflow-x: hidden; }

            /* 手機版 Hero - 維持比例但更克制留白 */
            .hero-mobile-meta {
                font-feature-settings: "kern" 1, "liga" 1;
            }

            /* 手機版 Carousel 進度指示器 */
            .mobile-progress {
                position: relative;
                width: 56px;
                height: 1px;
                background: rgba(59, 38, 29, 0.15);
                overflow: hidden;
            }
            body.in-brown .mobile-progress { background: rgba(243, 234, 225, 0.2); }
            body.in-terracotta .mobile-progress { background: rgba(243, 234, 225, 0.25); }
            .mobile-progress-fill {
                position: absolute;
                inset: 0;
                background: #A64B2A;
                transform-origin: left center;
                transform: scaleX(0);
                transition: transform 0.5s cubic-bezier(0.25, 1, 0.35, 1);
            }

            /* 手機 carousel slide hover-on-tap → focus-visible 視覺 */
            .h-snap > *:active .hover-scale-img {
                transform: scale(1.03);
                transition: transform 0.4s ease-out;
            }

            /* 浮動 WhatsApp 在手機放大且更易按 */
            .wa-float {
                bottom: calc(1.25rem + var(--safe-bottom));
            }
        }

        @media (min-width: 768px) {
            #mobile-anchor-bar { display: none; }
            .mobile-only-block { display: none !important; }
        }

        /* Workshop sold-out state */
        article.is-sold-out { opacity: 0.55; }
        article.is-sold-out:hover .hover-scale-img { transform: none !important; }

        /* Pull‑indicator (僅手機 carousel 邊緣指示) */
        /* ───── Editorial drop cap (CSS initial-letter w/ float fallback) ───── */
        .essay-dropcap::first-letter {
            font-family: Baskervville, "Cactus Classical Serif", serif;
            font-style: italic;
            color: #A64B2A;
            font-weight: 400;
            -webkit-initial-letter: 3 2;
                    initial-letter: 3 2;
            margin-right: 0.4rem;
        }
        @supports not ((initial-letter: 3) or (-webkit-initial-letter: 3)) {
            .essay-dropcap::first-letter {
                float: left;
                font-size: 5.5em;
                line-height: 0.82;
                margin-top: 0.02em;
                margin-right: 0.5rem;
                margin-bottom: -0.1em;
            }
            @media (min-width: 768px) {
                .essay-dropcap::first-letter { font-size: 6.2em; }
            }
        }

        .edge-fade-r {
            background: linear-gradient(to left, rgba(253,251,249,1), rgba(253,251,249,0));
        }
        body.in-brown .edge-fade-r {
            background: linear-gradient(to left, rgba(59,38,29,1), rgba(59,38,29,0));
        }

        /* 手機 Hero CTA tappable 強化 */
        @media (max-width: 767px) {
            .hero-cta-primary, .hero-cta-secondary {
                min-height: 48px;
                display: inline-flex;
                align-items: center;
            }
        }

/* ===== Component: WP admin-bar offset (moved inline from header.php) ===== */
/* Keep the fixed header + sticky ODM tabs clear of the WordPress admin bar
   (only affects logged-in users; the public site has no admin bar). */
		/* Keep the fixed header + sticky ODM tabs clear of the WordPress admin bar
		   (only affects logged-in users; the public site has no admin bar). */
		@media screen and (min-width: 783px) {
			.admin-bar #main-header { top: 32px; }
			.admin-bar #fullscreen-menu { top: 32px; }
			.admin-bar #odm-tabs { top: 112px; }
			.admin-bar.head-hidden #odm-tabs { top: 32px !important; }
		}
		@media screen and (min-width: 768px) and (max-width: 782px) {
			.admin-bar #main-header { top: 46px; }
			.admin-bar #fullscreen-menu { top: 46px; }
			.admin-bar #odm-tabs { top: 126px; }
			.admin-bar.head-hidden #odm-tabs { top: 46px !important; }
		}
		@media screen and (min-width: 601px) and (max-width: 767px) {
			.admin-bar #main-header { top: 46px; }
			.admin-bar #fullscreen-menu { top: 46px; }
			.admin-bar #odm-tabs { top: 102px; }
			.admin-bar.head-hidden #odm-tabs { top: 46px !important; }
		}
		/* ≤600px: WP admin bar is position:absolute (scrolls away) — no offset needed. */

/* ===== Component: ODM-home VSL tabs grid (moved inline from page-odm-home.php) ===== */
/* Column count is data-driven: the template sets --vsl-cols inline from the
   carriers-repeater count; this rule consumes it. */
        @media (min-width:768px){#vsl-tabs{grid-template-columns:repeat(var(--vsl-cols,5),minmax(0,1fr));}}

/* ===== Component: Contact form — Forminator + select2 (moved inline from page-contact.php) ===== */
.scentm-forminator .forminator-custom-form{--forminator-accent:#A64B2A;}.scentm-forminator .forminator-row{margin-bottom:1.75rem;}.scentm-forminator .forminator-label{font-family:ui-sans-serif,system-ui,sans-serif;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:rgba(59,38,29,.55);margin-bottom:.5rem;font-weight:500;}.scentm-forminator .forminator-input,.scentm-forminator .forminator-textarea,.scentm-forminator select,.scentm-forminator .forminator-select-list{background:transparent!important;border:0!important;border-bottom:1px solid rgba(59,38,29,.25)!important;border-radius:0!important;padding:.5rem 0!important;font-family:Georgia,"Songti SC",serif;font-size:1.125rem;color:#3B261D!important;box-shadow:none!important;}.scentm-forminator .forminator-input:focus,.scentm-forminator .forminator-textarea:focus,.scentm-forminator select:focus{border-bottom-color:#A64B2A!important;outline:none!important;}.scentm-forminator .forminator-textarea{resize:none;min-height:7rem;}.scentm-forminator .forminator-button-submit,.scentm-forminator button[type=submit]{background:transparent!important;color:#3B261D!important;border:0!important;border-bottom:1px solid #3B261D!important;border-radius:0!important;padding:.5rem 0!important;text-transform:uppercase;letter-spacing:.15em;font-size:.95rem;font-weight:500;transition:color .4s,border-color .4s;}.scentm-forminator .forminator-button-submit:hover,.scentm-forminator button[type=submit]:hover{color:#A64B2A!important;border-bottom-color:#A64B2A!important;}.scentm-forminator .forminator-checkbox-label,.scentm-forminator .forminator-description,.scentm-forminator .forminator-checkbox span{color:rgba(59,38,29,.7);font-family:ui-sans-serif,system-ui,sans-serif;}
/* Topic dropdown: restyle Forminator's select2 to the minimal underline look (matches the static design).
   Forminator's container is .select2-container.forminator-select (NOT the --default theme), so target the parts directly. */
.scentm-forminator .select2-container{width:100%!important;}
.scentm-forminator .select2-selection--single{background:transparent!important;border:0!important;border-bottom:1px solid rgba(59,38,29,.25)!important;border-radius:0!important;height:auto!important;min-height:0!important;padding:.5rem 0!important;transition:border-color .4s;}
.scentm-forminator .select2-container--open .select2-selection--single,.scentm-forminator .select2-selection--single:focus{border-bottom-color:#A64B2A!important;outline:none!important;}
.scentm-forminator .select2-selection--single .select2-selection__rendered{color:#3B261D!important;font-family:Georgia,"Songti SC",serif!important;font-size:1.125rem!important;line-height:1.7!important;padding:0 1.5rem 0 0!important;}
.scentm-forminator .select2-selection--single .select2-selection__arrow{height:100%!important;top:0!important;right:0!important;}
.scentm-forminator .select2-selection--single .select2-selection__arrow b{border-color:rgba(59,38,29,.45) transparent transparent transparent!important;}
.scentm-forminator .select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #A64B2A transparent!important;}
/* dropdown panel (select2 renders it at <body>; this style block only loads on the contact page) */
.select2-dropdown{background:#FDFBF9!important;border:1px solid rgba(59,38,29,.2)!important;border-radius:0!important;box-shadow:0 12px 32px rgba(59,38,29,.1)!important;}
/* tall enough that the (few) topics fit without scrolling — sidesteps Lenis smooth-scroll swallowing wheel inside the panel */
.select2-results__options{max-height:70vh!important;}
/* Submit button — match the demo's minimal「提交訊息 →」: tight to the text (not Forminator's 100px
   centred block), an arrow that slides on hover, and a subtle brand focus ring instead of the browser's
   default 3px auto box (which read as an off-brand rectangle after a click). */
.scentm-forminator .forminator-button-submit,.scentm-forminator button[type=submit]{display:inline-flex!important;align-items:center;gap:.7rem;min-width:0!important;width:auto!important;text-align:left;cursor:pointer;}
.scentm-forminator .forminator-button-submit::after{content:"\2192";display:inline-block;font-weight:400;transition:transform .5s ease;}
.scentm-forminator .forminator-button-submit:hover::after{transform:translateX(.45rem);}
/* NO box in ANY interactive state (the demo aesthetic is boxless). Forminator's own
   .forminator-button:hover/:focus/:active draws an outline/box-shadow; kill it on EVERY state (not just
   focus — the earlier miss) and show focus/hover the same way: terracotta text + underline + arrow shift. */
.scentm-forminator .forminator-button-submit:hover,.scentm-forminator .forminator-button-submit:focus,.scentm-forminator .forminator-button-submit:focus-visible,.scentm-forminator .forminator-button-submit:active,.scentm-forminator button[type=submit]:hover,.scentm-forminator button[type=submit]:focus,.scentm-forminator button[type=submit]:focus-visible,.scentm-forminator button[type=submit]:active{outline:none!important;box-shadow:none!important;border-top:0!important;border-right:0!important;border-left:0!important;color:#A64B2A!important;border-bottom-color:#A64B2A!important;}
.scentm-forminator .forminator-button-submit:hover::after,.scentm-forminator .forminator-button-submit:focus::after,.scentm-forminator .forminator-button-submit:focus-visible::after{transform:translateX(.45rem);}
/* Response (success / error) message — replace Forminator's filled mint/pink sans box with the site's
   minimal editorial style: a soft brand wash, one accent left-border, serif brown text. */
.scentm-forminator .forminator-response-message{background:rgba(166,75,42,.06)!important;border:0!important;border-left:2px solid #A64B2A!important;border-radius:0!important;color:#3B261D!important;font-family:Georgia,"Songti SC",serif!important;font-size:1.05rem!important;line-height:1.6!important;padding:1rem 1.25rem!important;box-shadow:none!important;}
.scentm-forminator .forminator-response-message.forminator-error{background:rgba(158,43,37,.055)!important;border-left-color:#9E2B25!important;}
/* This form ALWAYS redirects on success (→ /thanks/), so its response box should NEVER be seen: on submit
   Forminator briefly renders a "Submitting…" LOADER box and then an empty shown box right before the
   redirect — both flashed on screen as a brand-bordered box. Hide the loading state AND any non-error
   shown box (there is no legit inline success message on a redirect form). We deliberately DON'T touch
   `.forminator-error`, so a genuine submit failure (nonce/spam/server error → forminator-error, per the
   plugin's front-render.php) still shows and is never silently swallowed. */
.scentm-forminator .forminator-response-message.forminator-loading,
.scentm-forminator .forminator-response-message.forminator-show:not(.forminator-error){display:none!important;}
.scentm-forminator .forminator-response-message a{color:#A64B2A!important;text-decoration:underline;}
/* Field-level validation error — Forminator's default is a full-width pink box with grey sans text;
   restyle to a quiet brand annotation (muted red, no box) and turn the errored field's underline red. */
.scentm-forminator .forminator-error-message{background:transparent!important;border:0!important;border-radius:0!important;color:#9E2B25!important;font-family:ui-sans-serif,system-ui,sans-serif!important;font-size:12px!important;letter-spacing:.02em;padding:.4rem 0 0!important;margin:0!important;}
.scentm-forminator .forminator-has_error .forminator-input,.scentm-forminator .forminator-has_error .forminator-textarea,.scentm-forminator .forminator-has_error select,.scentm-forminator .forminator-has_error .select2-selection--single{border-bottom-color:#9E2B25!important;}
/* Hide Forminator's front-end「Edit form」shortcut. It is admin/editor-only (gated on the forminator-cform
   cap — a visitor never sees it) but it clutters the editorial front-end; the client edits via the Contact menu. */
.scentm-forminator .forminator-edit-module{display:none!important;}
.select2-results__option{font-family:Georgia,"Songti SC",serif!important;font-size:1.05rem!important;color:#3B261D!important;padding:.6rem 1rem!important;outline:none!important;}
/* current value (not hovered): subtle terracotta tint */
.select2-results__option--selected,.select2-results__option[aria-selected="true"]{background-color:rgba(166,75,42,.1)!important;color:#3B261D!important;}
/* hover / keyboard focus: solid terracotta — listed last + 2-class specificity so it always wins over selected/blue defaults */
.select2-results__option.select2-results__option--highlighted,li.select2-results__option--highlighted{background-color:#A64B2A!important;color:#FDFBF9!important;}

/* ── Defensive overflow (audit Pass 7): a long unbroken string (URL / hashtag / pasted id) in a
   heading, card title, testimonial quote or footer link must wrap, not overflow the layout.
   overflow-wrap only breaks a word that would OTHERWISE overflow, so normal copy is unchanged. ── */
h1, h2, h3, h4, .t-quote, footer a { overflow-wrap: break-word; }

/* ── no-js resilience (journey audit 2026-07-03): every reveal target ships opacity:0 as its base
   state (.ani-this variants + Tailwind opacity-0 on hero elements), so with JS off or failed the
   page rendered BLANK, not degraded. header.php now swaps html.no-js → html.js as the very first
   script; the reveal engine only ever runs with JS, so for every JS-enabled visitor html.no-js is
   gone before first paint and this rule is inert — zero visual change. ── */
html.no-js .ani-this,
html.no-js .opacity-0 { opacity: 1 !important; transform: none !important; }

/* ── Booking 人數 stepper (built by assets/js/page-workshop-detail.js) ────────────────────────────
   Component look lives here (like .scentm-forminator / .sm-marker), NOT inline in JS — the script only
   toggles the value text + [disabled]; hover/disabled are pure CSS. Colours mirror the brand tokens
   (brown #3B261D, terracotta #A64B2A, beige #F3EAE1) used across the theme. The no-JS <select> fallback
   is styled with Tailwind utilities in the template; this only styles the enhanced control. ── */
.scentm-qty-stepper { display: inline-flex; align-items: center; border: 1px solid rgba(59,38,29,.18); border-radius: 2px; overflow: hidden; }
.scentm-qty-stepper__btn { width: 40px; height: 40px; padding: 0; background: transparent; border: 0; color: #3B261D; font-family: 'Montserrat', 'Noto Sans TC', sans-serif; font-weight: 300; font-size: 18px; line-height: 1; cursor: pointer; -webkit-appearance: none; appearance: none; transition: background-color .3s, color .3s; }
.scentm-qty-stepper__btn:hover:not(:disabled) { background: #F3EAE1; color: #A64B2A; }
.scentm-qty-stepper__btn:focus-visible { outline: 2px solid #A64B2A; outline-offset: -2px; }
.scentm-qty-stepper__btn:disabled { color: rgba(59,38,29,.25); cursor: not-allowed; }
.scentm-qty-stepper__val { min-width: 44px; height: 40px; line-height: 40px; text-align: center; font-family: 'Baskervville', 'Cactus Classical Serif', serif; font-size: 18px; color: #3B261D; font-variant-numeric: tabular-nums; border-left: 1px solid rgba(59,38,29,.18); border-right: 1px solid rgba(59,38,29,.18); }

/* ── Accessibility foundation: skip navigation, keyboard focus and readable supporting copy. ── */
.scentm-skip-link {
    position: fixed;
    top: .75rem;
    left: .75rem;
    z-index: 100000;
    transform: translateY(calc(-100% - 1.5rem));
    padding: .7rem 1rem;
    border-radius: 2px;
    background: #3B261D;
    color: #F3EAE1;
    font-family: 'Montserrat', 'Noto Sans TC', sans-serif;
    font-size: .875rem;
    font-weight: 500;
    letter-spacing: .04em;
}
.scentm-skip-link:focus,
.scentm-skip-link:focus-visible {
    transform: translateY(0);
    outline: 2px solid #A64B2A;
    outline-offset: 2px;
}
#menu-toggle:focus-visible,
#fullscreen-menu a:focus-visible {
    outline: 2px solid #A64B2A;
    outline-offset: 4px;
    box-shadow: 0 0 0 2px #FDFBF9;
    border-radius: 2px;
}
.scentm-readable-muted {
    color: rgba(59,38,29,.65);
}
body.in-terracotta .scentm-readable-muted,
body.in-terracotta .scentm-readable-muted a:hover {
    color: #F3EAE1 !important;
}
.scentm-forminator .forminator-label {
    color: rgba(59,38,29,.65);
}
.scentm-visually-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Native search pagination, scoped so no existing archive layout changes. */
.scentm-search-pagination > .page-numbers {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .75rem;
}
.scentm-search-pagination .page-numbers a,
.scentm-search-pagination .page-numbers .current {
    display: inline-flex;
    min-width: 2.5rem;
    min-height: 2.5rem;
    align-items: center;
    justify-content: center;
    padding: .45rem .75rem;
    border: 1px solid rgba(59,38,29,.2);
    color: #3B261D;
    font-family: 'Montserrat', 'Noto Sans TC', sans-serif;
    font-size: .875rem;
}
.scentm-search-pagination .page-numbers a:hover,
.scentm-search-pagination .page-numbers .current {
    border-color: #A64B2A;
    color: #A64B2A;
}
.scentm-search-pagination .page-numbers a:focus-visible {
    outline: 2px solid #A64B2A;
    outline-offset: 2px;
}
