/* Hallmark · theme: dusk (by request) · dusk: fog/periwinkle-apricot/well · posture: committed · genre: modern-minimal · shape: list beside one pane · hero: photograph of the hour, head on the fog · nav: edge-aligned wordmark, three links · footer: plain links, company line, photo credit · signature: the original beside the new portrait on a bone well */
/* Hallmark · critique: calm and exact, no AI magic; portraits sit on bone wells so skin colour is judged true; periwinkle means done, apricot means waiting on the family; no red anywhere */

@font-face { font-family: "Wix Madefor Display"; src: url("/fonts/WixMadeforDisplay.woff2") format("woff2"); font-weight: 400 800; font-display: swap; }
@font-face { font-family: "Wix Madefor Text"; src: url("/fonts/WixMadeforText.woff2") format("woff2"); font-weight: 400 800; font-display: swap; }

:root {
  --color-paper: oklch(17.5% 0.014 268); --color-paper-2: oklch(21% 0.016 268); --color-paper-3: oklch(25% 0.017 268);
  --color-ink: oklch(96% 0.006 75); --color-ink-2: oklch(85% 0.010 262); --color-muted: oklch(70% 0.016 262);
  --color-rule: oklch(30% 0.016 266); --color-light: oklch(100% 0 0); --color-shade: oklch(10% 0.022 268);
  --color-accent: oklch(77% 0.10 274); --color-accent-ink: oklch(19% 0.035 274); --color-accent-hi: oklch(84% 0.085 274);
  --color-accent-deep: oklch(44% 0.13 274); --color-accent-soft: oklch(91% 0.038 274); --color-focus: oklch(80% 0.10 274);
  --color-accent-2: oklch(83% 0.095 62); --color-accent-2-ink: oklch(24% 0.05 62); --color-dusk: oklch(70% 0.12 330);
  --color-day-ink: oklch(22% 0.022 268); --color-day-muted: oklch(38% 0.022 266); --color-fog: oklch(94% 0.012 70);
  --color-well: oklch(95.5% 0.008 75); --color-well-2: oklch(92% 0.010 75); --color-well-ink: oklch(21% 0.016 268); --color-well-muted: oklch(47% 0.016 265); --color-well-rule: oklch(87.5% 0.009 75); --color-card: oklch(99.5% 0.003 75);
  --glass: oklch(22% 0.018 268 / 0.58); --glass-blur: 22px;
  --glass-hi: inset 0 1px 0 oklch(100% 0 0 / 0.10), inset 0 0 0 1px oklch(100% 0 0 / 0.06);
  --shadow-soft: 0 1px 2px oklch(20% 0.02 268 / .08), 0 12px 32px -18px oklch(20% 0.02 268 / .35);
  --shadow-handle: 0 2px 10px oklch(20% 0.02 268 / .3); --ring-handle: 0 0 0 1px oklch(20% 0.02 268 / .25);
  --color-tag: oklch(20% 0.02 268 / .55); --color-scrim: oklch(10% 0.02 268 / .6);
  --shadow-card: 0 1px 0 oklch(100% 0 0 / 0.06) inset, 0 40px 80px -32px oklch(8% 0.02 268 / 0.7);
  --font-display: "Wix Madefor Display", ui-sans-serif, system-ui, sans-serif; --font-body: "Wix Madefor Text", ui-sans-serif, system-ui, sans-serif;
  --radius-card: 18px; --radius-inner: 10px; --radius-pill: 999px; --rule-hair: 1px;
  --tracking-display: -0.022em; --display-weight: 500;
  --space-2xs: 4px; --space-xs: 8px; --space-sm: 12px; --space-md: 16px; --space-lg: 24px; --space-xl: 32px; --space-2xl: 48px; --space-3xl: 72px; --space-4xl: 112px;
  --container: 1200px; --container-app: 1080px; --measure: 62ch;
  --ease: cubic-bezier(.2, .7, .2, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html, body { overflow-x: clip; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--color-paper); color: var(--color-ink); font: 400 17px/1.55 var(--font-body); }
img, video { max-width: 100%; display: block; }
h1, h2, h3 { font-family: var(--font-display); font-weight: var(--display-weight); letter-spacing: var(--tracking-display); line-height: 1.08; margin: 0; overflow-wrap: break-word; min-width: 0; text-wrap: balance; }
h1 { font-size: clamp(2.2rem, 4.6vw, 3.6rem); }
h2 { font-size: clamp(1.6rem, 2.8vw, 2.3rem); }
h3 { font-size: 1.25rem; line-height: 1.2; }
p { margin: 0; }
a { color: var(--color-accent-hi); text-underline-offset: 3px; }
::selection { background: var(--color-accent); color: var(--color-accent-ink); }
html { scrollbar-color: var(--color-paper-3) var(--color-paper); }
a:hover { color: var(--color-ink); }
:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 3px; border-radius: 6px; transition: none; }
.num { font-variant-numeric: tabular-nums; } .num .c { color: var(--color-muted); }
.muted { color: var(--color-muted); }
.small { font-size: 0.9375rem; }
.lead { color: var(--color-ink-2); font-size: 1.125rem; max-width: var(--measure); }
.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; }
.skip { position: absolute; left: var(--space-md); top: -60px; background: var(--color-accent); color: var(--color-accent-ink); padding: var(--space-xs) var(--space-md); border-radius: var(--radius-pill); z-index: 10; }
.skip:focus-visible { top: var(--space-md); }

