/* SOLA design system — single stylesheet for swissopenleaf.ch.
   Generated from the SOLA Design System (Claude Design), 2026-10-31.
   Palette: BALANCED (approved). Logos and favicons live in /assets/.
   Size tokens renamed to --size-body and --size-caption: they collided with the colour tokens --text-body and --text-caption. */

/* ───────── tokens/fonts.css ───────── */
/* SOLA ships no custom webfonts. The brand's documented type is Georgia (serif,
   used for every heading in the Raum- und Gestaltungskonzept deck) and Arial
   (sans, the contract and document house style). Both are system fonts, so no
   @font-face rules are required and nothing has to download.
   If SOLA ever licenses a webfont, add the @font-face rules in THIS file so the
   compiler picks them up, and repoint --font-display / --font-sans. */
:root{--font-stack-display:Georgia,"Times New Roman",Times,serif;--font-stack-sans:Arial,Helvetica,"Liberation Sans",sans-serif}

/* ───────── tokens/colors.css ───────── */
/* SOLA colour system.
   Core greens sampled from the logo files (unified 22 Aug 2026 — supersedes all
   earlier values). Warm neutrals come from the Raum- und Gestaltungskonzept
   interior palette: the school's real rooms are warm white, oat, oak and moss,
   so screen and print work sits on paper, not on pure white. */
:root{
  /* ── Brand core (sampled from the logo) ── */
  --sola-forest:#04491F;        /* wordmark, outlines, headings, rules. 10.62:1 on white */
  --sola-signal:#568334;        /* accents, links, small text. 4.48:1 on white */
  --sola-leaf:#A9D26F;          /* leaf + page fills, highlights, badges. Fill only, never text */
  --sola-deep-forest:#032F14;   /* reversed panels */
  --sola-leaf-30:#E5F2D4;       /* 30% leaf tint — table headers, shaded bands */
  --sola-leaf-15:#F2F8E9;       /* 15% leaf tint — callouts, zebra rows */

  /* ── Warm neutrals (interior concept palette) ── */
  --sola-warm-white:#F7F4EE;    /* walls and ceilings — the page */
  --sola-linen:#FFFDF8;         /* card / sheet white */
  --sola-oat:#E8E0D2;           /* textiles, rugs, storage — panels and bands */
  --sola-stone:#CDC2AC;         /* hairlines and rules */
  --sola-oak:#C9A876;           /* floors, furniture — warm accent, sparingly */
  --sola-moss:#8A9A7B;          /* the single soft accent: felt, cushions, plants */
  --sola-fir:#1C3328;           /* environment dark (site theme-color, felt/textile dark) */

  /* ── Ink ── */
  --sola-ink:#1A1A1A;           /* body text */
  --sola-muted:#595959;         /* footers, clause numbers */
  --sola-caption:#7A776C;       /* warm grey captions (deck) */

  /* ── Semantic surfaces ── */
  --surface-page:var(--sola-warm-white);
  --surface-card:var(--sola-linen);
  --surface-sunken:var(--sola-leaf-15);
  --surface-accent:var(--sola-leaf-30);
  --surface-panel:var(--sola-oat);
  --surface-inverse:var(--sola-deep-forest);
  --surface-inverse-soft:var(--sola-fir);
  --surface-scrim:rgba(3,47,20,.46);

  /* ── Semantic text ── */
  --text-heading:var(--sola-forest);
  --text-body:var(--sola-ink);
  --text-muted:var(--sola-muted);
  --text-caption:var(--sola-caption);
  --text-accent:var(--sola-signal);
  --text-link:var(--sola-signal);
  --text-link-hover:var(--sola-forest);
  --text-on-inverse:var(--sola-warm-white);
  --text-on-inverse-muted:rgba(247,244,238,.68);
  --text-on-accent:var(--sola-forest);

  /* ── Lines ── */
  --border-hairline:var(--sola-stone);
  --border-soft:rgba(4,73,31,.14);
  --border-strong:var(--sola-forest);
  --border-inverse:rgba(247,244,238,.22);
  --focus-ring:var(--sola-signal);

  /* ── Status (intentional addition — no source values existed) ── */
  --status-positive:var(--sola-signal);
  --status-attention:#A97B2E;
  --status-critical:#9C3B28;
}
/* Reversed scope: put on any dark panel to flip the semantic text tokens. */
.sola-inverse{--text-heading:var(--sola-warm-white);--text-body:var(--sola-warm-white);--text-muted:rgba(247,244,238,.68);--text-caption:rgba(247,244,238,.6);--text-accent:var(--sola-leaf);--text-link:var(--sola-leaf);--text-link-hover:var(--sola-warm-white);--border-hairline:rgba(247,244,238,.22);--border-soft:rgba(247,244,238,.14);--surface-card:rgba(247,244,238,.06);color:var(--text-body)}

