@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@500;600;700&display=swap";#root{min-height:100vh}:root{--bg: #211d19;--surface: #2b251f;--surface-2: #342c24;--surface-3: #40352b;--text: #f0e9df;--muted: #b5a797;--soft: #8e7d6d;--line: rgba(225,203,177,.13);--accent: #d6a66f;--accent-dark: #a96f3f;--accent-ink: #211912;--sage: #9ba486;--danger: #d58c7c;--shadow: 0 22px 70px rgba(0,0,0,.28)}:root[data-theme=light]{--bg: #f4efe7;--surface: #fffaf2;--surface-2: #eee4d7;--surface-3: #e5d5c2;--text: #30271f;--muted: #75685b;--soft: #928273;--line: rgba(91,66,43,.15);--accent: #a96f3f;--accent-dark: #87512c;--accent-ink: #fffaf2;--sage: #788365;--danger: #a94f42;--shadow: 0 22px 70px rgba(74,52,31,.12)}.app-shell{min-height:100vh;color:var(--text);background:var(--bg);transition:background .2s,color .2s}.topbar{min-height:78px;padding:0 max(4vw,calc((100vw - 1240px)/2));display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:12px;padding:0;color:var(--text);background:none;border:0;text-align:left;flex-shrink:0}.brand-mark{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink)}.brand strong{display:block;font:600 19px Playfair Display,serif}.brand small{display:block;margin-top:2px;color:var(--muted);font-size:11px}.top-actions{display:flex;align-items:center;gap:10px}.user-email{display:flex;align-items:center;gap:7px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px}.icon-button{width:40px;height:40px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:50%;display:inline-grid;place-items:center;transition:.2s;flex-shrink:0}.icon-button:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.primary-button,.secondary-button{min-height:43px;padding:0 16px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:13px;transition:.2s}.primary-button{background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent)}.primary-button:hover{background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}.primary-button:disabled,.secondary-button:disabled{opacity:.55;cursor:wait}.secondary-button{background:var(--surface-2);color:var(--text);border:1px solid var(--line)}.text-button{display:inline-flex;align-items:center;gap:7px;padding:0;background:transparent;border:0;color:var(--muted);font-size:12px}.text-button:hover{color:var(--accent)}.home-page,.detail-page{width:min(1180px,calc(100% - 48px));margin:0 auto}.hero{min-height:365px;margin-top:30px;border:1px solid var(--line);border-radius:15px;background:linear-gradient(112deg,var(--surface) 0%,var(--surface) 60%,var(--surface-2) 100%);overflow:hidden;position:relative;display:flex;align-items:center;padding:48px 7%}.hero-copy{max-width:560px;position:relative;z-index:2}.eyebrow{margin:0 0 13px;color:var(--accent);font-size:10px;font-weight:700;letter-spacing:2px}.eyebrow-line{display:inline-block;width:23px;height:1px;background:var(--accent);vertical-align:middle;margin-right:8px}.hero h1{margin:0;font:600 clamp(38px,5vw,56px)/1.08 "Playfair Display",serif;letter-spacing:-1.2px}.hero h1 em{color:var(--accent);font-weight:500}.hero-text{max-width:425px;color:var(--muted);line-height:1.7;font-size:14px;margin:17px 0 23px}.hero-button{min-height:46px}.hero-art{position:absolute;width:410px;height:340px;right:3%;top:12px}.hero-circle{position:absolute;border:1px solid rgba(214,166,111,.25);border-radius:50%;transform:rotate(-25deg)}.circle-one{width:280px;height:280px;right:30px;top:22px}.circle-two{width:215px;height:215px;right:62px;top:54px;border-style:dashed}.hero-note{position:absolute;right:100px;top:95px;width:150px;height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;border-radius:48% 52% 49% 51%;background:var(--accent);color:#2c2016;box-shadow:0 18px 45px #0000002e;transform:rotate(8deg);font:600 20px/1.1 Playfair Display,serif;text-align:center}.hero-stamp{position:absolute;right:4px;bottom:44px;width:86px;height:86px;border:1px solid var(--sage);border-radius:50%;display:grid;place-items:center;text-align:center;color:var(--sage);font-size:11px;font-weight:700;letter-spacing:1px;transform:rotate(13deg)}.hero-leaf{position:absolute;color:var(--sage);font-size:42px}.leaf-one{top:28px;right:80px}.leaf-two{bottom:32px;right:245px;color:var(--accent)}.library-section{padding:48px 0 65px}.library-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:21px}.library-heading .eyebrow{margin-bottom:8px}.library-heading h2{margin:0;font:600 29px Playfair Display,serif}.heading-actions{display:flex;align-items:center;gap:12px}.collection-count{color:var(--muted);font-size:12px;padding-bottom:5px}.toolbar{display:flex;gap:12px;margin-bottom:24px}.search-box{height:46px;flex:1;display:flex;align-items:center;gap:10px;padding:0 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted)}.search-box input{width:100%;background:transparent;border:0;outline:0;color:var(--text);font-size:13px}.search-box input::placeholder{color:var(--soft)}.filter-wrap{height:46px;display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--line);border-radius:8px;color:var(--muted);background:var(--surface)}.filter-wrap select{border:0;outline:0;background:transparent;color:var(--text);font-size:13px;min-width:110px}.filter-wrap option,.field select option{background:var(--surface);color:var(--text)}.recipe-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:21px}.recipe-card{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:11px;background:var(--surface);transition:transform .2s,border-color .2s}.recipe-card:hover{transform:translateY(-3px);border-color:#d6a66f73}.card-image-button{width:100%;height:205px;padding:0;border:0;background:var(--surface-2);display:block;position:relative;overflow:hidden}.card-image{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}.recipe-card:hover .card-image{transform:scale(1.035)}.image-placeholder{width:100%;height:100%;min-height:145px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:9px;color:var(--soft);background:repeating-linear-gradient(135deg,var(--surface-2),var(--surface-2) 12px,var(--surface-3) 12px,var(--surface-3) 13px)}.image-placeholder span{font-size:11px}.category-pill,.image-label{position:absolute;left:13px;top:13px;padding:6px 10px;border-radius:30px;background:#211d19d6;color:#f4dfc5;font-size:10px}.card-content{padding:16px 17px 17px}.card-title-row{display:flex;align-items:start;justify-content:space-between;gap:10px}.card-title{padding:0;border:0;background:transparent;color:var(--text);text-align:left;font:600 19px/1.25 Playfair Display,serif}.card-title:hover{color:var(--accent)}.card-heart{width:32px;height:32px;flex:0 0 auto;border:0;background:transparent;color:var(--muted)}.is-favorite{color:#d98778!important}.card-description{min-height:37px;margin:8px 0 15px;color:var(--muted);font-size:12px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-meta,.meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:14px;color:var(--muted);font-size:11px}.card-meta span,.meta-row span{display:inline-flex;align-items:center;gap:6px}.card-meta svg,.meta-row svg{color:var(--accent)}.empty-state{min-height:250px;border:1px dashed var(--line);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--muted)}.empty-icon{width:60px;height:60px;display:grid;place-items:center;border-radius:50%;background:var(--surface-2);color:var(--accent)}.empty-state h3{margin:17px 0 5px;font:600 22px Playfair Display,serif;color:var(--text)}.empty-state p{max-width:390px;margin:0 0 19px;font-size:13px;line-height:1.6}.invites-panel{margin-top:22px;padding:18px 20px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.invites-title{display:flex;align-items:center;gap:11px;color:var(--accent);margin-bottom:12px}.invites-title strong,.invites-title small{display:block}.invites-title strong{color:var(--text);font-size:13px}.invites-title small{color:var(--muted);font-size:11px;margin-top:3px}.invite-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 0;border-top:1px solid var(--line)}.invite-row strong,.invite-row small{display:block}.invite-row strong{font-size:13px}.invite-row small{font-size:11px;color:var(--muted);margin-top:4px}.compact-button{min-height:35px;padding:0 12px;font-size:11px}.detail-page{padding-top:25px;padding-bottom:60px}.back-button{display:inline-flex;align-items:center;gap:7px;padding:0;background:transparent;border:0;color:var(--muted);font-size:12px}.back-button:hover{color:var(--accent)}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 255px;gap:35px;margin-top:23px}.detail-main{min-width:0}.detail-image-wrap{height:340px;overflow:hidden;border-radius:12px;background:var(--surface-2);position:relative}.detail-image{width:100%;height:100%;object-fit:cover}.detail-placeholder{height:100%}.detail-heading{display:flex;justify-content:space-between;align-items:start;gap:20px;padding:26px 0 17px}.detail-heading .eyebrow{margin-bottom:9px}.detail-heading h1{margin:0;font:600 clamp(32px,4vw,43px)/1.12 "Playfair Display",serif}.detail-description{color:var(--muted);font-size:14px;line-height:1.7;margin:12px 0 0}.meta-row{padding-bottom:22px;border-bottom:1px solid var(--line);font-size:12px}.recipe-section{padding:25px 0;border-bottom:1px solid var(--line)}.recipe-section h2{margin:0 0 17px;font:600 25px Playfair Display,serif}.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.section-heading h2{margin-bottom:14px}.muted{color:var(--muted);font-size:11px}.servings-control{display:flex;align-items:center;gap:10px;margin-bottom:12px;color:var(--muted);font-size:12px}.icon-button.small{width:29px;height:29px}.ingredient-list{list-style:none;padding:0;margin:0}.ingredient-list li{display:flex;justify-content:space-between;gap:15px;padding:12px 13px;border-bottom:1px solid var(--line);font-size:13px}.ingredient-list li:nth-child(odd){background:var(--surface)}.ingredient-list strong{color:var(--accent);white-space:nowrap}.steps-list{list-style:none;padding:0;margin:0;display:grid;gap:17px}.steps-list li{display:flex;align-items:start;gap:13px}.step-number,.step-editor-number{flex:0 0 auto;width:29px;height:29px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);color:var(--accent);font:600 13px Playfair Display,serif}.steps-list p{margin:3px 0 0;color:var(--muted);font-size:13px;line-height:1.7}.detail-aside{padding-top:3px}.aside-card{padding:19px;border:1px solid var(--line);border-radius:10px;background:var(--surface);position:sticky;top:100px}.aside-card .eyebrow{margin-bottom:15px}.aside-action{width:100%;display:flex;align-items:center;gap:10px;padding:12px 0;border:0;border-top:1px solid var(--line);background:transparent;color:var(--text);text-align:left;font-size:12px}.aside-action:hover{color:var(--accent)}.danger-action{color:var(--danger)}.share-list-card{position:static;margin-top:13px}.share-status{padding:10px 0;border-top:1px solid var(--line);font-size:11px}.share-status span,.share-status small{display:block}.share-status small{color:var(--muted);margin:4px 0}.danger-text{color:var(--danger)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;justify-content:center;align-items:flex-start;padding:22px 14px;overflow-y:auto;background:#0c0a08c2;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.editor-modal,.share-modal{width:min(760px,100%);margin:auto;border:1px solid var(--line);border-radius:13px;background:var(--bg);box-shadow:var(--shadow)}.share-modal{width:min(500px,100%)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:22px 25px 17px;border-bottom:1px solid var(--line)}.modal-header .eyebrow{margin-bottom:5px}.modal-header h2{margin:0;font:600 27px Playfair Display,serif}.recipe-form{padding:21px 25px 24px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:11px}.field>span{color:var(--text);font-weight:600}.full-field{grid-column:1/-1}.field input,.field textarea,.field select,.ingredient-row input,.step-editor-row textarea{width:100%;min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:7px;outline:0;background:var(--surface);color:var(--text);font-size:12px;resize:vertical}.field input:focus,.field textarea:focus,.field select:focus,.ingredient-row input:focus,.step-editor-row textarea:focus{border-color:var(--accent)}.field input::placeholder,.field textarea::placeholder,.ingredient-row input::placeholder,.step-editor-row textarea::placeholder{color:var(--soft)}.form-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:24px 0 12px;padding-bottom:9px;border-bottom:1px solid var(--line)}.form-section-heading h3{margin:0;font:600 19px Playfair Display,serif}.form-section-heading span{color:var(--soft);font-size:10px}.photo-upload{display:flex;align-items:center;gap:17px;min-height:105px;padding:12px;border:1px dashed var(--line);border-radius:8px;background:var(--surface)}.photo-empty{width:125px;min-height:82px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;border-radius:6px;background:var(--surface-2);color:var(--soft);text-align:center;font-size:9px;overflow-wrap:anywhere}.photo-empty small{font-size:9px;padding:0 5px}.photo-buttons{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ingredient-editor,.steps-editor{display:grid;gap:9px}.ingredient-row{display:grid;grid-template-columns:minmax(0,1fr) 105px 105px 34px;gap:7px}.ingredient-row input{padding:10px}.remove-row{width:32px;height:36px;border:0;background:transparent;color:var(--soft)}.remove-row:hover{color:var(--danger)}.add-line-button{width:fit-content;display:inline-flex;align-items:center;gap:6px;padding:7px 0;border:0;background:transparent;color:var(--accent);font-size:12px;font-weight:600}.step-editor-row{display:grid;grid-template-columns:30px minmax(0,1fr) 34px;align-items:start;gap:8px}.step-editor-number{margin-top:5px}.form-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}.form-footer>div{display:flex;gap:9px}.required-note{color:var(--soft);font-size:10px}.share-form{padding:22px 25px 24px;display:grid;gap:16px}.share-form>p{margin:0;line-height:1.6}.share-info{display:flex;align-items:start;gap:9px;padding:12px;border-radius:8px;background:var(--surface-2);color:var(--muted);font-size:11px;line-height:1.5}.share-info svg{flex-shrink:0;color:var(--accent)}.auth-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 16px;background:radial-gradient(ellipse at 50% 0%,var(--surface-2),var(--bg) 65%)}.auth-card{width:min(440px,100%);padding:30px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow)}.auth-brand{display:flex;align-items:center;gap:12px}.auth-brand strong{display:block;font:600 20px Playfair Display,serif}.auth-brand small{display:block;margin-top:3px;color:var(--muted);font-size:11px}.auth-intro{margin:32px 0 22px}.auth-intro .eyebrow{margin-bottom:9px}.auth-intro h1{margin:0;font:600 34px Playfair Display,serif}.auth-intro p:last-child{color:var(--muted);font-size:13px;line-height:1.6}.auth-form{display:grid;gap:15px}.input-with-icon{display:flex;align-items:center;gap:9px;padding:0 11px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--muted)}.input-with-icon input{flex:1;min-width:0;padding:12px 0;border:0;outline:0;background:transparent;color:var(--text);font-size:13px}.input-with-icon input::placeholder{color:var(--soft)}.password-toggle{padding:4px;border:0;background:transparent;color:var(--muted)}.forgot-link{justify-self:end;margin-top:-7px}.auth-submit{width:100%;margin-top:3px}.auth-switch{margin-top:21px;padding-top:17px;border-top:1px solid var(--line);text-align:center;color:var(--muted);font-size:12px}.auth-switch button{padding:0;border:0;background:transparent;color:var(--accent);font-weight:600}.auth-footnote{margin:17px 0 0;color:var(--soft);font-size:11px}.notice{display:flex;align-items:start;gap:8px;padding:11px;border-radius:7px;font-size:11px;line-height:1.5}.notice svg{flex-shrink:0}.error-notice{background:#d58c7c1f;color:var(--danger)}.success-notice{background:#9ba48621;color:var(--sage)}.loading-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;background:var(--bg);color:var(--muted);font-size:12px}.loading-mark{width:52px;height:52px;display:grid;place-items:center;border-radius:15px;background:var(--accent);color:var(--accent-ink)}.toast{position:fixed;z-index:50;bottom:22px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:9px;max-width:calc(100% - 30px);padding:12px 17px;border:1px solid var(--line);border-radius:9px;background:var(--surface-3);color:var(--text);box-shadow:var(--shadow);font-size:12px}.toast svg{color:var(--accent);flex:0 0 auto}.toast-error svg{color:var(--danger)}.footer{min-height:62px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(4vw,calc((100vw - 1180px)/2));color:var(--soft);font-size:11px}.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}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:850px){.hero-art{right:-100px;opacity:.58}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-layout{grid-template-columns:minmax(0,1fr)}.detail-aside{padding-top:0}.aside-card{position:static}}@media(max-width:600px){.topbar{min-height:66px;padding:0 13px}.brand-mark{width:36px;height:36px}.brand strong{font-size:16px}.brand small{font-size:9px}.top-actions{gap:6px}.user-email{display:none}.top-add{min-height:37px;padding:0 10px;font-size:11px}.top-actions>.icon-button{width:36px;height:36px}.home-page,.detail-page{width:calc(100% - 30px)}.hero{min-height:330px;margin-top:14px;padding:32px 22px}.hero h1{font-size:39px}.hero-text{max-width:300px;font-size:12px}.hero-art{right:-215px;top:5px;opacity:.25}.library-section{padding:35px 0 48px}.library-heading h2{font-size:23px}.collection-count{font-size:10px}.toolbar{flex-direction:column}.filter-wrap{width:100%}.filter-wrap select{flex:1}.recipe-grid{grid-template-columns:1fr;gap:14px}.card-image-button{height:205px}.footer{padding:0 15px;font-size:9px}.detail-image-wrap{height:230px}.detail-heading h1{font-size:32px}.modal-backdrop{padding:8px}.editor-modal,.share-modal{border-radius:10px}.modal-header{padding:17px}.recipe-form,.share-form{padding:16px}.form-grid{grid-template-columns:1fr}.full-field{grid-column:auto}.ingredient-row{grid-template-columns:minmax(0,1fr) 70px 65px 27px;gap:4px}.ingredient-row input{padding:9px 6px;font-size:10px}.remove-row{width:27px}.form-footer{align-items:flex-start;flex-direction:column}.form-footer>div{width:100%}.form-footer>div button{flex:1}.auth-card{padding:23px}.invite-row{align-items:flex-start}.invite-row .primary-button{flex-shrink:0}}:root{font-family:DM Sans,sans-serif;color:#f0e9df;background:#211d19;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-weight:400}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:#b77d4e;color:#fff}
