:root{--family-1: oklch(70% .13 18);--family-2: oklch(74% .13 65);--family-3: oklch(70% .11 155);--family-4: oklch(70% .11 235);--family-5: oklch(68% .12 305);--family-1-bg: oklch(95% .03 18);--family-2-bg: oklch(96% .04 65);--family-3-bg: oklch(95% .03 155);--family-4-bg: oklch(95% .03 235);--family-5-bg: oklch(95% .03 305);--font-sans: "Figtree", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-2xs: 11px;--text-xs: 12px;--text-sm: 13px;--text-base: 15px;--text-md: 17px;--text-lg: 20px;--text-xl: 24px;--text-2xl: 30px;--text-3xl: 38px;--text-4xl: 48px;--leading-tight: 1.15;--leading-snug: 1.3;--leading-base: 1.5;--leading-loose: 1.65;--tracking-tight: -.02em;--tracking-normal: 0;--tracking-wide: .02em;--tracking-mono: .04em;--weight-regular: 400;--weight-medium: 500;--weight-semi: 600;--weight-bold: 700;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--space-9: 56px;--space-10: 72px;--radius-xs: 6px;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--radius-pill: 999px;--stroke-1: 1px;--stroke-2: 1.5px;--stroke-3: 2px;--icon-stroke: 1.75;--shadow-xs: 0 1px 2px rgba(20, 40, 50, .04);--shadow-sm: 0 2px 6px rgba(20, 40, 50, .06), 0 1px 2px rgba(20, 40, 50, .04);--shadow-md: 0 8px 24px rgba(20, 40, 50, .08), 0 2px 6px rgba(20, 40, 50, .04);--shadow-lg: 0 24px 48px rgba(20, 40, 50, .1), 0 6px 12px rgba(20, 40, 50, .04);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-soft: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--dur-fast: .12s;--dur-base: .22s;--dur-slow: .36s;--z-nav: 50;--z-sheet: 100;--z-toast: 200;--z-modal: 300}[data-scheme=warm-teal],html:not([data-scheme]){--bg-app: oklch(96.5% .022 175);--bg-surface: oklch(99% .008 175);--bg-sunken: oklch(94% .025 175);--bg-elevated: #ffffff;--bg-inverse: oklch(28% .05 195);--fg-default: oklch(22% .04 195);--fg-muted: oklch(45% .03 195);--fg-subtle: oklch(60% .02 195);--fg-on-inverse: oklch(96% .02 175);--fg-on-accent: #ffffff;--border-soft: oklch(90% .02 175);--border-base: oklch(82% .025 175);--border-strong: oklch(70% .03 195);--accent: oklch(45% .1 195);--accent-hover: oklch(38% .1 195);--accent-soft: oklch(90% .04 180);--accent-on: #ffffff;--nav-bg: oklch(28% .05 195);--nav-fg: oklch(96% .02 175);--nav-fg-muted: oklch(70% .03 195);--nav-active: oklch(75% .1 175)}[data-scheme=default-light]{--bg-app: #ffffff;--bg-surface: #ffffff;--bg-sunken: oklch(97% .005 200);--bg-elevated: #ffffff;--bg-inverse: oklch(20% .02 200);--fg-default: oklch(20% .02 200);--fg-muted: oklch(45% .02 200);--fg-subtle: oklch(65% .015 200);--fg-on-inverse: #ffffff;--fg-on-accent: #ffffff;--border-soft: oklch(94% .005 200);--border-base: oklch(88% .01 200);--border-strong: oklch(75% .02 200);--accent: oklch(50% .1 195);--accent-hover: oklch(42% .1 195);--accent-soft: oklch(95% .025 195);--accent-on: #ffffff;--nav-bg: #ffffff;--nav-fg: oklch(20% .02 200);--nav-fg-muted: oklch(60% .015 200);--nav-active: oklch(50% .1 195)}[data-scheme=warm-support]{--bg-app: oklch(96% .025 80);--bg-surface: oklch(98% .018 80);--bg-sunken: oklch(93% .03 80);--bg-elevated: oklch(99% .012 80);--bg-inverse: oklch(30% .04 30);--fg-default: oklch(25% .03 35);--fg-muted: oklch(48% .025 35);--fg-subtle: oklch(62% .02 35);--fg-on-inverse: oklch(96% .02 80);--fg-on-accent: #ffffff;--border-soft: oklch(91% .025 70);--border-base: oklch(83% .03 65);--border-strong: oklch(65% .04 50);--accent: oklch(50% .11 30);--accent-hover: oklch(43% .11 30);--accent-soft: oklch(93% .04 40);--accent-on: #ffffff;--nav-bg: oklch(98% .018 80);--nav-fg: oklch(25% .03 35);--nav-fg-muted: oklch(60% .025 35);--nav-active: oklch(50% .11 30)}[data-scheme=low-cog]{--bg-app: oklch(98% .005 200);--bg-surface: #ffffff;--bg-sunken: oklch(96% .008 200);--bg-elevated: #ffffff;--bg-inverse: oklch(35% .04 200);--fg-default: oklch(28% .025 200);--fg-muted: oklch(50% .02 200);--fg-subtle: oklch(68% .015 200);--fg-on-inverse: #ffffff;--fg-on-accent: #ffffff;--border-soft: oklch(94% .008 200);--border-base: oklch(87% .012 200);--border-strong: oklch(72% .02 200);--accent: oklch(60% .06 195);--accent-hover: oklch(52% .07 195);--accent-soft: oklch(94% .018 195);--accent-on: #ffffff;--nav-bg: oklch(94% .012 200);--nav-fg: oklch(35% .04 200);--nav-fg-muted: oklch(60% .025 200);--nav-active: oklch(50% .07 195)}[data-scheme=primary-teal]{--bg-app: #ffffff;--bg-surface: #ffffff;--bg-sunken: oklch(97% .01 195);--bg-elevated: #ffffff;--bg-inverse: oklch(38% .13 195);--fg-default: oklch(20% .03 195);--fg-muted: oklch(45% .025 195);--fg-subtle: oklch(62% .02 195);--fg-on-inverse: #ffffff;--fg-on-accent: #ffffff;--border-soft: oklch(93% .01 195);--border-base: oklch(86% .018 195);--border-strong: oklch(70% .03 195);--accent: oklch(42% .13 195);--accent-hover: oklch(35% .13 195);--accent-soft: oklch(93% .04 195);--accent-on: #ffffff;--nav-bg: oklch(38% .13 195);--nav-fg: #ffffff;--nav-fg-muted: oklch(85% .04 195);--nav-active: oklch(85% .1 175)}[data-mode=dark]{--bg-app: oklch(18% .02 200);--bg-surface: oklch(22% .02 200);--bg-sunken: oklch(15% .02 200);--bg-elevated: oklch(26% .025 200);--bg-inverse: oklch(96% .02 175);--fg-default: oklch(95% .015 175);--fg-muted: oklch(72% .02 195);--fg-subtle: oklch(55% .025 195);--fg-on-inverse: oklch(20% .03 200);--border-soft: oklch(28% .025 200);--border-base: oklch(35% .03 200);--border-strong: oklch(50% .035 200);--shadow-xs: 0 1px 2px rgba(0,0,0,.3);--shadow-sm: 0 2px 6px rgba(0,0,0,.35), 0 1px 2px rgba(0,0,0,.25);--shadow-md: 0 8px 24px rgba(0,0,0,.4), 0 2px 6px rgba(0,0,0,.25);--shadow-lg: 0 24px 48px rgba(0,0,0,.5), 0 6px 12px rgba(0,0,0,.3)}[data-mode=dark][data-scheme=warm-teal],[data-mode=dark]:not([data-scheme]){--accent: oklch(72% .1 175);--accent-hover: oklch(78% .1 175);--accent-soft: oklch(35% .06 195);--nav-bg: oklch(14% .03 195);--nav-fg: oklch(95% .02 175);--nav-fg-muted: oklch(60% .03 195);--nav-active: oklch(75% .1 175)}[data-mode=dark][data-scheme=default-light]{--accent: oklch(70% .1 195);--accent-hover: oklch(78% .1 195);--accent-soft: oklch(32% .05 195);--nav-bg: oklch(22% .02 200);--nav-fg: oklch(95% .015 175);--nav-fg-muted: oklch(60% .02 195);--nav-active: oklch(70% .1 195)}[data-mode=dark][data-scheme=warm-support]{--accent: oklch(72% .1 35);--accent-hover: oklch(78% .1 35);--accent-soft: oklch(35% .06 35);--nav-bg: oklch(20% .025 30);--nav-fg: oklch(95% .02 80);--nav-fg-muted: oklch(60% .025 35);--nav-active: oklch(72% .1 35)}[data-mode=dark][data-scheme=low-cog]{--accent: oklch(70% .06 195);--accent-hover: oklch(78% .06 195);--accent-soft: oklch(30% .03 195);--nav-bg: oklch(22% .02 200);--nav-fg: oklch(95% .015 175);--nav-fg-muted: oklch(60% .02 195);--nav-active: oklch(70% .06 195)}[data-mode=dark][data-scheme=primary-teal]{--accent: oklch(72% .13 195);--accent-hover: oklch(78% .13 195);--accent-soft: oklch(35% .06 195);--nav-bg: oklch(28% .1 195);--nav-fg: #ffffff;--nav-fg-muted: oklch(75% .04 195);--nav-active: oklch(80% .13 175)}:root{--cream: var(--bg-app);--warm-white: var(--bg-surface);--ink: var(--fg-default);--ink-light: var(--fg-muted);--ink-muted: var(--fg-subtle);--amber: var(--accent);--amber-hover: var(--accent-hover);--amber-light: var(--nav-active);--amber-pale: var(--accent-soft);--border: var(--border-base);--shadow: var(--shadow-sm);--radius: var(--radius-lg);--sage: #4A7B5E;--sage-light: #7FB896;--sage-pale: #E8F4ED;--terracotta: #C4542A;--terra-pale: #FAEEE8;--sky: #3A6B8A;--sky-pale: #E5EFF5;--plum: #6B3A6B;--plum-pale: #F2E8F2}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{max-width:100vw;overflow-x:hidden;overflow-x:clip}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-base);color:var(--fg-default);background:var(--bg-app);min-height:100vh;min-height:100dvh;display:flex;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}button{font:inherit;color:inherit;cursor:pointer}input,textarea,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}::selection{background:var(--accent-soft);color:var(--fg-default)}#app{flex:1;min-width:0;max-width:100vw;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;overflow-x:hidden;overflow-x:clip}.sidebar{width:260px;min-height:100vh;background:var(--nav-bg);padding:calc(var(--space-7) + env(safe-area-inset-top,0px)) var(--space-5) calc(var(--space-7) + env(safe-area-inset-bottom,0px)) var(--space-5);display:flex;flex-direction:column;position:fixed;left:0;top:0;bottom:0;z-index:var(--z-sheet);transition:width var(--dur-base) var(--ease-soft),padding var(--dur-base) var(--ease-soft);overflow:hidden}.sidebar.collapsed{width:64px;padding:var(--space-7) var(--space-3)}.sidebar-toggle{position:absolute;top:var(--space-6);right:-14px;width:28px;height:28px;background:var(--accent);border:none;border-radius:var(--radius-pill);color:var(--accent-on);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md);transition:transform var(--dur-base) var(--ease-soft),background var(--dur-fast);z-index:10;flex-shrink:0}.sidebar-toggle:hover{background:var(--accent-hover)}.sidebar.collapsed .sidebar-toggle{transform:rotate(180deg)}.logo{font-family:var(--font-sans);font-size:var(--text-xl);font-weight:var(--weight-bold);color:var(--nav-active);letter-spacing:var(--tracking-tight);margin-bottom:var(--space-1);white-space:nowrap;overflow:hidden;transition:opacity var(--dur-fast),max-height var(--dur-base)}.sidebar.collapsed .logo{opacity:0;max-height:0;margin:0}.logo-sub{font-size:var(--text-xs);color:var(--nav-fg-muted);letter-spacing:var(--tracking-wide);text-transform:uppercase;margin-bottom:var(--space-7);white-space:nowrap;overflow:hidden;transition:opacity var(--dur-fast),max-height var(--dur-base),margin var(--dur-base)}.sidebar.collapsed .logo-sub{opacity:0;max-height:0;margin:0}.logo-icon{color:var(--nav-active);text-align:center;margin-bottom:var(--space-7);display:none;white-space:nowrap;width:28px;height:28px;margin-left:auto;margin-right:auto}.sidebar.collapsed .logo-icon{display:flex;align-items:center;justify-content:center}.family-members{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-7);padding-bottom:var(--space-6);border-bottom:1px solid rgba(255,255,255,.08);transition:all var(--dur-base);overflow:hidden}.sidebar.collapsed .family-members{flex-direction:column;align-items:center;gap:6px}.member-dot{width:34px;height:34px;border-radius:var(--radius-pill);display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:var(--weight-semi);color:#fff;cursor:pointer;transition:transform var(--dur-fast),box-shadow var(--dur-fast);border:2px solid transparent;flex-shrink:0}.member-dot:hover{transform:scale(1.1)}.member-dot.active{border-color:var(--nav-active)}nav{flex:1;display:flex;flex-direction:column;gap:var(--space-1)}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:11px var(--space-4);border-radius:var(--radius-sm);color:var(--nav-fg-muted);cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast),padding var(--dur-base),justify-content var(--dur-fast);font-size:var(--text-sm);font-weight:var(--weight-medium);border:none;background:none;width:100%;text-align:left;white-space:nowrap;overflow:hidden;position:relative}.nav-item:hover{background:#ffffff0f;color:var(--nav-fg)}.nav-item.active{background:#ffffff1a;color:var(--nav-active)}.nav-item .icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.nav-item .icon svg{display:block}.sidebar.collapsed .nav-item{padding:11px 0;justify-content:center;gap:0}.sidebar.collapsed .nav-item .nav-label,.sidebar.collapsed .nav-item .nav-badge{display:none}.sidebar.collapsed .nav-item:hover:after{content:attr(data-label);position:absolute;left:56px;top:50%;transform:translateY(-50%);background:var(--bg-inverse, oklch(22% .02 200));color:#fff;font-size:var(--text-xs);padding:5px var(--space-3);border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;z-index:999;box-shadow:var(--shadow-md)}.nav-badge{margin-left:auto;background:var(--terracotta);color:#fff;font-size:10px;padding:2px 7px;border-radius:var(--radius-pill);font-weight:var(--weight-semi);transition:opacity var(--dur-fast)}.sidebar-footer{padding-top:var(--space-5);border-top:1px solid rgba(255,255,255,.08);font-size:var(--text-xs);color:var(--nav-fg-muted);white-space:nowrap;overflow:hidden;transition:opacity var(--dur-fast);display:flex;align-items:center;justify-content:space-between}.footer-text{transition:opacity var(--dur-fast);overflow:hidden;white-space:nowrap}.sidebar.collapsed .footer-text{opacity:0;width:0}.sidebar.collapsed .sidebar-footer{justify-content:center;opacity:1!important;pointer-events:auto!important}.settings-btn{background:none;border:none;color:var(--nav-fg-muted);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:transform var(--dur-base),background var(--dur-fast),color var(--dur-fast);flex-shrink:0}.settings-btn:hover{transform:rotate(60deg);background:#ffffff14;color:var(--nav-fg)}.gear-btn{background:#ffffff14!important;border:1px dashed rgba(255,255,255,.2)!important;cursor:pointer;transition:background var(--dur-fast),transform var(--dur-fast)!important;color:var(--nav-fg-muted)!important;display:flex!important;align-items:center;justify-content:center;border-radius:var(--radius-sm)!important}.gear-btn:hover{background:#ffffff29!important;transform:rotate(30deg) scale(1.1)!important;color:var(--nav-fg)!important}.members-modal{width:520px;max-width:94vw;max-height:85vh;overflow-y:auto}.members-modal h3{font-family:var(--font-sans);font-size:var(--text-lg);font-weight:var(--weight-semi);margin-bottom:var(--space-1)}.members-modal .modal-sub{font-size:var(--text-sm);color:var(--fg-subtle);margin-bottom:var(--space-6)}.member-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3);padding:10px var(--space-4);border-radius:var(--radius-md);background:var(--bg-app);border:1px solid var(--border-base);margin-bottom:var(--space-2);transition:box-shadow var(--dur-fast)}.member-row:hover{box-shadow:var(--shadow-sm)}.member-color-panel{flex-basis:100%;display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border-soft)}.member-color-panel-actions{display:flex;gap:var(--space-2)}.member-avatar-lg{width:40px;height:40px;border-radius:var(--radius-pill);display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:var(--weight-bold);color:#fff;flex-shrink:0}.member-row-name{flex:1;min-width:0;font-size:var(--text-sm);font-weight:var(--weight-semi)}.color-swatch{width:28px;height:28px;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--radius-pill);border:3px solid white;box-shadow:0 0 0 2px var(--border-base);cursor:pointer;flex-shrink:0;position:relative;overflow:hidden;transition:transform var(--dur-fast)}.color-swatch:hover{transform:scale(1.15)}.color-swatch input[type=color]{position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;width:calc(100% + 8px);height:calc(100% + 8px);opacity:0;cursor:pointer;border:none;padding:0}.add-member-row{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);background:var(--accent-soft);border:1px dashed var(--accent);border-radius:var(--radius-md);margin-top:var(--space-4)}.add-member-top-row{display:flex;gap:var(--space-3);align-items:center}.add-member-top-row input[type=text]{flex:1;background:var(--bg-surface)}.add-member-color-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.add-member-color-label{font-size:var(--text-2xs);color:var(--fg-subtle);font-weight:var(--weight-semi);white-space:nowrap}.palette-grid{display:flex;gap:6px;flex-wrap:wrap;flex:1}.palette-strip{display:flex;gap:6px;flex-wrap:wrap;margin:var(--space-3) 0 var(--space-1)}.palette-dot{width:26px;height:26px;border-radius:var(--radius-pill);cursor:pointer;border:3px solid transparent;transition:transform var(--dur-fast),border-color var(--dur-fast);flex-shrink:0}.palette-dot:hover{transform:scale(1.2)}.palette-dot.selected{border-color:var(--fg-default);transform:scale(1.15)}#app-shell{flex:1;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.main-content{margin-left:260px;flex:1;min-width:0;display:flex;flex-direction:column;transition:margin-left var(--dur-base) var(--ease-soft)}.sidebar.collapsed~.main-content{margin-left:64px}.topbar{background:var(--bg-surface);border-bottom:1px solid var(--border-soft);padding:calc(18px + env(safe-area-inset-top,0px)) calc(36px + env(safe-area-inset-right,0px)) 18px calc(36px + env(safe-area-inset-left,0px));display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:var(--z-nav);box-shadow:var(--shadow-xs)}.page-title{font-family:var(--font-sans);font-size:var(--text-lg);font-weight:var(--weight-semi);color:var(--fg-default);letter-spacing:var(--tracking-tight)}.page-date{font-size:var(--text-sm);color:var(--fg-subtle);margin-top:2px;font-family:var(--font-mono);letter-spacing:var(--tracking-mono)}.topbar-actions{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}.btn{padding:9px 18px;border-radius:var(--radius-md);border:none;cursor:pointer;font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-medium);transition:all var(--dur-fast);display:inline-flex;align-items:center;gap:var(--space-2)}.btn-primary{background:var(--accent);color:var(--accent-on)}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;color:var(--fg-muted);border:1px solid var(--border-base)}.btn-ghost:hover{background:var(--bg-sunken)}.btn-danger{background:var(--terracotta);color:#fff}.btn-sm{padding:6px 12px;font-size:var(--text-xs)}.content{padding:var(--space-7) 36px;flex:1}.card{background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm)}.card-title{font-family:var(--font-sans);font-size:var(--text-md);font-weight:var(--weight-semi);color:var(--fg-default);margin-bottom:var(--space-4);display:flex;align-items:center;justify-content:space-between;letter-spacing:var(--tracking-tight)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5)}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-5)}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-bottom:var(--space-6)}.stat-card{background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-sm);font:inherit;color:inherit;text-align:left;width:100%;cursor:default;display:block}.stat-card-link{cursor:pointer;transition:border-color var(--dur-fast),box-shadow var(--dur-fast),transform var(--dur-fast)}.stat-card-link:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-1px)}.stat-card-link:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.stat-card-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stat-label{font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--fg-subtle);margin-bottom:var(--space-2);font-weight:var(--weight-semi)}.stat-value{font-family:var(--font-sans);font-size:var(--text-3xl);font-weight:var(--weight-bold);color:var(--fg-default);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}.stat-sub{font-size:var(--text-xs);color:var(--fg-subtle);margin-top:var(--space-1)}.stat-dot{width:8px;height:8px;border-radius:var(--radius-pill);display:inline-block;margin-right:var(--space-1)}input[type=text],input[type=number],input[type=date],select,textarea{font-family:var(--font-sans);font-size:var(--text-sm);padding:9px var(--space-4);border:1px solid var(--border-base);border-radius:var(--radius-sm);background:var(--bg-sunken);color:var(--fg-default);outline:none;transition:border-color var(--dur-fast)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input[type=text]{flex:1}.code-input::placeholder{text-transform:none;letter-spacing:normal;font-weight:400}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:var(--bg-surface);border-radius:var(--radius-xl);padding:var(--space-7);width:440px;max-width:90vw;max-height:88vh;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;box-shadow:var(--shadow-lg)}.modal h3{font-family:var(--font-sans);font-size:var(--text-lg);font-weight:var(--weight-semi);margin-bottom:var(--space-5);letter-spacing:var(--tracking-tight)}.form-group{margin-bottom:var(--space-4)}.form-label{font-size:var(--text-xs);font-weight:var(--weight-semi);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--fg-subtle);display:block;margin-bottom:var(--space-2)}.form-group input,.form-group select,.form-group textarea{width:100%}.modal-actions{display:flex;gap:var(--space-3);justify-content:flex-end;margin-top:var(--space-6);position:sticky;bottom:-32px;margin-bottom:-32px;padding:var(--space-4) 0 var(--space-7);background:linear-gradient(to bottom,transparent,var(--bg-surface) 16px)}.tag{display:inline-block;padding:3px 10px;border-radius:var(--radius-pill);font-size:var(--text-2xs);font-weight:var(--weight-semi);text-transform:uppercase;letter-spacing:var(--tracking-wide)}.tag-amber{background:var(--accent-soft);color:var(--accent)}.tag-sage{background:#e8f4ed;color:#4a7b5e}.tag-terra{background:#faeee8;color:#c4542a}.tag-sky{background:#e5eff5;color:#3a6b8a}.tag-plum{background:#f2e8f2;color:#6b3a6b}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5)}.section-title{font-family:var(--font-sans);font-size:var(--text-lg);font-weight:var(--weight-semi);letter-spacing:var(--tracking-tight)}.empty{text-align:center;padding:var(--space-8) var(--space-5);color:var(--fg-subtle)}.empty-icon{width:44px;height:44px;margin:0 auto var(--space-3);opacity:.4;display:flex;align-items:center;justify-content:center}.empty p{font-size:var(--text-sm)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-base);border-radius:var(--radius-pill)}.page{animation:fadeIn var(--dur-base) var(--ease-out)}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.feature-loading-bar{position:sticky;top:0;left:0;right:0;height:3px;background:var(--border-soft);z-index:60;overflow:hidden}.feature-loading-progress{height:100%;width:35%;background:linear-gradient(90deg,var(--accent),var(--nav-active));border-radius:0 2px 2px 0;animation:loading-sweep 1.3s ease-in-out infinite}@keyframes loading-sweep{0%{transform:translate(-200%)}to{transform:translate(500%)}}.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--nav-bg);padding:var(--space-2) var(--space-1) env(safe-area-inset-bottom,var(--space-2));z-index:var(--z-nav);border-top:1px solid rgba(255,255,255,.08);flex-direction:row;flex:0 0 auto;gap:0;justify-content:space-around;align-items:stretch;box-shadow:0 -4px 20px #00000026}html.keyboard-open .mobile-nav{display:none!important}.mobile-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);color:var(--nav-fg-muted);font-size:var(--text-2xs);font-weight:var(--weight-medium);cursor:pointer;border:none;background:none;transition:color var(--dur-fast) var(--ease-out);flex:1;border-radius:var(--radius-sm);letter-spacing:var(--tracking-wide)}.mobile-nav-item:active{opacity:.7}.mobile-nav-item.active{color:var(--nav-active)}.mobile-nav-item svg{display:block}.sidebar-backdrop{display:none}.mobile-menu-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;background:none;border:none;cursor:pointer;border-radius:var(--radius-sm);padding:6px;gap:5px;flex-direction:column;flex-shrink:0;transition:background var(--dur-fast)}.mobile-menu-btn:hover{background:var(--bg-sunken)}.mobile-menu-btn span{display:block;width:22px;height:2px;background:var(--fg-default);border-radius:2px;transition:transform var(--dur-base) var(--ease-soft),opacity var(--dur-fast);transform-origin:center}.mobile-menu-btn.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.mobile-menu-btn.open span:nth-child(2){opacity:0;transform:scaleX(0)}.mobile-menu-btn.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}@media (min-width: 1440px){.topbar{padding:20px 56px}.content{padding:var(--space-8) 56px}}@media (max-width: 1024px){.sidebar{width:220px}.main-content{margin-left:220px}.sidebar.collapsed~.main-content{margin-left:64px}.topbar{padding:var(--space-4) var(--space-6)}.content{padding:var(--space-6) var(--space-5)}.stat-grid{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:1fr 1fr}}@media (max-width: 900px){.sidebar{display:flex!important;width:260px!important;left:-280px;transition:left var(--dur-base) var(--ease-soft),box-shadow var(--dur-base);box-shadow:none;padding:var(--space-7) var(--space-5)!important;overflow-y:auto;overflow-x:hidden}.sidebar.collapsed{width:260px!important;left:-280px;padding:var(--space-7) var(--space-5)!important}.sidebar.collapsed .nav-item{padding:11px var(--space-4);justify-content:flex-start;gap:var(--space-3)}.sidebar.collapsed .nav-item .nav-label{display:inline}.sidebar.collapsed .nav-item .nav-badge{display:inline-flex}.sidebar.collapsed .nav-item:hover:after{display:none}.sidebar.collapsed .logo{opacity:1;max-height:none;margin-bottom:var(--space-1)}.sidebar.collapsed .logo-sub{opacity:1;max-height:none;margin-bottom:var(--space-7)}.sidebar.collapsed .logo-icon{display:none}.sidebar.collapsed .family-members{flex-direction:row;align-items:flex-start;gap:var(--space-2)}.sidebar.collapsed .footer-text{opacity:1;width:auto}.sidebar.collapsed .sidebar-footer{justify-content:space-between}.sidebar .sidebar-toggle{display:none}.sidebar.mobile-open{left:0;box-shadow:4px 0 40px #0006}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:99;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity var(--dur-base) var(--ease-soft)}.sidebar-backdrop.visible{opacity:1;pointer-events:auto}.mobile-menu-btn{display:flex}.topbar{padding:var(--space-4) var(--space-4);padding-left:var(--space-2);gap:var(--space-2);flex-wrap:wrap}.topbar-actions{width:100%;justify-content:flex-start;gap:var(--space-2)}.topbar .btn{padding:7px 12px;font-size:var(--text-xs)}.topbar .btn-icon-only{padding:6px 8px}.mobile-nav{display:flex}.main-content{margin-left:0!important;padding-bottom:72px}.stat-grid{grid-template-columns:repeat(2,1fr)}.grid-2,.grid-3{grid-template-columns:1fr}.content{padding:var(--space-4) var(--space-4)}.page-title{font-size:var(--text-md)}}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:16px}.cal-header{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--ink-muted);text-align:center;padding:6px 0;font-weight:600}.cal-day{aspect-ratio:1;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:6px 4px;cursor:pointer;transition:background .15s;position:relative;font-size:13px;font-weight:500}.cal-day:hover{background:var(--amber-pale)}.cal-day.today{background:var(--amber);color:#fff;font-weight:700}.cal-day.selected{background:var(--ink);color:#fff;font-weight:700}.cal-day.today.selected{background:var(--amber);outline:3px solid var(--ink);outline-offset:-3px}.cal-day.other-month{color:var(--ink-muted);opacity:.4}.cal-day.has-event:after{content:"";width:5px;height:5px;background:var(--sage);border-radius:50%;position:absolute;bottom:4px}.cal-day.today.has-event:after{background:#fff}.cal-day.selected.has-event:after{background:var(--amber-light)}.day-detail{margin-top:20px;background:var(--warm-white);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.day-detail-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:var(--ink);color:#fff}.day-detail-title{font-family:var(--font-sans);font-size:17px;font-weight:600}.day-detail-close{background:#ffffff1f;border:none;color:#fff;width:28px;height:28px;border-radius:50%;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:background .15s}.day-detail-close:hover{background:#ffffff38}.day-detail-body{padding:16px 24px}.day-detail-empty{text-align:center;padding:24px;color:var(--ink-muted);font-size:14px}.day-event-row{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--border)}.day-event-row:last-child{border-bottom:none}.day-event-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.day-event-info{flex:1}.day-event-title{font-size:15px;font-weight:600;color:var(--ink)}.day-event-sub{font-size:12px;color:var(--ink-muted);margin-top:2px}.chores-layout{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}.chores-right{position:sticky;top:0}.chores-cal-card{background:var(--warm-white);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.chores-cal-topbar{background:var(--ink);color:#fff;padding:14px 16px 10px}.chores-cal-topbar-title{font-family:var(--font-sans);font-size:15px;font-weight:600;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}.chores-cal-nav-row{display:flex;align-items:center;gap:6px;margin-bottom:8px}.chores-cal-month-label{flex:1;text-align:center;font-size:13px;font-weight:600;color:#ffffffe6}.chores-cal-nav{background:#ffffff1f;border:none;color:#fff;width:26px;height:26px;border-radius:50%;cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;transition:background .15s}.chores-cal-nav:hover{background:#ffffff38}.chores-cal-view-tabs{display:flex;gap:3px}.chores-cal-tab{flex:1;text-align:center;padding:4px 0;font-size:11px;font-weight:600;letter-spacing:.5px;border-radius:6px;cursor:pointer;border:1px solid rgba(255,255,255,.18);background:transparent;color:#fff9;transition:all .15s}.chores-cal-tab.active{background:var(--amber);color:#fff;border-color:var(--amber)}.chores-cal-body{padding:12px 12px 14px}.chores-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.chores-cal-dow{font-size:9px;text-transform:uppercase;letter-spacing:.8px;color:var(--ink-muted);text-align:center;padding:3px 0 5px;font-weight:700}.chores-cal-day{aspect-ratio:1;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:4px 2px 2px;cursor:pointer;transition:background .15s;position:relative;font-size:11px;font-weight:500}.chores-cal-day:hover{background:var(--amber-pale)}.chores-cal-day.today{background:var(--amber);color:#fff;font-weight:700}.chores-cal-day.selected{background:var(--ink);color:#fff;font-weight:700}.chores-cal-day.today.selected{background:var(--amber);outline:2px solid var(--ink);outline-offset:-2px}.chores-cal-day.other-month{color:var(--ink-muted);opacity:.4}.chores-cal-dot{width:4px;height:4px;border-radius:50%;background:var(--amber);margin-top:2px;flex-shrink:0}.chores-cal-day.today .chores-cal-dot{background:#fff}.chores-cal-day.selected .chores-cal-dot{background:var(--amber-light)}.chores-week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.chores-week-col{display:flex;flex-direction:column;gap:3px}.chores-week-header{text-align:center;font-size:10px;font-weight:700;letter-spacing:.4px;color:var(--ink-muted);padding:4px 2px;border-radius:6px;cursor:pointer;transition:background .15s}.chores-week-header.today-col{color:var(--amber)}.chores-week-header.selected-col{background:var(--ink);color:#fff;border-radius:6px}.chores-week-header:hover{background:var(--amber-pale)}.chores-week-chip{background:var(--amber-pale);color:var(--amber);font-size:10px;border-radius:5px;padding:2px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:opacity .15s}.chores-week-chip:hover{opacity:.75}.chores-week-chip.done-chip{background:var(--sage-pale);color:var(--sage);text-decoration:line-through;opacity:.6}.chores-day-view{padding:4px 0}.chores-day-view-header{font-family:var(--font-sans);font-size:14px;font-weight:600;margin-bottom:10px;color:var(--ink)}.chores-day-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border);font-size:12px}.chores-day-item:last-child{border-bottom:none}.chores-day-detail{margin-top:10px;background:var(--cream);border:1px solid var(--border);border-radius:10px;overflow:hidden;animation:slideDown .18s ease}.chores-day-detail-header{background:var(--sage);color:#fff;padding:8px 12px;display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:600}.chores-day-detail-body{padding:10px 12px}.chore-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.chore-item:last-child{border-bottom:none}.chore-item.chore-overdue{background:#fff5f5;border-radius:8px;padding:10px 8px}.chore-check{width:22px;height:22px;border:2px solid var(--border);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.chore-check.done{background:var(--sage);border-color:var(--sage);color:#fff}.chore-body{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.chore-text{font-size:14px}.chore-text.done{text-decoration:line-through;color:var(--ink-muted)}.chore-dates{display:flex;gap:6px;flex-wrap:wrap}.chore-date-badge{font-size:10px;padding:2px 7px;border-radius:10px;font-weight:500;white-space:nowrap}.chore-sched{background:#e8f4fd;color:#2d6a8f}.chore-due{background:#fff3e0;color:#b05a0a}.chore-due-overdue{background:#fde8e8;color:#c0392b;font-weight:700}.chore-date-row{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.chore-date-label{font-size:12px;color:var(--ink-muted);white-space:nowrap}.member-tag{font-size:11px;padding:3px 9px;border-radius:20px;font-weight:600;color:#fff}.chore-filter-row{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 16px}.chore-filter-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:5px 12px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg-surface);color:var(--ink-muted);cursor:pointer;transition:all .15s}.chore-filter-chip:hover{border-color:var(--accent);color:var(--ink)}.chore-filter-chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-on)}.chore-filter-count{font-size:11px;font-weight:700;opacity:.7}.chore-group{margin-bottom:18px}.chore-group:last-of-type{margin-bottom:0}.chore-group-title{font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--ink-muted);font-weight:700;margin:6px 0 4px;display:flex;align-items:center;gap:8px}.chore-group-count{font-weight:600;letter-spacing:0;opacity:.7}.chore-cat-select{font-size:12px;padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--ink-muted);max-width:150px;cursor:pointer}.shop-section{margin-bottom:24px}.shop-section-title{font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--ink-muted);font-weight:600;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border)}.shop-aisle-group{margin-bottom:6px}.shop-aisle-title{font-size:11px;color:var(--ink-muted);font-weight:600;margin-top:10px;margin-bottom:2px}.shop-item{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:14px}.shop-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--amber)}.shop-qty{font-size:12px;color:var(--ink-muted)}.shop-item-editing{flex-wrap:wrap}.shop-edit-name{flex:1;min-width:120px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:14px;background:#fff;color:var(--ink)}.shop-recur-badge{font-size:11px;color:var(--ink-muted);background:var(--cream, #f5efe3);border:1px solid var(--border);border-radius:999px;padding:2px 8px;white-space:nowrap}.shop-last-bought{font-size:11px;color:var(--ink-muted);font-style:italic}.shop-skip-btn{font-size:11px;padding:2px 10px;color:var(--ink-muted);background:var(--cream, #f5efe3);border:1px solid var(--border);border-radius:999px;white-space:nowrap}.shop-skip-btn:hover{color:var(--ink);border-color:var(--amber)}.shop-item-recent{background:color-mix(in srgb,var(--amber) 6%,transparent);border-radius:6px}.shop-source-badge{font-size:11px;color:var(--ink-muted);background:var(--cream, #f5efe3);border:1px solid var(--border);border-radius:999px;padding:2px 8px;white-space:nowrap}.shop-coverage-banner{font-size:13px;color:var(--ink-muted);padding:8px 14px;margin-bottom:12px;background:var(--cream, #f5efe3);border:1px solid var(--border);border-radius:8px}.shop-recur-select{font-size:12px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--ink)}.shop-upcoming{padding:0}.shop-upcoming-summary{display:flex;align-items:center;gap:10px;padding:14px 20px;font-size:13px;font-weight:600;color:var(--ink-muted);cursor:pointer;list-style:none}.shop-upcoming-summary::-webkit-details-marker{display:none}.shop-upcoming-summary:before{content:"▸";font-size:10px;transition:transform .15s ease}.shop-upcoming[open] .shop-upcoming-summary:before{transform:rotate(90deg)}.shop-upcoming-count{margin-left:auto;background:var(--border);color:var(--ink-muted);font-size:11px;padding:2px 8px;border-radius:999px}.shop-upcoming-list{padding:0 20px 16px}.shop-upcoming-item{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:13px;color:var(--ink-muted);border-top:1px solid var(--border)}.shop-upcoming-name{color:var(--ink)}.shop-upcoming-due{font-size:11px;font-style:italic}.budget-bar{height:8px;background:var(--border);border-radius:4px;margin:8px 0 4px;overflow:hidden}.budget-fill{height:100%;border-radius:4px;transition:width .6s ease}.transaction{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);font-size:14px}.transaction:last-child{border-bottom:none}.tx-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}.tx-amount{margin-left:auto;font-weight:600}.tx-amount.expense{color:var(--terracotta)}.tx-amount.income{color:var(--sage)}.meal-planner-wrap{display:flex;flex-direction:column;gap:10px}.planner-week-nav{display:flex;align-items:center;gap:8px;background:var(--cream);border:1px solid var(--border);border-radius:10px;padding:8px 12px}.planner-week-label{font-size:13px;font-weight:600;color:var(--ink);flex:1;text-align:center}.meal-planner-tip{font-size:12px;color:var(--ink-muted);text-align:center;padding:6px 0}.meal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.meal-day-card{background:var(--cream);border:1px solid var(--border);border-radius:12px;padding:12px 10px;min-height:120px;min-width:0;overflow:hidden}.meal-day-name{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--ink-muted);margin-bottom:4px}.day-macros-mini{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px;font-size:10px;line-height:1.2}.day-macros-mini span{background:var(--amber-pale);border-radius:4px;padding:1px 5px;white-space:nowrap}.dmm-cal{color:var(--terracotta, #c0392b);font-weight:600}.dmm-prot{color:var(--sage, #4A7B5E)}.dmm-carb{color:var(--ocean, #3A6B8A)}.dmm-fat{color:#7b5ea7}.dmm-fib{color:#8b5a00}.dmm-pp{background:transparent!important;color:var(--ink-muted);font-style:italic;font-size:9px;padding:1px 0!important;text-transform:uppercase;letter-spacing:.5px}.meal-slot{font-size:12px;margin-bottom:8px;padding:4px;border-radius:8px;transition:background .15s}.meal-slot.drag-over{background:var(--amber-pale);border:2px dashed var(--amber)}.meal-slot-name.drag-source{opacity:.4}.meal-slot-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}.meal-slot-label{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--ink-muted)}.meal-slot-add-btn{background:none;border:none;cursor:pointer;font-size:13px;color:var(--ink-muted);padding:0 2px;line-height:1;border-radius:4px}.meal-slot-add-btn:hover{background:var(--amber-pale);color:var(--amber)}.meal-slot-name{font-weight:500;color:var(--ink);line-height:1.3;cursor:grab;padding:4px 6px;border-radius:6px;font-size:12px;-webkit-user-select:none;user-select:none}.meal-slot-name:hover{background:var(--amber-pale)}.meal-slot-name:active{cursor:grabbing}.meal-slot-name.draggable{cursor:grab}.meal-slot-empty{color:var(--ink-muted);padding:4px 6px;cursor:pointer;font-size:13px}.meal-slot-empty:hover{color:var(--ink)}.meal-slot-name.has-recipe{cursor:pointer}.meal-slot-name.has-recipe:hover{background:var(--amber-pale);text-decoration:none}.meal-recipe-link-badge{font-size:10px;color:var(--sage);margin-top:3px;display:flex;align-items:center;gap:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meal-recipe-link-badge span{overflow:hidden;text-overflow:ellipsis}.meal-coverage-badge{display:inline-flex;align-items:center;flex-shrink:0}.meal-coverage-badge.covered{color:var(--sage, #4A7B5E)}.meal-missed-card{padding:14px 16px}.meal-missed-title{font-size:13px;font-weight:600;margin-bottom:8px}.meal-missed-list{display:flex;flex-direction:column;gap:6px}.meal-missed-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 0;border-top:1px solid var(--border)}.meal-missed-row:first-child{border-top:none;padding-top:0}.meal-missed-name{font-size:13px;font-weight:500}.meal-missed-when{font-size:12px;color:var(--ink-muted)}.meal-missed-row .btn{margin-left:auto}.meal-edit-wrap{margin-top:4px}.meal-edit-actions{display:flex;flex-direction:column;gap:6px;margin-top:6px}.meal-edit-actions-primary{display:flex;gap:6px;justify-content:flex-end}.meal-edit-remove{align-self:flex-start}.meal-recipe-picker{margin-top:8px;border-top:1px solid var(--border);padding-top:6px}.meal-recipe-picker-label{font-size:10px;color:var(--ink-muted);margin-bottom:4px}.meal-recipe-chips{display:flex;flex-wrap:wrap;gap:4px}.recipe-chip{font-size:10px;padding:2px 8px;border-radius:12px;background:var(--amber-pale);color:var(--amber-dark, #8b5a00);border:1px solid var(--amber, #D4870A)40;cursor:pointer}.recipe-chip:hover{background:var(--amber, #D4870A);color:#fff}.meal-recipe-empty-hint{font-size:11px;color:var(--ink-muted);display:flex;align-items:center;gap:4px;flex-wrap:wrap}.meal-recipe-nomatch{font-size:11px;color:var(--ink-muted);padding:4px 0;font-style:italic}.btn-link{background:none;border:none;color:var(--amber, #D4870A);cursor:pointer;font-size:11px;padding:0;text-decoration:underline}.meal-items-list{display:flex;flex-direction:column;gap:3px}.meal-item-row{display:flex;align-items:center;gap:4px;width:100%}.meal-item-text{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.meal-item-edit-btn{background:none;border:none;cursor:pointer;font-size:11px;padding:0 2px;line-height:1;color:var(--ink-muted);border-radius:4px;opacity:.6}.meal-slot-name:hover .meal-item-edit-btn{opacity:1}.meal-item-edit-btn:hover{background:var(--warm-white);color:var(--ink)}.meal-item-remove-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;background:none;border:none;cursor:pointer;font-size:16px;line-height:1;padding:0;color:var(--ink-muted);border-radius:50%;opacity:.6;flex-shrink:0}.meal-slot-name:hover .meal-item-remove-btn{opacity:1}.meal-item-remove-btn:hover{background:#fdecea;color:#c0392b;opacity:1}@media (hover: none){.meal-item-edit-btn{opacity:1}.meal-item-remove-btn{opacity:1;background:#fdecea;color:#c0392b}}.meal-member-badges{display:inline-flex;gap:2px;flex-shrink:0}.meal-member-chip{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:9px;font-weight:700;color:#fff;letter-spacing:0;border:1.5px solid var(--warm-white, #fff);box-shadow:0 0 0 1px #0000000d}.meal-member-chip.compact{width:16px;height:16px;font-size:8px;border-width:1px}.meal-member-picker{margin-top:6px;border-top:1px solid var(--border);padding-top:6px}.meal-member-picker-label{font-size:10px;color:var(--ink-muted);margin-bottom:4px}.meal-member-picker-chips{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.meal-member-toggle{font-size:10px;padding:2px 8px;border-radius:12px;background:transparent;border:1px solid var(--border);cursor:pointer;font-weight:600;transition:background .1s,color .1s,border-color .1s}.meal-member-toggle.on{color:#fff}.meal-member-toggle:not(.on):hover{background:var(--warm-white)}.meal-member-picker-hint{font-size:10px;color:var(--ink-muted);font-style:italic;margin-left:4px}.btn-icon-only{padding:6px 8px}.settings-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--border)}.settings-row:last-of-type{border-bottom:none}.settings-row-text{flex:1;min-width:0}.settings-row-title{font-weight:600;font-size:14px;color:var(--ink);margin-bottom:4px}.settings-row-sub{font-size:12px;color:var(--ink-muted);line-height:1.4}.settings-toggle{width:40px;height:22px;border-radius:11px;cursor:pointer;position:relative;transition:background .2s;flex-shrink:0}.settings-toggle:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.settings-toggle-knob{position:absolute;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:all .2s;box-shadow:0 1px 2px #00000026}.add-planner-section{margin-top:14px}.add-planner-section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin-bottom:8px}.add-planner-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.add-planner-check{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:14px;color:var(--ink);background:#fff;transition:background .15s,border-color .15s;-webkit-user-select:none;user-select:none}.add-planner-check:hover{background:var(--cream, #f9f6ef)}.add-planner-check.on{background:var(--amber-light, #fff3d6);border-color:var(--amber, #d4870a);font-weight:600}.add-planner-check input[type=checkbox]{margin:0;accent-color:var(--amber, #d4870a);cursor:pointer}.recipe-empty-state{text-align:center;padding:60px 20px}.recipe-empty-icon{font-size:52px;margin-bottom:12px}.recipe-empty-title{font-size:18px;font-weight:600;color:var(--ink);margin-bottom:6px}.recipe-empty-sub{font-size:14px;color:var(--ink-muted)}.recipe-book-wrap{display:flex;flex-direction:column;gap:14px}.recipe-book-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}.recipe-search-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.recipe-search-input-wrap{position:relative;display:flex;align-items:center;flex:1;min-width:200px}.recipe-search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);display:flex;align-items:center;color:var(--ink-muted);pointer-events:none;-webkit-user-select:none;user-select:none}.recipe-search-input{width:100%;padding:8px 32px 8px 36px;border:1px solid var(--border);border-radius:10px;font-size:13px;background:var(--warm-white);color:var(--ink);outline:none;transition:border-color .15s,box-shadow .15s}.recipe-search-input:focus{border-color:var(--amber);box-shadow:0 0 0 3px var(--amber-pale)}.recipe-search-clear{position:absolute;right:8px;background:none;border:none;cursor:pointer;font-size:12px;color:var(--ink-muted);padding:2px 4px;border-radius:4px}.recipe-search-clear:hover{background:var(--border);color:var(--ink)}.recipe-search-count{font-size:12px;color:var(--ink-muted);white-space:nowrap}.recipe-no-results{grid-column:1 / -1;text-align:center;padding:40px 20px;color:var(--ink-muted);font-size:14px}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.recipe-card{background:var(--cream);border:1px solid var(--border);border-radius:14px;overflow:hidden;cursor:pointer;transition:box-shadow .15s,transform .1s}.recipe-card:hover{box-shadow:0 4px 16px #0000001a;transform:translateY(-2px)}.recipe-card-body{padding:14px 14px 12px}.recipe-card-name{font-weight:600;font-size:14px;color:var(--ink);margin-bottom:4px}.recipe-card-desc{font-size:12px;color:var(--ink-muted);margin-bottom:8px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-meta{display:flex;gap:10px;font-size:11px;color:var(--ink-muted);margin-bottom:6px;flex-wrap:wrap}.recipe-card-tags{display:flex;flex-wrap:wrap;gap:4px}.recipe-tag{font-size:10px;padding:2px 7px;border-radius:10px;border:1px solid;font-weight:500}.recipe-add-card{background:var(--cream);border:2px dashed var(--border);border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px;cursor:pointer;transition:border-color .15s,background .15s;min-height:120px}.recipe-add-card:hover{border-color:var(--amber);background:var(--amber-pale)}.recipe-add-icon{font-size:28px;margin-bottom:8px}.recipe-add-label{font-size:13px;color:var(--ink-muted);font-weight:500}.recipe-detail{display:flex;flex-direction:column;gap:12px}.recipe-detail-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.recipe-detail-card{padding:20px}.recipe-detail-title{font-size:22px;font-weight:700;color:var(--ink);margin-bottom:6px}.recipe-detail-desc{font-size:14px;color:var(--ink-muted);margin-bottom:14px}.recipe-detail-meta{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:12px}.recipe-meta-item{text-align:center}.rmi-label{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--ink-muted)}.rmi-val{font-size:16px;font-weight:600;color:var(--ink)}.recipe-detail-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.macros-row{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.macro-pill{flex:1;min-width:70px;border-radius:12px;padding:10px 8px;text-align:center}.macro-pill.calories{background:#fff3e0}.macro-pill.protein{background:#e8f5e9}.macro-pill.carbs{background:#e3f2fd}.macro-pill.fat{background:#fce4ec}.macro-pill.fiber{background:#fff8e1}.macro-val{font-size:18px;font-weight:700;color:var(--ink)}.macro-label{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--ink-muted);margin-top:2px}.recipe-section{margin-top:18px}.recipe-section-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--ink-muted);margin-bottom:10px}.ingredient-list{display:flex;flex-direction:column;gap:6px}.ingredient-row{display:flex;gap:10px;align-items:baseline;font-size:14px}.ingredient-qty{font-weight:600;color:var(--amber, #D4870A);min-width:70px;font-size:13px}.ingredient-name{color:var(--ink)}.recipe-instructions{font-size:14px;color:var(--ink);line-height:1.7}.recipe-detail-actions{margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.recipe-source-url{font-size:12px;color:var(--ink-muted);margin-bottom:10px;word-break:break-all}.recipe-source-url a{color:var(--sage)}.recipe-form-card{padding:20px}.recipe-form-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:18px}.recipe-form-header h3{font-size:18px;font-weight:700;margin:0}.recipe-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.recipe-macros-section{margin-top:16px;border-top:1px solid var(--border);padding-top:16px}.recipe-macros-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px;margin-top:10px}.tab-toggle{display:flex;background:var(--cream);border:1px solid var(--border);border-radius:10px;padding:3px;gap:3px}.tab-btn{padding:6px 14px;border-radius:7px;border:none;background:transparent;font-size:13px;font-weight:500;color:var(--ink-muted);cursor:pointer;transition:all .15s}.tab-btn.active{background:#fff;color:var(--ink);box-shadow:0 1px 4px #0000001a}.tab-btn:hover:not(.active){color:var(--ink)}.auto-plan-modal{padding:20px}.auto-plan-header{margin-bottom:20px}.auto-plan-header h3{font-size:18px;font-weight:700;margin:0 0 14px}.auto-plan-steps{display:flex;gap:6px;flex-wrap:wrap}.auto-plan-step{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-muted)}.auto-plan-step.active .auto-plan-step-dot{background:var(--amber);color:#fff}.auto-plan-step.done .auto-plan-step-dot{background:var(--sage);color:#fff}.auto-plan-step-dot{width:20px;height:20px;border-radius:50%;background:var(--border);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0}.auto-plan-step-label{font-size:11px;white-space:nowrap}.auto-plan-body{padding:4px 0 16px}.day-toggle-row{display:flex;flex-wrap:wrap;gap:6px}.day-toggle-btn{padding:6px 12px;border-radius:8px;border:1px solid var(--border);background:var(--cream);font-size:13px;cursor:pointer;transition:all .15s;font-weight:500}.day-toggle-btn.active{background:var(--amber);color:#fff;border-color:var(--amber)}.auto-plan-options{display:flex;flex-direction:column;gap:8px}.auto-plan-option{padding:10px 14px;border-radius:10px;border:1px solid var(--border);background:var(--cream);font-size:13px;cursor:pointer;text-align:left;transition:all .15s}.auto-plan-option.active{background:var(--amber-pale);border-color:var(--amber);color:var(--ink);font-weight:500}.auto-plan-option:hover{border-color:var(--amber)}.auto-plan-summary{background:var(--cream);border:1px solid var(--border);border-radius:10px;padding:12px 14px}.auto-plan-summary-row{display:flex;justify-content:space-between;font-size:13px;padding:4px 0;border-bottom:1px solid var(--border)}.auto-plan-summary-row:last-child{border-bottom:none}.auto-plan-summary-row span{color:var(--ink-muted)}.scan-recipe-modal{padding:20px}.scan-api-setup{text-align:center;padding:10px 0}.scan-api-icon{font-size:36px;margin-bottom:8px}.scan-api-title{font-size:16px;font-weight:600;margin-bottom:8px}.scan-api-desc{font-size:13px;color:var(--ink-muted);margin-bottom:14px;line-height:1.5}.scan-upload-area{border:2px dashed var(--border);border-radius:12px;padding:30px 20px;text-align:center;cursor:pointer;transition:border-color .15s}.scan-upload-area:hover{border-color:var(--amber)}.scan-upload-icon{font-size:36px;margin-bottom:10px}.scan-upload-label{font-size:14px;color:var(--ink-muted)}.scan-progress{display:flex;flex-direction:column;align-items:center;gap:16px;padding:30px 0;font-size:14px;color:var(--ink-muted)}.scan-spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--amber);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.scan-error{background:#fdecea;color:#c0392b;border-radius:8px;padding:8px 12px;font-size:13px;margin-bottom:12px}.btn-danger-ghost{background:transparent;border:1px solid #e57373;color:#c0392b}.btn-danger-ghost:hover{background:#fdecea}.doc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.doc-card{background:var(--cream);border:1px solid var(--border);border-radius:12px;padding:16px;cursor:pointer;transition:all .15s;position:relative}.doc-card:hover{border-color:var(--amber);transform:translateY(-2px);box-shadow:var(--shadow)}.doc-card.has-file{border-color:var(--sage)}.doc-card.has-file:after{content:"📎";position:absolute;top:10px;right:10px;font-size:13px}.doc-icon{font-size:28px;margin-bottom:10px}.doc-name{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:4px}.doc-meta{font-size:11px;color:var(--ink-muted)}.doc-modal{width:560px;max-width:94vw;max-height:88vh;overflow-y:auto}.doc-modal-icon{font-size:48px;margin-bottom:12px}.doc-modal h3{font-family:var(--font-sans);font-size:22px;font-weight:700;margin-bottom:4px}.doc-modal-cat{font-size:12px;text-transform:uppercase;letter-spacing:1.5px;color:var(--ink-muted);font-weight:600;margin-bottom:20px}.doc-field{margin-bottom:16px}.doc-field-label{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--ink-muted);font-weight:600;margin-bottom:5px}.doc-field-value{font-size:14px;color:var(--ink)}.doc-field input,.doc-field select,.doc-field textarea{width:100%}.doc-field textarea{height:72px;resize:vertical}.file-upload-zone{border:2px dashed var(--border);border-radius:12px;padding:24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;margin:16px 0}.file-upload-zone:hover{border-color:var(--amber);background:var(--amber-pale)}.file-upload-zone.has-file{border-color:var(--sage);background:var(--sage-pale);border-style:solid}.file-upload-zone input[type=file]{display:none}.file-upload-icon{font-size:28px;margin-bottom:8px}.file-upload-label{font-size:13px;font-weight:600;color:var(--ink-light)}.file-upload-sub{font-size:11px;color:var(--ink-muted);margin-top:4px}.file-preview-frame{width:100%;border-radius:10px;border:1px solid var(--border);margin:12px 0;background:var(--cream);overflow:hidden}.file-preview-frame iframe,.file-preview-frame img{width:100%;display:block;border:none}.file-preview-frame iframe{height:340px}.file-preview-frame img{max-height:300px;object-fit:contain}.contact-item{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--border)}.contact-item:last-child{border-bottom:none}.contact-avatar{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;color:#fff;flex-shrink:0}.contact-info{flex:1}.contact-name{font-size:14px;font-weight:600}.contact-role{font-size:12px;color:var(--ink-muted)}.contact-phone{font-size:13px;color:var(--sky)}.announcement{background:var(--cream);border:1px solid var(--border);border-left:4px solid var(--amber);border-radius:12px;padding:16px 20px;margin-bottom:14px}.announcement.sage{border-left-color:var(--sage)}.announcement.terra{border-left-color:var(--terracotta)}.announcement.sky{border-left-color:var(--sky)}.ann-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}.ann-author{font-size:13px;font-weight:600}.ann-time{font-size:11px;color:var(--ink-muted);margin-left:auto}.ann-text{font-size:14px;color:var(--ink-light);line-height:1.6}.ann-emoji{font-size:20px}.ann-compose{background:var(--cream);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:20px}.ann-compose textarea{width:100%;border:none;background:transparent;resize:none;font-size:14px;outline:none;height:60px}.ann-compose-footer{display:flex;align-items:center;gap:10px;margin-top:10px}.dashboard-main-grid{display:grid;grid-template-columns:1fr 340px;gap:28px;margin-top:28px}.dashboard-left{display:flex;flex-direction:column;gap:0}.dashboard-board-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.dashboard-ann-card{padding:0!important;overflow:hidden}.dashboard-ann-item{display:flex;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border)}.dashboard-ann-item:last-child{border-bottom:none}.dashboard-ann-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}.dashboard-ann-body{flex:1;min-width:0}.dashboard-ann-author{font-size:12px;font-weight:600;color:var(--ink)}.dashboard-ann-time{font-size:11px;color:var(--ink-muted);font-weight:400;margin-left:6px}.dashboard-ann-text{font-size:13px;color:var(--ink-light);line-height:1.5;margin-top:2px}.dashboard-ann-compose{padding:12px 16px;border-top:1px solid var(--border);background:var(--cream)}@media (max-width: 1100px){.dashboard-main-grid{grid-template-columns:1fr}}@media (max-width: 900px){.dashboard-main-grid{grid-template-columns:1fr;gap:20px}}.progress-summary{display:flex;align-items:center;gap:16px;padding:14px 0 20px}.progress-ring{position:relative;width:56px;height:56px}.progress-ring svg{transform:rotate(-90deg)}.progress-ring .ring-bg{fill:none;stroke:var(--border);stroke-width:4}.progress-ring .ring-fill{fill:none;stroke:var(--sage);stroke-width:4;stroke-linecap:round;transition:stroke-dashoffset .5s}.ring-pct{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}.input-row{display:flex;gap:10px;margin-top:16px}@media (max-width: 1100px){.stat-grid{grid-template-columns:repeat(2,1fr)}.meal-week{grid-template-columns:repeat(4,minmax(0,1fr))}.doc-grid{grid-template-columns:repeat(2,1fr)}.chores-layout{grid-template-columns:1fr}.chores-right{position:static}}@media (max-width: 1024px){.meal-week{grid-template-columns:repeat(4,minmax(0,1fr))}.doc-grid{grid-template-columns:repeat(2,1fr)}.chores-layout{grid-template-columns:1fr}.chores-right{position:static}.cal-day{font-size:12px}}.meal-day-strip{display:none}@media (max-width: 768px){.meal-week{grid-template-columns:repeat(2,minmax(0,1fr))}.meal-day-card{min-height:90px;padding:10px 8px}.meal-day-strip{display:block;background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:12px 14px;margin-bottom:10px;box-shadow:var(--shadow-sm)}.meal-day-strip-month{font-family:var(--font-sans);font-size:14px;font-weight:700;color:var(--ink);margin-bottom:8px;letter-spacing:-.01em}.meal-day-strip-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.meal-day-strip-cell{background:none;border:none;padding:6px 0 7px;cursor:pointer;color:var(--ink-muted);border-radius:8px;text-align:center;transition:background .15s,color .15s;font-family:inherit}.meal-day-strip-cell .dn{display:block;font-size:13px;font-weight:500;margin-bottom:3px;letter-spacing:.5px}.meal-day-strip-cell .dd{display:block;font-size:16px;font-weight:500}.meal-day-strip-cell:hover{background:var(--accent-soft);color:var(--ink-light)}.meal-day-strip-cell.today .dn,.meal-day-strip-cell.today .dd{color:var(--accent)}.meal-day-strip-cell.selected{background:var(--accent-soft);color:var(--ink)}.meal-day-strip-cell.selected .dn,.meal-day-strip-cell.selected .dd{color:var(--ink);font-weight:700}.meal-week.mobile-single-day{grid-template-columns:1fr}.meal-week.mobile-single-day .meal-day-card{display:none}.meal-week.mobile-single-day .meal-day-card.selected-day{display:block;min-height:0;padding:14px 14px 16px}.meal-week.mobile-single-day .meal-day-card.selected-day .meal-day-name{display:none}.meal-planner-tip{font-size:11px;padding:4px 0 0}.doc-grid{grid-template-columns:1fr}.modal{width:95vw;padding:20px}.members-modal,.doc-modal{width:95vw}.calendar-grid{gap:2px}.cal-day{font-size:11px;padding:4px 2px}.cal-header{font-size:9px;padding:4px 0}.chores-cal-card{border-radius:var(--radius-sm)}.chores-week-chip{font-size:9px}.transaction{font-size:13px}.tx-icon{width:30px;height:30px;font-size:14px}.section-header{flex-wrap:wrap;gap:10px}.topbar-actions{gap:6px}.btn{padding:8px 14px}.btn-sm{padding:5px 10px}.input-row{flex-wrap:wrap}}.fb-bubble-root{position:fixed;bottom:20px;right:20px;z-index:var(--z-toast);display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-3);pointer-events:none}.fb-bubble-root>*{pointer-events:auto}.fb-bubble{width:52px;height:52px;border-radius:var(--radius-pill);background:var(--accent);color:var(--accent-on);border:none;font-size:22px;cursor:pointer;box-shadow:var(--shadow-md);display:flex;align-items:center;justify-content:center;position:relative;transition:transform var(--dur-base) var(--ease-spring),background var(--dur-fast) var(--ease-soft)}.fb-bubble:hover{background:var(--accent-hover);transform:scale(1.05)}.fb-bubble--open{font-size:26px}.fb-bubble-badge{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-pill);background:var(--bg-elevated);color:var(--accent);border:2px solid var(--accent);font-size:11px;font-weight:var(--weight-bold);display:flex;align-items:center;justify-content:center;font-family:var(--font-sans)}.fb-popover{width:340px;max-width:calc(100vw - 40px);background:var(--bg-elevated);border:1px solid var(--border-base);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);animation:fb-pop-in var(--dur-base) var(--ease-spring)}@keyframes fb-pop-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.fb-popover-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.fb-popover-title{font-weight:var(--weight-semi);font-size:var(--text-base);color:var(--fg-default)}.fb-popover-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.fb-textarea{width:100%;min-height:80px;resize:vertical;background:var(--bg-surface);color:var(--fg-default);border:1px solid var(--border-base);border-radius:var(--radius-sm);padding:var(--space-3);font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--leading-base)}.fb-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.fb-checkbox{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--fg-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.fb-checkbox input{margin:0}.fb-checkbox--disabled{color:var(--fg-subtle);cursor:not-allowed;opacity:.7}.fb-checkbox--disabled input{cursor:not-allowed}.fb-hint{background:var(--bg-sunken);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:var(--space-3);font-size:var(--text-xs);color:var(--fg-muted);line-height:var(--leading-base)}.fb-icon-btn{background:transparent;border:none;color:var(--fg-subtle);width:28px;height:28px;border-radius:var(--radius-pill);font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--dur-fast) var(--ease-soft)}.fb-icon-btn:hover{background:var(--bg-sunken);color:var(--fg-default)}.fb-modal{width:560px;max-width:92vw;display:flex;flex-direction:column;gap:var(--space-4);max-height:84vh}.fb-modal--wide{width:880px}.fb-modal .modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--border-soft)}.fb-modal .modal-title{font-size:var(--text-md);font-weight:var(--weight-semi);color:var(--fg-default)}.fb-modal .modal-sub{font-size:var(--text-xs);color:var(--fg-subtle);margin-top:2px}.fb-admin-actions{display:flex;align-items:center;gap:var(--space-2)}.fb-thread-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) 0;min-height:160px}.fb-original{background:var(--bg-sunken);border-radius:var(--radius-sm);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-1)}.fb-original-label{font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--fg-subtle);font-weight:var(--weight-semi)}.fb-original-text{font-size:var(--text-sm);color:var(--fg-default);white-space:pre-wrap;word-wrap:break-word}.fb-msg{display:flex;max-width:100%}.fb-msg--user{justify-content:flex-end}.fb-msg--agent{justify-content:flex-start}.fb-msg-bubble{max-width:82%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);line-height:var(--leading-base);white-space:pre-wrap;word-wrap:break-word}.fb-msg--user .fb-msg-bubble{background:var(--accent);color:var(--accent-on);border-bottom-right-radius:var(--radius-xs)}.fb-msg--agent .fb-msg-bubble{background:var(--bg-sunken);color:var(--fg-default);border-bottom-left-radius:var(--radius-xs)}.fb-msg-bubble a{color:inherit;text-decoration:underline}.fb-msg--thinking .fb-msg-bubble{display:inline-flex;gap:4px;padding:var(--space-3) var(--space-4)}.fb-typing{display:inline-block;color:var(--fg-subtle);animation:fb-typing 1.2s infinite}.fb-typing:nth-child(2){animation-delay:.2s}.fb-typing:nth-child(3){animation-delay:.4s}@keyframes fb-typing{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.fb-closing{border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:var(--space-3);font-size:var(--text-sm);color:var(--fg-muted);display:flex;flex-direction:column;gap:var(--space-1)}.fb-closing a{color:var(--accent)}.fb-closing--muted{background:var(--bg-sunken)}.fb-reply{border-top:1px solid var(--border-soft);padding-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.fb-reply-actions{display:flex;justify-content:flex-end}.fb-thread-list{display:flex;flex-direction:column;gap:var(--space-2);max-height:60vh;overflow-y:auto}.fb-thread-row{text-align:left;background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:var(--space-3);cursor:pointer;font-family:var(--font-sans);display:flex;flex-direction:column;gap:var(--space-2);transition:border-color var(--dur-fast) var(--ease-soft),background var(--dur-fast) var(--ease-soft)}.fb-thread-row:hover{border-color:var(--border-base);background:var(--bg-sunken)}.fb-thread-row-top{display:flex;gap:var(--space-2);align-items:center}.fb-thread-row-preview{font-size:var(--text-sm);color:var(--fg-default);line-height:var(--leading-snug)}.fb-pill{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-pill);font-size:10px;font-weight:var(--weight-semi);text-transform:uppercase;letter-spacing:var(--tracking-wide);background:var(--bg-sunken);color:var(--fg-muted);border:1px solid var(--border-soft)}.fb-pill--awaiting_user{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.fb-pill--awaiting_agent{background:var(--bg-sunken);color:var(--fg-muted)}.fb-pill--resolved{background:var(--accent-soft);color:var(--accent)}.fb-pill--resolved_no_card{background:var(--bg-sunken);color:var(--fg-subtle)}.fb-pill--abandoned{color:var(--fg-subtle)}.fb-pill--new{background:var(--accent-soft);color:var(--accent)}.fb-pill--in_progress{background:var(--bg-sunken);color:var(--fg-muted)}.fb-pill--cls{background:var(--bg-elevated);color:var(--fg-default);border-color:var(--border-base)}.fb-admin-table-wrap{overflow:auto;max-height:64vh;border:1px solid var(--border-soft);border-radius:var(--radius-sm)}.fb-admin-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.fb-admin-table th,.fb-admin-table td{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:1px solid var(--border-soft);vertical-align:top}.fb-admin-table thead th{position:sticky;top:0;background:var(--bg-sunken);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--fg-subtle);font-weight:var(--weight-semi);z-index:1}.fb-admin-feedback{max-width:320px;color:var(--fg-default);word-wrap:break-word}.fb-admin-empty{text-align:center;color:var(--fg-subtle);padding:var(--space-7)}@media (max-width: 768px){.fb-bubble-root{bottom:80px;right:16px}.fb-bubble{width:48px;height:48px;font-size:20px}.fb-popover{width:calc(100vw - 32px)}.fb-modal{width:96vw;max-width:96vw;padding:var(--space-5)}}
