:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3eee6;--bg-2:#e8dfd2;--paper:#fffcf7;--ink:#2b2622;--muted:#6f665d;--line:#e4d8c8;--accent:#c45c3a;--accent-2:#3f7a62;--callum:#4f7c6b;--charlotte:#7a5b8a;--danger:#b1433d;--warn:#b7772b;--shadow:0 16px 40px #503a2014;--radius:18px;--font:"DM Sans", "Segoe UI", sans-serif;--serif:"Fraunces", Georgia, serif;font-family:var(--font);color:var(--ink);background:var(--bg)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(circle at top left, #f7e7d4 0, transparent 28%), radial-gradient(circle at top right, #dceadf 0, transparent 24%), var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.app-shell{grid-template-columns:260px 1fr;min-height:100vh;display:grid}.sidebar{color:#f6efe6;background:#2f2a26;flex-direction:column;gap:24px;height:100vh;padding:28px 20px;display:flex;position:sticky;top:0}.brand{flex-direction:column;gap:4px;display:flex}.brand h1{font-family:var(--serif);margin:0;font-size:1.7rem;font-weight:600}.brand p{color:#cbbba8;margin:0;font-size:.92rem}.family-switch{margin-top:12px}.family-switch span{color:#cbbba8}.family-switch select{color:#fff;background:#463f39;border-color:#5a524a}.nav{flex-direction:column;flex:1;gap:6px;display:flex}.sign-out{color:#eadfcd;background:#463f39;border:0;width:100%;margin-top:auto}.nav a,.bottom-nav a{color:#eadfcd;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;text-decoration:none;display:flex}.nav a.active,.bottom-nav a.active{color:#fff;background:#463f39}.nav a:hover,.bottom-nav a:hover{background:#3b342f}.main{width:100%;max-width:1400px;padding:28px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.page-header h2{font-family:var(--serif);margin:0 0 6px;font-size:2rem}.lede{color:var(--muted);margin:0}.week-nav,.toolbar,.btn-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn,.icon-btn{background:var(--paper);color:var(--ink);box-shadow:0 0 0 1px var(--line);border:0;border-radius:999px;padding:9px 14px}.btn:hover,.icon-btn:hover{background:#fff}.btn.primary{background:var(--accent);color:#fff;box-shadow:none}.btn.primary:hover{filter:brightness(1.05)}.btn.ghost{background:0 0}.btn.warn{color:#7a4d12;box-shadow:none;background:#f6e2c4}.btn.danger{color:var(--danger);box-shadow:none;background:#f5d5d2}.icon-btn{padding:8px;display:inline-flex}.card,.panel{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.stack{flex-direction:column;gap:12px;display:flex}.kicker{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px;font-size:.72rem}.person-chip,.tag{background:var(--bg-2);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.82rem;display:inline-flex}.person-chip.callum{color:#245544;background:#d7ebe2}.person-chip.charlotte{color:#53345f;background:#eadff1}.person-chip.both{background:#efe4d3}.warn-banner,.conflict{color:#7a4d12;background:#f8e5c8;border-radius:14px;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.meal-list{flex-direction:column;gap:8px;display:flex}.meal-list label,.check-row{background:#f7f1e8;border-radius:14px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.meal-list .meta{color:var(--muted);font-size:.86rem}.timetable-wrap{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);overflow:auto}.timetable{grid-template-columns:72px repeat(7,1fr);min-width:980px;display:grid}.timetable .head,.timetable .time,.timetable .cell{border-bottom:1px solid var(--line);border-right:1px solid var(--line)}.timetable .head{z-index:2;text-align:center;background:#fffaf3;padding:12px;position:sticky;top:0}.timetable .head.today{background:#f3e2d4}.timetable .time{color:var(--muted);align-items:start;padding:0 8px;font-size:.75rem;display:flex}.day-column{min-height:840px;position:relative}.event-block{color:#fff;cursor:pointer;border-radius:10px;padding:6px 8px;font-size:.78rem;position:absolute;left:6px;right:6px;overflow:hidden;box-shadow:0 6px 16px #0000001f}.event-block:focus{outline-offset:2px;outline:2px solid #222}.event-block small{opacity:.88;display:block}.legend{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.legend span{color:var(--muted);align-items:center;gap:6px;font-size:.82rem;display:flex}.swatch{border-radius:999px;width:12px;height:12px}.agenda{flex-direction:column;gap:8px;display:flex}.agenda-item{background:var(--paper);box-shadow:var(--shadow);cursor:pointer;border-radius:14px;grid-template-columns:92px 1fr auto;align-items:start;gap:10px;padding:12px;display:grid}.day-switcher{gap:6px;padding-bottom:6px;display:flex;overflow:auto}.day-switcher button[aria-current=true]{background:var(--accent);color:#fff;box-shadow:none}.field{flex-direction:column;gap:6px;display:flex}.field span{color:var(--muted);font-size:.82rem}.field input,.field select,.field textarea{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px}.field textarea{resize:vertical;min-height:90px}.modal-backdrop{z-index:20;background:#28201873;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--paper);width:min(640px,100%);max-height:90vh;box-shadow:var(--shadow);border-radius:24px;padding:22px;overflow:auto}.modal h3{font-family:var(--serif);margin:0 0 12px}.toast-stack{z-index:30;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{color:#fff;box-shadow:var(--shadow);background:#2f2a26;border-radius:14px;padding:12px 16px}.meal-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.meal-card h3{margin:0 0 6px;font-size:1.05rem}.muted{color:var(--muted)}.search{width:100%}.selector-list{flex-direction:column;gap:6px;max-height:360px;display:flex;overflow:auto}.selector-list button{text-align:left;background:#f7f1e8;border:0;border-radius:12px;padding:10px 12px}.selector-list button:hover,.selector-list button[aria-selected=true]{background:#efe0cf}.bottom-nav,.mobile-only{display:none}.stat{font-family:var(--serif);margin:0;font-size:1.35rem}.dash-grid{grid-template-columns:1.2fr .8fr;gap:16px;display:grid}@media (width<=980px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.bottom-nav{z-index:10;background:#2f2a26;grid-template-columns:repeat(7,1fr);padding:8px;display:grid;position:sticky;bottom:0}.bottom-nav a{flex-direction:column;justify-content:center;gap:4px;font-size:.68rem}.main{padding:16px 16px 24px}.grid-2,.grid-3,.dash-grid{grid-template-columns:1fr}.desktop-only{display:none}.mobile-only{display:block}}.auth-screen{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-screen .card{width:min(420px,100%)}.linkish{text-align:left;color:inherit;background:0 0;border:0;padding:0}.calendar-scroll{background:var(--paper);border-radius:var(--radius);height:min(78vh,900px);box-shadow:var(--shadow);overflow:auto}.week-grid{display:grid}.time-col .time-slot{border-bottom:1px solid var(--line);color:var(--muted);padding:2px 6px;font-size:.72rem}.time-slot.hour{color:var(--ink);font-weight:700}.day-column{border-left:1px solid var(--line);touch-action:none;position:relative}.grid-line{pointer-events:none;border-bottom:1px solid #eee4d6;height:44px;position:absolute;left:0;right:0}.grid-line.hour{border-bottom-color:#d7c8b4}.now-line{z-index:4;color:#d4533a;border-top:2px solid #d4533a;height:0;font-size:.72rem;position:absolute;left:0;right:0}.now-line span{background:#d4533a;border-radius:99px;width:8px;height:8px;position:absolute;top:-5px;left:-4px}.event-block.cook-avail{background-image:repeating-linear-gradient(-45deg,#ffffff2e 0 8px,#0000 8px 16px)}.event-block.family-person{padding-left:10px}.type-legend{margin:0 0 10px}.type-picker{grid-template-columns:18px 1fr;align-items:center;gap:8px;display:grid}.type-swatch{border-radius:6px;width:18px;height:18px;display:block}.event-block.private{font-style:italic}.event-block.draft{background:#c45c3a88}.calendar-toolbar{flex-wrap:wrap;gap:10px;margin-bottom:12px;display:flex}.member-filters{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.shop-page .meal-list label{justify-content:space-between}@media print{.sidebar,.bottom-nav,.toolbar,.week-nav,.btn,.icon-btn{display:none!important}.app-shell{display:block}.main{padding:0}body{background:#fff}}
