@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Caveat:wght@500;600&display=swap');
:root{--paper:#fbf8fe;--ink:#32253e;--muted:#65556e;--red:#683e80;--line:#e7ddef;--green:#6d5484}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font:14px 'DM Sans',Arial,sans-serif}button,input,textarea,select{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #8769a5;outline-offset:4px}.topbar{height:110px;display:flex;align-items:center;justify-content:space-between;max-width:1336px;padding:0 56px;margin:auto;border-bottom:1px solid var(--line)}.brand{display:flex;gap:13px;align-items:center;font:600 21px 'Playfair Display',Georgia,serif}.brand-icon{font:italic 29px Georgia;border:1px solid #907ea2;width:43px;height:48px;display:grid;place-content:center;position:relative;border-radius:22px 22px 3px 3px;color:var(--green)}.brand-icon span{position:absolute;font-size:18px;bottom:-8px;left:11px;background:var(--paper)}.brand small{display:block;font:9px 'DM Sans',Arial,sans-serif;letter-spacing:2.3px;color:var(--muted);margin-top:8px}nav{display:flex;align-items:center;gap:32px;font-size:12px}nav .active{border-bottom:1px solid var(--red);padding:12px 0;color:var(--red)}.primary,.secondary{border:1px solid var(--red);padding:13px 21px;border-radius:5px;font-weight:500;font-size:12px;line-height:1.4;background:var(--red);color:white;transition:background .2s,transform .2s}.primary:hover{background:#513066;transform:translateY(-1px)}.secondary{color:var(--red);background:transparent}.secondary:hover{background:#e6dfec}.text-button{border:0;background:transparent;color:var(--muted);padding:8px 0;font-size:12px}.text-button:hover{color:var(--red)}main{max-width:1224px;margin:auto}.hero{display:grid;grid-template-columns:1fr 1fr;min-height:496px;border-bottom:1px solid var(--line);position:relative;overflow:hidden}.hero-copy{padding:61px 0 0 35px}.eyebrow{font-size:9px;letter-spacing:2.2px;font-weight:600;color:var(--green);display:flex;align-items:center;gap:9px}.eyebrow>span{width:19px;height:1px;background:var(--green)}h1{font:500 clamp(42px,4.6vw,62px)/1.12 'Playfair Display',Georgia,serif;letter-spacing:-1.8px;margin:21px 0}h1 em{color:var(--red);font-weight:400}.hero-copy>p{max-width:330px;color:var(--muted);font-size:13px;line-height:1.9;margin-top:21px}.hero-link{display:inline-flex;gap:27px;align-items:center;font-size:12px;margin-top:18px;border-bottom:1px solid #9b88ae;padding-bottom:10px;color:var(--green)}.hero-footer{font-size:8px;letter-spacing:1.7px;margin-top:45px;color:#8b799e;display:flex;align-items:center;gap:20px}.hero-footer span{font-size:21px;color:var(--red)}.still-life{position:relative;min-height:480px;background:radial-gradient(ellipse at 51% 48%,#e0d8e755,transparent 68%)}.cloth{position:absolute;inset:20px -50px 10px 70px;background-color:#e3d9eb;background-image:linear-gradient(90deg,#89769c18 50%,transparent 50%),linear-gradient(#89769c18 50%,transparent 50%);background-size:30px 30px;transform:rotate(12deg);clip-path:polygon(22% 5%,96% 0,100% 89%,6% 100%,0 28%);opacity:.7}.recipe-paper{width:310px;min-height:353px;position:absolute;top:62px;left:84px;background:#faf7fc;transform:rotate(-8deg);padding:27px 28px 22px;box-shadow:1px 8px 22px #4128501c;border:1px solid #e2d7eb}.paper-label{font-size:7px;letter-spacing:2px;color:#88769b}.handwritten{font:35px 'Caveat',cursive;color:var(--red);margin-top:8px}.paper-rule{height:1px;background:#ccc3d6;margin:10px 0 17px}.paper-title{font:16px 'Caveat',cursive;color:#5d4c68}.recipe-paper p{font:23px/1.65 'Caveat',Georgia,cursive;color:#695576;margin:13px 0 7px;background:repeating-linear-gradient(transparent 0 36px,#dfd5e7 36px 37px)}.paper-heart{font:32px 'Caveat',cursive;color:var(--red);text-align:center}.paper-foot{display:block;text-align:center;font:15px 'Caveat',cursive;color:#8f7da1;margin-top:5px}.seal{position:absolute;right:40px;bottom:67px;transform:rotate(12deg);border:1px dashed #9f8db1;outline:6px solid #ded7e4;width:87px;height:87px;border-radius:50%;background:#ded7e4;color:#685474;text-align:center;padding-top:13px;font-size:10px;letter-spacing:1px;line-height:1.5}.seal b{font:22px 'Caveat',cursive}.sprig{position:absolute;right:28px;top:11px;transform:rotate(-30deg);font-size:140px;color:#7663893b}.hero-caption{position:absolute;bottom:23px;left:125px;font:19px 'Caveat',cursive;color:#806c95;transform:rotate(-5deg)}.collection{padding:44px 35px 0}.section-top{display:flex;justify-content:space-between;align-items:end}.section-top .eyebrow{font-size:8px}h2{font:500 30px 'Playfair Display',Georgia,serif;letter-spacing:-.7px;margin:10px 0 24px}h2>span{font:10px 'DM Sans',sans-serif;border:1px solid #d1c8da;border-radius:50%;padding:4px 7px;vertical-align:middle;display:inline-block;letter-spacing:0;color:#746287;margin-left:8px}.section-top>p{font:18px 'Caveat',cursive;color:#806c95;margin-bottom:29px}.tools{display:flex;justify-content:space-between;gap:20px}.search{border:1px solid #d8d1df;display:flex;align-items:center;gap:12px;padding:0 14px;background:#fdfbfe;border-radius:5px;max-width:445px;flex:1;height:44px}.search>span{font-size:25px;color:#77648b}.search input{width:100%;border:0;background:none;font-size:12px;color:var(--ink);min-width:0;outline:none}.search kbd{font:11px sans-serif;color:#9787a8;background:#eeeaf1;border:1px solid #dfd9e5;padding:1px 5px;border-radius:3px}.sort{font-size:10px;color:#836f97;display:flex;align-items:center;gap:10px}.sort select{background:transparent;border:0;color:#604d6b;font-size:11px;padding:10px 4px}.filters{display:flex;gap:7px;flex-wrap:wrap;margin:23px 0 29px}.filters button{border:1px solid #d8d1e0;border-radius:4px;background:transparent;font-size:10px;color:#6e5d80;padding:9px 14px}.filters button[aria-pressed=true]{color:white;background:var(--green);border-color:var(--green)}.filters button:hover{border-color:var(--green)}.empty{text-align:center;padding:34px 15px 43px;border:1px dashed #d2cadb;border-radius:6px;background:linear-gradient(115deg,#e8e2ed1c,#f9f6fc3b)}.empty-icon{font-size:40px;color:#826e96;display:block;margin:0 auto 19px}.empty .eyebrow{justify-content:center;font-size:8px;letter-spacing:1.6px}.empty h3{font:500 27px 'Playfair Display',Georgia,serif;margin:13px 0}.empty p{font-size:12px;line-height:1.9;color:#7e6992}.empty .primary{display:block;margin:22px auto 6px}.empty .text-button{font-size:10px}.collection-bottom{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);margin-top:19px;padding-bottom:18px;font-size:10px;color:#816d96}.collection-bottom button{font-size:10px}.memory-strip{display:flex;justify-content:center;align-items:center;gap:49px;padding:30px 15px}.memory-strip p{text-align:center;font:22px/1.5 'Playfair Display',Georgia,serif;color:#6e5c7f}.memory-strip em{color:var(--red)}.flourish{font-size:53px;color:#9382a4;transform:rotate(-23deg)}.reverse{transform:rotate(157deg)}footer{max-width:1224px;padding:24px 35px 32px;border-top:1px solid var(--line);margin:auto;display:flex;justify-content:space-between;gap:20px;font-size:9px;color:#89769c}.heart{margin-left:10px;color:var(--red)}.recipe-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.recipe-card{border:1px solid #d6cedd;background:#fbf9fd;border-radius:5px;text-align:left;position:relative;min-height:205px;padding:23px;display:flex;flex-direction:column;align-items:start;color:var(--ink);box-shadow:0 3px 6px #422f4e03;transition:transform .2s,box-shadow .2s}.recipe-card:hover{transform:translateY(-3px);box-shadow:0 5px 18px #422f4e12}.recipe-card:before{content:'';position:absolute;top:0;left:0;right:0;height:5px;background:#a392b4;border-radius:4px 4px 0 0}.recipe-card .tag{color:var(--green);font-size:8px;text-transform:uppercase;letter-spacing:1.6px}.recipe-card h3{font:500 23px/1.3 'Playfair Display',Georgia,serif;margin:16px 0 9px;overflow-wrap:anywhere}.recipe-card p{font-size:11px;color:#7f6b94;line-height:1.6;margin:0 0 16px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-line;overflow-wrap:anywhere}.card-meta{font-size:10px;color:#715f84;padding-top:14px;border-top:1px solid #e7e0ec;width:100%;margin-top:auto;display:flex;justify-content:space-between}.recipe-card .arrow{color:var(--red)}dialog{width:min(690px,calc(100% - 30px));max-height:90dvh;padding:30px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);box-shadow:0 20px 90px #231c2833}dialog::backdrop{background:#30263788;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:start;justify-content:space-between;gap:15px}.dialog-head h2{margin-bottom:23px}.icon-button{border:0;background:#e9e5ed;border-radius:50%;width:32px;height:32px;font-size:24px;color:#6e5c80;flex-shrink:0}form label{display:flex;flex-direction:column;gap:8px;margin-bottom:17px;font-size:11px;font-weight:600}form label>span{display:contents;color:var(--red)}form input,form textarea,form select{width:100%;padding:11px;border:1px solid #d1c8da;border-radius:4px;background:#fcfbfd;color:var(--ink);font-size:13px;font-weight:400}textarea{resize:vertical;line-height:1.6}.form-row{display:grid;grid-template-columns:1.2fr 1fr .7fr;gap:14px}.form-help{color:var(--muted);font-size:10px;line-height:1.6}.form-actions{display:flex;justify-content:end;gap:10px;margin-top:23px;padding-top:19px;border-top:1px solid var(--line)}.detail-actions{display:flex;justify-content:space-between;gap:10px;align-items:center;border-top:1px solid var(--line);padding-top:20px;margin-top:25px}.detail-actions>div{display:flex;gap:10px}.danger{color:var(--red)}#recipe-detail h1{font-size:38px;margin-top:22px;overflow-wrap:anywhere}#recipe-detail .detail-meta{color:var(--green);font-size:11px;line-height:1.7}#recipe-detail h3{font:22px 'Playfair Display',Georgia,serif;margin:27px 0 14px}#recipe-detail ul,#recipe-detail ol{padding-left:24px}#recipe-detail li{padding:5px 0;line-height:1.8;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}#recipe-detail .notes{background:#e8e2ed;padding:18px;font-size:13px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%) translateY(90px);background:var(--green);color:white;padding:13px 24px;border-radius:6px;transition:transform .25s;z-index:99;font-size:12px;max-width:90%;text-align:center}#toast.visible{transform:translateX(-50%) translateY(0)}[hidden]{display:none!important}#confirm-delete{max-width:420px}#confirm-delete p{line-height:1.8;color:var(--muted)}
@media(min-width:1500px){main,.topbar,footer{max-width:1300px}.hero{min-height:520px}.hero-copy{padding-top:70px}.recipe-paper{left:110px}.seal{right:70px}}
@media(max-width:900px){.topbar{padding:0 26px;height:95px}nav{gap:18px}nav>.text-button{display:none}.hero-copy{padding:47px 0 30px 26px}h1{font-size:48px}.recipe-paper{left:24px;top:69px;width:275px;padding:24px}.seal{right:13px;bottom:49px}.hero-caption{left:32px;font-size:17px}.cloth{left:0}.collection{padding:35px 26px 0}.recipe-grid{grid-template-columns:repeat(2,1fr)}.section-top>p{display:none}footer{padding:24px 26px}.hero-footer{margin-top:28px}.still-life{min-height:450px}}
@media(max-width:600px){.topbar{height:88px;padding:0 20px}.brand{font-size:17px;gap:9px}.brand small{font-size:7px;letter-spacing:1.3px}.brand-icon{width:34px;height:40px;font-size:24px}.brand-icon span{left:7px}nav>a{display:none}nav .primary{padding:11px 12px;font-size:10px}.hero{grid-template-columns:1fr}.hero-copy{padding:37px 25px 15px}.eyebrow{font-size:8px}h1{font-size:48px;margin:17px 0}.hero-copy>p{max-width:310px;font-size:12px}.hero-link{margin-top:8px}.hero-footer{display:none}.still-life{min-height:345px;max-width:410px;width:100%;margin:auto}.recipe-paper{width:245px;min-height:270px;top:18px;left:53px;padding:18px 23px}.handwritten{font-size:29px}.recipe-paper p{font-size:19px;line-height:1.65;background:none;margin:10px 0 2px}.paper-title{font-size:14px}.paper-rule{margin:8px 0 12px}.paper-heart{font-size:22px}.paper-foot{font-size:13px}.cloth{inset:0 10px 17px 20px}.sprig{font-size:100px;right:9px;top:-10px}.seal{width:68px;height:68px;font-size:8px;padding-top:8px;bottom:50px;right:25px}.seal b{font-size:18px}.hero-caption{bottom:14px;left:76px;font-size:16px}.collection{padding:30px 20px 0}h2{font-size:26px}.tools{flex-wrap:wrap;gap:8px}.search{max-width:none;flex-basis:100%}.sort{margin-left:auto}.filters{margin-top:10px;gap:6px}.filters button{padding:8px 10px;font-size:9px}.empty{padding:30px 12px}.empty h3{font-size:23px}.empty p{font-size:11px}.recipe-grid{grid-template-columns:1fr}.memory-strip{gap:22px;padding:20px 15px}.memory-strip p{font-size:19px}.flourish{font-size:34px}footer{flex-direction:column;gap:12px;padding:22px 20px;line-height:1.7}dialog{padding:22px}.form-row{grid-template-columns:1fr 1fr}.form-row>label:first-child{grid-column:1/-1}.detail-actions .primary,.detail-actions .secondary{padding:11px 12px;font-size:11px}#recipe-detail h1{font-size:32px}}
@media print{body>*{display:none!important}body:has(#viewer[open])>#viewer{display:block!important;position:static;width:100%;max-height:none;overflow:visible;border:0;box-shadow:none;margin:0;padding:0;background:white}#viewer::backdrop{display:none}#viewer .dialog-head,#viewer .detail-actions{display:none!important}#recipe-detail{display:block!important}#recipe-detail h1{font-size:30px}#recipe-detail li{break-inside:avoid}#recipe-detail .notes{background:none;border-left:2px solid #aaa}}

.collections{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.collections button{padding:11px 16px;border:1px solid var(--line);border-radius:5px;background:transparent;color:var(--green);font-size:11px}.collections button[aria-pressed=true]{background:var(--red);border-color:var(--red);color:white}.collection-description{font-size:11px;color:var(--muted);line-height:1.7;margin:12px 0 0}.contribution-fields{grid-template-columns:1fr 1fr}@media(max-width:600px){.collections button{flex:1 1 auto;font-size:10px;padding:10px}.contribution-fields>label:first-child{grid-column:auto}.contribution-fields{grid-template-columns:1fr}.memory-strip p{font-size:18px}}

.more-recipes{text-align:center;margin-top:20px}
.more-recipes p{font-size:12px;color:var(--muted);margin:12px 0}
.book-panel{display:grid;grid-template-columns:1.3fr 1fr;gap:38px;align-items:center;margin:30px 35px 0;padding:34px;background:#e9e4ee;border:1px solid var(--line);border-radius:6px}
.book-panel h2{margin-bottom:12px}
.book-panel p:not(.eyebrow){color:var(--muted);line-height:1.7;max-width:49ch}
.book-link{display:inline-block;margin-top:9px}
.book-panel blockquote{border-left:1px solid #9c8aaf;margin:0;padding-left:26px;font:italic 21px/1.5 Georgia,serif;color:var(--red)}
.book-panel cite{display:block;margin-top:14px;color:var(--muted);font:11px 'DM Sans',sans-serif}
.source-link{display:inline-block;margin-top:12px;color:var(--red);font-size:12px;text-decoration:underline;text-underline-offset:4px}
.cookbook-text{white-space:pre-wrap;line-height:1.8;overflow-wrap:anywhere}
#instructions-label{font-weight:600}
@media(max-width:600px){.book-panel{grid-template-columns:1fr;margin:24px 20px 0;padding:22px;gap:24px}.book-panel blockquote{font-size:18px}}

.recipe-card.has-art{display:grid;grid-template-columns:minmax(0,1fr) 108px;grid-template-rows:auto auto auto 1fr;column-gap:8px}
.recipe-card.has-art .tag,.recipe-card.has-art h3,.recipe-card.has-art p{grid-column:1}
.recipe-card.has-art .card-meta{grid-column:1/-1}
.recipe-art{display:block;aspect-ratio:1;background-repeat:no-repeat;background-size:600% 600%;mix-blend-mode:multiply}
.recipe-card .recipe-art{grid-column:2;grid-row:1/4;width:100%;align-self:center}
.detail-art{width:min(160px,35%);float:right;margin:0 0 10px 12px}
#recipe-detail:after{content:"";display:block;clear:both}
@media (min-width:601px) and (max-width:1050px){.recipe-card.has-art{grid-template-columns:minmax(0,1fr) 82px}}
@media print{.recipe-art{display:none!important}}

.photo-placeholder{display:grid;align-content:center;justify-items:center;gap:11px;min-height:218px;border:1px dashed #b29bbd;background:#f2eaf6;color:#685176;text-align:center;font-size:12px}.photo-placeholder span:first-child{font-size:38px;line-height:1;color:#886b99}@media(max-width:600px){.photo-placeholder{min-height:165px}}

@media(max-width:600px){nav .about-nav{display:inline}nav{gap:12px}}

/* Eight rows of eight watercolor dishes from throughout the cookbook. */
.hero{align-items:center;gap:20px;padding:26px 24px 30px 0}
.hero-copy{padding-top:0}
.hero-collage{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));width:100%;aspect-ratio:1;align-self:center;padding:8px;transform:rotate(-2deg)}
.collage-tile{display:block;aspect-ratio:1;background-size:600% 600%;background-repeat:no-repeat;mix-blend-mode:multiply}
@media(max-width:900px){.hero{gap:8px;padding-right:16px}.hero-collage{padding:0}}
@media(max-width:600px){.hero{padding:24px 0 18px;gap:15px}.hero-copy{padding-top:0}.hero-collage{width:calc(100% - 36px);max-width:440px;margin:0 auto;transform:none}}

.hero{align-items:center}
.hero-copy .hero-collage{width:min(100%,360px);aspect-ratio:1;margin:16px 0 8px;padding:0;transform:none}
.hero-copy .hero-footer{margin-top:24px}
.hero .still-life{width:100%;min-height:480px}
@media(max-width:900px){.hero .still-life{min-height:450px}.hero-copy .hero-collage{max-width:320px}}
@media(max-width:600px){.hero-copy .hero-collage{width:100%;max-width:340px;margin:16px 0 8px}.hero .still-life{min-height:345px}}

.about-page{padding:62px 26px 72px}
.about-letter{max-width:780px;margin:0 auto}
.about-letter>.eyebrow{justify-content:center}
.about-letter h1{font-size:clamp(32px,4.2vw,49px);text-align:center;line-height:1.28;margin:24px 0 38px;letter-spacing:-1px}
.letter-body{font:18px/1.9 'DM Sans',Arial,sans-serif}
.letter-body p{margin:0 0 22px}
.letter-body .letter-signature{font:52px 'Caveat',Georgia,cursive;color:var(--red);margin:4px 0 28px}
.about-links{display:flex;flex-wrap:wrap;gap:12px;padding-top:26px;border-top:1px solid var(--line)}
@media(max-width:600px){.about-page{padding:36px 23px 44px}.letter-body{font-size:16px;line-height:1.85}.about-letter h1{font-size:32px;margin-bottom:28px}nav .about-add{display:none}.about-links a{font-size:11px}}

.about-photo{float:right;width:42%;margin:0 0 22px 30px;padding:8px;background:white;border:1px solid var(--line);border-radius:5px;box-shadow:0 5px 20px #32253e0d}
.about-photo img{display:block;width:100%;height:auto;border-radius:2px}
.letter-body:after{content:"";display:block;clear:both}
@media(max-width:600px){.about-photo{float:none;width:min(100%,340px);margin:0 auto 28px}}

.hattie-portrait{display:block;width:100%;height:auto;border-radius:2px}
.hero .still-life{min-height:540px}
.hero .recipe-paper{top:30px}
@media(max-width:900px){.hero .still-life{min-height:490px}}
@media(max-width:600px){.hero .still-life{min-height:430px}.hero .recipe-paper{top:12px}}

.hero{padding-top:10px}
.hero-copy{align-self:start}
.hero-copy h1{margin-top:8px}
@media(max-width:600px){.hero{padding-top:10px}.hero-copy h1{margin-top:8px}}
