:root{color:#292b26;background:#f4f1e9;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #292b26;--muted: #6b6a61;--paper: #fffdf8;--cream: #f4f1e9;--line: #ddd8cc;--olive: #536344;--olive-dark: #3e4d32;--terracotta: #b95f3f;--danger: #9e4139;--fab-right: clamp(1.25rem, 4vw, 3rem);--fab-bottom: clamp(1.25rem, 4vw, 3rem)}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Georgia,Times New Roman,serif;font-weight:500}h2{margin-bottom:.5rem;font-size:clamp(1.8rem,4vw,2.5rem)}.eyebrow{margin-bottom:.75rem;color:var(--terracotta);font-size:.72rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.loading-screen{display:grid;min-height:100vh;place-content:center;place-items:center;color:var(--muted);background:var(--cream)}.brand-mark{display:grid;width:3.25rem;height:3.25rem;margin-bottom:1rem;place-items:center;border-radius:50%;color:#fff;background:var(--olive);font-family:Georgia,serif;font-size:1.7rem}.login-layout{display:grid;min-height:100vh;padding:1rem;place-items:center;background:radial-gradient(circle at 18% 20%,rgb(185 95 63 / 18%),transparent 25rem),linear-gradient(145deg,#e9e3d6,#f7f4ed)}.login-card{width:min(calc(100% - 2rem),31rem);margin:0;padding:clamp(2rem,7vw,4rem);border:1px solid rgb(50 50 43 / 10%);border-radius:1.5rem;background:#fffdf8eb;box-shadow:0 2rem 6rem #3c342721}.login-card h1,.login-card h2{margin-bottom:2rem}form,label{display:grid}form{gap:1rem}label,legend{color:#4d4d46;font-size:.84rem;font-weight:700}input,select,textarea{width:100%;min-height:2.8rem;margin-top:.4rem;padding:.65rem .75rem;border:1px solid var(--line);border-radius:.55rem;color:var(--ink);background:#fff;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--olive);box-shadow:0 0 0 3px #5363441f}fieldset{min-width:0;margin:0;padding:0;border:0}legend{margin-bottom:.65rem}.button{display:inline-flex;min-height:2.65rem;align-items:center;justify-content:center;padding:.6rem 1rem;border:1px solid transparent;border-radius:.55rem;cursor:pointer;font-weight:750}.button:disabled{cursor:not-allowed;opacity:.55}.button--primary{color:#fff;background:var(--olive)}.button--primary:hover:not(:disabled){background:var(--olive-dark)}.button--quiet{border-color:var(--line);color:var(--ink);background:transparent}.button--danger{border-color:#9e41394d;color:var(--danger);background:#fff8f5}.text-button{padding:0;border:0;color:var(--olive-dark);background:none;cursor:pointer;text-decoration:underline}.login-hint,.form-message,.form-hint{margin:1.25rem 0 0;color:var(--muted);font-size:.82rem;line-height:1.5}.form-error{margin:0;color:var(--danger);font-size:.85rem}.dashboard-shell{min-height:100vh;background:var(--cream)}.topbar{position:sticky;z-index:5;top:0;display:flex;min-height:4.75rem;align-items:center;justify-content:space-between;padding:.75rem clamp(1rem,5vw,4rem);border-bottom:1px solid var(--line);background:#fffdf8eb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.wordmark{display:inline-flex;align-items:center;gap:.65rem;color:var(--ink);font-family:Georgia,serif;font-size:1.3rem;text-decoration:none;border:0;background:transparent;cursor:pointer}.wordmark span{display:grid;width:2rem;height:2rem;place-items:center;border-radius:50%;color:#fff;background:var(--olive)}.topbar-actions{display:flex;align-items:center;gap:.75rem}.app-nav{display:flex;align-self:stretch;align-items:center;gap:.2rem}.app-nav button{height:100%;padding:0 .8rem;border:0;border-bottom:2px solid transparent;color:var(--muted);background:transparent;cursor:pointer;font-size:.86rem;font-weight:700}.app-nav button[aria-current=page]{border-bottom-color:var(--terracotta);color:var(--ink)}.account-menu,.share-menu-anchor{position:relative}.share-menu-toast{position:absolute;top:calc(100% + .5rem);right:0;z-index:21;width:max-content;max-width:16rem;margin:0;padding:.5rem .75rem;border-radius:.6rem;color:#fff;background:var(--ink);font-size:.78rem}.account-menu-trigger{display:grid;width:2.35rem;height:2.35rem;padding:0;border:0;border-radius:50%;color:#fff;background:var(--olive);cursor:pointer;font-weight:700;place-items:center}.account-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#1e1a1240}.account-menu-panel{position:absolute;right:0;z-index:21;display:grid;width:15rem;margin-top:.6rem;padding:.5rem;border:1px solid var(--line);border-radius:.9rem;background:var(--paper);box-shadow:0 1.2rem 3rem #2b28202e;gap:.1rem}.account-menu-identity{display:grid;padding:.6rem .7rem .7rem;border-bottom:1px solid var(--line);margin-bottom:.3rem}.account-menu-identity small{color:var(--muted)}.account-menu-panel button{padding:.6rem .7rem;border:0;border-radius:.6rem;color:var(--ink);background:transparent;cursor:pointer;text-align:left;font-size:.9rem;font-weight:600}.account-menu-panel button:hover{background:#f0ece1}.account-menu-logout{color:var(--danger)}.bottom-nav{position:fixed;right:0;bottom:0;left:0;z-index:10;display:none;padding:.35rem clamp(.5rem,4vw,2rem) calc(.35rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);background:#fffdf8f5;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.bottom-nav button{display:grid;flex:1;justify-items:center;padding:.4rem 0;border:0;color:var(--muted);background:transparent;cursor:pointer;gap:.2rem;font-size:.68rem;font-weight:700}.bottom-nav svg{width:1.4rem;height:1.4rem;fill:none;stroke:currentcolor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.bottom-nav button[aria-current=page],.bottom-nav-primary{color:var(--terracotta)}.bottom-nav-primary-circle{display:grid;width:3.2rem;height:3.2rem;margin-top:-1.4rem;border:3px solid var(--paper);border-radius:50%;color:#fff;background:var(--terracotta);box-shadow:0 .4rem 1.2rem #c46b3d66;place-items:center}.bottom-nav-primary-circle svg{width:1.6rem;height:1.6rem;fill:none;stroke:currentcolor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.bottom-nav-primary[aria-current=page] .bottom-nav-primary-circle{background:var(--olive-dark);box-shadow:0 .4rem 1.2rem #3e4d3266}.api-status{display:inline-flex;min-height:2.35rem;align-items:center;gap:.5rem;margin:0;padding:.5rem .75rem;border-radius:999px;color:var(--muted);background:#eeeadf;font-size:.78rem;font-weight:700}.api-status__dot{width:.55rem;height:.55rem;border-radius:50%;background:#b48a54}.api-status[data-status=online] .api-status__dot{background:#4c8056}.api-status[data-status=offline] .api-status__dot{background:var(--danger)}.dashboard{display:grid;width:min(100% - 2rem,76rem);margin:0 auto;padding:clamp(2.5rem,6vw,5rem) 0 6rem;gap:1.5rem}.recipes-view,.recipe-detail{display:grid;gap:1.5rem}.recipes-heading{display:flex;align-items:end;justify-content:space-between;padding:clamp(1rem,3vw,2rem) 0;gap:2rem}.recipes-heading h1,.recipe-hero h1{margin-bottom:1rem;font-size:clamp(2.7rem,7vw,5rem);letter-spacing:-.045em;line-height:.95}.recipes-heading p:last-child,.recipe-hero p{max-width:44rem;margin-bottom:0;color:var(--muted);line-height:1.6}.recipes-heading--compact{padding:clamp(.5rem,1.5vw,1rem) 0}.recipes-heading--compact h1{margin-bottom:0;font-size:clamp(1.6rem,3vw,2.2rem);letter-spacing:-.03em}.camera-fab{display:grid;width:3.25rem;height:3.25rem;border:1px solid var(--line);border-radius:50%;color:var(--ink);background:#fff;cursor:pointer;place-items:center}.camera-fab[aria-expanded=true]{color:#fff;background:var(--terracotta)}.camera-fab svg{width:1.5rem;height:1.5rem;fill:none;stroke:currentcolor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.fab{position:fixed;right:var(--fab-right);bottom:var(--fab-bottom);z-index:8;display:grid;width:3.4rem;height:3.4rem;border:0;border-radius:50%;color:#fff;background:var(--terracotta);box-shadow:0 .6rem 1.6rem #c46b3d59;cursor:pointer;font-size:1.8rem;line-height:1;place-items:center}.fab:hover{filter:brightness(1.05)}.fab:disabled{cursor:not-allowed;opacity:.6}.fab svg{width:1.5rem;height:1.5rem;fill:none;stroke:currentcolor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.fab-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:8;background:#1e1a1273}.fab-menu{position:fixed;right:var(--fab-right);bottom:calc(var(--fab-bottom) + 4.2rem);z-index:9;display:grid;min-width:min(18rem,calc(100vw - 2 * var(--fab-right)));padding:.75rem;border:1px solid var(--line);border-radius:1.1rem;background:var(--paper);box-shadow:0 1.2rem 3rem #2b28204d;gap:.6rem}.fab-menu button,.fab-menu-file{min-height:3.4rem;display:flex;align-items:center;padding:.9rem 1.1rem;border:1px solid var(--line);border-radius:.8rem;color:var(--ink);background:#faf7f0;cursor:pointer;text-align:left;font-size:1rem;font-weight:700}.fab-menu button:hover,.fab-menu-file:hover{background:#f0ece1}.fab-menu-file{position:relative;display:block}.fab-menu-file input{position:absolute;width:1px;height:1px;opacity:0}.recipes-heading-actions,.form-actions,.recipe-actions,.cookbook-usage-list{display:flex;flex-wrap:wrap;margin:0;padding:0;gap:.5rem;list-style:none}.cookbook-usage-chip{display:inline-flex;min-height:2.5rem;align-items:center;padding:.45rem .9rem;border:1px solid var(--line);border-radius:999px;color:var(--olive-dark);background:var(--paper);cursor:pointer;font-weight:650;gap:.4rem}.cookbook-usage-chip:hover:not(:disabled){border-color:var(--olive);background:#f0ece1}.cookbook-usage-chip:disabled{cursor:default}.recipe-danger-zone{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.file-button{position:relative;overflow:hidden}.file-button input{position:absolute;width:1px;height:1px;opacity:0}.recipe-search{display:flex;padding:.7rem;gap:.6rem;border:1px solid var(--line);border-radius:.9rem;background:var(--paper)}.recipe-search label{flex:1}.recipe-search input{min-height:2.65rem;margin:0;border-color:transparent;background:#f5f2ea}.recipe-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));padding:1rem;border:1px solid var(--line);border-radius:.9rem;background:var(--paper);gap:1rem}.recipe-filter-tags{grid-column:1 / -1;padding:0;border:0}.recipe-filter-tags legend{margin-bottom:.5rem;padding:0;color:var(--muted);font-size:.8rem;font-weight:700;text-transform:uppercase}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:1rem}.recipe-card{display:grid;min-width:0;padding:0;border:1px solid var(--line);border-radius:1rem;overflow:hidden;color:var(--ink);background:var(--paper);cursor:pointer;text-align:left;transition:transform .16s ease,box-shadow .16s ease}.recipe-card:hover{transform:translateY(-3px);box-shadow:0 1rem 3rem #4137281a}.recipe-card-art{display:grid;min-height:10rem;place-items:center;color:#ffffffd1;background:radial-gradient(circle at 70% 25%,rgb(255 255 255 / 22%),transparent 5rem),linear-gradient(145deg,var(--terracotta),#d69b68);font-family:Georgia,serif;font-size:4.5rem}.recipe-card-image{width:100%;height:10rem;object-fit:cover}.recipe-card:nth-child(3n+2) .recipe-card-art{background:linear-gradient(145deg,var(--olive),#91a06d)}.recipe-card:nth-child(3n+3) .recipe-card-art{background:linear-gradient(145deg,#8b674d,#d0ad7e)}.recipe-card-body{display:grid;min-width:0;padding:1.1rem;gap:.55rem}.recipe-card-body>strong{font-family:Georgia,serif;font-size:1.3rem;font-weight:500}.recipe-card-body>span:not(.recipe-tags),.recipe-card-body small{overflow:hidden;color:var(--muted);line-height:1.45;text-overflow:ellipsis}.recipe-tags{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.recipe-tags span{padding:.25rem .55rem;border-radius:999px;color:var(--olive-dark);background:#eaecdf;font-size:.68rem;font-weight:800;text-transform:uppercase}.recipe-tags--secondary{margin-top:.5rem}.recipe-tags--secondary span{color:var(--terracotta);background:#b95f3f1f;text-transform:none}.back-fab{position:sticky;z-index:4;top:5.5rem;display:grid;width:3rem;height:3rem;justify-self:start;border:1px solid var(--line);border-radius:50%;color:var(--ink);background:var(--paper);box-shadow:0 .4rem 1rem #2b28201f;cursor:pointer;place-items:center}.back-fab svg{width:1.4rem;height:1.4rem;fill:none;stroke:currentcolor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.recipe-hero{display:grid;gap:2rem}.image-carousel{grid-column:1 / -1;display:grid;gap:.6rem}.image-carousel-track{display:flex;width:100%;max-height:min(55vh,34rem);overflow-x:auto;border-radius:.8rem;scroll-snap-type:x mandatory;scrollbar-width:none}.image-carousel-track::-webkit-scrollbar{display:none}.image-carousel-slide{display:block;flex:0 0 100%;min-width:0;padding:0;border:0;background:none;cursor:zoom-in;scroll-snap-align:start}.image-carousel-slide img{width:100%;height:min(55vh,34rem);display:block;object-fit:cover}.image-carousel-dots{display:flex;justify-content:center;gap:.45rem}.image-carousel-dots button{width:.55rem;height:.55rem;padding:0;border:0;border-radius:50%;background:var(--line);cursor:pointer}.image-carousel-dots button.is-active{background:var(--terracotta)}.lightbox-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;background:#0f0c08eb;place-items:center}.lightbox-stage{position:relative;display:grid;width:100%;height:100%;overflow:hidden;place-items:center;touch-action:none}.lightbox-stage img{max-width:min(92vw,70rem);max-height:88vh;object-fit:contain;touch-action:none;-webkit-user-select:none;user-select:none}.lightbox-caption{position:absolute;right:1rem;bottom:1rem;left:1rem;margin:0;color:#ffffffd9;text-align:center;font-size:.85rem}.lightbox-close,.lightbox-nav{position:absolute;z-index:51;display:grid;width:2.8rem;height:2.8rem;border:0;border-radius:50%;color:#fff;background:#ffffff1f;cursor:pointer;font-size:1.6rem;line-height:1;place-items:center}.lightbox-close{top:1rem;right:1rem}.lightbox-nav--prev{top:50%;left:1rem;transform:translateY(-50%)}.lightbox-nav--next{top:50%;right:1rem;transform:translateY(-50%)}.recipe-images{display:grid;gap:1.5rem}.recipe-images-heading p:last-child{margin:0;color:var(--muted);font-size:.85rem}.image-upload{display:grid;align-items:end;gap:.8rem;padding:1rem;border:1px dashed #bcb7a8;border-radius:.85rem;background:#faf7f0}.image-source-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.image-upload-hint{margin:.6rem 0 0;color:var(--muted);font-size:.78rem}.image-file-picker{position:relative;display:grid;min-height:3rem;place-items:center;overflow:hidden;border:1px solid var(--line);border-radius:.65rem;color:var(--olive-dark);background:#fff;cursor:pointer;font-weight:800;text-align:center}.image-file-picker--camera{border-style:dashed;color:var(--terracotta)}.image-file-picker input{position:absolute;width:1px;height:1px;opacity:0}.image-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1rem}.image-gallery-item{display:grid;overflow:hidden;border:1px solid var(--line);border-radius:.85rem;background:#fff;gap:.7rem;padding-bottom:.85rem}.image-gallery-preview{position:relative;display:block;aspect-ratio:4 / 3;background:#ece8de}.image-gallery-item img{width:100%;height:100%;object-fit:cover}.image-gallery-cover-badge{position:absolute;top:.6rem;left:.6rem;display:grid;width:1.7rem;height:1.7rem;place-items:center;border-radius:50%;color:#fff;background:var(--terracotta);font-size:.85rem}.image-gallery-toolbar{display:flex;align-items:center;justify-content:center;padding:0 .85rem;gap:.4rem}.image-gallery-item--dragging{z-index:5;opacity:.85;box-shadow:0 1rem 2.5rem #2b282040}.image-drag-handle{color:var(--muted);cursor:grab;touch-action:none}.image-drag-handle:active{cursor:grabbing;border-color:var(--terracotta);color:var(--terracotta)}.image-drag-handle svg{fill:currentcolor;stroke:none}.image-gallery-caption,.image-metadata-fields{margin:0 .85rem}.image-metadata-fields{display:grid;gap:.7rem}.image-gallery-caption{color:var(--muted);font-size:.85rem}.image-metadata-fields input{margin-top:.25rem}.text-button--danger{color:var(--danger)}.recipe-facts{display:flex;margin-top:1.5rem;gap:.6rem;flex-wrap:wrap}.recipe-facts span{padding:.45rem .65rem;border:1px solid var(--line);border-radius:.5rem;color:var(--muted);font-size:.78rem;font-weight:700}.recipe-actions{align-content:start;gap:1rem}.recipe-content-grid{display:grid;align-items:start;gap:1.5rem}.servings-control{display:grid;margin-bottom:1.25rem;gap:1.25rem}.servings-control .servings-stepper{justify-self:center}.servings-stepper{display:flex;align-items:center;gap:.5rem}.servings-stepper label{display:grid;width:6rem;justify-items:center;gap:.15rem}.servings-stepper input{width:100%;margin:0;padding:.4rem;text-align:center;font-size:1.3rem;font-weight:800;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.servings-stepper input::-webkit-inner-spin-button,.servings-stepper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.servings-stepper label span{color:var(--muted);font-size:.75rem;font-weight:700;text-transform:uppercase}.servings-stepper-button{display:grid;width:2.9rem;height:2.9rem;flex-shrink:0;border:1px solid var(--line);border-radius:50%;color:var(--ink);background:#fff;cursor:pointer;font-size:1.4rem;line-height:1;place-items:center}.servings-stepper-button:hover{border-color:var(--terracotta);color:var(--terracotta)}.ingredient-list,.instruction-list{margin:1rem 0 0;padding:0;list-style:none}.ingredient-list li{display:grid;grid-template-columns:minmax(5rem,.35fr) 1fr auto;padding:.8rem 0;gap:.75rem;border-top:1px solid var(--line)}.ingredient-amount{color:var(--terracotta);font-weight:800}.ingredient-list small{display:block;margin-top:.2rem;color:var(--muted)}.ingredient-list em{color:var(--muted);font-size:.75rem}.instruction-list{counter-reset:steps}.instruction-list li{display:grid;grid-template-columns:2.3rem 1fr;padding:1rem 0;gap:.9rem;border-top:1px solid var(--line)}.instruction-list li>span,.step-number{display:grid;width:2.2rem;height:2.2rem;place-items:center;border-radius:50%;color:#fff;background:var(--olive);font-family:Georgia,serif;font-weight:700}.instruction-list h3,.instruction-list p{margin-bottom:.4rem}.instruction-list p{color:#4f514a;line-height:1.7}.instruction-list small{color:var(--terracotta);font-weight:700}.instruction-list .list-group-heading,.ingredient-list .list-group-heading{display:block;margin-top:1.6rem;padding:1rem 0 .4rem;border-top:0;color:var(--olive-dark);font-family:Georgia,serif;font-size:1.15rem;font-weight:700}.instruction-list .list-group-heading:first-child,.ingredient-list .list-group-heading:first-child{margin-top:0;padding-top:0;border-top:0}.recipe-notes{display:grid;gap:1rem}.recipe-source{display:grid;gap:.85rem}.recipe-source-body{display:flex;align-items:center;gap:1rem}.recipe-source-body>div{display:grid;gap:.25rem}.recipe-source-photo{width:4.5rem;height:4.5rem;flex-shrink:0;border-radius:.6rem;object-fit:cover}.recipe-danger-zone{justify-content:flex-end;padding-top:.5rem}.recipe-form-panel form{gap:1.5rem}.form-section-heading{display:flex;align-items:end;justify-content:space-between;margin-top:1rem;gap:1rem}.form-section-heading h3{margin:0;font-family:Georgia,serif;font-size:1.7rem;font-weight:500}.editor-list{display:grid;gap:.65rem}.ingredient-editor,.instruction-editor{display:grid;align-items:start;gap:.6rem;padding:.75rem;border:1px solid var(--line);border-radius:.7rem;background:#faf7f0}.ingredient-editor{grid-template-columns:5.5rem 5rem minmax(9rem,1fr) minmax(9rem,1fr) auto}.instruction-editor{grid-template-columns:auto minmax(14rem,1fr) 6rem auto}.ingredient-editor input,.instruction-editor input,.instruction-editor textarea{margin:0}.instruction-editor textarea{margin-top:.5rem}.sortable-row{display:flex;align-items:stretch;gap:.4rem}.sortable-row--dragging{z-index:5;opacity:.85}.sortable-row-body{flex:1;min-width:0}.drag-handle{display:grid;width:1.5rem;flex-shrink:0;align-self:stretch;place-items:center;padding:0;border:1px dashed var(--line);border-radius:.55rem;color:var(--muted);background:transparent;cursor:grab;touch-action:none}.drag-handle:active{cursor:grabbing;color:var(--terracotta);border-color:var(--terracotta)}.drag-handle svg{width:1.1rem;height:1.1rem;fill:currentcolor}.section-heading-row{display:flex;align-items:center;height:100%;gap:.5rem}.section-heading-input{flex:1;min-height:2.9rem;margin:0;border-style:dashed;border-color:var(--olive);color:var(--olive-dark);background:#f2f4ec;font-family:Georgia,serif;font-size:1rem;font-weight:700}.sortable-row--header{margin-top:.6rem}.form-hint--tight{margin:.15rem 0 0}.undo-toast{position:fixed;bottom:var(--fab-bottom);left:50%;z-index:30;display:flex;align-items:center;padding:.7rem 1.1rem;border-radius:.8rem;color:#fff;background:var(--ink);box-shadow:0 .8rem 2rem #14120c59;gap:1rem;transform:translate(-50%);white-space:nowrap}.undo-toast button{padding:.25rem 0;border:0;color:#f0b28f;background:none;cursor:pointer;font-weight:800;text-decoration:underline;text-underline-offset:.2rem}.share-menu-panel{width:min(18rem,calc(100vw - 2rem));padding:.75rem;border-radius:1.1rem;gap:.6rem}@media(max-width:47.99rem){.share-menu-panel{position:fixed;right:1rem;bottom:calc(5.5rem + env(safe-area-inset-bottom,0px));left:1rem;width:auto;margin-top:0}}.share-menu-panel button{min-height:3.4rem;display:flex;align-items:center;padding:.9rem 1.1rem;border:1px solid var(--line);border-radius:.8rem;background:#faf7f0;font-size:1rem;font-weight:700}.share-icon-actions{align-items:center}.share-icon-actions small{color:var(--olive-dark);font-weight:700}.share-icon-button{width:2.75rem;height:2.75rem;border-radius:.55rem;text-decoration:none}.share-icon-button--off{color:var(--muted);opacity:.55}.tag-create-row{display:flex;flex-wrap:wrap;margin-top:.75rem;gap:.5rem}.tag-create-row input{flex:1;min-width:10rem;min-height:2.9rem;margin:0}.taxonomy-create-toggle{justify-self:start;margin-top:.75rem}.row-actions{display:flex;gap:.25rem}.icon-button{display:grid;width:2.2rem;height:2.2rem;padding:0;border:1px solid var(--line);border-radius:.4rem;color:var(--ink);background:#fff;cursor:pointer;place-items:center}.icon-button:disabled{opacity:.35}.icon-button--danger{color:var(--danger)}.icon-button svg{width:1.1rem;height:1.1rem;fill:none;stroke:currentcolor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.taxonomy-picker{display:grid;gap:1.5rem}.taxonomy-admin{display:grid;align-items:start;gap:1.5rem}.inline-create{display:flex;margin-bottom:1.5rem;gap:.6rem}.inline-create label{flex:1}.inline-create input{margin:0}.chip-picker{display:flex;gap:.45rem;flex-wrap:wrap}.chip-check{display:inline-flex;align-items:center;padding:.45rem .7rem;gap:.4rem;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;font-size:.78rem}.chip-check:has(input:checked){border-color:var(--olive);color:var(--olive-dark);background:#e9eddf}.chip-check input{width:.9rem;min-height:.9rem;margin:0}.dashboard-intro{padding:clamp(1rem,3vw,2rem) 0}.dashboard-intro h1{margin-bottom:1rem;font-size:clamp(2.7rem,7vw,5rem);letter-spacing:-.045em;line-height:.95}.dashboard-intro>p:last-child{max-width:46rem;color:var(--muted);line-height:1.7}.panel{padding:clamp(1.25rem,4vw,2.5rem);border:1px solid var(--line);border-radius:1.15rem;background:var(--paper);box-shadow:0 .75rem 2.5rem #463e2f0d}.panel-heading,.item-title-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.panel-heading{margin-bottom:1.75rem}.panel-heading h2,.item-title-row h3{margin-bottom:0}.count-badge{display:grid;min-width:2.4rem;height:2.4rem;place-items:center;border-radius:50%;color:var(--olive-dark);background:#e9ebdf;font-weight:800}.compact-form{margin-bottom:2rem;padding:1.25rem;border-radius:.85rem;background:#f7f3ea}.compact-form>.button{justify-self:start}.form-grid,.checkbox-grid{display:grid;gap:1rem}.check-label{display:flex;align-items:center;gap:.55rem;font-weight:600}.check-label input{width:1rem;min-height:1rem;margin:0}.secret-notice{display:grid;margin-bottom:1.5rem;padding:1rem;gap:.75rem;border:1px solid #d4bb78;border-radius:.75rem;background:#fff8df}.secret-notice code{overflow-x:auto;padding:.75rem;border-radius:.4rem;background:#fff;font-size:.82rem}.secret-notice .button,.secret-notice .text-button{justify-self:start}.item-list{display:grid}.archive-panel{display:grid;gap:1.5rem}.recipe-history{display:grid;gap:1rem}.history-list{display:grid;margin:0;padding:0;list-style:none}.history-item{display:grid;padding:.9rem 0;gap:.4rem;border-top:1px solid var(--line)}.history-item-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.history-item-head small{color:var(--muted);white-space:nowrap}.history-changes{display:grid;margin:0;padding:.6rem .8rem;border-radius:.6rem;background:#faf7f0;gap:.4rem;list-style:none;font-size:.85rem}.history-changes strong{color:var(--olive-dark)}.change-before{color:var(--muted);text-decoration:line-through}.change-after{color:var(--ink);font-weight:600}.change-list{display:grid;margin:.2rem 0 0;padding:0;gap:.15rem;list-style:none}.change-removed{color:var(--danger)}.change-added{color:var(--olive-dark)}.history-comment{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.history-comment p{margin:0;color:var(--muted);font-size:.9rem}.history-comment-empty{font-style:italic;opacity:.7}.history-comment-edit{display:flex;flex-wrap:wrap;gap:.5rem}.history-comment-edit input{flex:1;min-width:12rem;margin:0}.taxonomy-list{display:grid;margin:0;padding:0;list-style:none}.taxonomy-list li{display:flex;align-items:center;justify-content:space-between;min-height:3.1rem;padding:.35rem 0;gap:.75rem;border-top:1px solid var(--line);font-weight:600}.taxonomy-action-button{width:2.6rem;height:2.6rem;flex-shrink:0;border-radius:.55rem;color:var(--muted)}.taxonomy-action-button:hover{border-color:var(--terracotta);color:var(--terracotta)}.taxonomy-row-editing{display:flex;align-items:center;flex-wrap:wrap;min-height:3.1rem;padding:.5rem 0;gap:.5rem;border-top:1px solid var(--line)}.taxonomy-row-editing input,.taxonomy-row-editing select{flex:1;min-width:10rem;margin:0}.taxonomy-admin-error{grid-column:1 / -1}.archive-section h2{margin-bottom:.3rem;font-size:1.1rem}.list-item{display:flex;align-items:center;justify-content:space-between;padding:1.15rem 0;gap:1rem;border-top:1px solid var(--line)}.list-item h3{font-size:1rem}.list-item p{margin:.3rem 0;color:var(--muted)}.list-item small{color:#858278}.status{padding:.25rem .5rem;border-radius:999px;color:#356143;background:#e5efe4;font-size:.7rem;font-weight:800;text-transform:uppercase}.status--off{color:#7c625a;background:#eee7e2}.empty-state{padding:1.5rem 0 0;color:var(--muted);text-align:center}.account-panel{display:grid;gap:2rem}.account-panel>div>p:last-child{color:var(--muted)}.cookbook-theme--modern{--book-accent: #315c62;--book-accent-soft: #dce8e7;--book-ink: #17282b;--book-muted: #657276;--book-paper: #fbfcfa;--book-surface: #eef2f0;--book-heading: Inter, ui-sans-serif, system-ui, sans-serif;--book-body: Inter, ui-sans-serif, system-ui, sans-serif}.cookbook-theme--mediterranean{--book-accent: #a94d2d;--book-accent-soft: #f2d9bf;--book-ink: #3d2d20;--book-muted: #7d6756;--book-paper: #fff8e9;--book-surface: #f3e8cf;--book-heading: Georgia, "Times New Roman", serif;--book-body: Inter, ui-sans-serif, system-ui, sans-serif}.cookbooks-view,.cookbook-detail-shell{display:grid;gap:1.5rem}.cookbook-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:1.25rem}.cookbook-card{display:grid;min-width:0;padding:0;overflow:hidden;border:1px solid rgb(35 40 35 / 12%);border-radius:1rem;color:var(--book-ink);background:var(--book-paper);box-shadow:0 .8rem 2.5rem #2b282014;cursor:pointer;text-align:left;transition:translate .16s ease,box-shadow .16s ease}.cookbook-card:hover{translate:0 -.2rem;box-shadow:0 1rem 3rem #2b282024}.cookbook-card-cover{display:grid;aspect-ratio:4 / 3;place-items:center;overflow:hidden;color:var(--book-accent);background:linear-gradient(135deg,transparent 45%,rgb(255 255 255 / 55%) 45% 55%,transparent 55%),var(--book-accent-soft);font-family:var(--book-heading);font-size:4rem}.cookbook-card-cover img{width:100%;height:100%;object-fit:cover}.cookbook-card-copy{display:grid;min-height:10rem;align-content:start;padding:1.25rem;gap:.6rem}.cookbook-card-copy small{color:var(--book-accent);font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.cookbook-card-copy strong{font-family:var(--book-heading);font-size:1.55rem;line-height:1.05}.cookbook-card-copy>span:last-child{display:-webkit-box;overflow:hidden;color:var(--book-muted);line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:2}.cookbook-empty{grid-column:1 / -1}.cookbook-editor{max-width:70rem;margin:0 auto}.form-section-heading,.cookbook-block-editor>header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.form-section-heading{margin-top:1rem;padding-top:1.5rem;border-top:1px solid var(--line)}.form-section-heading h3{margin-bottom:0}.block-add-control{display:flex;align-items:end;gap:.6rem}.block-add-control select{margin:0}.cookbook-block-list{display:grid;gap:.8rem}.cookbook-block-editor{display:grid;padding:1rem;gap:1rem;border:1px solid var(--line);border-radius:.8rem;background:#faf8f2}.cookbook-block-editor>header{padding-bottom:.7rem;border-bottom:1px solid var(--line)}.block-check-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:.5rem}.image-block-picker>.eyebrow{margin-bottom:.6rem}.image-thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));max-height:22rem;overflow-y:auto;gap:.6rem}.image-thumb-option{display:grid;padding:.3rem;border:2px solid transparent;border-radius:.6rem;background:#fff;cursor:pointer;gap:.3rem;text-align:left}.image-thumb-option img{width:100%;height:5.5rem;border-radius:.4rem;object-fit:cover}.image-thumb-none{display:grid;height:5.5rem;place-items:center;border-radius:.4rem;background:#f0ece1;color:var(--muted);font-size:.72rem;font-weight:700}.image-thumb-option span{overflow:hidden;color:var(--muted);font-size:.72rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.image-thumb-option--selected{border-color:var(--terracotta);background:#fdf3ea}.image-thumb-upload{align-items:center;justify-items:center;border-style:dashed;border-color:var(--line);color:var(--terracotta);text-align:center}.image-thumb-upload span:first-child{height:5.5rem;display:grid;place-items:center;font-size:1.8rem;font-weight:400}.image-thumb-upload input{position:absolute;width:1px;height:1px;opacity:0}.chip-check{display:flex;align-items:center;padding:.65rem;gap:.55rem;border:1px solid var(--line);border-radius:.55rem;background:#fff;font-weight:600}.chip-check input{width:1rem;min-height:1rem;margin:0}.block-divider-preview{margin:0;color:var(--muted);font-family:Georgia,serif;font-size:1.3rem;letter-spacing:.5em;text-align:center}.cookbook-reader{overflow:hidden;border:1px solid rgb(45 42 34 / 10%);border-radius:1.2rem;color:var(--book-ink);background:var(--book-paper);box-shadow:0 1.5rem 5rem #2b28201f;font-family:var(--book-body)}.cookbook-reader h1,.cookbook-reader h2,.cookbook-reader h3{color:var(--book-ink);font-family:var(--book-heading)}.cookbook-cover{position:relative;display:grid;min-height:27rem;background:var(--book-surface)}.cookbook-cover>img{width:100%;height:100%;min-height:27rem;object-fit:cover}.cookbook-cover>img+div{position:absolute;inset:auto clamp(1.5rem,5vw,4rem) clamp(1.5rem,5vw,4rem);max-width:38rem;padding:clamp(1.5rem,4vw,2.5rem);border-radius:.8rem;background:color-mix(in srgb,var(--book-paper) 92%,transparent);box-shadow:0 1rem 3rem #14140f33}.cookbook-cover>div:only-child{align-self:end;padding:clamp(2rem,8vw,6rem)}.cookbook-cover h1{margin-bottom:.8rem;font-size:clamp(2.7rem,8vw,6rem);letter-spacing:-.04em;line-height:.95}.cookbook-cover h2{color:var(--book-accent);font-size:clamp(1.2rem,3vw,1.8rem)}.cookbook-cover p:last-child{max-width:46rem;margin-bottom:0;color:var(--book-muted);line-height:1.7}.cookbook-reader-actions{display:flex;justify-content:flex-end;padding:1rem clamp(1.25rem,5vw,4rem);gap:1rem;border-bottom:1px solid var(--book-surface)}.cookbook-pages{display:grid;max-width:76rem;margin:0 auto;padding:clamp(2rem,7vw,6rem);gap:clamp(3rem,8vw,7rem)}.cookbook-pages>section>h2{margin-bottom:1.5rem;color:var(--book-accent);font-size:clamp(1.8rem,4vw,3rem)}.cookbook-chapter{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:1rem;border-bottom:2px solid var(--book-accent)}.cookbook-chapter span{color:var(--book-accent);font-size:.8rem;font-weight:900;letter-spacing:.1em}.cookbook-chapter h2{margin-bottom:.6rem;font-size:clamp(2.5rem,7vw,5.5rem);letter-spacing:-.04em}.cookbook-text{max-width:52rem;margin:auto}.cookbook-text p{margin-bottom:0;color:var(--book-muted);font-size:clamp(1.05rem,2vw,1.3rem);line-height:1.9;white-space:pre-wrap}.cookbook-image{margin:0}.cookbook-image img{display:block;width:100%;max-height:46rem;border-radius:.8rem;object-fit:cover}.cookbook-image figcaption{margin-top:.7rem;color:var(--book-muted);font-size:.8rem;font-style:italic}.cookbook-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.cookbook-gallery>:nth-child(3n+1){grid-column:1 / -1}.cookbook-recipe-feature{display:grid;overflow:hidden;border:1px solid var(--book-accent-soft);border-radius:1rem;background:var(--book-surface)}.cookbook-recipe-feature>img,.cookbook-recipe-feature>.cookbook-image img{width:100%;height:min(30rem,50vw);border-radius:0;object-fit:cover}.cookbook-recipe-feature>.cookbook-image figcaption{display:none}.cookbook-recipe-feature>div:last-child{padding:clamp(1.5rem,5vw,3.5rem)}.cookbook-recipe-feature h3{margin-bottom:.7rem;font-size:clamp(2rem,5vw,3.5rem)}.cookbook-recipe-feature p{color:var(--book-muted);line-height:1.7}.cookbook-recipe-columns{display:grid;margin-top:2rem;gap:2rem}.cookbook-recipe-columns ul,.cookbook-recipe-columns ol{margin:0;padding-left:1.4rem;line-height:1.75}.cookbook-recipe-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:1rem}.cookbook-recipe-list-item{display:block;overflow:hidden;width:100%;padding:0;border:1px solid var(--book-accent-soft);border-radius:.8rem;background:var(--book-surface);cursor:pointer;text-align:left;transition:transform .16s ease}.cookbook-recipe-list-item:hover{transform:translateY(-2px)}.cookbook-recipe-list-item img,.cookbook-recipe-list-item>span{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover}.cookbook-recipe-list-item>span{display:grid;place-items:center;color:#ffffffd1;background:linear-gradient(145deg,var(--book-accent),var(--book-surface));font-family:Georgia,serif;font-size:2.5rem}.cookbook-recipe-list-entry{display:contents}.cookbook-recipe-list-entry:has(.cookbook-recipe-feature){display:block;grid-column:1 / -1}.cookbook-recipe-list-entry .cookbook-recipe-feature{margin-top:1rem}.cookbook-recipe-list h3,.cookbook-recipe-list p{margin:1rem 1rem 0}.cookbook-recipe-list p{margin-bottom:1rem;color:var(--book-muted);line-height:1.5}.cookbook-place{padding:1.5rem;border:1px solid var(--book-accent-soft);border-radius:1rem;background:var(--book-surface)}.cookbook-place-name{margin-bottom:.2rem;color:var(--book-ink);font-family:var(--book-heading);font-size:1.4rem;font-weight:700}.cookbook-place-address{margin-bottom:.6rem;color:var(--book-muted)}.cookbook-place .button{margin-top:.8rem}.cookbook-divider{color:var(--book-accent);font-family:Georgia,serif;font-size:1.4rem;letter-spacing:.8em;text-align:center}.cookbook-shares{display:grid;gap:1.5rem}.share-create-form{margin-bottom:0}.share-row-actions{flex-wrap:nowrap;gap:.4rem}.public-cookbook-shell{min-height:100vh;padding:clamp(.5rem,3vw,2rem);background:#dedbd2}.public-cookbook-shell>footer{padding:1.5rem;color:#6b6a61;font-size:.75rem;text-align:center}.public-reader{max-width:88rem;margin:auto}.public-book-state{display:grid;min-height:100vh;padding:1rem;place-items:center;color:var(--muted);background:var(--cream)}.public-unlock-card{margin:auto}.public-unlock-card h1{font-size:clamp(2rem,6vw,3.4rem)}.connectivity-notice{position:fixed;z-index:30;top:.75rem;left:50%;width:min(calc(100% - 2rem),42rem);padding:.75rem 1rem;translate:-50% 0;border:1px solid #d4bb78;border-radius:.7rem;color:#5f4827;background:#fff8df;box-shadow:0 .8rem 2rem #2a261b2e;font-size:.85rem;font-weight:700;text-align:center}.connectivity-notice--online{border-color:#a8c4a6;color:#315a3e;background:#edf7eb}.pwa-install-prompt{position:fixed;z-index:25;right:1rem;bottom:1rem;display:grid;width:min(calc(100% - 2rem),38rem);grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;padding:.85rem;gap:.8rem;border:1px solid var(--line);border-radius:.9rem;background:var(--paper);box-shadow:0 1rem 3rem #2b282033}.pwa-install-prompt img{width:3.2rem;height:3.2rem;border-radius:.75rem}.pwa-install-prompt strong,.pwa-install-prompt p{display:block}.pwa-install-prompt p{margin:.25rem 0 0;color:var(--muted);font-size:.78rem;line-height:1.4}@media(min-width:48rem){.form-grid,.checkbox-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid--three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid--four{grid-template-columns:repeat(4,minmax(0,1fr))}.recipe-hero{grid-template-columns:minmax(0,1fr) auto}.recipe-content-grid{grid-template-columns:minmax(18rem,.75fr) minmax(0,1.25fr)}.image-upload{grid-template-columns:minmax(13rem,1fr) minmax(13rem,1fr) minmax(13rem,1fr) auto}.recipe-notes,.taxonomy-picker,.taxonomy-admin{grid-template-columns:repeat(2,minmax(0,1fr))}.account-panel{grid-template-columns:minmax(0,1fr) minmax(20rem,.7fr)}.cookbook-recipe-feature{grid-template-columns:minmax(16rem,.8fr) minmax(0,1.2fr)}.cookbook-recipe-feature>img,.cookbook-recipe-feature>.cookbook-image img{height:100%;min-height:100%}.cookbook-recipe-columns{grid-template-columns:minmax(12rem,.75fr) minmax(0,1.25fr)}}@media(max-width:47.99rem){:root{--fab-right: 1.1rem;--fab-bottom: calc(4.85rem + env(safe-area-inset-bottom, 0px)) }.recipe-actions,.cookbook-reader-actions{width:100%;justify-content:space-evenly;gap:.5rem}.topbar .api-status,.app-nav{display:none}.bottom-nav{display:flex}.dashboard-shell{padding-bottom:calc(4.5rem + env(safe-area-inset-bottom,0px))}.recipes-heading,.recipe-search{align-items:stretch;flex-direction:column}.recipes-heading-actions,.recipe-search{display:grid}.recipe-grid,.ingredient-editor,.instruction-editor{grid-template-columns:1fr}.instruction-editor .step-number{grid-row:auto}.ingredient-list li{grid-template-columns:5rem 1fr}.ingredient-list em{grid-column:2}.list-item{align-items:flex-start;flex-direction:column}.form-section-heading,.block-add-control{align-items:stretch;flex-direction:column}.cookbook-gallery{grid-template-columns:1fr}.cookbook-gallery>:nth-child(3n+1){grid-column:auto}.cookbook-cover{min-height:22rem}.cookbook-cover>img{min-height:22rem}.cookbook-cover>img+div{inset:auto .75rem .75rem}.cookbook-pages{padding:2rem 1rem}.public-cookbook-shell{padding:0}.public-reader{border-radius:0}.pwa-install-prompt{grid-template-columns:auto minmax(0,1fr) auto}.pwa-install-prompt .button--primary{grid-column:1 / -1}.pwa-install-prompt>.icon-button{grid-column:3;grid-row:1}}
