@import"https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap";:root{--flame-red: #d62828;--ember: #e85d04;--ember-deep: #c44d00;--blaze: #f77f00;--gold: #fcbf49;--spark: #ffe066;--char: #1a1a1a;--smoke: #2d1b0e;--ash: #4a3f35;--soot: #6b5b4f;--parchment: #f5e6d3;--aged-paper: #e8d5b7;--cream: #fef9ef;--worn: #d4c4a8;--fresh-green: #7cb518;--jalapeño: #588157;--warning: #9d0208;--drink-accent: #3b82f6;--drink-accent-deep: #2563eb;--drink-accent-soft: rgba(59, 130, 246, .1);--state-ok-bg: #e3efd9;--state-ok-fg: #2f5d1c;--state-ok-mark: #588157;--state-active-bg: #fdf0c9;--state-active-fg: #7a4d00;--state-active-mark: #f2a900;--state-info-bg: #e3eaf2;--state-info-fg: #315f83;--state-info-mark: #4a7fae;--state-muted-bg: #ece6dd;--state-muted-fg: #6b5b4f;--state-muted-mark: #a49a8e;--state-error-bg: #fbe5e5;--state-error-fg: #9d0208;--state-error-mark: #d62828;--shadow-warm: rgba(45, 27, 14, .25);--shadow-fire: rgba(214, 40, 40, .2);--glow-ember: rgba(232, 93, 4, .4);--elev-1: 0 1px 3px rgba(45, 27, 14, .08);--elev-2: 0 4px 12px rgba(45, 27, 14, .12);--elev-3: 0 20px 60px rgba(24, 20, 16, .45);--ring: 0 0 0 3px var(--glow-ember);--border-burnt: rgba(45, 27, 14, .3);--border-char: rgba(26, 26, 26, .15);--border-faint: rgba(45, 27, 14, .14);--text-label: .7rem;--text-xs: .8rem;--text-sm: .875rem;--text-body: .95rem;--text-base: 1rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--text-2xl: 1.75rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--radius-pill: 999px;--control-h: 36px;--control-h-lg: 44px;--z-sticky: 100;--z-tooltip: 150;--z-modal: 200;--z-modal-top: 220}*{box-sizing:border-box}body{margin:0;font-family:DM Sans,-apple-system,BlinkMacSystemFont,sans-serif;color:var(--char);background-color:var(--parchment);background-image:repeating-linear-gradient(45deg,transparent,transparent 2px,rgba(45,27,14,.01) 2px,rgba(45,27,14,.01) 4px),radial-gradient(ellipse at 0% 0%,rgba(252,191,73,.15),transparent 50%),radial-gradient(ellipse at 100% 100%,rgba(214,40,40,.08),transparent 50%),linear-gradient(180deg,var(--parchment) 0%,var(--aged-paper) 100%);min-height:100vh;line-height:1.5}#root{min-height:100vh}h1,h2,h3,h4{font-family:Bebas Neue,Impact,sans-serif;font-weight:400;letter-spacing:.02em;line-height:1.1}.tabular{font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--ember);outline-offset:2px}button,input,textarea,select{font-family:inherit}button{min-height:var(--control-h);padding:0 .9rem;border:1px solid var(--border-burnt);border-radius:var(--radius-sm);background:var(--cream);color:var(--char);font-size:var(--text-sm);font-weight:600;line-height:1.2;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}button:hover{background:var(--aged-paper);border-color:var(--smoke)}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--ember-deep);border-color:var(--ember-deep);color:#fff}.btn-primary:hover{background:var(--flame-red);border-color:var(--flame-red)}.btn-ghost{background:transparent;border-color:var(--soot);color:var(--soot)}.btn-ghost:hover{background:var(--aged-paper);color:var(--char)}.btn-danger{border-color:#d6282899;background:var(--state-error-bg);color:var(--state-error-fg)}.btn-danger:hover{background:#d6282833;border-color:var(--flame-red)}.btn-danger:disabled{cursor:wait}.btn-icon{position:relative;width:var(--control-h);height:var(--control-h);min-height:var(--control-h);padding:0;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.btn-icon:after{content:"";position:absolute;inset:-4px}input,textarea,select{width:100%;min-height:var(--control-h);border-radius:var(--radius-sm);border:1px solid var(--border-burnt);padding:.45rem .75rem;background:var(--cream);color:var(--char);font-size:var(--text-body);transition:border-color .15s ease,box-shadow .15s ease}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;border-color:var(--ember);box-shadow:var(--ring)}input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--ember-deep)}input::placeholder,textarea::placeholder{color:var(--soot);opacity:.6}label{display:flex;flex-direction:column;gap:.3rem;font-size:var(--text-xs);font-weight:600;color:var(--smoke)}.micro-label{font-size:var(--text-label);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--smoke)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--aged-paper)}::-webkit-scrollbar-thumb{background:var(--soot);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--ash)}::selection{background:var(--gold);color:var(--char)}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .6rem;background:var(--char);color:var(--gold);font-size:var(--text-label);font-weight:700;text-transform:uppercase;letter-spacing:.08em;border-radius:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app{max-width:900px;margin:0 auto;padding:0;min-height:100vh;display:flex;flex-direction:column}.header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--char);position:sticky;top:0;z-index:var(--z-sticky);flex-wrap:wrap;gap:.5rem}.header-brand{display:flex;align-items:baseline;gap:.5rem}.header-brand h1{font-size:var(--text-lg);margin:0;color:var(--cream)}.header-tagline{font-size:var(--text-label);color:var(--gold);text-transform:uppercase;letter-spacing:.1em;opacity:.85}.header-nav,.header-actions{display:flex;align-items:center;gap:.5rem}.header .btn-icon{border-radius:50%;background:transparent;color:var(--cream);border:1px solid rgba(255,248,225,.35);font-size:var(--text-base)}.header .btn-icon:hover{background:#fff8e11f;border-color:#fff8e199}.header .btn-icon:disabled{opacity:.55;cursor:wait}.add-btn.btn-icon{background:var(--ember-deep);border-color:var(--ember-deep);font-size:var(--text-xl);font-weight:300;box-shadow:0 2px 8px var(--shadow-fire)}.add-btn.btn-icon:hover{background:var(--flame-red);border-color:var(--flame-red)}.theme-drink .add-btn.btn-icon{background:var(--drink-accent);border-color:var(--drink-accent)}.theme-drink .add-btn.btn-icon:hover{background:var(--drink-accent-deep);border-color:var(--drink-accent-deep)}.menu-container{position:relative}.menu-btn.btn-icon{border:none}.menu-icon{width:20px;height:2px;background:var(--cream);position:relative;border-radius:1px}.menu-icon:before,.menu-icon:after{content:"";position:absolute;width:20px;height:2px;background:var(--cream);border-radius:1px;left:0}.menu-icon:before{top:-6px}.menu-icon:after{bottom:-6px}.menu-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--cream);border:1px solid var(--border-burnt);border-radius:var(--radius-md);min-width:240px;box-shadow:var(--elev-2);animation:fadeUp .2s ease;overflow:hidden}.menu-user{padding:1rem;background:var(--aged-paper);border-bottom:1px solid var(--border-burnt)}.menu-user-label{display:block;font-size:var(--text-label);color:var(--soot);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.menu-user-name{font-weight:600;color:var(--char);font-size:var(--text-sm)}.menu-item{width:100%;padding:.75rem 1rem;text-align:left;background:transparent;border:none;border-radius:0;color:var(--char);font-size:var(--text-sm);font-weight:500}.menu-item:hover{background:var(--aged-paper)}.menu-auth-form{padding:1rem;display:flex;flex-direction:column;gap:.5rem}.menu-auth-form input{font-size:var(--text-sm)}.menu-auth-form button{margin-top:.25rem}.menu-auth-title{color:var(--char);font-size:var(--text-xs);font-weight:700}.menu-auth-note{color:var(--soot);font-size:var(--text-xs);line-height:1.4}.menu-auth-setup-link{color:var(--ember-deep);font-size:var(--text-sm);font-weight:600;text-decoration:none}.menu-auth-setup-link:hover{text-decoration:underline}.menu-loading{padding:1rem;text-align:center;color:var(--soot);font-size:var(--text-sm)}.segmented{display:inline-flex;gap:2px;background:var(--smoke);border-radius:6px;padding:2px}.segmented button{min-height:30px;padding:.3rem .6rem;font-size:var(--text-label);font-weight:600;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--cream);opacity:.65;text-transform:uppercase;letter-spacing:.03em}.segmented button:hover{opacity:.9;background:#ffffff0f}.segmented button.active{opacity:1;background:var(--char);box-shadow:0 1px 3px #0000004d}.segmented.segmented-accent button.active{background:var(--ember-deep)}.segmented.segmented-light{background:var(--aged-paper)}.segmented.segmented-light button{color:var(--smoke);opacity:.8}.segmented.segmented-light button.active{background:var(--char);color:var(--cream);opacity:1}.error-banner{margin:.75rem 1rem;padding:.75rem 1rem;background:var(--state-error-bg);border:1px solid var(--state-error-mark);border-left-width:4px;border-radius:var(--radius-sm);color:var(--state-error-fg);font-size:var(--text-sm);font-weight:500}.form-overlay{position:fixed;inset:0;background:#181410bf;display:flex;align-items:flex-start;justify-content:center;z-index:var(--z-modal);padding:1rem;overflow-y:auto;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.form-modal{width:min(520px,100%);margin:1rem auto;background:var(--cream);border-radius:var(--radius-lg);box-shadow:var(--elev-3);animation:modalSlideIn .2s ease;overflow:hidden}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.form-header{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1rem;background:var(--char);color:var(--cream)}.form-header h2{margin:0;font-size:var(--text-lg)}.form-close.btn-icon{width:32px;height:32px;min-height:32px;background:#ffffff1a;border:none;border-radius:var(--radius-sm);color:var(--cream);font-size:var(--text-lg);line-height:1}.form-close.btn-icon:hover{background:#fff3}.form-body{padding:1rem;display:flex;flex-direction:column;gap:.875rem;max-height:calc(100vh - 8rem);overflow-y:auto}.form-section{background:var(--aged-paper);border-radius:var(--radius-md);padding:.75rem}.form-section h3,.recipe-ingredients-section h3,.recipe-steps-section h3,.recipe-notes-section h3,.recipe-images-section h3,.recipe-reviews-section h3,.recipe-review-capture h3{margin:0 0 .5rem;font-family:inherit;font-size:var(--text-sm);font-weight:600;letter-spacing:0;color:var(--smoke)}.form-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.form-section-header h3{margin:0}.form-section-toggle{min-height:28px;padding:.2rem .5rem;font-size:var(--text-label);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--smoke)}.form-section-toggle:hover{border-color:var(--ember);color:var(--ember-deep)}.media-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;gap:.5rem}.media-slot{position:relative;aspect-ratio:4/3;background:var(--cream);border:2px dashed var(--border-burnt);border-radius:var(--radius-md);overflow:hidden;display:flex;align-items:center;justify-content:center}.media-slot:first-child{grid-row:span 2;aspect-ratio:auto}.media-slot.has-image{border-style:solid;border-color:var(--jalapeño)}.media-slot img,.media-slot video{width:100%;height:100%;object-fit:cover}.media-add{width:100%;height:100%;min-height:0;background:transparent;border:none;border-radius:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;color:var(--soot)}.media-add span{font-size:var(--text-xl)}.media-add small{font-size:var(--text-label);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.media-add:hover{background:#e85d0414;color:var(--ember-deep)}.media-remove.btn-icon{position:absolute;top:4px;right:4px;width:28px;height:28px;min-height:28px;background:#0009;border:none;border-radius:50%;color:#fff;font-size:var(--text-base)}.media-remove.btn-icon:hover{background:var(--flame-red)}.media-camera{width:100%;height:100%;position:relative}.media-camera video{width:100%;height:100%;object-fit:cover}.media-camera button{position:absolute;bottom:6px;left:50%;transform:translate(-50%);min-height:32px;padding:0 .7rem;background:var(--ember-deep);border-color:var(--ember-deep);color:#fff;font-size:var(--text-xs);box-shadow:0 1px 3px #0000004d}.voice-capture{margin-top:.5rem;padding-top:.5rem;border-top:1px dashed var(--border-burnt)}.voice-start{width:100%;background:var(--char);border-color:var(--char);color:var(--cream);font-size:var(--text-sm)}.voice-start:hover{background:var(--smoke);border-color:var(--smoke)}.voice-recording{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem;background:var(--state-error-bg);border-radius:var(--radius-sm);color:var(--state-error-fg);font-weight:600;font-size:var(--text-sm)}.voice-pulse{width:10px;height:10px;background:var(--flame-red);border-radius:50%;animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}.voice-recording button{min-height:30px;padding:0 .6rem;background:var(--flame-red);border-color:var(--flame-red);color:#fff;font-size:var(--text-xs)}.voice-preview{display:flex;align-items:center;gap:.5rem}.voice-preview audio{flex:1;height:32px}.voice-preview button{min-height:30px;padding:0 .6rem;font-size:var(--text-xs);color:var(--soot)}.form-fields{display:flex;flex-direction:column;gap:.5rem}.form-row{display:flex;gap:.5rem}.form-field{flex:1;display:flex;flex-direction:column;gap:.2rem}.form-field.form-field-lg{flex:1.5}.form-field span,.rating-label,.form-notes span,.slider-label,.selector-label,.media-title,.view-note-label,.view-media-slot span{font-size:var(--text-label);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--smoke)}.form-field input{font-size:var(--text-sm)}.form-ratings{background:transparent;padding:0}.rating-row{display:flex;flex-wrap:wrap;gap:1rem}.rating-block{display:flex;flex-direction:column;gap:.25rem}.form-notes{display:flex;flex-direction:column;gap:.5rem}.form-notes label{display:flex;flex-direction:column;gap:.2rem}.form-notes textarea{font-size:var(--text-sm);resize:vertical;min-height:48px}.form-toggle-manual{width:100%;background:transparent;border:1px dashed var(--border-burnt);border-radius:var(--radius-md);color:var(--smoke);font-size:var(--text-sm)}.form-toggle-manual:hover{border-color:var(--ember);color:var(--ember-deep);background:#e85d040d}.form-footer,.form-actions,.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;padding-top:.5rem}.form-footer{border-top:1px solid var(--border-burnt)}.btn-cancel{color:var(--soot)}.pepper-selector,.score-selector,.droplet-selector,.candy-selector{display:flex;flex-direction:column;gap:.25rem}.pepper-row,.droplet-row,.candy-row{display:flex;gap:.25rem}.pepper-btn,.droplet-btn,.candy-btn{width:var(--control-h);height:var(--control-h);padding:0;border-radius:var(--radius-sm);background:var(--aged-paper);display:flex;align-items:center;justify-content:center}.pepper-btn.active{background:linear-gradient(135deg,var(--blaze),var(--flame-red));border-color:var(--ember-deep)}.pepper-btn .pepper,.droplet-btn .droplet,.candy-btn .candy{font-size:var(--text-base);transition:filter .15s ease}.pepper-btn .pepper{filter:grayscale(100%) opacity(.35)}.pepper-btn.active .pepper{filter:none}.droplet-btn.active{background:linear-gradient(135deg,#60a5fa,var(--drink-accent));border-color:var(--drink-accent-deep)}.candy-btn.active{background:linear-gradient(135deg,#f472b6,#ec4899);border-color:#db2777}.droplet-btn.active .droplet,.candy-btn.active .candy{filter:brightness(1.2) drop-shadow(0 1px 2px rgba(0,0,0,.2))}.score-row{display:flex;gap:.2rem;flex-wrap:wrap}.score-btn{min-width:30px;height:var(--control-h);padding:0 .3rem;background:var(--aged-paper);font-size:var(--text-xs);color:var(--smoke);display:flex;align-items:center;justify-content:center}.score-btn:hover{background:var(--worn)}.score-btn.filled{background:var(--jalapeño);border-color:var(--jalapeño);color:#fff}.score-btn.active{background:var(--fresh-green);border-color:var(--char);color:var(--char);font-weight:700}.notes-section{display:flex;flex-direction:column;gap:.75rem}.notes-section textarea{resize:vertical;min-height:60px}.media-section{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.media-card{padding:.75rem;background:var(--aged-paper);border-radius:var(--radius-md);border:1px solid var(--border-burnt)}.media-title{display:block;margin-bottom:.5rem}.media-preview img,.media-actions video{width:100%;border-radius:var(--radius-sm);margin-bottom:.5rem}.media-preview button,.media-actions button{font-size:var(--text-xs);min-height:32px;padding:0 .6rem}.media-actions audio{width:100%;margin-bottom:.5rem}.heat-slider,.score-slider{display:flex;align-items:center;gap:.5rem;flex:1;min-width:150px}.slider-label{white-space:nowrap;min-width:60px}.slider-track{position:relative;height:28px;flex:1;display:flex;align-items:center}.range-input{position:absolute;width:100%;height:100%;min-height:0;opacity:0;cursor:pointer;z-index:2;margin:0;padding:0}.heat-track{background:var(--aged-paper);border-radius:var(--radius-pill);border:1px solid var(--border-burnt);overflow:hidden}.heat-fill{position:absolute;left:0;top:0;height:100%;width:var(--fill-width, 0%);background:linear-gradient(90deg,var(--gold),var(--ember),var(--flame-red));border-radius:var(--radius-pill);transition:width .15s ease}.slider-peppers{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-around;padding:0 4px;pointer-events:none}.slider-pepper{font-size:var(--text-sm);filter:grayscale(100%) opacity(.3);transition:filter .15s ease}.slider-pepper.active{filter:none}.score-track{background:var(--aged-paper);border-radius:var(--radius-sm);border:1px solid var(--border-burnt);height:12px;overflow:hidden}.score-track .slider-fill{height:100%;width:var(--fill-width, 0%);background:linear-gradient(90deg,var(--jalapeño),var(--fresh-green));border-radius:2px}.slider-value{font-size:var(--text-xs);font-weight:600;color:var(--smoke);min-width:28px;text-align:right;font-variant-numeric:tabular-nums}.content{flex:1;padding:.75rem 1rem 2rem}.app-footer{display:flex;justify-content:center;align-items:center;gap:.5rem;padding:.6rem 1rem;background:var(--parchment);border-top:1px solid var(--border-burnt);font-size:var(--text-xs);color:var(--soot);flex-shrink:0}.content-header{margin-bottom:.75rem}.content-count{font-size:var(--text-xs);color:var(--soot);font-variant-numeric:tabular-nums}.loading{padding:3rem 1rem;text-align:center;color:var(--soot);font-size:var(--text-body)}.empty-state{padding:4rem 1rem;text-align:center}.empty-icon{font-size:3rem;display:block;margin-bottom:1rem;opacity:.5}.empty-state p{color:var(--soot);font-size:var(--text-body);margin:0}.card-grid{display:grid;grid-template-columns:1fr;gap:.875rem}.card,.recipe-card{background:var(--cream);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--elev-1);border:1px solid var(--border-burnt);transition:box-shadow .15s ease,transform .15s ease}.card:hover,.recipe-card:hover{box-shadow:var(--elev-2);transform:translateY(-1px)}.card.needs-attention{border-color:var(--flame-red)}.card-drink{border-color:#3b82f640}.card-image{aspect-ratio:3 / 2;overflow:hidden;position:relative;background:var(--aged-paper);cursor:pointer}.card-image:focus-visible{outline-offset:-3px}.card-image img{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.card:hover .card-image img{transform:scale(1.02)}.card-image-empty,.recipe-card-image-empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:2.5rem;opacity:.25;background:linear-gradient(135deg,var(--aged-paper),var(--worn))}.card-badge{position:absolute;top:8px;left:8px;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.badge-sauce{box-shadow:0 2px 8px #d6282866}.badge-drink{box-shadow:0 2px 8px #3b82f666}.card-attention{position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:700;background:var(--flame-red);color:#fff}.card-content{padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.card-header{display:flex;flex-direction:column;gap:.1rem}.card-header h3{font-size:var(--text-lg);margin:0;color:var(--char)}.card-header p{font-size:var(--text-xs);color:var(--soot);margin:0}.card-ratings{display:flex;align-items:center;gap:.75rem}.heat-display,.refresh-display,.sweet-display{display:flex;gap:1px}.pepper-icon,.droplet-icon,.candy-icon{font-size:var(--text-sm)}.pepper-icon.empty,.droplet-icon.empty,.candy-icon.empty{filter:grayscale(100%) opacity(.25)}.droplet-icon.filled{filter:drop-shadow(0 1px 2px rgba(59,130,246,.4))}.candy-icon.filled{filter:drop-shadow(0 1px 2px rgba(236,72,153,.4))}.heat-empty,.score-empty,.refresh-empty,.sweet-empty{color:var(--soot);font-size:var(--text-xs)}.score-display{display:flex;align-items:center;gap:.35rem}.score-bar{width:44px;height:5px;background:var(--worn);border-radius:3px;overflow:hidden}.score-bar .score-fill{height:100%;width:var(--fill-width, 0%);background:linear-gradient(90deg,var(--jalapeño),var(--fresh-green));border-radius:3px}.score-value{font-family:Bebas Neue,sans-serif;font-size:var(--text-base);color:var(--char);font-variant-numeric:tabular-nums}.card-meta{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.card-tag,.view-tag{font-size:var(--text-label);background:var(--char);color:var(--gold);padding:.15rem .45rem;border-radius:3px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.card-date,.view-date{font-size:var(--text-xs);color:var(--soot);font-variant-numeric:tabular-nums}.card-notes{font-size:var(--text-body);line-height:1.45;color:var(--smoke);margin:0;white-space:pre-line;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.card-error{font-size:var(--text-xs);color:var(--state-error-fg);background:var(--state-error-bg);padding:.4rem .5rem;border-radius:var(--radius-sm);line-height:1.35}.card-error span{font-weight:600}.card-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding-top:.5rem;border-top:1px solid var(--border-burnt);margin-top:auto}.card-view-btn{background:var(--aged-paper);font-size:var(--text-xs);color:var(--smoke)}.card-view-btn:hover{background:var(--char);border-color:var(--char);color:var(--cream)}.card-actions{display:flex;gap:.25rem}.card-actions button{background:transparent;font-size:var(--text-xs);color:var(--soot)}.card-actions .btn-icon{font-size:var(--text-base)}.card-actions button:hover{border-color:var(--smoke);color:var(--char);background:var(--aged-paper)}.card-actions button:disabled{cursor:wait}.card-actions .card-delete:hover{border-color:var(--flame-red);color:var(--state-error-fg);background:var(--state-error-bg)}.modal-overlay{position:fixed;inset:0;background:#18141099;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:1.5rem}.modal{background:var(--cream);border-radius:var(--radius-lg);width:min(420px,100%);box-shadow:var(--elev-3);border:1px solid var(--border-burnt);display:flex;flex-direction:column;gap:1rem;padding:1.25rem 1.5rem}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.modal-header h3{margin:0;font-size:var(--text-xl);color:var(--char)}.modal-close.btn-icon{border:none;background:transparent;font-size:var(--text-xl);color:var(--soot)}.modal-close.btn-icon:hover{background:var(--aged-paper)}.modal-body p{margin:.4rem 0;color:var(--smoke);font-size:var(--text-body)}.modal-warning{font-size:var(--text-xs);font-weight:600;color:var(--state-error-fg);text-transform:uppercase;letter-spacing:.04em}.view-overlay{position:fixed;inset:0;background:#181410d9;display:flex;align-items:flex-start;justify-content:center;z-index:var(--z-modal-top);padding:0;overflow-y:auto;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.view-modal{width:100%;max-width:600px;min-height:100vh;background:var(--cream);animation:viewSlideUp .25s ease}@keyframes viewSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.view-hero-section{position:relative;background:var(--char);min-height:280px;display:flex;align-items:center;justify-content:center}.view-hero-img{width:100%;height:320px;object-fit:contain;background:linear-gradient(180deg,rgba(24,20,16,.3),transparent)}.view-hero-empty{display:flex;align-items:center;justify-content:center;height:200px;font-size:4rem;opacity:.3}.view-close.btn-icon{position:absolute;top:12px;right:12px;background:#00000080;border:none;border-radius:50%;color:#fff;font-size:var(--text-xl);line-height:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.view-close.btn-icon:hover{background:var(--ember-deep)}.view-content{padding:1.25rem;display:flex;flex-direction:column;gap:1rem}.view-header-info{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.view-title-group h2{margin:0;font-size:var(--text-xl);color:var(--char)}.view-maker{font-size:var(--text-sm);color:var(--soot);margin-top:.2rem}.view-ratings-inline{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;flex-shrink:0}.view-rating-item{display:flex;align-items:center}.view-rating-item .score-bar{width:60px;height:8px}.view-rating-item .score-value{font-size:var(--text-lg)}.view-quick-info{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.75rem 0;border-top:1px solid var(--border-burnt);border-bottom:1px solid var(--border-burnt)}.view-vendor-heat{display:flex;align-items:center;gap:.3rem;font-size:var(--text-xs);color:var(--smoke)}.view-vendor-heat .pepper-icon{font-size:var(--text-xs)}.view-product-link{font-size:var(--text-xs);font-weight:600;color:var(--ember-deep);text-decoration:none;margin-left:auto}.view-product-link:hover{text-decoration:underline}.view-notes{display:flex;flex-direction:column;gap:.75rem}.view-note{padding:.75rem;background:var(--aged-paper);border-radius:var(--radius-md);border-left:3px solid var(--ember)}.view-note-vendor{border-left-color:var(--smoke);background:#00000005}.view-note-label{display:block;margin-bottom:.35rem}.view-note p{margin:0;font-size:var(--text-body);line-height:1.5;color:var(--char);white-space:pre-line}.view-source-images{border-top:1px dashed var(--border-burnt);padding-top:.75rem}.view-source-images summary,.view-details-block summary{font-size:var(--text-sm);font-weight:600;color:var(--smoke);cursor:pointer;padding:.5rem 0}.view-source-images summary:hover,.view-details-block summary:hover{color:var(--char)}.view-source-images[open] summary{margin-bottom:.5rem}.view-media-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.view-media-slot{position:relative;background:var(--cream);border:1px solid var(--border-burnt);border-radius:var(--radius-md);overflow:hidden}.view-media-slot img{width:100%;aspect-ratio:4/3;object-fit:contain;background:var(--cream)}.view-media-slot span{display:block;padding:.35rem;text-align:center;background:var(--aged-paper)}.view-details-row{display:flex;flex-direction:column;gap:.5rem}.view-details-block{background:var(--aged-paper);border-radius:var(--radius-md);overflow:hidden}.view-details-block summary{padding:.6rem .75rem;display:flex;align-items:center;gap:.5rem}.view-details-block summary:hover{background:#00000008}.view-details-block summary::marker{color:var(--ember)}.view-details-block[open] summary{border-bottom:1px solid var(--border-burnt)}.view-ingredients{padding:.5rem .75rem .75rem;display:flex;flex-wrap:wrap;gap:.3rem}.view-ingredients span{background:var(--cream);padding:.2rem .5rem;border-radius:3px;font-size:var(--text-xs);color:var(--char);border:1px solid var(--border-burnt)}.view-nutrition{margin:0;padding:.5rem .75rem .75rem;display:grid;grid-template-columns:auto 1fr;gap:.2rem .75rem}.view-nutrition dt{font-size:var(--text-xs);color:var(--smoke)}.view-nutrition dd{margin:0;font-size:var(--text-xs);color:var(--char);font-weight:600;font-variant-numeric:tabular-nums}.recipe-grid{display:grid;grid-template-columns:1fr;gap:1rem}.recipe-card{min-height:0;padding:0;cursor:pointer;display:flex;flex-direction:row;text-align:left;font-weight:400}.recipe-card:hover{background:var(--cream);border-color:var(--border-burnt)}.recipe-card-image{width:140px;min-height:120px;flex-shrink:0;overflow:hidden;position:relative;background:var(--aged-paper)}.recipe-card-image img{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.recipe-card:hover .recipe-card-image img{transform:scale(1.02)}.recipe-card-image-empty{font-size:2rem}.recipe-source-badge,.recipe-card-source{display:inline-block;padding:.15rem .45rem;background:var(--char);color:var(--gold);font-size:var(--text-label);font-weight:600;text-transform:uppercase;letter-spacing:.04em;border-radius:3px}.recipe-card-content{position:relative;padding:.875rem 1rem;display:flex;flex-direction:column;gap:.35rem;flex:1;min-width:0}.recipe-card-content h3{font-size:var(--text-lg);margin:0;color:var(--char);padding-right:6rem}.recipe-card-description{font-size:var(--text-body);line-height:1.45;color:var(--smoke);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-meta{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:auto;padding-top:.25rem}.recipe-card-source{position:absolute;top:.6rem;right:.6rem}.recipe-card-date{font-size:var(--text-xs);color:var(--soot);margin-left:auto;font-variant-numeric:tabular-nums}.recipe-page{width:100%;padding-bottom:2rem}.recipe-page-back{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem}.recipe-back-btn{background:none;border:none;color:var(--ember-deep);font-size:var(--text-sm);padding:0}.recipe-back-btn:hover{background:none;color:var(--flame-red)}.recipe-delete-confirm{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--text-sm);color:var(--smoke)}.recipe-page-hero{width:100%;overflow:hidden;border-radius:var(--radius-md);margin:0 0 1rem}.recipe-page-hero-img{width:100%;max-height:400px;object-fit:cover;display:block}.recipe-page-hero-empty{width:100%;height:200px;display:flex;align-items:center;justify-content:center;font-size:3rem;opacity:.2;background:linear-gradient(135deg,var(--aged-paper),var(--worn))}.recipe-page-content{padding:0 1rem;display:flex;flex-direction:column;gap:1.25rem}.recipe-detail-header{display:flex;flex-direction:column;gap:.5rem}.recipe-detail-header h2{margin:0;font-size:var(--text-2xl);color:var(--char)}.recipe-detail-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;font-size:var(--text-sm);color:var(--soot)}.recipe-servings-control{display:inline-flex;align-items:center;gap:.4rem;font-variant-numeric:tabular-nums}.servings-btn.btn-icon{width:32px;height:32px;min-height:32px;border-radius:50%;background:var(--aged-paper);font-size:var(--text-base)}.servings-btn.btn-icon:hover{background:var(--worn)}.servings-btn.btn-icon:disabled{opacity:.3;cursor:default}.recipe-detail-description{font-size:var(--text-body);line-height:1.5;color:var(--smoke);margin:0}.recipe-ingredients-section,.recipe-steps-section,.recipe-notes-section{background:var(--aged-paper);border-radius:var(--radius-md);padding:1rem}.recipe-ingredients-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.recipe-ingredients-list li{display:flex;align-items:baseline;gap:.5rem;padding:.3rem 0;border-bottom:1px dotted var(--border-burnt);font-size:var(--text-body)}.recipe-ingredients-list li:last-child{border-bottom:none}.recipe-ing-amount{font-weight:600;color:var(--ember-deep);white-space:nowrap;min-width:60px;font-variant-numeric:tabular-nums}.recipe-ing-name{color:var(--char)}.recipe-ing-linked{all:unset;cursor:pointer;color:var(--char);display:inline-flex;align-items:baseline;gap:.3rem;border-bottom:1px dashed var(--ember);transition:color .15s}.recipe-ing-linked:hover{color:var(--ember-deep)}.recipe-ing-linked:focus-visible{outline:2px solid var(--ember);outline-offset:2px}.recipe-ing-linked-icon{font-size:var(--text-label);color:var(--ash);transition:color .15s}.recipe-ing-linked:hover .recipe-ing-linked-icon{color:var(--ember-deep)}.recipe-linked-tooltip{display:flex;position:fixed;left:var(--tooltip-left, 0);top:var(--tooltip-top, 0);z-index:var(--z-tooltip);background:var(--cream);border:1px solid var(--border-burnt);border-radius:var(--radius-md);box-shadow:var(--elev-2);padding:.6rem;gap:.6rem;max-width:300px;min-width:200px;pointer-events:none;animation:tooltip-fade-in .15s ease}@keyframes tooltip-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.recipe-linked-tooltip-thumb-slot{width:56px;height:56px;flex-shrink:0;border-radius:var(--radius-sm);overflow:hidden;background:var(--aged-paper)}.recipe-linked-tooltip-thumb{width:100%;height:100%;object-fit:cover;display:block}.recipe-linked-tooltip-info{display:flex;flex-direction:column;gap:.15rem;min-width:0}.recipe-linked-tooltip-title{font-family:Bebas Neue,sans-serif;font-size:var(--text-base);color:var(--char);line-height:1.1}.recipe-linked-tooltip-desc{font-size:var(--text-xs);color:var(--ash);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-linked-tooltip-meta{font-size:var(--text-xs);color:var(--ember-deep);font-weight:600}.recipe-linked-tooltip-loading{font-size:var(--text-xs);color:var(--ash);padding:.25rem}.recipe-ingredient-token{color:var(--ember-deep);font-weight:600}.recipe-ingredient-token-linked{all:unset;color:var(--ember-deep);font-weight:600;cursor:pointer;border-bottom:1px dashed var(--ember);transition:opacity .15s}.recipe-ingredient-token-linked:hover{opacity:.7}.recipe-ingredient-token-linked:focus-visible{outline:2px solid var(--ember);outline-offset:2px}.recipe-steps-list{margin:0;padding:0 0 0 1.25rem;display:flex;flex-direction:column;gap:.75rem}.recipe-step{padding:.25rem 0}.recipe-step-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.recipe-step-title{font-weight:600;font-size:var(--text-body);color:var(--char)}.recipe-timer-badge{display:inline-flex;align-items:center;padding:.1rem .45rem;background:var(--ember-deep);color:#fff;font-size:var(--text-label);font-weight:600;border-radius:3px;letter-spacing:.03em;font-variant-numeric:tabular-nums}.recipe-step-content{font-size:var(--text-body);line-height:1.5;color:var(--smoke);margin:0;white-space:pre-line}.recipe-notes-section{border-left:3px solid var(--ember)}.recipe-notes-section p,.recipe-notes-paragraph{margin:0 0 .5rem;font-size:var(--text-body);line-height:1.5;color:var(--char)}.recipe-notes-section p:last-child,.recipe-notes-paragraph:last-child{margin-bottom:0}.recipe-images-section,.recipe-reviews-section{margin-top:1.5rem}.recipe-images-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;margin-top:.5rem}.recipe-photo-wrapper{position:relative}.recipe-photo{width:100%;border-radius:var(--radius-md);object-fit:cover;aspect-ratio:4/3}.recipe-review-footer{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-top:.5rem}.recipe-review{background:var(--aged-paper);border-radius:var(--radius-md);border:1px solid transparent;padding:1rem;margin-top:.75rem}.recipe-review-selected{border-color:var(--ember);box-shadow:var(--ring)}.recipe-review-score{font-weight:700;font-size:var(--text-body);margin-bottom:.5rem;color:var(--ember-deep);font-variant-numeric:tabular-nums}.recipe-review-date{display:block;margin-top:.5rem;font-size:var(--text-xs);color:var(--soot)}.recipe-review-link{color:var(--ember-deep);font-size:var(--text-xs);font-weight:600;text-decoration:none}.recipe-review-link:hover{text-decoration:underline}.recipe-review-capture{margin-top:1.5rem;padding-top:1.5rem;border-top:1px dashed var(--border-burnt)}.review-capture-controls{display:flex;gap:.75rem;margin:.75rem 0}.review-media-slot,.review-voice-slot{flex:1}.review-add-media{width:100%;min-height:0;padding:1rem;background:var(--cream);border:2px dashed var(--border-burnt);border-radius:var(--radius-md);display:flex;flex-direction:column;align-items:center;gap:.25rem;cursor:pointer;font-size:var(--text-sm);font-weight:600;line-height:1.2;color:var(--soot);transition:border-color .15s ease,color .15s ease,background-color .15s ease}.review-add-media:hover{border-color:var(--ember);color:var(--ember-deep);background:#e85d040d}.review-add-media span{font-size:var(--text-xl)}.review-preview{position:relative}.review-preview img{width:100%;border-radius:var(--radius-md);object-fit:cover}.review-camera{display:flex;flex-direction:column}.review-camera video{width:100%;border-radius:var(--radius-md)}.review-submit{width:100%;margin-top:.5rem}@media(max-width:480px){.header-nav{order:3;width:100%;justify-content:center;gap:.5rem}.segmented button{padding:.3rem .5rem}}@media(min-width:600px){.view-overlay{padding:2rem 1rem;align-items:flex-start}.view-modal{min-height:auto;border-radius:var(--radius-lg);box-shadow:var(--elev-3);overflow:hidden}.view-hero-section{min-height:300px}.view-hero-img{height:360px}.card-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:900px){.app{padding:0 1rem}.header{border-radius:0 0 var(--radius-lg) var(--radius-lg);margin:0 -1rem;padding:.75rem 2rem}.content{padding:1.5rem 1rem 3rem}.form-modal{width:min(580px,100%)}.view-modal{max-width:680px}.view-hero-img{height:400px}.view-content{padding:1.5rem}.view-title-group h2{font-size:var(--text-2xl)}.card-grid{grid-template-columns:repeat(3,1fr);gap:1.25rem}}.filter-bar{padding:.75rem 1rem .5rem;background:var(--cream);border-bottom:1px solid var(--border-burnt);display:flex;flex-direction:column;gap:.6rem}.filter-bar-main{display:flex;gap:.5rem;align-items:center}.search-field{flex:1;position:relative;display:flex;align-items:center;min-width:0}.search-icon{position:absolute;left:.6rem;font-size:var(--text-sm);pointer-events:none;opacity:.5}.search-field input{padding-left:2rem;font-size:var(--text-sm)}.sort-control{display:inline-flex;flex-shrink:0}.sort-select{width:auto;min-width:5.5rem;padding-right:.5rem;font-size:var(--text-sm);border-radius:var(--radius-sm) 0 0 var(--radius-sm);cursor:pointer}.sort-direction.btn-icon{margin-left:-1px;border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--aged-paper);font-size:var(--text-base)}.sort-direction.btn-icon:hover{background:var(--worn)}.filter-toggle{position:relative;display:inline-flex;align-items:center;gap:.35rem;padding:0 .75rem;background:var(--aged-paper);flex-shrink:0}.filter-toggle:hover{background:var(--worn)}.filter-toggle.active,.filter-toggle.has-filters{background:var(--char);border-color:var(--char);color:var(--cream)}.filter-toggle.active:hover,.filter-toggle.has-filters:hover{background:var(--smoke)}.filter-icon{font-size:var(--text-base)}.filter-badge{min-width:18px;height:18px;padding:0 5px;background:var(--ember-deep);color:#fff;font-size:var(--text-label);font-weight:700;border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}.filter-panel{padding-top:.6rem;border-top:1px dashed var(--border-burnt);display:flex;flex-direction:column;gap:.75rem;animation:fadeUp .2s ease}.filter-row{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:flex-end}.filter-field{flex:1;min-width:140px}.filter-field span{font-size:var(--text-label);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.filter-field input{font-size:var(--text-sm)}.filter-group{display:flex;flex-direction:column;gap:.4rem}.filter-group-label{font-size:var(--text-label);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--smoke)}.filter-bar-status{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .75rem;min-height:1.5rem}.active-filters{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin:0;padding:0;list-style:none}.clear-filters{min-height:28px;padding:0 .6rem;font-size:var(--text-xs);background:transparent;color:var(--soot)}.chip-row{display:flex;flex-wrap:wrap;gap:.35rem}.chip{display:inline-flex;align-items:center;gap:.35rem;min-height:30px;padding:0 .7rem;border:1px solid var(--border-burnt);border-radius:var(--radius-pill);background:var(--cream);color:var(--smoke);font-size:var(--text-sm);font-weight:500;line-height:1.2;white-space:nowrap;cursor:pointer}.chip:hover{background:var(--aged-paper);border-color:var(--smoke)}.chip-selected,.chip-active{background:var(--char);border-color:var(--char);color:var(--cream);font-weight:600}.chip-selected:hover,.chip-active:hover{background:var(--smoke);border-color:var(--smoke)}.chip-count{font-size:var(--text-label);font-weight:600;opacity:.7;font-variant-numeric:tabular-nums}.chip-empty{opacity:.45}.chip-empty:hover{opacity:.8}.chip-more{border-style:dashed;color:var(--soot)}.chip-remove{font-size:var(--text-base);line-height:1;opacity:.8}.chip-reviewed{border-color:var(--state-ok-mark);color:var(--state-ok-fg)}.chip-reviewed.chip-selected{background:var(--state-ok-fg);border-color:var(--state-ok-fg);color:#fff}.chip-tag{border-color:var(--book-tag-color, var(--border-burnt));background:var(--book-tag-background, var(--cream));color:var(--book-tag-color, var(--smoke))}.chip-tag:hover{background:var(--book-tag-background, var(--aged-paper));filter:brightness(.96)}.chip-tag.chip-selected{background:var(--book-tag-color, var(--char));border-color:var(--book-tag-color, var(--char));color:#fff}.chip-tag.chip-selected .chip-count{opacity:.85}.tag-rows{display:flex;flex-direction:column;gap:.5rem}.tag-row{display:grid;grid-template-columns:6.5rem 1fr;gap:.5rem;align-items:start;padding-left:.6rem;border-left:3px solid var(--book-tag-color, var(--border-burnt))}.tag-row-key{padding-top:.35rem;font-size:var(--text-sm);font-weight:600;color:var(--book-tag-color, var(--smoke))}@media(max-width:560px){.filter-bar-main{flex-wrap:wrap}.search-field{flex-basis:100%}.filter-toggle-text{display:none}.tag-row{grid-template-columns:1fr;gap:.3rem}.tag-row-key{padding-top:0}}@media(min-width:900px){.filter-bar{margin:0 -1rem;padding:.75rem 2rem .5rem}}.tip{position:relative;display:inline-flex;align-items:center}.tip-bubble{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%) translateY(-2px);z-index:var(--z-tooltip);max-width:min(280px,90vw);width:max-content;padding:.4rem .6rem;background:var(--char);color:var(--cream);font-size:var(--text-xs);font-weight:500;line-height:1.35;text-align:left;white-space:normal;text-transform:none;letter-spacing:0;border-radius:var(--radius-sm);box-shadow:var(--elev-2);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease,transform .15s ease,visibility 0s linear .15s}.tip-bubble:before{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-bottom-color:var(--char)}.tip-start .tip-bubble{left:0;transform:translate(0) translateY(-2px)}.tip-start .tip-bubble:before{left:12px}.tip-end .tip-bubble{left:auto;right:0;transform:translate(0) translateY(-2px)}.tip-end .tip-bubble:before{left:auto;right:7px}.tip-open .tip-bubble{opacity:1;visibility:visible;transition-delay:.15s,.15s,0s}.tip-open .tip-bubble,.tip-open.tip-start .tip-bubble,.tip-open.tip-end .tip-bubble{transform:translate(var(--tip-x, -50%)) translateY(0)}.tip-open.tip-start .tip-bubble,.tip-open.tip-end .tip-bubble{--tip-x: 0}.status-chip{display:inline-flex;align-items:center;gap:.35rem;min-height:24px;padding:0 .55rem 0 .4rem;border-radius:var(--radius-pill);background:var(--signal-bg, var(--state-muted-bg));color:var(--signal-fg, var(--state-muted-fg));font-size:var(--text-xs);font-weight:600;line-height:1;white-space:nowrap;cursor:default}.status-chip:focus-visible{outline:2px solid var(--ember);outline-offset:2px}.status-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--signal-mark, var(--state-muted-mark));flex-shrink:0}.state-ok{--signal-bg: var(--state-ok-bg);--signal-fg: var(--state-ok-fg);--signal-mark: var(--state-ok-mark)}.state-active{--signal-bg: var(--state-active-bg);--signal-fg: var(--state-active-fg);--signal-mark: var(--state-active-mark)}.state-info{--signal-bg: var(--state-info-bg);--signal-fg: var(--state-info-fg);--signal-mark: var(--state-info-mark)}.state-muted{--signal-bg: var(--state-muted-bg);--signal-fg: var(--state-muted-fg);--signal-mark: var(--state-muted-mark)}.state-error{--signal-bg: var(--state-error-bg);--signal-fg: var(--state-error-fg);--signal-mark: var(--state-error-mark)}.review-mark{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:var(--text-sm);font-weight:700;line-height:1;cursor:default}.review-mark-done{background:var(--state-ok-bg);color:var(--state-ok-fg)}.review-mark-pending{color:var(--soot);opacity:.6}.meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem}.meta-chip{display:inline-flex;align-items:center;gap:.3rem;min-height:26px;padding:0 .55rem;border-radius:var(--radius-sm);background:var(--aged-paper);color:var(--smoke);font-size:var(--text-xs);font-weight:500;text-decoration:none;white-space:nowrap;cursor:default}.meta-chip-link{cursor:pointer;color:var(--ember-deep);font-weight:600}.meta-chip-link:hover{background:var(--worn)}.meta-chip-icon{font-size:var(--text-xs)}.meta-chip-ext{font-size:var(--text-label);opacity:.8}.legend{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .8rem;margin:0 0 0 auto;padding:0;list-style:none;font-size:var(--text-xs);color:var(--soot)}.legend li{display:inline-flex;align-items:center;gap:.3rem}.legend-glyph{display:inline-flex;align-items:center;justify-content:center;min-width:1rem;font-weight:700;color:var(--smoke)}.legend-bar{display:inline-block;width:22px;height:5px;border-radius:3px;background:linear-gradient(90deg,var(--jalapeño),var(--fresh-green))}.legend-score{font-size:var(--text-label);font-weight:700;color:var(--ember-deep);font-variant-numeric:tabular-nums}.clamp-block p{margin:0;white-space:pre-wrap}.clamp{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.clamp-2{-webkit-line-clamp:2}.clamp-3{-webkit-line-clamp:3}.clamp-4{-webkit-line-clamp:4}.clamp-toggle{min-height:0;margin-top:.2rem;padding:0;border:none;background:none;color:var(--ember-deep);font-size:var(--text-xs);font-weight:600}.clamp-toggle:hover{background:none;text-decoration:underline}@media(max-width:560px){.legend{margin-left:0;flex-basis:100%}}.books-section{display:flex;flex-direction:column;gap:1rem}.books-intro{display:flex;flex-direction:column;gap:.2rem}.books-intro h1{margin:0;font-size:var(--text-2xl);color:var(--char)}.books-intro p{max-width:60ch;margin:0;color:var(--soot);font-size:var(--text-sm);line-height:1.5}.book-tag-color-0{--book-tag-color: #8b3a2b;--book-tag-background: #f5e3dc}.book-tag-color-1{--book-tag-color: #346b48;--book-tag-background: #dfeee4}.book-tag-color-2{--book-tag-color: #315f83;--book-tag-background: #dfeaf2}.book-tag-color-3{--book-tag-color: #76528a;--book-tag-background: #ece3f1}.book-tag-color-4{--book-tag-color: #8a5a1f;--book-tag-background: #f3e8d3}.book-tag-color-5{--book-tag-color: #8a3e62;--book-tag-background: #f2dfe8}.book-tag-color-6{--book-tag-color: #376f70;--book-tag-background: #dceced}.book-tag-color-7{--book-tag-color: #615846;--book-tag-background: #e9e5dc}.book-grid{display:grid;grid-template-columns:1fr;gap:1rem}.book-card{display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.15rem;border:1px solid var(--border-burnt);border-radius:var(--radius-md);background:var(--cream);box-shadow:var(--elev-1)}.book-card-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.book-card-title{min-width:0}.book-card-heading h2{margin:0;font-size:var(--text-xl);color:var(--char)}.book-author{margin:.15rem 0 0;color:var(--soot);font-size:var(--text-sm)}.book-card-signals{display:flex;align-items:center;gap:.4rem;flex-shrink:0}.book-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none}.book-tags .chip{min-height:26px;padding:0 .6rem;font-size:var(--text-xs)}.book-summary p{color:var(--smoke);font-size:var(--text-body);line-height:1.55}.book-reason,.book-saved-review{padding:.75rem .9rem;border-left:3px solid var(--gold);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--parchment)}.book-reason h3,.book-saved-review h3,.publication-outlook h3{margin:0 0 .3rem;font-family:inherit;font-size:var(--text-sm);font-weight:600;letter-spacing:0;color:var(--smoke)}.book-reason p,.book-saved-review p,.publication-outlook p{margin:0;color:var(--ash);font-size:var(--text-body);line-height:1.5;white-space:pre-wrap}.book-saved-review{border-left-color:var(--state-ok-mark)}.book-review-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.book-rating{color:var(--worn);letter-spacing:.06em;font-size:var(--text-base)}.book-rating .filled,.book-rating-input .selected{color:var(--blaze)}.book-owner-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:.8rem;padding-top:.75rem;border-top:1px dashed var(--border-burnt)}.publication-details{display:flex;flex-direction:column;gap:.6rem}.publication-outlook{padding:.6rem .9rem;border-left:3px solid var(--state-info-mark);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--parchment)}.publication-outlook-heading{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem}.publication-outlook-heading h3{margin:0}.publication-subscriptions summary{cursor:pointer;font-size:var(--text-sm);font-weight:600;color:var(--ember-deep)}.publication-subscriptions ul{list-style:none;padding:0;margin:.25rem 0 0}.publication-subscription{padding:.6rem 0;border-bottom:1px solid var(--border-faint)}.publication-subscription:last-child{border-bottom:none}.publication-subscription-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.publication-subscription p{margin:.2rem 0;font-size:var(--text-sm);color:var(--smoke);overflow-wrap:anywhere}.publication-verified{color:var(--soot)}.book-review-editor{border-top:1px dashed var(--border-burnt);padding-top:.75rem}.book-review-editor summary{cursor:pointer;color:var(--ember-deep);font-size:var(--text-sm);font-weight:600}.book-review-editor form{display:flex;flex-direction:column;gap:.8rem;margin-top:.8rem}.book-rating-input{display:flex;gap:.3rem;margin:0;padding:0;border:0}.book-rating-input legend{margin-bottom:.2rem;color:var(--smoke);font-size:var(--text-xs);font-weight:600}.book-rating-input label{cursor:pointer;color:var(--worn);font-size:1.6rem;line-height:1}.book-rating-input input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.book-rating-input label:focus-within{outline:2px solid var(--ember);outline-offset:2px;border-radius:var(--radius-sm)}.book-writeup-field textarea{resize:vertical;font-weight:400}@media(max-width:560px){.book-card-heading,.book-owner-controls{display:flex;flex-direction:column;align-items:stretch}.book-card-signals{justify-content:flex-start}}@media(min-width:900px){.book-grid{grid-template-columns:repeat(2,1fr)}}
