:root{--bg: #141210;--fg: #f5efe4;--muted: #a89c8a;--line: #37312a;--accent: #2f9e8f;--accent2: #d94f3c;--ok: #7fc9a3;--warn: #d94f3c;--font-body: "Spectral", ui-serif, Georgia, "Times New Roman", serif;--font-mono: "Courier Prime", ui-monospace, "Courier New", monospace;color-scheme:dark;font-family:var(--font-body);line-height:1.55}:root[data-theme=light]{--bg: #f6f1e7;--fg: #17140f;--muted: #7d7362;--line: #ddd3bf;--accent: #1f7a6e;--accent2: #b8402f;--ok: #3f7d52;--warn: #b8402f;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip-link{position:absolute;top:-3rem;left:1rem;z-index:10;padding:.5rem .875rem;border-radius:.5rem;background:var(--bg);color:var(--fg);border:1px solid var(--line)}.skip-link:focus{top:1rem}.app-shell{min-height:100dvh;display:flex;flex-direction:column}.app-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:1rem clamp(1rem,4vw,3rem);border-bottom:1px solid var(--line)}.app-header .brand{font-weight:650;letter-spacing:-.01em}.app-header a,.app-footer a{color:inherit;text-decoration:none}.app-header nav a:hover,.app-header .brand:hover{color:var(--accent)}.app-main{flex:1;padding:clamp(2rem,6vw,4rem) clamp(1rem,4vw,3rem)}.app-footer{padding:1rem clamp(1rem,4vw,3rem);border-top:1px solid var(--line);color:var(--muted);font-size:.8125rem}.stack{max-width:42rem;display:flex;flex-direction:column;gap:1rem}h1{margin:0;font-size:clamp(1.75rem,4vw,2.5rem);letter-spacing:-.02em}.lede{margin:0;color:var(--muted);font-size:1.0625rem;font-style:italic}.muted{color:var(--muted);font-size:.8125rem;font-family:var(--font-mono)}.checks{margin:0;display:grid;gap:.5rem}.check{display:flex;justify-content:space-between;gap:1rem;padding:.625rem .875rem;border:1px solid var(--line);border-radius:.5rem}.check dt{color:var(--muted);font-family:var(--font-mono)}.check dd{margin:0;font-variant-numeric:tabular-nums}.check.ok dd{color:var(--ok)}.check.warn dd{color:var(--warn)}a{color:var(--accent)}button,.button-link{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;border:1px solid var(--line);border-radius:.5rem;background:transparent;color:var(--fg);font:inherit;cursor:pointer;text-decoration:none}button:hover,.button-link:hover{border-color:var(--accent);color:var(--accent)}button:disabled{opacity:.6;cursor:not-allowed}input,select,textarea{font:inherit;padding:.5rem .625rem;border:1px solid var(--line);border-radius:.5rem;background:var(--bg);color:var(--fg)}.form-error{padding:.625rem .875rem;border:1px solid var(--warn);border-radius:.5rem;color:var(--warn)}.field{display:flex;flex-direction:column;gap:.375rem;flex:1}.field span{font-size:.75rem;color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.03em}.field-row{display:flex;gap:.75rem;flex-wrap:wrap}.field-group{border:1px solid var(--line);border-radius:.75rem;padding:1rem;display:flex;flex-direction:column;gap:.75rem}.field-group legend{padding:0 .375rem;color:var(--muted);font-size:.75rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.03em}.recipe-form{max-width:48rem}.draft-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.draft-row{display:flex;align-items:center;gap:.5rem}.draft-row .drag-handle{cursor:grab;color:var(--muted)}.draft-row .qty{width:4rem}.draft-row .unit{width:5rem}.draft-row .name{flex:2}.draft-row .group{flex:1.5}.draft-row .step-number{color:var(--muted);min-width:1.5rem;text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.draft-row .step-text{flex:1;resize:vertical}.remove-row,.row-move{border:none;padding:.25rem .5rem;color:var(--muted)}.row-actions{display:flex;flex-direction:column}.row-move:disabled{opacity:.35}.tag-picker{display:flex;flex-wrap:wrap;gap:.5rem 1rem}.tag-checkbox{display:flex;align-items:center;gap:.375rem;font-size:.9375rem}.photo-preview{max-width:20rem;border-radius:.75rem;border:1px solid var(--line)}.recipe-list-header,.recipe-detail-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.recipe-list-actions{display:flex;gap:.5rem;flex-wrap:wrap}.home{max-width:64rem;display:flex;flex-direction:column;gap:1.25rem}.home-masthead{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-bottom:1.25rem;border-bottom:1px solid var(--line)}.home-kicker{margin:0 0 .25rem;color:var(--muted);font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.home-masthead h1{margin:0}.home-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.home-toolbar input{flex:1;min-width:12rem}.home-tag-index{display:flex;flex-wrap:wrap;gap:.4rem}.home-tag-chip{padding:.25rem .625rem;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.02em;cursor:pointer}.home-tag-chip:hover{border-color:var(--accent);color:var(--accent)}.home-tag-chip[aria-pressed=true]{border-color:var(--accent2);color:var(--accent2);background:color-mix(in srgb,var(--accent2) 12%,transparent)}.home-feature{display:grid;grid-template-columns:1.1fr 1fr;border:1px solid var(--line);border-radius:.875rem;overflow:hidden;color:inherit;text-decoration:none;transition:border-color .15s ease}.home-feature:hover{border-color:var(--accent)}.home-feature img{width:100%;height:100%;min-height:12rem;object-fit:cover}.home-feature-body{display:flex;flex-direction:column;justify-content:center;gap:.5rem;padding:1.5rem clamp(1rem,3vw,2rem)}.home-feature-kicker{margin:0;color:var(--accent2);font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.home-feature-body h2{margin:0;font-size:clamp(1.375rem,3vw,1.875rem);letter-spacing:-.01em}.home-feature-body .muted{font-size:.8125rem}@media(max-width:40rem){.home-feature{grid-template-columns:1fr}.home-feature img{aspect-ratio:16 / 9;min-height:0}}.recipe-detail-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.confirm-delete{display:flex;align-items:center;gap:.5rem;color:var(--warn);font-size:.875rem}.recipe-filters{display:flex;gap:.75rem;flex-wrap:wrap}.recipe-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1rem}.recipe-card{border:1px solid var(--line);border-radius:.75rem;overflow:hidden;transition:border-color .15s ease,transform .15s ease;animation:recipe-card-rise .4s ease both;animation-delay:calc(var(--stagger, 0) * 40ms)}.recipe-card:hover{border-color:var(--accent);transform:translateY(-2px)}.recipe-card a{color:inherit;text-decoration:none;display:flex;flex-direction:column;gap:.25rem;padding:.875rem}.recipe-card img{margin:-.875rem -.875rem .25rem;width:calc(100% + 1.75rem);aspect-ratio:4 / 3;object-fit:cover}.recipe-card-index{color:var(--muted);font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.04em;font-variant-numeric:tabular-nums}.recipe-card-title{font-weight:600}@keyframes recipe-card-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.recipe-card{animation:none}}.recipe-detail{max-width:56rem}.recipe-detail-body{display:grid;grid-template-columns:1fr 2fr;gap:2rem}.recipe-detail-body h2{font-size:1.125rem}.ingredient-group h3{font-size:.9375rem;color:var(--muted);margin-bottom:.25rem}.tag-list{list-style:none;margin:0;padding:0;display:flex;gap:.5rem;flex-wrap:wrap}.tag-pill{padding:.25rem .625rem;border:1px solid var(--line);border-radius:999px;font-size:.75rem;color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.02em}@media(max-width:40rem){.recipe-detail-body{grid-template-columns:1fr}.draft-row{flex-wrap:wrap}.draft-row .name,.draft-row .group,.draft-row .step-text{flex-basis:100%}}.format-picker{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.format-picker-options{display:flex;flex-wrap:wrap;gap:.25rem;padding:.25rem;border:1px solid var(--line);border-radius:.625rem}.format-option{padding:.3125rem .75rem;border-color:transparent;font-size:.875rem}.format-option[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.format-option:disabled:hover{border-color:transparent;color:var(--fg)}.format-option-star{color:var(--accent)}.link-button{padding:0;border:0;color:var(--muted);font-size:.8125rem;text-decoration:underline}.link-button:disabled{text-decoration:none}.link-button:hover{border:0}.notecard-frame{container-type:inline-size;width:100%;max-width:34rem;--bg: #f6f1e7;--fg: #17140f;--muted: #7d7362;--line: #ddd3bf;--accent: #1f7a6e;--accent2: #b8402f;--ok: #3f7d52;--warn: #b8402f;--rule: rgba(84, 104, 132, .16);--margin-rule: rgba(184, 64, 47, .32);color-scheme:light}.notecard{position:relative;width:100%;aspect-ratio:6 / 4;display:flex;flex-direction:column;gap:.6em;padding:1em 1.2em;border:1px solid var(--line);border-radius:.375rem;background-color:var(--bg);background-image:linear-gradient(to right,transparent 0,transparent 2em,var(--margin-rule) 2em,var(--margin-rule) calc(2em + 1px),transparent calc(2em + 1px),transparent 100%);background-repeat:no-repeat;color:var(--fg);box-shadow:0 1px 3px #00000014;font-size:2.45cqw;line-height:1.35em;overflow:hidden}.notecard-stamp{position:absolute;top:.9em;right:1.1em;transform:rotate(-6deg);padding:.25em .5em;border:.12em solid var(--accent2);border-radius:.25em;color:var(--accent2);font-family:var(--font-mono);font-weight:700;font-size:.68em;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;mix-blend-mode:multiply}.notecard-header{border-bottom:1px solid var(--line);padding-bottom:.4em}.notecard-header h1{font-size:1.4em;letter-spacing:0}.notecard-meta{margin:.2em 0 0;color:var(--muted);font-size:.85em;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.02em}.notecard-body{flex:1;min-height:0;display:grid;grid-template-columns:2fr 3fr;gap:1.2em;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(1.35em - 1px),var(--rule) calc(1.35em - 1px),var(--rule) 1.35em)}.notecard-ingredients h2{margin:0;font-size:.85em;color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}.notecard-ingredients ul,.notecard-steps{margin:0;padding-left:1.1em}.notecard-ingredients ul{list-style:none;padding-left:0}.notecard-steps li+li{margin-top:0}.notecard-split{display:flex;flex-direction:column;gap:1rem;align-items:center}.notecard-split .notecard-frame{margin:0}.notecard-body-single{display:block}.notecard-ingredients-columns{columns:2;column-gap:1.5em}.notecard-ingredients-columns li{break-inside:avoid-column}.notecard-ingredients-columns h2{break-after:avoid-column}.notecard-side-label{margin:.5em 0 0;color:var(--muted);font-size:.85em;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}.notecard-back .notecard-header h1{font-size:1.1em;color:var(--muted)}@media print{.no-print,.app-header,.app-footer{display:none!important}body{background:#fff;color:#000}.notecard-frame{width:6in;max-width:none}.notecard{width:6in;height:4in;aspect-ratio:auto;border:1px solid #000;border-radius:0;box-shadow:none;background:#fff;color:#000}@page{margin:.5in}.notecard-split{gap:0}.notecard-split .notecard-frame:not(:last-child){break-after:page}}.cook-mode{max-width:34rem}.cook-mode-checklist{list-style:none;margin:0;padding:0}.cook-mode-checklist label,.cook-mode-current-step{display:flex;align-items:flex-start;gap:.5rem}.cook-mode-checklist input,.cook-mode-current-step input{margin-top:.25rem}.cook-mode-step{padding:1rem;border:1px solid var(--line);border-radius:.625rem}.cook-mode-current-step{font-size:1.0625rem;margin-top:.5rem}.cook-mode-nav{display:flex;gap:.5rem;margin-top:1rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.flowchart-scroll{overflow-x:auto}.flowchart{border-collapse:collapse;min-width:100%}.flowchart-cell{border:1px solid var(--line);padding:.5rem .625rem;vertical-align:middle;font-size:.9375rem;line-height:1.35}.flowchart-ingredient{min-width:9rem;max-width:14rem;color:var(--muted);background:color-mix(in srgb,var(--line) 22%,transparent)}.flowchart-step{min-width:8rem;max-width:15rem}.flowchart-reference{color:var(--muted);font-style:italic;text-align:center;white-space:nowrap}.flowchart-filler{border:0}.flowchart-step-number{display:inline-block;min-width:1.5rem;margin-right:.375rem;color:var(--accent);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:700}.flowchart-label{display:inline}@media(max-width:40rem){.flowchart-cell{padding:.375rem .5rem;font-size:.875rem}.flowchart-ingredient{min-width:7rem}.flowchart-step{min-width:9rem}}.graph-step-list{list-style:none;margin:0;padding:0;display:grid;gap:1rem}.graph-step{padding:1rem;border:1px solid var(--line);border-radius:.625rem}.graph-step h2{font-size:1rem;margin:0 0 .75rem}.graph-step-text{font-weight:400;color:var(--muted)}
