*,*:before,*:after{box-sizing:border-box}:root{--bg: #16130e;--panel: #211c15;--panel-2: #2a241b;--ink: #f4eee2;--muted: #c7bead;--faint: #83796a;--line: #332c22;--line-2: #4b4030;--accent: #e0913c;--accent-ink: #201808;--danger: #d9694a;--star: #dda02e;--success: #79a86a;--radius: 16px;--font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--head: "Bricolage Grotesque", Inter, ui-sans-serif, system-ui, sans-serif}html,body,#root{min-height:100%}body{margin:0;min-height:100vh;background:var(--bg);color:var(--ink);font-family:var(--font);line-height:1.5;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}button{cursor:pointer}.app{min-height:100vh;background:radial-gradient(circle at 88% 8%,rgba(224,145,60,.14),transparent 32rem),linear-gradient(180deg,rgba(255,255,255,.02),transparent 22rem),var(--bg);color:var(--ink)}.app--light{--bg: #fbf9f4;--panel: #ffffff;--panel-2: #f2ece0;--ink: #221e17;--muted: #625947;--faint: #8f826d;--line: #e8dfcf;--line-2: #d8cbb6;--accent-ink: #201808}.app-shell{display:flex;min-height:100vh}.rail{position:sticky;top:0;width:68px;height:100vh;padding:18px 0;border-right:1px solid var(--line);background:color-mix(in srgb,var(--bg) 88%,transparent);display:flex;flex-direction:column;align-items:center;gap:10px;flex-shrink:0}.rail__mark{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font:800 1.1rem var(--head);margin-bottom:10px}.rail__btn{width:42px;height:42px;border:0;border-radius:12px;display:grid;place-items:center;background:transparent;color:var(--faint);transition:background .16s ease,color .16s ease,transform .12s ease}.rail__btn:hover,.rail__btn:focus-visible,.rail__btn.active{background:var(--panel-2);color:var(--ink);outline:none}.rail__btn:active{transform:translateY(1px)}.rail__spacer{flex:1}.app-main{width:min(1280px,100%);margin:0 auto;padding:28px 34px 64px;min-width:0}.header{margin-bottom:22px}.header__inner{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap}.header__eyebrow{color:var(--accent);font-size:.72rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;margin-bottom:8px}.header__title{margin:0;color:var(--ink);font:800 2.25rem/.95 var(--head);letter-spacing:0}.header__tagline{margin:9px 0 0;color:var(--muted);font-size:.9rem}.header__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.header__count{color:var(--faint);font-size:.82rem;white-space:nowrap;margin-right:4px}.btn{border:0;border-radius:999px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 17px;background:var(--accent);color:var(--accent-ink);font-weight:800;font-size:.88rem;text-decoration:none;white-space:nowrap;transition:filter .16s ease,transform .12s ease,background .16s ease}.btn:hover{filter:brightness(1.08)}.btn:active{transform:translateY(1px)}.btn--secondary,.btn--ghost,.btn--outline{background:transparent;color:var(--ink);border:1px solid var(--line-2)}.btn--secondary:hover,.btn--ghost:hover,.btn--outline:hover{background:var(--panel-2);filter:none}.btn--danger{background:transparent;border:1px solid var(--danger);color:var(--danger)}.btn--danger:hover{background:color-mix(in srgb,var(--danger) 14%,transparent);filter:none}.btn--sm{min-height:34px;padding-inline:13px;font-size:.8rem}.import-file-input{display:none}.filters{margin-bottom:24px}.filters__search-row{display:flex;gap:10px;margin-bottom:12px}.filters__search{position:relative;flex:1 1 260px}.filters__search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--faint);pointer-events:none}.filters__search input{width:100%;height:46px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--ink);outline:none;padding:0 18px 0 44px;transition:border-color .16s ease,box-shadow .16s ease}.filters__search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}.filters__search input::placeholder{color:var(--faint)}.filters__controls,.filters__tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.filters__tags{margin-top:10px}.filters__select,.filters__chip,.filters__fav-toggle,.filters__clear{min-height:34px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);padding:0 13px;font-size:.8rem;font-weight:700;outline:none;transition:background .16s ease,border-color .16s ease,color .16s ease}.filters__select{background:var(--panel);color:var(--ink);padding-right:28px}.filters__chip:hover,.filters__fav-toggle:hover,.filters__clear:hover{border-color:var(--line-2);color:var(--ink);background:var(--panel-2)}.filters__chip.active,.filters__fav-toggle.active,.filters__select.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.filters__clear{margin-left:auto;color:var(--accent);border-color:transparent}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.recipe-card{position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:326px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink);box-shadow:0 16px 38px #0000002e;cursor:pointer;transition:transform .2s cubic-bezier(.2,.7,.2,1),border-color .2s ease,box-shadow .2s ease}.recipe-card:hover,.recipe-card:focus-visible{transform:translateY(-4px);border-color:var(--line-2);box-shadow:0 22px 48px #00000047;outline:none}.recipe-cover{position:relative;height:126px;padding:14px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;flex-shrink:0;background:radial-gradient(120% 90% at 76% 4%,rgba(255,255,255,.28),transparent 54%),linear-gradient(145deg,var(--cover-a, #7c2d2d),var(--cover-b, #c2492f))}.recipe-cover:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,rgba(0,0,0,.62),rgba(0,0,0,.1) 58%,transparent);pointer-events:none}.recipe-cover__top,.recipe-cover__title{position:relative;z-index:1}.recipe-cover__top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.recipe-card__source{border-radius:999px;padding:5px 10px;background:#00000057;color:#fff;font-size:.64rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.recipe-card__fav-btn,.modal__close{border:0;display:grid;place-items:center;background:#00000057;color:#fff;transition:transform .14s ease,background .14s ease,color .14s ease}.recipe-card__fav-btn{width:36px;height:36px;border-radius:50%;font-size:1rem}.recipe-card__fav-btn:hover{transform:scale(1.08);background:#0000007a}.recipe-card__fav-btn.active{color:var(--danger)}.recipe-cover__title{margin:0;color:#fff;font:800 1.18rem/1.08 var(--head);letter-spacing:0;text-shadow:0 2px 14px rgba(0,0,0,.32);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card__body{padding:14px 16px;display:flex;flex-direction:column;gap:11px;flex:1}.recipe-card__desc{margin:0;color:var(--muted);font-size:.86rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card__meta,.recipe-card__tags,.detail__tags-row,.detail__meta-row{display:flex;flex-wrap:wrap;gap:7px;align-items:center}.recipe-card__footer{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-top:12px;margin-top:auto;border-top:1px solid var(--line)}.tag,.meta-pill{display:inline-flex;align-items:center;gap:5px;border-radius:9px;background:var(--panel-2);color:var(--muted);padding:4px 9px;font-size:.74rem;font-weight:700;white-space:nowrap}.tag--easy{color:#a9d59c}.tag--medium{color:#edc67d}.tag--hard,.tag--source{color:var(--accent)}.stars{display:inline-flex;align-items:center;gap:1px}.star{width:20px;height:20px;border:0;background:transparent;color:var(--line-2);display:grid;place-items:center;padding:0;line-height:1;transition:color .14s ease,transform .14s ease}.star.filled{color:var(--star)}.star.interactive:hover{color:var(--star);transform:scale(1.16)}.stars--lg .star{width:30px;height:30px;font-size:1.35rem}.empty-state{border:1px dashed var(--line-2);border-radius:var(--radius);padding:72px 20px;text-align:center;color:var(--muted)}.empty-state__icon{width:58px;height:58px;display:grid;place-items:center;margin:0 auto 18px;border-radius:16px;background:var(--panel-2);color:var(--accent);font-size:1.8rem}.empty-state__title{margin:0 0 8px;color:var(--ink);font:800 1.25rem var(--head)}.empty-state__body{margin:0 auto 22px;max-width:340px;color:var(--muted);font-size:.9rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;padding:36px 18px;background:#080603b8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);overflow-y:auto;display:flex;align-items:flex-start;justify-content:center}.modal{position:relative;width:min(820px,100%);overflow:hidden;border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);background:var(--panel);box-shadow:0 38px 90px #00000080;animation:modal-in .24s cubic-bezier(.2,.7,.2,1)}@keyframes modal-in{0%{opacity:0;transform:translateY(16px)}}.modal__hero{position:relative;min-height:210px;padding:18px;display:flex;flex-direction:column;justify-content:space-between;background:radial-gradient(120% 90% at 76% 4%,rgba(255,255,255,.28),transparent 54%),linear-gradient(145deg,var(--cover-a, #7c2d2d),var(--cover-b, #c2492f))}.modal__hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,rgba(0,0,0,.62),rgba(0,0,0,.08) 62%,transparent)}.modal__top-bar,.modal__hero-title{position:relative;z-index:1}.modal__top-bar{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.modal>.modal__top-bar{padding:22px 30px 0}.modal>.modal__top-bar .modal__title{color:var(--ink);text-shadow:none}.modal>.modal__top-bar .modal__close{background:var(--panel-2);color:var(--ink)}.modal__title,.modal__hero-title{margin:0;color:#fff;font:800 2.1rem/1 var(--head);letter-spacing:0;text-shadow:0 2px 16px rgba(0,0,0,.34)}.modal__close{width:40px;height:40px;border-radius:50%;flex-shrink:0}.modal__close:hover{background:#0000007a}.modal__body{padding:24px 30px 30px}.modal__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:16px 30px;border-top:1px solid var(--line)}.modal__actions--right{justify-content:flex-end}.detail__meta-row{margin:18px 0 22px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.detail__stat{min-height:86px;border:1px solid var(--line);border-radius:14px;background:var(--bg);padding:13px 14px}.detail__stat-label{display:block;color:var(--muted);font-size:.66rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.detail__stat-value{display:block;margin-top:5px;color:var(--ink);font:800 1rem var(--head)}.detail__description{max-width:640px;margin:0 0 24px;color:var(--ink);font-size:.96rem}.detail__grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:30px;align-items:start}.detail__section{margin-bottom:24px}.detail__section-title,.form-section__title{margin:0 0 13px;color:var(--muted);font-size:.72rem;font-weight:900;letter-spacing:.15em;text-transform:uppercase}.detail__ingredient-list,.detail__step-list{list-style:none;padding:0;margin:0}.detail__ingredient-list li{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);color:var(--ink);font-size:.9rem}.detail__ingredient-list li:before{content:"";width:17px;height:17px;border:1.5px solid var(--line-2);border-radius:6px;margin-top:2px;flex-shrink:0}.detail__step-list{display:flex;flex-direction:column;gap:15px;counter-reset:step}.detail__step-list li{display:flex;gap:14px;counter-increment:step;color:var(--ink);font-size:.9rem}.detail__step-list li:before{content:counter(step);width:29px;height:29px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;background:var(--accent);color:var(--accent-ink);font:800 .82rem var(--head)}.detail__note-box{border:1px solid var(--line);border-radius:14px;background:var(--bg);padding:15px 17px;color:var(--ink);font-size:.9rem}.detail__source-line{color:var(--muted);font-size:.9rem}.detail__rating-row{margin-top:22px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.detail__fav-btn{min-height:38px;border:1px solid var(--line-2);border-radius:999px;background:transparent;color:var(--muted);padding:0 15px;font-weight:800}.detail__fav-btn.active{color:var(--danger);border-color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.detail__delete-confirm{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.detail__delete-confirm span{color:var(--danger);font-size:.86rem;font-weight:700}.form{display:flex;flex-direction:column;gap:24px}.form-section{display:flex;flex-direction:column;gap:14px}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-group{display:flex;flex-direction:column;gap:7px}.form-label{color:var(--muted);font-size:.72rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.form-label--required:after{content:" *";color:var(--accent)}.form-input,.form-textarea,.form-select{width:100%;border:1px solid var(--line-2);border-radius:12px;background:var(--bg);color:var(--ink);outline:none;padding:11px 13px;font-size:.9rem}.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.form-input.error,.form-textarea.error{border-color:var(--danger)}.form-textarea{resize:vertical;min-height:84px}.form-textarea--tall{min-height:128px}.form-hint,.form-error{font-size:.76rem}.form-hint{color:var(--faint)}.form-error{color:var(--danger)}.form-stars{display:flex;align-items:center;gap:2px}.form-checkbox-row{display:inline-flex;align-items:center;gap:10px;color:var(--ink);font-weight:700}.form-checkbox-row input{width:18px;height:18px;accent-color:var(--accent)}.notification{position:fixed;left:50%;bottom:24px;z-index:80;transform:translate(-50%);border:1px solid var(--line-2);border-radius:999px;background:var(--panel);color:var(--ink);padding:12px 20px;box-shadow:0 18px 42px #00000057;font-size:.88rem;font-weight:800}.notification--success{border-color:color-mix(in srgb,var(--success) 50%,var(--line))}.notification--error{border-color:color-mix(in srgb,var(--danger) 55%,var(--line));color:var(--danger)}.mobile-tabs{display:none}@media (max-width: 820px){.app-shell{display:block;padding-bottom:76px}.rail{display:none}.app-main{padding:48px 18px 32px}.header__title{font-size:1.9rem}.header__actions{width:100%;justify-content:flex-start}.recipe-grid{grid-template-columns:1fr}.recipe-cover{height:158px}.recipe-card{min-height:366px}.detail__meta-row,.detail__grid{grid-template-columns:1fr 1fr}.modal-backdrop{padding:0;align-items:stretch}.modal{width:100%;min-height:100vh;border-radius:0;border-left:0;border-right:0}.modal__body{padding:20px 20px 30px}.modal__actions{padding:14px 20px calc(18px + env(safe-area-inset-bottom))}.mobile-tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:8px 10px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--panel)}.mobile-tabs__btn{border:0;border-radius:14px;min-height:50px;background:transparent;color:var(--faint);font-size:.72rem;font-weight:800}.mobile-tabs__btn.active,.mobile-tabs__btn:hover{background:var(--panel-2);color:var(--ink)}.mobile-tabs__btn--add{background:var(--accent);color:var(--accent-ink)}}@media (max-width: 560px){.header__actions .header__count{flex-basis:100%}.filters__controls{align-items:stretch}.filters__select{flex:1 1 150px}.filters__clear{margin-left:0}.detail__meta-row,.detail__grid,.form-row{grid-template-columns:1fr}.modal__hero{min-height:230px}.modal__hero-title{font-size:1.85rem}.modal__actions .btn{flex:1 1 100%}.notification{width:calc(100% - 28px);text-align:center}}