/* ───────── tokens/typography.css ───────── */
/* Two families, no exceptions. Georgia carries every heading, pull quote and
   number; Arial carries body copy, UI and the letter-spaced caps labels that
   run across the top of every deck slide and website section. */
:root{
  --font-display:var(--font-stack-display);
  --font-sans:var(--font-stack-sans);

  /* Sizes — display (Georgia) */
  --text-display-xl:4rem;      /* 64 — hero, title slide */
  --text-display-l:3rem;       /* 48 — page h1 */
  --text-display-m:2.25rem;    /* 36 — slide title, section h2 */
  --text-display-s:1.625rem;   /* 26 — card / room title */
  --text-display-xs:1.25rem;   /* 20 — h4, quote attribution */

  /* Sizes — text (Arial) */
  --text-lead:1.25rem;         /* 20 — standfirst under a heading */
  --size-body:1rem;            /* 16 */
  --text-body-s:0.9375rem;     /* 15 — dense lists, deck bullets */
  --text-small:0.875rem;       /* 14 */
  --size-caption:0.8125rem;    /* 13 — figure captions */
  --text-label:0.6875rem;      /* 11 — tracked caps eyebrow */
  --text-counter:0.75rem;      /* 12 — 01 / 02 counters */

  /* Line heights */
  --leading-tight:1.06;
  --leading-title:1.18;
  --leading-snug:1.4;
  --leading-body:1.7;
  --leading-loose:1.8;

  /* Weights — Georgia is used regular and bold only */
  --weight-regular:400;
  --weight-bold:700;

  /* Tracking */
  --tracking-display:-0.014em;
  --tracking-title:-0.008em;
  --tracking-body:0;
  --tracking-label:0.16em;     /* eyebrows, section numbers, deck running heads */
  --tracking-label-wide:0.28em;/* ACADEMY-style widely spaced caps */
}

/* ───────── tokens/spacing.css ───────── */
/* 4px base. Generous vertical rhythm — the brand's own words are "visually
   quiet, intellectually rich": whitespace is the main compositional tool. */
:root{
  --space-0:0;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;
  --space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;
  --space-16:4rem;--space-20:5rem;--space-24:6rem;--space-32:8rem;
  --gap-inline:var(--space-3);      /* buttons, chips, meta rows */
  --gap-stack:var(--space-4);       /* paragraphs in a block */
  --gap-block:var(--space-8);       /* blocks inside a section */
  --section-y:var(--space-24);      /* between page sections */
  --section-y-tight:var(--space-16);
  --pad-card:var(--space-6);
  --pad-panel:var(--space-10);
}

/* ───────── tokens/radii.css ───────── */
/* Quiet and rectilinear. Nothing is bubbly: cards and buttons take a 3–6px
   radius, only badges and pills go fully round. Photography is squared off. */
:root{
  --radius-none:0;
  --radius-xs:2px;
  --radius-sm:3px;      /* buttons, inputs, swatches */
  --radius-md:6px;      /* cards, figures, panels */
  --radius-lg:12px;     /* large media panels, modals */
  --radius-pill:999px;  /* badges, language chips */
  --radius-circle:50%;
}

/* ───────── tokens/elevation.css ───────── */
/* Shadows are green-tinted, never grey or black, and always soft — the deck's
   cards sit on paper rather than float above it. Hairlines do most of the work;
   reach for a shadow only when something genuinely overlaps content. */
:root{
  --shadow-none:none;
  --shadow-hairline:inset 0 0 0 1px var(--border-hairline);
  --shadow-xs:0 1px 2px rgba(4,73,31,.06);
  --shadow-sm:0 2px 6px rgba(4,73,31,.07);
  --shadow-md:0 8px 24px -8px rgba(3,47,20,.16);
  --shadow-lift:0 14px 40px -12px rgba(3,47,20,.22);
  --shadow-overlay:0 24px 64px -16px rgba(3,47,20,.34);
  --border-width-hair:1px; /* @kind spacing */
  --border-width-rule:2px; /* @kind spacing */
  --scrim-bottom:linear-gradient(to top,rgba(3,47,20,.72) 0%,rgba(3,47,20,.32) 46%,rgba(3,47,20,0) 100%); /* @kind color */
  --scrim-top:linear-gradient(to bottom,rgba(3,47,20,.55) 0%,rgba(3,47,20,0) 70%); /* @kind color */
}

