.page{max-width:100%;margin:0 auto;padding:12px}.page.grid-mode{max-width:1400px;padding:16px}.page.detail-mode{max-width:1200px;padding:24px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.topbar h1{margin:0;font-size:1.5rem}.actions{display:flex;gap:8px}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.search{flex:1;min-width:260px;position:relative}.counter{font-weight:600;color:#475569}.icon-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;background:transparent;font-size:18px;color:#475569;cursor:pointer;padding:4px;line-height:1}.icon-btn:hover{color:#0f172a}.layout{display:grid;grid-template-columns:280px 1fr;gap:12px;align-items:start}.sidebar{background:linear-gradient(180deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:14px;padding:14px;box-shadow:0 6px 20px #0f172a0f;position:sticky;top:12px}.sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.sidebar-header h2{margin:0;font-size:1.05rem}.side-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-radius:12px;cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease;border:1px solid transparent}.side-item:hover{background:#e2e8f0}.side-item.active{background:#e0e7ff;color:#0f172a;border-color:#c7d2fe}.sub-list{margin-left:8px;border-left:2px solid #e2e8f0;padding-left:6px}.side-item.compact{padding:8px 10px;font-size:.95rem}.main{min-width:0}button.primary{background:#0f172a;color:#fff;border:none;padding:10px 14px;border-radius:8px;font-weight:600}button.secondary{background:#e2e8f0;color:#0f172a;border:1px solid #cbd5e1;padding:10px 12px;border-radius:8px;font-weight:600}button.small{padding:6px 10px;font-size:.9rem}button.icon{background:#f8fafc;border:1px solid #cbd5e1;border-radius:6px;width:32px;height:32px;font-size:18px;line-height:1}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.category-block{margin-bottom:28px}.category-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.category-header h2{margin:0}.subcategory-block{margin-bottom:20px}.subcategory-header{display:flex;align-items:center;gap:8px;margin:8px 0}.subcategory-header h3{margin:0;font-size:1rem}.pill{display:inline-flex;align-items:center;justify-content:center;color:#475569;padding:0;font-size:.9rem;font-weight:600}.results-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;color:#475569}.card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 6px 12px #0f172a0f;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.card:hover{transform:translateY(-2px);box-shadow:0 10px 18px #0f172a1f}.thumb{height:160px;overflow:hidden;background:#e2e8f0}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.card-body{padding:12px}.card-body h2{margin:6px 0 0;font-size:1.05rem}.meta{margin:0;font-size:.85rem;color:#475569}.detail{display:flex;flex-direction:column;gap:16px}.detail-nav{position:fixed;top:50%;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:0 14px;transform:translateY(-50%);pointer-events:none;z-index:20}.nav-btn{pointer-events:auto;background:#0f172a;color:#fff;border:none;padding:12px 16px;border-radius:999px;font-weight:700;box-shadow:0 14px 28px #0f172a3d;transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease}.nav-btn:hover,.nav-btn:focus-visible{transform:translateY(-2px);box-shadow:0 18px 32px #0f172a4d;outline:none}.nav-btn:focus-visible{box-shadow:0 0 0 3px #e0e7ff,0 16px 30px #0f172a47}.back-row{display:flex;justify-content:flex-start}.panel{background:#fff;padding:14px;border-radius:10px;border:1px solid #e2e8f0;box-shadow:0 2px 6px #0f172a0a}.panel-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}label{display:block;font-weight:600;margin-bottom:6px;color:#0f172a}input,textarea{width:100%;padding:10px;border-radius:8px;border:1px solid #cbd5e1;background:#f8fafc;font-size:1rem;font-family:inherit}.two-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.ingredients{display:flex;flex-direction:column;gap:10px}.ingredient-row{display:grid;grid-template-columns:1.2fr .8fr 1.4fr 40px;gap:8px;align-items:center}.images{display:flex;flex-direction:column;gap:8px}.image-row{display:grid;grid-template-columns:96px 1fr 40px;gap:8px;align-items:center}.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.gallery img{width:100%;border-radius:10px;border:1px solid #e2e8f0;object-fit:cover}.status{padding:24px;text-align:center;color:#0f172a}.status.error{color:#b91c1c}.image-controls{display:inline-flex;gap:6px}.image-controls .icon:disabled{opacity:.4;cursor:not-allowed}.nav-btn.next{margin-left:auto}.nav-btn.prev{margin-right:auto}@media(max-width:960px){.layout{grid-template-columns:1fr}.sidebar{position:static}}@media(max-width:900px){.detail-nav{top:auto;bottom:12px;transform:none;justify-content:center;gap:12px}.nav-btn{padding:10px 12px}}.printPreviewApp{min-height:100vh;background:#f3f4f6}.printPreviewToolbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;gap:12px;padding:12px 16px;background:#fff;border-bottom:1px solid #e5e7eb}.printPreviewToolbar .muted{margin-left:10px;opacity:.7}.printPreviewToolbar button{padding:8px 12px;border:1px solid #d1d5db;background:#fff;border-radius:8px;cursor:pointer}.printPreviewCanvas{padding:16px}.printSourceHidden{position:absolute;width:0;height:0;overflow:hidden;clip:rect(0 0 0 0);visibility:hidden;pointer-events:none}.pagedjs_pages{display:flex;flex-direction:column;gap:12px;align-items:center}.runningBookTitle{position:running(bookTitle);height:0;margin:0;padding:0;overflow:hidden}.runningRecipeTitle{position:running(recipeTitle);height:0;margin:0;padding:0;overflow:hidden}@page{size:A4;margin:18mm 16mm 20mm;@top-left{content:element(bookTitle);font-size:9pt;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}@top-right{content:element(recipeTitle);font-size:9pt;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}@bottom-right{content:counter(page);font-size:9pt;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}}.recipe{color:#111;font-size:11pt;line-height:1.45;font-family:Georgia,Times New Roman,Times,serif}.recipe h1,.recipe h2{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:0 0 3mm}.recipeHeader{break-inside:avoid;margin-bottom:5mm}.title{font-size:22pt;margin:0 0 2mm}.subTitle{opacity:.8;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;font-size:10pt}.hero{margin:0 0 6mm;break-inside:avoid}.hero img{width:100%;max-height:85mm;object-fit:cover;border-radius:3mm}.twoCol{display:grid;grid-template-columns:.9fr 1.1fr;gap:10mm;align-items:start}.ingredients,.steps,.history{break-inside:avoid}.ingredients ul{margin:0;padding-left:16px;text-align:left}.ingredients li{margin:2mm 0;break-inside:avoid;text-align:left}.ingredients .ingText{display:block}.steps ol{margin:0;padding-left:16px;text-align:left;list-style-position:outside}.steps li{margin:2.2mm 0;break-inside:avoid}.gallery{margin-top:6mm;break-inside:avoid;max-width:180mm;margin-left:auto;margin-right:auto}.galleryGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(60mm,80mm));gap:8mm;justify-items:start}.galleryGrid img{width:80mm;max-width:90mm;height:auto;max-height:100mm;object-fit:contain;border-radius:3mm;background:#f8fafc;padding:2mm}img{-webkit-print-color-adjust:exact;print-color-adjust:exact}@media print{.printPreviewToolbar,.printPreviewCanvas{background:transparent}.printPreviewToolbar{display:none}.printPreviewApp{background:#fff}.pagedjs_pages{display:block!important;margin:0 auto!important}.pagedjs_page{box-shadow:none!important}}.bookCover{break-after:page;page-break-after:always;display:grid;place-content:center;min-height:60vh;text-align:center}.bookCover .eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:10pt;margin:0 0 6mm}.bookCover h1{font-size:28pt;margin:0 0 6mm;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}.bookCover .meta{font-size:11pt;opacity:.8}.coverImage{margin-top:8mm;display:grid;place-content:center}.coverImage img{max-width:100%;max-height:140mm;object-fit:contain;border-radius:4mm}.bookIndex{break-after:page;page-break-after:always;page-break-inside:avoid;max-width:175mm;margin:0 auto;padding:8mm 0;box-sizing:border-box}.bookIndex h2{margin-top:0;font-size:11pt;text-align:left}.indexGrid{column-count:3;column-gap:6mm;font-size:8.5pt;line-height:1.25;margin-top:2mm;column-fill:auto}.indexGroup{break-inside:avoid;margin:0 0 4mm;padding-bottom:1mm}.indexGroup h3{margin:0 0 1mm;font-size:9pt}.indexGroup ul{list-style:none;padding-left:0;margin:1mm 0 0}.indexRow{display:grid;grid-template-columns:1fr max-content;align-items:baseline;column-gap:6px;padding:.25mm 0;color:inherit;text-decoration:none}.indexRow .title{flex:1;border-bottom:1px dotted #d1d5db;padding-bottom:.3mm;font-size:8.5pt}.indexRow .page{min-width:12mm;text-align:right;font-variant-numeric:tabular-nums;justify-self:end;font-size:8pt}.indexSubgroup .subTitle{font-weight:600;margin:1mm 0 .5mm;font-size:8.8pt}.bookCategory{break-before:page}.bookCategory+.bookCategory{margin-top:0}.categoryTitle{margin-top:0;margin-bottom:4mm}.bookSubcategory{break-inside:avoid}.subcategoryTitle{margin-top:0;margin-bottom:3mm}.recipeEntry{break-before:page}.recipeEntry .title{font-size:18pt}.recipeEntry .hero img{max-height:70mm}:root{color:#0f172a;background-color:#f8fafc;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}*{box-sizing:border-box}body{margin:0;background:#f1f5f9}button{cursor:pointer}
