*,:before,:after{box-sizing:border-box;margin:0;padding:0}input,select,textarea,button{font-family:inherit;font-size:inherit}@keyframes spin{to{transform:rotate(360deg)}}:root{--berry:#b61b3c;--berry-hover:#9e1735;--wine:#7a0f2e;--plum:#4b0d1d;--navy:#0f1d2e;--charcoal:#111214;--cream-0:#fff9f2;--cream-1:#f8efe3;--cream-2:#f0e3cf;--sand:#e3c8a8;--taupe:#b89c7a;--gold:#e0aa4f;--gold-light:#f2c77a;--espresso:#1a120f;--text-body:#2a1c16;--text-muted:#6b4f3f;--cta:#ff6b4a;--cta-hover:#e85c3c;--c-bg:var(--cream-0);--c-surface:#fff;--c-border:#00000012;--c-border-solid:var(--cream-2);--c-text:var(--espresso);--c-text-muted:var(--text-muted);--c-primary:var(--berry);--c-primary-hover:var(--berry-hover);--c-error:#c0392b;--c-success:#1a7a4a;--radius:8px;--radius-lg:14px;--shadow:0 4px 24px #0f1d2e1a;--shadow-sm:0 1px 6px #0f1d2e12}body{background:var(--c-bg);color:var(--c-text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,sans-serif;line-height:1.55}.auth-wrapper{background:var(--navy);align-items:stretch;min-height:100vh;display:flex}.auth-panel-brand{background:linear-gradient(160deg, var(--plum) 0%, var(--navy) 100%);flex-direction:column;flex:1;justify-content:space-between;padding:48px;display:none;position:relative;overflow:hidden}.auth-panel-brand:before{content:"";pointer-events:none;background:radial-gradient(circle,#b61b3c26 0%,#0000 70%);border-radius:50%;width:600px;height:600px;position:absolute;top:-200px;left:-100px}@media (width>=900px){.auth-panel-brand{display:flex}}.auth-brand-logo{color:var(--gold);letter-spacing:.04em;text-transform:uppercase;font-size:18px;font-weight:800}.auth-brand-tagline{color:var(--sand);letter-spacing:.02em;margin-top:4px;font-size:13px}.auth-brand-headline{color:#fff;margin-bottom:16px;font-size:36px;font-weight:800;line-height:1.2}.auth-brand-headline span{color:var(--gold-light)}.auth-brand-sub{color:var(--sand);max-width:340px;font-size:15px;line-height:1.6}.auth-brand-pills{flex-direction:column;gap:10px;display:flex}.auth-brand-pill{color:var(--cream-1);background:#ffffff12;border:1px solid #ffffff1a;border-radius:100px;align-items:center;gap:10px;width:fit-content;padding:8px 16px;font-size:13px;display:inline-flex}.auth-brand-pill-dot{background:var(--gold);border-radius:50%;flex-shrink:0;width:7px;height:7px}.auth-panel-form{background:var(--cream-0);flex-direction:column;justify-content:center;width:100%;max-width:480px;padding:48px 40px;display:flex}@media (width<=899px){.auth-panel-form{max-width:100%}}.auth-form-header{margin-bottom:32px}.auth-form-header h2{color:var(--espresso);margin-bottom:6px;font-size:26px;font-weight:800}.auth-form-header p{color:var(--text-muted);font-size:14px}.auth-form{flex-direction:column;gap:16px;display:flex}.auth-links{color:var(--text-muted);justify-content:center;gap:8px;margin-top:20px;font-size:13px;display:flex}.auth-links a{color:var(--berry);font-weight:500;text-decoration:none}.auth-links a:hover{text-decoration:underline}.form-group{flex-direction:column;gap:5px;display:flex}.form-label{color:var(--espresso);font-size:13px;font-weight:600}.form-control{border:1.5px solid var(--cream-2);border-radius:var(--radius);color:var(--espresso);background:#fff;outline:none;width:100%;min-height:40px;padding:10px 13px;font-size:14px;line-height:1.4;transition:border-color .15s,box-shadow .15s}select.form-control{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236B4F3F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:36px}.form-control:focus{border-color:var(--berry);box-shadow:0 0 0 3px #b61b3c14}.form-control.error{border-color:var(--c-error)}.form-error{color:var(--c-error);font-size:12px}.btn{border-radius:var(--radius);cursor:pointer;letter-spacing:.01em;border:none;justify-content:center;align-items:center;gap:7px;padding:10px 18px;font-size:14px;font-weight:700;text-decoration:none;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--berry);color:#fff;box-shadow:0 2px 8px #b61b3c40}.btn-primary:hover:not(:disabled){background:var(--berry-hover);transform:translateY(-1px);box-shadow:0 4px 16px #b61b3c4d}.btn-cta{background:var(--cta);color:#fff;box-shadow:0 2px 8px #ff6b4a4d}.btn-cta:hover:not(:disabled){background:var(--cta-hover);transform:translateY(-1px)}.btn-secondary{color:var(--espresso);border:1.5px solid var(--cream-2);background:0 0}.btn-secondary:hover:not(:disabled){border-color:var(--berry);color:var(--berry)}.btn-ghost{color:var(--text-muted);background:0 0}.btn-ghost:hover:not(:disabled){color:var(--espresso);background:var(--cream-1)}.btn-full{width:100%}.btn-sm{padding:6px 12px;font-size:13px}.loading-screen{min-height:100vh;color:var(--text-muted);background:var(--navy);justify-content:center;align-items:center;font-size:14px;display:flex}.app-layout{background:var(--cream-1);min-height:100vh;display:flex}.sidebar-wrapper{z-index:100;flex-shrink:0;width:220px;transition:transform .22s;position:fixed;top:0;bottom:0;left:0;transform:translate(0)}@media (width<=768px){.sidebar-wrapper{transform:translate(-100%)}.sidebar-wrapper.open{transform:translate(0)}}.sidebar-overlay{z-index:99;background:#0f1d2e73;position:fixed;inset:0}.sidebar{background:var(--navy);flex-direction:column;width:220px;height:100%;display:flex;overflow-y:auto}.sidebar-brand{border-bottom:1px solid #ffffff12;justify-content:center;padding:24px 20px 16px;display:flex}.sidebar-logo{width:140px;display:block}.sidebar-plan-badge{border-radius:var(--radius);cursor:pointer;background:#e0aa4f1f;border:1px solid #e0aa4f40;margin:10px 12px;padding:8px 12px;transition:background .15s}.sidebar-plan-badge:hover{background:#e0aa4f2e}.sidebar-plan-badge span:first-child{color:var(--gold);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:600;display:block}.sidebar-plan-upgrade{color:var(--gold-light)!important;text-transform:none!important;letter-spacing:0!important;font-size:12px!important;font-weight:500!important}.sidebar-nav{flex-direction:column;flex:1;gap:1px;padding:8px 10px;display:flex}.sidebar-section{text-transform:uppercase;letter-spacing:.08em;color:#ffffff4d;border-top:1px solid #ffffff0f;align-items:center;margin-top:4px;padding:8px 0 0;font-size:10px;font-weight:700;display:flex}.sidebar-link{color:#ffffffa6;cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:13.5px;font-weight:500;text-decoration:none;transition:all .12s;display:flex}.sidebar-link:hover{color:#fff;background:#ffffff12}.sidebar-link.active{background:var(--berry);color:#fff;font-weight:600}.sidebar-link-locked{opacity:.5;cursor:pointer}.sidebar-link-locked:hover{opacity:.7;background:#ffffff0d}.sidebar-lock-icon{opacity:.6;margin-left:auto}.sidebar-signout{color:#fff6;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;width:calc(100% - 20px);margin:8px 10px 16px;padding:8px 10px;font-size:13px;transition:all .12s;display:flex}.sidebar-signout:hover{color:#ffffffbf;background:#ffffff0f}.sidebar-mobile-toggle{z-index:101;background:var(--navy);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:8px;display:none;position:fixed;top:14px;left:14px}@media (width<=768px){.sidebar-mobile-toggle{justify-content:center;align-items:center;display:flex}}.app-main{flex-direction:column;flex:1;min-height:100vh;margin-left:220px;display:flex}@media (width<=768px){.app-main{margin-left:0}}.app-content{flex:1;max-width:1100px;padding:32px}@media (width<=768px){.app-content{padding:64px 16px 24px}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-header-text h1{color:var(--espresso);font-size:20px;font-weight:800}.page-header-text p{color:var(--text-muted);margin-top:3px;font-size:13px}.card{border-radius:var(--radius-lg);border:1px solid var(--cream-2);background:#fff;padding:20px 24px}.card-title{color:var(--espresso);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:6px;margin-bottom:16px;font-size:13px;font-weight:700;display:flex}.form-row{gap:16px;display:grid}.form-row-2{grid-template-columns:repeat(2,1fr)}.form-row-3{grid-template-columns:repeat(3,1fr)}.form-row-4{grid-template-columns:repeat(4,1fr)}@media (width<=640px){.form-row-2,.form-row-3,.form-row-4{grid-template-columns:1fr}}.form-label-optional{color:var(--text-muted);font-size:12px;font-weight:400}.form-hint{color:var(--text-muted);margin-top:3px;font-size:12px}.tag-list{flex-wrap:wrap;gap:6px;min-height:28px;margin-bottom:10px;display:flex}.tag{background:var(--cream-1);border:1px solid var(--cream-2);color:var(--espresso);border-radius:100px;align-items:center;gap:4px;padding:3px 10px 3px 12px;font-size:12px;display:inline-flex}.tag-label{cursor:pointer}.tag-label:hover{color:var(--berry)}.tag-remove{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:0 2px;font-size:14px;line-height:1}.tag-remove:hover{color:var(--berry)}.tag-editing{background:var(--cream-2);padding:2px 8px}.tag-input{width:80px;color:var(--espresso);background:0 0;border:none;outline:none;font-size:12px}.modal-overlay{z-index:200;background:#0f1d2e80;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{border-radius:var(--radius-lg);background:#fff;flex-direction:column;width:100%;max-height:90vh;display:flex;box-shadow:0 20px 60px #0f1d2e33}.modal-header{border-bottom:1px solid var(--cream-2);justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.modal-title{color:var(--espresso);font-size:15px;font-weight:700}.modal-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:4px;align-items:center;padding:4px;display:flex}.modal-close:hover{background:var(--cream-1);color:var(--espresso)}.modal-body{padding:20px 24px;overflow-y:auto}.modal-body>:last-child{margin-bottom:4px}.modal-footer{border-top:1px solid var(--cream-2);justify-content:flex-end;gap:8px;padding:16px 24px;display:flex}.table-wrapper{border-radius:var(--radius-lg);border:1px solid var(--cream-2);background:#fff;overflow:hidden}.table{border-collapse:collapse;width:100%;font-size:13.5px}.table th{background:var(--cream-0);text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid var(--cream-2);white-space:nowrap;-webkit-user-select:none;user-select:none;padding:10px 14px;font-size:11px;font-weight:700}.table th.sortable{cursor:pointer}.table th.sortable:hover{color:var(--espresso)}.table th span{align-items:center;gap:4px;display:inline-flex}.table td{color:var(--text-body);border-bottom:1px solid var(--cream-1);vertical-align:middle;padding:11px 14px}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--cream-0)}.table-empty{text-align:center;color:var(--text-muted);font-size:14px;padding:48px 16px!important}.td-actions{justify-content:flex-end;gap:4px;display:flex}.badge{border-radius:100px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-primary{background:var(--cream-2);color:var(--espresso)}.badge-success{color:#155724;background:#d4edda}.badge-error{color:#922b21;background:#fde8e8}.badge-warning{color:#856404;background:#fef3cd}.badge-inactive{background:var(--cream-1);color:var(--text-muted)}.filter-bar{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.fw-600{font-weight:600}.font-mono{font-family:SF Mono,Fira Code,monospace}.text-muted{color:var(--text-muted)}.text-sm{font-size:13px}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.btn-icon{padding:5px}.recipe-owner-btn{text-align:left;cursor:pointer;width:100%;color:var(--text-body);background:0 0;border:none;padding:8px 16px;font-size:13.5px;transition:background .12s;display:block}.recipe-owner-btn:hover{background:var(--cream-1)}.recipe-owner-btn.active{background:var(--cream-2);color:var(--espresso);font-weight:600}.segmented-control{background:var(--cream-1);border-radius:var(--radius);grid-template-columns:repeat(3,1fr);gap:2px;padding:3px;display:grid}.segmented-option{color:var(--text-muted);border-radius:calc(var(--radius) - 2px);cursor:pointer;text-align:center;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:7px 4px;font-size:13px;font-weight:500;transition:all .15s;display:flex}.segmented-option:hover{color:var(--espresso)}.segmented-option.active{color:var(--espresso);background:#fff;font-weight:600;box-shadow:0 1px 4px #0f1d2e1a}.recipe-card{border:1.5px solid var(--cream-2);border-radius:var(--radius-lg);text-align:left;cursor:pointer;background:#fff;width:100%;padding:14px 36px 14px 16px;transition:all .15s;position:relative}.recipe-card:hover{border-color:var(--berry);box-shadow:0 2px 12px #b61b3c14}.recipe-item-row{border-bottom:1px solid var(--cream-1);align-items:center;gap:12px;padding:10px 4px;font-size:13.5px;display:flex}.recipe-item-row:last-child{border-bottom:none}.recipe-item-info{flex-wrap:wrap;flex:1;align-items:center;gap:6px;display:flex}.recipe-item-meta{flex-shrink:0;align-items:center;gap:10px;display:flex}.flex{display:flex}.items-center{align-items:center}