/* ───────── tokens/motion.css ───────── */
/* Calm motion only: fades and 2-4px rises. No bounce, no spring, no slide-ins
   from off-screen. The audience includes children who are sensory-sensitive -
   "reizarm, aber nicht reizlos" applies to movement as much as to colour. */
:root{
  --ease-standard:cubic-bezier(.2,.6,.2,1); /* @kind other */
  --ease-out-soft:cubic-bezier(.16,.84,.44,1); /* @kind other */
  --ease-in-out:cubic-bezier(.4,0,.2,1); /* @kind other */
  --dur-instant:80ms; /* @kind other */
  --dur-fast:140ms; /* @kind other */
  --dur-base:220ms; /* @kind other */
  --dur-slow:420ms; /* @kind other */
  --dur-reveal:640ms; /* @kind other */
  --lift-hover:-2px; /* @kind spacing */
  --press-scale:0.985; /* @kind other */
}
@media (prefers-reduced-motion:reduce){:root{
  --dur-instant:0ms; /* @kind other */
  --dur-fast:0ms; /* @kind other */
  --dur-base:0ms; /* @kind other */
  --dur-slow:0ms; /* @kind other */
  --dur-reveal:0ms; /* @kind other */
  --lift-hover:0px; /* @kind spacing */
  --press-scale:1; /* @kind other */
}}

/* ───────── tokens/layout.css ───────── */
:root{
  --container-wide:1280px; /* @kind spacing */
  --container:1120px; /* @kind spacing */
  --container-narrow:760px; /* @kind spacing */
  --measure-prose:68ch; /* @kind spacing */
  --measure-lead:52ch; /* @kind spacing */
  --gutter:clamp(1.25rem,5vw,4rem); /* @kind spacing */
  --header-height:76px; /* @kind spacing */
  /* Deck master, 16:9 */
  --slide-w:1920px; /* @kind spacing */
  --slide-h:1080px; /* @kind spacing */
  /* Aspect ratios: portrait = team headshots, photo = rooms and renderings */
  --ratio-portrait:4 / 5; /* @kind other */
  --ratio-photo:4 / 3; /* @kind other */
  --ratio-wide:16 / 9; /* @kind other */
}

