:root{--color-backdrop:#181919;--color-surface:#202123;--color-sidebar:#1c1d1e;--color-surface-container-lowest:#1a1b1c;--color-surface-container-low:#1a1b1c;--color-surface-container:#202123;--color-surface-container-high:#26282a;--color-surface-container-highest:#2c2e30;--color-surface-bright:#303234;--color-primary:#5184e2;--color-primary-dim:#3f68b8;--color-secondary:#5184e2;--color-secondary-container:#2a3a55;--color-tertiary:#6f9bf0;--color-on-surface:#b6b5b1;--color-on-surface-dim:#84837f;--color-outline:#36373a;--color-outline-variant:#2a2b2d;--color-outline-focus:#1f216b;--color-running:#5cb87a;--color-stopped:#e0726f;--color-warning:#d9a441;--shadow-card:0 10px 30px -10px #000000b3, 0 4px 12px -4px #00000080;--shadow-btn:0 6px 16px -2px #0009;--radius-card:.75rem;--radius-control:.5rem;--radius-pill:9999px;--transition:background-color .15s ease, color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease}*{box-sizing:border-box}html,body,#root{height:100%}body{background-color:var(--color-backdrop);color:var(--color-on-surface);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}a{color:var(--color-secondary);text-decoration:none}.sidebar{background:var(--color-sidebar);z-index:5;flex-direction:column;flex-shrink:0;gap:.5rem;width:240px;height:100vh;padding:1rem .75rem;transition:width .15s;display:flex;position:sticky;top:0;box-shadow:4px 0 18px -4px #0000008c}.sidebar--collapsed{width:68px}.sidebar__brand{align-items:center;min-height:3rem;padding:.25rem .7rem 1rem;display:flex}.sidebar--collapsed .sidebar__brand{justify-content:center;padding-inline:0}.sidebar__brand-mark{color:var(--color-on-surface);font-family:Georgia,Times New Roman,serif;font-size:1.5rem;font-weight:700}.sidebar__brand-text{flex-direction:column;line-height:1.15;display:flex}.sidebar__brand-name{color:var(--color-on-surface);font-family:Georgia,Times New Roman,serif;font-size:1.3rem;font-weight:700}.sidebar__brand-sub{color:var(--color-on-surface-dim);letter-spacing:.02em;font-size:.72rem}.sidebar__nav{flex-direction:column;flex:1;gap:.25rem;display:flex}.sidebar__spacer{flex:1}.sidebar__link{border-radius:var(--radius-control);color:var(--color-on-surface-dim);white-space:nowrap;transition:var(--transition);align-items:center;gap:.75rem;padding:.6rem .75rem;font-size:.9rem;font-weight:600;display:flex;overflow:hidden}.sidebar__link:hover{color:var(--color-on-surface);background:var(--color-surface-container-high)}.sidebar__link--active{color:var(--color-primary);background:color-mix(in oklab, var(--color-primary) 12%, transparent)}.sidebar__icon{flex-shrink:0}.sidebar--collapsed .sidebar__link{justify-content:center;padding-inline:0}.sidebar__toggle{background:var(--color-surface-container);border-radius:var(--radius-control);color:var(--color-on-surface-dim);cursor:pointer;box-shadow:var(--shadow-card);transition:var(--transition);border:none;align-items:center;gap:.75rem;padding:.6rem .75rem;font-size:.85rem;font-weight:600;display:flex}.sidebar__toggle:hover{color:var(--color-on-surface);background:var(--color-surface-container-high)}.sidebar--collapsed .sidebar__toggle{justify-content:center;padding-inline:0}.sidebar__chevron{transition:transform .15s}.sidebar__chevron--flipped{transform:rotate(180deg)}.sidebar__auth{border-radius:var(--radius-control);color:var(--color-on-surface-dim);cursor:pointer;transition:var(--transition);background:0 0;border:none;align-items:center;gap:.75rem;margin-bottom:1.5rem;padding:.6rem .75rem;font-size:.9rem;font-weight:600;text-decoration:none;display:flex}.sidebar__auth:hover{color:var(--color-on-surface);background:var(--color-surface-container-high)}.sidebar--collapsed .sidebar__auth{justify-content:center;padding-inline:0}.layout{min-height:100vh;display:flex}.layout__main{flex:1;min-width:0}.placeholder{text-align:center;max-width:1100px;margin:0 auto;padding:4rem 1.5rem}.placeholder h1{margin:0 0 .5rem;font-size:2rem}.placeholder p{color:var(--color-on-surface-dim)}.search-box{background:var(--color-surface-container-low);border:1px solid var(--color-outline-variant);border-radius:var(--radius-control);box-shadow:var(--shadow-card);transition:var(--transition);align-items:center;gap:.5rem;padding:0 .75rem;display:flex}.search-box:focus-within{border-color:var(--color-outline-focus)}.search-box__icon{color:var(--color-on-surface-dim);flex-shrink:0}.search-box__input{color:var(--color-on-surface);background:0 0;border:none;outline:none;flex:1;padding:.5rem 0;font-size:.95rem}.search-box__input::placeholder{color:var(--color-on-surface-dim)}.card{background:var(--color-surface-container);border:1px solid var(--color-outline-variant);border-radius:var(--radius-card);box-shadow:var(--shadow-card);overflow:hidden}.icon-btn{border:1px solid var(--color-outline);border-radius:var(--radius-control);background:var(--color-surface-container-high);width:2rem;height:2rem;color:var(--color-on-surface-dim);cursor:pointer;transition:var(--transition);justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{color:var(--color-on-surface);border-color:var(--color-primary);transform:scale(1.1)}.icon-btn--danger:hover{color:var(--color-stopped);border-color:var(--color-stopped)}.recipe-card{transition:var(--transition);flex-direction:column;display:flex}.recipe-card:hover{transform:translateY(-3px);box-shadow:0 16px 40px -12px #000c}.recipe-card__image{justify-content:center;align-items:center;height:130px;display:flex;position:relative}.recipe-card__image--food{background:linear-gradient(135deg, var(--color-secondary-container), var(--color-primary))}.recipe-card__image--sauce{background:linear-gradient(135deg,#3a3c40,#2a2b2d)}.recipe-card__glyph{filter:drop-shadow(0 2px 3px #000000b3);font-size:2.75rem}.recipe-card__type{letter-spacing:.04em;text-transform:uppercase;color:#e8e7e3;border-radius:var(--radius-pill);background:#00000080;padding:.15rem .5rem;font-size:.7rem;font-weight:600;position:absolute;top:.6rem;right:.6rem}.recipe-card__body{flex-direction:column;flex:1;gap:.4rem;padding:1rem 1.25rem 1.25rem;display:flex}.recipe-card__title{color:var(--color-on-surface);margin:0;font-size:1.1rem;font-weight:600}.recipe-card__summary{color:var(--color-secondary);margin:0;font-size:.85rem}.recipe-card__ingredients{color:var(--color-on-surface-dim);margin:0;font-size:.82rem}.recipe-card__footer{justify-content:space-between;align-items:center;gap:.5rem;margin-top:auto;padding-top:.5rem;display:flex}.recipe-card__meta{color:var(--color-on-surface-dim);font-size:.75rem}.recipe-card__actions{gap:.4rem;display:flex}.btn{border-radius:var(--radius-control);cursor:pointer;color:#fff;box-shadow:var(--shadow-btn);transition:var(--transition);text-shadow:0 1px 2px #0009;border:none;padding:.5rem 1.5rem;font-size:.95rem;font-weight:600}.btn:hover{filter:brightness(1.15);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.6;cursor:not-allowed;filter:none;transform:none}.btn--primary{background-color:var(--color-primary-dim);color:color-mix(in oklab, var(--color-primary) 12%, white)}.btn--secondary{background-color:var(--color-secondary-container);color:color-mix(in oklab, var(--color-secondary) 14%, white)}.btn--danger{background-color:color-mix(in oklab, var(--color-stopped) 70%, black);color:color-mix(in oklab, var(--color-stopped) 14%, white)}.btn--ghost{color:var(--color-on-surface);box-shadow:none;border:1px solid var(--color-outline);text-shadow:none;background:0 0}.btn--ghost:hover{background:var(--color-surface-container-high);filter:none}.browse{max-width:1100px;margin:0 auto;padding:2rem 1.5rem 4rem}.browse__header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:2rem;display:flex}.browse__title{margin:0;font-size:2rem;font-weight:700}.browse__subtitle{color:var(--color-on-surface-dim);margin:.25rem 0 0}.browse__header .search-box{min-width:260px}.browse__grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.25rem;display:grid}.browse__card-link{color:inherit;text-decoration:none;display:block}.browse__actions{align-items:center;gap:.75rem;display:flex}.browse__note{color:var(--color-on-surface-dim);padding:2rem 0}.browse__note--error{color:var(--color-stopped)}.detail{max-width:1100px;margin:0 auto;padding:1.5rem 1.5rem 4rem}.detail__note{color:var(--color-on-surface-dim);padding:2rem 0}.detail__note--error{color:var(--color-stopped)}.detail__topbar{justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 0 1.5rem;display:flex}.detail__breadcrumb{color:var(--color-on-surface-dim);align-items:center;gap:.5rem;font-size:.9rem;display:flex}.detail__breadcrumb a{color:var(--color-secondary)}.detail__breadcrumb span:last-child{color:var(--color-on-surface)}.detail__actions{gap:.75rem;display:flex}.detail__grid{grid-template-columns:280px 1fr;align-items:start;gap:2rem;display:grid}@media (width<=768px){.detail__grid{grid-template-columns:1fr}}.detail__aside{flex-direction:column;gap:1rem;display:flex}.detail__photo{border-radius:var(--radius-card);height:240px;color:var(--color-on-surface-dim);background-color:var(--color-surface-container);border:1px solid var(--color-outline-variant);background-image:repeating-linear-gradient(45deg,#0000,#0000 10px,#ffffff05 10px 20px);justify-content:center;align-items:center;font-size:.85rem;display:flex}.detail__meta{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.meta{flex-direction:column;gap:.25rem;padding:.75rem .9rem;display:flex}.meta__label{text-transform:uppercase;letter-spacing:.04em;color:var(--color-on-surface-dim);font-size:.68rem;font-weight:600}.meta__value{color:var(--color-on-surface);font-size:1.05rem;font-weight:600}.detail__byline{color:var(--color-on-surface-dim);border-top:1px solid var(--color-outline-variant);padding-top:.75rem;font-size:.8rem}.detail__byline p{margin:.15rem 0}.detail__main{min-width:0}.detail__title{color:var(--color-on-surface);margin:0 0 .5rem;font-family:Georgia,Times New Roman,serif;font-size:2.2rem;font-weight:700}.detail__desc{color:var(--color-on-surface-dim);margin:0 0 1.5rem;font-size:1rem;line-height:1.5}.detail__section-title{color:var(--color-on-surface);margin:1.75rem 0 .75rem;font-size:1.2rem;font-weight:700}.detail__section-sub{color:var(--color-on-surface-dim);margin-left:.5rem;font-size:.8rem;font-weight:500}.detail__ingredients{columns:2;column-gap:2rem;margin:0;padding:0;list-style:none}.detail__ingredients li{border-bottom:1px solid var(--color-outline-variant);color:var(--color-on-surface);break-inside:avoid;padding:.4rem 0}@media (width<=540px){.detail__ingredients{columns:1}}.detail__nutrition{flex-wrap:wrap;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.detail__nutrition li{background:var(--color-surface-container);border:1px solid var(--color-outline-variant);border-radius:var(--radius-control);flex-direction:column;gap:.1rem;padding:.5rem .9rem;display:flex}.detail__nutrition span{text-transform:uppercase;letter-spacing:.03em;color:var(--color-on-surface-dim);font-size:.7rem}.detail__nutrition strong{color:var(--color-on-surface)}.detail__steps{flex-direction:column;gap:.9rem;margin:0;padding-left:1.5rem;display:flex}.detail__steps li{color:var(--color-on-surface);padding-left:.25rem;line-height:1.5}.form-field{flex-direction:column;gap:.35rem;display:flex}.form-field__label{color:var(--color-on-surface-dim);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.form-field__input{background:var(--color-surface-container-low);border:1px solid var(--color-outline);border-radius:var(--radius-control);color:var(--color-on-surface);transition:var(--transition);padding:.5rem .75rem;font-size:.95rem}.form-field__input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in oklab, var(--color-primary) 20%, transparent);outline:none}.form-field__input--error{border-color:var(--color-stopped)}.form-field__error{color:var(--color-stopped);font-size:.8rem}.login{max-width:420px;margin:4rem auto;padding:0 1.5rem}.login__card{padding:2rem}.login__title{margin:0 0 .25rem;font-size:1.6rem;font-weight:700}.login__sub{color:var(--color-on-surface-dim);margin:0 0 1.5rem;font-size:.9rem}.login__form{flex-direction:column;gap:1rem;display:flex}.login__form .btn{margin-top:.5rem}.login__error{color:var(--color-stopped);margin:0;font-size:.85rem}.login__toggle{color:var(--color-secondary);cursor:pointer;background:0 0;border:none;margin-top:1rem;padding:0;font-size:.85rem}.login__hint{color:var(--color-on-surface-dim);margin-top:1rem;font-size:.8rem}.login__hint code{background:var(--color-surface-container-low);color:var(--color-on-surface);border-radius:4px;padding:.1rem .35rem}.rform{max-width:1000px;margin:0 auto;padding:1.5rem 1.5rem 4rem}.rform__note{color:var(--color-on-surface-dim);padding:2rem 0}.rform__topbar{border-bottom:1px solid var(--color-outline-variant);justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;padding-bottom:1.5rem;display:flex}.rform__title{margin:0;font-family:Georgia,Times New Roman,serif;font-size:1.8rem;font-weight:700}.rform__sub{color:var(--color-on-surface-dim);margin:.25rem 0 0;font-size:.9rem}.rform__actions{flex-shrink:0;gap:.75rem;display:flex}.rform__form{flex-direction:column;gap:1.75rem;display:flex}.rform__section{flex-direction:column;gap:1rem;display:flex}.rform__legend{text-transform:uppercase;letter-spacing:.05em;color:var(--color-on-surface-dim);border-bottom:1px solid var(--color-outline-variant);margin:0;padding-bottom:.5rem;font-size:.8rem;font-weight:700}.rform__row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;display:grid}.rform__field{flex-direction:column;gap:.35rem;display:flex}.rform__label{text-transform:uppercase;letter-spacing:.04em;color:var(--color-on-surface-dim);font-size:.8rem;font-weight:600}.rform__input{background:var(--color-surface-container-low);border:1px solid var(--color-outline);border-radius:var(--radius-control);width:100%;color:var(--color-on-surface);transition:var(--transition);padding:.5rem .75rem;font-family:inherit;font-size:.95rem}.rform__input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in oklab, var(--color-primary) 20%, transparent);outline:none}.rform__textarea{resize:vertical}.rform__photo{border:1px dashed var(--color-outline);border-radius:var(--radius-control);text-align:center;color:var(--color-on-surface-dim);padding:2rem;font-size:.9rem}.rform__ingredients{flex-direction:column;align-items:flex-start;gap:.6rem;display:flex}.rform__ingredient{align-items:center;gap:.5rem;width:100%;display:flex}.rform__ingredient .rform__input{flex:1}.rform__error{color:var(--color-stopped);margin:0;font-size:.9rem}.report{padding:1.25rem 1.5rem}.report__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:1rem;display:flex}.report__title{color:var(--color-on-surface);margin:0;font-size:1.15rem;font-weight:700}.report__generated{color:var(--color-on-surface-dim);font-size:.78rem}.report__table-wrap{overflow-x:auto}.report__table{border-collapse:collapse;width:100%;font-size:.9rem}.report__table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--color-on-surface-dim);border-bottom:1px solid var(--color-outline);white-space:nowrap;padding:.5rem .75rem;font-size:.72rem;font-weight:600}.report__table td{border-bottom:1px solid var(--color-outline-variant);color:var(--color-on-surface);padding:.6rem .75rem}.report__table tbody tr:hover{background:var(--color-surface-container-high)}.report__table tbody tr:last-child td{border-bottom:none}.report__empty{color:var(--color-on-surface-dim);text-align:center;padding:1.5rem}.reports{max-width:1100px;margin:0 auto;padding:2rem 1.5rem 4rem}.reports__header{margin-bottom:1.5rem}.reports__title{margin:0;font-size:2rem;font-weight:700}.reports__subtitle{color:var(--color-on-surface-dim);margin:.25rem 0 0}.reports__stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.stat{flex-direction:column;gap:.25rem;padding:1.1rem 1.25rem;display:flex}.stat__label{text-transform:uppercase;letter-spacing:.04em;color:var(--color-on-surface-dim);font-size:.72rem;font-weight:600}.stat__value{color:var(--color-on-surface);font-size:1.6rem;font-weight:700}.stat__sub{color:var(--color-on-surface-dim);font-size:.78rem}.reports__list{flex-direction:column;gap:1.5rem;display:flex}.reports__note{color:var(--color-on-surface-dim);padding:2rem 0}.reports__note--error{color:var(--color-stopped)}.settings{max-width:700px;margin:0 auto;padding:2rem 1.5rem 4rem}.settings__header{margin-bottom:1.5rem}.settings__title{margin:0;font-size:2rem;font-weight:700}.settings__subtitle{color:var(--color-on-surface-dim);margin:.25rem 0 0}.settings__note{color:var(--color-on-surface-dim)}.settings__card{margin-bottom:1.25rem;padding:1.5rem}.settings__section{margin:0 0 1rem;font-size:1.1rem;font-weight:700}.settings__list{flex-direction:column;gap:.75rem;margin:0;display:flex}.settings__list div{border-bottom:1px solid var(--color-outline-variant);justify-content:space-between;gap:1rem;padding-bottom:.5rem;display:flex}.settings__list dt{color:var(--color-on-surface-dim);text-transform:uppercase;letter-spacing:.03em;font-size:.85rem}.settings__list dd{color:var(--color-on-surface);margin:0;font-weight:600}.settings__muted{color:var(--color-on-surface-dim);margin:0 0 .75rem;font-size:.9rem}
