.app-shell{min-height:100dvh}.family-sidebar{display:none}.bottom-nav{position:fixed;inset:auto 0 0;z-index:var(--fh-z-nav);background:var(--fh-bg-surface);border-top:1px solid var(--fh-border-subtle);height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(4,1fr)}.bottom-nav>a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--fh-space-1);font-size:var(--fh-font-size-caption);color:var(--fh-text-secondary);min-width:0}.bottom-nav>a.active{color:var(--fh-primary);font-weight:600}.nav-icon-wrap{position:relative;display:inline-flex}.nav-icon-wrap .badge{position:absolute;left:14px;top:-8px}.skip-link{position:fixed;top:-100px;left:var(--fh-space-4);z-index:var(--fh-z-toast);padding:var(--fh-space-3);background:var(--fh-bg-raised);color:var(--fh-primary)}.skip-link:focus{top:var(--fh-space-4)}.date-header{display:flex;align-items:center;gap:var(--fh-space-3);margin:var(--fh-space-3) 0 var(--fh-space-6);flex-wrap:wrap}.date-number{font-family:var(--fh-font-display);font-size:4.25rem;line-height:.85;font-weight:600;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.03em}.date-month{display:flex;flex-direction:column;font-size:var(--fh-font-size-caption);line-height:1.4;align-self:center}.date-month strong{font-size:var(--fh-font-size-body)}.home-lede{font-size:1.125rem;line-height:1.55;flex-basis:100%;margin-top:var(--fh-space-2);max-width:30em}.home-avatar{position:absolute;right:var(--fh-space-4);top:var(--fh-space-8)}.home-columns{display:grid;gap:var(--fh-space-8)}.eyebrow{font-size:var(--fh-font-size-caption);font-weight:600}.needs-heading{display:flex;align-items:center;gap:var(--fh-space-2);color:var(--fh-accent-strong);margin-bottom:var(--fh-space-2)}.needs-heading>span{width:8px;height:8px;border-radius:var(--fh-radius-full);background:var(--fh-accent)}.meal-hero{background:var(--fh-tint-warm);border-top:1px solid var(--fh-tint-warm-line);border-bottom:1px solid var(--fh-tint-warm-line);padding:var(--fh-space-5) var(--fh-space-4);margin:0 calc(-1 * var(--fh-space-4))}.meal-hero header a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--fh-font-size-caption);font-weight:600}.hero-dish{font-size:1.625rem;line-height:1.4;font-weight:600;margin:var(--fh-space-2) 0 var(--fh-space-3)}.upcoming-meals{border-top:1px solid var(--fh-tint-warm-line);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--fh-space-4);padding-top:var(--fh-space-3);margin-top:var(--fh-space-4)}.upcoming-meals>div{font-size:var(--fh-font-size-caption)}.upcoming-meals>div:nth-child(n+4){display:none}.upcoming-meals strong,.upcoming-meals span{display:block}.upcoming-meals span{color:var(--fh-text-secondary);margin-top:var(--fh-space-1);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.display-count{font-size:2rem;font-family:var(--fh-font-display);font-weight:600}.app-catalogue{display:grid}.app-entry{display:flex;align-items:center;gap:var(--fh-space-4);padding:var(--fh-space-5) 0;border-bottom:1px solid var(--fh-border-subtle);color:var(--fh-text-primary)}.app-entry strong,.app-entry .caption{display:block}.app-icon{width:48px;height:48px;flex-shrink:0;display:grid;place-items:center;border-radius:var(--fh-radius-lg);background:var(--fh-bg-sunken)}.color-moss{background:var(--fh-member-moss-bg);color:var(--fh-member-moss-fg)}.color-persimmon{background:var(--fh-member-persimmon-bg);color:var(--fh-member-persimmon-fg)}.color-lake{background:var(--fh-member-lake-bg);color:var(--fh-member-lake-fg)}.color-apricot{background:var(--fh-member-apricot-bg);color:var(--fh-member-apricot-fg)}.inbox-list{margin-top:var(--fh-space-8)}.notice-action{display:inline-flex;align-items:center;font-size:var(--fh-font-size-caption);min-height:44px;gap:var(--fh-space-1)}.notice-row time{max-width:88px;text-align:right;line-height:1.5;flex-shrink:0}.notice-row.compact{align-items:center;padding:var(--fh-space-3) 0;gap:var(--fh-space-2)}.notice-row.compact>.notice-dot{display:none}.notice-row.compact .row-title{font-weight:400}.notice-row.compact>.button{flex-shrink:0;padding:var(--fh-space-2) var(--fh-space-3)}.notice-row.compact>.avatar{--avatar-size: 28px !important}.activity-text{font-weight:400;font-size:var(--fh-font-size-caption)}.profile-header{display:flex;align-items:center;gap:var(--fh-space-4);margin-bottom:var(--fh-space-8)}.me-columns{display:grid;gap:var(--fh-space-10)}.content-list{margin-top:var(--fh-space-4)}.content-owner-row{padding-bottom:var(--fh-space-3);border-bottom:1px solid var(--fh-border-subtle)}.content-owner-row>.row{border:0;padding-bottom:0}.shopping-add{display:grid;grid-template-columns:2fr 1fr;gap:var(--fh-space-3);align-items:end}.shopping-add>.field:first-child{grid-column:1/-1}.shopping-add>.button{grid-column:1/-1}.shopping-row .checkbox-label{width:44px;flex-shrink:0;justify-content:center}.shopping-row .checkbox-label span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.shopping-row.bought .item-name{text-decoration:line-through;color:var(--fh-text-secondary)}.meal-week{display:grid;gap:var(--fh-space-4)}.meal-day{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:var(--fh-space-4);border:0;border-bottom:1px solid var(--fh-border-default);padding:var(--fh-space-3) 0;min-width:0}.meal-day.today{background:var(--fh-tint-warm);border-color:var(--fh-tint-warm-line)}.meal-day>header{grid-column:1/-1;display:flex;justify-content:space-between;gap:var(--fh-space-2);padding-bottom:var(--fh-space-3);border-bottom:1px solid var(--fh-border-subtle)}.meal-slot{padding-top:var(--fh-space-3);min-height:88px}.meal-link{display:block;color:var(--fh-text-primary);font-weight:600;padding:var(--fh-space-2) 0}.meal-week .owner-line{font-size:var(--fh-font-size-caption)}.meal-week .owner-line>span:last-child{display:none}.vote-options{display:flex;gap:var(--fh-space-2);flex-wrap:wrap}.vote-options>.button{flex:1}.vote-options .vote-selected{background:var(--fh-primary-subtle);color:var(--fh-primary-on-subtle);border-color:var(--fh-primary)}.expense-amount{font-family:var(--fh-font-display);font-size:2.5rem;line-height:1.3;font-variant-numeric:tabular-nums;white-space:nowrap}.network-banner{background:var(--fh-warning-subtle);color:var(--fh-warning-fg);padding:var(--fh-space-2) var(--fh-space-4);position:sticky;top:0;z-index:var(--fh-z-sticky);font-size:var(--fh-font-size-caption)}.admin-sidebar{display:none}.admin-topbar{height:56px;display:flex;align-items:center;gap:var(--fh-space-3);padding:0 var(--fh-space-4);border-bottom:1px solid var(--fh-border-subtle);background:var(--fh-bg-canvas);position:sticky;top:0;z-index:var(--fh-z-sticky);font-size:var(--fh-font-size-caption)}.admin-topbar>a{display:none}.nav-item{min-height:44px;display:flex;align-items:center;gap:var(--fh-space-3);padding:var(--fh-space-2) var(--fh-space-3);margin-bottom:var(--fh-space-1);color:var(--fh-text-primary);border-radius:var(--fh-radius-md);line-height:1.4}.nav-item>span:first-of-type{flex:1;min-width:0}.nav-item.active{background:var(--fh-bg-surface);font-weight:600}.nav-item.active>svg{color:var(--fh-primary)}.admin-label{margin:var(--fh-space-5) 0}.device-block{padding:var(--fh-space-5) 0;border-bottom:1px solid var(--fh-border-default)}.device-states{display:grid;grid-template-columns:1fr 1fr;gap:var(--fh-space-4);padding:var(--fh-space-4) 0}.device-states>div{display:flex;flex-direction:column;gap:var(--fh-space-1)}.admin-page .page{padding-top:var(--fh-space-6)}@media(min-width:768px){.meal-day{display:block;border:1px solid var(--fh-border-default);border-radius:var(--fh-radius-lg);padding:var(--fh-space-4)}.meal-slot{min-height:110px}.family-sidebar{display:flex;position:fixed;inset:0 auto 0 0;width:88px;background:var(--fh-bg-sidebar);padding:var(--fh-space-6) var(--fh-space-2);flex-direction:column;z-index:var(--fh-z-nav)}.family-sidebar .brand{justify-content:center;margin-bottom:var(--fh-space-8)}.family-sidebar .brand-word{display:none}.family-sidebar .nav-item{flex-direction:column;padding:var(--fh-space-3) 0;gap:var(--fh-space-1);font-size:var(--fh-font-size-caption);position:relative}.family-sidebar .nav-item .badge{position:absolute;right:0;top:var(--fh-space-1)}.family-content{margin-left:88px}.pinned-nav,.sidebar-family,.bottom-nav,.home-avatar{display:none}.date-number{font-size:5rem}.home-lede{flex:1;font-size:1.25rem;margin-top:0;margin-left:var(--fh-space-2)}.date-header{flex-wrap:nowrap;margin-bottom:var(--fh-space-8)}.meal-hero{margin:0;border:0;border-radius:var(--fh-radius-lg);padding:var(--fh-space-5)}.hero-dish{font-size:1.875rem}.upcoming-meals{grid-template-columns:repeat(6,minmax(0,1fr))}.upcoming-meals>div:nth-child(n+4){display:block}.home-aside.stack-lg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.home-aside>.section:last-child{grid-column:1 / -1}.app-catalogue{grid-template-columns:1fr 1fr;column-gap:var(--fh-space-8)}.me-columns{grid-template-columns:1fr 1fr;gap:var(--fh-space-8)}.shopping-add{grid-template-columns:2fr 1fr 1fr auto}.shopping-add>.field:first-child,.shopping-add>.button{grid-column:auto}.meal-week{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-sidebar{display:flex;position:fixed;inset:0 auto 0 0;width:88px;background:var(--fh-bg-sidebar);padding:var(--fh-space-6) var(--fh-space-2);flex-direction:column}.admin-sidebar .brand{justify-content:center}.admin-sidebar .brand-word,.admin-sidebar .admin-label{display:none}.admin-sidebar .nav-item{flex-direction:column;font-size:var(--fh-font-size-caption);padding:var(--fh-space-2) 0;gap:var(--fh-space-1)}.admin-sidebar .back-link{font-size:var(--fh-font-size-caption);justify-content:center;flex-wrap:wrap}.admin-content{margin-left:88px}.admin-topbar>.icon-button{display:none}.admin-topbar>a{display:block}.admin-topbar{padding:0 var(--fh-space-6)}.admin-sidebar nav{margin-top:var(--fh-space-8)}.device-states{grid-template-columns:repeat(4,1fr)}}@media(min-width:1200px){.family-sidebar{width:248px;padding:var(--fh-space-6) var(--fh-space-3)}.family-sidebar .brand{justify-content:flex-start;padding:0 var(--fh-space-3);margin-bottom:var(--fh-space-8)}.family-sidebar .brand-word{display:block}.family-sidebar .nav-item{flex-direction:row;font-size:var(--fh-font-size-body);padding:var(--fh-space-3);gap:var(--fh-space-3)}.family-sidebar .nav-item .badge{position:static}.family-content{margin-left:248px}.pinned-nav{display:block;margin-top:var(--fh-space-8)}.pinned-nav>p{padding:0 var(--fh-space-3);margin-bottom:var(--fh-space-3)}.sidebar-family{display:block;margin-top:auto;padding:var(--fh-space-3)}.avatar-group{display:flex;margin-bottom:var(--fh-space-2)}.avatar-group .avatar+.avatar{margin-left:-5px;border:2px solid var(--fh-bg-sidebar)}.home-columns{grid-template-columns:1.5fr 1fr;gap:var(--fh-space-12)}.home-aside.stack-lg{display:flex;flex-direction:column;align-items:stretch}.home-aside>.section{width:100%}.date-number{font-size:5.5rem}.date-header{margin-top:var(--fh-space-2)}.meal-week{grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--fh-space-2)}.meal-day{padding:var(--fh-space-3) var(--fh-space-2)}.meal-day>header{flex-direction:column;gap:0}.meal-week .owner-line{gap:var(--fh-space-1)}.meal-week .owner-line .avatar{display:none}.meal-week .owner-line button{font-size:var(--fh-font-size-caption)}.admin-sidebar{width:240px;padding:var(--fh-space-6) var(--fh-space-4)}.admin-sidebar .brand{justify-content:flex-start}.admin-sidebar .brand-word,.admin-sidebar .admin-label{display:block}.admin-sidebar .nav-item{flex-direction:row;gap:var(--fh-space-3);padding:var(--fh-space-2) var(--fh-space-3);font-size:var(--fh-font-size-body)}.admin-sidebar nav{margin-top:var(--fh-space-2)}.admin-sidebar .back-link{margin-top:auto;justify-content:flex-start}.admin-content{margin-left:240px}.admin-topbar{padding:0 var(--fh-space-8)}.admin-page .page{max-width:1440px}}@layer theme;@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components,utilities;:root{color-scheme:light;--fh-bg-canvas:#f6f4ef;--fh-bg-sidebar:#eeebe4;--fh-bg-surface:#fff;--fh-bg-raised:#fff;--fh-bg-sunken:#eeebe4;--fh-bg-hover:#1e23200d;--fh-bg-pressed:#1e232017;--fh-bg-selected:#e2eee9;--fh-text-primary:#1e2320;--fh-text-secondary:#545b56;--fh-text-tertiary:#6a706b;--fh-text-disabled:#a3a69f;--fh-text-on-primary:#fff;--fh-primary:#2e6b5c;--fh-primary-hover:#255a4d;--fh-primary-subtle:#e2eee9;--fh-primary-on-subtle:#1f5246;--fh-accent:#c2603a;--fh-accent-strong:#9e4824;--fh-accent-subtle:#f8e8df;--fh-badge-bg:#9e4824;--fh-badge-text:#fff;--fh-border-subtle:#e6e2da;--fh-border-default:#dcd8cf;--fh-border-strong:#82857e;--fh-rule:#1e2320;--fh-focus-ring:#2e6b5c;--fh-scrim:#14161466;--fh-tint-warm:#fbf1eb;--fh-tint-warm-line:#f0d9cb;--fh-brand-text:#fff8f3;--fh-success-fg:#2f7a45;--fh-success-subtle:#e3f1e6;--fh-warning-fg:#8a5a00;--fh-warning-subtle:#fbefd3;--fh-danger-fg:#b4372c;--fh-danger-solid:#b4372c;--fh-danger-on-solid:#fff;--fh-danger-subtle:#fbe5e1;--fh-info-fg:#2f5f8a;--fh-member-persimmon-bg:#f6e1d6;--fh-member-persimmon-fg:#8c3f1e;--fh-member-apricot-bg:#f5e6c8;--fh-member-apricot-fg:#7a5200;--fh-member-moss-bg:#e2ead5;--fh-member-moss-fg:#45602a;--fh-member-lake-bg:#dce9ee;--fh-member-lake-fg:#2a5d70;--fh-member-indigo-bg:#e1e4f0;--fh-member-indigo-fg:#3b4a7a;--fh-member-lotus-bg:#f2e0e4;--fh-member-lotus-fg:#84394d;--fh-member-tea-bg:#ebe2d8;--fh-member-tea-fg:#6b4b32;--fh-member-slate-bg:#e3e6e6;--fh-member-slate-fg:#46524f;--fh-font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "HarmonyOS Sans SC", "MiSans", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", system-ui, sans-serif;--fh-font-display:"Iowan Old Style", Charter, Cambria, "Palatino Linotype", "Noto Serif", var(--fh-font-sans), serif;--fh-font-mono:ui-monospace, "Cascadia Mono", Consolas, monospace;--fh-font-size-body:1rem;--fh-font-size-caption:.8125rem;--fh-font-size-title:1.375rem;--fh-font-size-section:1.0625rem;--fh-font-size-large:1.875rem;--fh-radius-xs:4px;--fh-radius-sm:6px;--fh-radius-md:10px;--fh-radius-lg:14px;--fh-radius-xl:20px;--fh-radius-full:9999px;--fh-shadow-1:0 2px 8px #1e23201f;--fh-shadow-2:0 4px 16px #1e232029;--fh-shadow-3:0 12px 40px #1e232033;--fh-control-h:44px;--fh-space-1:4px;--fh-space-2:8px;--fh-space-3:12px;--fh-space-4:16px;--fh-space-5:20px;--fh-space-6:24px;--fh-space-8:32px;--fh-space-10:40px;--fh-space-12:48px;--fh-z-sticky:10;--fh-z-nav:20;--fh-z-dropdown:30;--fh-z-overlay:40;--fh-z-toast:50;--fh-motion-fast:.15s;--fh-motion-normal:.25s;font-size:16px}:root[data-theme=dark]{color-scheme:dark;--fh-bg-canvas:#151614;--fh-bg-sidebar:#111210;--fh-bg-surface:#1d1f1c;--fh-bg-raised:#262825;--fh-bg-sunken:#111210;--fh-bg-hover:#eceae40f;--fh-bg-pressed:#eceae41a;--fh-bg-selected:#1e322c;--fh-text-primary:#eceae4;--fh-text-secondary:#b3b1a9;--fh-text-tertiary:#9a988f;--fh-text-disabled:#5e605a;--fh-text-on-primary:#0e211c;--fh-primary:#7cc0ae;--fh-primary-hover:#96cebf;--fh-primary-subtle:#1e322c;--fh-primary-on-subtle:#a6d8ca;--fh-accent:#e38d63;--fh-accent-strong:#f2b597;--fh-accent-subtle:#3a2619;--fh-badge-bg:#e38d63;--fh-badge-text:#1e1009;--fh-border-subtle:#2a2c28;--fh-border-default:#343632;--fh-border-strong:#7a7c75;--fh-rule:#545750;--fh-focus-ring:#7cc0ae;--fh-scrim:#0009;--fh-tint-warm:#2a1f18;--fh-tint-warm-line:#3d2c21;--fh-brand-text:#2a140a;--fh-success-fg:#7cc690;--fh-success-subtle:#1c3324;--fh-warning-fg:#e7b65a;--fh-warning-subtle:#3a2e14;--fh-danger-fg:#f08878;--fh-danger-solid:#f08878;--fh-danger-on-solid:#2a0e0a;--fh-danger-subtle:#3d1f1b;--fh-info-fg:#8db7e2;--fh-member-persimmon-bg:#4a2a1c;--fh-member-persimmon-fg:#f2b597;--fh-member-apricot-bg:#45361a;--fh-member-apricot-fg:#ebc983;--fh-member-moss-bg:#2e3a22;--fh-member-moss-fg:#b9d39a;--fh-member-lake-bg:#1f3640;--fh-member-lake-fg:#9ccbdd;--fh-member-indigo-bg:#262d48;--fh-member-indigo-fg:#aeb8e6;--fh-member-lotus-bg:#43252e;--fh-member-lotus-fg:#ebafbe;--fh-member-tea-bg:#3a2d22;--fh-member-tea-fg:#d9bfa6;--fh-member-slate-bg:#2a302f;--fh-member-slate-fg:#bac6c3}:root[data-text-size=large]{font-size:18px}[data-density=compact]{--fh-control-h:36px;--fh-font-size-body:.875rem;--fh-font-size-title:1.25rem}@media(pointer:coarse){[data-density=compact]{--fh-control-h:44px}}@media(prefers-reduced-motion:reduce){:root{--fh-motion-fast:1ms;--fh-motion-normal:1ms}*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important}}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--fh-bg-canvas);color:var(--fh-text-primary);font-family:var(--fh-font-sans);font-size:var(--fh-font-size-body);-webkit-text-size-adjust:100%;line-height:1.65}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;color:var(--fh-text-disabled)}a{color:var(--fh-primary);text-decoration:none}h1,h2,h3,p{margin:0}h1,h2,h3,strong{font-weight:600}h1{font-size:var(--fh-font-size-title);line-height:1.4}h2{font-size:var(--fh-font-size-section);line-height:1.5}h3{font-size:var(--fh-font-size-body)}p{overflow-wrap:anywhere}svg{flex-shrink:0}ul{margin:0;padding:0;list-style:none}:focus-visible{outline:2px solid var(--fh-focus-ring);outline-offset:3px}::selection{background:var(--fh-primary-subtle)}.sr-only{clip:rect(0,0,0,0);width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--fh-text-secondary)}.caption{font-size:var(--fh-font-size-caption);color:var(--fh-text-secondary)}.accent{color:var(--fh-accent-strong)}.danger-text{color:var(--fh-danger-fg)}.mono{font-family:var(--fh-font-mono);font-size:var(--fh-font-size-caption);overflow-wrap:anywhere}.numeric{font-variant-numeric:tabular-nums}.stack{gap:var(--fh-space-4);flex-direction:column;display:flex}.stack-lg{gap:var(--fh-space-8);flex-direction:column;display:flex}.inline{align-items:center;gap:var(--fh-space-3);flex-wrap:wrap;display:flex}.between{justify-content:space-between;align-items:center;gap:var(--fh-space-4);display:flex}.grow{flex:1;min-width:0}.flow-grid{gap:var(--fh-space-6);display:grid}.readable{max-width:40em}.preserve{white-space:pre-wrap;overflow-wrap:anywhere}.button{min-height:var(--fh-control-h);justify-content:center;align-items:center;gap:var(--fh-space-2);padding:var(--fh-space-2) var(--fh-space-4);background:var(--fh-bg-surface);border:1px solid var(--fh-border-default);border-radius:var(--fh-radius-md);color:var(--fh-text-primary);text-align:center;transition:background var(--fh-motion-fast);font-weight:600;line-height:1.4;display:inline-flex}.button.primary{background:var(--fh-primary);border-color:var(--fh-primary);color:var(--fh-text-on-primary)}.button.quiet{color:var(--fh-primary);background:0 0;border-color:#0000}.button.danger{background:var(--fh-danger-solid);color:var(--fh-danger-on-solid);border-color:#0000}.button:disabled{background:var(--fh-bg-sunken);color:var(--fh-text-disabled);border-color:var(--fh-border-subtle)}.icon-button{width:44px;min-height:44px;padding:var(--fh-space-2)}.field{gap:var(--fh-space-2);flex-direction:column;display:flex}.field>span{font-size:var(--fh-font-size-caption);font-weight:600}.input,.select,.textarea{border:1px solid var(--fh-border-strong);border-radius:var(--fh-radius-md);background:var(--fh-bg-surface);width:100%;min-width:0;min-height:44px;color:var(--fh-text-primary);padding:var(--fh-space-2) var(--fh-space-3);font-size:1rem}.textarea{resize:vertical;min-height:110px}.field-help{font-size:var(--fh-font-size-caption);color:var(--fh-text-secondary)}.quick-add{align-items:center;gap:var(--fh-space-2);border-bottom:1px solid var(--fh-border-strong);color:var(--fh-primary);display:flex}.quick-add:focus-within{border-color:var(--fh-primary)}.quick-add input{min-width:0;min-height:48px;color:var(--fh-text-primary);background:0 0;border:0;flex:1;font-size:1rem}.section{border-top:1px solid var(--fh-rule);padding-top:var(--fh-space-2)}.section-header{justify-content:space-between;align-items:center;gap:var(--fh-space-3);margin-bottom:var(--fh-space-4);display:flex}.section-header>a{font-size:var(--fh-font-size-caption);align-items:center;gap:var(--fh-space-1);min-height:44px;font-weight:600;display:inline-flex}.slip{background:var(--fh-bg-surface);border-radius:var(--fh-radius-lg);padding:var(--fh-space-4)}.row{align-items:center;gap:var(--fh-space-3);min-height:56px;padding:var(--fh-space-3) 0;border-bottom:1px solid var(--fh-border-subtle);color:var(--fh-text-primary);overflow-wrap:anywhere;display:flex}.row:last-child{border-bottom:0}.row-title{font-weight:600;line-height:1.5}.row a{color:var(--fh-text-primary)}.badge{align-items:center;gap:var(--fh-space-1);padding:2px var(--fh-space-2);border-radius:var(--fh-radius-xs);font-size:var(--fh-font-size-caption);color:var(--fh-text-secondary);background:var(--fh-bg-sunken);display:inline-flex}.badge.unread{border-radius:var(--fh-radius-full);background:var(--fh-badge-bg);color:var(--fh-badge-text);justify-content:center;min-width:20px;font-weight:600;line-height:1.4}.avatar{--avatar-size:32px;width:var(--avatar-size);height:var(--avatar-size);border-radius:var(--fh-radius-full);background:var(--member-bg,var(--fh-member-moss-bg));color:var(--member-fg,var(--fh-member-moss-fg));font-size:calc(var(--avatar-size) * .42);flex-shrink:0;justify-content:center;align-items:center;font-weight:600;line-height:1;display:inline-flex}.owner-line{font-size:var(--fh-font-size-caption);color:var(--fh-text-secondary);gap:var(--fh-space-2);flex-wrap:wrap;align-items:center;min-height:36px;display:flex}.owner-line button{font:inherit;color:inherit;gap:var(--fh-space-1);background:0 0;border:0;align-items:center;min-height:44px;padding:0;display:inline-flex}.segments{gap:var(--fh-space-1);max-width:100%;padding:var(--fh-space-1);border-radius:var(--fh-radius-md);background:var(--fh-bg-sunken);width:fit-content;display:flex}.segment{border-radius:var(--fh-radius-sm);min-height:44px;color:var(--fh-text-secondary);padding:var(--fh-space-2) var(--fh-space-3);white-space:normal;background:0 0;border:1px solid #0000}.segment[aria-pressed=true]{background:var(--fh-bg-surface);border-color:var(--fh-border-default);color:var(--fh-text-primary);font-weight:600}.page{padding:var(--fh-space-6) var(--fh-space-4) 112px;max-width:1184px}.page-title{margin-bottom:var(--fh-space-6)}.page-title.large h1{font-size:var(--fh-font-size-large)}.page-subtitle{color:var(--fh-text-secondary);margin-top:var(--fh-space-2)}.back-link{align-items:center;gap:var(--fh-space-1);min-height:44px;font-size:var(--fh-font-size-caption);margin-bottom:var(--fh-space-2);display:inline-flex}.page-action{margin-bottom:var(--fh-space-6);justify-content:flex-end;display:flex}.page-action>.button{width:100%}.empty{padding:var(--fh-space-8) 0;color:var(--fh-text-secondary)}.error{padding:var(--fh-space-4);border-radius:var(--fh-radius-md);background:var(--fh-danger-subtle);color:var(--fh-danger-fg);align-items:center;gap:var(--fh-space-3);flex-wrap:wrap;display:flex}.loading{padding:var(--fh-space-8);color:var(--fh-text-secondary);align-items:center;gap:var(--fh-space-3);display:flex}.spinner{animation:1.2s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.overlay{background:var(--fh-scrim);z-index:var(--fh-z-overlay);position:fixed;inset:0}.dialog{z-index:var(--fh-z-overlay);background:var(--fh-bg-raised);border-radius:var(--fh-radius-xl) var(--fh-radius-xl) 0 0;box-shadow:var(--fh-shadow-3);max-height:90dvh;padding:var(--fh-space-5) var(--fh-space-5) calc(var(--fh-space-5) + env(safe-area-inset-bottom));animation:appear var(--fh-motion-fast);position:fixed;bottom:0;left:0;right:0;overflow:auto}.dialog-header{justify-content:space-between;gap:var(--fh-space-4);margin-bottom:var(--fh-space-5);align-items:center;display:flex}.dialog.dialog-navigation{inset:var(--fh-space-3) auto var(--fh-space-3) var(--fh-space-3);width:min(20rem,calc(100vw - var(--fh-space-6)));max-height:calc(100dvh - var(--fh-space-6));border-radius:var(--fh-radius-lg);transform:none}.dialog-description{margin-bottom:var(--fh-space-5);color:var(--fh-text-secondary)}.dialog-footer{gap:var(--fh-space-3);padding-top:var(--fh-space-5);justify-content:flex-end;display:flex}@keyframes appear{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.toast-viewport{left:var(--fh-space-4);right:var(--fh-space-4);bottom:calc(76px + env(safe-area-inset-bottom));z-index:var(--fh-z-toast);gap:var(--fh-space-2);pointer-events:none;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;position:fixed}.toast{pointer-events:auto;background:var(--fh-bg-raised);color:var(--fh-text-primary);box-shadow:var(--fh-shadow-2);border:1px solid var(--fh-border-default);padding:var(--fh-space-3) var(--fh-space-4);border-radius:var(--fh-radius-md);align-items:center;gap:var(--fh-space-3);justify-content:space-between;display:flex}.menu{z-index:var(--fh-z-dropdown);background:var(--fh-bg-raised);padding:var(--fh-space-2);border:1px solid var(--fh-border-default);border-radius:var(--fh-radius-md);box-shadow:var(--fh-shadow-2);min-width:180px}.menu-item{padding:var(--fh-space-2) var(--fh-space-3);border-radius:var(--fh-radius-sm);cursor:pointer;min-height:44px}.menu-item[data-highlighted]{background:var(--fh-bg-selected)}.checkbox-label{align-items:center;gap:var(--fh-space-3);cursor:pointer;min-height:44px;display:flex}.checkbox-label input{accent-color:var(--fh-primary);width:22px;height:22px}.details>summary{cursor:pointer;min-height:44px;color:var(--fh-primary);font-size:var(--fh-font-size-caption);align-items:center;display:flex}.details>summary:before{content:"+";margin-right:var(--fh-space-2)}.details[open]>summary:before{content:"−"}.status{gap:var(--fh-space-2);color:var(--fh-text-secondary);font-size:var(--fh-font-size-caption);align-items:center;display:inline-flex}.status:before{content:"";border-radius:var(--fh-radius-full);background:currentColor;width:7px;height:7px}.status.good{color:var(--fh-success-fg)}.status.warning{color:var(--fh-warning-fg)}.status.bad{color:var(--fh-danger-fg)}.notice-row{align-items:flex-start}.notice-dot{margin-top:var(--fh-space-3);border-radius:var(--fh-radius-full);background:0 0;flex-shrink:0;width:7px;height:7px}.notice-dot.unread{background:var(--fh-accent)}.table{border-collapse:collapse;text-align:left;width:100%}.table th{font-size:var(--fh-font-size-caption);color:var(--fh-text-secondary);font-weight:600}.table th,.table td{padding:var(--fh-space-3);border-bottom:1px solid var(--fh-border-subtle);vertical-align:top;overflow-wrap:anywhere}.table-wrap{max-width:100%}.auth-page{min-height:100dvh;padding:var(--fh-space-6);place-items:center;display:grid}.auth-box{width:100%;max-width:420px}.brand{gap:var(--fh-space-3);color:var(--fh-text-primary);align-items:center;font-weight:600;display:flex}.brand-mark{background:var(--fh-accent);width:30px;height:30px;color:var(--fh-brand-text);border-radius:var(--fh-radius-sm);place-items:center;display:grid}.auth-heading{margin:var(--fh-space-10) 0 var(--fh-space-6)}.auth-heading h1{font-size:var(--fh-font-size-large);margin-bottom:var(--fh-space-3)}.auth-footer{margin-top:var(--fh-space-6);justify-content:space-between;gap:var(--fh-space-3);display:flex}@media(hover:hover){.button:hover:not(:disabled){background:var(--fh-bg-hover)}.button.primary:hover:not(:disabled){background:var(--fh-primary-hover)}.button.quiet:hover,.row:hover{background:var(--fh-bg-hover)}}@media(min-width:768px){.page{padding:var(--fh-space-8) var(--fh-space-6) var(--fh-space-12)}.page-title{justify-content:space-between;align-items:center;display:flex}.flow-grid.two{grid-template-columns:1fr 1fr}.page-action>.button{width:auto}.dialog{border-radius:var(--fh-radius-lg);width:min(560px,90vw);padding:var(--fh-space-6);animation:none;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.toast-viewport{left:110px;right:auto;bottom:var(--fh-space-6);max-width:440px}.page-action{margin-top:calc(-1 * var(--fh-space-3))}}@media(min-width:1200px){.page{padding-left:var(--fh-space-8);padding-right:var(--fh-space-8)}.toast-viewport{left:280px}.page-title.large h1{font-size:2rem}}@media(max-width:767px){.family-content .page-action{bottom:calc(64px + env(safe-area-inset-bottom));padding:var(--fh-space-3) var(--fh-space-4);background:var(--fh-bg-canvas);border-top:1px solid var(--fh-border-subtle);z-index:var(--fh-z-sticky);margin:0;position:fixed;left:0;right:0}.family-content .page:has(.page-action){padding-bottom:180px}body[data-action-bar=true] .toast-viewport{bottom:calc(144px + env(safe-area-inset-bottom))}.table thead{display:none}.table,.table tbody,.table tr,.table td{display:block}.table tr{padding:var(--fh-space-3) 0;border-bottom:1px solid var(--fh-border-default)}.table td{padding:var(--fh-space-1) 0;border:0}.table td[data-label]:before{content:attr(data-label);min-width:90px;color:var(--fh-text-secondary);font-size:var(--fh-font-size-caption);display:inline-block}.table .numeric{white-space:normal}.segments{flex-wrap:wrap}}
