*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100dvh;line-height:var(--lh-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img,picture,svg,video{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}ul[role=list],ol[role=list]{list-style:none;padding:0}a{color:inherit;text-decoration-thickness:.06em;text-underline-offset:.15em}#root{isolation:isolate;min-height:100dvh}:root{--bg: oklch(.965 .02 95);--surface: oklch(.995 .005 95);--surface-2: oklch(.93 .03 95);--ink: oklch(0 0 0);--muted: oklch(.43 .02 95);--line: oklch(0 0 0 / .25);--line-strong: var(--ink);--pop-yellow: oklch(.86 .17 92);--pop-pink: oklch(.72 .2 358);--pop-cobalt: oklch(.55 .215 263);--pop-lime: oklch(.85 .21 130);--pop-orange: oklch(.76 .16 55);--surface-ink: var(--ink);--on-ink-muted: oklch(.78 .02 95);--primary: var(--pop-cobalt);--primary-hover: oklch(.5 .21 263);--primary-active: oklch(.45 .2 263);--primary-soft: oklch(.93 .05 263);--on-primary: oklch(1 0 0);--on-dark: oklch(1 0 0);--cat-meds: var(--pop-pink);--on-cat-meds: var(--ink);--cat-meds-soft: oklch(.94 .05 358);--cat-meds-ink: oklch(.52 .21 358);--cat-vet: var(--pop-cobalt);--on-cat-vet: oklch(1 0 0);--cat-vet-soft: oklch(.93 .05 263);--cat-vet-ink: oklch(.5 .19 263);--cat-vax: var(--pop-lime);--on-cat-vax: var(--ink);--cat-vax-soft: oklch(.95 .08 130);--cat-vax-ink: oklch(.45 .12 140);--cal-meds: var(--cat-meds);--cal-vet: var(--cat-vet);--cal-vax: var(--cat-vax);--status-done: oklch(.53 .14 150);--status-done-soft: oklch(.93 .09 145);--status-done-ink: oklch(.45 .12 140);--status-due: var(--pop-yellow);--status-due-soft: oklch(.95 .08 95);--status-due-ink: oklch(.45 .1 80);--status-overdue: oklch(.5 .2 27);--status-overdue-soft: oklch(.93 .04 27);--status-overdue-ink: oklch(.5 .2 27);--today-wash: oklch(.86 .17 92 / .28);--focus-ring: var(--pop-cobalt);--border-w: 3px;--border-w-thin: 2px;--border-w-heavy: 4px;--font-display: "Unbounded", "Unbounded Fallback", system-ui, sans-serif;--font-sans: "Manrope", "Manrope Fallback", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", "Plex Mono Fallback", ui-monospace, "Courier New", monospace;--fw-regular: 400;--fw-semibold: 600;--fw-bold: 800;--fw-display: 700;--fw-display-sub: 500;--fs-hero: clamp(1.75rem, .9rem + 4.2vw, 3rem);--fs-display: clamp(1.375rem, 1rem + 1.9vw, 2rem);--fs-headline: clamp(1.0625rem, .9rem + .9vw, 1.375rem);--fs-title: 1.0625rem;--fs-body: 1rem;--fs-label: .875rem;--fs-mono: .8125rem;--lh-tight: 1.12;--lh-snug: 1.25;--lh-body: 1.6;--measure: 65ch;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-8: 3rem;--space-10: 4rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px;--shadow-color: oklch(0 0 0);--ease-out: cubic-bezier(.215, .61, .355, 1);--ease-in-out: cubic-bezier(.645, .045, .355, 1);--ease-pop: cubic-bezier(.34, 1.56, .64, 1);--ease-settle: cubic-bezier(.22, 1, .36, 1);--ease-spring: var(--ease-pop);--ease-spring-gentle: var(--ease-settle);--dur-micro: 80ms;--dur-ui: .14s;--dur-modal: .22s;--dur-spring: .5s;--dur-spring-gentle: .38s;--dur-enter: .36s;--stagger-step: 45ms;--dur-celebrate: .55s;--pattern-dot-color: oklch(0 0 0 / .07);--pattern-dot-size: 18px;--z-base: 1;--z-dropdown: 1000;--z-sticky: 1100;--z-modal-backdrop: 1200;--z-modal: 1300;--z-toast: 1400;--z-tooltip: 1500;--tap-min: 44px;--bottom-nav-h: 3.5rem;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}@supports (animation-timing-function: linear(0,1)){:root{--ease-spring: linear( 0, .056 3.6%, .185 7.1%, .345 10.7%, .506 14.3%, .652 17.9%, .774 21.4%, .869 25%, .939 28.6%, .987 32.1%, 1.016 35.7%, 1.032 39.3%, 1.038 42.9%, 1.038 46.4%, 1.034 50%, 1.028 53.6%, 1.022 57.1%, 1.016 60.7%, 1.011 64.3%, 1.006 67.9%, 1.003 71.4%, 1.001 75%, 1 78.6%, .999 82.1%, .999 89.3%, 1 );--ease-spring-gentle: linear( 0, .063 4.5%, .199 9.1%, .357 13.6%, .508 18.2%, .638 22.7%, .743 27.3%, .824 31.8%, .884 36.4%, .927 40.9%, .957 45.5%, .976 50%, .988 54.5%, .996 59.1%, 1 63.6%, 1.002 68.2%, 1.003 72.7%, 1.003 81.8%, 1.002 90.9%, 1 )}}*,*:before,*:after{--shadow-xs: 2px 2px 0 var(--shadow-color);--shadow-rest: 4px 4px 0 var(--shadow-color);--shadow-hover: 6px 6px 0 var(--shadow-color);--shadow-pressed: 0 0 0 var(--shadow-color);--shadow-sticker: 5px 5px 0 var(--shadow-color);--shadow-modal: 8px 8px 0 var(--shadow-color)}@font-face{font-family:Unbounded;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/unbounded-latin-500-normal-4slEIF53.woff2) format("woff2"),url(/assets/unbounded-latin-500-normal-ZsrgWWU1.woff) format("woff")}@font-face{font-family:Unbounded;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/unbounded-latin-700-normal-CaoNriVp.woff2) format("woff2"),url(/assets/unbounded-latin-700-normal-CZtriu5h.woff) format("woff")}@font-face{font-family:Unbounded;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/unbounded-cyrillic-500-normal-vuFlZByi.woff2) format("woff2"),url(/assets/unbounded-cyrillic-500-normal-CRDmNtZY.woff) format("woff")}@font-face{font-family:Unbounded;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/unbounded-cyrillic-700-normal-BnWDpkfm.woff2) format("woff2"),url(/assets/unbounded-cyrillic-700-normal-BKv7sql3.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/manrope-latin-400-normal-PaqtzbVb.woff2) format("woff2"),url(/assets/manrope-latin-400-normal-8tf8FM3T.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/manrope-latin-600-normal-4f0koTD-.woff2) format("woff2"),url(/assets/manrope-latin-600-normal-BqgrALkZ.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/manrope-latin-800-normal-BfWYOv1c.woff2) format("woff2"),url(/assets/manrope-latin-800-normal-uHUdIJgA.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/manrope-cyrillic-400-normal-BMzJvInZ.woff2) format("woff2"),url(/assets/manrope-cyrillic-400-normal-Dvx59UGC.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/manrope-cyrillic-600-normal-DvRl3Mj-.woff2) format("woff2"),url(/assets/manrope-cyrillic-600-normal-It4mZcQk.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/manrope-cyrillic-800-normal-AvdZ5mAV.woff2) format("woff2"),url(/assets/manrope-cyrillic-800-normal-BuEMjQU-.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff) format("woff")}@font-face{font-family:Unbounded Fallback;src:local("Arial"),local("Liberation Sans"),local("Arimo");font-weight:400 700;font-style:normal;size-adjust:134.59%;ascent-override:73.928%;descent-override:18.203%;line-gap-override:0%}@font-face{font-family:Manrope Fallback;src:local("Arial"),local("Liberation Sans"),local("Arimo");font-weight:400 800;font-style:normal;size-adjust:103.185%;ascent-override:103.309%;descent-override:29.074%;line-gap-override:0%}@font-face{font-family:Plex Mono Fallback;src:local("Courier New");font-weight:400 600;font-style:normal;size-adjust:99.983%;ascent-override:102.517%;descent-override:27.505%;line-gap-override:0%}.t-display{font-family:var(--font-display);font-size:var(--fs-display);font-weight:var(--fw-display);line-height:var(--lh-tight);letter-spacing:0;text-wrap:balance;overflow-wrap:break-word}.t-headline{font-family:var(--font-display);font-size:var(--fs-headline);font-weight:var(--fw-display);line-height:var(--lh-snug);letter-spacing:0;text-wrap:balance;overflow-wrap:break-word}.t-hero{font-family:var(--font-display);font-size:var(--fs-hero);font-weight:var(--fw-display);line-height:var(--lh-tight);letter-spacing:0;text-wrap:balance;overflow-wrap:break-word}.t-title{font-size:var(--fs-title);font-weight:var(--fw-bold);line-height:var(--lh-snug)}.t-body{font-size:var(--fs-body);font-weight:var(--fw-regular);line-height:var(--lh-body)}.t-label{font-size:var(--fs-label);font-weight:var(--fw-semibold);line-height:1.4}.t-mono{font-family:var(--font-mono);font-size:var(--fs-mono);font-weight:var(--fw-regular);font-variant-numeric:tabular-nums;line-height:1.4}.t-sticker{font-family:var(--font-mono);font-size:var(--fs-mono);font-weight:var(--fw-semibold);letter-spacing:.08em;text-transform:uppercase}.t-muted{color:var(--muted)}.prose{max-width:var(--measure);text-wrap:pretty}html{scroll-padding-top:calc(4rem + var(--safe-top))}body{background-color:var(--bg);background-image:radial-gradient(var(--pattern-dot-color) 1.5px,transparent 1.5px);background-size:var(--pattern-dot-size) var(--pattern-dot-size);color:var(--ink);font-family:var(--font-sans);font-size:var(--fs-body);font-weight:var(--fw-regular)}.bg-dots{background-color:var(--bg);background-image:radial-gradient(var(--pattern-dot-color) 1.5px,transparent 1.5px);background-size:var(--pattern-dot-size) var(--pattern-dot-size)}.bg-checker{background-color:var(--bg);background-image:linear-gradient(45deg,var(--surface-2) 25%,transparent 25%,transparent 75%,var(--surface-2) 75%),linear-gradient(45deg,var(--surface-2) 25%,transparent 25%,transparent 75%,var(--surface-2) 75%);background-size:24px 24px;background-position:0 0,12px 12px}h1,h2,h3,h4{letter-spacing:-.01em;text-wrap:balance}:focus-visible{outline:var(--border-w) solid var(--focus-ring);outline-offset:2px;animation:ds-focus-pop .2s var(--ease-settle)}@keyframes ds-focus-pop{0%{outline-offset:5px}}@media (forced-colors: active){:focus-visible{outline:2px solid Highlight!important;outline-offset:2px!important}}::selection{background:var(--pop-yellow);color:var(--ink)}::placeholder{color:var(--muted);opacity:1}button,a,input,select,textarea,label{touch-action:manipulation}input,textarea,select{font-size:max(16px,var(--fs-body))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--space-2);top:var(--space-2);z-index:var(--z-tooltip);padding:var(--space-2) var(--space-4);background:var(--pop-yellow);color:var(--ink);font-weight:var(--fw-bold);border:var(--border-w-thin) solid var(--ink);border-radius:var(--radius-sm);box-shadow:var(--shadow-xs);transform:translateY(-150%);transition:transform var(--dur-ui) var(--ease-out)}.skip-link:focus{transform:translateY(0)}.dialog-form{display:flex;flex-direction:column;gap:var(--space-4)}.invite-link{display:flex;flex-direction:column;gap:var(--space-3)}.invite-link__row{display:flex;gap:var(--space-2);align-items:center}.invite-link__row input{flex:1 1 auto;min-width:0}@media (max-width: 30rem){.invite-link__row{flex-direction:column;align-items:stretch}}@keyframes ds-pop-in{0%{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ds-rise{0%{opacity:0;transform:translateY(16px) scale(.99)}}.anim-rise{animation:ds-rise var(--dur-enter) var(--ease-spring-gentle) backwards;animation-delay:calc(min(var(--stagger-i, 0),8) * var(--stagger-step))}@keyframes ds-slap{0%{opacity:0;transform:scale(1.06) rotate(.5deg)}}.anim-slap{animation:ds-slap var(--dur-spring) var(--ease-spring) backwards;animation-delay:calc(min(var(--stagger-i, 0),8) * var(--stagger-step))}main{view-transition-name:page}:root:not([data-vt-nav])::view-transition-old(page){animation:vt-page-out .14s var(--ease-out) both}:root:not([data-vt-nav])::view-transition-new(page){animation:vt-page-in .3s var(--ease-spring-gentle) both}@keyframes vt-page-out{to{opacity:0;transform:translateY(8px)}}@keyframes vt-page-in{0%{opacity:0;transform:translateY(18px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}::view-transition-group(*),::view-transition-image-pair(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}.ds-spinner{display:inline-flex}.ds-spinner--center{display:flex;align-items:center;justify-content:center;min-height:40vh}.ds-spinner__row{display:inline-flex;align-items:center;gap:var(--space-1)}.ds-spinner__sq{width:.625rem;height:.625rem;border:var(--border-w-thin) solid var(--ink);border-radius:2px;animation:ds-hop .55s var(--ease-in-out) infinite alternate}.ds-spinner__sq:nth-child(1){background:var(--pop-yellow);animation-delay:-.36s}.ds-spinner__sq:nth-child(2){background:var(--pop-pink);animation-delay:-.18s}.ds-spinner__sq:nth-child(3){background:var(--pop-cobalt);animation-delay:0s}@keyframes ds-hop{0%{transform:translateY(28%)}to{transform:translateY(-28%)}}@media (prefers-reduced-motion: reduce){.ds-spinner__sq{animation:none}}.ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap-min);padding:0 var(--space-5);border:var(--border-w) solid var(--ink);border-radius:var(--radius-md);font-weight:var(--fw-bold);font-size:var(--fs-body);line-height:1;white-space:nowrap;box-shadow:var(--shadow-rest);transition:background-color var(--dur-ui) var(--ease-out),border-color var(--dur-ui) var(--ease-out),color var(--dur-ui) var(--ease-out),transform var(--dur-spring) var(--ease-spring),box-shadow var(--dur-spring) var(--ease-spring)}@media (hover: hover) and (pointer: fine){.ds-btn:not(:disabled):hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-hover)}}.ds-btn:not(:disabled):active{transform:translate(4px,4px) scale(.99);box-shadow:var(--shadow-pressed);transition-duration:var(--dur-ui),var(--dur-ui),var(--dur-ui),var(--dur-micro),var(--dur-micro);transition-timing-function:var(--ease-out)}.ds-btn--block{width:100%}.ds-btn--primary{background-color:var(--primary);color:var(--on-primary)}@media (hover: hover) and (pointer: fine){.ds-btn--primary:not(:disabled):hover{background-color:var(--primary-hover)}}.ds-btn--primary:not(:disabled):active{background-color:var(--primary-active)}.ds-btn--secondary{background-color:var(--surface);color:var(--ink)}.ds-btn--danger{background-color:var(--status-overdue);color:var(--on-primary)}.ds-btn--sm{min-height:var(--tap-min);padding:0 var(--space-4);font-size:var(--fs-label);border-width:var(--border-w-thin);box-shadow:var(--shadow-xs)}@media (hover: hover) and (pointer: fine){.ds-btn--sm:not(:disabled):hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--shadow-color)}}.ds-btn--sm:not(:disabled):active{transform:translate(2px,2px);box-shadow:var(--shadow-pressed)}.ds-btn--ghost{background-color:transparent;border-color:transparent;color:var(--ink);box-shadow:none}@media (hover: hover) and (pointer: fine){.ds-btn--ghost:not(:disabled):hover{background-color:var(--pop-yellow);border-color:var(--ink);color:var(--ink);transform:translate(-1px,-1px);box-shadow:var(--shadow-xs)}}.ds-btn--ghost:not(:disabled):active{background-color:var(--pop-yellow);border-color:var(--ink);color:var(--ink);transform:translate(2px,2px);box-shadow:var(--shadow-pressed)}.ds-btn:disabled{background-color:var(--surface-2);border-color:color-mix(in oklch,var(--ink) 40%,transparent);color:var(--muted);box-shadow:none;transform:none;cursor:not-allowed}.app-nav{position:sticky;top:0;z-index:var(--z-sticky);background:var(--bg);border-bottom:var(--border-w) solid var(--ink);padding-top:var(--safe-top)}@supports (animation-timeline: scroll()){.app-nav{animation:app-nav-cast linear both;animation-timeline:scroll();animation-range:0 60px}@keyframes app-nav-cast{to{box-shadow:0 5px 0 var(--shadow-color)}}}.app-nav__inner{max-width:80rem;margin-inline:auto;padding:var(--space-3) max(var(--space-4),var(--safe-left)) var(--space-3) max(var(--space-4),var(--safe-right));display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.app-nav__left{display:flex;align-items:center;gap:var(--space-5)}.app-nav__brand{display:inline-block;font-family:var(--font-display);font-weight:var(--fw-display);font-size:var(--fs-title);letter-spacing:0;color:var(--ink);background:var(--pop-yellow);border:var(--border-w-thin) solid var(--ink);border-radius:var(--radius-sm);box-shadow:var(--shadow-xs);padding:var(--space-1) var(--space-3);transform:rotate(-2deg);transition:transform var(--dur-ui) var(--ease-out),box-shadow var(--dur-ui) var(--ease-out)}@media (hover: hover) and (pointer: fine){.app-nav__brand:hover{transform:rotate(-2deg) translate(-1px,-1px);box-shadow:var(--shadow-rest)}}.app-nav__links{display:flex;gap:var(--space-4)}.app-nav__link{font-size:var(--fs-label);font-weight:var(--fw-bold);color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;min-height:var(--tap-min);padding:var(--space-2) var(--space-3);border:var(--border-w-thin) solid transparent;border-radius:var(--radius-sm);transition:background-color var(--dur-ui) var(--ease-out),border-color var(--dur-ui) var(--ease-out),color var(--dur-ui) var(--ease-out),box-shadow var(--dur-ui) var(--ease-out),transform var(--dur-ui) var(--ease-out)}@media (hover: hover) and (pointer: fine){.app-nav__link:hover{background:var(--pop-yellow);border-color:var(--ink);color:var(--ink)}}.app-nav__link.active{background:var(--ink);border-color:var(--ink);color:var(--on-dark);box-shadow:var(--shadow-xs)}.app-nav__link:active{transform:translate(2px,2px);box-shadow:var(--shadow-pressed)}.app-nav__right{display:flex;align-items:center;gap:var(--space-3)}.app-nav__user{color:var(--muted)}.app-bottomnav{display:none}@media (max-width: 48rem){.app-nav__links,.app-nav__user{display:none}body{padding-bottom:calc(var(--bottom-nav-h) + var(--safe-bottom) + 5px)}.app-bottomnav{position:fixed;inset:auto 0 0 0;z-index:var(--z-sticky);display:flex;background:var(--surface-ink);padding-top:var(--space-1);padding-bottom:calc(var(--safe-bottom) + 5px);padding-inline:var(--safe-left) var(--safe-right)}.app-bottomnav__tab{position:relative;z-index:0;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--bottom-nav-h);padding:var(--space-2) var(--space-1);color:var(--on-dark);text-decoration:none;font-size:.8125rem;font-weight:var(--fw-semibold);transition:transform var(--dur-ui) var(--ease-out)}.app-bottomnav__tab.active{color:var(--ink);font-weight:var(--fw-bold)}.app-bottomnav__tab.active:before{content:"";position:absolute;z-index:-1;inset:var(--space-1) var(--space-2);background:var(--pop-yellow);border:var(--border-w-thin) solid var(--ink);border-radius:var(--radius-md);--shadow-color: var(--bg);box-shadow:var(--shadow-xs);transform:rotate(-1.5deg);animation:app-tab-pop var(--dur-spring) var(--ease-spring)}.app-bottomnav__tab:active{transform:translate(2px,2px)}.app-bottomnav__tab:active:before{box-shadow:var(--shadow-pressed)}.app-bottomnav__icon{width:1.5rem;height:1.5rem}@keyframes app-tab-pop{0%{transform:rotate(-5deg) scale(.7)}to{transform:rotate(-1.5deg) scale(1)}}.app-bottomnav__label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
