@font-face{font-family:Schibsted Grotesk;src:url(/fonts/schibsted-grotesk.woff2) format("woff2");font-weight:400 900;font-style:normal;font-display:swap}@font-face{font-family:Schibsted Grotesk;src:url(/fonts/schibsted-grotesk-italic.woff2) format("woff2");font-weight:400 900;font-style:italic;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-500.woff2) format("woff2");font-weight:500;font-display:swap}:root{--font-display: "Schibsted Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body: "Schibsted Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", monospace;--font-label: var(--font-mono);--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2.5rem;--space-xl: 4rem;--space-2xl: 6rem;--radius-sm: 2px;--radius-md: 3px;--radius-lg: 4px;--radius-pill: 999px;--border-width: 1px;--focus-width: 2px;--focus-ring: 3px;--shadow-card: none;--step--1: clamp(.82rem, .79rem + .15vw, .9rem);--step-0: clamp(1rem, .97rem + .18vw, 1.08rem);--step-1: clamp(1.25rem, 1.1rem + .5vw, 1.4rem);--step-2: clamp(1.6rem, 1.35rem + 1.1vw, 2.15rem);--step-3: clamp(2.35rem, 1.8rem + 2.6vw, 3.6rem);--step-4: clamp(2.6rem, 1.6rem + 4.2vw, 5rem);--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-extrabold: 800;--weight-display: 600;--leading-display: 1;--leading-tight: 1.06;--leading-snug: 1.35;--leading-normal: 1.65;--tracking-tight: -.03em;--tracking-normal: 0;--tracking-wide: .08em;--duration-fast: .15s;--duration-base: .18s;--ease: ease;--lift: -3px;--neutral-0: #ffffff;--neutral-50: #f6f6f5;--neutral-100: #ededec;--neutral-200: #dcdcda;--neutral-300: #c4c4c1;--neutral-500: #74746f;--neutral-700: #3a3a37;--neutral-900: #0d0d0c;--ruby-50: #fbecee;--ruby-100: #f5d2d7;--ruby-500: #b3203a;--ruby-600: #9b1b30;--ruby-700: #7a1426;--cobalt-50: #eaeff9;--cobalt-500: #2c4fa8;--cobalt-700: #1f3f8f;--amber-50: #fbf3e3;--amber-500: #c98a1b;--amber-700: #8f600f;--green-50: #e8f3ec;--green-600: #2f7d4a;--c-ink: var(--neutral-900);--c-ink-soft: var(--neutral-700);--c-muted: var(--neutral-500);--c-paper: var(--neutral-0);--c-surface: var(--neutral-0);--c-line: var(--neutral-100);--c-line-strong: var(--neutral-200);--c-accent: var(--ruby-600);--c-accent-strong: var(--ruby-700);--c-accent-tint: var(--ruby-50);--c-accent-2: var(--cobalt-700);--c-accent-3: var(--ruby-500);--c-on-accent: var(--neutral-0);--c-results-bg: var(--neutral-900);--c-results-text: var(--neutral-50);--c-results-muted: var(--neutral-300);--c-media-1: var(--neutral-50);--c-media-2: var(--neutral-50);--c-media-3: var(--neutral-50);--c-selection: var(--ruby-100);--c-panel-a: var(--neutral-50);--c-panel-b: var(--neutral-50);--c-lead: var(--neutral-700);--c-grout: var(--neutral-200);--glass-clear: #eef4f3;--glass-white-opal: #f4f1ea;--glass-ruby: #9b1b30;--glass-rose: #d9798a;--glass-orange: #d9661f;--glass-amber: #c98a1b;--glass-yellow: #e8c547;--glass-olive: #6f7a2e;--glass-green: #2f7d4a;--glass-teal: #1f7a7a;--glass-sky: #6fa8d6;--glass-cobalt: #1f3f8f;--glass-violet: #5b3c88;--glass-brown: #6b4423;--glass-grey: #8a8d91;--glass-black: #1a1a1a;--color-text: var(--c-ink);--color-emphasis: var(--ruby-600);--color-highlight: var(--amber-500);--color-highlight-tint: var(--amber-50);--color-info: var(--cobalt-500);--color-info-tint: var(--cobalt-50);--color-success: var(--green-600);--color-success-tint: var(--green-50);--color-warning: var(--amber-700);--color-text-soft: var(--c-ink-soft);--color-text-muted: var(--c-muted);--color-bg: var(--c-paper);--color-surface: var(--c-surface);--color-surface-muted: var(--neutral-50);--color-border: var(--c-line);--color-border-strong: var(--c-line-strong);--color-header-bg: color-mix(in srgb, var(--c-paper) 88%, transparent);--color-brand: var(--c-accent);--color-brand-strong: var(--c-accent-strong);--color-brand-tint: var(--c-accent-tint);--color-brand-2: var(--c-accent-2);--color-danger: var(--c-accent-3);--color-on-brand: var(--c-on-accent);--color-link: var(--c-accent-strong);--color-focus: var(--c-accent);--color-selection: var(--c-selection);--color-pill-bg: var(--c-paper);--color-pill-fg: var(--c-ink);--color-media-1: var(--c-media-1);--color-media-2: var(--c-media-2);--color-media-3: var(--c-media-3);--color-media-fg: var(--c-ink);--color-panel-a: var(--c-panel-a);--color-panel-b: var(--c-panel-b);--color-footer-bg: var(--c-ink);--color-footer-text: var(--c-paper);--color-footer-muted: var(--c-results-muted);--color-footer-rule: var(--c-ink-soft);--color-chip-bg: transparent;--color-chip-border: var(--c-line-strong);--color-chip-active-bg: var(--c-ink);--color-chip-active-fg: var(--c-paper);--color-lead-line: var(--c-lead);--color-grout: var(--c-grout);--swatch-size: 1.5rem;--swatch-border: var(--c-line-strong);--input-bg: var(--c-surface);--input-border: var(--c-line-strong);--input-radius: var(--radius-sm);--input-pad-y: var(--space-xs);--input-pad-x: var(--space-sm);--calc-controls-bg: var(--c-surface);--calc-results-bg: var(--c-results-bg);--calc-results-text: var(--c-results-text);--calc-results-muted: var(--c-results-muted);--btn-radius: var(--radius-sm);--btn-pad-y: var(--space-xs);--btn-pad-x: var(--space-md);--btn-font: var(--step-0);--btn-weight: var(--weight-semibold);--btn-primary-bg: var(--color-text);--btn-hover-bg: var(--color-brand);--btn-primary-fg: var(--color-on-brand);--btn-secondary-bg: var(--color-brand-2);--btn-secondary-fg: var(--color-on-brand);--btn-ghost-fg: var(--color-text);--btn-ghost-border: var(--color-border-strong);--ad-min-height: 280px;--measure: 68ch;--container: 1360px;--gutter: clamp(1rem, .5rem + 2vw, 2.5rem);--pin-ratio: 2 / 3;--pin-col-min: 15rem;--pin-gap: var(--space-md);--gallery-col-min: 18rem;--rule: var(--border-width) solid var(--c-ink);--card-min: 17rem;--pattern-card-min: 15rem;--z-header: 10}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;accent-color:var(--color-brand);scrollbar-color:var(--color-border-strong) transparent}body{min-height:100vh;font-family:var(--font-body);font-size:var(--step-0);font-weight:var(--weight-regular);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:var(--color-selection);color:var(--color-text)}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:var(--weight-display);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--color-text);text-wrap:balance}h1{font-size:var(--step-3)}h2{font-size:var(--step-2)}h3{font-size:var(--step-1)}h4,h5,h6,p,ul,ol,blockquote{font-size:var(--step-0)}small{font-size:var(--step--1)}a{color:var(--color-link);text-decoration-thickness:var(--border-width);text-underline-offset:.15em}a:hover{text-decoration:none}strong,b{font-weight:var(--weight-bold)}code,pre,kbd,samp{font-family:var(--font-mono);font-size:var(--step--1)}img,picture,svg,video,canvas{display:block;max-width:100%;height:auto}input,button,textarea,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}.prose{max-width:var(--measure)}.prose>*+*{margin-top:var(--space-md)}.prose h2{margin-top:var(--space-xl)}.prose h3{margin-top:var(--space-lg)}.prose ul,.prose ol{padding-left:var(--space-md)}.prose blockquote{padding-left:var(--space-md);border-left:var(--border-width) solid var(--color-border);color:var(--color-text-muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}astro-island{display:block}.site-header{position:sticky;top:0;z-index:var(--z-header);border-bottom:var(--rule);background:var(--color-header-bg);backdrop-filter:blur(10px)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-block:var(--space-sm)}.brand{font-family:var(--font-display);font-size:var(--step-1);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);line-height:1;color:var(--color-text);text-decoration:none}.site-nav{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-md)}.site-nav a:not(.btn){color:var(--color-text);font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;text-decoration:none}.site-nav a:not(.btn):hover{color:var(--color-brand-strong)}.eyebrow,.label{display:inline-block;font-family:var(--font-label);font-size:var(--step--1);font-weight:var(--weight-regular);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-muted)}.eyebrow{margin-bottom:var(--space-md)}.layout-main{padding-block:var(--space-md) var(--space-xl)}.section+.section{margin-top:var(--space-xl)}.hero{padding-block:var(--space-xl) var(--space-lg)}.hero__title{font-size:var(--step-3);max-width:17ch}.hero__tagline{max-width:56ch;margin-top:var(--space-md);font-size:var(--step-1);font-weight:var(--weight-regular);line-height:var(--leading-snug);color:var(--color-text-soft)}.hero__cta{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-lg)}.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-md);padding-top:var(--space-sm);border-top:var(--rule);margin-bottom:var(--space-lg)}.sec-head__title{font-size:var(--step-3);font-weight:var(--weight-display);line-height:var(--leading-display);letter-spacing:var(--tracking-tight)}.sec-head--sm{padding-top:0;border-top:0;margin-bottom:var(--space-md)}.sec-head--sm .sec-head__title{font-family:var(--font-label);font-size:var(--step--1);font-weight:var(--weight-regular);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-muted)}.section--tight{margin-top:var(--space-lg)}.sec-head__desc{margin-top:var(--space-3xs);max-width:44ch;color:var(--color-text-muted)}.tool-top{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:var(--space-xl);align-items:start;padding-block:var(--space-md) var(--space-xl)}.tool-top>*{min-width:0}.tool-top__app{position:sticky;top:var(--space-2xl)}@media(max-width:52rem){.tool-top{grid-template-columns:minmax(0,1fr);gap:var(--space-lg)}.tool-top__app{position:static}}.tool-intro{display:grid;gap:var(--space-md);align-content:start}.tool-intro__title{overflow-wrap:anywhere;font-size:var(--step-3);font-weight:var(--weight-display);line-height:var(--leading-display);letter-spacing:var(--tracking-tight)}.tool-intro__lede{font-size:var(--step-1);line-height:var(--leading-snug);color:var(--color-text-soft)}.tool-intro__steps{list-style:none;padding:0;display:grid;border-top:var(--rule)}.tool-intro__steps li{display:grid;grid-template-columns:3ch 1fr;gap:var(--space-sm);padding-block:var(--space-sm);border-bottom:var(--border-width) solid var(--color-border);color:var(--color-text-soft)}.tool-intro__steps strong{color:var(--color-text);font-weight:var(--weight-semibold)}.tool-intro__num{font-family:var(--font-label);font-size:var(--step--1);color:var(--color-text-muted);padding-top:var(--space-3xs)}.tool-intro__trust{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-success)}.calc-card{display:grid;overflow:clip;border-radius:var(--radius-lg);background:var(--color-surface-muted)}.calc-card__controls{display:grid;padding:var(--space-xs) var(--space-lg)}.calc-card__results{display:grid;gap:var(--space-2xs);padding:var(--space-md) var(--space-lg) var(--space-lg);background:var(--calc-results-bg);color:var(--calc-results-text)}.calc-card--pending .calc-card__controls{gap:var(--space-sm);min-height:18rem;align-content:center;padding-block:var(--space-lg)}.calc-card__pending-title{font-size:var(--step-2);font-weight:var(--weight-display);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}.calc-card__pending-text{color:var(--color-text-soft);max-width:40ch}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--card-min),1fr));gap:var(--space-md)}.card{display:flex;flex-direction:column;background:var(--color-surface);border-radius:var(--radius-lg);overflow:clip;text-decoration:none;color:var(--color-text);transition:transform var(--duration-base) var(--ease),box-shadow var(--duration-base) var(--ease),border-color var(--duration-base) var(--ease)}.card:hover{transform:translateY(var(--lift));box-shadow:var(--shadow-card)}.card__media{position:relative;aspect-ratio:16 / 10;display:grid;place-items:center;overflow:clip;background:var(--color-media-1)}.card__media--a{background:var(--color-media-1)}.card__media--b{background:var(--color-media-2)}.card__media--c{background:var(--color-media-3)}.card__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.card__mono{font-family:var(--font-display);font-weight:var(--weight-extrabold);font-size:var(--step-3);letter-spacing:var(--tracking-tight);color:var(--color-media-fg);opacity:.22}.pill{position:absolute;top:var(--space-2xs);left:var(--space-2xs);background:var(--color-pill-bg);color:var(--color-pill-fg);font-size:var(--step--1);font-weight:var(--weight-semibold);padding:var(--space-3xs) var(--space-xs);border-radius:var(--radius-pill)}.card__body{display:flex;flex-direction:column;gap:var(--space-2xs);padding:var(--space-md);flex:1}.card__meta{font-size:var(--step--1);font-weight:var(--weight-medium);color:var(--color-text-muted)}.card__title{font-family:var(--font-display);font-size:var(--step-1);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight)}.card__desc{font-size:var(--step-0);color:var(--color-text-muted);line-height:var(--leading-snug)}.card__go{margin-top:auto;padding-top:var(--space-2xs);color:var(--color-brand-strong);font-weight:var(--weight-semibold);font-size:var(--step-0)}.related{margin-top:var(--space-2xl);padding-top:var(--space-lg);border-top:var(--border-width) solid var(--color-border)}.related__heading{font-size:var(--step-2);margin-bottom:var(--space-md)}.site-footer{margin-top:var(--space-2xl);padding-block:var(--space-xl);background:var(--color-footer-bg);color:var(--color-footer-muted)}.footer-tagline{max-width:22ch;letter-spacing:var(--tracking-tight);margin-bottom:var(--space-xl);font-family:var(--font-display);font-size:var(--step-3);font-weight:var(--weight-display);line-height:var(--leading-display);color:var(--color-footer-text)}.footer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:var(--space-lg)}.footer-col h2{font-family:var(--font-label);font-size:var(--step--1);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-footer-muted);margin-bottom:var(--space-sm)}.footer-col ul{list-style:none;padding:0;display:grid;gap:var(--space-2xs)}.footer-col a{color:var(--color-footer-text);font-size:var(--step-0);text-decoration:none}.footer-col a:hover{color:var(--color-footer-muted)}.footer-legal{margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:var(--border-width) solid var(--color-footer-rule);font-family:var(--font-label);font-size:var(--step--1)}.calc__field{display:grid;grid-template-columns:1fr minmax(8rem,11rem);align-items:center;gap:var(--space-md);padding-block:var(--space-sm);border-bottom:var(--border-width) solid var(--color-border-strong)}.calc__field:last-child{border-bottom:0}.calc__label{font-size:var(--step-0);font-weight:var(--weight-medium);color:var(--color-text)}.calc__inputwrap{display:flex;align-items:baseline;background:var(--input-bg);border:var(--border-width) solid var(--input-border);border-radius:var(--input-radius);transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}.calc__inputwrap:focus-within{border-color:var(--color-text);box-shadow:0 0 0 var(--focus-ring) var(--color-brand-tint)}.calc__input{width:100%;min-width:0;padding:var(--space-2xs) var(--space-xs);font-size:var(--step-0);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;text-align:right;color:var(--color-text);background:transparent;border:0;-moz-appearance:textfield}.calc__input::-webkit-outer-spin-button,.calc__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.calc__input:focus{outline:none}select.calc__input{text-align:left;background:var(--input-bg);border:var(--border-width) solid var(--input-border);border-radius:var(--input-radius)}.calc__unit{flex:none;min-width:3.5ch;padding-right:var(--space-xs);font-family:var(--font-label);font-size:var(--step--1);color:var(--color-text-muted)}.calc__result-label{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--calc-results-muted)}.calc__result-row{display:flex;align-items:baseline;gap:var(--space-2xs)}.calc__result-value{font-size:var(--step-3);font-weight:var(--weight-display);letter-spacing:var(--tracking-tight);line-height:1;font-variant-numeric:tabular-nums}.calc__result-unit{font-size:var(--step-1);font-weight:var(--weight-regular);color:var(--calc-results-muted)}.calc__copy{justify-self:start;margin-top:var(--space-2xs);padding:0;font:var(--weight-medium) var(--step--1) / 1 var(--font-body);color:var(--calc-results-muted);background:none;border:0;text-decoration:underline;text-underline-offset:.25em;cursor:pointer}.calc__copy:hover{color:var(--calc-results-text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2xs);font:var(--btn-weight) var(--btn-font) / 1 var(--font-body);padding:var(--btn-pad-y) var(--btn-pad-x);border:0;border-radius:var(--btn-radius);background:var(--btn-primary-bg);color:var(--btn-primary-fg);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background var(--duration-fast) var(--ease)}.btn:after{content:"→"}.btn:hover,.btn:focus-visible{background:var(--btn-hover-bg);color:var(--btn-primary-fg)}.btn--sm{--btn-font: var(--step--1);--btn-pad-y: var(--space-2xs);--btn-pad-x: var(--space-sm)}.btn--lg{--btn-font: var(--step-0);--btn-pad-y: var(--space-sm);--btn-pad-x: var(--space-lg)}.breadcrumbs{padding-top:var(--space-sm)}.breadcrumbs__list{display:flex;flex-wrap:wrap;gap:var(--space-2xs);list-style:none;padding:0;font-size:var(--step--1);color:var(--color-text-muted)}.breadcrumbs__item+.breadcrumbs__item:before{content:"/";margin-right:var(--space-2xs);color:var(--color-border-strong)}.breadcrumbs a{color:var(--color-text-soft);text-decoration:none}.breadcrumbs a:hover{color:var(--color-brand-strong)}.sec-head__more{font-weight:var(--weight-semibold);color:var(--color-brand-strong);text-decoration:none;white-space:nowrap}.empty{color:var(--color-text-muted)}.card-grid--pattern{grid-template-columns:repeat(auto-fill,minmax(var(--pattern-card-min),1fr))}.card-grid--pattern .card__media{aspect-ratio:1 / 1}.faq{margin-top:var(--space-2xl)}.faq__heading{padding-top:var(--space-sm);border-top:var(--rule);font-size:var(--step-2);font-weight:var(--weight-display);letter-spacing:var(--tracking-tight);margin-bottom:var(--space-md)}.faq__item{border-bottom:var(--border-width) solid var(--color-border);padding-block:var(--space-sm);max-width:var(--measure)}.faq__q{font-size:var(--step-1);font-weight:var(--weight-semibold);cursor:pointer}.faq__a{margin-top:var(--space-2xs);color:var(--color-text-muted)}.affiliate-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:var(--color-surface)}.affiliate-card__name{font-size:var(--step-1)}.affiliate-card__blurb{font-size:var(--step-0);color:var(--color-text-muted);margin-top:var(--space-3xs)}.affiliate-card__price{font-size:var(--step-0);font-weight:var(--weight-bold);margin-top:var(--space-2xs)}.affiliate-card__cta{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-3xs)}.affiliate-card__paid{font-size:var(--step--1);color:var(--color-text-muted)}.affiliate-disclosure{font-size:var(--step--1);color:var(--color-text-muted);margin-block:var(--space-sm)}.ad-slot{margin-block:var(--space-lg);min-height:var(--ad-min-height)}.ad-slot__unit{display:block}.pattern-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-xl);align-items:start;padding-top:var(--space-md)}.pattern-detail__media{position:sticky;top:var(--space-2xl)}.pattern-detail__body{display:grid;gap:var(--space-xl);max-width:var(--measure)}.pattern-detail__cta{margin-top:calc(var(--space-md) * -1)}@media(max-width:52rem){.pattern-detail{grid-template-columns:1fr;gap:var(--space-lg)}.pattern-detail__media{position:static}}.pattern-intro{display:grid;gap:var(--space-sm)}.pattern-intro__title{font-size:var(--step-3);font-weight:var(--weight-display);line-height:var(--leading-display);letter-spacing:var(--tracking-tight)}.pattern-intro__lede{font-size:var(--step-1);line-height:var(--leading-snug);color:var(--color-text-soft)}.pattern-figure{display:grid;gap:var(--space-md)}.pattern-figure__item{display:grid;gap:var(--space-2xs)}.pattern-figure__item img{width:100%;aspect-ratio:var(--pin-ratio);object-fit:cover;border-radius:var(--radius-md);background:var(--color-surface)}.pattern-figure__placeholder{display:grid;place-items:center;aspect-ratio:var(--pin-ratio);border-radius:var(--radius-md);background:var(--color-media-1);color:var(--color-media-fg);font-size:var(--step-4);font-weight:var(--weight-display)}.specs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-lg);border-top:var(--rule)}.specs__row{display:grid;gap:var(--space-3xs);padding-block:var(--space-sm);border-bottom:var(--border-width) solid var(--color-border)}.specs__label{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-muted)}.specs__value{font-size:var(--step-1);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums}.colour-key__heading,.materials__heading,.offer__heading{padding-top:var(--space-sm);border-top:var(--rule);margin-bottom:var(--space-sm);font-family:var(--font-label);font-size:var(--step--1);font-weight:var(--weight-regular);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-muted)}.colour-key__list{list-style:none;padding:0;display:grid}.colour-key__item{display:flex;align-items:center;gap:var(--space-sm);padding-block:var(--space-xs);border-bottom:var(--border-width) solid var(--color-border)}.colour-key__name{font-weight:var(--weight-medium)}.colour-key__count{margin-left:auto;font-family:var(--font-label);font-size:var(--step--1);color:var(--color-text-muted)}.swatch{flex:none;inline-size:var(--swatch-size);block-size:var(--swatch-size);border-radius:var(--radius-pill);box-shadow:inset 0 0 0 var(--border-width) var(--swatch-border)}.swatch--clear{background:var(--glass-clear)}.swatch--white-opal{background:var(--glass-white-opal)}.swatch--ruby{background:var(--glass-ruby)}.swatch--rose{background:var(--glass-rose)}.swatch--orange{background:var(--glass-orange)}.swatch--amber{background:var(--glass-amber)}.swatch--yellow{background:var(--glass-yellow)}.swatch--olive{background:var(--glass-olive)}.swatch--green{background:var(--glass-green)}.swatch--teal{background:var(--glass-teal)}.swatch--sky{background:var(--glass-sky)}.swatch--cobalt{background:var(--glass-cobalt)}.swatch--violet{background:var(--glass-violet)}.swatch--brown{background:var(--glass-brown)}.swatch--grey{background:var(--glass-grey)}.swatch--black{background:var(--glass-black)}.materials__list{list-style:none;padding:0;display:grid}.materials__item{display:flex;justify-content:space-between;gap:var(--space-sm);padding-block:var(--space-xs);border-bottom:var(--border-width) solid var(--color-border)}.materials__qty{font-family:var(--font-label);font-size:var(--step--1);color:var(--color-text-muted)}.pattern-detail__notes:empty{display:none}.downloads{display:grid;gap:var(--space-sm)}.downloads__list{list-style:none;padding:0;display:grid;gap:var(--space-2xs)}.downloads__list a{color:var(--color-text)}.downloads__list a:hover{color:var(--color-brand)}.downloads__note{margin-left:var(--space-2xs);font-family:var(--font-label);font-size:var(--step--1);color:var(--color-text-muted)}.pattern-figure__item img{height:auto}.offer{display:grid;gap:var(--space-2xs);padding:var(--space-lg);border-radius:var(--radius-lg);background:var(--color-surface-muted)}.offer__heading{padding-top:0;border-top:0;margin-bottom:0}.offer__text{color:var(--color-text-soft)}.offer__price{font-size:var(--step-2);font-weight:var(--weight-display);letter-spacing:var(--tracking-tight)}.home-hero{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--space-xl);align-items:center;padding-block:var(--space-md) var(--space-lg)}.home-hero__title{font-size:var(--step-3);font-weight:var(--weight-display);line-height:var(--leading-display);letter-spacing:var(--tracking-tight);max-width:18ch}.home-hero__title em{font-style:italic;font-weight:var(--weight-medium);color:var(--color-emphasis)}.home-hero__side{display:grid;gap:var(--space-md)}.home-hero__tagline{max-width:40ch;font-size:var(--step-0);line-height:var(--leading-snug);color:var(--color-text-soft)}.home-hero .hero__cta{margin-top:0;gap:var(--space-sm)}@media(max-width:52rem){.home-hero{grid-template-columns:1fr;gap:var(--space-md)}}.chips{display:flex;align-items:center;gap:var(--space-lg);padding-block:var(--space-sm);border-block:var(--border-width) solid var(--color-border);flex-wrap:wrap}.chips__label{flex:none;font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-muted)}.chips__list{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);list-style:none;padding:0;margin:0}.chip{white-space:nowrap;color:var(--color-text-soft);font-size:var(--step-0);text-decoration:none;transition:color var(--duration-fast) var(--ease)}.chip:hover,.chip--active{color:var(--color-brand)}.pin-grid{columns:var(--pin-col-min) auto;column-gap:var(--pin-gap)}.pin{position:relative;break-inside:avoid;margin-bottom:var(--space-md)}.pin__link{display:block;color:var(--color-text);text-decoration:none}.pin__media{display:grid;place-items:center;overflow:clip;border-radius:var(--radius-md);background:var(--color-media-1);aspect-ratio:var(--pin-ratio)}.pin__media img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-base) var(--ease)}.pin__link:hover .pin__media img{transform:scale(1.03)}.pin__mono{font-family:var(--font-display);font-size:var(--step-4);color:var(--color-media-fg)}.pin__caption{display:grid;gap:var(--space-3xs);padding-top:var(--space-xs)}.pin__title{font-size:var(--step-0);font-weight:var(--weight-semibold);line-height:var(--leading-snug)}.pin__meta{font-family:var(--font-label);font-size:var(--step--1);color:var(--color-text-muted)}.pin__save{position:absolute;top:var(--space-xs);right:var(--space-xs);padding:var(--space-3xs) var(--space-2xs);background:var(--color-bg);color:var(--color-text);font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;text-decoration:none;opacity:0;transition:opacity var(--duration-fast) var(--ease)}.pin:hover .pin__save,.pin__save:focus-visible{opacity:1}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--gallery-col-min),1fr));gap:var(--space-xl) var(--space-md)}@media(min-width:60rem){.gallery-grid--feature{grid-template-columns:repeat(3,1fr)}.gallery-card--feature{grid-column:span 2;grid-row:span 2}.gallery-card--feature .gallery-card__media{aspect-ratio:4 / 3}.gallery-card--feature .gallery-card__title{font-size:var(--step-2)}}.gallery-card{display:grid;gap:var(--space-sm);align-content:start;color:var(--color-text);text-decoration:none}.gallery-card__media{display:grid;place-items:center;overflow:clip;aspect-ratio:3 / 2;border-radius:var(--radius-md);background:var(--color-media-1)}.gallery-card__media img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-base) var(--ease)}.gallery-card:hover .gallery-card__media img{transform:scale(1.03)}.gallery-card__mono{font-size:var(--step-4);font-weight:var(--weight-display)}.gallery-card__body{display:grid;gap:var(--space-2xs)}.gallery-card__title{font-size:var(--step-1);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}.gallery-card:hover .gallery-card__title{color:var(--color-brand)}.gallery-card__desc{color:var(--color-text-soft);line-height:var(--leading-snug);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hero-image{margin-bottom:var(--space-xl)}.hero-image img{width:100%;aspect-ratio:21 / 9;object-fit:cover;border-radius:var(--radius-lg)}.pattern-intro__categories{margin:0;display:flex;flex-wrap:wrap;gap:var(--space-sm)}.browse-groups{margin-bottom:var(--space-lg)}.browse-groups .chips+.chips{border-top:none}.home-start{margin-block:var(--space-xl);display:grid;grid-template-columns:1fr 2fr 1fr;align-items:center;gap:var(--space-md);background:var(--color-surface);padding:var(--space-lg)}.home-start__title{font-size:var(--step-1);line-height:var(--leading-tight)}.home-start p{margin:0;color:var(--color-text-soft)}.home-start__links{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.home-guide-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg)}.home-guide{display:grid;gap:var(--space-sm);text-decoration:none;color:var(--color-text)}.home-guide__title{font-size:var(--step-1);font-weight:var(--weight-semibold)}.home-guide__description{color:var(--color-text-soft)}.home-guide:hover .home-guide__title{color:var(--color-brand)}@media(max-width:48rem){.home-start,.home-guide-links{grid-template-columns:1fr}}@media(max-width:48rem){.home-page .sec-head,.site-header__inner{flex-direction:column;align-items:flex-start}.site-nav{gap:var(--space-xs) var(--space-md)}.brand{flex-shrink:0}}.email-capture{display:inline-block}.email-capture__trigger--compact{padding:0;background:none;color:var(--color-text);text-decoration:underline;min-height:auto;font-weight:var(--weight-regular)}.email-modal{position:fixed;margin:auto;width:min(100% - var(--space-lg),32rem);max-height:calc(100% - var(--space-lg));overflow:auto;padding:var(--space-lg);border:none;background:var(--color-bg);color:var(--color-text)}.email-modal::backdrop{background:var(--color-text);opacity:.65}.email-modal h2{font-size:var(--step-2);padding-right:var(--space-lg)}.email-modal p{margin-block:var(--space-sm)}.email-modal__close{position:absolute;top:var(--space-sm);right:var(--space-md);border:none;background:none;color:var(--color-text);cursor:pointer;font-size:var(--step-2)}.email-modal__form{display:grid;gap:var(--space-md)}.email-modal__honeypot{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.email-modal__consent{display:flex;align-items:flex-start;gap:var(--space-sm);font-size:var(--step--1)}.email-modal__consent input{flex:none;margin-top:var(--space-3xs)}.email-modal button:disabled,.tool-button:disabled{opacity:.6;cursor:wait}.tool-error{color:var(--color-danger)}[hidden]{display:none!important}.tool-workspace{padding:var(--space-lg)}.tool-controls{display:grid;gap:var(--space-md)}.tool-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.tool-note{color:var(--color-text-soft);font-size:var(--step--1)}.tool-check,.tool-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.tool-text-button{border:none;background:none;color:var(--color-brand);text-decoration:underline;cursor:pointer;font:inherit}.tool-image-preview{width:100%;max-height:20rem;object-fit:contain}.tool-subheading{font-size:var(--step-1)}.tool-palette{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.tool-palette li{display:flex;align-items:center;gap:var(--space-sm)}.tool-palette small{display:block;color:var(--color-text-muted)}.tool-palette .swatch{display:block;width:var(--space-lg);height:var(--space-lg);border-radius:var(--radius-sm)}.tool-pattern-preview{width:100%;max-height:32rem;background:var(--color-bg)}.tool-piece{stroke:var(--color-text);stroke-width:2.5}.tool-piece--line{fill:var(--color-bg)}.tool-piece-number{fill:var(--color-text);font-family:var(--font-label);font-size:var(--step--1);text-anchor:middle;transform-box:fill-box}@media(max-width:36rem){.tool-field-grid{grid-template-columns:1fr}}.brand{display:inline-flex;align-items:center;gap:var(--space-xs)}.brand img{flex:none;width:var(--space-lg);height:var(--space-lg)}.email-modal .calc__field,.tool-controls .calc__field{display:grid;grid-template-columns:1fr;gap:var(--space-xs);padding-block:var(--space-xs)}.email-modal .calc__input,.tool-controls .calc__input{width:100%;min-width:0;max-width:100%;text-align:left}.email-modal .calc__input:focus-visible,.tool-controls .calc__input:focus-visible{outline:var(--border-width) solid var(--color-brand);outline-offset:var(--space-3xs)}.search-field{display:block;margin-bottom:var(--space-xs)}.search-bar{display:flex;gap:var(--space-xs);max-width:52rem}.search-input{flex:1;min-width:0;width:100%;padding:var(--space-sm);border:var(--border-width) solid var(--color-text);border-radius:var(--input-radius);background:var(--input-bg);color:var(--color-text);font:inherit;text-align:left}.search-input:focus-visible{outline:var(--focus-ring) solid var(--color-brand);outline-offset:var(--space-3xs)}.search-input::placeholder{color:var(--color-text-muted);opacity:1}@media(max-width:36rem){.search-bar{flex-direction:column}}.search-count{margin-block:var(--space-md);color:var(--color-text-muted)}.search-results{list-style:none;padding:0}.search-results li+li{border-top:var(--rule)}.search-result{display:flex;align-items:center;gap:var(--space-md);padding-block:var(--space-md);text-decoration:none}.search-result img{width:5rem;height:6rem;object-fit:contain;flex:none}.search-result>span{display:grid;gap:var(--space-3xs);min-width:0}.calc__context{max-width:42ch;color:var(--calc-results-muted);font-size:var(--step--1);line-height:var(--leading-normal);margin-top:var(--space-xs)}.prose details{margin-block:var(--space-md);padding-block:var(--space-sm);border-top:var(--rule)}.prose summary{cursor:pointer;font-weight:var(--weight-semibold)}@media(max-width:36rem){.calc__field{grid-template-columns:minmax(0,1fr);gap:var(--space-xs)}.calc__inputwrap{min-width:0}}