.wrap { width: min(100% - 2 * var(--space-lg), var(--container)); margin-inline: auto; }
.wrap-app { width: min(100% - 2 * var(--space-lg), var(--container-app)); margin-inline: auto; }
.stack > * + * { margin-top: var(--space-md); }
.stack-lg > * + * { margin-top: var(--space-xl); }
.row { display: flex; gap: var(--space-sm); align-items: center; flex-wrap: wrap; }
.between { justify-content: space-between; }

/* Buttons: one periwinkle pill, one ghost pill */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-xs); min-height: 48px; padding: 0 var(--space-lg); border: 0; border-radius: var(--radius-pill); background: var(--color-accent); color: var(--color-accent-ink); font: 600 0.9375rem/1 var(--font-body); text-decoration: none; cursor: pointer; box-shadow: inset 0 1px 0 color-mix(in oklab, var(--color-light) 35%, transparent); transition: background-color .2s var(--ease), box-shadow .2s var(--ease), transform .2s var(--ease); }
.btn:hover { background: var(--color-accent-hi); color: var(--color-accent-ink); box-shadow: inset 0 1px 0 color-mix(in oklab, var(--color-light) 35%, transparent), 0 0 0 4px color-mix(in oklab, var(--color-accent) 25%, transparent); }
.btn:active { transform: translateY(1px); }
.btn[disabled], .btn[aria-disabled="true"] { opacity: .5; cursor: not-allowed; box-shadow: none; }
.btn-ghost { background: color-mix(in oklab, var(--color-light) 4%, transparent); color: var(--color-ink); box-shadow: inset 0 0 0 1px var(--color-rule); }
.btn-ghost:hover { background: color-mix(in oklab, var(--color-light) 9%, transparent); color: var(--color-ink); box-shadow: inset 0 0 0 1px var(--color-muted); }
.btn-sm { min-height: 40px; padding: 0 var(--space-md); font-size: 0.875rem; }
.on-well .btn-ghost { color: var(--color-well-ink); box-shadow: inset 0 0 0 1px var(--color-well-rule); background: var(--color-card); }
.on-well .btn-ghost:hover { color: var(--color-well-ink); box-shadow: inset 0 0 0 1px var(--color-well-muted); }
.link-btn { background: none; border: 0; padding: 0; color: var(--color-accent-hi); font: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }

