*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:Nunito,-apple-system,BlinkMacSystemFont,sans-serif;font-size:16px;line-height:1.5;color:#3d2e2b;background-color:#faf6f1}.app-shell{display:flex;height:100vh;overflow:hidden}.sidebar{background-color:#faf6f1;color:#3d2e2b;display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0;transition:width 0s;border-right:1px solid rgba(200,181,168,.25)}.sidebar-back{padding:.75rem 1.25rem .25rem}.sidebar-back-link{font-size:.75rem;font-weight:500;color:#8c7b75;text-decoration:none;font-family:inherit}.sidebar-back-link:hover{color:#3d2e2b}.mobile-back-btn{font-size:1.1rem;font-weight:700;color:#3d2e2b;text-decoration:none;padding:.25rem .4rem;line-height:1;flex-shrink:0}.sidebar-resize-handle{width:4px;background:transparent;cursor:col-resize;flex-shrink:0;transition:background .15s;z-index:10}.sidebar-resize-handle:hover,.sidebar-resize-handle:active{background:#9ad4d6}.app-name-icon{font-size:1.25rem;display:block;text-align:center}.sidebar-header{padding:.75rem 1.25rem 1rem;border-bottom:1px solid rgba(200,181,168,.2);display:flex;flex-direction:column;align-items:center;gap:.6rem}.sidebar-avatar{width:64px;height:64px;border-radius:50%;background:#9ad4d6;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #9ad4d666;flex-shrink:0}.sidebar-avatar-letter{font-family:Nunito,sans-serif;font-size:28px;font-weight:900;color:#fff;line-height:1}.app-name{font-size:1rem;font-weight:500;color:#3d2e2b;letter-spacing:.02em;text-align:center}.sidebar-nav{flex:1;padding:.75rem 0;display:flex;flex-direction:column;gap:2px}.nav-link{display:flex;align-items:center;gap:.5rem;padding:.6rem 1.25rem;text-decoration:none;font-size:.875rem;font-weight:400;border-radius:0;transition:background .15s,opacity .15s}.nav-link-icon{flex-shrink:0;font-size:.9rem;width:1.1rem;text-align:center}.nav-link-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-link:hover{opacity:.75}.nav-link--active{font-weight:500;opacity:1}.nav-section-label{display:block;padding:.85rem 1.25rem .3rem;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#b5a9a4}.nav-link--placeholder{align-items:center;justify-content:space-between;opacity:.55}.nav-link--placeholder:hover{opacity:.85}.nav-link--placeholder.nav-link--active{opacity:1;background-color:transparent;color:#3d2e2bb3;font-weight:400}.nav-link-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-phase-badge{font-size:.6rem;font-weight:700;padding:.1rem .35rem;border-radius:4px;flex-shrink:0;margin-left:.4rem}.nav-phase-badge--3{background:#ece7fb;color:#b6a3f0}.nav-phase-badge--4{background:#fce7f3;color:#db2777}.nav-phase-badge--5{background:#d1fae5;color:#065f46}.nav-phase-badge--6{background:#e0f2fe;color:#0369a1}.sidebar-footer{padding:1rem 1.25rem;border-top:1px solid rgba(200,181,168,.2);display:flex;flex-direction:column;gap:.5rem}.sidebar-user{font-size:.75rem;color:#b5a9a4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sign-out-btn{background:transparent;border:1px solid rgba(200,181,168,.4);color:#8c7b75;padding:.4rem .75rem;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:400;transition:background .15s,color .15s;text-align:left}.sign-out-btn:hover{background-color:#c8b5a826;color:#3d2e2b}.main-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:2rem}.page{max-width:900px}.page-title{font-size:1.75rem;font-weight:700;color:#3d2e2b;margin-bottom:.5rem}.page-subtitle{font-size:1rem;color:#8c7b75;margin-bottom:1.5rem}.coming-soon{color:#b5a9a4;font-style:italic;margin-top:1rem}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2d1f6e,#b6a3f0);padding:1rem}.login-card{background:#fffdf9;border-radius:12px;padding:2.5rem 2rem;width:100%;max-width:400px;box-shadow:0 20px 60px #0000004d}.login-title{font-size:1.75rem;font-weight:700;color:#3d2e2b;text-align:center;margin-bottom:.25rem}.login-subtitle{text-align:center;color:#8c7b75;margin-bottom:1.75rem;font-size:.9rem}.login-error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca;border-radius:6px;padding:.6rem .875rem;font-size:.875rem;margin-bottom:1rem}.login-message{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0;border-radius:6px;padding:.6rem .875rem;font-size:.875rem;margin-bottom:1rem}.login-form{display:flex;flex-direction:column;gap:.5rem}.form-label{font-size:.875rem;font-weight:500;color:#3d2e2b;margin-top:.5rem}.form-label--inline{display:flex;align-items:center;margin-top:.5rem;cursor:pointer}.form-input{padding:.6rem .875rem;border:1px solid #D4C9C4;border-radius:6px;font-size:1rem;transition:border-color .15s,box-shadow .15s;outline:none}.form-input:focus{border-color:#b6a3f0;box-shadow:0 0 0 3px #b6a3f026}.login-actions{display:flex;gap:.75rem;margin-top:1.25rem}.btn{flex:1;padding:.65rem 1rem;border-radius:6px;font-size:.925rem;font-weight:500;cursor:pointer;border:none;transition:background .15s,opacity .15s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:#b6a3f0;color:#fffdf9}.btn-primary:hover:not(:disabled){background-color:#7b69c8}.btn-secondary{background-color:#faf6f1;color:#3d2e2b;border:1px solid #D4C9C4}.btn-secondary:hover:not(:disabled){background-color:#e5ddd8}.cal-page{max-width:100%;overflow-x:hidden}.cal-month-section{margin-bottom:2.5rem}.cal-month-heading{font-size:1.1rem;font-weight:700;color:#3d2e2b;margin:0 0 .5rem}.cal-nav{display:flex;align-items:center;gap:1.5rem;margin-bottom:1.25rem}.cal-nav-btn{background:#faf6f1;border:1px solid #D4C9C4;border-radius:6px;padding:.4rem .75rem;cursor:pointer;font-size:1rem;color:#3d2e2b;transition:background .15s}.cal-nav-btn:hover{background:#e5ddd8}.gcal-bar{display:flex;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.gcal-slot{display:flex;align-items:center;gap:.5rem;background:#faf6f1;border:1px solid #E5DDD8;border-radius:8px;padding:.4rem .75rem}.gcal-dot{width:12px;height:12px;border-radius:50%;display:inline-block;flex-shrink:0}.gcal-label{font-size:.85rem;color:#8c7b75}.gcal-connected{font-size:.85rem;color:#3d2e2b;font-weight:500}.gcal-btn{font-size:.8rem;padding:.3rem .6rem;border-radius:5px;cursor:pointer;border:none;font-weight:500;transition:background .15s}.gcal-btn--connect{background:#b6a3f0;color:#fff}.gcal-btn--connect:hover{background:#7b69c8}.gcal-btn--disconnect{background:#faf6f1;color:#8c7b75;border:1px solid #D4C9C4}.gcal-btn--disconnect:hover{background:#fee2e2;color:#dc2626;border-color:#fca5a5}.gcal-btn--sync{background:#ecfdf5;color:#059669;border:1px solid #6ee7b7}.gcal-btn--sync:hover:not(:disabled){background:#d1fae5}.gcal-btn--sync:disabled{opacity:.6;cursor:default}.gcal-sync-result{font-size:.78rem;color:#059669}.cal-legend{display:flex;gap:1.25rem;margin-top:.75rem;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#8c7b75}.legend-dot{width:12px;height:12px;border-radius:3px;display:inline-block}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid #E5DDD8;width:100%;table-layout:fixed;border-radius:8px;overflow:hidden}.cal-day-header{background:#faf6f1;text-align:center;font-size:.75rem;overflow:hidden;font-weight:600;color:#8c7b75;padding:.5rem;border-bottom:1px solid #E5DDD8;border-right:1px solid #E5DDD8}.cal-day-header:last-child{border-right:none}.cal-cell{min-height:80px;padding:.3rem;border-right:1px solid #E5DDD8;min-width:0;border-bottom:1px solid #E5DDD8;cursor:pointer;background:#fffdf9;transition:background .1s;vertical-align:top}.cal-cell:hover{background:#f5f3ff}.cal-cell:nth-child(7n){border-right:none}.cal-cell--empty{background:#fafafa;cursor:default}.cal-cell--empty:hover{background:#fafafa}.cal-cell--today .cal-day-num{background:#b6a3f0;color:#fff;border-radius:50%;width:1.6rem;height:1.6rem;display:flex;align-items:center;justify-content:center}.cal-day-num{font-size:.85rem;font-weight:600;color:#3d2e2b;margin-bottom:.25rem;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem}.cal-event{background:#ece7fb;color:#b6a3f0;font-size:.7rem;border-radius:4px;padding:2px 4px;margin-bottom:2px;display:flex;align-items:flex-start;gap:3px;white-space:normal;word-break:break-word;overflow-wrap:anywhere;min-width:0;cursor:pointer}.cal-event-time{font-weight:600;flex-shrink:0}.cal-event-important{font-weight:900;font-size:.75rem;color:#dc2626;flex-shrink:0;line-height:1}.cal-event-del{margin-left:auto;background:none;border:none;color:#7c3aed;cursor:pointer;font-size:.9rem;padding:0;line-height:1;flex-shrink:0}.cal-event-del:hover{color:#dc2626}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fffdf9;border-radius:12px;padding:2rem;width:100%;max-width:420px;box-shadow:0 20px 60px #00000040}.modal-title{font-size:1.1rem;font-weight:700;color:#3d2e2b;margin-bottom:1rem}.modal-form{display:flex;flex-direction:column;gap:.4rem}.modal-actions{display:flex;gap:.75rem;margin-top:1rem}.cat-picker{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.25rem}.cat-pick-btn{font-size:.82rem;padding:.3rem .7rem;border-radius:20px;border:1px solid #D4C9C4;background:#faf6f1;color:#8c7b75;cursor:pointer;font-weight:500;transition:all .15s}.cat-pick-btn:hover{border-color:#b5a9a4;color:#3d2e2b}.cat-pick-btn--active{font-weight:700}.layer-dropdown{position:relative;display:inline-block;margin-bottom:.75rem}.layer-dropdown-btn{font-size:.82rem;padding:.35rem .8rem;border-radius:20px;border:1px solid #D4C9C4;background:#faf6f1;color:#3d2e2b;cursor:pointer;font-weight:600;transition:all .15s;display:flex;align-items:center;gap:.3rem}.layer-dropdown-btn:hover{border-color:#b5a9a4;background:#faf6f1}.layer-dropdown-panel{position:absolute;top:calc(100% + .35rem);left:0;z-index:50;background:#fffdf9;border:1px solid #E5DDD8;border-radius:12px;padding:.6rem;box-shadow:0 4px 16px #0000001a;display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;min-width:280px}.layer-btn{font-size:.78rem;padding:.28rem .65rem;border-radius:20px;border:1px solid #D4C9C4;background:#faf6f1;color:#b5a9a4;cursor:pointer;font-weight:500;transition:all .15s}.layer-btn:hover{border-color:#b5a9a4;color:#3d2e2b}.layer-btn--active{font-weight:600}.layer-btn--school.layer-btn--active{background:#ecfdf5;color:#059669;border-color:#059669}.layer-btn--holiday.layer-btn--active{background:#fff7ed;color:#ea580c;border-color:#ea580c}.layer-divider{display:inline-block;width:1px;height:18px;background:#e5ddd8;margin:0 .15rem;align-self:center;flex-shrink:0}.cal-cell-header{display:flex;align-items:center;gap:.25rem;margin-bottom:.15rem}.cal-cell-header .cal-day-num{margin-bottom:0}.cal-term-week{font-size:.58rem;font-weight:600;color:#059669;background:#ecfdf5;border-radius:4px;padding:0 .25rem;line-height:1.4;flex-shrink:0}.cal-conflict-dot{font-size:.65rem;font-weight:700;color:#dc2626;background:#fee2e2;border-radius:50%;width:1rem;height:1rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:help}.cal-term-boundary{font-size:.62rem;font-weight:600;margin-bottom:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-term-boundary--first{color:#0369a1}.cal-term-boundary--last{color:#b45309}.cal-school-hols{font-size:.62rem;color:#7c3aed;font-weight:500;margin-bottom:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-btn--schoolhols.layer-btn--active{background:#f5f3ff;color:#7c3aed;border-color:#7c3aed}.cal-holiday{font-size:.62rem;color:#ea580c;font-weight:500;margin-bottom:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-recur-icon{margin-left:3px;font-size:.7rem;opacity:.6;flex-shrink:0}.tasks-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:.25rem}.tasks-add-btn{flex:none;margin-top:.25rem}.tasks-stats{font-size:.875rem;color:#8c7b75;margin-bottom:1rem}.tasks-filters{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1rem}.filter-btn{font-size:.82rem;padding:.3rem .75rem;border-radius:20px;border:1px solid #D4C9C4;background:#faf6f1;color:#8c7b75;cursor:pointer;font-weight:500;transition:all .15s}.filter-btn:hover{border-color:#b5a9a4;color:#3d2e2b}.filter-btn--active{background:#b6a3f0;color:#fff;border-color:#b6a3f0;font-weight:600}.filter-btn--library{margin-left:auto}.library-panel{background:#faf6f1;border:1px solid #E5DDD8;border-radius:10px;padding:1rem;margin-bottom:1.25rem}.library-tabs{display:flex;gap:.4rem;margin-bottom:.75rem}.library-tab{font-size:.8rem;padding:.25rem .65rem;border-radius:20px;border:1px solid #D4C9C4;background:#fffdf9;color:#8c7b75;cursor:pointer;font-weight:500;transition:all .15s}.library-tab--active{background:#b6a3f0;color:#fff;border-color:#b6a3f0}.library-items{display:flex;flex-direction:column;gap:.4rem}.library-item{display:flex;align-items:center;justify-content:space-between;background:#fffdf9;border:1px solid #E5DDD8;border-radius:8px;padding:.5rem .75rem}.library-item--added{opacity:.5}.library-item-info{display:flex;align-items:center;gap:.5rem}.library-item-title{font-size:.875rem;color:#3d2e2b}.library-add-btn{font-size:.78rem;padding:.25rem .6rem;border-radius:6px;border:1px solid #D4C9C4;background:#faf6f1;color:#3d2e2b;cursor:pointer;font-weight:500;white-space:nowrap;transition:all .15s}.library-add-btn:hover:not(:disabled){background:#b6a3f0;color:#fff;border-color:#b6a3f0}.library-add-btn:disabled{cursor:default;color:#059669;background:#d1fae5;border-color:#059669}.tasks-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.tasks-empty{color:#b5a9a4;font-style:italic;padding:1rem 0}.task-item{display:flex;align-items:center;gap:.75rem;background:#fffdf9;border:1px solid #E5DDD8;border-left:4px solid #E5DDD8;border-radius:8px;padding:.65rem .75rem;transition:border-color .15s}.task-item--overdue{border-left-color:#ef4444;background:#fff9f9}.task-item--today{border-left-color:#f59e0b}.task-item--done{border-left-color:#d4c9c4;opacity:.7}.task-check{flex-shrink:0;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:0}.task-check-box{width:20px;height:20px;border:2px solid #D4C9C4;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .15s;font-size:.7rem}.task-check:hover .task-check-box{border-color:#b6a3f0;background:#ece7fb}.task-check-box--done{background:#b6a3f0;border-color:#b6a3f0;color:#fff}.task-body{flex:1;min-width:0}.task-title{display:block;font-size:.925rem;color:#3d2e2b;margin-bottom:.3rem;font-weight:500}.task-title--done{text-decoration:line-through;color:#b5a9a4}.task-meta{display:flex;flex-wrap:wrap;gap:.35rem}.badge{display:inline-flex;align-items:center;font-size:.72rem;font-weight:600;padding:.15rem .5rem;border-radius:20px}.badge--overdue{background:#fee2e2;color:#dc2626}.badge--today{background:#fef3c7;color:#d97706}.badge--recur{background:#faf6f1;color:#8c7b75}.badge--paid{background:#d1fae5;color:#059669}.badge--date{background:#faf6f1;color:#8c7b75}.task-del{flex-shrink:0;background:none;border:none;color:#d4c9c4;cursor:pointer;font-size:1.1rem;padding:.25rem;line-height:1;transition:color .15s}.task-del:hover{color:#dc2626}.task-edit{flex-shrink:0;background:none;border:none;color:#d4c9c4;cursor:pointer;font-size:.9rem;padding:.25rem;line-height:1;transition:color .15s}.task-edit:hover{color:#b6a3f0}.task-item--editing{border-left-color:#b6a3f0;background:#faf6f1;padding:.75rem;display:block}.task-edit-form{display:flex;flex-direction:column;gap:.6rem}.tasks-done-section{margin-top:.5rem}.tasks-done-toggle{background:none;border:none;color:#8c7b75;font-size:.875rem;cursor:pointer;padding:.25rem 0;margin-bottom:.5rem}.tasks-list--done .task-item{background:#faf6f1}.input-prefix-wrap{display:flex;align-items:center;position:relative}.input-prefix{position:absolute;left:.875rem;color:#8c7b75;font-size:.925rem}.form-input--prefixed{padding-left:1.75rem}.modal--tall{max-height:90vh;overflow-y:auto}.meal-page{max-width:100%}.meal-nav{display:flex;align-items:center;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.meal-week-label{font-size:.85rem;color:#8c7b75;margin-top:.1rem}.custody-btn{margin-left:auto;font-size:.85rem;padding:.35rem .85rem;border-radius:20px;border:1px solid #D4C9C4;background:#faf6f1;color:#8c7b75;cursor:pointer;font-weight:500;transition:all .15s}.custody-btn--here{background:#fff7ed;color:#c2410c;border-color:#f97316}.custody-btn--away{background:#fefce8;color:#a16207;border-color:#eab308}.meal-grid{display:grid;grid-template-columns:76px repeat(7,1fr);gap:1px;background:#e5ddd8;border:1px solid #E5DDD8;border-radius:8px;overflow:hidden;margin-bottom:1.5rem}.meal-corner{background:#faf6f1}.meal-day-hdr{background:#faf6f1;text-align:center;padding:.4rem .2rem;display:flex;flex-direction:column;align-items:center;gap:.1rem}.meal-day-hdr--today{background:#ece7fb}.meal-day-name{font-size:.7rem;font-weight:700;color:#8c7b75;text-transform:uppercase;letter-spacing:.04em}.meal-day-date{font-size:.9rem;font-weight:700;color:#3d2e2b}.meal-day-hdr--today .meal-day-name,.meal-day-hdr--today .meal-day-date{color:#b6a3f0}.meal-row-label{background:#faf6f1;font-size:.68rem;font-weight:700;color:#8c7b75;text-transform:uppercase;letter-spacing:.04em;padding:.5rem .4rem;display:flex;align-items:center}.meal-cell{min-height:68px;padding:.4rem;background:#fffdf9;cursor:pointer;display:flex;flex-direction:column;gap:.2rem;transition:background .1s}.meal-cell:hover{background:#f5f3ff}.meal-cell--today{background:#fafaff}.meal-cell--today:hover{background:#f0eeff}.meal-cell-title{font-size:.76rem;color:#111827;font-weight:500;line-height:1.3;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.meal-cell-flags{display:flex;gap:2px;margin-top:auto}.meal-cell-add{color:#d4c9c4;font-size:1.25rem;display:flex;align-items:center;justify-content:center;flex:1}.meal-panels{display:flex;flex-direction:column;gap:.5rem}.meal-panel-btn{background:none;border:none;color:#3d2e2b;font-size:.875rem;font-weight:600;cursor:pointer;padding:.25rem 0;text-align:left;transition:color .15s}.meal-panel-btn:hover{color:#b6a3f0}.meal-panel-row{display:flex;align-items:center;justify-content:space-between}.meal-recipe-add-btn{font-size:.8rem;padding:.25rem .65rem}.meal-panel-body{background:#faf6f1;border:1px solid #E5DDD8;border-radius:8px;padding:.875rem;margin-bottom:.25rem}.snack-chips{display:flex;flex-wrap:wrap;gap:.4rem}.snack-chip{background:#fffdf9;border:1px solid #E5DDD8;border-radius:20px;padding:.25rem .75rem;font-size:.82rem;color:#3d2e2b;font-weight:500}.quick-meal-list{display:flex;flex-direction:column;gap:.35rem}.quick-meal-item{display:flex;align-items:center;justify-content:space-between;background:#fffdf9;border:1px solid #E5DDD8;border-radius:6px;padding:.4rem .75rem;cursor:pointer;transition:background .1s}.quick-meal-item:hover{background:#ece7fb;border-color:#dcd3f8}.quick-meal-title{font-size:.875rem;color:#3d2e2b}.quick-meal-type{font-size:.72rem;color:#b5a9a4}.recipe-list{display:flex;flex-direction:column;gap:.5rem}.recipe-item{background:#fffdf9;border:1px solid #E5DDD8;border-radius:8px;padding:.6rem .75rem}.recipe-item-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.recipe-title{font-size:.9rem;font-weight:600;color:#3d2e2b}.recipe-badges{display:flex;gap:.3rem;flex-wrap:wrap;align-items:center}.recipe-del-btn{background:none;border:none;color:#d4c9c4;cursor:pointer;font-size:1rem;padding:0;line-height:1;transition:color .15s}.recipe-del-btn:hover{color:#dc2626}.recipe-details{margin-top:.5rem}.recipe-details summary{font-size:.78rem;color:#8c7b75;cursor:pointer}.recipe-text{font-size:.82rem;color:#3d2e2b;margin-top:.4rem;white-space:pre-line;line-height:1.5}.recipe-picker-toggle{background:none;border:none;color:#b6a3f0;font-size:.82rem;cursor:pointer;padding:.25rem 0;text-align:left}.recipe-picker-list{display:flex;flex-direction:column;gap:.25rem;max-height:160px;overflow-y:auto;border:1px solid #E5DDD8;border-radius:6px;padding:.4rem;background:#faf6f1}.recipe-pick-item{background:#fffdf9;border:1px solid #E5DDD8;border-radius:5px;padding:.3rem .6rem;font-size:.82rem;color:#3d2e2b;cursor:pointer;text-align:left;transition:all .1s}.recipe-pick-item:hover{background:#ece7fb;color:#b6a3f0;border-color:#dcd3f8}.meal-flags-row{display:flex;flex-direction:column;gap:.4rem;margin-top:.25rem}.meal-flag-label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#3d2e2b;cursor:pointer}.meal-flag-label input[type=checkbox]{width:16px;height:16px;cursor:pointer}.budget-tabs{display:flex;gap:0;margin-bottom:1.5rem;border-bottom:2px solid #E5DDD8}.budget-tab{padding:.5rem 1.1rem;font-size:.875rem;font-weight:500;color:#8c7b75;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:all .15s}.budget-tab:hover{color:#3d2e2b}.budget-tab--active{color:#b6a3f0;border-bottom-color:#b6a3f0;font-weight:600}.budget-section{display:flex;flex-direction:column;gap:1rem}.budget-section-header{display:flex;align-items:center;justify-content:space-between}.budget-section-title{font-size:.875rem;font-weight:700;color:#3d2e2b;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}.pay-widget{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#2d1f6e,#b6a3f0);border-radius:12px;padding:1.25rem 1.5rem;color:#fff}.pay-widget-left{display:flex;flex-direction:column;gap:.2rem}.pay-widget-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#dcd3f8}.pay-widget-date{font-size:1.1rem;font-weight:700;color:#fff}.pay-widget-days{font-size:.82rem;color:#dcd3f8}.pay-widget-days--soon{color:#fcd34d}.pay-widget-days--today{color:#6ee7b7;font-weight:700}.pay-widget-unset{font-size:.875rem;color:#dcd3f8;font-style:italic}.pay-widget-right{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}.pay-widget-amount{font-size:1.5rem;font-weight:800;color:#fff;letter-spacing:-.02em}.pay-widget-edit-btn{font-size:.78rem;padding:.25rem .65rem;background:#ffffff26;border-color:#ffffff4d;color:#fff}.pay-widget-edit-btn:hover:not(:disabled){background:#ffffff40}.grocery-widget{background:#faf6f1;border:1px solid #E5DDD8;border-radius:10px;padding:.875rem 1rem}.grocery-widget-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.6rem}.grocery-label{font-size:.82rem;font-weight:600;color:#3d2e2b}.grocery-amounts{font-size:.875rem;font-weight:700;color:#3d2e2b}.progress-track{height:8px;background:#e5ddd8;border-radius:999px;overflow:hidden}.progress-fill{height:100%;border-radius:999px;transition:width .4s ease;min-width:4px}.upcoming-bills{display:flex;flex-direction:column;gap:.4rem}.upcoming-bill{display:flex;align-items:center;justify-content:space-between;padding:.65rem .875rem;border-radius:8px;border-left:4px solid #E5DDD8;background:#fffdf9;border:1px solid #E5DDD8;border-left-width:4px}.upcoming-bill--urgent{border-left-color:#ef4444;background:#fff9f9}.upcoming-bill--soon{border-left-color:#f59e0b}.upcoming-bill--fine{border-left-color:#d4c9c4}.upcoming-bill-left{display:flex;flex-direction:column;gap:.15rem}.upcoming-bill-name{font-size:.9rem;font-weight:600;color:#3d2e2b}.upcoming-bill-when{font-size:.75rem;color:#8c7b75}.upcoming-bill-amount{font-size:.95rem;font-weight:700;color:#3d2e2b}.month-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.month-summary-item{background:#faf6f1;border:1px solid #E5DDD8;border-radius:10px;padding:.875rem;display:flex;flex-direction:column;gap:.3rem}.month-summary-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#8c7b75}.month-summary-amount{font-size:1.1rem;font-weight:800;letter-spacing:-.02em}.month-summary-amount--income{color:#059669}.month-summary-amount--expense{color:#dc2626}.bills-list{display:flex;flex-direction:column;gap:.5rem}.bill-item{display:flex;align-items:flex-start;gap:.75rem;background:#fffdf9;border:1px solid #E5DDD8;border-radius:8px;padding:.7rem .875rem}.bill-item-body{flex:1;min-width:0}.bill-item-top{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.35rem}.bill-name{font-size:.925rem;font-weight:600;color:#3d2e2b}.bill-amount{font-size:.925rem;font-weight:700;color:#3d2e2b;white-space:nowrap}.bill-notes{font-size:.78rem;color:#8c7b75;margin-top:.3rem}.goals-list{display:flex;flex-direction:column;gap:.75rem}.goal-item{background:#fffdf9;border:1px solid #E5DDD8;border-radius:10px;padding:.875rem 1rem;display:flex;flex-direction:column;gap:.5rem}.goal-header{display:flex;align-items:center;justify-content:space-between}.goal-name{font-size:1rem;font-weight:700;color:#3d2e2b}.goal-amounts{display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap}.goal-current{font-size:1.1rem;font-weight:800;color:#b6a3f0}.goal-sep{font-size:.82rem;color:#8c7b75}.goal-remaining{font-size:.78rem;color:#b5a9a4}.goal-meta{display:flex;align-items:center;gap:.5rem}.goal-pct{font-size:.78rem;font-weight:700;color:#8c7b75}.spending-list{display:flex;flex-direction:column;gap:.4rem}.spending-item{display:flex;align-items:center;gap:.75rem;background:#fffdf9;border:1px solid #E5DDD8;border-radius:8px;padding:.6rem .875rem}.spending-item-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.spending-category{font-size:.875rem;font-weight:600;color:#3d2e2b}.spending-notes{font-size:.78rem;color:#8c7b75}.spending-date{font-size:.72rem;color:#b5a9a4}.spending-right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.spending-amount{font-size:.925rem;font-weight:700;white-space:nowrap}.spending-amount--income{color:#059669}.spending-amount--expense{color:#dc2626}.ollie-card{background:#fffdf9;border:1px solid #E5DDD8;border-radius:10px;padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.75rem}.ollie-card-header{display:flex;align-items:center;justify-content:space-between}.ollie-card-title{font-size:.875rem;font-weight:700;color:#3d2e2b;text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:.4rem}.ollie-fields,.ollie-edit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.6rem}.ollie-field{display:flex;flex-direction:column;gap:.15rem}.ollie-field--wide{grid-column:1 / -1}.ollie-field-label{font-size:.7rem;font-weight:700;color:#b5a9a4;text-transform:uppercase;letter-spacing:.04em}.ollie-field-value{font-size:.875rem;color:#3d2e2b;font-weight:500}.ollie-contact-item{display:flex;align-items:flex-start;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid #FAF6F1}.ollie-contact-item:last-child{border-bottom:none}.ollie-contact-name{font-size:.9rem;font-weight:600;color:#3d2e2b}.ollie-contact-meta{font-size:.78rem;color:#8c7b75;margin-top:.15rem}.ollie-activity-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;padding:.6rem 0;border-bottom:1px solid #FAF6F1}.ollie-activity-item:last-child{border-bottom:none}.ollie-activity-body{flex:1}.ollie-activity-name{font-size:.9rem;font-weight:600;color:#3d2e2b}.ollie-slip-item{display:flex;align-items:flex-start;gap:.5rem;padding:.6rem 0;border-bottom:1px solid #FAF6F1}.ollie-slip-item:last-child{border-bottom:none}.ollie-expense-item{display:flex;align-items:flex-start;gap:.5rem;padding:.6rem 0;border-bottom:1px solid #FAF6F1}.ollie-expense-item:last-child{border-bottom:none}.ollie-expense-item--settled{opacity:.5}.ollie-mood-alert{background:#fef9c3;border:1px solid #fde68a;border-radius:8px;padding:.65rem .875rem;font-size:.875rem;color:#92400e;font-weight:500}.ollie-view-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem}.ollie-view-greeting{font-size:1.5rem;font-weight:800;color:#3d2e2b}.ollie-earnings-badge{background:#d1fae5;color:#065f46;border-radius:20px;padding:.35rem .875rem;font-size:.875rem;font-weight:700}.mood-emoji-row{display:flex;gap:.5rem}.mood-emoji-btn{font-size:1.75rem;padding:.4rem;border-radius:10px;border:2px solid #E5DDD8;background:#faf6f1;cursor:pointer;transition:all .15s;line-height:1}.mood-emoji-btn:hover{transform:scale(1.1);border-color:#b5a9a4}.mood-emoji-btn--active{transform:scale(1.15);border-width:2px}.mood-history{display:flex;gap:.5rem}.mood-day{display:flex;flex-direction:column;align-items:center;gap:.25rem;flex:1}.mood-day-label{font-size:.65rem;color:#b5a9a4;font-weight:600;text-transform:uppercase}.mood-day-dot{width:32px;height:32px;border-radius:50%;background:#faf6f1;display:flex;align-items:center;justify-content:center;font-size:.9rem;color:#b5a9a4}.ollie-chore-item{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:#faf6f1;border:1px solid #E5DDD8;border-radius:8px}.ollie-chore-title{font-size:.875rem;color:#3d2e2b;font-weight:500}@media (max-width: 640px){.sign-out-btn{font-size:0;padding:.5rem}}.dash-header{margin-bottom:1.25rem}.dash-alert{background:#fef9c3;border:1px solid #fde047;border-radius:10px;padding:.75rem 1rem;font-size:.9rem;color:#713f12;margin-bottom:1.25rem}.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.25rem}@media (max-width: 640px){.dash-grid{grid-template-columns:1fr}}.dash-card{background:#fffdf9;border:1px solid #E5DDD8;border-radius:12px;padding:1rem 1.1rem 1.1rem}.dash-card-title{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#8c7b75;margin-bottom:.75rem;display:flex;align-items:center;justify-content:space-between}.dash-empty{font-size:.875rem;color:#b5a9a4;font-style:italic}.dash-task-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.dash-task-item{display:flex;align-items:center;gap:.5rem;padding-left:.5rem;border-radius:0 6px 6px 0}.dash-task-check{background:none;border:2px solid #D4C9C4;border-radius:50%;width:26px;height:26px;flex-shrink:0;cursor:pointer;font-size:.75rem;color:#b5a9a4;display:flex;align-items:center;justify-content:center;transition:border-color .15s,color .15s}.dash-task-check:hover{border-color:#b6a3f0;color:#b6a3f0}.dash-task-title{flex:1;font-size:.9rem;color:#3d2e2b}.dash-task-badge{font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:99px;white-space:nowrap}.dash-dinner{display:flex;flex-direction:column;gap:.35rem}.dash-dinner-name{font-size:1rem;font-weight:600;color:#3d2e2b}.dash-dinner-flags{font-size:1rem;display:flex;gap:.25rem}.dash-dinner-notes{font-size:.8rem;color:#8c7b75}.dash-event-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.dash-event-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.dash-event-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dash-event-title{flex:1;color:#3d2e2b}.dash-event-time{font-size:.8rem;color:#8c7b75;white-space:nowrap}.dash-bill-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.dash-bill-item{display:flex;justify-content:space-between;align-items:center;font-size:.875rem;padding:.35rem .5rem;border-radius:6px;background:#faf6f1}.dash-bill-item.dash-bill--soon{background:#fef3c7}.dash-bill-item.dash-bill--urgent{background:#fee2e2}.dash-bill-name{color:#3d2e2b;font-weight:500}.dash-bill-meta{font-size:.8rem;color:#8c7b75;white-space:nowrap}.dash-bill-auto{font-size:.7rem;background:#dbeafe;color:#1d4ed8;padding:.1rem .4rem;border-radius:99px;margin-left:.25rem}.dash-checklist-count{font-size:.75rem;font-weight:600;color:#b5a9a4;margin-left:.5rem}.dash-checklist{list-style:none;display:flex;flex-direction:column;gap:.5rem}.dash-checklist-item{display:flex;align-items:center;gap:.6rem;font-size:.875rem;color:#3d2e2b}.dash-check-btn{background:none;border:2px solid #D4C9C4;border-radius:50%;width:26px;height:26px;flex-shrink:0;cursor:pointer;font-size:.75rem;color:#b5a9a4;display:flex;align-items:center;justify-content:center;transition:all .15s}.dash-check-btn--done{background:#059669;border-color:#059669;color:#fff}.dash-checklist-label--done{text-decoration:line-through;color:#b5a9a4}.dash-tomorrow{border-radius:12px;padding:1rem 1.1rem;border:1px solid rgba(245,169,184,.35);color:#3d2e2b}.dash-tomorrow-title{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#ff845e;margin-bottom:.75rem}.dash-tomorrow-empty{font-size:.875rem;color:#8c7b75}.dash-tomorrow-items{display:flex;flex-wrap:wrap;gap:.5rem}.dash-tomorrow-pill{font-size:.8rem;font-weight:500;padding:.3rem .7rem;border-radius:99px;white-space:nowrap}.module-banner{display:flex;align-items:center;gap:1.25rem;padding:1.25rem 2rem 1.1rem;flex-shrink:0;border-bottom:1px solid rgba(0,0,0,.04)}.module-banner-icon{display:flex;align-items:center;justify-content:center;opacity:.85;flex-shrink:0}.module-banner-title{font-family:Nunito,sans-serif;font-size:1.75rem;font-weight:400;text-transform:uppercase;letter-spacing:.15em;margin:0 0 2px}.module-banner-sub{font-family:Nunito,sans-serif;font-size:.8rem;margin:0;opacity:.75;letter-spacing:.02em}@media (max-width: 640px){.module-banner{padding:.875rem 1rem .75rem;gap:.875rem}.module-banner-title{font-size:1.1rem;letter-spacing:.08em}.module-banner-icon svg{width:32px!important;height:32px!important}}.main-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:99}.sidebar-overlay--open{display:block}.mobile-topbar{display:none;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#bde3e4;border-bottom:1px solid rgba(154,212,214,.4);flex-shrink:0}.mobile-topbar-title{font-size:1rem;font-weight:700;color:#3d2e2b}.hamburger-btn{display:none;background:none;border:none;cursor:pointer;padding:.25rem;color:#3d2e2b;align-items:center;justify-content:center;border-radius:6px;flex-shrink:0}@media (max-width: 640px){.sidebar{position:fixed!important;top:0;left:0;height:100vh;z-index:100;width:240px!important;min-width:240px!important;transform:translate(-100%);transition:transform .25s ease}.sidebar--open{transform:translate(0)}.sidebar-resize-handle{display:none}.main-wrapper{width:100%}.main-content{padding:1rem}.mobile-topbar,.hamburger-btn{display:flex}.dash-grid{grid-template-columns:1fr!important}.cal-month-section{overflow-x:auto;-webkit-overflow-scrolling:touch}.cal-grid{min-width:520px}.meal-page>.page{overflow-x:auto}.meal-grid{min-width:580px}.ollie-edit-grid{grid-template-columns:1fr!important}.page{padding:0}.page-title{font-size:1.3rem}}
