.ff-callout{gap:var(--ff-space-1);border-radius:var(--ff-radius);padding:var(--ff-space-3) var(--ff-space-4);font-size:var(--ff-text-sm);border:1px solid #0000;flex-direction:column;display:flex}.ff-callout__title{font-weight:700;font-size:var(--ff-text-sm)}.ff-callout--info{background:var(--ff-info-bg);border-color:var(--ff-info);color:var(--ff-info)}.ff-callout--success{background:var(--ff-success-bg);border-color:var(--ff-success);color:var(--ff-success)}.ff-callout--warning{background:var(--ff-warning-bg);border-color:var(--ff-warning);color:var(--ff-warning)}.ff-callout--danger{background:var(--ff-danger-bg);border-color:var(--ff-danger);color:var(--ff-danger)}.ff-person{align-items:center;gap:var(--ff-space-4);background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:var(--ff-space-4);color:inherit;text-decoration:none;transition:border-color .12s;display:flex}.ff-person:hover{border-color:var(--ff-border-strong)}.ff-person__mark{background:var(--ff-accent-soft);width:44px;height:44px;color:var(--ff-accent-strong);font-weight:700;font-size:var(--ff-text-sm);border-radius:50%;flex:none;place-items:center;display:grid}.ff-person--self .ff-person__mark{background:var(--ff-accent);color:var(--ff-on-accent)}.ff-person__main{flex:1;min-width:0}.ff-person__name{font-weight:700;font-size:var(--ff-text-md);overflow-wrap:anywhere;display:block}.ff-person__meta{color:var(--ff-text-muted);font-size:var(--ff-text-sm);display:block}.ff-person__missing{color:var(--ff-warning);font-size:var(--ff-text-sm);display:block}.ff-person__next{text-align:right;font-size:var(--ff-text-xs);color:var(--ff-text-faint);flex:none}.ff-person__days{font-size:var(--ff-text-lg);font-variant-numeric:tabular-nums;color:var(--ff-text);font-weight:700;display:block}.ff-person__days--soon{color:var(--ff-accent)}.ff-horizon{gap:var(--ff-space-2);padding-bottom:var(--ff-space-2);align-items:stretch;display:flex;overflow-x:auto}.ff-horizon__seg{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);flex-direction:column;flex:1 1 0;min-width:104px;display:flex;overflow:hidden}.ff-horizon__seg--now{border-color:var(--ff-accent);box-shadow:0 0 0 1px var(--ff-accent)}.ff-horizon__seg--empty{background:var(--ff-surface-sunken)}.ff-horizon__head{padding:var(--ff-space-2) var(--ff-space-3);border-bottom:1px solid var(--ff-border);background:var(--ff-surface-sunken)}.ff-horizon__seg--now .ff-horizon__head{background:var(--ff-accent-soft);color:var(--ff-accent-strong)}.ff-horizon__label{font-size:var(--ff-text-sm);white-space:nowrap;text-overflow:ellipsis;font-weight:700;display:block;overflow:hidden}.ff-horizon__range{color:var(--ff-text-faint);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;font-size:10px;display:block;overflow:hidden}.ff-horizon__body{padding:var(--ff-space-2);gap:var(--ff-space-1);flex-direction:column;flex:1;min-height:132px;display:flex}.ff-horizon__event{border-radius:var(--ff-radius-sm);background:var(--ff-surface-sunken);padding:var(--ff-space-1) var(--ff-space-2);font-size:var(--ff-text-xs);flex-direction:column;display:flex}.ff-horizon__event--holiday{background:var(--ff-accent-soft);color:var(--ff-accent-strong)}.ff-horizon__event--school-break{background:var(--ff-success-bg);color:var(--ff-success)}.ff-horizon__kids{color:var(--ff-accent);font-weight:700}.ff-horizon__who{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.ff-horizon__when{color:var(--ff-text-faint);font-variant-numeric:tabular-nums}.ff-horizon__event--holiday .ff-horizon__when,.ff-horizon__event--school-break .ff-horizon__when{color:inherit;opacity:.75}.ff-horizon__more,.ff-horizon__empty{font-size:var(--ff-text-xs);color:var(--ff-text-faint)}.ff-horizon__empty{margin:auto}.ff-horizon__live{text-align:center;font-size:var(--ff-text-xs);color:var(--ff-text-faint);margin:auto}.ff-horizon__clock{font-size:var(--ff-text-lg);font-variant-numeric:tabular-nums;color:var(--ff-accent-strong);font-weight:700;display:block}.ff-plan{gap:var(--ff-space-2);flex-direction:column;display:flex}.ff-plan__item{align-items:flex-start;gap:var(--ff-space-3);background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:var(--ff-space-3) var(--ff-space-4);display:flex}.ff-plan__item--kids{border-color:var(--ff-accent)}.ff-plan__lead{text-align:center;font-variant-numeric:tabular-nums;flex:none;width:62px}.ff-plan__days{font-size:var(--ff-text-lg);font-weight:700;line-height:1.1;display:block}.ff-plan__unit{color:var(--ff-text-faint);font-size:10px}.ff-plan__main{flex:1;min-width:0}.ff-plan__title{font-weight:700;font-size:var(--ff-text-md)}.ff-plan__when{font-size:var(--ff-text-sm);color:var(--ff-text-muted)}.ff-plan__needs{gap:var(--ff-space-1);margin-top:var(--ff-space-2);flex-wrap:wrap;display:flex}.ff-plan__need{padding:1px var(--ff-space-2);background:var(--ff-surface-sunken);color:var(--ff-text-muted);border-radius:999px;font-size:10px}.ff-plan__badge{padding:1px var(--ff-space-2);background:var(--ff-accent-soft);color:var(--ff-accent-strong);margin-left:var(--ff-space-2);border-radius:999px;font-size:10px;font-weight:700;display:inline-block}.ff-plan__score{text-align:right;font-variant-numeric:tabular-nums;flex:none}.ff-plan__value{font-size:var(--ff-text-md);font-weight:700;display:block}.ff-plan__kind{color:var(--ff-text-faint);font-size:10px}.ff-plan__empty{border:1px dashed var(--ff-border-strong);border-radius:var(--ff-radius);color:var(--ff-text-faint);font-size:var(--ff-text-sm);padding:var(--ff-space-5);text-align:center}.ff-button{justify-content:center;align-items:center;gap:var(--ff-space-2);border-radius:var(--ff-radius);padding:var(--ff-space-2) var(--ff-space-4);font:inherit;font-size:var(--ff-text-sm);cursor:pointer;border:1px solid #0000;min-height:40px;font-weight:600;line-height:1.2;transition:background-color .12s,border-color .12s;display:inline-flex}.ff-button--primary{background:var(--ff-accent);color:var(--ff-on-accent)}.ff-button--primary:hover:not(:disabled){background:var(--ff-accent-strong)}.ff-button--secondary{background:var(--ff-surface);color:var(--ff-text);border-color:var(--ff-border-strong)}.ff-button--secondary:hover:not(:disabled){background:var(--ff-surface-sunken)}.ff-button--ghost{color:var(--ff-accent);padding-inline:var(--ff-space-2);background:0 0}.ff-button--ghost:hover:not(:disabled){background:var(--ff-accent-soft)}.ff-button--danger{color:var(--ff-danger);border-color:var(--ff-border-strong);background:0 0}.ff-button--danger:hover:not(:disabled){background:var(--ff-danger-bg)}.ff-button--block{width:100%}.ff-button:disabled{opacity:.5;cursor:not-allowed}.ff-shell{flex-direction:column;min-height:100%;display:flex}.ff-shell__bar{align-items:center;gap:var(--ff-space-4);background:var(--ff-surface);border-bottom:1px solid var(--ff-border);padding:var(--ff-space-3) var(--ff-space-5);display:flex}.ff-shell__brand{font-size:var(--ff-text-lg);letter-spacing:-.01em;color:var(--ff-text);font-weight:800;text-decoration:none}.ff-shell__spacer{flex:1}.ff-shell__select{border:1px solid var(--ff-border-strong);border-radius:var(--ff-radius-sm);background:var(--ff-surface);color:var(--ff-text);font:inherit;font-size:var(--ff-text-sm);padding:var(--ff-space-1) var(--ff-space-2)}.ff-shell__main{width:min(760px,100%);padding:var(--ff-space-6) var(--ff-space-5) var(--ff-space-7);gap:var(--ff-space-5);flex-direction:column;flex:1;margin:0 auto;display:flex}.ff-shell__main--wide{width:min(1200px,100%)}.ff-shell__main--centred{justify-content:center;align-items:center}.ff-home__head{gap:var(--ff-space-1);flex-direction:column;display:flex}.ff-home__greeting{font-size:var(--ff-text-xl);letter-spacing:-.01em}.ff-home__section{font-size:var(--ff-text-md);margin-bottom:var(--ff-space-1);font-weight:700}.ff-home__lead{color:var(--ff-text-faint);font-size:var(--ff-text-sm);margin-bottom:var(--ff-space-3)}.ff-home__hint{color:var(--ff-text-faint);font-size:var(--ff-text-sm);margin-top:var(--ff-space-2)}.ff-home__people{gap:var(--ff-space-2);flex-direction:column;display:flex}.ff-landing{align-items:center;gap:var(--ff-space-3);text-align:center;flex-direction:column;max-width:42ch;display:flex}.ff-landing__title{font-size:var(--ff-text-2xl);letter-spacing:-.02em}.ff-landing__tagline{color:var(--ff-text-muted);font-size:var(--ff-text-lg)}.ff-landing__lead{color:var(--ff-text-faint);font-size:var(--ff-text-sm);margin-bottom:var(--ff-space-2)}.ff-field{gap:var(--ff-space-1);flex-direction:column;display:flex}.ff-field__label{font-size:var(--ff-text-sm);color:var(--ff-text-muted);font-weight:600}.ff-field__input{border:1px solid var(--ff-border-strong);border-radius:var(--ff-radius);background:var(--ff-surface);color:var(--ff-text);padding:var(--ff-space-2) var(--ff-space-3);font:inherit;font-size:var(--ff-text-md);min-height:42px}.ff-field__input::placeholder{color:var(--ff-text-faint)}.ff-field__input--code{font-family:var(--ff-font-mono);font-size:var(--ff-text-lg);letter-spacing:.4em;text-align:center}.ff-field--invalid .ff-field__input{border-color:var(--ff-danger)}.ff-field__hint{font-size:var(--ff-text-xs);color:var(--ff-text-faint)}.ff-field__error{font-size:var(--ff-text-xs);color:var(--ff-danger)}.ff-life{gap:var(--ff-space-3);flex-direction:column;display:flex}.ff-life__stats{gap:var(--ff-space-5);flex-wrap:wrap;display:flex}.ff-life__stat{flex-direction:column;display:flex}.ff-life__value{font-size:var(--ff-text-xl);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.1}.ff-life__label{font-size:var(--ff-text-xs);color:var(--ff-text-faint)}.ff-life__figure{overflow-x:auto}.ff-life__svg{max-width:100%;height:auto;display:block}.ff-life__caption{font-size:var(--ff-text-xs);color:var(--ff-text-faint)}.ff-person-page__back{color:var(--ff-accent);font-size:var(--ff-text-sm);text-decoration:none}.ff-person-page__name{font-size:var(--ff-text-xl);letter-spacing:-.01em}.ff-person-page__meta{color:var(--ff-text-muted);font-size:var(--ff-text-sm)}.ff-person-page__section{font-size:var(--ff-text-md);margin-bottom:var(--ff-space-3);font-weight:700}.ff-person-page__ask{gap:var(--ff-space-4);flex-direction:column;max-width:420px;display:flex}.ff-person-page__row{align-items:flex-end;gap:var(--ff-space-3);display:flex}.ff-signin{gap:var(--ff-space-4);background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius-lg);box-shadow:var(--ff-shadow);padding:var(--ff-space-6);flex-direction:column;width:min(420px,100%);display:flex}.ff-signin__title{font-size:var(--ff-text-xl);line-height:1.2}.ff-signin__lead{color:var(--ff-text-muted);font-size:var(--ff-text-sm)}.ff-signin__tabs{gap:var(--ff-space-1);background:var(--ff-surface-sunken);border-radius:var(--ff-radius);padding:var(--ff-space-1);display:flex}.ff-signin__tab{border-radius:var(--ff-radius-sm);color:var(--ff-text-muted);font:inherit;font-size:var(--ff-text-sm);padding:var(--ff-space-2);cursor:pointer;background:0 0;border:0;flex:1;font-weight:600}.ff-signin__tab[aria-selected=true]{background:var(--ff-surface);color:var(--ff-text);box-shadow:var(--ff-shadow)}.ff-signin__foot{justify-content:center;display:flex}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--ff-paper:#fff;--ff-mist:#f4f6f8;--ff-line:#e2e6ea;--ff-line-2:#c8ced5;--ff-ink:#16191d;--ff-ink-2:#4a525c;--ff-ink-3:#6b7480;--ff-blue:#1f6feb;--ff-blue-soft:#e8f0fe;--ff-blue-strong:#1a5fcc;--ff-surface:var(--ff-paper);--ff-surface-sunken:var(--ff-mist);--ff-border:var(--ff-line);--ff-border-strong:var(--ff-line-2);--ff-text:var(--ff-ink);--ff-text-muted:var(--ff-ink-2);--ff-text-faint:var(--ff-ink-3);--ff-accent:var(--ff-blue);--ff-accent-soft:var(--ff-blue-soft);--ff-accent-strong:var(--ff-blue-strong);--ff-on-accent:#fff;--ff-info:#1f5f8b;--ff-info-bg:#e7f0f7;--ff-success:#2f6b3f;--ff-success-bg:#e8f3ea;--ff-warning:#8a5a00;--ff-warning-bg:#fdf1dc;--ff-danger:#b3261e;--ff-danger-bg:#fbeae9;--ff-focus:0 0 0 3px var(--ff-accent-soft), 0 0 0 4px var(--ff-accent);--ff-space-1:4px;--ff-space-2:8px;--ff-space-3:12px;--ff-space-4:16px;--ff-space-5:24px;--ff-space-6:32px;--ff-space-7:48px;--ff-radius-sm:6px;--ff-radius:10px;--ff-radius-lg:16px;--ff-font:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--ff-font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ff-text-xs:12px;--ff-text-sm:14px;--ff-text-md:16px;--ff-text-lg:20px;--ff-text-xl:28px;--ff-text-2xl:38px;--ff-shadow:0 1px 2px #1018200f, 0 8px 24px #1018200f}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--ff-paper:#14171a;--ff-mist:#1b1f24;--ff-line:#2a3037;--ff-line-2:#3d454e;--ff-ink:#eef1f4;--ff-ink-2:#b3bcc6;--ff-ink-3:#8b95a1;--ff-blue:#6ea8ff;--ff-blue-soft:#17273f;--ff-blue-strong:#8ebbff;--ff-on-accent:#0d1117;--ff-info:#8ec2e8;--ff-info-bg:#16242e;--ff-success:#8ecfa0;--ff-success-bg:#16261a;--ff-warning:#e5b567;--ff-warning-bg:#2a2114;--ff-danger:#f0918b;--ff-danger-bg:#2c1817;--ff-shadow:0 1px 2px #0006, 0 8px 24px #00000059}}:root[data-theme=dark]{--ff-paper:#14171a;--ff-mist:#1b1f24;--ff-line:#2a3037;--ff-line-2:#3d454e;--ff-ink:#eef1f4;--ff-ink-2:#b3bcc6;--ff-ink-3:#8b95a1;--ff-blue:#6ea8ff;--ff-blue-soft:#17273f;--ff-blue-strong:#8ebbff;--ff-on-accent:#0d1117;--ff-info:#8ec2e8;--ff-info-bg:#16242e;--ff-success:#8ecfa0;--ff-success-bg:#16261a;--ff-warning:#e5b567;--ff-warning-bg:#2a2114;--ff-danger:#f0918b;--ff-danger-bg:#2c1817;--ff-shadow:0 1px 2px #0006, 0 8px 24px #00000059}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--ff-surface-sunken);color:var(--ff-text);font-family:var(--ff-font);font-size:var(--ff-text-md);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}h1,h2,h3,p{margin:0}img{max-width:100%}:where(a,button,input,textarea,select,[tabindex]):focus-visible{box-shadow:var(--ff-focus);border-radius:var(--ff-radius-sm);outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