/* ───────── tokens/base.css ───────── */
/* Minimal element defaults so any consuming page inherits the brand voice
   without importing components. Nothing here is a component style. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-sans);font-size:var(--size-body);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--text-heading);font-weight:var(--weight-regular);letter-spacing:var(--tracking-title);line-height:var(--leading-title);margin:0 0 var(--space-4)}
h1{font-size:var(--text-display-l);letter-spacing:var(--tracking-display)}
h2{font-size:var(--text-display-m)}
h3{font-size:var(--text-display-s)}
h4{font-size:var(--text-display-xs)}
p{margin:0 0 var(--space-4);max-width:var(--measure-prose);text-wrap:pretty}
a{color:var(--text-link);text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:0.18em;text-decoration-color:color-mix(in oklab,var(--text-link) 45%,transparent);transition:color var(--dur-fast) var(--ease-standard),text-decoration-color var(--dur-fast) var(--ease-standard)}
a:hover{color:var(--text-link-hover);text-decoration-color:currentColor}
a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-xs)}
strong,b{font-weight:var(--weight-bold)}
small{font-size:var(--text-small)}
hr{border:0;border-top:var(--border-width-hair) solid var(--border-hairline);margin:var(--space-10) 0}
figure{margin:0}
img{max-width:100%;display:block}
blockquote{margin:0;font-family:var(--font-display);color:var(--text-heading)}
::selection{background:var(--sola-leaf);color:var(--sola-forest)}

/* ───────── components/core/core.css ───────── */
/* SOLA · core primitives */
.sola-btn{display:inline-flex;flex:none;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-small);line-height:1;letter-spacing:.02em;white-space:nowrap;border:var(--border-width-hair) solid transparent;border-radius:var(--radius-sm);padding:0.875rem 1.375rem;cursor:pointer;text-decoration:none;transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}
.sola-btn--sm{padding:0.625rem 1rem;font-size:var(--size-caption)}
.sola-btn--lg{padding:1.0625rem 1.75rem;font-size:var(--size-body)}
.sola-btn--primary{background:var(--sola-forest);color:var(--sola-warm-white);border-color:var(--sola-forest)}
.sola-btn--primary:hover{background:#063d1b;transform:translateY(var(--lift-hover));box-shadow:var(--shadow-sm)}
.sola-btn--secondary{background:transparent;color:var(--sola-forest);border-color:var(--sola-forest)}
.sola-btn--secondary:hover{background:var(--sola-leaf-15);transform:translateY(var(--lift-hover))}
.sola-btn--ghost{background:transparent;color:var(--sola-signal);border-color:transparent;padding-left:0;padding-right:0}
.sola-btn--ghost:hover{color:var(--sola-forest)}
.sola-btn--inverse{background:var(--sola-leaf);color:var(--sola-forest);border-color:var(--sola-leaf)}
.sola-btn--inverse:hover{background:#b8dc82;transform:translateY(var(--lift-hover))}
.sola-btn--onmedia{background:transparent;color:var(--sola-warm-white);border-color:rgba(247,244,238,.55)}
.sola-btn--onmedia:hover{background:rgba(247,244,238,.12);border-color:var(--sola-warm-white);transform:translateY(var(--lift-hover))}
.sola-btn--quiet{background:var(--sola-linen);color:var(--sola-forest);border-color:var(--border-hairline)}
.sola-btn--quiet:hover{border-color:var(--sola-forest)}
.sola-btn:active{transform:scale(var(--press-scale));box-shadow:none}
.sola-btn[disabled],.sola-btn[aria-disabled="true"]{opacity:.42;pointer-events:none}
.sola-btn__arrow{font-size:1em;transition:transform var(--dur-fast) var(--ease-standard)}
.sola-btn:hover .sola-btn__arrow{transform:translateX(3px)}

.sola-badge{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;padding:0.4375rem 0.75rem;border-radius:var(--radius-pill);border:var(--border-width-hair) solid transparent;white-space:nowrap}
.sola-badge--leaf{background:var(--sola-leaf);color:var(--sola-forest)}
.sola-badge--tint{background:var(--sola-leaf-30);color:var(--sola-forest)}
.sola-badge--forest{background:var(--sola-forest);color:var(--sola-warm-white)}
.sola-badge--oat{background:var(--sola-oat);color:var(--sola-forest)}
.sola-badge--outline{background:transparent;color:var(--sola-signal);border-color:var(--border-hairline)}
.sola-badge__dot{width:6px;height:6px;border-radius:var(--radius-circle);background:currentColor;opacity:.75}

.sola-divider{display:flex;align-items:center;gap:var(--space-3);color:var(--sola-signal)}
.sola-divider__line{flex:1;height:0;border-top:var(--border-width-hair) solid var(--border-hairline)}
.sola-divider--rule .sola-divider__line{border-top-color:var(--border-hairline)}
.sola-divider--leaf .sola-divider__line{border-top-color:var(--sola-signal)}
.sola-divider--strong .sola-divider__line{border-top:var(--border-width-rule) solid var(--sola-forest)}
.sola-divider__label{font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--tracking-label-wide);text-transform:uppercase;color:var(--sola-signal)}
.sola-divider--dashes{justify-content:center}
.sola-divider--dashes .sola-divider__line{max-width:72px}

.sola-logo{display:inline-flex;align-items:center;gap:var(--space-5);text-decoration:none}
.sola-logo img{display:block;height:auto;width:auto}
.sola-logo__type{display:flex;flex-direction:column;gap:.35em;white-space:nowrap}
.sola-logo__name{font-family:var(--font-display);font-weight:700;color:var(--text-heading);letter-spacing:.01em;line-height:1}
.sola-logo__type small{display:block;font-family:var(--font-sans);letter-spacing:.2em;text-transform:uppercase;line-height:1;color:color-mix(in oklab,var(--sola-fir) 62%,var(--sola-caption))}
.sola-inverse .sola-logo__type small,.sola-footer .sola-logo__type small{color:var(--text-on-inverse-muted)}
.sola-footer .sola-logo__name{color:var(--sola-warm-white)}

/* ───────── components/editorial/editorial.css ───────── */
/* SOLA · editorial primitives. The brand's page architecture: a tracked-caps
   eyebrow, a numbered section, a Georgia heading, a lead, then body. */
.sola-eyebrow{display:flex;align-items:baseline;gap:var(--space-3);font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-accent);margin:0 0 var(--space-4)}
.sola-eyebrow--wide{letter-spacing:var(--tracking-label-wide)}
.sola-eyebrow--muted{color:var(--text-caption)}
.sola-eyebrow__num{font-variant-numeric:tabular-nums;color:var(--sola-signal)}
.sola-eyebrow__sep{color:var(--border-hairline)}

