:root{--cream:#f6efdc;--forest:#4b5e3a;--forest-dark:#37432b;--bark:#5b3a29;--clay:#c2703e;--sky:#6fa8c9;--ink:#2e2a22;--paper:#fffaf0;--font-display:"Fraunces", Georgia, serif;--font-body:"Nunito Sans", -apple-system, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--cream);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;overscroll-behavior:none;margin:0;overflow:hidden}a{color:var(--forest)}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.cookies-page{height:100vh;position:relative;overflow:hidden}.hero{height:100vh;position:absolute;inset:0;overflow:hidden}.hero-shade{left:0;right:0;bottom:calc(100vh - var(--content-top));z-index:1;pointer-events:none;opacity:0;background:linear-gradient(#0000,#1e1a1466);height:90px;transition:opacity .2s;position:absolute}.hero-shade.visible{opacity:1;transition:opacity .3s .28s}.hero img{object-fit:cover;object-position:center 30%;filter:saturate(1.05);width:100%;height:100%;position:absolute;inset:0}.hero-copy{left:0;right:0;bottom:calc(100vh - var(--content-top));z-index:15;width:100%;color:var(--paper);padding:28px clamp(20px,5vw,64px);position:absolute}:root{--cookie-btn-size:84px;--content-top:42vh;--cookie-left:3.4vw;--cookie-top:48.8vh}.cookie-btn{top:var(--cookie-top);left:var(--cookie-left);z-index:100;width:var(--cookie-btn-size);height:var(--cookie-btn-size);cursor:pointer;filter:drop-shadow(0 8px 14px #2e2a2273);background:0 0;border:none;padding:0;animation:1.8s ease-in-out infinite cookie-bounce;position:fixed;transform:translate(-46%,-46%)}.cookie-btn[data-phase=open],.cookie-btn[data-phase=biting]{animation:none}.cookie-btn[data-phase=reforming]{animation:.42s ease-in-out cookie-shake}.cookie-btn:focus-visible{outline:3px solid var(--sky);outline-offset:4px;border-radius:50%}.cookie-layer{opacity:0;transform-origin:32px 32px;transition:opacity .3s,transform .3s cubic-bezier(.34,1.56,.64,1);transform:scale(.88)}.cookie-layer-visible{opacity:1;transform:scale(1)}.crumb-layer .crumb{opacity:0;transform-origin:50%}.cookie-btn[data-phase=biting] .crumb-1{animation:.5s ease-out forwards crumb-fly}.cookie-btn[data-phase=biting] .crumb-2{animation:.5s ease-out 50ms forwards crumb-fly}.cookie-btn[data-phase=biting] .crumb-3{animation:.5s ease-out .1s forwards crumb-fly}@keyframes cookie-bounce{0%,to{transform:translate(-46%,-46%)translateY(0)}50%{transform:translate(-46%,-46%)translateY(-10px)}}@keyframes cookie-shake{0%,to{transform:translate(-46%,-46%)translate(0)}20%{transform:translate(-46%,-46%)translate(-6px)rotate(-4deg)}40%{transform:translate(-46%,-46%)translate(5px)rotate(3deg)}60%{transform:translate(-46%,-46%)translate(-4px)rotate(-2deg)}80%{transform:translate(-46%,-46%)translate(3px)rotate(2deg)}}@keyframes crumb-fly{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(14px,16px)scale(.4)}}.content-overlay{z-index:10;pointer-events:none;opacity:0;transition:opacity .25s;position:fixed;inset:0}.content-overlay.visible{opacity:1;pointer-events:auto;transition:opacity .3s .28s}.overlay-inner{bottom:0;left:0;right:0;top:var(--content-top);background:var(--paper);border-top:6px solid var(--forest);border-radius:0;flex-direction:column;gap:4px;padding:clamp(12px,1.6vw,20px) clamp(20px,5vw,64px);display:flex;position:absolute;overflow:hidden;box-shadow:0 -12px 30px #2e2a222e}.overlay-main{grid-template-columns:1fr 300px;gap:24px;display:grid}.overlay-footer{text-align:center;font-family:var(--font-display);color:var(--bark);letter-spacing:.04em;border-top:1px solid #e4d8ba;margin:0;padding-top:6px;font-size:.85rem}.hero-eyebrow{font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:#ffe6b8;text-shadow:0 2px 6px #14110ca6,0 1px 14px #14110c80;margin:0 0 4px;font-size:.75rem;font-weight:700}.hero-heading h1{font-family:var(--font-display);text-shadow:0 2px 8px #14110ca6,0 1px 18px #14110c80;margin:0 0 6px;font-size:clamp(1.8rem,4vw,3rem);font-weight:700}.hero-sub{text-shadow:0 2px 6px #14110ca6,0 1px 14px #14110c80;max-width:44ch;margin:0;font-size:1rem}.recipe-card{min-width:0}.recipe-header{padding-left:60px}.recipe-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--clay);margin:0;font-size:.66rem;font-weight:700}.recipe-header h2{font-family:var(--font-display);color:var(--forest-dark);margin:1px 0 3px;font-size:clamp(1.15rem,2vw,1.45rem)}.recipe-tagline{color:#5a5342;margin:0 0 2px;font-size:.85rem}.recipe-servings{color:var(--bark);margin:0 0 6px;font-size:.76rem;font-weight:700}.recipe-body{grid-template-columns:1fr 1.2fr;gap:24px;display:grid;overflow:hidden}.recipe-ingredients h3,.recipe-steps h3{font-family:var(--font-display);color:var(--forest);border-bottom:2px solid #e4d8ba;margin:0 0 6px;padding-bottom:3px;font-size:.95rem}.recipe-ingredients ul{margin:0;padding:0;list-style:none}.recipe-ingredients li{border-bottom:1px dashed #e4d8ba;padding:4px 0;font-size:.82rem;line-height:1.3}.ing-amount{color:var(--clay);font-weight:700}.ing-link{margin-top:1px;font-size:.72rem;display:block}.recipe-steps ol{margin:0;padding-left:1.1em;font-size:.82rem}.recipe-steps li{margin-bottom:5px;line-height:1.3}.recipe-credit{color:#6a624e;border-top:1px solid #e4d8ba;margin:8px 0 0;padding-top:6px;font-size:.72rem}.ingredient-sources{background:var(--forest);color:var(--paper);border-radius:6px;align-self:start;padding:22px;overflow:auto}.ingredient-sources h3{font-family:var(--font-display);margin:0 0 10px;font-size:1.05rem}.ingredient-sources ul{margin:0;padding:0;list-style:none}.ingredient-sources li{border-bottom:1px solid #ffffff26;padding:8px 0}.ingredient-sources a{color:#ffe6b8;font-weight:600;text-decoration:none}.ingredient-sources a:hover{text-decoration:underline}.ingredient-sources .recipe-credit{color:#ffe6b8;border-top-color:#fff3}.ingredient-sources .recipe-credit a{color:#fff}@media (width>=901px){.recipe-body{max-height:42vh}}@media (width<=900px){.overlay-main,.recipe-body{grid-template-columns:1fr}.cookies-page,.hero{height:100dvh}.hero-shade{display:none}.hero-copy{background:0 0;padding:0;position:static}.hero-top-group{top:max(16px, env(safe-area-inset-top,16px));z-index:100;flex-direction:column;align-items:flex-start;gap:10px;display:flex;position:fixed;left:16px;right:16px}.hero-heading{color:var(--paper);text-shadow:0 2px 6px #14110ca6,0 1px 14px #14110c80;padding:0}:root{--cookie-btn-size:60px}.hero-sub{left:16px;right:16px;bottom:max(16px, env(safe-area-inset-bottom,16px));z-index:2;color:var(--paper);text-align:center;text-shadow:0 2px 6px #14110ca6,0 1px 14px #14110c80;max-width:none;padding:0;position:fixed}.overlay-inner{border-top:none;border-radius:20px;gap:8px;width:auto;height:calc(50dvh - 12px);max-height:calc(50dvh - 12px);margin:0;padding:14px;position:absolute;inset:auto 12px 84px;box-shadow:0 14px 34px #2e2a224d}.ingredient-sources{border-radius:16px;padding:16px;overflow:hidden}.cookie-btn{filter:drop-shadow(0 6px 10px #14110c80);animation:1.8s ease-in-out infinite cookie-bounce-static;position:static;transform:none}.cookie-btn[data-phase=open],.cookie-btn[data-phase=biting]{animation:none}.cookie-btn[data-phase=reforming]{animation:.42s ease-in-out cookie-shake-static}}@keyframes cookie-bounce-static{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes cookie-shake-static{0%,to{transform:translate(0)}20%{transform:translate(-6px)rotate(-4deg)}40%{transform:translate(5px)rotate(3deg)}60%{transform:translate(-4px)rotate(-2deg)}80%{transform:translate(3px)rotate(2deg)}}.swipe-deck{flex-direction:column;height:100%;min-height:0;display:flex}.swipe-dots{flex:none;justify-content:center;gap:8px;padding-bottom:10px;display:flex}.swipe-dot{cursor:pointer;background:#ddcfa8;border:none;border-radius:50%;width:9px;height:9px;padding:0}.swipe-dot.active{background:var(--clay)}.swipe-viewport{touch-action:none;flex:auto;min-height:0;position:relative;overflow:hidden}.swipe-panel{will-change:transform;flex-direction:column;min-height:0;display:flex;position:absolute;inset:0}.swipe-panel-label{font-family:var(--font-display);color:var(--clay);text-transform:uppercase;letter-spacing:.06em;text-align:center;flex:none;margin:0 0 8px;font-size:.75rem;font-weight:700}.swipe-panel-body{-webkit-user-select:none;user-select:none;flex:auto;min-height:0;overflow:hidden}.swipe-panel-body a{-webkit-user-drag:none;user-drag:none}.swipe-panel-body .recipe-ingredients h3,.swipe-panel-body .recipe-steps h3,.swipe-panel-body .ingredient-sources h3{display:none}.swipe-panel-body .recipe-ingredients li{padding:6px 0;font-size:.85rem;line-height:1.3}.swipe-panel-body .ing-link{display:none}.swipe-panel-body .recipe-steps ol{padding-left:1em;font-size:.78rem}.swipe-panel-body .recipe-steps li{margin-bottom:4px;line-height:1.25}.swipe-panel-body .ingredient-sources{padding:12px}.swipe-panel-body .ingredient-sources li{padding:4px 0;font-size:.8rem}.swipe-panel-body .recipe-credit{margin-top:8px;padding-top:8px;font-size:.68rem}.swipe-hint{text-align:center;letter-spacing:.14em;text-transform:uppercase;color:#9a8f6f;flex:none;margin:8px 0 0;font-size:.72rem}.privacy-page{max-width:640px;font-family:var(--font-body);margin:0 auto;padding:48px 24px;line-height:1.6}.privacy-page h1{font-family:var(--font-display);color:var(--forest-dark)}.consent-banner{z-index:50;background:var(--ink);color:var(--paper);border-radius:14px;flex-wrap:wrap;align-items:center;gap:16px;padding:16px 20px;display:flex;position:fixed;bottom:16px;left:16px;right:16px;box-shadow:0 12px 30px #00000040}.consent-banner p{flex:1;min-width:220px;margin:0;font-size:.9rem}.consent-banner a{color:#ffe6b8}.consent-actions{gap:8px;display:flex}.consent-actions button{cursor:pointer;font-weight:700;font-family:var(--font-body);border:none;border-radius:999px;padding:9px 18px}.consent-accept{background:var(--clay);color:#fff}.consent-decline{color:var(--paper);background:0 0;border:1px solid #fff6!important}.admin-shell{max-width:1100px;font-family:var(--font-body);margin:0 auto;padding:32px 20px 60px}.admin-shell h1{font-family:var(--font-display);color:var(--forest-dark)}.admin-login{background:var(--paper);border:1px solid #e4d8ba;border-radius:16px;flex-direction:column;gap:12px;max-width:340px;margin:80px auto;padding:28px;display:flex}.admin-login label{flex-direction:column;gap:4px;font-size:.85rem;font-weight:600;display:flex}.admin-login input{border:1px solid #cbbf9d;border-radius:8px;padding:10px;font-size:1rem}.admin-login button{background:var(--forest);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-top:6px;padding:10px;font-weight:700}.admin-error{color:#b3261e;font-size:.85rem}.admin-tabs{gap:8px;margin:16px 0 20px;display:flex}.admin-tabs button{border:2px solid var(--forest);color:var(--forest-dark);cursor:pointer;background:0 0;border-radius:999px;padding:10px 16px;font-weight:700}.admin-tabs button.active{background:var(--forest);color:#fff}.admin-toggle-row{flex-wrap:wrap;gap:10px;margin-bottom:18px;display:flex}.admin-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;border:2px solid #cbbf9d;border-radius:999px;align-items:center;gap:6px;padding:8px 12px;font-size:.85rem;font-weight:700;display:flex}.admin-toggle.on{background:var(--clay);color:#fff;border-color:var(--clay)}.admin-toggle input{accent-color:var(--forest)}.admin-stats-row{gap:14px;margin-bottom:18px;display:flex}.admin-stat{background:var(--paper);text-align:center;border:1px solid #e4d8ba;border-radius:12px;padding:14px 20px}.admin-stat strong{color:var(--forest-dark);font-size:1.5rem;font-family:var(--font-display);display:block}.admin-stat span{color:#6a624e;font-size:.75rem}.admin-table{border-collapse:collapse;width:100%;font-size:.85rem}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid #e4d8ba;padding:8px 10px}.admin-table th{color:var(--forest-dark);font-family:var(--font-display)}.nickname-btn{cursor:pointer;color:var(--bark);background:0 0;border:none;font-weight:700}.nickname-edit{gap:6px;display:flex}.nickname-edit input{border:1px solid #cbbf9d;border-radius:6px;padding:4px 6px}.nickname-edit button{background:var(--forest);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:4px 8px}.template-panel{border:2px dashed var(--clay);background:#fff4e0;border-radius:14px;padding:18px}.template-warning{color:#8a4a1c;font-weight:700}.template-panel h3{font-family:var(--font-display);margin-top:16px}.ads-status{background:var(--paper);border:1px solid #e4d8ba;border-radius:14px;margin-top:28px;padding:18px}.ads-status h3{font-family:var(--font-display);margin-top:0}
