@import"https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,500;0,9..144,700;1,9..144,300;1,9..144,500&family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400&display=swap";*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #faf6f1;--bg2: #f3ece3;--bg3: #ebe3d7;--text: #2c1810;--text2: #5a4030;--text3: #8a7060;--accent: #c44b2b;--accent2: #d4713a;--accent-light: #fceee8;--green: #4a7c59;--border: #ddd0c0;--card: #fffcf8;--shadow: 0 2px 12px rgba(44, 24, 16, .08);--radius: 12px;--font-display: "Fraunces", serif;--font-body: "DM Sans", sans-serif}html,body,#root{height:100%;background:var(--bg);color:var(--text);font-family:var(--font-body)}input,textarea,select,button{font-family:var(--font-body)}button{cursor:pointer;border:none;background:none}.app{min-height:100vh;display:flex;flex-direction:column}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;background:linear-gradient(145deg,#faf6f1,#f3ece3,#ebe3d7)}.auth-card{background:var(--card);border-radius:20px;padding:48px 40px;max-width:420px;width:100%;box-shadow:0 8px 40px #2c18101f;text-align:center}.auth-card h1{font-family:var(--font-display);font-size:2.4rem;font-weight:700;color:var(--accent);margin-bottom:4px;letter-spacing:-.5px}.auth-card .dedication{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:1.05rem;color:var(--text2);margin-bottom:32px}.home-dedication{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:1rem;color:var(--text3);text-align:center;margin-bottom:16px}.auth-card .tagline{color:var(--text2);font-size:.85rem;margin-bottom:24px;line-height:1.5}.auth-input{width:100%;padding:14px 16px;border:1.5px solid var(--border);border-radius:10px;font-size:.95rem;margin-bottom:12px;background:var(--bg);transition:border .2s;outline:none}.auth-input:focus{border-color:var(--accent)}.auth-input-hinted{margin-bottom:4px}.auth-hint{font-size:.8rem;color:var(--text3);text-align:left;margin:0 0 12px 4px}.auth-btn{width:100%;padding:14px;background:var(--accent);color:#fff;border-radius:10px;font-size:1rem;font-weight:600;margin-top:8px;transition:background .2s}.auth-btn:hover{background:#a8391f}.auth-btn:disabled{opacity:.6;cursor:not-allowed}.auth-toggle{margin-top:20px;font-size:.85rem;color:var(--text3)}.auth-toggle span{color:var(--accent);font-weight:600;cursor:pointer}.auth-toggle span:hover{text-decoration:underline}.auth-error{color:#c44b2b;font-size:.85rem;margin-bottom:8px;background:var(--accent-light);padding:8px 12px;border-radius:8px}.auth-success{color:#2a5a2a;font-size:.85rem;margin-bottom:8px;background:#e8f5e8;padding:8px 12px;border-radius:8px}.toast-container{position:fixed;top:16px;right:16px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:400px;width:calc(100% - 32px)}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:10px;font-size:.88rem;line-height:1.4;box-shadow:0 4px 20px #0000001f;animation:toast-in .3s ease}.toast-success{background:#2a5a2a;color:#fff}.toast-error{background:#c44b2b;color:#fff}.toast-info{background:var(--text);color:#fff}.toast-icon{width:22px;height:22px;border-radius:50%;background:#fff3;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.toast-msg{flex:1}.toast-close{color:#fff9;font-size:.8rem;flex-shrink:0;padding:4px}.toast-close:hover{color:#fff}@keyframes toast-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.header{background:var(--card);border-bottom:1px solid var(--border);padding:0 24px;display:flex;align-items:center;justify-content:space-between;height:64px;position:sticky;top:0;z-index:100}.header-logo{font-family:var(--font-display);font-size:1.4rem;font-weight:700;color:var(--accent);display:flex;align-items:center;gap:8px;flex:1}.header-nav{display:flex;gap:8px;align-items:center}.header-nav button{padding:8px 16px;border-radius:8px;font-size:.85rem;font-weight:500;color:var(--text2);transition:all .2s}.header-nav button:hover{background:var(--bg2)}.header-nav button.active{background:var(--accent-light);color:var(--accent);font-weight:600}.header-user{display:flex;align-items:center;gap:12px;flex:1;justify-content:flex-end}.header-user .avatar{width:36px;height:36px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem}.header-user .user-menu{position:relative}.user-dropdown{position:absolute;right:0;top:44px;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:8px;box-shadow:var(--shadow);min-width:180px;z-index:200}.user-dropdown button{display:block;width:100%;text-align:left;padding:10px 14px;border-radius:6px;font-size:.85rem;color:var(--text2)}.user-dropdown button:hover{background:var(--bg2)}.main{flex:1;max-width:1200px;width:100%;margin:0 auto;padding:24px}.categories{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}.cat-tab{padding:8px 18px;border-radius:20px;font-size:.85rem;font-weight:500;color:var(--text3);background:var(--bg2);transition:all .2s;border:1.5px solid transparent}.cat-tab:hover{border-color:var(--border)}.cat-tab.active{background:var(--accent);color:#fff}.search-bar{position:relative;margin-bottom:24px}.search-bar input{width:100%;padding:12px 16px 12px 44px;border:1.5px solid var(--border);border-radius:10px;font-size:.95rem;background:var(--card);outline:none}.search-bar input:focus{border-color:var(--accent)}.search-bar svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--text3)}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.recipe-card{background:var(--card);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;transition:all .25s;cursor:pointer}.recipe-card:hover{transform:translateY(-3px);box-shadow:0 6px 24px #2c18101a}.recipe-card-img{height:140px;background:var(--bg3);display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:2.5rem;position:relative;overflow:hidden}.recipe-card-img img{width:100%;height:100%;object-fit:cover}.recipe-card-body{padding:16px 20px 20px}.recipe-card-body h3{font-family:var(--font-display);font-size:1.15rem;font-weight:600;margin-bottom:6px;color:var(--text)}.recipe-card-body p{font-size:.82rem;color:var(--text3);line-height:1.45;margin-bottom:12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-meta{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.meta-tag{font-size:.75rem;padding:4px 10px;border-radius:12px;background:var(--bg2);color:var(--text2)}.meta-tag.contributor{background:var(--accent-light);color:var(--accent);display:flex;align-items:center;gap:5px}.meta-tag.contributor.clickable{cursor:pointer;transition:box-shadow .15s}.meta-tag.contributor.clickable:hover{box-shadow:inset 0 0 0 1.5px var(--accent)}.avatar-initial{border-radius:50%;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0}.author-link{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.author-link:hover{color:var(--accent);text-decoration:underline}.meta-pill.author-pill{display:flex;align-items:center;gap:6px;cursor:pointer;transition:box-shadow .15s}.meta-pill.author-pill:hover{box-shadow:inset 0 0 0 1.5px var(--accent);color:var(--accent)}.meta-tag.fork{background:#e8f0e8;color:var(--green);font-style:italic}.recipe-detail{max-width:800px;margin:0 auto}.detail-back{display:inline-flex;align-items:center;gap:6px;color:var(--text3);font-size:.9rem;margin-bottom:20px;padding:6px 0}.detail-back:hover{color:var(--accent)}.detail-header{margin-bottom:28px}.detail-header h1{font-family:var(--font-display);font-size:2rem;font-weight:700;margin-bottom:8px}.detail-header .desc{color:var(--text2);font-size:.95rem;line-height:1.5;margin-bottom:16px}.detail-meta{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.detail-meta .meta-pill{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--text2);background:var(--bg2);padding:6px 14px;border-radius:20px}.fork-banner{background:#e8f5e8;border:1px solid #c0dcc0;border-radius:10px;padding:14px 18px;margin-bottom:20px;font-size:.85rem;color:#2a5a2a;display:flex;align-items:center;gap:8px}.fork-banner span.link{color:var(--green);font-weight:600;cursor:pointer;text-decoration:underline}.detail-section{margin-bottom:28px}.detail-section h2{font-family:var(--font-display);font-size:1.2rem;font-weight:600;margin-bottom:14px;padding-bottom:8px;border-bottom:2px solid var(--bg3)}.ingredient-list{list-style:none}.ingredient-list li{padding:8px 0;border-bottom:1px dashed var(--bg3);font-size:.9rem;color:var(--text2);display:flex;align-items:center;gap:10px}.ingredient-list li:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0}.step-list{list-style:none;counter-reset:steps}.step-list li{counter-increment:steps;padding:12px 0 12px 44px;border-bottom:1px solid var(--bg3);font-size:.9rem;color:var(--text2);line-height:1.55;position:relative}.step-list li:before{content:counter(steps);position:absolute;left:0;top:12px;width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700}.detail-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.detail-photos .photo{border-radius:10px;overflow:hidden;aspect-ratio:4/3;background:var(--bg3)}.detail-photos .photo a{display:block;width:100%;height:100%}.detail-photos .photo img{width:100%;height:100%;object-fit:cover;display:block}.action-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}.action-btn{display:inline-flex;align-items:center;gap:6px;padding:10px 18px;border-radius:10px;font-size:.85rem;font-weight:600;transition:all .2s}.action-btn.primary{background:var(--accent);color:#fff}.action-btn.primary:hover{background:#a8391f}.action-btn.primary:disabled{opacity:.6;cursor:not-allowed}.action-btn.secondary{background:var(--bg2);color:var(--text2);border:1px solid var(--border)}.action-btn.secondary:hover{background:var(--bg3)}.form-page{max-width:700px;margin:0 auto}.form-page h1{font-family:var(--font-display);font-size:1.8rem;font-weight:700;margin-bottom:24px}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:.85rem;font-weight:600;color:var(--text2);margin-bottom:6px}.form-group input,.form-group textarea,.form-group select{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:10px;font-size:.9rem;background:var(--card);outline:none}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--accent)}.form-group textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-list-input{display:flex;gap:8px;margin-bottom:8px}.form-list-input input{flex:1}.form-list-input button{padding:8px 14px;background:var(--bg3);border-radius:8px;color:var(--text3);font-size:.85rem}.form-list-input button:hover{background:var(--border)}.form-items{margin-top:8px}.form-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--bg);border-radius:8px;margin-bottom:6px;font-size:.85rem}.form-item button{color:var(--text3);font-size:.8rem}.form-item button:hover{color:var(--accent)}.form-item-actions{display:flex;gap:2px;align-items:center;flex-shrink:0}.form-item-actions button{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:.75rem;color:var(--text3);background:var(--bg2)}.form-item-actions button:hover{background:var(--border);color:var(--accent)}.form-item-actions button:disabled{opacity:.3;cursor:default}.form-submit{margin-top:28px}.invite-section{max-width:500px;margin:0 auto;text-align:center;padding:40px 24px}.invite-section h1{font-family:var(--font-display);font-size:1.8rem;margin-bottom:8px}.invite-section p{color:var(--text3);margin-bottom:24px;font-size:.9rem}.invite-code{background:var(--bg2);border:2px dashed var(--border);border-radius:12px;padding:20px;margin-bottom:24px;text-align:left}.invite-code .code{font-family:monospace;font-size:1.4rem;font-weight:700;color:var(--accent);letter-spacing:2px;margin-bottom:8px}.invite-code .hint{font-size:.8rem;color:var(--text3)}.photo-upload-area{border:2px dashed var(--border);border-radius:12px;padding:32px;text-align:center;color:var(--text3);font-size:.9rem;cursor:pointer;transition:all .2s}.photo-upload-area:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}.empty-state{text-align:center;padding:60px 20px;color:var(--text3)}.empty-state .icon{font-size:3rem;margin-bottom:16px}.empty-state h3{font-family:var(--font-display);font-size:1.3rem;color:var(--text2);margin-bottom:8px}.profile-page{max-width:700px;margin:0 auto}.profile-hero{display:flex;gap:28px;align-items:flex-start;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:32px;margin-bottom:28px}.profile-avatar-section{display:flex;flex-direction:column;align-items:center;gap:10px;flex-shrink:0}.profile-avatar-large{width:100px;height:100px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:2.4rem;font-weight:700;font-family:var(--font-display);position:relative;cursor:pointer;overflow:hidden;border:3px solid var(--bg3);transition:border-color .2s}.profile-avatar-large:hover{border-color:var(--accent)}.profile-avatar-large img{width:100%;height:100%;object-fit:cover}.profile-avatar-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0006;color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.4rem;opacity:0;transition:opacity .2s}.profile-avatar-large:hover .profile-avatar-overlay{opacity:1}.profile-avatar-large.static{cursor:default}.profile-avatar-large.static:hover{border-color:var(--bg3)}.member-profile{max-width:1000px;margin:0 auto}.member-profile .profile-hero{max-width:700px}.section-title{font-family:var(--font-display);font-size:1.3rem;font-weight:600;margin:8px 0 16px}.my-recipes{max-width:800px;margin:0 auto}.my-recipes-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px}.my-recipes-header h1{font-family:var(--font-display);font-size:1.8rem;font-weight:700}.my-recipes-count{color:var(--text3);font-size:.85rem;margin-bottom:16px}.my-recipe-list{list-style:none;display:flex;flex-direction:column;gap:10px;padding:0}.my-recipe-row{display:flex;align-items:center;gap:12px;padding:10px 14px 10px 10px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.my-recipe-main{flex:1;min-width:0;display:flex;align-items:center;gap:14px;text-align:left}.my-recipe-thumb{width:64px;height:64px;border-radius:10px;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:1.8rem;overflow:hidden;flex-shrink:0}.my-recipe-thumb img{width:100%;height:100%;object-fit:cover}.my-recipe-text{display:flex;flex-direction:column;gap:4px;min-width:0}.my-recipe-title{font-family:var(--font-display);font-size:1.05rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.my-recipe-main:hover .my-recipe-title{color:var(--accent)}.my-recipe-sub{font-size:.78rem;color:var(--text3)}.my-recipe-edit{flex-shrink:0}.my-recipes-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin:12px 0 16px}.my-recipes-tabs button{padding:10px 14px;font-size:.9rem;color:var(--text3);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px}.my-recipes-tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.tab-count{display:inline-block;min-width:20px;padding:1px 6px;margin-left:4px;border-radius:10px;background:var(--bg2);font-size:.72rem;text-align:center}.fav-card-btn{position:absolute;top:8px;right:8px;width:36px;height:36px;border-radius:50%;background:#ffffffeb;color:var(--text3);font-size:1.25rem;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px #2c18102e;transition:transform .15s,color .15s}.fav-card-btn:hover{transform:scale(1.1);color:var(--accent)}.fav-card-btn.saved{color:var(--accent)}.my-recipe-row .fav-card-btn{position:static;flex-shrink:0;box-shadow:none;background:var(--accent-light)}.fav-btn.saved{background:var(--accent-light);color:var(--accent);border-color:var(--accent)}.profile-avatar-actions{display:flex;gap:8px}.profile-link-btn{font-size:.78rem;color:var(--accent);font-weight:600;background:none;border:none;cursor:pointer;padding:2px 0}.profile-link-btn:hover{text-decoration:underline}.profile-link-btn.danger{color:var(--text3)}.profile-link-btn.danger:hover{color:var(--accent)}.profile-hero-info{flex:1;min-width:0}.profile-hero-info h1{font-family:var(--font-display);font-size:1.6rem;font-weight:700;margin-bottom:6px}.profile-bio-display{color:var(--text2);font-size:.9rem;line-height:1.5;margin-bottom:16px}.profile-stats-row{display:flex;gap:24px;align-items:center;flex-wrap:wrap}.profile-stat{display:flex;flex-direction:column}.profile-stat-num{font-family:var(--font-display);font-size:1.3rem;font-weight:700;color:var(--accent)}.profile-stat-label{font-size:.78rem;color:var(--text3);margin-top:2px}.profile-section{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:28px 32px;margin-bottom:20px}.profile-section h2{font-family:var(--font-display);font-size:1.15rem;font-weight:600;margin-bottom:20px;padding-bottom:10px;border-bottom:2px solid var(--bg3)}.profile-section .form-group{margin-bottom:16px}.profile-msg{font-size:.85rem;padding:10px 14px;border-radius:8px;margin-bottom:12px}.profile-msg.success{background:#e8f5e8;color:#2a5a2a}.profile-msg.error{background:var(--accent-light);color:var(--accent)}.family-note{padding:14px 16px;background:#fef9ee;border:1px solid #e8dcc0;border-left:3px solid var(--accent);border-radius:8px;margin-bottom:8px}.invite-manager{display:flex;flex-direction:column;gap:20px}.invite-create{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:8px}.invite-create label{font-weight:600;font-size:.88rem;color:var(--text2)}.invite-create-row{display:flex;gap:8px;flex-wrap:wrap}.invite-create-row .auth-input{flex:1;min-width:180px;margin-bottom:0}.invite-help{font-size:.8rem;color:var(--text3)}.invite-new{border:2px dashed var(--accent);background:var(--accent-light);border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:10px}.invite-new-head{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;font-weight:600;color:var(--accent)}.invite-dismiss{color:var(--text3);font-size:.85rem;padding:4px}.invite-new-code{font-family:monospace;font-size:1.8rem;font-weight:700;letter-spacing:4px;color:var(--text);-webkit-user-select:all;user-select:all;overflow-wrap:anywhere}.invite-new-actions{display:flex;gap:8px;flex-wrap:wrap}.code-group .admin-sub{margin-top:4px}.code-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--bg3);flex-wrap:wrap}.code-row:last-child{border-bottom:none}.code-row-main{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;min-width:0}.code-row-label{font-size:.88rem;color:var(--text2)}.code-row-actions{display:flex;gap:6px}.admin-code.used{color:var(--text3);text-decoration:line-through}.comment-photo{display:block;margin-top:8px;width:min(260px,100%);border-radius:10px;overflow:hidden;background:var(--bg3)}.comment-photo img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.comment-form{display:flex;flex-direction:column;gap:8px}.comment-form-row{display:flex;gap:8px;align-items:center}.comment-attach{width:46px;height:46px;flex-shrink:0;border-radius:10px;border:1.5px solid var(--border);background:var(--card);font-size:1.15rem;display:flex;align-items:center;justify-content:center}.comment-attach:hover{border-color:var(--accent);background:var(--accent-light)}.comment-attach:disabled,.comment-form .action-btn:disabled{opacity:.5;cursor:not-allowed}.comment-photo-preview{position:relative;width:120px;border-radius:10px;overflow:hidden;border:1px solid var(--border)}.comment-photo-preview img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.comment-photo-preview button{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;background:#0009;color:#fff;font-size:.7rem;display:flex;align-items:center;justify-content:center}.admin-page{max-width:960px;margin:0 auto}.admin-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.admin-header h1{font-family:var(--font-display);font-size:1.8rem;font-weight:700}.admin-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:24px;border-bottom:2px solid var(--bg3)}.admin-tab{padding:10px 16px;font-size:.88rem;font-weight:500;color:var(--text3);border-bottom:2px solid transparent;margin-bottom:-2px}.admin-tab:hover{color:var(--text)}.admin-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}.stat-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:4px}.stat-num{font-family:var(--font-display);font-size:2rem;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}.stat-label{font-size:.82rem;color:var(--text3)}.admin-table-wrap{background:var(--card);border:1px solid var(--border);border-radius:14px;overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:.88rem}.admin-table th{text-align:left;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text3);padding:12px 16px;border-bottom:1px solid var(--border);white-space:nowrap}.admin-table td{padding:12px 16px;border-bottom:1px solid var(--bg3);vertical-align:middle}.admin-table tr:last-child td{border-bottom:none}.row-inactive td{opacity:.5}.admin-person{display:flex;align-items:center;gap:10px}.admin-person-name{font-weight:600}.admin-muted{font-size:.78rem;color:var(--text3)}.admin-code{font-family:monospace;font-weight:700;letter-spacing:1px;color:var(--accent)}.admin-avatar-fallback{border-radius:50%;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;flex-shrink:0}.badge{display:inline-block;font-size:.72rem;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--bg2);color:var(--text2)}.badge-admin{background:var(--accent-light);color:var(--accent)}.badge-active{background:#e8f5e8;color:var(--green)}.badge-inactive{background:var(--bg3);color:var(--text3)}.admin-small-btn{font-size:.78rem;font-weight:600;padding:6px 12px;border-radius:8px;background:var(--bg2);color:var(--text2);border:1px solid var(--border);white-space:nowrap}.admin-small-btn:hover{background:var(--bg3)}.admin-small-btn.danger{color:var(--accent)}.admin-small-btn.danger:hover{background:var(--accent-light)}.admin-sub{font-family:var(--font-display);font-size:1.1rem;font-weight:600;margin:24px 0 10px}.admin-sub:first-child{margin-top:0}.mod-list{background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden}.mod-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--bg3)}.mod-item:last-child{border-bottom:none}.mod-thumb{width:44px;height:44px;border-radius:8px;object-fit:cover;flex-shrink:0}.mod-main{font-size:.88rem;color:var(--text2);overflow-wrap:anywhere}.mod-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.mod-photo{background:var(--card);border:1px solid var(--border);border-radius:12px;overflow:hidden}.mod-photo img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}.mod-photo-info{display:flex;justify-content:space-between;align-items:center;padding:8px 10px}.admin-delete-link{font-size:.78rem;font-weight:600;color:var(--accent)}@media (max-width: 600px){.admin-header h1{font-size:1.4rem}.admin-tab{padding:8px 10px;font-size:.8rem}.admin-table th,.admin-table td{padding:10px 12px}}.print-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;margin-bottom:16px}.print-option{display:inline-flex;align-items:center;gap:8px;font-size:.9rem;font-weight:500;color:var(--text2);cursor:pointer}.print-option input{width:16px;height:16px;accent-color:var(--accent)}.print-hint{flex-basis:100%;font-size:.85rem;color:var(--text3);line-height:1.5}.print-view{background:#fff;border:1px solid var(--border);border-radius:16px;padding:40px;box-shadow:var(--shadow);font-size:15px;line-height:1.5;color:var(--text)}.print-view.large{font-size:18px}.print-header{text-align:center;padding-bottom:1.2em;margin-bottom:1.4em;border-bottom:2px solid var(--text)}.print-header h1{font-family:var(--font-display);font-size:2.1em;font-weight:700;line-height:1.15}.print-byline{font-family:var(--font-display);font-style:italic;color:var(--text2);margin-top:.35em}.print-desc{max-width:36em;margin:.8em auto 0;color:var(--text2)}.print-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:.2em 0;margin-top:.9em;font-size:.82em;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text2)}.print-meta span+span:before{content:"·";margin:0 .7em;color:var(--text3)}.print-view h2{font-family:var(--font-display);font-size:1.2em;font-weight:700;margin-bottom:.5em;break-after:avoid}.print-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:2.4em}.print-ingredients{list-style:none}.print-ingredients li{position:relative;padding:.3em 0 .3em 1.6em;break-inside:avoid}.print-ingredients li:before{content:"";position:absolute;left:0;top:.65em;width:.8em;height:.8em;border:1.5px solid var(--text2);border-radius:2px}.print-steps{list-style:none;counter-reset:print-steps}.print-steps li{counter-increment:print-steps;position:relative;padding:0 0 .8em 2em;break-inside:avoid}.print-steps li:before{content:counter(print-steps) ".";position:absolute;left:0;top:-.12em;font-family:var(--font-display);font-weight:700;font-size:1.2em;color:var(--accent)}.print-notes{margin-top:1.6em;padding-top:1.2em;border-top:1px solid var(--bg3)}.print-note{padding-left:.9em;border-left:3px solid var(--accent);margin-bottom:.6em;break-inside:avoid}.print-note-author{font-style:italic;color:var(--text2);white-space:nowrap}.print-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:1.6em}.print-photos img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px;display:block;break-inside:avoid}.print-footer{margin-top:2em;text-align:center;color:var(--text3);font-size:.85em;font-style:italic;font-family:var(--font-display)}@media screen and (max-width: 600px){.print-view{padding:22px 18px}.print-columns{grid-template-columns:1fr;gap:1.4em}.print-photos{grid-template-columns:repeat(2,1fr)}}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--card);border-top:1px solid var(--border);padding:6px 0 env(safe-area-inset-bottom,8px);z-index:100;justify-content:space-around}.bottom-nav button{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.7rem;color:var(--text3);padding:6px 12px;border-radius:8px;font-weight:500}.bottom-nav button.active{color:var(--accent);font-weight:600}.bottom-nav button span{font-size:1.2rem}@media (max-width: 600px){.recipe-grid,.form-row{grid-template-columns:1fr}.header{padding:0 16px}.header-nav{display:none}.main{padding:16px 16px 80px}.auth-card{padding:32px 24px}.auth-card h1{font-size:1.8rem}.detail-header h1{font-size:1.5rem}.profile-hero{flex-direction:column;align-items:center;text-align:center;padding:24px}.profile-hero-info h1{font-size:1.3rem}.profile-stats-row{justify-content:center}.profile-section{padding:20px}.my-recipes-header h1{font-size:1.4rem}.my-recipe-thumb{width:52px;height:52px}.bottom-nav{display:flex}.bottom-nav button{padding:6px 8px}.action-btn{padding:8px 14px;font-size:.8rem}}@media print{.header,.bottom-nav,.action-row,.search-bar,.categories,.detail-back,.action-btn,.header-nav,.header-user,.photo-upload-area,.auth-input,form{display:none!important}.app{min-height:auto}.main{padding:0;max-width:100%}.recipe-detail{max-width:100%}.detail-header h1{font-size:1.6rem}.detail-meta .meta-pill{font-size:.75rem;padding:4px 10px}.detail-section{page-break-inside:avoid}.detail-section h2{font-size:1rem}.ingredient-list li{padding:4px 0;font-size:.85rem}.step-list li{padding:8px 0 8px 36px;font-size:.85rem}.step-list li:before{width:24px;height:24px;font-size:.7rem}.detail-photos{grid-template-columns:repeat(3,1fr)}.family-note{break-inside:avoid}body{background:#fff!important}.print-toolbar,.toast-container{display:none!important}.print-view{border:none;border-radius:0;box-shadow:none;padding:0;font-size:11pt;color:#000}.print-view.large{font-size:14pt}.print-header{border-bottom-color:#000}.print-byline,.print-desc,.print-meta,.print-note-author{color:#333}.print-footer{color:#666}}@page{margin:.6in}.scan-panel{background:var(--card);border:1px dashed var(--border);border-radius:14px;padding:18px 20px;margin-bottom:28px}.scan-panel-title{font-family:var(--font-display);font-size:1.1rem;font-weight:600;margin-bottom:4px}.scan-panel-help{font-size:.88rem;color:var(--text2);line-height:1.5;margin-bottom:14px}.scan-panel-actions{display:flex;gap:10px;flex-wrap:wrap}.scan-panel-hint{font-size:.78rem;color:var(--text3);margin-top:10px}.scan-paste{margin-top:14px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}.scan-paste textarea{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.9rem;line-height:1.5;resize:vertical}.scan-result{margin-top:14px;background:#e8f5e8;border:1px solid #c0dcc0;border-radius:10px;padding:12px 16px;font-size:.85rem;color:#2a5a2a;line-height:1.5;display:flex;flex-direction:column;gap:8px}.scan-keep{display:flex;align-items:center;gap:8px;font-size:.88rem;font-weight:500;cursor:pointer}.scan-keep input{width:16px;height:16px;accent-color:var(--accent);flex-shrink:0}.scan-meter{height:6px;border-radius:3px;background:var(--bg3);margin-top:8px;overflow:hidden}.scan-meter div{height:100%;background:var(--green);border-radius:3px}.scan-meter div.warn{background:var(--accent)}.scan-limits{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:14px}.scan-limits-row{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}.scan-limits-row label{display:flex;flex-direction:column;gap:6px;font-size:.82rem;font-weight:600;color:var(--text2)}.scan-limits-row input{width:150px;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.9rem}.scan-bill-note{font-size:.85rem;line-height:1.6;max-width:640px}.scan-bill-note a{color:var(--accent);font-weight:600}