.sola-section-head{margin:0 0 var(--space-10)}
.sola-section-head__num{display:block;font-family:var(--font-sans);font-size:var(--text-counter);letter-spacing:var(--tracking-label);color:var(--sola-signal);font-variant-numeric:tabular-nums;margin-bottom:var(--space-4)}
.sola-section-head__title{font-family:var(--font-display);color:var(--text-heading);font-weight:var(--weight-regular);letter-spacing:var(--tracking-title);line-height:var(--leading-title);margin:0}
.sola-section-head--xl .sola-section-head__title{font-size:var(--text-display-l);letter-spacing:var(--tracking-display)}
.sola-section-head--lg .sola-section-head__title{font-size:var(--text-display-m)}
.sola-section-head--md .sola-section-head__title{font-size:var(--text-display-s)}
.sola-section-head__lead{font-size:var(--text-lead);line-height:var(--leading-snug);color:var(--text-body);max-width:var(--measure-lead);margin:var(--space-5) 0 0}
.sola-section-head--center{text-align:center;margin-inline:auto}
.sola-section-head--center .sola-section-head__lead{margin-inline:auto}
.sola-section-head__rule{margin-top:var(--space-6);border:0;border-top:var(--border-width-hair) solid var(--border-hairline);max-width:100%}

.sola-numlist{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-5)}
.sola-numlist__item{display:grid;grid-template-columns:2.25rem 1fr;gap:var(--space-4);align-items:baseline}
.sola-numlist__num{font-family:var(--font-sans);font-size:var(--text-counter);letter-spacing:.1em;color:var(--sola-signal);font-variant-numeric:tabular-nums;padding-top:.28em}
.sola-numlist__text{margin:0;font-size:var(--size-body);line-height:var(--leading-body);max-width:var(--measure-prose)}
.sola-numlist--dashed .sola-numlist__item{grid-template-columns:1rem 1fr;gap:var(--space-3)}
.sola-numlist--dashed .sola-numlist__num{color:var(--border-hairline)}
.sola-numlist--ruled .sola-numlist__item{border-top:var(--border-width-hair) solid var(--border-soft);padding-top:var(--space-4)}
.sola-numlist--ruled{gap:var(--space-4)}

.sola-quote{margin:0;padding:var(--space-8) 0;max-width:34ch}
.sola-quote--panel{background:var(--surface-sunken);padding:var(--pad-panel);border-radius:var(--radius-md);max-width:56ch}
.sola-quote--inverse{background:var(--surface-inverse);color:var(--text-on-inverse);padding:var(--pad-panel);border-radius:var(--radius-md);max-width:56ch}
.sola-quote__text{font-family:var(--font-display);font-size:var(--text-display-s);line-height:var(--leading-snug);letter-spacing:var(--tracking-title);color:var(--text-heading);margin:0;text-wrap:pretty}
.sola-quote--inverse .sola-quote__text{color:var(--sola-warm-white)}
.sola-quote--lg .sola-quote__text{font-size:var(--text-display-m)}
.sola-quote__attr{display:block;margin-top:var(--space-5);font-family:var(--font-sans);font-size:var(--text-small);letter-spacing:.02em;color:var(--text-muted)}
.sola-quote--inverse .sola-quote__attr{color:var(--text-on-inverse-muted)}
.sola-quote__actions{margin-top:var(--space-6)}

.sola-bilingual{margin:0}
.sola-bilingual__de{margin:0;color:var(--text-body)}
.sola-bilingual__en{margin:var(--space-1) 0 0;color:var(--text-caption);font-size:var(--text-body-s)}
.sola-bilingual--inline{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:baseline}
.sola-bilingual--inline .sola-bilingual__en::before{content:"·";margin-right:var(--space-2);color:var(--border-hairline)}
.sola-bilingual--inline .sola-bilingual__en{margin:0}
.sola-bilingual--label .sola-bilingual__de,.sola-bilingual--label .sola-bilingual__en{font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase}

