/* Gerado por scripts/bundle-css.js — fonts.css + tailwind.css + site.css. Não editar à mão. */
/* Estúdio Ma — fontes self-hosted (Inter + Cormorant Garamond, subset "latin").
   Substituem o link a fonts.googleapis.com/fonts.gstatic.com: menos 2 origens
   externas no caminho crítico, e CSS muito mais pequeno (só o subset "latin",
   que já cobre todos os acentos do português — U+00E0-U+00FF — e o "latin-ext"
   nunca é preciso). Ficheiros em assets/fonts/, gerados a partir da Google
   Fonts API (ver histórico do commit se for preciso regenerar).
   Noto Serif JP fica em fonts.googleapis.com — serve só o carácter decorativo
   "間", a subset japonesa já vem à parte e não vale a pena self-host. */

@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 300 600;
    font-display: swap;
    src: url('fonts/inter-normal-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Cormorant Garamond';
    font-style: normal;
    font-weight: 300 600;
    font-display: swap;
    src: url('fonts/cormorant-garamond-normal-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Cormorant Garamond';
    font-style: italic;
    font-weight: 300 600;
    font-display: swap;
    src: url('fonts/cormorant-garamond-italic-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Noto Serif JP: a marca usa só o carácter "間" (U+9593), decorativo, em
   `.kanji` (sempre font-weight:300 — ver site.css). Em vez do CSS inteiro da
   Google (248 blocos @font-face cobrindo milhares de kanji, ~230KB), self-host
   só o subset que já contém este carácter — 15KB, um único ficheiro. */
@font-face {
    font-family: 'Noto Serif JP';
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url('fonts/noto-serif-jp-300-kanji.woff2') format('woff2');
    unicode-range: U+9593;
}

*,: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.17 | 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:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;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}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.-bottom-16{bottom:-4rem}.-left-16{left:-4rem}.-right-10{right:-2.5rem}.bottom-0{bottom:0}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.z-10{z-index:10}.z-50{z-index:50}.order-1{order:1}.order-2{order:2}.order-last{order:9999}.mx-auto{margin-left:auto;margin-right:auto}.-ml-2\.5{margin-left:-.625rem}.-ml-8{margin-left:-2rem}.-mr-2{margin-right:-.5rem}.-mt-6{margin-top:-1.5rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.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}.mt-0\.5{margin-top:.125rem}.mt-10{margin-top:2.5rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.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}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-\[16\/9\]{aspect-ratio:16/9}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-16{height:4rem}.h-24{height:6rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-\[34px\]{height:34px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-24{width:6rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-\[34px\]{width:34px}.w-full{width:100%}.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-6xl{max-width:72rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-1\/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-x-1\/4{--tw-translate-x:-25%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-8{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-8{--tw-translate-y:-2rem}.translate-x-1\/3{--tw-translate-x:33.333333%}.translate-x-1\/3,.translate-x-\[42\%\]{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-x-\[42\%\]{--tw-translate-x:42%}.translate-y-1\/4{--tw-translate-y:25%;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))}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.scroll-mt-28{scroll-margin-top:7rem}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.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-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-14{-moz-column-gap:3.5rem;column-gap:3.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-10{row-gap:2.5rem}.gap-y-14{row-gap:3.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-.75rem*var(--tw-space-x-reverse));margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*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-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))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-carmim{--tw-border-opacity:1;border-color:rgb(204 18 54/var(--tw-border-opacity,1))}.border-ink{--tw-border-opacity:1;border-color:rgb(5 18 48/var(--tw-border-opacity,1))}.border-ink\/10{border-color:rgba(5,18,48,.1)}.border-ink\/15{border-color:rgba(5,18,48,.15)}.border-ink\/20{border-color:rgba(5,18,48,.2)}.border-page{--tw-border-opacity:1;border-color:rgb(251 249 244/var(--tw-border-opacity,1))}.border-page\/10{border-color:hsla(43,47%,97%,.1)}.border-page\/15{border-color:hsla(43,47%,97%,.15)}.bg-carmim{--tw-bg-opacity:1;background-color:rgb(204 18 54/var(--tw-bg-opacity,1))}.bg-cinnamon{--tw-bg-opacity:1;background-color:rgb(238 180 128/var(--tw-bg-opacity,1))}.bg-ink{--tw-bg-opacity:1;background-color:rgb(5 18 48/var(--tw-bg-opacity,1))}.bg-page{--tw-bg-opacity:1;background-color:rgb(251 249 244/var(--tw-bg-opacity,1))}.bg-page\/95{background-color:hsla(43,47%,97%,.95)}.bg-sand{--tw-bg-opacity:1;background-color:rgb(249 239 228/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.object-top{-o-object-position:top;object-position:top}.p-2{padding:.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.px-8{padding-left:2rem;padding-right:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.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-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-0\.5{padding-bottom:.125rem}.pb-16{padding-bottom:4rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-8{padding-bottom:2rem}.pr-10{padding-right:2.5rem}.pt-16{padding-top:4rem}.pt-24{padding-top:6rem}.pt-28{padding-top:7rem}.pt-36{padding-top:9rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,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-5xl{font-size:3rem;line-height:1}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.78rem\]{font-size:.78rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.8125rem\]{font-size:.8125rem}.text-\[0\.83rem\]{font-size:.83rem}.text-\[0\.9375rem\]{font-size:.9375rem}.text-\[0\.95rem\]{font-size:.95rem}.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-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.not-italic{font-style:normal}.leading-\[1\.08\]{line-height:1.08}.leading-\[1\.1\]{line-height:1.1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.22em\]{letter-spacing:.22em}.tracking-\[0\.28em\]{letter-spacing:.28em}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-normal{letter-spacing:0}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-carmim{--tw-text-opacity:1;color:rgb(204 18 54/var(--tw-text-opacity,1))}.text-carmim\/70{color:rgba(204,18,54,.7)}.text-cinnamon{--tw-text-opacity:1;color:rgb(238 180 128/var(--tw-text-opacity,1))}.text-ink{--tw-text-opacity:1;color:rgb(5 18 48/var(--tw-text-opacity,1))}.text-ink\/40{color:rgba(5,18,48,.4)}.text-ink\/55{color:rgba(5,18,48,.55)}.text-ink\/60{color:rgba(5,18,48,.6)}.text-ink\/65{color:rgba(5,18,48,.65)}.text-page{--tw-text-opacity:1;color:rgb(251 249 244/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.blur{--tw-blur:blur(8px);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-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}.hover\:border-ink\/25:hover{border-color:rgba(5,18,48,.25)}.hover\:text-ink:hover{--tw-text-opacity:1;color:rgb(5 18 48/var(--tw-text-opacity,1))}.hover\:text-page\/60:hover{color:hsla(43,47%,97%,.6)}.group:hover .group-hover\:translate-x-1{--tw-translate-x:0.25rem}.group:hover .group-hover\:scale-\[1\.02\],.group:hover .group-hover\: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\:scale-\[1\.02\]{--tw-scale-x:1.02;--tw-scale-y:1.02}.group:hover .group-hover\:text-ink{--tw-text-opacity:1;color:rgb(5 18 48/var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-70{opacity:.7}@media (min-width:640px){.sm\:hidden{display:none}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-x-14{-moz-column-gap:3.5rem;column-gap:3.5rem}}@media (min-width:768px){.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-7{grid-column:span 7/span 7}.md\:mb-16{margin-bottom:4rem}.md\:mt-12{margin-top:3rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-20{height:5rem}.md\:h-32{height:8rem}.md\:w-20{width:5rem}.md\:w-32{width:8rem}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:justify-start{justify-content:flex-start}.md\:gap-10{gap:2.5rem}.md\:gap-16{gap:4rem}.md\:gap-8{gap:2rem}.md\:p-10{padding:2.5rem}.md\:p-12{padding:3rem}.md\:p-8{padding:2rem}.md\:p-9{padding:2.25rem}.md\:py-12{padding-top:3rem;padding-bottom:3rem}.md\:py-16{padding-top:4rem;padding-bottom:4rem}.md\:py-28{padding-top:7rem;padding-bottom:7rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:pb-12{padding-bottom:3rem}.md\:pb-24{padding-bottom:6rem}.md\:pb-28{padding-bottom:7rem}.md\:pb-32{padding-bottom:8rem}.md\:pt-24{padding-top:6rem}.md\:pt-32{padding-top:8rem}.md\:pt-40{padding-top:10rem}.md\:text-left{text-align:left}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-\[1\.75rem\]{font-size:1.75rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:col-span-12{grid-column:span 12/span 12}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:mt-4{margin-top:1rem}.lg\:mt-8{margin-top:2rem}.lg\:block{display:block}.lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:gap-10{gap:2.5rem}.lg\:gap-14{gap:3.5rem}.lg\:gap-16{gap:4rem}.lg\:self-start{align-self:flex-start}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}}

/* Estúdio Ma — shared marketing-page stylesheet.
   Loaded by index.html, en/index.html, web-design/index.html, dentistas/index.html.
   Each page declares its own small :root override block for the values below. */

*, *::before, *::after { box-sizing: border-box; }

body {
    font-family: 'Inter', system-ui, sans-serif;
    -webkit-font-smoothing: antialiased;
    background-color: var(--body-bg, #FBF9F4);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
    color: var(--body-fg, #051230);
}

/* O ruído era `background-attachment: fixed`, o que obriga o browser a
   repintar o fundo a cada frame de scroll (não compõe na GPU) — caro em
   telemóvel. Como é ruído aleatório num tile de 120px a 5% de opacidade, o
   scroll normal é visualmente indistinguível do fixo. Em ecrãs grandes, onde
   o custo não pesa, mantém-se o efeito original. */
@media (min-width: 1024px) {
    body { background-attachment: fixed; }
}

html { scroll-behavior: smooth; }

/* Duplicar a classe no seletor sobe a especificidade para (0,2,0) e ganha à
   utilitária .font-serif carregada por assets/tailwind.css — sem isto,
   todos os títulos caíam para ui-serif/Georgia e o Cormorant nunca renderizava. */
.font-serif.font-serif { font-family: 'Cormorant Garamond', Georgia, serif; }
.font-ma { font-family: 'Cormorant Garamond', Georgia, serif; }

.kanji {
    font-family: 'Noto Serif JP', 'Cormorant Garamond', Georgia, serif;
    font-weight: 300;
    line-height: 1;
}

/* ── Nav (index/en only — inert elsewhere) ──── */
#main-nav { transition: border-color 0.3s ease; }
#main-nav.scrolled { border-bottom-color: #051230; }

.nav-link { position: relative; padding-bottom: 2px; }
.nav-link::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0;
    width: 0; height: 1px;
    background: #051230;
    transition: width 0.3s ease;
}
.nav-link:hover::after { width: 100%; }

#mobile-menu { max-height: 0; overflow: hidden; transition: max-height 0.3s ease; }
#mobile-menu.open { max-height: 340px; }

/* ── Buttons ─────────────────────────────── */
.btn {
    display: inline-flex;
    align-items: center;
    transition: transform 0.18s ease;
}
.btn:hover { transform: translateY(-2px); }

/* ── Cards ───────────────────────────────── */
.card { transition: transform 0.25s ease; }
.card:hover { transform: translateY(-4px); }
.card-line { height: 1px; width: 1.5rem; transition: width 0.3s ease; }
.card:hover .card-line { width: 3rem; }

/* ── Audience items (index/en only) ───────── */
.audience-item {
    background: #FBF9F4;
    border: 1px solid rgba(5,18,48,0.18);
    transition: background-color 0.2s ease, border-color 0.2s ease;
}
.audience-item:hover { border-color: rgba(5,18,48,0.4); }
.on-dark .audience-item {
    background: rgba(251,249,244,0.04);
    border-color: rgba(251,249,244,0.08);
}
.on-dark .audience-item:hover {
    background: rgba(251,249,244,0.09);
    border-color: rgba(251,249,244,0.16);
}

/* ── Form inputs — always sit on a light card regardless of page theme ── */
.form-input {
    background: transparent;
    border: none;
    border-bottom: 1px solid rgba(5,18,48,0.16);
    outline: none;
    padding: 0.75rem 0;
    width: 100%;
    color: #051230;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    transition: border-color 0.2s ease;
}
.form-input::placeholder { color: rgba(5,18,48,0.7); }
.form-input:focus { border-bottom-color: #CC1236; }
.form-input:focus-visible { border-bottom-color: #CC1236; box-shadow: 0 1px 0 0 #CC1236; }
textarea.form-input { resize: none; }
select.form-input {
    -webkit-appearance: none;
    appearance: none;
    border-radius: 0;
    background-color: transparent;
    background-image:
        linear-gradient(45deg, transparent 50%, rgba(5,18,48,0.55) 50%),
        linear-gradient(135deg, rgba(5,18,48,0.55) 50%, transparent 50%);
    background-position: calc(100% - 10px) 1.15rem, calc(100% - 5px) 1.15rem;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    padding-right: 1.5rem;
}
select.form-input option { color: #051230; background: #FBF9F4; }
select.form-input:invalid { color: rgba(5,18,48,0.7); }

/* ── Form inputs — variante invertida: cartão ink sobre fundo claro ── */
.form-input-invert {
    background: transparent;
    border: none;
    border-bottom: 1px solid rgba(251,249,244,0.28);
    outline: none;
    padding: 0.75rem 0;
    width: 100%;
    color: #FBF9F4;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    transition: border-color 0.2s ease;
}
.form-input-invert::placeholder { color: rgba(251,249,244,0.45); }
.form-input-invert:focus { border-bottom-color: #EEB480; }
.form-input-invert:focus-visible { border-bottom-color: #EEB480; box-shadow: 0 1px 0 0 #EEB480; }
select.form-input-invert {
    -webkit-appearance: none;
    appearance: none;
    border-radius: 0;
    background-color: transparent;
    background-image:
        linear-gradient(45deg, transparent 50%, rgba(251,249,244,0.7) 50%),
        linear-gradient(135deg, rgba(251,249,244,0.7) 50%, transparent 50%);
    background-position: calc(100% - 10px) 1.15rem, calc(100% - 5px) 1.15rem;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    padding-right: 1.5rem;
}
select.form-input-invert option { color: #051230; background: #FBF9F4; }
select.form-input-invert:invalid { color: rgba(251,249,244,0.45); }

/* ── Focus visible on pill buttons/interactive elements ───── */
.btn:focus-visible, #menu-toggle:focus-visible, summary:focus-visible, #cookie-accept:focus-visible {
    outline: 2px solid var(--focus-outline, #051230);
    outline-offset: 3px;
}

/* ── Touch + typography ──────────────────── */
a, button, summary { touch-action: manipulation; }
h1, h2, h3 { text-wrap: balance; }

/* ── Skip link ────────────────────────────── */
.skip-link {
    position: absolute;
    top: -100px; left: 1rem;
    z-index: 200;
    background: var(--skip-link-bg, #051230);
    color: var(--skip-link-fg, #FBF9F4);
    font-size: 0.875rem;
    font-weight: 500;
    padding: 0.75rem 1.5rem;
    border-radius: 0;
    transition: top 0.2s ease;
}
.skip-link:focus-visible { top: 1rem; }

/* ── Footer nav hover ─────────────────────── */
footer nav a:hover { color: rgba(251,249,244,0.58) !important; }

/* ── Scroll reveal ────────────────────────── */
.reveal {
    opacity: 0;
    transform: translateY(26px);
    transition: opacity 0.72s ease, transform 0.72s ease;
}
.reveal.visible { opacity: 1; transform: translateY(0); }

/* ── Kanji parallax (index/en only) ───────── */
[data-parallax-y] { will-change: transform; }

/* ── Hero entry animation ─────────────────── */
/* Só transform, sem opacity: elementos com opacity:0 não contam como
   "pintados" para efeitos de LCP, e a animação corre no compositor sem
   gerar um novo paint no main thread — o Chrome nunca via o hero como
   conteúdo pintado, e o LCP caía no primeiro bloco de texto sem animação
   (o banner de cookies). Com opacity fora da keyframe, o texto fica
   visível (opaco) logo no primeiro paint; só a posição desliza. */
@keyframes fadeUp {
    from { transform: translateY(18px); }
    to   { transform: translateY(0); }
}
.hero-1 { animation: fadeUp 0.7s 0.05s ease-out both; }
.hero-2 { animation: fadeUp 0.7s 0.2s  ease-out both; }
.hero-3 { animation: fadeUp 0.7s 0.35s ease-out both; }
.hero-4 { animation: fadeUp 0.7s 0.5s  ease-out both; }

/* ── FAQ (web-design/dentistas only) ──────── */
details summary { cursor: pointer; list-style: none; }
details summary::-webkit-details-marker { display: none; }
details .faq-icon { transition: transform 0.25s ease; }
details[open] .faq-icon { transform: rotate(45deg); }

/* ── Sticky mobile CTA bar (web-design/dentistas only) ── */
#sticky-cta {
    position: fixed;
    bottom: 0; left: 0; right: 0;
    z-index: 90;
    background: var(--sticky-cta-bg, rgba(251,249,244,0.96));
    backdrop-filter: blur(8px);
    border-top: 1px solid var(--sticky-cta-border, rgba(5,18,48,0.1));
    padding: 0.75rem 1rem calc(0.75rem + env(safe-area-inset-bottom));
    transform: translateY(110%);
    visibility: hidden;
    transition: transform 0.35s ease, visibility 0.35s;
}
#sticky-cta.visible { transform: translateY(0); visibility: visible; }
@media (min-width: 768px) { #sticky-cta { display: none; } }

/* ── WhatsApp float ───────────────────────── */
#whatsapp-float {
    position: fixed;
    bottom: 1.5rem; right: 1.5rem;
    z-index: 100;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #051230;
    color: #FBF9F4;
    width: 3.25rem; height: 3.25rem;
    border-radius: 0;
    text-decoration: none;
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.4s ease, transform 0.4s ease;
    pointer-events: none;
}
#whatsapp-float.visible { opacity: 1; transform: translateY(0); pointer-events: auto; }
#whatsapp-float:hover { transform: translateY(-3px); }

/* Pages with a #sticky-cta hide the floating icon on mobile (the sticky bar covers that role) */
body.has-sticky-cta #whatsapp-float { display: none; }
@media (min-width: 768px) {
    body.has-sticky-cta #whatsapp-float { display: inline-flex; }
}

/* ── Reduced motion (union of every page's disable-list) ── */
@media (prefers-reduced-motion: reduce) {
    .reveal { opacity: 1; transform: none; transition: none; }
    .hero-1, .hero-2, .hero-3, .hero-4 { animation: none !important; }
    html { scroll-behavior: auto; }
    #mobile-menu, #sticky-cta, #whatsapp-float, .skip-link { transition: none; }
    .btn, .card { transition: none; }
    .nav-link::after, .card-line { transition: none; }
}

/* ── Acento por superfície ────────────────────
   Carmim sobre claro (5.38 no off-white, 5.32 no creme).
   Sobre ink o carmim cai para 3.26, por isso as superfícies marcadas
   .on-dark trocam o acento para Pinkish Cinnamon, que dá 10.10.
   Os botões mantêm o preenchimento carmim com texto branco (5.66). */
.rule-accent { background: #CC1236; }
.on-dark .rule-accent { background: #EEB480; }
.on-dark .text-carmim { color: #EEB480; }
.on-dark .text-cinnamon\/70 { color: rgba(238,180,128,0.7); }

/* ── Registo ──────────────────────────────────
   Arestas vivas, sem sombras: a elevação faz-se com fio, não com
   desfoque. Um objeto que se levanta da página é uma CHAPA — a
   superfície leva fio de indigo e por trás, desviado, um bloco de
   cinnamon cheio, como uma segunda passagem de tinta fora de registo.

   Disciplina: UMA chapa por página, no objeto de conversão. Tudo o
   resto é fio simples. À segunda chapa na mesma vista deixa de ser
   decisão e passa a maneirismo. */
.plate { position: relative; margin: 0 18px 18px 0; }
.plate > * { position: relative; z-index: 1; }
.plate::before {
    content: '';
    position: absolute;
    inset: 18px -18px -18px 18px;
    background: #EEB480;
    z-index: 0;
}
@media (max-width: 767px) {
    .plate { margin: 0 10px 10px 0; }
    .plate::before { inset: 10px -10px -10px 10px; }
}

/* ── Campo quente ─────────────────────────────
   Uma banda de cinnamon cheio é a terceira superfície, a seguir à
   página e ao ink. Sobre ela o carmim cai para 3.10, por isso o acento
   de TEXTO passa a ink (10.10). O carmim continua a existir aqui, mas
   só como preenchimento de botão, onde o que conta é o branco por
   cima (5.66). */
.on-warm .text-carmim { color: #051230; }
.on-warm .rule-accent { background: #051230; }

/* ── Peças ────────────────────────────────────
   O gesto do cartão do hero, agora em quatro: superfície com fio e a
   chapa de cinnamon atrás, que desliza ao passar o rato e fica ao
   abrir. A disciplina de uma chapa por vista aguenta-se porque abrir
   uma peça fecha a anterior, e o rato só está num sítio de cada vez.
   No telemóvel não há hover: aí a chapa aparece com a abertura. */
.pieces { --piece-offset: 18px; }
@media (max-width: 640px) { .pieces { --piece-offset: 12px; } }

.piece {
    position: relative;
    /* sem isto o invólucro estica à altura da linha da grelha e a chapa
       sai do tamanho da linha em vez do tamanho do cartão */
    align-self: start;
    margin: 0 var(--piece-offset) var(--piece-offset) 0;
}
.piece-plate {
    position: absolute;
    inset: 0;
    background: #EEB480;
    opacity: 0;
    transform: translate(0, 0);
    pointer-events: none;
    transition: transform 0.26s cubic-bezier(0.2,0.7,0.3,1), opacity 0.16s ease;
}
.piece-face {
    position: relative;
    background: #FBF9F4;
    border: 1px solid rgba(5,18,48,0.22);
    transition: border-color 0.24s ease;
}
.piece:hover .piece-plate,
.piece:focus-within .piece-plate {
    opacity: 1;
    transform: translate(var(--piece-offset), var(--piece-offset));
}
.piece:hover .piece-face,
.piece:focus-within .piece-face { border-color: #051230; }

.piece-summary {
    display: block; width: 100%; text-align: left;
    background: none; border: 0; font: inherit; color: inherit;
    cursor: pointer; padding: 1.5rem;
}
.piece-summary:focus-visible { outline: 2px solid #CC1236; outline-offset: -6px; }

.piece-checks { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.7rem; }
.piece-checks li { display: flex; gap: 0.7rem; align-items: flex-start; font-size: 0.9rem; font-weight: 300; line-height: 1.5; }
.piece-checks svg { flex: none; margin-top: 3px; color: #051230; }

@media (prefers-reduced-motion: reduce) {
    .piece-plate, .piece-face { transition: none; }
}

/* ── Detalhe da peça, em popup ────────────────
   Cada peça abre um <dialog> nativo: o Esc fecha, o foco fica preso
   lá dentro e volta ao cartão de onde saiu. O véu é cinnamon e não
   preto, porque um véu escuro era outra mancha de indigo; e por isso
   a chapa do popup é ink, que é o que o .on-warm manda fazer sobre
   superfície quente. O conteúdo vive no HTML dentro de .piece-detail,
   escondido mas indexável, e é clonado para o popup ao abrir. */
.piece-more {
    display: inline-flex; align-items: center; gap: 0.5rem; margin-top: 1.15rem;
    font-size: 0.78rem; font-weight: 600; letter-spacing: 0.02em; color: #CC1236;
}
.piece-more svg { transition: transform 0.22s ease; }
.piece:hover .piece-more svg { transform: translateX(4px); }
.piece-detail[hidden] { display: none; }

.peca-dialog {
    border: 0; padding: 0; background: transparent; color: #051230;
    max-width: none; max-height: none; width: 100%; height: 100%;
    margin: 0; overflow: visible;
}
.peca-dialog::backdrop { background: rgba(238,180,128,0.92); }

.peca-stage { min-height: 100%; display: flex; align-items: center; justify-content: center; padding: 40px 24px; }
.peca-slot { position: relative; width: 100%; max-width: 720px; margin: 0 18px 18px 0; }
.peca-plate { position: absolute; inset: 0; background: #051230; transform: translate(18px, 18px); }
.peca-modal {
    position: relative; background: #FBF9F4; border: 1px solid #051230;
    max-height: calc(100vh - 116px); display: flex; flex-direction: column;
}

.peca-bar {
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    padding: 1.25rem 1.75rem; border-bottom: 1px solid rgba(5,18,48,0.12); flex: none;
}
.peca-bar-num { font-size: 0.66rem; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 600; color: #CC1236; }
.peca-x {
    width: 34px; height: 34px; flex: none; background: none; border: 1px solid rgba(5,18,48,0.22);
    cursor: pointer; position: relative; transition: border-color 0.2s ease, background-color 0.2s ease;
}
.peca-x:hover { border-color: #051230; background: #F9EFE4; }
.peca-x:focus-visible { outline: 2px solid #CC1236; outline-offset: 2px; }
.peca-x::before, .peca-x::after { content: ''; position: absolute; left: 9px; top: 16px; width: 14px; height: 1.5px; background: #051230; }
.peca-x::before { transform: rotate(45deg); }
.peca-x::after { transform: rotate(-45deg); }

.peca-body { overflow-y: auto; padding: 2rem 1.75rem 2.15rem; }
.peca-h { font-family: 'Cormorant Garamond', Georgia, serif; font-weight: 300;
    font-size: clamp(1.7rem, 3.4vw, 2.3rem); line-height: 1.1; letter-spacing: -0.02em; margin: 0; text-wrap: balance; }
.peca-lede { margin: 1.1rem 0 0; font-size: 1.0625rem; font-weight: 300; line-height: 1.6; color: rgba(5,18,48,0.86); }
.peca-body p { margin: 1rem 0 0; font-size: 0.9375rem; font-weight: 300; line-height: 1.68; max-width: 64ch; color: rgba(5,18,48,0.8); }
.peca-k { font-size: 0.66rem !important; letter-spacing: 0.18em; text-transform: uppercase;
    font-weight: 600 !important; margin: 2.15rem 0 0.9rem !important; color: rgba(5,18,48,0.75) !important; }
.peca-body strong { font-weight: 600; color: #051230; }
.piece-aside { margin-top: 1.9rem; background: #F9EFE4; border-left: 3px solid #EEB480; padding: 1.15rem 1.25rem; }
.piece-aside p { margin: 0; font-size: 0.875rem; line-height: 1.6; }
.piece-aside .k { display: block; font-size: 0.66rem; letter-spacing: 0.16em; text-transform: uppercase;
    font-weight: 600; margin-bottom: 0.45rem; color: rgba(5,18,48,0.75); }

.peca-foot {
    flex: none; border-top: 1px solid rgba(5,18,48,0.12); padding: 1.25rem 1.75rem; background: #FBF9F4;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.9rem;
}
.peca-preco { font-size: 0.875rem; font-weight: 300; color: rgba(5,18,48,0.8); }
.peca-preco b { font-weight: 600; color: #051230; }
.peca-cta {
    display: inline-flex; align-items: center; gap: 0.55rem; background: #CC1236; color: #FFFFFF;
    font-size: 0.875rem; font-weight: 600; padding: 0.8rem 1.4rem; text-decoration: none;
    transition: transform 0.18s ease;
}
.peca-cta:hover { transform: translateY(-2px); }
.peca-cta:focus-visible { outline: 2px solid #051230; outline-offset: 3px; }

@media (min-width: 701px) {
    .peca-body { padding: 2.4rem 2.75rem 2.5rem; }
    .peca-foot { padding: 1.25rem 2.75rem; }
}
@media (max-width: 700px) {
    .peca-stage { padding: 0; align-items: stretch; }
    .peca-slot { margin: 0; max-width: none; min-height: 100%; }
    .peca-plate { display: none; }
    .peca-modal { max-height: 100vh; min-height: 100vh; border: 0; }
}
@media (prefers-reduced-motion: reduce) {
    .peca-x, .peca-cta { transition: none; }
}

/* ── Escalões, dentro do popup ────────────────
   O que era a secção "Investimento claro" vive agora aqui: dois
   painéis de fio, sem raio e sem sombra, como o resto do sistema. */
.piece-tiers { display: grid; grid-template-columns: 1fr; gap: 1rem; margin-top: 1rem; }
@media (min-width: 560px) { .piece-tiers { grid-template-columns: 1fr 1fr; } }
.piece-tier { background: #FBF9F4; border: 1px solid rgba(5,18,48,0.22); padding: 1.15rem 1.25rem 1.25rem; }
.piece-tier .k {
    display: block; font-size: 0.66rem; letter-spacing: 0.16em; text-transform: uppercase;
    font-weight: 600; color: rgba(5,18,48,0.75);
}
.piece-tier h4 {
    font-family: 'Cormorant Garamond', Georgia, serif; font-weight: 400;
    font-size: 1.25rem; line-height: 1.2; letter-spacing: -0.01em; margin: 0.55rem 0 0;
}
.peca-body .piece-tier p { margin: 0.6rem 0 0; font-size: 0.8125rem; line-height: 1.55; }
.piece-tier .val {
    display: block; margin-top: 1rem; padding-top: 0.75rem;
    border-top: 1px solid rgba(5,18,48,0.12);
    font-family: 'Cormorant Garamond', Georgia, serif; font-size: 1.6rem; font-weight: 400; line-height: 1;
}
.piece-tier .val small {
    display: block; margin-bottom: 0.35rem;
    font-family: 'Inter', system-ui, sans-serif; font-size: 0.62rem; letter-spacing: 0.16em;
    text-transform: uppercase; font-weight: 600; color: rgba(5,18,48,0.75);
}

/* ── Portfólio ────────────────────────────────
   Só usado em /portfolio/. Mantém o registo do resto do site: fio em
   vez de sombra, arestas vivas, e a única chapa da página fica no
   formulário (o objeto de conversão). */
.nav-link-atual::after { width: 100%; }

/* Números: Cormorant em regular, algarismos alinhados */
.kpi-num {
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-weight: 400;
    line-height: 0.95;
    letter-spacing: -0.03em;
    font-variant-numeric: lining-nums tabular-nums;
}
.kpi-de { font-size: 0.42em; letter-spacing: 0; margin-left: 0.08em; opacity: 0.6; }
/* Faixa de números: quatro indicadores com a mesma forma (valor, rótulo, origem).
   O valor vive numa linha de altura fixa para que o seletor PT/EN alinhe
   pela base com os algarismos. */
.kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.75rem 1.5rem; }
@media (min-width: 768px) { .kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2rem; } }
.kpi { display: flex; flex-direction: column; }
.kpi dd {
    order: 1; margin: 0; height: 1em;
    display: flex; align-items: flex-end;
    font-size: clamp(2.75rem, 5vw, 4.25rem);
}
.kpi dt { order: 2; margin-top: 1rem; font-size: 0.9375rem; line-height: 1.35; color: rgba(251,249,244,0.88); }
.kpi dt span { display: block; margin-top: 0.2rem; font-size: 0.78rem; color: rgba(251,249,244,0.6); }

.lang-seletor {
    display: inline-flex; margin-bottom: 0.06em;
    border: 1px solid rgba(251,249,244,0.45);
    font-family: 'Inter', system-ui, sans-serif; font-size: 0.3em; font-weight: 600; letter-spacing: 0.06em;
}
.lang-seletor span { padding: 0.55em 0.85em; line-height: 1; color: rgba(251,249,244,0.7); }
.lang-seletor .ativo { background: #FBF9F4; color: #051230; }

/* Hero: duas capturas sobrepostas */
.colagem { position: relative; aspect-ratio: 6 / 5; }
.colagem img { position: absolute; display: block; height: auto; border: 1px solid #051230; background: #FBF9F4; }
.colagem-tras  { top: 0; right: 0; width: 84%; }
.colagem-frente { left: 0; bottom: 0; width: 78%; transition: transform 0.5s cubic-bezier(0.16,1,0.3,1); }
.colagem:hover .colagem-frente { transform: translate(-6px, 6px); }

/* Capturas dos casos */
.captura { overflow: hidden; border: 1px solid rgba(5,18,48,0.14); background: #F9EFE4; }
.captura img { display: block; transition: transform 0.6s cubic-bezier(0.16,1,0.3,1); }
a.captura:hover img { transform: scale(1.02); }
a.captura:focus-visible { outline: 2px solid #CC1236; outline-offset: 3px; }

/* Telemóvel na colagem do hero: à direita, por cima das duas capturas.
   Mais pequeno que nos casos, por isso moldura e cantos mais finos. */
.colagem .colagem-telemovel {
    left: auto; right: -1%; bottom: -8%; width: 30%; max-width: none;
    padding: 4px; border-radius: 20px; z-index: 2;
}
.colagem .colagem-telemovel img { position: static; border: 0; background: none; border-radius: 16px; }
.colagem .colagem-telemovel::before { top: 8px; height: 9px; }
@media (min-width: 1024px) {
    .colagem .colagem-telemovel { padding: 5px; border-radius: 24px; }
    .colagem .colagem-telemovel img { border-radius: 19px; }
    .colagem .colagem-telemovel::before { top: 10px; height: 11px; }
}
.colagem:hover .colagem-telemovel { transform: translateY(-6px); }

/* Captura em telemóvel sobre a de desktop.
   É a única peça com cantos redondos na página, e é de propósito: é o
   objeto físico (o telemóvel), não um componente do sistema. */
.dispositivos { position: relative; padding-bottom: 2.5rem; }
.telemovel {
    position: absolute; left: -0.75rem; bottom: 0;
    width: 28%; max-width: 212px;
    padding: 5px; border-radius: 26px;
    background: #051230;
    box-shadow: 0 1px 0 rgba(255,255,255,0.12) inset, 0 28px 50px -18px rgba(5,18,48,0.45), 0 8px 16px -8px rgba(5,18,48,0.3);
    transition: transform 0.5s cubic-bezier(0.16,1,0.3,1);
}
.telemovel img { display: block; width: 100%; height: auto; border-radius: 21px; }
/* ilha dinâmica */
.telemovel::before {
    content: ''; position: absolute; z-index: 1;
    top: 11px; left: 50%; transform: translateX(-50%);
    width: 30%; height: 12px; border-radius: 999px; background: #051230;
}
.dispositivos:hover .telemovel { transform: translateY(-6px); }
@media (min-width: 1024px) {
    .dispositivos { padding-bottom: 3rem; }
    .telemovel { left: -2.25rem; width: 30%; padding: 7px; border-radius: 34px; }
    .telemovel img { border-radius: 27px; }
    .telemovel::before { top: 15px; height: 17px; }
}
@media (prefers-reduced-motion: reduce) {
    .telemovel { transition: none; }
    .dispositivos:hover .telemovel { transform: none; }
}

/* Lista "o que construímos" */
.lista-feito { list-style: none; display: flex; flex-direction: column; gap: 0.8rem; }
ul.lista-feito.grid { display: grid; }
.lista-feito li { display: flex; gap: 0.7rem; align-items: flex-start; font-size: 0.95rem; font-weight: 300; line-height: 1.5; color: rgba(5,18,48,0.86); }
.lista-feito svg { flex: none; width: 1rem; height: 1rem; margin-top: 0.2rem; color: #CC1236; }
.lista-curta li { font-size: 0.875rem; }

/* Link para o site do cliente */
.link-site {
    display: inline-flex; align-items: center; gap: 0.45rem;
    font-size: 0.875rem; font-weight: 600; color: #051230;
    background: none; border: 0; padding: 0 0 2px; cursor: pointer;
    border-bottom: 1px solid #CC1236;
    transition: gap 0.25s ease;
}
.link-site svg { width: 0.95rem; height: 0.95rem; color: #CC1236; }
.link-site:hover { gap: 0.7rem; }
.link-site:focus-visible { outline: 2px solid #CC1236; outline-offset: 3px; }

/* Filtro por setor: fica colado por baixo da navegação */
.filtro-barra {
    position: sticky; top: 4rem; z-index: 40;
    background: rgba(251,249,244,0.95);
    backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
    border-bottom: 1px solid rgba(5,18,48,0.1);
    scroll-margin-top: 4rem;
}
@media (min-width: 768px) { .filtro-barra { top: 5rem; scroll-margin-top: 5rem; } }
.filtro-lista {
    display: flex; gap: 0.5rem; padding: 0.85rem 0;
    overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none;
}
.filtro-lista::-webkit-scrollbar { display: none; }
.filtro-pill {
    flex: none; scroll-snap-align: start;
    display: inline-flex; align-items: center; gap: 0.4rem;
    font: inherit; font-size: 0.8125rem; font-weight: 500; white-space: nowrap;
    padding: 0.5rem 0.95rem; cursor: pointer;
    background: transparent; color: rgba(5,18,48,0.78);
    border: 1px solid rgba(5,18,48,0.22);
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}
.filtro-pill span { font-variant-numeric: tabular-nums; opacity: 0.6; }
.filtro-pill:hover { border-color: #051230; color: #051230; }
.filtro-pill:active { transform: scale(0.98); }
.filtro-pill[aria-pressed="true"] { background: #051230; border-color: #051230; color: #FBF9F4; }
.filtro-pill:focus-visible { outline: 2px solid #CC1236; outline-offset: 2px; }

.caso { scroll-margin-top: 9rem; }
.caso.entra { animation: casoEntra 0.5s cubic-bezier(0.16,1,0.3,1) both; }
@keyframes casoEntra {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: none; }
}
/* O primeiro caso visível não leva o fio de cima (fica colado à barra) */
.caso.primeiro { border-top: 0 !important; padding-top: 4rem; }
@media (min-width: 768px) { .caso.primeiro { padding-top: 6rem; } }

@media (prefers-reduced-motion: reduce) {
    .colagem-frente, .captura img, .link-site, .filtro-pill { transition: none; }
    .colagem:hover .colagem-frente, a.captura:hover img { transform: none; }
    .caso.entra { animation: none; }
}


/* ── Miniaturas + lightbox (portfólio) ─────────
   Três capturas pequenas por caso; cada uma abre num <dialog> nativo
   (Esc fecha, o foco fica lá dentro e volta à miniatura ao fechar).
   O véu aqui é ink e não cinnamon como no popup das peças: para ver
   imagens, o fundo escuro é o que menos interfere. */
.miniaturas { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.75rem; }
@media (min-width: 768px) { .miniaturas { gap: 1.25rem; } }
.miniatura {
    display: block; width: 100%; padding: 0; cursor: zoom-in;
    aspect-ratio: 16 / 10; overflow: hidden;
    background: #F9EFE4; border: 1px solid rgba(5,18,48,0.14);
    transition: border-color 0.25s ease;
}
.miniatura img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top; transition: transform 0.6s cubic-bezier(0.16,1,0.3,1); }
.miniatura:hover { border-color: #051230; }
.miniatura:hover img { transform: scale(1.04); }
.miniatura:active img { transform: scale(1.01); }
.miniatura:focus-visible { outline: 2px solid #CC1236; outline-offset: 3px; }
.miniatura-legenda { display: block; margin-top: 0.5rem; font-size: 0.75rem; line-height: 1.35; color: rgba(5,18,48,0.66); }

.lightbox {
    border: 0; padding: 0; margin: 0; background: transparent; color: #FBF9F4;
    width: 100%; height: 100%; max-width: none; max-height: none; overflow: hidden;
}
.lightbox::backdrop { background: rgba(5,18,48,0.96); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.lightbox[open] { animation: lbEntra 0.3s cubic-bezier(0.16,1,0.3,1); }
@keyframes lbEntra { from { opacity: 0; } to { opacity: 1; } }

.lightbox-palco {
    position: relative; width: 100%; height: 100%;
    display: flex; align-items: center; justify-content: center;
    padding: 4.5rem 1rem 1.5rem;
}
@media (min-width: 768px) { .lightbox-palco { padding: 4.5rem 3rem 2rem; } }
.lightbox-figura { margin: 0; display: flex; flex-direction: column; max-width: min(1400px, 100%); }
.lightbox-img {
    display: block; max-width: 100%; max-height: calc(100vh - 11rem); max-height: calc(100dvh - 11rem);
    width: auto; height: auto; object-fit: contain;
    border: 1px solid rgba(251,249,244,0.16); background: #F9EFE4;
    transition: opacity 0.25s ease, transform 0.35s cubic-bezier(0.16,1,0.3,1);
}
.lightbox-img.a-trocar { opacity: 0; transform: scale(0.985); }
.lightbox-barra {
    display: flex; align-items: center; gap: 1rem; margin-top: 1rem;
    font-size: 0.875rem; color: rgba(251,249,244,0.86);
}
.lightbox-legenda { flex: 1; min-width: 0; }
.lightbox-contador { font-variant-numeric: tabular-nums; color: rgba(251,249,244,0.6); font-size: 0.8125rem; }
.lightbox-nav { display: flex; gap: 0.5rem; }
.lightbox-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; padding: 0; cursor: pointer;
    background: transparent; color: #FBF9F4;
    border: 1px solid rgba(251,249,244,0.3);
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.lightbox-btn svg { width: 20px; height: 20px; }
.lightbox-btn:hover { background: #FBF9F4; border-color: #FBF9F4; color: #051230; }
.lightbox-btn:focus-visible { outline: 2px solid #EEB480; outline-offset: 2px; }
.lightbox-x { position: absolute; top: 1rem; right: 1rem; }
@media (min-width: 768px) { .lightbox-x { top: 1.25rem; right: 1.5rem; } }

@media (prefers-reduced-motion: reduce) {
    .miniatura, .miniatura img, .lightbox-img, .lightbox-btn { transition: none; }
    .miniatura:hover img { transform: none; }
    .lightbox[open] { animation: none; }
}