/* Nav */
.nav { position: sticky; top: 0; z-index: 5; background: color-mix(in oklab, var(--color-paper) 82%, transparent); -webkit-backdrop-filter: blur(var(--glass-blur)); backdrop-filter: blur(var(--glass-blur)); border-bottom: var(--rule-hair) solid var(--color-rule); }
.nav .wrap { display: flex; align-items: center; justify-content: space-between; min-height: 64px; gap: var(--space-md); }
.brand { font: 500 1.0625rem/1 var(--font-display); letter-spacing: var(--tracking-display); color: var(--color-ink); text-decoration: none; }
.nav-links { display: flex; gap: var(--space-lg); align-items: center; font-size: 0.9375rem; }
.nav-links a { color: var(--color-ink-2); text-decoration: none; }
.nav-links a:hover { color: var(--color-ink); }
.nav--photo { position: absolute; inset: 0 0 auto 0; background: transparent; border-bottom: 0; backdrop-filter: none; -webkit-backdrop-filter: none; }
.nav--photo .brand, .nav--photo .nav-links a { color: var(--color-day-ink); }
@media (max-width: 640px) { .nav-links .hide-sm { display: none; } }

/* Hero: the hour */
.hero { position: relative; min-height: min(88svh, 760px); display: grid; align-items: center; overflow: clip; isolation: isolate; }
.hero__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 30% 60%; z-index: -2; filter: contrast(1.04) saturate(1.03); animation: drift 48s var(--ease) infinite alternate; }
.hero__scrim { position: absolute; inset: 0; z-index: -1; background: radial-gradient(ellipse 55% 60% at 24% 52%, color-mix(in oklab, var(--color-fog) 80%, transparent), transparent 78%), linear-gradient(to bottom, transparent 70%, var(--color-paper)); }
.hero__body { padding-block: var(--space-4xl) var(--space-3xl); max-width: 34rem; color: var(--color-day-ink); }
.hero__body h1 { color: var(--color-day-ink); }
.hero__body p { color: var(--color-day-muted); font-size: 1.1875rem; margin-top: var(--space-md); }
.hero__body .row { margin-top: var(--space-xl); }
.hero .btn-ghost { color: var(--color-day-ink); background: color-mix(in oklab, var(--color-fog) 55%, transparent); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--color-day-ink) 25%, transparent); }
@keyframes drift { from { transform: scale(1.06) translateX(0); } to { transform: scale(1.06) translateX(-3%); } }

/* Bands */
.band { padding-block: var(--space-4xl); border-top: var(--rule-hair) solid var(--color-rule); }
.band:first-of-type { border-top: 0; }
.band__head { max-width: 40rem; margin-bottom: var(--space-2xl); }
.band__head p { margin-top: var(--space-sm); color: var(--color-ink-2); }

/* List beside one pane */
.tour { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-3xl); align-items: start; }
@media (max-width: 880px) { .tour { grid-template-columns: minmax(0, 1fr); gap: var(--space-xl); } }
.tour__list { list-style: none; margin: 0; padding: 0; border-top: var(--rule-hair) solid var(--color-rule); }
.tour__list li { border-bottom: var(--rule-hair) solid var(--color-rule); }
.tour__item { display: grid; grid-template-columns: 14px minmax(0, 1fr) auto; gap: var(--space-sm); align-items: baseline; width: 100%; padding: var(--space-lg) 0; background: none; border: 0; color: var(--color-ink); text-align: left; font: inherit; cursor: pointer; }
.tour__item .dot { width: 9px; height: 9px; border-radius: 50%; background: transparent; box-shadow: inset 0 0 0 1px var(--color-muted); transform: translateY(-1px); }
.tour__item[aria-selected="true"] .dot { background: var(--color-accent); box-shadow: none; }
.tour__item .name { font: 500 1.25rem/1.2 var(--font-display); letter-spacing: var(--tracking-display); }
.tour__item .desc { grid-column: 2 / 4; color: var(--color-muted); font-size: 0.9375rem; display: none; }
.tour__item[aria-selected="true"] .desc { display: block; }
.tour__item:hover .name { color: var(--color-accent-hi); }

