*,: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:Metropolis,Nohemi,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,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:JetBrains Mono,ui-monospace,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}}.container-site{margin-left:auto;margin-right:auto;max-width:1600px;padding-left:1.5rem;padding-right:1.5rem}@media (min-width:640px){.container-site{padding-left:2rem;padding-right:2rem}}@media (min-width:768px){.container-site{padding-left:3rem;padding-right:3rem}}.section-label{font-size:.875rem;line-height:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.section-header{margin-bottom:1.5rem;display:flex;align-items:center;gap:1rem}.section-header .section-label{min-width:0}.section-line{height:1px;flex:1 1 0%;--tw-bg-opacity:1;background-color:rgb(51 51 51/var(--tw-bg-opacity,1))}.\!btn,.btn{display:inline-flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;justify-content:center;gap:.5rem;border-width:1px;padding:.875rem 1.75rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-primary{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.btn-primary:hover{--tw-text-opacity:1}.btn-primary:hover,.btn-secondary{background-color:transparent;color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-secondary{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1));--tw-text-opacity:1}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.btn-ghost{border-color:rgb(51 51 51/var(--tw-border-opacity,1));background-color:transparent;color:rgb(204 204 204/var(--tw-text-opacity,1))}.btn-ghost,.btn-ghost:hover{--tw-border-opacity:1;--tw-text-opacity:1}.btn-ghost:hover{border-color:rgb(255 255 255/var(--tw-border-opacity,1));color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-sm{padding:.5rem 1rem;font-size:11px}.hero-title{font-family:Sage Grotesk,Nohemi,sans-serif;font-size:clamp(1.65rem,5.5vw,4.5rem);line-height:1.02;letter-spacing:-.01em;text-transform:uppercase;-webkit-hyphens:auto;hyphens:auto;font-weight:400;-webkit-text-stroke:.7px currentColor;text-stroke:.7px currentColor}.hero-lead{font-size:clamp(1rem,1.4vw,1.25rem);line-height:1.6;color:rgb(204 204 204/var(--tw-text-opacity,1))}.hero-lead,.stat-line{--tw-text-opacity:1}.stat-line{display:flex;flex-wrap:wrap;align-items:baseline;-moz-column-gap:.75rem;column-gap:.75rem;row-gap:.25rem;font-size:.75rem;line-height:1rem;text-transform:uppercase;letter-spacing:.15em;color:rgb(136 136 136/var(--tw-text-opacity,1))}.stat-line strong{font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.stat-sep{opacity:.4}.howto-item{border-top-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding-top:1.5rem}.howto-number{font-family:JetBrains Mono,ui-monospace,monospace;font-size:1.5rem;line-height:2rem}.howto-number,.howto-title{display:block;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.howto-title{margin-top:.5rem;font-size:.75rem;line-height:1rem;text-transform:uppercase;letter-spacing:.15em}.howto-desc{margin-top:.75rem;font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.swatch-card{display:block;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.swatch-card:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.swatch-fill{display:block;height:7rem;width:100%}@media (min-width:640px){.swatch-fill{height:8rem}}.swatch-info{display:flex;flex-direction:column;gap:.125rem;padding:.75rem}.swatch-name{font-size:.875rem;line-height:1.25rem;font-weight:700;line-height:1.25}.swatch-meta,.swatch-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.swatch-meta{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;opacity:.6}.preview-card{display:block;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.preview-card:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.preview-strip{display:flex;height:10rem}.preview-meta{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem}.preview-name{font-size:.875rem;line-height:1.25rem;font-weight:700;line-height:1.25;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.preview-view{font-size:11px;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.vz-swatch{height:2.25rem;cursor:pointer;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));transition:transform .12s ease}.vz-swatch:hover{transform:scale(1.07)}.vz-checkbox{position:relative;display:inline-flex;height:1.25rem;width:1.25rem;flex-shrink:0;align-items:center;justify-content:center;border-width:1px;border-color:hsla(0,0%,100%,.5);font-size:13px;font-weight:700;color:transparent;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.vz-smart-input:checked+.vz-checkbox{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.vz-sv{border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));height:130px;cursor:crosshair}.vz-hue,.vz-sv{position:relative;width:100%}.vz-hue{margin-top:.5rem;height:14px;cursor:pointer;border:1px solid hsla(0,0%,100%,.15);background:linear-gradient(90deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.vz-thumb{pointer-events:none;position:absolute;height:.875rem;width:.875rem;border-radius:9999px;border-width:2px;border-color:rgb(255 255 255/var(--tw-border-opacity,1));transform:translate(-50%,-50%);box-shadow:0 0 0 1px rgba(0,0,0,.6)}.other-dim,.vz-thumb{--tw-border-opacity:1}.other-dim{display:flex;flex-direction:column;gap:.25rem;border-width:1px;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1rem;text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.other-dim:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.other-dim-title{font-size:.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.other-dim-desc{font-size:11px;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.color-hero{width:100%;padding-top:6rem;padding-bottom:4rem}@media (min-width:768px){.color-hero{padding-bottom:6rem}}.color-hero-inner{margin-left:auto;margin-right:auto;max-width:1600px}.color-hero-eyebrow{margin-bottom:1rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;opacity:.7}.color-hero-title{margin-bottom:1rem}.color-hero-hex{font-size:clamp(1.25rem,2.5vw,1.75rem);margin-bottom:.75rem;font-weight:700}.color-hero-hex,.color-hero-meta{font-family:JetBrains Mono,ui-monospace,monospace}.color-hero-meta{margin-bottom:2rem;font-size:.75rem;line-height:1rem;letter-spacing:.025em;opacity:.8}@media (min-width:640px){.color-hero-meta{font-size:.875rem;line-height:1.25rem}}.color-hero-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;opacity:.7}.color-breadcrumb-link{text-decoration-line:none;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.color-breadcrumb-link:hover{opacity:1}.color-breadcrumb-sep{opacity:.5}.color-breadcrumb-current{opacity:1}.color-section{padding-top:3rem;padding-bottom:.5rem}.color-description{font-size:clamp(1.1rem,1.4vw,1.35rem);line-height:1.6;max-width:48rem;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.color-codes-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.75rem}@media (min-width:640px){.color-codes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.color-codes-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.color-codes-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.code-row{display:flex;cursor:pointer;align-items:center;justify-content:space-between;gap:1rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:.75rem 1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.code-row:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.code-label{font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.code-value{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.toast-overlay{pointer-events:none;position:fixed;inset:0;z-index:9999;padding:2rem}.toast{pointer-events:auto;position:absolute;bottom:calc(5rem + env(safe-area-inset-bottom));left:1rem;right:1rem;display:flex;width:auto;max-width:calc(100% - 2rem);cursor:pointer;align-items:center;gap:.75rem;overflow:hidden;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));background-color:rgba(0,0,0,.9);padding:1rem 1.25rem;--tw-backdrop-blur:blur(8px);-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)}@media (min-width:768px){.toast{bottom:2rem;left:auto;right:2rem;width:20rem;max-width:calc(100% - 4rem)}}.toast{box-shadow:0 8px 32px rgba(0,0,0,.5);animation:toast-in .35s cubic-bezier(.25,.46,.45,.94);transition:transform .3s ease,opacity .3s ease;transform:translate(0) scale(1);z-index:1}.toast:last-child{z-index:5}.toast:nth-last-child(2){transform:translate(-6px,-10px) scale(.97);opacity:.75;z-index:4}.toast:nth-last-child(3){transform:translate(-12px,-20px) scale(.94);opacity:.55;z-index:3}.toast:nth-last-child(4){transform:translate(-18px,-30px) scale(.91);opacity:.35;z-index:2}.toast:nth-last-child(n+5){transform:translate(-24px,-40px) scale(.88);opacity:.18;z-index:1}.toast.closing{animation:toast-out .3s ease-out forwards}.toast-swatch{height:1.5rem;width:1.5rem;flex-shrink:0;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.toast-msg{font-size:.875rem;line-height:1.25rem;font-weight:700;text-transform:uppercase;line-height:1.25;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.toast-close{margin-left:auto;flex-shrink:0;padding-left:.75rem;font-size:1.25rem;line-height:1.75rem;line-height:1;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.toast-close:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.toast-bar{position:absolute;left:0;right:0;bottom:0;height:1px;transform-origin:left;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));animation:toast-bar linear forwards}@keyframes toast-in{0%{transform:translate(20px,20px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes toast-out{0%{transform:translate(0);opacity:1}to{transform:translate(20px,20px);opacity:0}}@keyframes toast-bar{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.paint-matches{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:640px){.paint-matches{grid-template-columns:repeat(2,minmax(0,1fr))}}.paint-match{display:flex;align-items:stretch;gap:1rem;padding:1rem}.paint-match,.paint-swatch{border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.paint-swatch{height:5rem;width:5rem;flex-shrink:0}.paint-info{display:flex;flex-direction:column;justify-content:center}.paint-brand{font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.paint-name{margin-top:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.paint-number{margin-left:.25rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.875rem;line-height:1.25rem}.paint-meta,.paint-number{--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.paint-meta{margin-top:.25rem;font-size:.75rem;line-height:1rem}.paint-meta,.swatch-hex{text-transform:uppercase;letter-spacing:.15em}.swatch-hex{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.875rem;line-height:1.25rem;font-weight:700;opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;white-space:nowrap}.theory-grid{gap:2rem}.theory-block{display:block}.theory-label{margin-bottom:.75rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.theory-row,.theory-swatch{display:flex}.theory-swatch{height:6rem;cursor:pointer;align-items:flex-end;padding:.75rem;flex:1 1 0;transition:flex-grow .45s cubic-bezier(.22,1,.36,1);overflow:hidden}.theory-swatch:hover{flex-grow:3}.theory-swatch:hover .swatch-hex{opacity:1}.variations-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:2rem}@media (min-width:768px){.variations-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.variation-row-wrap{display:block}.variation-label{margin-bottom:.75rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.variation-row,.variation-swatch{display:flex}.variation-swatch{height:6rem;cursor:pointer;align-items:flex-end;padding:.75rem;flex:1 1 0;transition:flex-grow .45s cubic-bezier(.22,1,.36,1);overflow:hidden}.variation-swatch:hover{flex-grow:3}.variation-swatch:hover .variation-hex{opacity:1}.variation-hex{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.875rem;line-height:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;white-space:nowrap}.use-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:768px){.use-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.use-card{border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1.25rem}.use-label{margin-bottom:.5rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.use-value{font-size:1rem;line-height:1.5rem;line-height:1.625;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.contrast-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:768px){.contrast-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.contrast-card{gap:1rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1.25rem}.contrast-card,.contrast-preview{display:flex;align-items:center}.contrast-preview{height:5rem;width:5rem;flex-shrink:0;justify-content:center;font-weight:900;font-size:2.5rem;line-height:1}.contrast-meta{display:flex;flex-direction:column}.contrast-label{font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em}.contrast-ratio{margin-top:.25rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:1.5rem;line-height:2rem;font-weight:700}.contrast-rating{margin-top:.25rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em}.contrast-rating[data-rating=AAA],.contrast-rating[data-rating=AA]{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.contrast-rating[data-rating="AA Large"]{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.contrast-rating[data-rating=Fail]{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.cbsim-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:2rem}@media (min-width:768px){.cbsim-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.cb-block{display:block}.cb-label{margin-bottom:.75rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.cb-row,.cb-swatch{display:flex}.cb-swatch{height:5rem;cursor:pointer;align-items:flex-end;padding:.75rem;flex:1 1 0;transition:flex-grow .45s cubic-bezier(.22,1,.36,1);overflow:hidden}.cb-swatch:hover{flex-grow:3}.cb-swatch:hover .swatch-hex{opacity:1}.cb-meta{margin-top:.5rem;font-size:11px;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.similar-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}@media (min-width:640px){.similar-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.similar-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1024px){.similar-grid{grid-template-columns:repeat(8,minmax(0,1fr))}}.similar-card{display:block;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.similar-card:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.similar-swatch{display:block;height:6rem;width:100%}.similar-info{padding:.5rem}.similar-name{font-size:.75rem;line-height:1rem;font-weight:700;color:rgb(255 255 255/var(--tw-text-opacity,1))}.similar-meta,.similar-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;--tw-text-opacity:1}.similar-meta{margin-top:.125rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;color:rgb(136 136 136/var(--tw-text-opacity,1))}.psych-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:2.5rem}@media (min-width:1024px){.psych-grid{grid-template-columns:1fr 320px}}.psych-mood{margin-bottom:1rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.psych-body{font-size:clamp(1.1rem,1.3vw,1.3rem);line-height:1.6;max-width:42rem;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.psych-meta{gap:.75rem}.psych-meta,.psych-meta-row{display:flex;flex-direction:column}.psych-meta-row{gap:.25rem;border-top-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding-top:.75rem}.psych-meta-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.psych-meta-val{font-size:.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.psych-tags{margin-top:.5rem;display:flex;flex-wrap:wrap;gap:.5rem}.psych-tag{border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:.25rem .5rem;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.lighting-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:768px){.lighting-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.lighting-card{display:flex;cursor:pointer;flex-direction:column}.lighting-swatch{position:relative;display:flex;height:8rem;width:100%;align-items:flex-end;padding:.5rem}.lighting-hex{font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.15em;opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;white-space:nowrap}.lighting-card:hover .lighting-hex{opacity:1}.lighting-meta{margin-top:.75rem}.lighting-label{display:flex;align-items:center;gap:.75rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lighting-temp{font-family:JetBrains Mono,ui-monospace,monospace;font-weight:400;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.lighting-note{margin-top:.5rem;font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.pair-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:640px){.pair-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.pair-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.pair-card{display:flex;cursor:pointer;flex-direction:column}.pair-swatch{position:relative;display:flex;height:7rem;width:100%;align-items:flex-end;padding:.5rem}.pair-hex{font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.15em;opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;white-space:nowrap}.pair-card:hover .pair-hex{opacity:1}.pair-meta{margin-top:.75rem}.pair-role{font-size:.75rem;line-height:1rem;text-transform:uppercase;letter-spacing:.15em;color:rgb(136 136 136/var(--tw-text-opacity,1))}.pair-name,.pair-role{font-weight:700;--tw-text-opacity:1}.pair-name{margin-top:.25rem;font-size:1rem;line-height:1.5rem;color:rgb(255 255 255/var(--tw-text-opacity,1))}.pair-why{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.paint-info-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:768px){.paint-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.paint-info-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.paint-info-card{border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1.25rem}.paint-info-label{margin-bottom:.5rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.paint-info-val{font-size:1rem;line-height:1.5rem;font-weight:700;line-height:1.375;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.paint-info-note{margin-top:.5rem;font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.calc-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));align-items:stretch;gap:1.5rem}@media (min-width:1024px){.calc-grid{grid-template-columns:1fr 1fr}}.calc-inputs{gap:1rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1.25rem}.calc-field,.calc-inputs{display:flex;flex-direction:column}.calc-field{gap:.5rem}.calc-label{font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.calc-input-wrap{position:relative;display:flex}.calc-input{width:100%;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));padding:.5rem 3rem .5rem .75rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:1.125rem;line-height:1.75rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px}.calc-input:focus{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.calc-input::-webkit-inner-spin-button,.calc-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.calc-input[type=number]{-moz-appearance:textfield}.calc-stepper{position:absolute;right:0;top:0;bottom:0;width:2.5rem;flex-direction:column;border-left-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.calc-step,.calc-stepper{display:flex}.calc-step{flex:1 1 0%;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;justify-content:center;font-family:JetBrains Mono,ui-monospace,monospace;font-size:1rem;line-height:1.5rem;line-height:1;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.calc-step:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.calc-step:first-child{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.calc-output{display:flex;flex-direction:column;justify-content:center;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1.5rem}.calc-output-label{margin-bottom:.75rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.calc-output-value{font-size:clamp(2.5rem,6vw,4.5rem);line-height:1;font-weight:900;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.calc-output-unit{vertical-align:baseline;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:rgb(136 136 136/var(--tw-text-opacity,1))}.calc-output-note,.calc-output-unit{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1}.calc-output-note{margin-top:1rem;line-height:1.625;color:rgb(204 204 204/var(--tw-text-opacity,1))}.wc-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:640px){.wc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.wc-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.wc-combo{display:flex;flex-direction:column;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.wc-combo:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.wc-strip{height:10rem}.wc-strip,.wc-swatch{display:flex}.wc-swatch{position:relative;flex:1 1 0%;align-items:flex-end;justify-content:center;padding:.5rem;min-width:0}.wc-role{text-align:center;font-size:10px;font-weight:700;text-transform:uppercase;line-height:1.25;letter-spacing:.15em;opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.wc-combo:hover .wc-role{opacity:1}.wc-foot{display:flex;align-items:center;justify-content:space-between;border-top-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:.75rem 1rem}.wc-foot-title{font-size:.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.wc-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}@media (min-width:640px){.wc-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.wc-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}.wc-tile{display:flex;align-items:center;gap:.75rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.wc-tile:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.wc-tile-sw{height:2rem;width:2rem;flex-shrink:0;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.wc-tile-label{font-size:.875rem;line-height:1.25rem;font-weight:700}.range-sq{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:16px;background:transparent;cursor:pointer}.range-sq::-webkit-slider-runnable-track{height:4px;background:#3a3a3a;background-image:linear-gradient(#fff,#fff);background-repeat:no-repeat;background-size:var(--p,0) 100%}.range-sq::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:-5px;background:#fff;border:0;border-radius:0}.range-sq:focus{outline:none}.range-sq::-moz-range-track{height:4px;background:#3a3a3a}.range-sq::-moz-range-progress{height:4px;background:#fff}.range-sq::-moz-range-thumb{width:14px;height:14px;background:#fff;border:0;border-radius:0}.bsel{position:relative}.bsel,.bsel-btn{width:100%}.bsel-btn{display:flex;height:2.5rem;cursor:pointer;align-items:center;justify-content:space-between;gap:.5rem;white-space:nowrap;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding-left:.75rem;padding-right:.75rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background:#0d0d0d}.bsel-btn:hover{border-color:hsla(0,0%,100%,.45)}.bsel.\!open .bsel-btn,.bsel.open .bsel-btn{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.bsel-val{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bsel-btn svg{height:.75rem;width:.75rem;flex-shrink:0;opacity:.7;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.bsel.open .bsel-btn svg{transform:rotate(180deg)}.bsel.\!open .bsel-btn svg{transform:rotate(180deg)!important}.bsel-menu{position:absolute;left:0;z-index:60;display:none;max-height:320px;width:100%;min-width:200px;overflow-y:auto;padding:.25rem;top:calc(100% + 6px);background:#0a0a0a;border:1px solid hsla(0,0%,100%,.22);box-shadow:0 12px 40px rgba(0,0,0,.6)}.bsel-opt,.bsel.\!open .bsel-menu,.bsel.open .bsel-menu{display:block}.bsel-opt{width:100%;cursor:pointer;white-space:nowrap;border-width:0;background-color:transparent;padding:.5rem .625rem;text-align:left;font-size:.875rem;line-height:1.25rem;color:#cfcfcf}.bsel-opt:hover{background:hsla(0,0%,100%,.08)}.bsel-opt.sel,.bsel-opt:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.bsel-opt.sel{background:hsla(0,0%,100%,.13)}.bsel-menu::-webkit-scrollbar{width:8px}.bsel-menu::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.18)}.bsel-menu::-webkit-scrollbar-track{background:transparent}.catalog-search-wrap{position:relative;max-width:36rem}.catalog-search-icon{pointer-events:none;position:absolute;left:1rem;top:50%;--tw-translate-y:-50%;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));--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.catalog-search{width:100%;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));padding:.75rem 1rem .75rem 3rem;font-family:Metropolis,Nohemi,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:1rem;line-height:1.5rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.catalog-search::-moz-placeholder{--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.catalog-search::placeholder{--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.catalog-search:focus{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.catalog-search::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.filter-chips{display:flex;flex-wrap:wrap;gap:.5rem}.filter-chip{cursor:pointer;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:.5rem .75rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.filter-chip:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.filter-chip.is-active,.filter-chip:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.filter-chip.is-active{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.chip-count{margin-left:.25rem;font-weight:400;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.filter-chip.is-active .chip-count{color:rgba(0,0,0,.5)}.cat-prose{max-width:48rem;font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}@media (min-width:768px){.cat-prose{font-size:1rem;line-height:1.5rem}}.cat-prose-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem}@media (min-width:768px){.cat-prose-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.cat-prose-grid .cat-prose{max-width:none}.family-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.75rem}@media (min-width:640px){.family-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.family-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.family-card{display:flex;align-items:stretch;gap:1rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.family-card:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.family-swatch{min-height:4rem;width:4rem;flex-shrink:0;align-self:stretch;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.family-body{display:flex;min-width:0;flex-direction:column;gap:.25rem}.family-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.family-name{font-size:1rem;line-height:1.5rem;font-weight:700;letter-spacing:-.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.family-count{flex-shrink:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.family-blurb{font-size:.75rem;line-height:1rem;line-height:1.375;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.browse-cols{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:2rem}@media (min-width:768px){.browse-cols{grid-template-columns:repeat(3,minmax(0,1fr))}}.browse-group{display:flex;flex-direction:column;gap:.75rem}.browse-title{font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.browse-links{display:flex;flex-wrap:wrap;gap:.5rem}.browse-link{border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:.5rem .75rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.browse-link:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.browse-link-all,.browse-link:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.browse-link-all{border-color:hsla(0,0%,100%,.4)}.cat-group{margin-bottom:2rem}.cat-group:last-child{margin-bottom:0}.cat-subhead{margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:700;letter-spacing:-.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.coy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}@media (min-width:640px){.coy-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.coy-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1024px){.coy-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.coy-card{display:flex;flex-direction:column;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.coy-card:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.coy-swatch{display:block;height:6rem;width:100%}.coy-body{display:flex;flex-direction:column;gap:.125rem;padding:.75rem}.coy-year{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.coy-name{font-size:.875rem;line-height:1.25rem;font-weight:700;line-height:1.25}.coy-meta{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;opacity:.6}.compare-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.75rem}@media (min-width:768px){.compare-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.compare-card{display:flex;flex-direction:column;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.compare-card:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.compare-bands{position:relative;display:flex;height:9rem}.compare-band{display:block;flex:1 1 0%}.compare-band:first-child{border-right-width:1px;--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.compare-vs{position:absolute;left:50%;top:50%;display:flex;height:2.5rem;width:2.5rem;--tw-translate-x:-50%;--tw-translate-y:-50%;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));align-items:center;justify-content:center;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;font-weight:700;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.compare-card:hover .compare-vs{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.compare-labels{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-left:1rem;padding-right:1rem;padding-top:.75rem}.compare-label{display:flex;min-width:0;flex-direction:column;gap:.125rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));text-decoration-line:none}.compare-label--right{align-items:flex-end;text-align:right}.compare-name{font-size:.875rem;line-height:1.25rem;font-weight:700;line-height:1.25}.compare-meta{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;opacity:.6}.compare-note{padding:.5rem 1rem 1rem;font-size:.75rem;line-height:1rem;line-height:1.375;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.theory-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.75rem}@media (min-width:640px){.theory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.theory-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.theory-card{display:flex;flex-direction:column;gap:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1.25rem}.theory-name{font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:rgb(255 255 255/var(--tw-text-opacity,1))}.theory-desc,.theory-name{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1}.theory-desc{line-height:1.625;color:rgb(204 204 204/var(--tw-text-opacity,1))}.finish-list>: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));--tw-divide-opacity:1;border-color:rgb(51 51 51/var(--tw-divide-opacity,1))}.finish-list{border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.finish-row{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.25rem;padding:1rem}@media (min-width:640px){.finish-row{grid-template-columns:160px 1fr;gap:1rem}}.finish-name{font-weight:700;letter-spacing:-.025em;color:rgb(255 255 255/var(--tw-text-opacity,1))}.finish-name,.finish-use{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1}.finish-use{line-height:1.625;color:rgb(204 204 204/var(--tw-text-opacity,1))}.lrv-card{display:flex;flex-direction:column;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1.5rem}.lrv-value{font-size:clamp(2.5rem,6vw,4rem);line-height:1;font-weight:900;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lrv-max{margin-left:.25rem;vertical-align:baseline;font-size:1rem;line-height:1.5rem;color:rgb(136 136 136/var(--tw-text-opacity,1))}.lrv-band,.lrv-max{font-weight:700;--tw-text-opacity:1}.lrv-band{margin-top:.5rem;font-size:.75rem;line-height:1rem;text-transform:uppercase;letter-spacing:.15em;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lrv-bar{position:relative;margin-top:1rem;height:.5rem;width:100%;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));background:linear-gradient(90deg,#000,#fff)}.lrv-bar-marker{position:absolute;top:-3px;bottom:-3px;width:.125rem;--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1));transform:translateX(-50%)}.lrv-scale{margin-top:.5rem;display:flex;justify-content:space-between;font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.lrv-note{margin-top:1rem;font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.undertone-chips{margin-top:.25rem;margin-bottom:.5rem;display:flex;flex-wrap:wrap;gap:.5rem}.undertone-chip{display:flex;flex-direction:column;gap:.125rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:.5rem .75rem}.ut-k{font-size:10px;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.ut-v{font-size:.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.page-num{display:inline-flex;height:2.25rem;min-width:2.25rem;cursor:pointer;align-items:center;justify-content:center;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding-left:.5rem;padding-right:.5rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.page-num:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.page-num.is-active,.page-num:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.page-num.is-active{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.page-ellipsis{-webkit-user-select:none;-moz-user-select:none;user-select:none;padding-left:.25rem;padding-right:.25rem;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.page-ellipsis,.page-jump-input{font-family:JetBrains Mono,ui-monospace,monospace}.page-jump-input{width:4rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));padding:.375rem .5rem;text-align:center;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px}.page-jump-input:focus{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.page-jump-input::-webkit-inner-spin-button,.page-jump-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.page-jump-input[type=number]{-moz-appearance:textfield}.snippet-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:768px){.snippet-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.snippet-card{border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.snippet-head{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:.5rem .75rem}.snippet-label{color:rgb(136 136 136/var(--tw-text-opacity,1))}.snippet-copy,.snippet-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1}.snippet-copy{cursor:pointer;color:rgb(255 255 255/var(--tw-text-opacity,1))}.snippet-copy:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.snippet-code{overflow-x:auto;white-space:pre;padding:1rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.\!modal,.modal{position:fixed;inset:0;z-index:9998;display:none}.\!modal.open,.modal.\!open,.modal.open{display:block}.modal-backdrop{inset:0;background-color:rgba(0,0,0,.8);--tw-backdrop-blur:blur(8px);-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)}.modal-backdrop,.modal-panel{position:absolute}.modal-panel{left:50%;top:50%;display:flex;max-height:88vh;width:min(92vw,960px);--tw-translate-x:-50%;--tw-translate-y:-50%;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));flex-direction:column;overflow:hidden;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));box-shadow:0 24px 80px rgba(0,0,0,.7);animation:modal-in .25s cubic-bezier(.22,1,.36,1)}@keyframes modal-in{0%{opacity:0;transform:translate(-50%,-48%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));padding:1rem 1.5rem}.modal-swatch{height:2rem;width:2rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.modal-title{font-size:1rem;line-height:1.5rem;font-weight:700;letter-spacing:-.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:768px){.modal-title{font-size:1.125rem;line-height:1.75rem}}.modal-close{cursor:pointer;font-size:1.5rem;line-height:2rem;line-height:1;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.modal-close:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.modal-body{overflow-y:auto;padding:1.5rem}.pal-card{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;transition:opacity .2s ease,transform .2s ease,box-shadow .2s ease}.pal-card.is-placeholder{opacity:0}#palette-row.is-dragging .pal-tool{opacity:0!important;pointer-events:none}.pal-tool[data-pal=drag]{touch-action:none}#palette-row.is-dragging{touch-action:none;cursor:grabbing}#palette-row.is-dragging .pal-card{cursor:grabbing}.pal-ghost{position:fixed;z-index:9999;margin:0;pointer-events:none;box-shadow:0 24px 60px rgba(0,0,0,.55);transform:scale(1.03) rotate(-2deg);will-change:left,top,transform}.pal-ghost .pal-shades,.pal-ghost .pal-tools{display:none}.pal-tool[data-pal=drag]{cursor:grab}.pal-swatch{position:relative;height:10rem;cursor:pointer}@media (min-width:640px){.pal-swatch{height:26rem}}.pal-swatch-info{pointer-events:none;position:absolute;left:.75rem;right:.75rem;bottom:1rem;text-align:center}.pal-swatch-name{font-size:1rem;line-height:1.5rem;font-weight:700;line-height:1.25;letter-spacing:-.025em}@media (min-width:640px){.pal-swatch-name{font-size:1.125rem;line-height:1.75rem}}.pal-swatch-hex{margin-top:.25rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.15em;opacity:.8}.pal-tools{position:absolute;left:0;right:0;top:0;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.5rem}@media (min-width:640px){.pal-tools{flex-direction:column;gap:.375rem}}.pal-tools{bottom:3.5rem}.pal-tool{display:flex;height:2.25rem;width:2.25rem;cursor:pointer;align-items:center;justify-content:center;color:inherit;opacity:.95;pointer-events:auto;transition:opacity .2s ease,transform .28s ease}.pal-tool svg{height:1rem;width:1rem}@media (hover:hover){.pal-tool{opacity:0;transform:translateY(14px);pointer-events:none}.pal-card:hover .pal-tool{opacity:.85;transform:translateY(0);pointer-events:auto}.pal-card:hover .pal-tool:hover{opacity:1}.pal-card:hover .pal-tool:last-child{transition-delay:0s}.pal-card:hover .pal-tool:nth-last-child(2){transition-delay:.03s}.pal-card:hover .pal-tool:nth-last-child(3){transition-delay:.06s}.pal-card:hover .pal-tool:nth-last-child(4){transition-delay:.09s}.pal-card:hover .pal-tool:nth-last-child(5){transition-delay:.12s}.pal-card:hover .pal-tool:nth-last-child(6){transition-delay:.15s}.pal-card:hover .pal-tool:nth-last-child(7){transition-delay:.18s}}.pal-shades{position:absolute;inset:0;display:none}.pal-card.shades-open .pal-shades{display:flex;flex-direction:column}.pal-card.shades-open .pal-swatch-info,.pal-card.shades-open .pal-tools{display:none}.pal-shade{position:relative;flex:1 1 0%;cursor:pointer;transition:flex-grow .2s ease}.pal-shade:hover{flex-grow:2.2}.pal-shade.is-current:after{content:"";position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:9999px;background:#fff;box-shadow:0 0 0 2px rgba(0,0,0,.55)}.harmony-preview{margin-bottom:1rem;display:flex;height:10rem;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.harmony-preview-title{font-size:2.25rem;line-height:2.5rem;font-weight:700;line-height:1}.harmony-preview-sub{font-size:.875rem;line-height:1.25rem}.harmony-score{display:flex;align-items:center;gap:.75rem}.harmony-ratio{font-family:JetBrains Mono,ui-monospace,monospace;font-size:1.5rem;line-height:2rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.harmony-rating{border-width:1px;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em}.harmony-rating.\!ok,.harmony-rating.ok{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.harmony-rating.warn{--tw-border-opacity:1;border-color:rgb(136 136 136/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.harmony-rating.bad{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.harmony-current{margin-top:1rem;display:flex;flex-wrap:wrap;gap:1.5rem}.harmony-cur{display:flex;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.harmony-cur-sw{height:1.5rem;width:1.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.harmony-pick-row{display:flex;gap:.5rem}.harmony-chip{height:3.5rem;cursor:pointer;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;flex:1 1 0}.harmony-chip.sel{position:relative;z-index:10;--tw-scale-x:1.05;--tw-scale-y:1.05;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));--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(2px + 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);--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#000}.swatch-fs{position:fixed;inset:0;z-index:9999;display:none;align-items:flex-end;justify-content:flex-start;padding:2rem}.swatch-fs.\!open,.swatch-fs.open{display:flex}.swatch-fs-close{position:absolute;top:1.25rem;right:1.5rem;cursor:pointer;font-size:2.25rem;line-height:2.5rem;line-height:1;color:inherit}.swatch-fs-name{font-size:1.875rem;line-height:2.25rem;font-weight:700;letter-spacing:-.025em}@media (min-width:768px){.swatch-fs-name{font-size:3rem;line-height:1}}.swatch-fs-hex{margin-top:.5rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:1rem;line-height:1.5rem;text-transform:uppercase;letter-spacing:.15em;opacity:.8}.vroom{position:relative;width:100%;overflow:hidden;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));aspect-ratio:2000/1334}.vroom-layer{isolation:isolate;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.vroom-fill,.vroom-layer{position:absolute;inset:0}.vroom-tex{filter:grayscale(1) contrast(1.25);mix-blend-mode:soft-light;opacity:1}.vroom-plant,.vroom-tex{position:absolute;inset:0;width:100%;height:100%}.vroom-ctrl-label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.vroom-picks{display:flex;gap:.375rem}.vroom-pick{height:2rem;cursor:pointer;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;flex:1 1 0;min-width:0}.vroom-pick.sel{position:relative;z-index:10;--tw-scale-x:1.05;--tw-scale-y:1.05;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));--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(2px + 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);--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#000}.vroom-fs-btn{position:absolute;top:.75rem;right:.75rem;z-index:10;display:flex;height:2.25rem;width:2.25rem;cursor:pointer;align-items:center;justify-content:center;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));background:rgba(0,0,0,.45);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.vroom-fs-btn:hover{background:rgba(0,0,0,.65)}.vroom-fs-btn svg{height:1rem;width:1rem}.vroom-fs-overlay{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:1rem;background:rgba(0,0,0,.95)}.vroom-fs-overlay.\!open,.vroom-fs-overlay.open{display:flex}.vroom-fs-close{position:absolute;top:1.25rem;right:1.5rem;z-index:10;cursor:pointer;font-size:2.25rem;line-height:2.5rem;line-height:1;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.vroom-fs-stage{width:min(96vw,135vh)}.export-options-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.75rem}@media (min-width:640px){.export-options-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.export-options-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.export-option{display:flex;cursor:pointer;align-items:flex-start;gap:1rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1));background-color:transparent;padding:1rem;text-align:left;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.export-option:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.export-option-icon{display:flex;height:2.5rem;width:2.5rem;flex-shrink:0;align-items:center;justify-content:center;--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.export-option:hover .export-option-icon{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.export-option-icon svg{width:22px;height:22px}.export-option-content{display:flex;min-width:0;flex-direction:column;gap:.25rem}.export-option-title{font-size:.875rem;line-height:1.25rem;font-weight:700;line-height:1.25;letter-spacing:-.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.export-option-description{font-size:.75rem;line-height:1rem;line-height:1.375;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}.faq-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));align-items:flex-start;-moz-column-gap:2.5rem;column-gap:2.5rem}@media (min-width:768px){.faq-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.faq-col{display:flex;flex-direction:column}.faq-item{border-top-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.faq-col:first-child .faq-item:last-child,.faq-col:last-child .faq-item:last-child{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.faq-question{display:flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;list-style-type:none;align-items:center;justify-content:space-between;gap:1.5rem;padding-top:1.25rem;padding-bottom:1.25rem;font-size:1rem;line-height:1.5rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@media (min-width:768px){.faq-question{font-size:1.125rem;line-height:1.75rem}}.faq-question::-webkit-details-marker{display:none}.faq-question:hover{color:rgb(204 204 204/var(--tw-text-opacity,1))}.faq-chevron,.faq-question:hover{--tw-text-opacity:1}.faq-chevron{flex-shrink:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:1.5rem;line-height:2rem;font-weight:700;color:rgb(136 136 136/var(--tw-text-opacity,1));transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;transform:rotate(0deg)}.faq-item[open] .faq-chevron{transform:rotate(45deg);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.faq-answer-wrap{overflow:hidden;animation:faq-expand .35s cubic-bezier(.22,1,.36,1)}.faq-answer{max-width:48rem;padding-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity:1;color:rgb(204 204 204/var(--tw-text-opacity,1))}@media (min-width:768px){.faq-answer{font-size:1rem;line-height:1.5rem}}@keyframes faq-expand{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.app-sidebar{position:fixed;top:0;left:0;bottom:0;z-index:50;display:none;width:3.5rem;flex-direction:column;overflow:hidden;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1));transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}@media (min-width:768px){.app-sidebar{display:flex}}.app-sidebar.is-expanded{width:15rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.sidebar-logo{display:flex;height:3.5rem;flex-shrink:0;align-items:center;justify-content:center;border-bottom-width:1px;border-color:rgba(0,0,0,.1);padding-left:.5rem;padding-right:.5rem}.app-sidebar.is-expanded .sidebar-logo{justify-content:flex-start;padding-left:1rem;padding-right:1rem}.sidebar-logo-stack{display:flex;flex-shrink:0;flex-direction:column;align-items:center;gap:3px}.sidebar-mark{display:block;height:19px;width:30px;flex-shrink:0}.sidebar-short{font-size:9px;font-weight:900;line-height:1;letter-spacing:.06em;--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.app-sidebar.is-expanded .sidebar-mark{height:24px;width:38px}.app-sidebar.is-expanded .sidebar-short{display:none}.sidebar-wordmark{display:none;white-space:nowrap;font-size:.875rem;line-height:1.25rem;font-weight:900;letter-spacing:-.025em;--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.app-sidebar.is-expanded .sidebar-wordmark{display:inline-block}.sidebar-nav{flex:1 1 0%;overflow-y:auto;overflow-x:hidden}.sidebar-foot,.sidebar-nav{display:flex;flex-direction:column;gap:.125rem;padding-top:.5rem;padding-bottom:.5rem}.sidebar-foot{border-top-width:1px;border-color:rgba(0,0,0,.1)}.sidebar-item{display:flex;height:2.75rem;align-items:center;gap:.75rem;white-space:nowrap;padding-left:15px;padding-right:15px;color:rgba(0,0,0,.65);text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.sidebar-item:hover{background-color:rgba(0,0,0,.06)}.sidebar-item.is-active,.sidebar-item:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.sidebar-item.is-active{font-weight:700;box-shadow:inset 4px 0 0 #000}.sidebar-item svg{height:22px;width:22px;flex-shrink:0}.sidebar-item--upgrade{font-weight:700;--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.sidebar-label{white-space:nowrap;font-size:.875rem;line-height:1.25rem;font-weight:700;letter-spacing:-.025em;opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.app-sidebar.is-expanded .sidebar-label{opacity:1}.sidebar-toggle{display:flex;height:2.75rem;width:100%;cursor:pointer;align-items:center;gap:.75rem;border-width:0;background-color:transparent;padding-left:15px;padding-right:15px;color:rgba(0,0,0,.5);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.sidebar-toggle:hover{background-color:rgba(0,0,0,.06);--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.sidebar-chevron{height:22px;width:22px;flex-shrink:0;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.app-sidebar.is-expanded .sidebar-chevron{transform:rotate(180deg)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:50;display:flex;height:4rem;align-items:stretch;border-top-width:1px;border-color:rgba(0,0,0,.1);--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding-bottom:env(safe-area-inset-bottom)}@media (min-width:768px){.bottom-nav{display:none}}.bottom-nav-item{display:flex;flex:1 1 0%;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;color:rgba(0,0,0,.55);text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.bottom-nav-item.is-active,.bottom-nav-item:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.bottom-nav-item.is-active{box-shadow:inset 0 2px 0 #000}.bottom-nav-item svg{height:1.5rem;width:1.5rem}.bottom-nav-label{font-size:10px;font-weight:700;letter-spacing:.025em}.sheet-backdrop{pointer-events:none;position:fixed;inset:0;z-index:60;background-color:rgba(0,0,0,.6);opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}@media (min-width:768px){.sheet-backdrop{display:none}}.sheet-backdrop.is-on{pointer-events:auto;opacity:1}.more-sheet{position:fixed;bottom:0;left:0;right:0;z-index:61;max-height:82vh;--tw-translate-y:100%;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));overflow-y:auto;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding-bottom:env(safe-area-inset-bottom);--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1));transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;transition-timing-function:cubic-bezier(0,0,.2,1)}@media (min-width:768px){.more-sheet{display:none}}.more-sheet.is-open{--tw-translate-y:0px;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));--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.more-sheet-head{position:sticky;top:0;display:flex;height:3.5rem;align-items:center;justify-content:space-between;border-bottom-width:1px;border-color:rgba(0,0,0,.1);--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding-left:1.25rem;padding-right:1.25rem}.more-sheet-title{font-size:.875rem;line-height:1.25rem;font-weight:900;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.more-close{cursor:pointer;padding-left:.5rem;padding-right:.5rem;font-size:1.875rem;line-height:2.25rem;line-height:1;color:rgba(0,0,0,.6)}.more-close:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.more-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background-color:rgba(0,0,0,.1)}.more-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding-top:1.5rem;padding-bottom:1.5rem;text-align:center;color:rgba(0,0,0,.75);text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.more-item:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.more-item:active{background-color:rgba(0,0,0,.05)}.more-item svg{height:1.5rem;width:1.5rem}.more-item span{font-size:.75rem;line-height:1rem;font-weight:700;letter-spacing:-.025em}.more-upgrade{margin:1rem;display:block;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));padding-top:1rem;padding-bottom:1rem;text-align:center;font-size:.875rem;line-height:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.more-upgrade:hover{background-color:rgba(0,0,0,.8)}.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}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-3{top:.75rem}.col-span-2{grid-column:span 2/span 2}.mx-1{margin-left:.25rem;margin-right:.25rem}.-mt-3{margin-top:-.75rem}.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-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.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}.hidden{display:none}.h-1{height:.25rem}.h-1\/3{height:33.333333%}.h-16{height:4rem}.h-24{height:6rem}.h-28{height:7rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[21px\]{height:21px}.min-h-screen{min-height:100vh}.w-16{width:4rem}.w-20{width:5rem}.w-5{width:1.25rem}.w-9{width:2.25rem}.w-\[34px\]{width:34px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.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-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,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))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-px{gap:1px}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.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-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))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-border{--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.border-white\/60{border-color:hsla(0,0%,100%,.6)}.bg-\[\%s\]{background-color:%s}.bg-bg,.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-border{--tw-bg-opacity:1;background-color:rgb(51 51 51/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-4{padding-bottom:1rem}.pl-5{padding-left:1.25rem}.pr-1{padding-right:.25rem}.pr-4{padding-right:1rem}.pt-10{padding-top:2.5rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,ui-monospace,monospace}.font-sans{font-family:Metropolis,Nohemi,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.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-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-widest{letter-spacing:.15em}.text-\[\%s\]{color:%s}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-muted{--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.text-secondary{--tw-text-opacity:1;color:rgb(204 204 204/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}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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,.drop-shadow{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)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.invert{--tw-invert:invert(100%)}.filter,.invert{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-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-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}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[ri\:ri\+si\]{ri:ri+si}.\[start\:end\]{start:end}@font-face{font-family:Nohemi;src:url(/static/fonts/nohemi-light.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Nohemi;src:url(/static/fonts/nohemi-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Nohemi;src:url(/static/fonts/nohemi-medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Nohemi;src:url(/static/fonts/nohemi-semibold.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Nohemi;src:url(/static/fonts/nohemi-bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Nohemi;src:url(/static/fonts/nohemi-extrabold.woff2) format("woff2");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Nohemi;src:url(/static/fonts/nohemi-black.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:Sage Grotesk;src:url(/static/fonts/sage-grotesk.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/static/fonts/jetbrains-mono.woff2) format("woff2");font-weight:400 600;font-style:normal;font-display:swap}@font-face{font-family:Metropolis;src:url(/static/fonts/metropolis-extra-light.woff2) format("woff2");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Metropolis;src:url(/static/fonts/metropolis-light.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Metropolis;src:url(/static/fonts/metropolis-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Metropolis;src:url(/static/fonts/metropolis-medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Metropolis;src:url(/static/fonts/metropolis-semi-bold.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Metropolis;src:url(/static/fonts/metropolis-bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Metropolis;src:url(/static/fonts/metropolis-extra-bold.woff2) format("woff2");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Metropolis;src:url(/static/fonts/metropolis-black.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}*{scrollbar-width:thin;scrollbar-color:#3a3a3a transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:#3a3a3a;border:3px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background-color:#fff}::-webkit-scrollbar-corner{background:transparent}.hover\:border-white:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.hover\:border-white\/40:hover{border-color:hsla(0,0%,100%,.4)}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.focus\:border-white:focus{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.group:hover .group-hover\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:h-36{height:9rem}.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\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (min-width:768px){.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\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:p-6{padding:1.5rem}.md\:pb-0{padding-bottom:0}.md\:pl-14{padding-left:3.5rem}}@media (min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:w-52{width:13rem}.lg\:min-w-0{min-width:0}.lg\:flex-1{flex:1 1 0%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}}
/* app.css — handcrafted styles for app components (auth, workspace, admin,
   pricing). NOT processed by Tailwind, so nothing is purged. Single source of
   truth for these components; design tokens live in :root below.
   Sharp, no border-radius — matches the DSGN.HOUSE brand. */

:root {
  --bd:        rgba(255, 255, 255, .14);
  --bd-soft:   rgba(255, 255, 255, .12);
  --bd-strong: rgba(255, 255, 255, .25);
  --muted:     #9a9a9a;
  --muted-dim: #6a6a6a;
  --inset:     #000;
  --inset-2:   #000;
  --pos:       #19c37d;
  --neg:       #ff5a5a;
  --mono:      'JetBrains Mono', monospace;
}

/* ---------- like / favorite heart (color / paint / palette) ---------- */
.like-btn { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; padding: 0; border: none; background: transparent; cursor: pointer; color: rgba(255,255,255,.55); line-height: 0; }
.like-btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; transition: transform .12s; }
.like-btn:hover { color: #fff; }
.like-btn:hover svg { transform: scale(1.12); }
/* liked = filled WHITE (monochrome premium, not red) */
.like-btn.is-liked { color: #fff; }
.like-btn.is-liked svg { fill: currentColor; stroke: currentColor; }
/* framed square heart — same height as .btn (46px), single source here */
.like-btn--framed { width: 46px; height: 46px; border: 1px solid rgba(255,255,255,.28); color: #fff; box-sizing: border-box; flex: none; }
.like-btn--framed svg { width: 20px; height: 20px; }
.like-btn--framed:hover { background: rgba(255,255,255,.08); }
.like-btn--framed.is-liked { background: #fff; }
.like-btn--framed.is-liked svg { fill: #000; stroke: #000; }
/* heart over a colour swatch (light bg) — chip so it stays visible */
.like-btn--onswatch { background: rgba(0,0,0,.4); width: 26px; height: 26px; }
.like-btn--onswatch svg { width: 15px; height: 15px; }

/* ---------- workspace favorites ---------- */
.fav-empty { color: var(--muted); font-size: .82rem; padding: .6rem 0; }
.fav-colors { display: grid; grid-template-columns: repeat(auto-fill, minmax(76px, 1fr)); gap: .6rem; }
.fav-color { position: relative; }
.fav-color-sw { display: block; height: 76px; border: 1px solid var(--bd); }
.fav-color-heart { position: absolute; top: .3rem; right: .3rem; }
.fav-paints { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .6rem; }
.fav-paint { position: relative; }
.fav-paint-card { border: 1px solid var(--bd-soft); text-decoration: none; display: flex; align-items: stretch; }
.fav-paint-c { flex: none; align-self: stretch; aspect-ratio: 1; min-width: 64px; }
.fav-paint-m { padding: .5rem .6rem; min-width: 0; padding-right: 2rem; }
.fav-paint-b { display: block; font-size: .54rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; color: var(--muted); }
.fav-paint-n { display: block; font-size: .8rem; color: #fff; margin-top: .15rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fav-paint-code { display: block; font-family: var(--mono); font-size: .62rem; color: #bdbdbd; margin-top: .1rem; }
.fav-paint-heart { position: absolute; top: .3rem; right: .2rem; }
.fav-pal-heart { position: absolute; top: .4rem; right: .4rem; }
.wc-combo { position: relative; }
.wc-combo-heart { position: absolute; top: .5rem; right: .5rem; z-index: 2; }
/* Combo swatch stacks the role (top, on hover) over the real paint code (bottom,
   always visible) so the grid proves the colours map to buyable paints. */
.wc-swatch { flex-direction: column; align-items: center; justify-content: space-between; gap: 2px; }
.wc-paint { font: 600 9px/1.15 var(--mono, 'JetBrains Mono', monospace); letter-spacing: .02em; opacity: .9; text-align: center; word-break: break-word; min-height: 11px; align-self: stretch; }
/* Brand picker above the combo grid — keeps the whole grid in one buyable brand. */
.wc-brandbar { display: flex; align-items: center; gap: .75rem; margin-bottom: 1.1rem; flex-wrap: wrap; }
.wc-brandbar-label { font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; font-weight: 700; color: var(--muted, #9a9a9a); }
.wc-brandbar .bsel { width: 260px; max-width: 100%; }

/* ---------- shared atoms ---------- */
.app-input {
  width: 100%; height: 40px; box-sizing: border-box; background: var(--inset); border: 1px solid rgba(255,255,255,.2);
  color: #fff; font-size: .92rem; padding: 0 .8rem;
}
.app-input:focus { outline: none; box-shadow: 0 0 0 2px #fff; border-color: #fff; }
.app-label {
  display: block; font-size: .6rem; letter-spacing: .12em; text-transform: uppercase;
  font-weight: 700; color: var(--muted); margin: 0 0 .4rem;
}
.app-btn {
  display: inline-flex; align-items: center; justify-content: center; height: 40px; box-sizing: border-box;
  background: #fff; color: #000; border: 1px solid #fff; font-size: .72rem;
  letter-spacing: .05em; text-transform: uppercase; font-weight: 700;
  padding: 0 1.2rem; cursor: pointer;
}
.app-btn:hover { background: #cfcfcf; border-color: #cfcfcf; }
.app-btn--ghost { background: transparent; color: #fff; }
.app-btn--ghost:hover { background: #fff; color: #000; }
.app-btn--danger { background: transparent; color: var(--neg); border-color: var(--neg); }
.app-btn--danger:hover { background: var(--neg); color: #000; }
.app-err {
  border: 1px solid var(--neg); color: #ff8a8a; font-size: .78rem;
  padding: .6rem .8rem; margin-bottom: 1.1rem;
}

/* ---------- sidebar: hide scrollbar + centered scroll arrow ---------- */
/* no scrollbar — scroll via the arrow button at the bottom */
.sidebar-nav { scrollbar-width: none; -ms-overflow-style: none; }
.sidebar-nav::-webkit-scrollbar { width: 0; height: 0; display: none; }
.sidebar-scroll { display: none; align-items: center; justify-content: center; width: 100%; height: 28px; margin-top: -28px; border: none; background: linear-gradient(to top, #fff 60%, rgba(255,255,255,0)); cursor: pointer; position: relative; z-index: 4; }
.sidebar-scroll svg { width: 20px; height: 20px; color: #000; transition: transform .2s; }
.sidebar-scroll.is-up svg { transform: rotate(180deg); }
.sidebar-scroll:hover svg { color: #555; }
/* expanded: show a thin scrollbar instead of the arrow */
.app-sidebar.is-expanded .sidebar-nav { scrollbar-width: thin; scrollbar-color: rgba(0,0,0,.22) transparent; }
.app-sidebar.is-expanded .sidebar-nav::-webkit-scrollbar { width: 6px; display: block; }
.app-sidebar.is-expanded .sidebar-nav::-webkit-scrollbar-button { display: none; height: 0; width: 0; }
.app-sidebar.is-expanded .sidebar-nav::-webkit-scrollbar-thumb { background: rgba(0,0,0,.2); }
.app-sidebar.is-expanded .sidebar-nav::-webkit-scrollbar-track { background: transparent; }
.app-sidebar.is-expanded .sidebar-scroll { display: none !important; }

/* Logo mark holds its position when the sidebar expands — left-aligned in both
   states, its 32px icon centred on the same vertical axis as the tool icons
   (px-[15px] + 22px → centre 26px; logo: 10px + 32px → centre 26px). */
.sidebar-logo { justify-content: flex-start !important; padding-left: 10px !important; padding-right: 10px !important; }

/* ---------- sidebar: roomier rows (premium, more breathing space) ---------- */
.sidebar-nav { padding-top: .6rem; padding-bottom: 2.4rem; gap: .55rem; }
.sidebar-item { height: 52px; }
.sidebar-item svg { width: 24px; height: 24px; }
/* Tools (.sidebar-nav) and bottom block (.sidebar-foot) FORCED to the exact same
   gap + item height, so they look identical. Tailwind gave them different gaps;
   !important guarantees they match. */
.sidebar-nav, .sidebar-foot { display: flex !important; flex-direction: column !important; gap: 2px !important; }
.sidebar-foot { padding-top: 2px !important; padding-bottom: .5rem !important; }
.sidebar-item, .sidebar-toggle { height: 42px !important; margin: 0 !important; flex: none !important; }
.sidebar-toggle .sidebar-chevron { width: 24px; height: 24px; }

/* ---------- sidebar tool groups (even rhythm, thin dividers) ---------- */
/* same vertical gap everywhere; the group divider sits in that gap, no extra space */
.sidebar-group { margin: .55rem .55rem; padding-top: .55rem; border-top: 1px solid rgba(0,0,0,.09); }
.sidebar-group span { display: block; font-size: .56rem; letter-spacing: .14em; text-transform: uppercase; font-weight: 800; color: #9a9a9a; white-space: nowrap; padding-left: .35rem; opacity: 0; height: 0; overflow: hidden; transition: opacity .15s; }
.app-sidebar.is-expanded .sidebar-group span { opacity: 1; height: auto; }
.app-sidebar:not(.is-expanded) .sidebar-group { margin: .55rem .5rem; padding-top: 0; }

/* ---------- auth split layout (pixel animation left, form right) ---------- */
.auth-split { display: grid; grid-template-columns: 7fr 3fr; min-height: 100vh; }
.auth-anim { position: relative; background: #000; overflow: hidden; }
.auth-anim canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.auth-anim-mark { position: absolute; left: 2.2rem; bottom: 2rem; z-index: 2; font-size: .62rem; letter-spacing: .22em; text-transform: uppercase; font-weight: 800; color: #fff; text-decoration: none; }
.auth-form { display: flex; align-items: center; justify-content: center; padding: 2rem; }
.auth-form .au-wrap { padding: 1rem 0; }
@media (max-width: 860px) { .auth-split { grid-template-columns: 1fr; } .auth-anim { display: none; } }

/* ---------- footer oversized wordmark (Sage Grotesk, edge-cropped) ---------- */
/* SVG wordmark: textLength stretches "DSGN.HOUSE" to fill the full width exactly
   (never overflows), bold via stroke, cropped at the bottom by the wrap. */
.footer-wordmark-wrap { overflow: hidden; line-height: 0; margin-top: 2.5rem; }
.footer-wordmark { display: block; width: 100%; height: auto; }
.footer-wordmark text { font-family: "Sage Grotesk", "Nohemi", sans-serif; fill: #1d1d1d; paint-order: stroke; stroke: #1d1d1d; stroke-width: 4; user-select: none; }

/* ---------- home hero (full-height, reuses the .auth-anim pixel canvas) ---------- */
.home-hero { position: relative; overflow: hidden; min-height: 100vh; min-height: 100svh; display: flex; align-items: center; }
.home-hero .auth-anim { position: absolute; inset: 0; z-index: 0; display: block; }
.home-hero-veil { position: absolute; inset: 0; z-index: 0; pointer-events: none; background: linear-gradient(90deg, rgba(0,0,0,.88) 6%, rgba(0,0,0,.45) 40%, transparent 80%); }
.home-hero-inner { position: relative; z-index: 1; width: 100%; }
@media (max-width: 680px) { .home-hero { min-height: auto; padding: 5rem 0 2.5rem; } }

/* ---------- auth (login / signup) ---------- */
/* width:100% so the form block fills its column up to max-width instead of
   shrinking to the title text — keeps login & signup field widths identical. */
.au-wrap { width: 100%; max-width: 300px; margin: 0 auto; padding: 4rem 0 5rem; }
.au-eyebrow { font-size: .6rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 700; color: var(--muted); text-align: center; margin-bottom: .7rem; }
.au-title { font-size: 1.7rem; font-weight: 700; color: #fff; text-align: center; line-height: 1.1; margin-bottom: .4rem; }
.au-sub { font-size: .82rem; color: var(--muted); text-align: center; margin-bottom: 2rem; }
.au-card { border: none; padding: 0; }
.au-label { display: block; font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--muted); margin: 0 0 .4rem; }
.au-input { width: 100%; background: var(--inset); border: 1px solid rgba(255,255,255,.2); color: #fff; font-size: .92rem; padding: .7rem .8rem; margin-bottom: 1.1rem; }
.au-input:focus { outline: none; box-shadow: 0 0 0 2px #fff; border-color: #fff; }
.au-hint { font-size: .66rem; color: var(--muted-dim); margin: -.7rem 0 1.1rem; }
.au-btn { width: 100%; background: #fff; color: #000; border: 1px solid #fff; font-size: .74rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; padding: .85rem; cursor: pointer; }
.au-btn:hover { background: #cfcfcf; border-color: #cfcfcf; }
.au-alt { text-align: center; font-size: .82rem; color: var(--muted); margin-top: 1.4rem; }
.au-alt a { color: #fff; text-decoration: none; font-weight: 600; }
.au-alt a:hover { text-decoration: underline; }
.au-legal { text-align: center; font-size: .66rem; color: var(--muted-dim); margin-top: 1rem; }
.au-legal a { color: var(--muted); }
.au-google { display: flex; align-items: center; justify-content: center; gap: .6rem; width: 100%; background: #fff; color: #1f1f1f; border: 1px solid #fff; font-size: .82rem; font-weight: 600; padding: .75rem; text-decoration: none; }
.au-google:hover { background: #ececec; border-color: #ececec; }
.au-or { display: flex; align-items: center; gap: .7rem; margin: 1.1rem 0; }
.au-or::before, .au-or::after { content: ''; flex: 1; height: 1px; background: var(--bd); }
.au-or span { font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-dim); }

/* ---------- workspace ---------- */
/* App-shell fixed top bar (logged-in pages). Brand left, nav, account right.
   The sidebar drops below it and loses its own logo, so expanding the sidebar
   no longer clashes with the bar. Reuses .ws-topnav / .ws-topbtn / .ws-plan. */
.appbar { position: fixed; top: 0; left: 0; right: 0; z-index: 60; height: 56px; display: flex; align-items: center; background: #000; border-bottom: 1px solid var(--bd-soft); padding-right: 1.5rem; }
/* Logo mark sits in a 56px square directly over the sidebar rail (same place
   the sidebar logo used to live) — white, no wordmark. */
.appbar-logo { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; flex: none; text-decoration: none; }
/* The mark is 64:40 — a square box would squash the bars, and the spacing between
   them is the whole idea. Colour comes from currentColor on the bar.
   Stacked with DSGN under it: 24 + 3 + 9 = 36px inside a 56px bar, 10px of air
   top and bottom. Same lockup as the collapsed sidebar. */
.appbar-logo img { width: 32px; height: 32px; }
.appbar-logo-stack { display: flex; flex-direction: column; align-items: center; gap: 3px; }
.appbar-logo svg { width: 30px; height: 19px; display: block; }
.appbar-logo-word { font-size: 9px; font-weight: 900; letter-spacing: .06em; line-height: 1; }
.appbar-nav { margin-left: .8rem; }
/* Active tab — full bar height so the underline sits at the bottom edge and
   reads as a clear indicator; bright white + bold vs muted inactive. */
.appbar .appbar-nav a { height: 56px; }
.appbar .appbar-nav a.on { color: #fff !important; font-weight: 800; border-bottom: 2px solid #fff; }
.appbar-act { margin-left: auto; }
/* Square avatar (no border-radius — on-brand). Image or initial fallback. */
.appbar-ava { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; flex: none; border: 1px solid var(--bd-strong); overflow: hidden; text-decoration: none; background: #000; }
.appbar-ava img { width: 100%; height: 100%; object-fit: cover; display: block; }
.appbar-ava span { font-size: .9rem; font-weight: 800; color: #fff; }
.appbar-ava:hover { border-color: #fff; }
/* Avatar block in settings. */
.ws-ava-row { display: flex; align-items: center; gap: 1.1rem; flex-wrap: wrap; }
.ws-ava-prev { width: 72px; height: 72px; flex: none; border: 1px solid var(--bd-strong); overflow: hidden; display: inline-flex; align-items: center; justify-content: center; background: #000; }
.ws-ava-prev img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ws-ava-prev span { font-size: 1.6rem; font-weight: 800; color: #fff; }
.ws-ava-ctl { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.ws-ava-pick { width: auto; padding: .7rem 1.2rem; cursor: pointer; }
.ws-ava-hint { flex-basis: 100%; font-size: .74rem; color: var(--muted); margin: .2rem 0 0; }
/* When the bar is present: sidebar starts under it, loses its logo; content clears it. */
.app-shell .app-sidebar { top: 56px; }
.app-shell .sidebar-logo { display: none; }
.app-shell-main { padding-top: 56px; }
/* Kill horizontal overflow on logged-in pages (off-screen menu panel + any wide
   grid child) — this is what made saved palettes look cut off / stretched. */
body.app-shell { overflow-x: clip; }
/* Hamburger — nav + actions fold into a right slide-in panel on tablet/phone,
   same design as the generator's hamburger (title + × close + backdrop). */
.appbar-menu { display: flex; align-items: center; flex: 1; min-width: 0; }
.appbar-menu-head, .appbar-backdrop { display: none; }
.appbar-burger { display: none; }
@media (max-width: 1024px) {
  .appbar-burger { display: inline-flex; align-items: center; justify-content: center; margin-left: auto; width: 40px; height: 40px; flex: none; background: transparent; border: 1px solid rgba(255,255,255,.2); color: #fff; cursor: pointer; }
  .appbar-burger svg { width: 20px; height: 20px; }
  .appbar-menu {
    position: fixed; top: 0; right: 0; bottom: 0; z-index: 70;
    width: 300px; max-width: 86vw; flex: none; flex-direction: column; align-items: stretch; gap: 4px;
    padding: 20px 16px 24px; background: #0a0a0a; border-left: 1px solid rgba(255,255,255,.18);
    overflow-y: auto; transform: translateX(100%); transition: transform .26s cubic-bezier(.22,1,.36,1);
  }
  .appbar-menu.open { transform: translateX(0); box-shadow: -16px 0 48px rgba(0,0,0,.5); }
  .appbar-menu-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-bottom: 14px; margin-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,.12); }
  .appbar-menu-title { font: 800 15px/1 ui-sans-serif,system-ui; letter-spacing: .16em; text-transform: uppercase; color: #fff; }
  .appbar-menu-close { display: flex; align-items: center; justify-content: center; flex: none; width: 36px; height: 36px; margin: -6px -6px -6px 0; background: transparent; border: 0; color: #fff; font-size: 28px; line-height: 1; cursor: pointer; }
  .appbar-nav, .appbar-act { margin: 0; }
  .appbar-nav { flex-direction: column; align-items: stretch; }
  .appbar-nav a { height: 46px; padding: 0 .4rem; font-size: .74rem; }
  .appbar-act { flex-direction: column; align-items: stretch; gap: .5rem; margin-top: .7rem; padding-top: .8rem; border-top: 1px solid var(--bd-soft); }
  .appbar-act .ws-topbtn, .appbar-act .ws-plan, .appbar-act form, .appbar-act form .ws-topbtn { width: 100%; justify-content: center; }
  .appbar-act .ws-topbtn, .appbar-act .ws-plan { height: 46px; }
  .appbar-ava { width: 46px; height: 46px; }
  .appbar-backdrop { display: block; position: fixed; inset: 0; z-index: 69; background: rgba(0,0,0,.5); opacity: 0; pointer-events: none; transition: opacity .26s ease; }
  .appbar-backdrop.open { opacity: 1; pointer-events: auto; }
}
/* Grid children never force overflow (strip hex labels are nowrap). */
.ws-grid > * { min-width: 0; }

/* Workspace top-bar — dark, on-brand, full-bleed to the page container edges.
   Every control is the same 40px height so the right-hand row reads as one. */
.ws-topbar { position: sticky; top: 0; z-index: 50; display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; background: #000; border-bottom: 1px solid var(--bd-soft); min-height: 64px; padding: .7rem 1.5rem; margin: -2.5rem -1.5rem 1.6rem; }
@media (min-width: 640px) { .ws-topbar { margin-left: -2rem; margin-right: -2rem; padding-left: 2rem; padding-right: 2rem; } }
@media (min-width: 768px) { .ws-topbar { margin-left: -3rem; margin-right: -3rem; padding-left: 3rem; padding-right: 3rem; } }
.ws-topnav { display: flex; align-items: center; gap: .2rem; flex-wrap: wrap; }
.ws-topnav a { display: inline-flex; align-items: center; height: 40px; font-size: .68rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; color: var(--muted); padding: 0 .9rem; text-decoration: none; border-bottom: 2px solid transparent; }
.ws-topnav a:hover { color: #fff; }
.ws-topnav a[data-on=true] { color: #fff; border-bottom-color: #fff; }
.ws-topact { display: flex; align-items: center; gap: .5rem; }
.ws-topbtn { display: inline-flex; align-items: center; height: 40px; background: transparent; border: 1px solid var(--bd-strong); color: #cfcfcf; font-size: .62rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; padding: 0 .95rem; cursor: pointer; text-decoration: none; }
.ws-topbtn:hover { background: #fff; color: #000; border-color: #fff; }
.ws-topbtn--cta { background: #fff; color: #000; border-color: #fff; }
.ws-topbtn--cta:hover { background: #cfcfcf; border-color: #cfcfcf; }
.ws-greet { margin-bottom: 1.4rem; }
.ws-hi { font-size: 2rem; font-weight: 800; color: #fff; line-height: 1.1; letter-spacing: -.01em; }
.ws-mail { font-size: .85rem; color: var(--muted); margin-top: .35rem; }
/* inside a header row the greet block carries no extra bottom gap */
.ws-head-row .ws-greet { margin-bottom: 0; }
.ws-plan { display: inline-flex; align-items: center; height: 40px; font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 800; padding: 0 .75rem; border: 1px solid; box-sizing: border-box; }
.ws-topact .ws-plan--free { color: var(--muted); border-color: var(--bd-strong); }
.ws-topact .ws-plan--studio { color: #000; background: #fff; border-color: #fff; }
/* Compact upgrade strip (was a big block — slimmed to one line). */
.ws-upgrade { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: .6rem .65rem .6rem 1rem; border: 1px solid var(--bd-strong); margin: 0 0 1.4rem; }
.ws-up-text { font-size: .82rem; color: var(--muted); }
.ws-up-text strong { color: #fff; font-weight: 700; }
.ws-upgrade a { flex: none; display: inline-flex; align-items: center; height: 40px; background: #fff; color: #000; text-decoration: none; font-size: .6rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; padding: 0 1.1rem; box-sizing: border-box; }
.ws-upgrade a:hover { background: #cfcfcf; }
.ws-nav { display: flex; gap: .4rem; flex-wrap: wrap; margin: 1.2rem 0 1.6rem; border-bottom: 1px solid var(--bd-soft); padding-bottom: .8rem; }
.ws-nav a { font-size: .66rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; color: var(--muted); padding: .4rem .7rem; text-decoration: none; border: 1px solid transparent; }
.ws-nav a:hover { color: #fff; }
.ws-nav a[data-on=true] { background: #fff; color: #000; }
.ws-bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.4rem; }
.ws-bar-l { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.ws-sort { display: flex; gap: .3rem; }
.ws-sortlink { display: inline-flex; align-items: center; height: 40px; box-sizing: border-box; font-size: .64rem; letter-spacing: .05em; text-transform: uppercase; font-weight: 700; color: var(--muted); padding: 0 .9rem; text-decoration: none; border: 1px solid var(--bd-strong); }
.ws-sortlink:hover { color: #fff; }
.ws-sortlink[data-on=true] { background: #fff; color: #000; border-color: #fff; }
.ws-flash { font-size: .8rem; padding: .6rem .9rem; margin-bottom: 1.4rem; border: 1px solid; }
.ws-flash--ok { color: var(--pos); border-color: var(--pos); }
.ws-flash--err { color: var(--neg); border-color: var(--neg); }
.ws-set-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.2rem; }
.ws-edit { position: absolute; top: .4rem; right: 2.4rem; background: rgba(0,0,0,.55); border: none; color: #fff; width: 24px; height: 24px; cursor: pointer; font-size: .8rem; line-height: 1; opacity: 0; transition: opacity .15s; }
.ws-pal-wrap { position: relative; }
.ws-pal-wrap:hover .ws-edit { opacity: 1; }
.ws-edit:hover { background: #fff; color: #000; }
.ws-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
@media (max-width: 860px) { .ws-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .ws-grid { grid-template-columns: 1fr; } }
.ws-pal { border: 1px solid var(--bd-soft); text-decoration: none; display: block; position: relative; }
/* Bigger, premium strip; hover a swatch to expand it and reveal its hex. */
.ws-strip { display: flex; height: 112px; }
.ws-strip span { flex: 1; position: relative; display: flex; align-items: flex-end; justify-content: center; transition: flex .18s ease; overflow: hidden; }
.ws-strip:hover span { flex: .7; }
.ws-strip span:hover { flex: 2.6; }
.ws-strip b { font-family: var(--mono); font-size: .58rem; font-weight: 700; padding: .35rem; opacity: 0; transition: opacity .15s; white-space: nowrap; pointer-events: none; }
.ws-strip span:hover b { opacity: 1; }
.ws-foot { padding: .6rem .7rem; display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.ws-pname { font-size: .78rem; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ws-psrc { font-size: .58rem; letter-spacing: .06em; text-transform: uppercase; color: var(--muted-dim); }
.ws-del { position: absolute; top: .4rem; right: .4rem; background: rgba(0,0,0,.55); border: none; color: #fff; width: 24px; height: 24px; cursor: pointer; font-size: .9rem; line-height: 1; opacity: 0; transition: opacity .15s; }
.ws-pal-wrap:hover .ws-del { opacity: 1; }
.ws-del:hover { background: var(--neg); }
.ws-empty { border: 1px dashed rgba(255,255,255,.2); padding: 3rem 1.5rem; text-align: center; color: var(--muted); }
.ws-empty a { color: #fff; }

/* ---------- admin ---------- */
.ad-top { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.ad-title { font-size: 1.5rem; font-weight: 700; color: #fff; }
.ad-back { font-size: .62rem; letter-spacing: .05em; text-transform: uppercase; font-weight: 700; color: #cfcfcf; border: 1px solid var(--bd-strong); padding: .4rem .7rem; text-decoration: none; }
.ad-back:hover { background: #fff; color: #000; border-color: #fff; }
.ad-nav { display: flex; gap: .4rem; flex-wrap: wrap; margin-bottom: 1.6rem; border-bottom: 1px solid var(--bd-soft); padding-bottom: .8rem; }
.ad-nav a { font-size: .66rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; color: var(--muted); padding: .4rem .7rem; text-decoration: none; border: 1px solid transparent; }
.ad-nav a:hover { color: #fff; }
.ad-nav a[data-on=true] { background: #fff; color: #000; }
.ad-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .8rem; margin-bottom: 1.4rem; }
.ad-card { border: 1px solid var(--bd); padding: 1rem 1.1rem; }
.ad-k { font-size: .56rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: var(--muted); }
.ad-v { font-size: 1.8rem; font-weight: 700; color: #fff; font-family: var(--mono); line-height: 1.1; margin-top: .3rem; }
.ad-v small { font-size: .8rem; color: var(--muted); }
.ad-note { font-size: .72rem; color: var(--muted-dim); border-left: 2px solid rgba(255,255,255,.2); padding: .5rem .8rem; margin: 0 0 1.6rem; }
.ad-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem; }

/* KPI groups — labelled rows instead of one flat wall of cards */
.ad-kpi-group { margin-bottom: 1.3rem; }
.ad-kpi-head { font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 800; color: var(--muted); margin: 0 0 .55rem; }
.ad-kpi-group .ad-cards { margin-bottom: 0; }

/* Range filter (time-series period switcher) */
.ad-range { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; margin: 0 0 1rem; }
.ad-dim { color: var(--muted); }
.ad-range-lbl { font-size: .56rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: var(--muted); margin-right: .4rem; }
.ad-range a { display: inline-flex; align-items: center; height: 40px; box-sizing: border-box; font: 700 .64rem/1 ui-sans-serif,system-ui; color: var(--muted); border: 1px solid var(--bd-strong); padding: 0 .85rem; text-decoration: none; }
.ad-range a:hover { color: #fff; }
.ad-range a[data-on=true] { background: #fff; color: #000; border-color: #fff; }

/* Charts grid — several per row (auto-fit), each card compact, not full-width */
.ad-charts { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1rem; margin: 0 0 1.6rem; }
.ad-chart { border: 1px solid var(--bd); padding: 1rem 1.1rem 1.2rem; min-width: 0; }
.ad-chart--wide { grid-column: auto; }
.ad-chart-h { font-size: .58rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: var(--muted); margin-bottom: .9rem; }
.ad-chart-empty { color: var(--muted-dim); font-size: .8rem; padding: 1.6rem 0; text-align: center; }
/* Area chart + hover tooltip */
.ad-area-box { position: relative; }
.ad-area { width: 100%; height: 104px; display: block; }
.ad-area-peak { position: absolute; top: -1.7rem; right: 0; font: 700 .56rem/1 var(--mono); color: var(--muted); }
.ad-area-x { display: flex; justify-content: space-between; font: .55rem/1 var(--mono); color: var(--muted-dim); margin-top: .4rem; }
.ad-area-guide { position: absolute; top: 0; width: 1px; height: 104px; background: rgba(255,255,255,.4); pointer-events: none; }
.ad-area-dot { position: absolute; width: 8px; height: 8px; background: #fff; margin: -4px 0 0 -4px; pointer-events: none; }
.ad-area-tip { position: absolute; top: -1.7rem; transform: translateX(-50%); background: #fff; color: #000; font: 700 .6rem/1 var(--mono); padding: 3px 6px; white-space: nowrap; pointer-events: none; z-index: 3; }
.ad-donut-wrap { display: flex; align-items: center; gap: 1.2rem; }
.ad-donut { width: 92px; height: 92px; flex: none; }
.ad-legend { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .45rem; min-width: 0; flex: 1; }
.ad-legend li { display: flex; align-items: center; gap: .5rem; font-size: .74rem; color: #cfcfcf; }
.ad-legend b { margin-left: auto; color: #fff; font-family: var(--mono); }
.ad-dot { width: 10px; height: 10px; flex: none; display: inline-block; }
.ad-bars { display: flex; flex-direction: column; gap: .55rem; }
.ad-bar { display: grid; grid-template-columns: 92px 1fr 34px; align-items: center; gap: .6rem; }
.ad-bar-l { font-size: .68rem; color: #cfcfcf; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ad-bar-track { height: 10px; background: rgba(255,255,255,.08); }
.ad-bar-fill { display: block; height: 100%; background: #fff; }
.ad-bar-v { font-size: .7rem; font-family: var(--mono); color: #fff; text-align: right; }
.ad-table-wrap { overflow-x: auto; }
/* Recent-signups rich row */
.ad-u { display: flex; align-items: center; gap: .6rem; }
.ad-ava-sm { width: 30px; height: 30px; flex: none; border: 1px solid var(--bd-strong); overflow: hidden; display: inline-flex; align-items: center; justify-content: center; background: #000; font-size: .7rem; font-weight: 800; color: #fff; }
.ad-ava-sm img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ad-u-meta { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.ad-u-meta b { color: #fff; font-size: .8rem; }
.ad-u-mail { font-family: var(--mono); font-size: .68rem; color: var(--muted); }
.ad-src { display: inline-block; font: 700 .55rem/1 ui-sans-serif,system-ui; letter-spacing: .06em; text-transform: uppercase; padding: .3rem .5rem; border: 1px solid var(--bd-strong); white-space: nowrap; }
.ad-src--g { color: #000; background: #fff; border-color: #fff; }
.ad-src--e { color: var(--muted); }
.ad-src--fail { color: var(--neg); border-color: var(--neg); }
.ad-row-link { cursor: pointer; }
.ad-row-link:hover td { background: rgba(255,255,255,.04); }
@media (max-width: 560px) { .ad-charts { grid-template-columns: 1fr; } }
.ad-table { width: 100%; border-collapse: collapse; font-size: .8rem; }
.ad-table th, .ad-table td { text-align: left; padding: .5rem .6rem; border: 1px solid var(--bd-soft); }
.ad-table th { font-size: .56rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.ad-table td { color: #cfcfcf; }
.ad-table a { color: #fff; text-decoration: none; }
.ad-table a:hover { text-decoration: underline; }
.ad-mono { font-family: var(--mono); color: #fff; }
.ad-swatch { display: inline-block; width: 22px; height: 22px; border: 1px solid var(--bd-strong); vertical-align: middle; }
.ad-pstrip { display: inline-flex; width: 120px; height: 22px; border: 1px solid var(--bd-strong); vertical-align: middle; }
.ad-pstrip span { flex: 1; }
.ad-uava { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border: 1px solid var(--bd-strong); overflow: hidden; background: #000; flex: none; margin-right: .55rem; }
.ad-uava img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ad-uava span { font-size: .7rem; font-weight: 800; color: #fff; }
.ad-uava--lg { width: 46px; height: 46px; margin-right: 0; }
.ad-uava--lg span { font-size: 1.15rem; }

/* ---- Studio upgrade popup ---- */
.up-overlay { position: fixed; inset: 0; z-index: 10001; display: none; align-items: center; justify-content: center; background: rgba(0,0,0,.72); backdrop-filter: blur(4px); padding: 1.5rem; }
.up-overlay.open { display: flex; }
.up-modal { position: relative; display: grid; grid-template-columns: 1fr 1fr; width: min(940px, 100%); height: min(620px, 90vh); background: #0a0a0a; border: 1px solid var(--bd-strong); overflow: hidden; }
.up-close { position: absolute; top: .8rem; right: .8rem; z-index: 3; width: 34px; height: 34px; background: #fff; color: #000; border: none; font-size: 1.3rem; line-height: 1; cursor: pointer; }
.up-close:hover { background: #cfcfcf; }
/* Left column = fixed head + scrollable feature list + fixed footer (CTA). */
.up-left { display: flex; flex-direction: column; min-height: 0; height: 100%; }
.up-head { flex: 0 0 auto; padding: 2.4rem 2.2rem 1.1rem; }
.up-eyebrow { font-size: .58rem; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); font-weight: 700; margin-bottom: 1rem; }
.up-title { font-family: 'Sage Grotesk', sans-serif; font-size: 2rem; line-height: 1.05; margin: 0 0 .8rem; -webkit-text-stroke: .5px #fff; }
.up-sub { font-size: .88rem; color: #9a9a9a; margin: 0; line-height: 1.5; }

/* Scrollable feature area — only this part moves. */
.up-feats { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: .2rem 2.2rem 1rem; }
.up-group { font-size: .56rem; letter-spacing: .16em; text-transform: uppercase; color: #7a7a7a; font-weight: 700; margin: 1.1rem 0 .35rem; }
.up-group:first-child { margin-top: .2rem; }
.up-list { list-style: none; margin: 0; padding: 0; }
.up-list li { position: relative; padding: .42rem 0 .42rem 1.7rem; font-size: .84rem; color: #e6e6e6; border-bottom: 1px solid var(--bd-soft); }
.up-list li:last-child { border-bottom: 0; }
.up-list li::before { content: '✓'; position: absolute; left: 0; top: .42rem; font-weight: 800; color: #fff; }

/* Fixed footer — CTA never scrolls away. */
.up-foot { flex: 0 0 auto; padding: 1.1rem 2.2rem 2rem; border-top: 1px solid var(--bd-soft); background: #0a0a0a; }
.up-cta { display: block; text-align: center; background: #fff; color: #000; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; font-size: .82rem; padding: 1rem; text-decoration: none; }
.up-cta span { opacity: .55; }
.up-cta-was { color: #8a8a8a; text-decoration: line-through; font-weight: 600; margin: 0 .1rem 0 .2rem; }
.up-cta:hover { background: #cfcfcf; }
.up-fine { font-size: .64rem; color: var(--muted); text-align: center; margin-top: .8rem; }
.up-right { position: relative; min-height: 440px; background: #000; }
.up-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.up-badge { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: 'Sage Grotesk', sans-serif; font-size: 3.6rem; letter-spacing: .06em; color: #fff; -webkit-text-stroke: .7px #fff; text-shadow: 0 6px 40px rgba(0,0,0,.7); pointer-events: none; }
@media (max-width: 760px) {
  .up-modal { grid-template-columns: 1fr; height: min(600px, 92vh); }
  .up-right { display: none; }
  .up-left { height: 100%; }
  .up-head { padding: 1.8rem 1.4rem .9rem; }
  .up-feats { padding: .2rem 1.4rem 1rem; }
  .up-foot { padding: 1rem 1.4rem 1.5rem; }
  .up-title { font-size: 1.5rem; }
  .up-sub { font-size: .82rem; }
  .up-list li { padding: .42rem 0 .42rem 1.6rem; font-size: .82rem; }
  .up-cta { padding: .9rem; }
  .up-close { top: .5rem; right: .5rem; width: 30px; height: 30px; }
}

/* ---- Generator Free/Studio lock marks (white, monochrome) ---- */
/* Premium brand options in the dropdown (no tooltip there) — small PRO tag */
.gen-opt-locked { opacity: .6; }
.gen-opt-locked::after { content: 'STUDIO'; display: inline-block; margin-left: 7px; padding: 1px 5px 0; font-size: 8px; font-weight: 800; letter-spacing: .06em; background: #fff; color: #000; vertical-align: 1px; }
/* STUDIO badge shown inside the global tooltip (.app-tip) for premium tools */
.app-tip-pro { display: inline-block; margin-left: 7px; padding: 1px 5px 0; font-size: 9px; font-weight: 800; letter-spacing: .08em; background: #fff; color: #000; vertical-align: 1px; }
.ad-tag { font-size: .54rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; padding: .15rem .4rem; border: 1px solid var(--bd-strong); color: var(--muted); }
.ad-tag--studio { background: #fff; color: #000; border-color: #fff; }
.ad-tag--ban { color: var(--neg); border-color: var(--neg); }
.ad-empty { color: var(--muted-dim); font-size: .82rem; padding: .6rem 0; }
.ad-search { height: 40px; box-sizing: border-box; background: var(--inset); border: 1px solid rgba(255,255,255,.2); color: #fff; font-size: .85rem; padding: 0 .8rem; min-width: 240px; }
.ad-search::-webkit-contacts-auto-fill-button, .ad-search::-webkit-credentials-auto-fill-button { display: none !important; visibility: hidden; pointer-events: none; position: absolute; right: 0; }
.ad-search:focus { outline: none; box-shadow: 0 0 0 2px #fff; }
.ad-form { border: 1px solid var(--bd); padding: 1.2rem; margin-bottom: 1.4rem; }
.ad-form h3 { font-size: .82rem; color: #fff; font-weight: 700; margin: 0 0 .9rem; }
.ad-row { display: flex; gap: .6rem; flex-wrap: wrap; align-items: flex-end; }
.ad-toolbar { display: flex; flex-wrap: wrap; gap: 1rem 1.6rem; margin-bottom: 1.3rem; }
.ad-toolbar .ad-range { margin: 0; }
.ad-pager { display: flex; align-items: center; gap: 1rem; margin-top: 1.3rem; }
.ad-pager-info { font-size: .72rem; color: var(--muted); font-family: var(--mono); }
.ad-fld { display: flex; flex-direction: column; gap: .3rem; }
.ad-lbl { font-size: .56rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: var(--muted); }
.ad-in { height: 40px; box-sizing: border-box; background: var(--inset); border: 1px solid rgba(255,255,255,.2); color: #fff; font-size: .85rem; padding: 0 .7rem; }
.ad-in:focus { outline: none; box-shadow: 0 0 0 2px #fff; }
.ad-btn { display: inline-flex; align-items: center; justify-content: center; height: 40px; box-sizing: border-box; background: #fff; color: #000; border: 1px solid #fff; font-size: .66rem; letter-spacing: .05em; text-transform: uppercase; font-weight: 700; padding: 0 1.1rem; cursor: pointer; text-decoration: none; }
.ad-btn:hover { background: #cfcfcf; }
.ad-btn--ghost { background: transparent; color: #fff; }
.ad-btn--ghost:hover { background: #fff; color: #000; }
.ad-btn--danger { background: transparent; color: var(--neg); border-color: var(--neg); }
.ad-btn--danger:hover { background: var(--neg); color: #000; }
@media (max-width: 760px) { .ad-cols { grid-template-columns: 1fr; } }

/* ---------- pricing ---------- */
.pr-toggle { display: inline-flex; border: 1px solid rgba(255,255,255,.2); margin: 0; background: var(--inset); }
.pr-toggle-row { margin-bottom: 1.4rem; }
.pr-toggle button { background: transparent; border: none; color: var(--muted); font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; padding: .6rem 1.1rem; cursor: pointer; }
.pr-toggle button[data-on=true] { background: #fff; color: #000; }
.pr-save { font-size: .58rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; color: var(--pos); margin-left: .4rem; }
.pr-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem; max-width: none; margin: 0; align-items: stretch; }
.pr-card { border: 1px solid var(--bd); padding: 2rem 2rem 2.2rem; display: flex; flex-direction: column; position: relative; }
.pr-card--pro { border-color: #fff; }
/* Animated hero-style pixel shimmer behind the Studio card (same engine as the homepage hero). */
.pr-anim { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.pr-anim canvas { display: block; width: 100%; height: 100%; }
.pr-anim::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.34) 0%, rgba(0,0,0,.62) 52%, rgba(0,0,0,.82) 100%); }
/* lift content above the canvas, but DON'T touch the absolutely-positioned badge (keep it pinned to the corner) */
.pr-card--pro > *:not(.pr-anim):not(.pr-badge) { position: relative; z-index: 1; }
.pr-badge { position: absolute; top: -1px; right: -1px; z-index: 2; background: #fff; color: #000; font-size: .56rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 800; padding: .3rem .6rem; }
.pr-name { font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; font-weight: 700; color: var(--muted); }
.pr-price { font-size: 3rem; line-height: 1; font-weight: 700; color: #fff; margin: .7rem 0 .2rem; font-family: var(--mono); }
.pr-price small { font-size: .9rem; color: var(--muted); font-weight: 400; }
.pr-sub { font-size: .74rem; color: var(--muted); min-height: 1.1rem; }
.pr-was { font-family: var(--mono); font-size: 1.45rem; color: var(--muted); text-decoration: line-through; font-weight: 700; margin-right: .55rem; vertical-align: middle; }
.pr-launch { display: inline-block; font-size: .56rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 800; color: #000; background: var(--pos); padding: .26rem .5rem; margin: .2rem 0 .1rem; }
.pr-cta { display: block; text-align: center; text-decoration: none; font-size: .72rem; letter-spacing: .05em; text-transform: uppercase; font-weight: 700; padding: .9rem; margin: 1.6rem 0 0; border: 1px solid #fff; }
.pr-cta--ghost { background: transparent; color: #fff; }
.pr-cta--ghost:hover { background: #fff; color: #000; }
.pr-cta--solid { background: #fff; color: #000; }
.pr-cta--solid:hover { background: #cfcfcf; border-color: #cfcfcf; }
.pr-feat { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .72rem; }
.pr-feat li { font-size: .82rem; color: #cfcfcf; display: flex; gap: .55rem; align-items: flex-start; line-height: 1.45; }
.pr-feat li::before { content: '✓'; color: #fff; font-weight: 800; flex: none; margin-top: .04rem; }
/* divider sets the feature list apart from the CTA — matches the site's sharp, bordered blocks */
.pr-head { font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--muted); margin: 1.7rem 0 .9rem; padding-top: 1.6rem; border-top: 1px solid var(--bd-soft); }
@media (max-width: 680px) { .pr-grid { grid-template-columns: 1fr; } }

/* ============================================================
   Save modal — opened by palette hearts. Dark, square, premium.
   ============================================================ */
.sm-overlay { position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 1.2rem; background: rgba(0,0,0,.72); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
.sm-overlay[hidden] { display: none; }
.sm-box { width: min(560px, 96vw); max-height: 88vh; display: flex; flex-direction: column; background: #000; border: 1px solid var(--bd-strong); box-shadow: 0 20px 60px rgba(0,0,0,.7); }
.sm-head { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.2rem; border-bottom: 1px solid var(--bd-soft); flex: none; }
.sm-title { margin: 0; font-size: 1rem; font-weight: 700; color: #fff; letter-spacing: .01em; }
.sm-x { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: none; background: transparent; color: var(--muted); cursor: pointer; }
.sm-x:hover { color: #fff; }

.sm-tabs { display: flex; gap: .25rem; padding: 0 1.2rem; border-bottom: 1px solid var(--bd-soft); flex: none; }
.sm-tab { appearance: none; border: none; background: transparent; color: var(--muted); font: inherit; font-size: .82rem; font-weight: 600; padding: .7rem .55rem; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.sm-tab:hover { color: #cfcfcf; }
.sm-tab.is-active { color: #fff; border-bottom-color: #fff; }

.sm-body { padding: 1.2rem; overflow-y: auto; flex: 1 1 auto; }
.sm-panel { display: none; }
.sm-panel.is-active { display: block; }

.sm-label { display: block; font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--muted); margin: 0 0 .35rem; }
.sm-label + .sm-input { margin-bottom: 1rem; }
.sm-input { display: block; width: 100%; box-sizing: border-box; background: #000; border: 1px solid var(--bd); color: #fff; font: inherit; font-size: .9rem; padding: .6rem .7rem; outline: none; }
.sm-input::placeholder { color: var(--muted-dim); }
.sm-input:focus { border-color: var(--bd-strong); }
.sm-textarea { min-height: 76px; resize: vertical; line-height: 1.4; }
.sm-hint { margin: 0 0 .9rem; font-size: .78rem; color: var(--muted); line-height: 1.45; }

.sm-roles { display: flex; flex-direction: column; gap: .5rem; }
.sm-role { display: flex; align-items: center; gap: .6rem; }
.sm-role-sw { display: inline-flex; align-items: center; justify-content: center; width: 96px; height: 38px; flex: none; font-family: var(--mono); font-size: .72rem; border: 1px solid var(--bd); }
/* Role combobox — our dropdown, plus free-text custom roles. */
.sm-combo { position: relative; flex: 1 1 auto; }
.sm-combo-inp { width: 100%; box-sizing: border-box; background: #000; border: 1px solid var(--bd); color: #fff; font: inherit; font-size: .85rem; padding: .55rem 2rem .55rem .6rem; outline: none; cursor: text; }
.sm-combo-inp::placeholder { color: var(--muted-dim); }
.sm-combo.is-open .sm-combo-inp, .sm-combo-inp:focus { border-color: var(--bd-strong); }
.sm-combo-ca { position: absolute; right: .55rem; top: 50%; transform: translateY(-50%); color: var(--muted); pointer-events: none; transition: transform .12s; }
.sm-combo.is-open .sm-combo-ca { transform: translateY(-50%) rotate(180deg); }
.sm-combo-menu { position: fixed; z-index: 2100; background: #000; border: 1px solid var(--bd-strong); max-height: 200px; overflow-y: auto; box-shadow: 0 14px 34px rgba(0,0,0,.65); }
.sm-combo-menu[hidden] { display: none; }
.sm-combo-opt { display: block; width: 100%; text-align: left; appearance: none; border: none; background: transparent; color: #e8e8e8; font: inherit; font-size: .85rem; padding: .55rem .6rem; cursor: pointer; }
.sm-combo-opt:hover { background: rgba(255,255,255,.08); }
.sm-combo-opt[hidden] { display: none; }

.sm-list { display: flex; flex-direction: column; gap: .15rem; margin-bottom: .8rem; }
.sm-empty { color: var(--muted); font-size: .82rem; padding: .7rem .2rem; border: 1px dashed var(--bd-soft); text-align: left; }
.sm-projgroup { display: flex; flex-direction: column; gap: .1rem; padding: .15rem 0; }
.sm-opt { display: flex; align-items: center; gap: .55rem; padding: .5rem .55rem; cursor: pointer; color: #e8e8e8; font-size: .88rem; }
.sm-opt:hover { background: rgba(255,255,255,.04); }
.sm-opt input { width: 16px; height: 16px; accent-color: #fff; flex: none; }
.sm-opt--room { padding-left: 1.7rem; color: var(--muted); font-size: .82rem; }
.sm-room-add { align-self: flex-start; margin-left: 1.7rem; appearance: none; border: none; background: transparent; color: var(--muted-dim); font: inherit; font-size: .74rem; cursor: pointer; padding: .2rem 0; }
.sm-room-add:hover { color: #fff; }

.sm-addrow { display: flex; gap: .5rem; }
.sm-addrow .sm-input { flex: 1 1 auto; }
.sm-add { flex: none; appearance: none; border: 1px solid var(--bd); background: transparent; color: #fff; font: inherit; font-size: .82rem; font-weight: 600; padding: 0 1rem; cursor: pointer; }
.sm-add:hover { background: rgba(255,255,255,.08); }

.sm-foot { display: flex; align-items: stretch; gap: 1rem; padding: 1rem 1.2rem; border-top: 1px solid var(--bd-soft); flex: none; }
.sm-strip { display: flex; flex: 1 1 auto; overflow: hidden; border: 1px solid var(--bd-soft); }
.sm-strip span { flex: 1 1 0; }
.sm-save { flex: none; appearance: none; border: none; background: #fff; color: #000; font: inherit; font-size: .9rem; font-weight: 700; padding: .7rem 1.8rem; cursor: pointer; }
.sm-save:hover { background: #e2e2e2; }
.sm-save:disabled { opacity: .5; cursor: default; }
@media (max-width: 560px) { .sm-foot { flex-wrap: wrap; } .sm-strip { order: 2; width: 100%; flex-basis: 100%; min-height: 30px; } }

/* Combination-card heart lives in the footer (square design, square layout). */
.wc-foot-acts { display: flex; align-items: center; gap: .05rem; margin: -3px -6px -3px 0; }
.wc-foot-heart, .wc-foot-save { width: 28px; height: 28px; flex: none; margin: 0; }
.wc-foot-heart svg, .wc-foot-save svg { width: 18px; height: 18px; }

/* Inline "add room" field under a project (replaces the browser prompt). */
.sm-roomadd { padding-left: 1.7rem; margin: .15rem 0 .35rem; display: flex; gap: .5rem; }
.sm-roomadd .sm-input { font-size: .82rem; padding: .45rem .6rem; flex: 1 1 auto; }
.sm-roomadd .sm-add { padding: 0 .9rem; }

/* Project / collection row with a delete ✕ that appears on hover. */
.sm-row { display: flex; align-items: center; }
.sm-row .sm-opt { flex: 1 1 auto; min-width: 0; }
.sm-del { flex: none; appearance: none; border: none; background: transparent; color: var(--muted-dim); cursor: pointer; padding: .3rem .5rem; display: inline-flex; opacity: 0; transition: opacity .12s, color .12s; }
.sm-row:hover .sm-del { opacity: 1; }
.sm-del:hover { color: var(--neg); }
@media (hover: none) { .sm-del { opacity: .55; } }

/* Tags input — removable chips (white pill, black text). */
.sm-tags { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; width: 100%; box-sizing: border-box; background: #000; border: 1px solid var(--bd); padding: .45rem .5rem; cursor: text; }
.sm-tags:focus-within { border-color: var(--bd-strong); }
.sm-tag { display: inline-flex; align-items: center; gap: .15rem; background: #fff; color: #000; font-size: .78rem; font-weight: 600; padding: .25rem .2rem .25rem .55rem; }
.sm-tag button { display: inline-flex; align-items: center; appearance: none; border: none; background: transparent; color: #000; cursor: pointer; padding: 0 .35rem; opacity: .55; }
.sm-tag button:hover { opacity: 1; }
.sm-tags-inp { flex: 1 1 80px; min-width: 80px; background: transparent; border: none; outline: none; color: #fff; font: inherit; font-size: .85rem; padding: .25rem .2rem; }
.sm-tags-inp:focus, .sm-tags-inp:focus-visible { border: none !important; }
.sm-tags-inp::placeholder { color: var(--muted-dim); }
/* One single border indicates focus — kill the global inner focus-ring on every modal field. */
#save-modal input:focus, #save-modal input:focus-visible,
#save-modal textarea:focus, #save-modal textarea:focus-visible { outline: none !important; box-shadow: none !important; }

/* ---------- GDPR cookie consent banner (dark, square, on-brand) ---------- */
/* Compact card, bottom-right — doesn't span full width or touch the sidebar. */
.ck-banner { position: fixed; right: 1.25rem; bottom: 1.25rem; left: auto; z-index: 2200; width: 340px; max-width: calc(100vw - 2.5rem); background: #000; border: 1px solid var(--bd-strong); box-shadow: 0 14px 44px rgba(0,0,0,.55); }
.ck-banner[hidden] { display: none; }
.ck-inner { padding: 1.1rem 1.2rem; display: flex; flex-direction: column; gap: .9rem; }
.ck-text { margin: 0; font-size: .8rem; line-height: 1.5; color: var(--muted); }
.ck-text a { color: #fff; text-decoration: underline; }
.ck-acts { display: flex; align-items: center; gap: .5rem; }
.ck-btn { flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; height: 40px; padding: 0 .8rem; background: transparent; border: 1px solid var(--bd-strong); color: #fff; font-size: .62rem; letter-spacing: .05em; text-transform: uppercase; font-weight: 700; cursor: pointer; white-space: nowrap; }
.ck-btn:hover { background: rgba(255,255,255,.08); }
.ck-btn--cta { background: #fff; color: #000; border-color: #fff; }
.ck-btn--cta:hover { background: #cfcfcf; border-color: #cfcfcf; }
/* Mobile/tablet: full-width card, sits ABOVE the bottom nav (4rem) so it never covers it. */
@media (max-width: 767px) { .ck-banner { right: .75rem; left: .75rem; width: auto; bottom: calc(4rem + .75rem + env(safe-area-inset-bottom)); } }

/* ---------- Projects / Collections (workspace) ---------- */
.proj-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .8rem; }
.proj-card { display: flex; flex-direction: column; gap: .5rem; padding: 1.2rem; border: 1px solid var(--bd); text-decoration: none; transition: border-color .15s, background .15s; }
.proj-card:hover { border-color: #fff; background: rgba(255,255,255,.03); }
.proj-card-icon { color: var(--muted); line-height: 0; }
.proj-card:hover .proj-card-icon { color: #fff; }
.proj-card-name { font-size: 1rem; font-weight: 700; color: #fff; line-height: 1.2; }
.proj-card-meta { font-size: .76rem; color: var(--muted); }
.proj-card-status { display: inline-block; align-self: flex-start; font-size: .56rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 800; padding: .22rem .5rem; border: 1px solid; }
.proj-card-status--draft { color: #cfcfcf; border-color: #7a7a7a; }
.proj-card-status--active { color: #a9c9ff; border-color: #3b82f6; }
.proj-card-status--sent { color: #eccb93; border-color: #d8a657; }
.proj-card-status--completed { color: #86dcaa; border-color: #3ea76f; }
/* clickable card (div now) + hover pencil to rename inline */
.proj-card-wrap { position: relative; }
.proj-card { cursor: pointer; }
.proj-card-edit { position: absolute; top: .7rem; right: .7rem; width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--bd-strong); background: #000; color: var(--muted); cursor: pointer; opacity: 0; transition: opacity .14s, color .14s, border-color .14s; z-index: 2; }
.proj-card-wrap:hover .proj-card-edit { opacity: 1; }
.proj-card-del { position: absolute; top: .7rem; right: calc(.7rem + 34px); width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--bd-strong); background: #000; color: var(--muted); cursor: pointer; opacity: 0; transition: opacity .14s, color .14s, border-color .14s; z-index: 2; }
.proj-card-wrap:hover .proj-card-del { opacity: 1; }
.proj-card-del:hover { color: var(--neg); border-color: var(--neg); }
.proj-card-edit:hover { color: #fff; border-color: #fff; }
.proj-card-rename { font-size: 1rem; font-weight: 700; color: #fff; background: #000; border: 1px solid #fff; padding: .1rem .35rem; width: 100%; box-sizing: border-box; font-family: inherit; outline: none; }
.proj-sub { font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--muted); margin: 0 0 .6rem; }
.ws-back { margin: 0 0 .8rem; }
.ws-back a { font-size: .8rem; color: var(--muted); text-decoration: none; }
.ws-back a:hover { color: #fff; }

/* ---------- Projects: Free teaser (Studio feature — show value, lock action) ---------- */
.proj-tease { margin-top: 1.4rem; }
.proj-tease-badge { display: inline-block; font-size: .58rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 800; color: #000; background: #fff; padding: .3rem .6rem; margin-bottom: 1rem; }
.proj-tease-hero h2 { font-size: 1.9rem; line-height: 1.12; font-weight: 800; color: #fff; letter-spacing: -.01em; margin: 0 0 .6rem; max-width: 30ch; }
.proj-tease-hero p { font-size: .95rem; color: var(--muted); max-width: 54ch; margin: 0 0 1.3rem; line-height: 1.5; }
.proj-tease-pts { display: flex; flex-wrap: wrap; gap: .55rem 1.6rem; margin: 0 0 2rem; padding: 0; list-style: none; }
.proj-tease-pts li { display: flex; align-items: flex-start; gap: .5rem; font-size: .82rem; color: #ddd; }
.proj-tease-pts svg { color: var(--pos); flex: none; margin-top: 2px; }
.proj-tease-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; align-items: stretch; }
@media (max-width: 820px) { .proj-tease-grid { grid-template-columns: 1fr; } }
/* demo project card (left) */
.proj-demo { border: 1px solid var(--bd); padding: 1.3rem; background: rgba(255,255,255,.02); position: relative; }
.proj-demo-tag { position: absolute; top: 0; right: 0; font-size: .52rem; letter-spacing: .14em; text-transform: uppercase; font-weight: 800; color: var(--muted); background: #000; border-left: 1px solid var(--bd); border-bottom: 1px solid var(--bd); padding: .28rem .5rem; }
.proj-demo-name { font-size: 1.05rem; font-weight: 800; color: #fff; }
.proj-demo-meta { font-size: .74rem; color: var(--muted); margin: .2rem 0 1.1rem; }
.proj-demo-room { margin-bottom: .85rem; }
.proj-demo-room-h { font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: #bbb; margin-bottom: .4rem; }
.proj-demo-sw { display: flex; height: 30px; }
.proj-demo-sw span { flex: 1; }
/* client PDF mock (right) */
.proj-pdf-wrap { position: relative; border: 1px solid var(--bd); overflow: hidden; }
.proj-pdf { background: #fff; color: #111; padding: 1.3rem 1.3rem 2.6rem; height: 100%; box-sizing: border-box; }
.proj-pdf-top { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #e3e3e3; padding-bottom: .7rem; margin-bottom: .9rem; }
.proj-pdf-logo { font-size: .74rem; letter-spacing: .1em; font-weight: 800; color: #111; }
.proj-pdf-kic { font-size: .52rem; letter-spacing: .14em; text-transform: uppercase; color: #999; font-weight: 700; }
.proj-pdf-proj { font-size: .92rem; font-weight: 800; color: #111; margin-bottom: .1rem; }
.proj-pdf-room { font-size: .7rem; color: #888; margin-bottom: .9rem; }
.proj-pdf-pal { display: flex; height: 44px; margin-bottom: .9rem; }
.proj-pdf-pal span { flex: 1; }
.proj-pdf-row { display: flex; justify-content: space-between; gap: 1rem; font-size: .66rem; color: #333; padding: .32rem 0; border-bottom: 1px solid #eee; }
.proj-pdf-row b { color: #111; }
.proj-pdf-code { font-family: var(--mono); color: #666; white-space: nowrap; }
.proj-pdf-lock { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; padding-bottom: 1.4rem; gap: .55rem; background: linear-gradient(to bottom, rgba(10,10,10,0) 32%, rgba(10,10,10,.5) 58%, rgba(10,10,10,.93) 100%); }
.proj-pdf-lock-ic { width: 40px; height: 40px; border: 1.5px solid #fff; display: flex; align-items: center; justify-content: center; color: #fff; }
.proj-pdf-lock-t { font-size: .72rem; letter-spacing: .07em; text-transform: uppercase; font-weight: 800; color: #fff; }
.proj-tease-cta { margin-top: 1.9rem; text-align: center; }
.proj-tease-cta .app-btn { padding: 0 2.2rem; height: 48px; }
/* compact 2-column teaser: text+ctas left, room photos column right */
.proj-tease-2col { display: grid; grid-template-columns: 1.05fr .95fr; gap: 2.4rem; align-items: center; }
.proj-tease-2col .proj-tease-hero h2 { font-size: 1.7rem; }
.proj-tease-2col .proj-tease-pts { flex-direction: column; gap: .5rem; margin-bottom: 0; }
.proj-tease-2col .proj-tease-cta { text-align: left; margin-top: 1.6rem; }
.proj-tease-photos { display: flex; flex-direction: column; gap: .7rem; }
.proj-tease-photos figure { position: relative; margin: 0; }
.proj-tease-photos img { width: 100%; height: 108px; object-fit: cover; border: 1px solid var(--bd); display: block; }
.proj-tease-photos figcaption { position: absolute; left: 0; bottom: 0; background: rgba(0,0,0,.58); color: #fff; font-size: .56rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 800; padding: .28rem .55rem; }
@media (max-width: 860px) { .proj-tease-2col { grid-template-columns: 1fr; gap: 1.4rem; } .proj-tease-photos { flex-direction: row; flex-wrap: wrap; } .proj-tease-photos figure { flex: 1; min-width: 140px; } }

/* ---------- Project page: room blocks + 3-up palette grid ---------- */
.proj-room { border: 1px solid var(--bd-soft); padding: 1.1rem 1.2rem 1.3rem; margin-bottom: 1rem; }
.proj-room-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; }
.proj-room-name { display: inline-flex; align-items: center; gap: .55rem; font-size: 1rem; font-weight: 700; color: #fff; }
.proj-room-name svg { color: var(--muted); flex: none; }
.proj-room-right { display: inline-flex; align-items: center; gap: .4rem; }
.proj-room-count { font-size: .72rem; color: var(--muted); white-space: nowrap; margin-right: .4rem; }
.proj-room-edit, .proj-room-del { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--bd-strong); background: #000; color: var(--muted); cursor: pointer; line-height: 0; transition: color .14s, border-color .14s; }
.proj-room-edit:hover { color: #fff; border-color: #fff; }
.proj-room-del { font-size: .95rem; }
.proj-room-del:hover { color: var(--neg); border-color: var(--neg); }
.proj-room-rename { font-size: 1rem; font-weight: 700; color: #fff; background: #000; border: 1px solid #fff; padding: .05rem .35rem; font-family: inherit; outline: none; min-width: 160px; }
.proj-room-empty { font-size: .82rem; color: var(--muted-dim); }
.proj-pal-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .8rem; }
.proj-paint-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; margin-bottom: 1.1rem; }
.proj-paint { border: 1px solid var(--bd-soft); display: flex; align-items: center; gap: .7rem; padding: .55rem; }
.proj-paint-sw { width: 56px; height: 56px; flex: none; }
.proj-paint-m { padding: .5rem .6rem; min-width: 0; }
.proj-paint-b { display: block; font-size: .54rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; color: var(--muted); }
.proj-paint-n { display: block; font-size: .8rem; color: #fff; margin-top: .15rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.proj-paint-code { display: block; font-family: var(--mono); font-size: .62rem; color: #bdbdbd; margin-top: .1rem; }
@media (max-width: 900px) { .proj-pal-grid, .proj-paint-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .proj-pal-grid, .proj-paint-grid { grid-template-columns: 1fr; } }

/* Heart on catalogue swatch cards — always visible (chip over the swatch). */
.swatch-fill { position: relative; }
/* Shared swatch-card footer (name + ♡/+ row, optional role eyebrow) — global so
   the SAME color card works on every page (catalogue, schemes, combinations…). */
.swatch-info-top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.swatch-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
.swatch-acts { display: flex; gap: .05rem; flex: none; margin-right: -.3rem; }
.swatch-meta { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.swatch-role { display: block; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; font-weight: 700; color: #8a8a8a; line-height: 1.2; }
.swatch-heart, .swatch-save { width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; padding: 0; border: 0; background: transparent; cursor: pointer; color: rgba(255,255,255,.5); }
.swatch-heart svg, .swatch-save svg { width: 17px; height: 17px; stroke: currentColor; fill: none; }
.swatch-heart:hover, .swatch-save:hover { color: #fff; }
.swatch-heart.is-liked { color: #fff; }
.swatch-heart.is-liked svg { fill: currentColor; }
/* Brand-select (brandSelect) premium gating: top-3 + All free, the other 13 = Studio. */
.bsel-opt[data-premium] { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.bsel-studio { display: none; font: 800 .55rem/1.5 ui-sans-serif,system-ui; letter-spacing: .08em; background: #fff; color: #000; padding: 1px 5px; }
.bsel.is-free .bsel-opt[data-premium] { opacity: .5; }
.bsel.is-free .bsel-opt[data-premium] .bsel-studio { display: inline-block; }

/* Remove-paint ✕ on a project paint card (on hover). */
.proj-paint { position: relative; }
.proj-paint-del { position: absolute; top: .3rem; right: .3rem; width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; border: none; background: transparent; color: var(--muted-dim); cursor: pointer; opacity: 0; transition: opacity .12s; font-size: .8rem; }
.proj-paint:hover .proj-paint-del { opacity: 1; }
.proj-paint-del:hover { color: var(--neg); }

/* Project paint card is now a link to the full colour page. */
.proj-paint { text-decoration: none; transition: border-color .15s; }
.proj-paint:hover { border-color: var(--bd-strong); }

/* Client/project details disclosure on the project page. */
.proj-details-box { border: 1px solid var(--bd-soft); margin: 0 0 1.4rem; }
.proj-details-head { padding: .7rem 1rem; font-size: .8rem; font-weight: 700; color: #fff; border-bottom: 1px solid var(--bd-soft); }
.proj-details-head span { color: var(--muted); font-weight: 400; }
/* view mode — saved details as a tidy read-only summary */
.pd-view { padding: 1rem; }
.pd-rows { display: flex; flex-direction: column; gap: .7rem; margin-bottom: 1.1rem; }
.pd-row { display: grid; grid-template-columns: 88px 1fr; gap: 1rem; align-items: baseline; }
.pd-k { font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--muted); padding-top: .15rem; }
.pd-v { font-size: .92rem; color: #fff; line-height: 1.5; white-space: pre-wrap; }
/* edit mode */
.proj-details-grid { padding: 1rem; display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.proj-details-note { grid-column: 1 / -1; min-height: 64px; resize: vertical; box-sizing: border-box; background: var(--inset); border: 1px solid rgba(255,255,255,.2); color: #fff; font: inherit; font-size: .88rem; padding: .55rem .8rem; }
.proj-details-note:focus { outline: none; border-color: #fff; }
.pd-actions { grid-column: 1 / -1; display: flex; gap: .6rem; }
@media (max-width: 560px) { .proj-details-grid { grid-template-columns: 1fr; } .pd-row { grid-template-columns: 1fr; gap: .15rem; } }

/* ---------- export constructor (live PDF preview) ---------- */
.ex-wrap { display: flex; align-items: flex-start; gap: 2.5rem; padding: 2rem 2.5rem 0; box-sizing: border-box; }
@media (max-width: 900px) { .ex-wrap { flex-direction: column; gap: 1.2rem; padding: 1.4rem 1.2rem 0; } }

/* left control panel */
.ex-panel { width: 320px; flex: none; position: sticky; top: 76px; }
@media (max-width: 900px) { .ex-panel { width: 100%; position: static; } }
.ex-back { display: inline-block; font-size: .8rem; color: var(--muted); text-decoration: none; margin-bottom: 1rem; }
.ex-back:hover { color: #fff; }
.ex-h { font-size: 1.5rem; font-weight: 800; margin: 0 0 .3rem; }
.ex-sub { font-size: .82rem; color: var(--muted); line-height: 1.5; margin: 0 0 1.4rem; }
.ex-group { border-top: 1px solid var(--bd-soft); padding: 1rem 0; }
.ex-group-t { font-size: .6rem; letter-spacing: .14em; text-transform: uppercase; font-weight: 800; color: var(--muted); margin-bottom: .7rem; }
.ex-tog { display: flex; align-items: center; gap: .65rem; padding: .35rem 0; font-size: .9rem; color: #eee; cursor: pointer; user-select: none; }
/* custom on-brand checkbox — square, no border; grey → white w/ black tick */
.ex-tog input { -webkit-appearance: none; appearance: none; width: 19px; height: 19px; flex: none; margin: 0; border: none; background: #242424; cursor: pointer; position: relative; transition: background .12s; }
.ex-tog input:hover { background: #333; }
.ex-tog input:checked { background: #fff; }
.ex-tog input:checked::after { content: ''; position: absolute; left: 6px; top: 2.5px; width: 5px; height: 10px; border: solid #000; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.ex-group .bsel { margin-top: .6rem; }
.ex-hint { font-size: .72rem; color: var(--muted-dim); line-height: 1.45; margin: .6rem 0 0; }
.ex-dl { width: 100%; margin-top: 2rem; margin-bottom: 2.5rem; font-size: .82rem; }
/* form fields inside a control group get even spacing without inline styles */
.ex-group .app-input { margin-bottom: .5rem; }
.ex-group .app-input:last-of-type { margin-bottom: 0; }
.ex-group .ex-tog + .app-input { margin-top: .6rem; }
.ex-group .app-btn { margin-top: .6rem; }

/* right preview column — plain block; sheets centre via margin auto (robust) */
.ex-preview { flex: 1; min-width: 0; padding-bottom: 3rem; }

/* one A4 sheet — white paper, black ink, like the real PDF. Fixed 460px width
   and A4 aspect (460 × 1.414 ≈ 650) so every sheet always looks like a page. */
.ex-page { width: 460px; max-width: 100%; min-height: 650px; margin: 0 auto 1.6rem; background: #fff; color: #111; box-shadow: 0 8px 40px rgba(0,0,0,.5); padding: 34px 38px; box-sizing: border-box; font-family: 'Inter', system-ui, sans-serif; }
.ex-page[hidden] { display: none; }

/* cover layout — A4 page: brand top, title below, footer pinned to the bottom */
.ex-cover { display: flex; flex-direction: column; }
.ex-cv-mid { margin: 40px 0; }
.ex-cv-foot { border-top: 1px solid #e1e1e1; padding-top: .9rem; margin-top: auto; }
.ex-pg-brand { font-size: .85rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #000; }
.ex-pg-rule { width: 34px; height: 2px; background: #000; margin-top: .55rem; }
.ex-pg-eyebrow { font-size: .62rem; letter-spacing: .14em; color: #999; font-weight: 700; margin-bottom: .5rem; }
.ex-pg-title { font-size: 2.4rem; font-weight: 800; line-height: 1.05; color: #000; letter-spacing: -.01em; }
.ex-pg-for { font-size: .95rem; color: #555; margin-top: .8rem; }
.ex-pg-addr { font-size: .8rem; color: #999; margin-top: .2rem; }
.ex-pg-meta { font-size: .78rem; color: #666; }
.ex-pg-contact { font-size: .72rem; color: #999; margin-top: .2rem; }

/* content pages */
.ex-pg-h2 { font-size: 1.4rem; font-weight: 800; color: #000; margin: 0 0 .2rem; }
.ex-pg-sub2 { font-size: .78rem; color: #999; margin: 0 0 1rem; padding-bottom: .7rem; border-bottom: 1px solid #e1e1e1; }
.ex-pg-note { font-size: .82rem; color: #555; line-height: 1.5; margin: 0 0 1.4rem; }
.ex-pg-empty { font-size: .85rem; color: #aaa; }

.ex-pg-room { margin-bottom: 1.6rem; }
.ex-pg-roomh { font-size: 1.05rem; font-weight: 800; color: #000; margin-bottom: .5rem; }
.ex-pg-cols { display: grid; grid-template-columns: 44px 1fr 90px 120px; gap: .6rem; font-size: .56rem; letter-spacing: .1em; color: #aaa; font-weight: 700; padding-bottom: .35rem; border-bottom: 1px solid #ececec; margin-bottom: .5rem; }
.ex-pg-cols span:first-child { grid-column: 2; }
.ex-pg-row { display: grid; grid-template-columns: 44px 1fr 90px 120px; gap: .6rem; align-items: center; padding: .32rem 0; }
.ex-pg-sw { width: 34px; height: 34px; flex: none; border: 1px solid #ddd; display: inline-block; }
.ex-pg-sw.sm { width: 28px; height: 28px; }
.ex-pg-rn { font-size: .85rem; font-weight: 700; color: #000; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ex-pg-rr { font-size: .78rem; color: #555; }
.ex-pg-rc { font-size: .68rem; color: #888; font-family: var(--mono); text-align: right; }

/* moodboard */
.ex-pg-pal { margin-bottom: 1.2rem; }
.ex-pg-paln { font-size: .85rem; font-weight: 700; color: #000; margin-bottom: .4rem; }
.ex-pg-band { display: flex; height: 54px; }
.ex-pg-band span { flex: 1; display: flex; align-items: flex-end; justify-content: center; padding-bottom: 3px; }
.ex-pg-band b { font-size: .5rem; font-weight: 600; color: rgba(255,255,255,.85); mix-blend-mode: difference; font-family: var(--mono); }

/* shopping */
.ex-pg-shop { display: flex; align-items: center; gap: .7rem; padding: .4rem 0; border-bottom: 1px solid #f2f2f2; }
.ex-pg-sm { display: flex; flex-direction: column; min-width: 0; }
.ex-pg-sn { font-size: .85rem; font-weight: 700; color: #000; }
.ex-pg-sc { font-size: .68rem; color: #888; font-family: var(--mono); margin-top: .1rem; }

/* ---------- settings: studio branding (white-label) ---------- */
.ws-studio-card { max-width: 560px; margin-bottom: 1.4rem; }
.ws-wl-tag { font-size: .56rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: #000; background: #fff; padding: .15rem .45rem; margin-left: .55rem; vertical-align: middle; }
.ws-studio-lead { font-size: .82rem; color: var(--muted); line-height: 1.5; margin: 0 0 1.2rem; }
.ws-logo-row { margin-bottom: 1.4rem; }
.ws-logo-prev { width: 168px; height: 78px; flex: none; border: 1px solid var(--bd-strong); display: flex; align-items: center; justify-content: center; background: #fff; overflow: hidden; }
.ws-logo-prev img { max-width: 100%; max-height: 100%; object-fit: contain; }
.ws-logo-prev span { font-size: .66rem; color: #999; letter-spacing: .04em; }
.ws-inline-form { margin: 0; }
.ws-btn-auto { width: auto; padding: .7rem 1.2rem; }
.ws-mb1 { margin-bottom: 1rem; }
.ws-contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem 1rem; margin-bottom: 1rem; }
.ws-contact-full { grid-column: 1 / -1; }
.ws-mt1 { margin-top: .4rem; }
@media (max-width: 520px) { .ws-contact-grid { grid-template-columns: 1fr; } }

/* ---------- settings page (clean two-column sections, full page width) ---------- */
/* top/bottom spacing comes from container pt-10 pb-4 — matches every other page */
.set-head { padding: 0 0 1.6rem; }
.set-head h1 { font-size: 2rem; font-weight: 800; margin: 0; letter-spacing: -.01em; line-height: 1.1; }
.set-head p { font-size: .85rem; color: var(--muted); margin: .35rem 0 0; }
/* aside (label) | body (form, flexible up to a readable cap) */
.set-row { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 3rem; padding: 2.4rem 0; border-top: 1px solid var(--bd-soft); }
.set-aside h2 { font-size: 1.1rem; font-weight: 800; margin: 0 0 .45rem; display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; }
.set-aside p { font-size: .82rem; color: var(--muted); line-height: 1.55; margin: 0; max-width: 250px; }
.set-body { max-width: 680px; }
.set-form { display: block; }
.set-hint { font-size: .74rem; color: var(--muted-dim); line-height: 1.45; margin: .5rem 0 0; }
.set-mt { margin-top: 1rem; }
.set-input-locked { opacity: .55; }
.set-avatar { display: flex; align-items: flex-start; gap: 1.1rem; margin-bottom: 1.8rem; }
/* upload + remove sit on one row; the hint wraps onto its own line below */
.set-avatar-ctl { display: flex; flex-flow: row wrap; gap: .6rem; align-items: center; }
.set-avatar-ctl .set-hint { flex-basis: 100%; margin-top: .2rem; }
.set-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem 1rem; margin-bottom: 1.2rem; }
@media (max-width: 560px) { .set-grid2 { grid-template-columns: 1fr; } }
.set-plan-line { font-size: .85rem; color: var(--muted); line-height: 1.55; margin: 0 0 1.1rem; }
.set-plan-line strong { color: #fff; }
.set-link-btn { text-decoration: none; }
.set-row--danger { border-top-color: rgba(255,90,90,.35); }
.set-row--danger .set-aside h2 { color: #ff8a8a; }
@media (max-width: 760px) { .set-row { grid-template-columns: 1fr; gap: 1.1rem; padding: 1.6rem 0; } .set-aside p { max-width: none; } }

/* ---------- workspace header row: title left, action (create/search) right ---------- */
.ws-head-row { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; margin-bottom: 1.8rem; }
.ws-head-action { display: flex; gap: .5rem; align-items: center; flex: none; }
.ws-head-action .ad-search { min-width: 260px; }
@media (max-width: 640px) { .ws-head-action { width: 100%; } .ws-head-action .ad-search { flex: 1; min-width: 0; } }

/* ---------- drag & drop paints/palettes between rooms ---------- */
.proj-paint[draggable="true"], .proj-pal-grid .ws-pal[draggable="true"] { cursor: grab; }
.proj-paint.is-dragging, .ws-pal.is-dragging { opacity: .4; }
.proj-room.drag-over { outline: 2px dashed #fff; outline-offset: -2px; background: rgba(255,255,255,.04); }
.proj-room { transition: background .12s; }

/* ===== FAQ — powerful on-brand accordion (overrides the tailwind @apply base) ===== */
.faq-grid { grid-column-gap: .7rem; align-items: start; }
.faq-col { gap: .7rem; }
.faq-item { border: 1px solid rgba(255,255,255,.16); background: transparent; transition: border-color .16s ease; }
.faq-item:hover { border-color: rgba(255,255,255,.36); }
.faq-item[open] { border-color: rgba(255,255,255,.6); }
.faq-question { gap: 1rem; padding: 1.05rem 1.15rem; font-size: 1rem; }
.faq-question:hover { color: #fff; }
/* plain +/− toggle — no box, no rotation (no diamond) */
.faq-chevron { position: relative; width: 20px; height: 20px; flex: none; border: 0 !important; background: transparent !important; color: #fff; font-size: 0; transform: none !important; }
.faq-chevron::before, .faq-chevron::after { content: ''; position: absolute; top: 50%; left: 50%; background: currentColor; transition: opacity .2s ease; }
.faq-chevron::before { width: 16px; height: 2px; transform: translate(-50%, -50%); }
.faq-chevron::after { width: 2px; height: 16px; transform: translate(-50%, -50%); }
.faq-question:hover .faq-chevron { color: #fff; }
.faq-item[open] .faq-chevron { transform: none !important; color: #fff; }
.faq-item[open] .faq-chevron::after { opacity: 0; }
.faq-answer { padding: 0 1.15rem 1.2rem; font-size: .9rem; line-height: 1.65; }

/* ---- Accessibility fixes from the October 2026 Lighthouse audit ---- */

/* Links inside running text get an underline, not just a brighter white. By colour
   alone they are 1.6:1 against the grey around them and read as plain text
   (Lighthouse "link-in-text-block"). Small print elsewhere already does this. */
.faq-answer a, .cat-prose a, .howto-desc a { text-decoration: underline; }

/* "2 months free" sits on the white Yearly button by default; the brand green is
   only APCA Lc 45 on white. Same hue, darker: Lc 85. The dark state keeps --pos. */
.pr-toggle button[data-on=true] .pr-save { color: #0d6340; }

/* WCAG rating on the WHITE contrast card. The green / blue / red were picked for
   the black card and drop to 2.5–3.8:1 on white; these are the same hues, darker. */
.contrast-card[data-vs="White"] .contrast-rating[data-rating="AAA"],
.contrast-card[data-vs="White"] .contrast-rating[data-rating="AA"] { color: #0d6340; }
.contrast-card[data-vs="White"] .contrast-rating[data-rating="AA Large"] { color: #1d4ed8; }
.contrast-card[data-vs="White"] .contrast-rating[data-rating="Fail"] { color: #b91c1c; }

/* The +/- stepper splits the field's height in two; at 46px each half was 23px,
   under the 24px minimum touch target. 50px gives 24.5px a button. */
.calc-input { min-height: 50px; }