.sola-figure{margin:0}
.sola-figure__frame{overflow:hidden;border-radius:var(--radius-md);background:var(--sola-oat);box-shadow:var(--shadow-hairline)}
.sola-figure__frame img{width:100%;height:100%;object-fit:cover;display:block}
.sola-figure--photo .sola-figure__frame{aspect-ratio:var(--ratio-photo)}
.sola-figure--wide .sola-figure__frame{aspect-ratio:var(--ratio-wide)}
.sola-figure--portrait .sola-figure__frame{aspect-ratio:var(--ratio-portrait)}
.sola-figure--square .sola-figure__frame{aspect-ratio:1}
.sola-figure--bleed .sola-figure__frame{border-radius:0}
.sola-figure__caption{margin:var(--space-3) 0 0;font-family:var(--font-sans);font-size:var(--size-caption);line-height:var(--leading-snug);color:var(--text-caption);max-width:44ch}
.sola-figure__caption em{font-style:normal;color:var(--sola-signal)}

/* ───────── components/content/content.css ───────── */
/* SOLA · content blocks */
.sola-card{background:var(--surface-card);border:var(--border-width-hair) solid var(--border-hairline);border-radius:var(--radius-md);padding:var(--pad-card);display:flex;flex-direction:column;gap:var(--space-3);transition:border-color var(--dur-base) var(--ease-standard),box-shadow var(--dur-base) var(--ease-standard),transform var(--dur-base) var(--ease-standard)}
.sola-card--tint{background:var(--surface-sunken);border-color:transparent}
.sola-card--panel{background:var(--surface-panel);border-color:transparent}
.sola-card--inverse{background:var(--surface-inverse);border-color:transparent}
.sola-card--plain{background:transparent;border-color:transparent;padding:0}
.sola-card--interactive{cursor:pointer;text-decoration:none}
.sola-card--interactive:hover{border-color:var(--sola-signal);box-shadow:var(--shadow-sm);transform:translateY(var(--lift-hover))}
.sola-card__eyebrow{font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-accent);margin:0}
.sola-card__title{font-family:var(--font-display);font-size:var(--text-display-xs);line-height:var(--leading-title);color:var(--text-heading);margin:0}
.sola-card__body{margin:0;font-size:var(--text-body-s);line-height:var(--leading-body);color:var(--text-body)}
.sola-card__foot{margin-top:auto;padding-top:var(--space-4);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);font-size:var(--text-small);color:var(--text-muted)}

.sola-product{display:grid;gap:var(--space-3);background:var(--surface-card);border:var(--border-width-hair) solid var(--border-hairline);border-radius:var(--radius-md);padding:var(--space-4)}
.sola-product__frame{aspect-ratio:1;background:var(--sola-warm-white);border-radius:var(--radius-sm);overflow:hidden;display:grid;place-items:center}
.sola-product__frame img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}
.sola-product__name{font-family:var(--font-sans);font-size:var(--size-caption);line-height:var(--leading-snug);color:var(--text-body);margin:0}
.sola-product__price{font-family:var(--font-sans);font-size:var(--size-caption);color:var(--sola-signal);font-variant-numeric:tabular-nums;margin:0}

.sola-facts{display:grid;gap:var(--space-6);grid-auto-flow:column;grid-auto-columns:1fr;align-items:start}
.sola-facts--stack{grid-auto-flow:row}
.sola-facts__item{display:grid;gap:var(--space-2);padding-top:var(--space-4);border-top:var(--border-width-hair) solid var(--border-hairline)}
.sola-facts__value{font-family:var(--font-display);font-size:var(--text-display-s);line-height:1.05;color:var(--text-heading)}
.sola-facts__label{font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-caption)}