/* Bone well */
.well { background: var(--color-well); color: var(--color-well-ink); border-radius: var(--radius-card); padding: var(--space-xl); }
.well .muted, .well .num .c { color: var(--color-well-muted); }
.well a { color: var(--color-accent-deep); }
.well__card { background: var(--color-card); border-radius: var(--radius-inner); box-shadow: var(--shadow-soft); overflow: clip; }
.well__caption { margin-top: var(--space-md); }
.well__caption strong { display: block; font-weight: 500; }
.pair { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-md); }
.pair figure { margin: 0; }
.pair figcaption { margin-top: var(--space-xs); font-size: 0.875rem; color: var(--color-well-muted); }
.slot { aspect-ratio: 3 / 4; background: var(--color-well-2); border-radius: var(--radius-inner); display: grid; place-items: center; color: var(--color-well-muted); font-size: 0.875rem; text-align: center; padding: var(--space-md); overflow: clip; }
.slot img { width: 100%; height: 100%; object-fit: cover; }

/* Steps */
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-xl); counter-reset: s; list-style: none; padding: 0; margin: 0; }
.steps li { border-top: var(--rule-hair) solid var(--color-rule); padding-top: var(--space-md); counter-increment: s; }
.steps li::before { content: counter(s); display: block; font: 500 2.2rem/1 var(--font-display); color: var(--color-accent); margin-bottom: var(--space-sm); }
.steps p { color: var(--color-ink-2); margin-top: var(--space-xs); }
@media (max-width: 760px) { .steps { grid-template-columns: minmax(0, 1fr); } }

/* Price rows */
.rows { border-top: var(--rule-hair) solid var(--color-rule); }
.rows > * { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-md); padding: var(--space-md) 0; border-bottom: var(--rule-hair) solid var(--color-rule); align-items: baseline; }
.rows .label strong { font-weight: 500; display: block; }
.rows .label span { color: var(--color-muted); font-size: 0.9375rem; }
.rows .amount { text-align: right; font-variant-numeric: tabular-nums; }
.rows .total { font: 500 1.375rem/1.2 var(--font-display); }
.well .rows { border-color: var(--color-well-rule); } .well .rows > * { border-color: var(--color-well-rule); }
.well .rows .label span { color: var(--color-well-muted); }

/* FAQ */
.faq details { border-bottom: var(--rule-hair) solid var(--color-rule); padding: var(--space-md) 0; }
.faq details:first-child { border-top: var(--rule-hair) solid var(--color-rule); }
.faq summary { cursor: pointer; font-weight: 500; list-style: none; display: flex; justify-content: space-between; gap: var(--space-md); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; color: var(--color-muted); }
.faq details[open] summary::after { content: "−"; }
.faq details p { margin-top: var(--space-sm); color: var(--color-ink-2); max-width: var(--measure); }

/* Footer */
.footer { border-top: var(--rule-hair) solid var(--color-rule); padding-block: var(--space-2xl); color: var(--color-muted); font-size: 0.875rem; }
.footer .wrap { display: grid; gap: var(--space-md); }
.footer nav { display: flex; gap: var(--space-lg); flex-wrap: wrap; }
.footer a { color: var(--color-ink-2); }

/* App screens */
.app-head { padding-block: var(--space-2xl) var(--space-lg); }
.app-head p { margin-top: var(--space-xs); color: var(--color-ink-2); }
.progress { display: flex; gap: var(--space-lg); list-style: none; padding: 0; margin: 0 0 var(--space-xl); font-size: 0.875rem; color: var(--color-muted); flex-wrap: wrap; border-bottom: var(--rule-hair) solid var(--color-rule); }
.progress li { padding: var(--space-sm) 0; display: flex; gap: var(--space-xs); align-items: center; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.progress li[aria-current="step"] { color: var(--color-ink); border-bottom-color: var(--color-accent); }
.progress li.done { color: var(--color-ink-2); }
.progress a { color: inherit; text-decoration: none; }
.layout-side { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: var(--space-2xl); align-items: start; }
.layout-side aside { position: sticky; top: 88px; }
@media (max-width: 900px) { .layout-side { grid-template-columns: minmax(0, 1fr); } .layout-side aside { position: static; } }
.panel { color: var(--color-ink); background: var(--color-paper-2); border-radius: var(--radius-card); padding: var(--space-xl); box-shadow: inset 0 0 0 1px var(--color-rule); }
.notice { border-radius: var(--radius-inner); padding: var(--space-md); background: color-mix(in oklab, var(--color-accent-2) 12%, var(--color-paper-2)); box-shadow: inset 3px 0 0 var(--color-accent-2); color: var(--color-ink); }
.notice--done { background: color-mix(in oklab, var(--color-accent) 12%, var(--color-paper-2)); box-shadow: inset 3px 0 0 var(--color-accent); }
.well .notice { background: color-mix(in oklab, var(--color-accent-2) 22%, var(--color-card)); color: var(--color-well-ink); }
.errors { margin: 0; padding-left: 1.2em; }

/* Forms */
.field { display: grid; gap: var(--space-xs); }
.field + .field { margin-top: var(--space-lg); }
.field > label, .field legend, .fieldset legend { font-weight: 500; font-size: 0.9375rem; color: var(--color-ink); padding: 0; }
.hint { font-size: 0.875rem; color: var(--color-muted); }
fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.fieldset { border-top: var(--rule-hair) solid var(--color-rule); padding-top: var(--space-lg); margin-top: var(--space-lg); }
.input, select.input, textarea.input { width: 100%; min-height: 48px; padding: var(--space-sm) var(--space-md); background: var(--color-paper-3); color: var(--color-ink); border: 1px solid var(--color-rule); border-radius: var(--radius-inner); font: inherit; }
textarea.input { min-height: 96px; resize: vertical; }
.input:hover { border-color: var(--color-muted); }
.input:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 1px; border-color: var(--color-accent); }
.input[aria-invalid="true"] { border-color: var(--color-accent-2); }
.check { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: var(--space-sm); align-items: start; font-size: 0.9375rem; color: var(--color-ink-2); }
.check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--color-accent); }
.check + .check { margin-top: var(--space-sm); }
.otp { font: 500 1.75rem/1 var(--font-display); letter-spacing: .3em; text-align: center; max-width: 14rem; }
.pill-field { display: flex; gap: var(--space-xs); padding: var(--space-2xs); border-radius: var(--radius-pill); background: var(--glass); box-shadow: var(--glass-hi); }
.pill-field .input { border: 0; background: transparent; min-height: 44px; }