.sola-team{display:grid;gap:var(--space-4)}
.sola-team__frame{aspect-ratio:var(--ratio-portrait);border-radius:var(--radius-md);overflow:hidden;background:linear-gradient(160deg,#B6AAA0 0%,#7C7068 100%)}
.sola-team__frame img{width:100%;height:100%;object-fit:cover;filter:saturate(.96)}
.sola-team__name{font-family:var(--font-display);font-size:var(--text-display-xs);color:var(--text-heading);margin:0}
.sola-team__role{font-family:var(--font-sans);font-size:var(--text-small);color:var(--sola-signal);margin:0}
.sola-team__bio{font-size:var(--text-body-s);line-height:var(--leading-body);color:var(--text-body);margin:0}
.sola-team__placeholder{width:100%;height:100%;display:grid;place-items:center;font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:rgba(247,244,238,.8)}

.sola-swatch{display:grid;gap:var(--space-3);grid-template-columns:56px 1fr;align-items:start}
.sola-swatch__chip{width:56px;height:56px;border-radius:var(--radius-sm);box-shadow:var(--shadow-hairline)}
.sola-swatch__name{font-family:var(--font-display);font-size:var(--size-body);color:var(--text-heading);margin:0}
.sola-swatch__hex{font-family:var(--font-sans);font-size:var(--size-caption);letter-spacing:.06em;color:var(--sola-signal);margin:0;font-variant-numeric:tabular-nums}
.sola-swatch__use{font-family:var(--font-sans);font-size:var(--size-caption);line-height:var(--leading-snug);color:var(--text-caption);margin:0}
.sola-swatch--stacked{grid-template-columns:1fr}
.sola-swatch--stacked .sola-swatch__chip{width:100%;height:72px}

/* ───────── components/site/site.css ───────── */
/* SOLA · site chrome */
.sola-header{position:sticky;top:0;z-index:40;background:color-mix(in oklab,var(--sola-warm-white) 88%,transparent);backdrop-filter:saturate(1.2) blur(12px);border-bottom:var(--border-width-hair) solid var(--border-soft)}
.sola-header__inner{max-width:1440px;margin:0 auto;padding:0 var(--space-8);height:var(--header-height);display:flex;align-items:center;gap:var(--space-8)}
.sola-header__inner>.sola-logo{flex:none}
.sola-header__nav{display:flex;align-items:center;justify-content:center;gap:var(--space-8);flex:1;min-width:0}
.sola-header__link{font-family:var(--font-sans);font-size:var(--text-body-s);color:var(--text-heading);text-decoration:none;padding:var(--space-2) 0;border-bottom:2px solid transparent;white-space:nowrap;transition:color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard)}
.sola-header__link:hover{color:var(--sola-signal)}
.sola-header__link[aria-current="page"]{border-bottom-color:var(--sola-leaf);color:var(--sola-forest)}
.sola-header__lang{flex:none;display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-counter);letter-spacing:var(--tracking-label);color:var(--text-caption)}
.sola-header__cta{flex:none}
.sola-header__lang button{background:none;border:0;font:inherit;letter-spacing:inherit;color:var(--text-caption);cursor:pointer;padding:var(--space-1) 0}
.sola-header__lang button:hover{color:var(--text-heading)}
.sola-header__lang button[aria-pressed="true"]{color:var(--sola-forest);font-weight:700}
.sola-header__lang span{color:var(--border-hairline)}
.sola-header__burger{display:none;background:none;border:0;font:inherit;color:var(--text-heading);cursor:pointer;padding:var(--space-2)}
@media (max-width:1360px){.sola-header__nav{gap:var(--space-5)}}
@media (max-width:1260px){.sola-header__nav{gap:var(--space-4)}.sola-header__link{font-size:var(--text-small)}}
@media (max-width:1180px){.sola-header__nav{display:none}.sola-header__lang{margin-left:auto}.sola-header__burger{display:block}}

.sola-hero{position:relative;isolation:isolate;min-height:640px;display:flex;align-items:flex-end;overflow:hidden}
.sola-hero__media{position:absolute;inset:0;z-index:-2}
.sola-hero__media img{width:100%;height:100%;object-fit:cover}
.sola-hero::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(to top,rgba(3,47,20,.92) 0%,rgba(3,47,20,.78) 55%,rgba(3,47,20,.45) 100%)}
.sola-hero__inner{max-width:var(--container-wide);margin:0 auto;padding:var(--space-24) var(--gutter) var(--space-16);width:100%}
.sola-hero__title{font-family:var(--font-display);font-size:var(--text-display-xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);color:var(--sola-warm-white);margin:var(--space-4) 0 var(--space-5);max-width:20ch}
.sola-hero__lead{font-size:var(--text-lead);line-height:var(--leading-snug);color:rgba(247,244,238,.88);max-width:56ch;margin:0 0 var(--space-8)}
.sola-hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}
.sola-hero--paper{min-height:0}
.sola-hero--paper::after{display:none}
.sola-hero--paper .sola-hero__title{color:var(--text-heading)}
.sola-hero--paper .sola-hero__lead{color:var(--text-body)}