/* Choice tiles */
.tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); gap: var(--space-sm); }
.tile { position: relative; display: grid; gap: var(--space-xs); padding: var(--space-xs); border-radius: var(--radius-inner); background: var(--color-paper-2); box-shadow: inset 0 0 0 1px var(--color-rule); cursor: pointer; font-size: 0.875rem; color: var(--color-ink-2); transition: box-shadow .15s var(--ease), background-color .15s var(--ease); }
.tile:hover { box-shadow: inset 0 0 0 1px var(--color-muted); }
.tile input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.tile:has(input:checked) { box-shadow: inset 0 0 0 2px var(--color-accent); background: var(--color-paper-3); color: var(--color-ink); }
.tile:has(input:focus-visible) { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.tile .thumb { aspect-ratio: 3 / 4; border-radius: 6px; background: var(--color-paper-3); overflow: clip; display: grid; place-items: center; color: var(--color-muted); font-size: 0.75rem; text-align: center; padding: var(--space-2xs); }
.tile .thumb img { width: 100%; height: 100%; object-fit: cover; }
.tile-group { margin-top: var(--space-md); font-size: 0.8125rem; color: var(--color-muted); }
.radios { display: flex; flex-wrap: wrap; gap: var(--space-xs); }
.radio { position: relative; }
.radio input { position: absolute; opacity: 0; }
.radio span { display: inline-flex; align-items: center; min-height: 44px; padding: 0 var(--space-md); border-radius: var(--radius-pill); box-shadow: inset 0 0 0 1px var(--color-rule); color: var(--color-ink-2); font-size: 0.9375rem; cursor: pointer; }
.radio input:checked + span { box-shadow: inset 0 0 0 2px var(--color-accent); color: var(--color-ink); background: var(--color-paper-3); }
.radio input:focus-visible + span { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.radio span:hover { box-shadow: inset 0 0 0 1px var(--color-muted); }
.warn { font-size: 0.875rem; color: var(--color-accent-2); }

/* Uploads */
.drop { display: grid; place-items: center; gap: var(--space-sm); min-height: 200px; border-radius: var(--radius-card); border: 1.5px dashed var(--color-rule); background: var(--color-paper-2); text-align: center; padding: var(--space-xl); cursor: pointer; }
.drop:hover, .drop.is-over { border-color: var(--color-accent); }
.drop input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.thumbs { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--space-md); margin-top: var(--space-lg); }
.thumbs figure { margin: 0; background: var(--color-paper-2); border-radius: var(--radius-inner); padding: var(--space-xs); box-shadow: inset 0 0 0 1px var(--color-rule); }
.thumbs figure.is-main { box-shadow: inset 0 0 0 2px var(--color-accent); }
.thumbs img { aspect-ratio: 3 / 4; object-fit: cover; width: 100%; border-radius: 6px; }
.thumbs figcaption { font-size: 0.8125rem; color: var(--color-muted); margin-top: var(--space-xs); display: grid; gap: var(--space-2xs); }

/* Variants: grid and compare */
.vgrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-lg); }
@media (max-width: 900px) { .vgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-md); } }
.vcard { margin: 0; }
.vcard .frame { position: relative; aspect-ratio: 3 / 4; background: var(--color-well-2); border-radius: var(--radius-inner); overflow: clip; }
.vcard .frame img { width: 100%; height: 100%; object-fit: cover; }
.vcard .frame .state { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; padding: var(--space-md); color: var(--color-well-muted); font-size: 0.875rem; }
.vcard .bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-xs); margin-top: var(--space-xs); font-size: 0.875rem; color: var(--color-well-muted); }
.vcard.is-selected .frame { box-shadow: 0 0 0 3px var(--color-accent-deep); }
.icon-btn { display: inline-grid; place-items: center; min-width: 40px; height: 40px; border-radius: var(--radius-pill); border: 0; background: var(--color-card); color: var(--color-well-ink); box-shadow: inset 0 0 0 1px var(--color-well-rule); cursor: pointer; font: 500 0.8125rem/1 var(--font-body); padding: 0 var(--space-sm); }
.icon-btn:hover { box-shadow: inset 0 0 0 1px var(--color-well-muted); }
.icon-btn[aria-pressed="true"] { background: var(--color-accent-soft); box-shadow: inset 0 0 0 1px var(--color-accent-deep); color: var(--color-accent-deep); }
.icon-btn svg { width: 18px; height: 18px; }
.skeleton { background: linear-gradient(100deg, var(--color-well-2) 40%, var(--color-well) 50%, var(--color-well-2) 60%); background-size: 300% 100%; animation: shimmer 1.6s linear infinite; }
@keyframes shimmer { to { background-position: -100% 0; } }