.sola-footer{background:var(--surface-inverse);color:var(--text-on-inverse);padding:var(--space-20) 0 var(--space-8);margin-top:var(--section-y)}
.sola-footer__inner{max-width:var(--container-wide);margin:0 auto;padding:0 var(--gutter);display:grid;gap:var(--space-12);grid-template-columns:minmax(260px,1.4fr) repeat(3,minmax(140px,1fr))}
.sola-footer__blurb{font-size:var(--text-body-s);line-height:var(--leading-body);color:var(--text-on-inverse-muted);max-width:34ch;margin:var(--space-5) 0 var(--space-6)}
.sola-footer h4{font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--sola-leaf);margin:0 0 var(--space-4)}
.sola-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-3)}
.sola-footer a{color:var(--sola-warm-white);text-decoration:none;font-size:var(--text-small)}
.sola-footer a:hover{color:var(--sola-leaf)}
.sola-footer__legal{max-width:var(--container-wide);margin:var(--space-16) auto 0;padding:var(--space-6) var(--gutter) 0;border-top:var(--border-width-hair) solid var(--border-inverse);display:flex;flex-wrap:wrap;gap:var(--space-6);justify-content:space-between;font-size:var(--size-caption);color:var(--text-on-inverse-muted)}
@media (max-width:900px){.sola-footer__inner{grid-template-columns:1fr 1fr}}

/* ───────── components/page/page.css ───────── */
/* SOLA · page patterns lifted from swissopenleaf.ch (Oct 2026 review):
   FAQ, term list, closing CTA band, contact block. */
.sola-faq{margin:0;padding:0;list-style:none;border-top:var(--border-width-hair) solid var(--border-hairline);max-width:var(--measure-prose)}
.sola-faq__item{border-bottom:var(--border-width-hair) solid var(--border-hairline)}
.sola-faq__q{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:var(--space-6);align-items:baseline;padding:var(--space-5) 0;font-family:var(--font-display);font-size:var(--text-lead);line-height:var(--leading-snug);color:var(--text-heading);transition:color var(--dur-fast) var(--ease-standard)}
.sola-faq__q::-webkit-details-marker{display:none}
.sola-faq__q:hover{color:var(--text-accent)}
.sola-faq__q:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.sola-faq__sign{font-family:var(--font-sans);font-size:var(--text-lead);color:var(--sola-signal);width:1em;text-align:center}
.sola-faq__sign::before{content:"+"}
.sola-faq__item[open] .sola-faq__sign::before{content:"−"}
.sola-faq__a{margin:0;padding:0 var(--space-10) var(--space-6) 0;font-size:var(--size-body);line-height:var(--leading-body);color:var(--text-body);max-width:var(--measure-prose)}

.sola-terms{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-3);max-width:var(--measure-prose)}
.sola-terms__item{display:grid;grid-template-columns:1rem 1fr;gap:var(--space-2);font-size:var(--size-body);line-height:var(--leading-body);color:var(--text-body)}
.sola-terms__dot{color:var(--sola-signal)}
.sola-terms__term{color:var(--text-heading);font-weight:700}

.sola-ctaband{background:var(--surface-sunken);border-top:var(--border-width-hair) solid var(--border-hairline);border-bottom:var(--border-width-hair) solid var(--border-hairline);padding:var(--space-16) var(--space-10)}
.sola-ctaband--inverse{background:var(--surface-inverse);border:0}
.sola-ctaband__inner{max-width:var(--measure-lead)}
.sola-ctaband__title{font-family:var(--font-display);font-weight:var(--weight-regular);font-size:var(--text-display-s);line-height:var(--leading-title);letter-spacing:var(--tracking-title);color:var(--text-heading);margin:0}
.sola-ctaband__body{margin:var(--space-5) 0 0;font-size:var(--text-lead);line-height:var(--leading-snug);color:var(--text-body)}
.sola-ctaband__actions{display:flex;flex-wrap:wrap;gap:var(--gap-inline);margin-top:var(--space-8)}

.sola-contact{display:grid;grid-template-columns:auto 1fr;gap:var(--space-3) var(--space-8);margin:0;font-size:var(--size-body);line-height:var(--leading-body)}
.sola-contact dt{font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-caption);padding-top:.35em}
.sola-contact dd{margin:0;color:var(--text-body)}
.sola-contact a{color:var(--text-link)}
.sola-contact a:hover{color:var(--text-link-hover)}

/* ───────── Approved palette: balanced (overrides the vivid core above) ───────── */
:root{
  --sola-forest:#153E24;
  --sola-signal:#587543;
  --sola-leaf:#99B677;
  --sola-deep-forest:#0D2B18;
  --sola-leaf-30:#E7E9D3;
  --sola-leaf-15:#F5F6EC;
  --surface-scrim:rgba(13,43,24,.46);
  --border-soft:rgba(21,62,36,.14);
  /* #7A776C is 4.09:1 on warm white, below AA for small text */
  --text-caption:var(--sola-muted);
}