.compare { position: relative; aspect-ratio: 3 / 4; border-radius: var(--radius-inner); overflow: clip; background: var(--color-well-2); touch-action: pan-y; user-select: none; }
.compare img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: var(--color-well-2); }
.compare .after { clip-path: inset(0 0 0 var(--pos, 50%)); }
.compare .handle { position: absolute; top: 0; bottom: 0; left: var(--pos, 50%); width: 2px; background: var(--color-card); box-shadow: var(--ring-handle); pointer-events: none; }
.compare .handle::after { content: ""; position: absolute; top: 50%; left: 50%; width: 36px; height: 36px; border-radius: 50%; transform: translate(-50%, -50%); background: var(--color-card); box-shadow: var(--shadow-handle); }
.compare input[type=range] { position: absolute; inset: auto 0 0 0; width: 100%; height: 100%; opacity: 0; cursor: ew-resize; margin: 0; }
.compare input[type=range]:focus-visible ~ .handle::after { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.compare .tag { position: absolute; top: var(--space-xs); padding: var(--space-2xs) var(--space-sm); border-radius: var(--radius-pill); background: var(--color-tag); color: var(--color-light); font-size: 0.75rem; pointer-events: none; }
.side2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-md); }
.zoombox { position: relative; aspect-ratio: 3 / 4; overflow: clip; border-radius: var(--radius-inner); background: var(--color-well-2); }
.zoombox img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; transform-origin: var(--zx, 50%) var(--zy, 35%); transform: scale(var(--z, 1)); transition: transform .25s var(--ease); }
.tabs { display: flex; gap: var(--space-lg); border-bottom: var(--rule-hair) solid var(--color-well-rule); margin-bottom: var(--space-lg); flex-wrap: wrap; }
.tabs button { background: none; border: 0; padding: var(--space-sm) 0; color: var(--color-well-muted); font: 500 0.9375rem/1 var(--font-body); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; display: inline-flex; gap: var(--space-xs); align-items: center; }
.tabs button[aria-selected="true"] { color: var(--color-well-ink); border-bottom-color: var(--color-accent-deep); }
.tabs button .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--color-accent-deep); display: none; }
.tabs button[aria-selected="true"] .dot { display: inline-block; }
dialog { border: 0; border-radius: var(--radius-card); padding: 0; background: var(--color-paper-2); color: var(--color-ink); width: min(560px, 100% - 2 * var(--space-md)); box-shadow: var(--shadow-card), inset 0 0 0 1px var(--color-rule); }
dialog::backdrop { background: var(--color-scrim); }
dialog .inner { padding: var(--space-xl); }
.mock { position: relative; border-radius: var(--radius-inner); overflow: clip; }
.mock img.bg { width: 100%; display: block; }
.mock .hole { position: absolute; overflow: clip; }
.mock .hole img { width: 100%; height: 100%; object-fit: cover; }

.input--well { width: auto; min-height: 40px; display: inline-block; margin-left: var(--space-xs); background: var(--color-card); color: var(--color-well-ink); border-color: var(--color-well-rule); }
[x-cloak] { display: none !important; }

/* Admin */
.admin-nav { display: flex; gap: var(--space-md); flex-wrap: wrap; font-size: 0.875rem; padding-block: var(--space-sm); }
.admin-nav a { color: var(--color-ink-2); text-decoration: none; padding: var(--space-2xs) 0; border-bottom: 2px solid transparent; }
.admin-nav a[aria-current="page"] { color: var(--color-ink); border-bottom-color: var(--color-accent); }
.table { width: 100%; border-collapse: collapse; font-size: 0.9375rem; }
.table th { text-align: left; font-weight: 500; color: var(--color-muted); font-size: 0.8125rem; padding: var(--space-xs) var(--space-sm); border-bottom: var(--rule-hair) solid var(--color-rule); }
.table td { padding: var(--space-sm); border-bottom: var(--rule-hair) solid var(--color-rule); vertical-align: top; }
.table td.r, .table th.r { text-align: right; font-variant-numeric: tabular-nums; }
.table .input { min-height: 38px; padding: var(--space-xs) var(--space-sm); }
.table-wrap { overflow-x: auto; }
.status { display: inline-flex; align-items: center; gap: var(--space-xs); font-size: 0.8125rem; color: var(--color-ink-2); }
.status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--color-muted); }
.status--done::before { background: var(--color-accent); }
.status--open::before { background: var(--color-accent-2); }
.tally { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: var(--rule-hair) solid var(--color-rule); }
.tally > div { padding: var(--space-md) var(--space-md) var(--space-md) 0; border-bottom: var(--rule-hair) solid var(--color-rule); }
.tally strong { display: block; font: 500 1.6rem/1.1 var(--font-display); font-variant-numeric: tabular-nums; }
.tally span { color: var(--color-muted); font-size: 0.8125rem; }
@media (max-width: 760px) { .tally { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
pre.prompt { white-space: pre-wrap; background: var(--color-paper-3); padding: var(--space-md); border-radius: var(--radius-inner); font-size: 0.8125rem; max-height: 320px; overflow: auto; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .hero__photo { transform: scale(1.02); }
}
