:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--font-display:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif;--font-ui:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--leading-tight:1.2;--leading-normal:1.5;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--tracking-wide:.08em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--radius-pill:999px;--content-max:72rem;--tabbar-height:4rem;--duration-fast:.12s;--duration-base:.2s;--duration-slow:.32s;--ease-standard:cubic-bezier(.2, 0, 0, 1);--ease-emphasised:cubic-bezier(.3, 0, 0, 1.2);--color-bg:#f6f2ec;--color-surface:#fdfbf8;--color-surface-raised:#fff;--color-text:#24201c;--color-text-muted:#6d645a;--color-border:#e3dbd0;--color-accent:#1f4b47;--color-accent-hover:#173a37;--color-accent-soft:#e2ece9;--color-accent-text:#fff;--color-danger:#a83a2c;--color-danger-soft:#f7e4e0;--color-success:#2f6b3d;--color-success-soft:#e2efe3;--color-focus:#2f7a73;--color-overlay:#24201c6b;--shadow-sm:0 1px 2px #3c2d1e0f;--shadow-md:0 1px 2px #3c2d1e0d, 0 6px 18px -6px #3c2d1e24;--shadow-lg:0 2px 6px #3c2d1e0f, 0 22px 48px -12px #3c2d1e3d;--focus-ring:0 0 0 3px var(--color-bg), 0 0 0 5px var(--color-focus)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--color-bg:#161412;--color-surface:#1f1c19;--color-surface-raised:#2a2622;--color-text:#f1ebe3;--color-text-muted:#a99e91;--color-border:#3a352f;--color-accent:#7fbdb3;--color-accent-hover:#9acdc4;--color-accent-soft:#23332f;--color-accent-text:#0f1d1b;--color-danger:#f08a7a;--color-danger-soft:#3a211d;--color-success:#8fcf9b;--color-success-soft:#1e2e21;--color-focus:#9acdc4;--color-overlay:#0009;--shadow-sm:0 1px 2px #0006;--shadow-md:0 1px 2px #0006, 0 8px 20px -8px #0009;--shadow-lg:0 2px 6px #0006, 0 24px 48px -12px #000000b3}}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0s;--duration-base:0s;--duration-slow:0s}*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-md);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{box-shadow:var(--focus-ring);outline:none}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app{min-height:100dvh}.app-header{background:var(--color-surface)}.app-header__inner{max-width:var(--content-max);padding:var(--space-5) var(--space-5) var(--space-4);margin:0 auto}.wordmark{align-items:baseline;gap:var(--space-1) var(--space-3);font-weight:var(--weight-regular);flex-wrap:wrap;display:flex}.wordmark__name{font-family:var(--font-display);font-size:var(--text-2xl);line-height:var(--leading-tight);letter-spacing:-.01em}.wordmark__tagline{font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-muted)}.tabbar{z-index:10;background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0}.tabbar__list{gap:var(--space-1);max-width:var(--content-max);padding:0 var(--space-4);margin:0 auto;display:flex}.tabbar__tab{align-items:center;gap:var(--space-2);min-height:3rem;padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm) var(--radius-sm) 0 0;color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:color var(--duration-base) var(--ease-standard);background:0 0;border:0;display:inline-flex;position:relative}.tabbar__tab:after{content:"";left:var(--space-4);right:var(--space-4);background:var(--color-accent);height:2px;transition:transform var(--duration-slow) var(--ease-standard);border-radius:2px;position:absolute;bottom:-1px;transform:scaleX(0)}.tabbar__tab:hover{color:var(--color-text)}.tabbar__tab[aria-selected=true]{color:var(--color-accent)}.tabbar__tab[aria-selected=true]:after{transform:scaleX(1)}.tabbar__icon{flex:none}.app-main{max-width:var(--content-max);padding:var(--space-6) var(--space-5) var(--space-7);margin:0 auto}.panel{animation:panel-in var(--duration-slow) var(--ease-standard)}.panel:focus-visible{border-radius:var(--radius-md)}@keyframes panel-in{0%{opacity:0;transform:translateY(4px)}}@media (width<=639.98px){.app-header__inner{padding:var(--space-4)}.wordmark__name{font-size:var(--text-xl)}.tabbar{border-top:1px solid var(--color-border);box-shadow:var(--shadow-md);padding-bottom:env(safe-area-inset-bottom);border-bottom:0;position:fixed;inset:auto 0 0}.tabbar__list{gap:0;padding:0}.tabbar__tab{height:var(--tabbar-height);padding:var(--space-1);font-size:var(--text-xs);border-radius:0;flex-direction:column;flex:1;justify-content:center;gap:2px}.tabbar__tab .badge{top:var(--space-2);box-shadow:0 0 0 2px var(--color-surface);position:absolute;left:calc(50% + .375rem)}.tabbar__tab:after{inset:-1px 30% auto}.app-main{padding:var(--space-5) var(--space-4) calc(var(--tabbar-height) + env(safe-area-inset-bottom) + var(--space-6))}}.section-heading{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:var(--weight-regular);line-height:var(--leading-tight);letter-spacing:-.01em;margin-bottom:var(--space-5)}.section-heading__meta{margin-top:var(--space-1);font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-muted);letter-spacing:0;display:block}.button{justify-content:center;align-items:center;gap:var(--space-2);min-height:2.75rem;padding:var(--space-2) var(--space-5);border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);border:1px solid #0000;line-height:1;text-decoration:none;display:inline-flex}.button:active:not(:disabled){transform:scale(.98)}.button:disabled{opacity:.45;cursor:not-allowed}.button--primary{background:var(--color-accent);color:var(--color-accent-text)}.button--primary:hover:not(:disabled){background:var(--color-accent-hover)}.button--secondary{background:var(--color-surface-raised);border-color:var(--color-border);color:var(--color-text)}.button--secondary:hover:not(:disabled){border-color:var(--color-text-muted)}.button--quiet{color:var(--color-text-muted);padding-inline:var(--space-3);background:0 0}.button--quiet:hover:not(:disabled){background:var(--color-accent-soft);color:var(--color-text)}.button--danger{background:var(--color-danger);color:var(--color-surface-raised)}.button--danger:hover:not(:disabled){filter:brightness(.92)}.button--icon{width:2.75rem;color:var(--color-text-muted);background:0 0;padding:0}.button--icon:hover:not(:disabled){background:var(--color-accent-soft);color:var(--color-text)}.chip-row{gap:var(--space-2);scrollbar-width:none;padding:2px;display:flex;overflow-x:auto}.chip-row::-webkit-scrollbar{display:none}.chip{align-items:center;gap:var(--space-1);min-height:2.25rem;padding:var(--space-1) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-raised);color:var(--color-text);font-size:var(--text-sm);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);flex:none;display:inline-flex}.chip:hover{border-color:var(--color-text-muted)}.chip[aria-pressed=true],.chip--selected{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-text)}.card{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-5);transition:box-shadow var(--duration-base) var(--ease-standard), transform var(--duration-base) var(--ease-standard)}.card--interactive:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.badge{min-width:1.375rem;height:1.375rem;padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--color-accent-soft);color:var(--color-accent);font-size:var(--text-xs);font-weight:var(--weight-semibold);white-space:nowrap;justify-content:center;align-items:center;line-height:1;display:inline-flex}.badge--count{background:var(--color-danger);color:var(--color-surface-raised)}.badge--success{background:var(--color-success-soft);color:var(--color-success)}.badge--danger{background:var(--color-danger-soft);color:var(--color-danger)}.dialog{width:min(32rem, calc(100vw - 2 * var(--space-4)));max-height:calc(100dvh - 2 * var(--space-6));border-radius:var(--radius-xl);background:var(--color-surface-raised);color:var(--color-text);box-shadow:var(--shadow-lg);border:0;padding:0}.dialog[open]{animation:dialog-in var(--duration-slow) var(--ease-standard)}.dialog::backdrop{background:var(--color-overlay)}.dialog__header{padding:var(--space-5) var(--space-5) 0}.dialog__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-regular)}.dialog__body{gap:var(--space-4);padding:var(--space-5);display:grid}.dialog__actions{justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);background:var(--color-surface-raised);display:flex;position:sticky;bottom:0}.dialog__body>p{color:var(--color-text-muted)}@keyframes dialog-in{0%{opacity:0;transform:translateY(12px)scale(.98)}}@media (width<=639.98px){.dialog{width:100vw;max-width:100vw;max-height:calc(100dvh - var(--space-6));border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding-bottom:env(safe-area-inset-bottom);margin:auto 0 0}.dialog__actions>.button{flex:1}}.field{gap:var(--space-1);display:grid}.field__label{font-size:var(--text-sm);font-weight:var(--weight-medium)}.field__hint{font-size:var(--text-xs);color:var(--color-text-muted)}.field__input{width:100%;min-height:2.75rem;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);transition:border-color var(--duration-fast) var(--ease-standard)}select.field__input{appearance:none;padding-right:var(--space-7);background-image:linear-gradient(45deg, transparent 50%, var(--color-text-muted) 50%), linear-gradient(135deg, var(--color-text-muted) 50%, transparent 50%);cursor:pointer;background-position:right 1.25rem center,right .9rem center;background-repeat:no-repeat;background-size:.35rem .35rem}.field__input:hover{border-color:var(--color-text-muted)}.field__input:focus-visible{border-color:var(--color-focus)}.field__input[aria-invalid=true]{border-color:var(--color-danger)}.field__error{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-danger)}.empty-state{align-items:center;gap:var(--space-2);max-width:28rem;margin:var(--space-6) auto;padding:var(--space-7) var(--space-5);text-align:center;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-xl);flex-direction:column;display:flex}.empty-state__art{margin-bottom:var(--space-3);fill:none;stroke:var(--color-accent);stroke-width:2.5px;stroke-linecap:round;opacity:.7}.empty-state__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-regular)}.empty-state__text{color:var(--color-text-muted);font-size:var(--text-sm)}.empty-state__action{margin-top:var(--space-4)}.frame-illustration{aspect-ratio:240/100;width:100%;height:auto;color:var(--color-text);display:block}.frame-grid{gap:var(--space-4);grid-template-columns:1fr;margin:0;padding:0;list-style:none;display:grid}@media (width>=480px){.frame-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=900px){.frame-grid{grid-template-columns:repeat(3,1fr)}}@media (width>=1200px){.frame-grid{grid-template-columns:repeat(4,1fr)}}.frame-card{gap:var(--space-1);flex-direction:column;display:flex}.frame-card p,.frame-card h3{margin:0}.frame-card .frame-illustration{margin-bottom:var(--space-3)}.frame-card__name{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-regular);line-height:var(--leading-tight);letter-spacing:-.01em}.frame-card .frame-card__brand{margin-bottom:var(--space-2);color:var(--color-text-muted);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase}.frame-card__shape,.frame-card__size,.frame-card__colour{color:var(--color-text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.frame-card__price{font-size:var(--text-lg);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums}.filter-bar{gap:var(--space-3);margin-bottom:var(--space-5);flex-direction:column;display:flex}.filter-group{align-items:center;gap:var(--space-3);display:flex}.filter-group__label{width:4rem;color:var(--color-text-muted);font-size:var(--text-sm);flex:none}.filter-group__chips{flex-wrap:wrap}.filter-bar__row{align-items:flex-end;gap:var(--space-3);display:flex}.filter-bar__count{color:var(--color-text-muted);font-size:var(--text-sm);margin:0}@media (width<=639.98px){.filter-group{align-items:stretch;gap:var(--space-1);flex-direction:column}.filter-group__chips{flex-wrap:nowrap}}.patients-toolbar,.frames-toolbar{margin:calc(var(--space-5) * -1 - 2.75rem) 0 var(--space-5);justify-content:flex-end;display:flex}@media (width<=639.98px){.patients-toolbar,.frames-toolbar{margin:0 0 var(--space-4)}.patients-toolbar>.button,.frames-toolbar>.button{width:100%}}.patient-list{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr));margin:0;padding:0;list-style:none;display:grid}.patient-row{gap:var(--space-3);padding:var(--space-5);flex-direction:column;display:flex}.patient-row p,.patient-row h3,.patient-row h5{margin:0}.patient-row__head{gap:var(--space-1);display:grid}.patient-row__name{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-regular);line-height:var(--leading-tight);letter-spacing:-.01em}.patient-row__due{align-items:center;gap:var(--space-2);color:var(--color-accent);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.patient-row__meta{gap:var(--space-1) var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.patient-row__meta>p:has(.phone-link){flex-basis:100%}.phone-link{align-items:center;gap:var(--space-2);min-height:2rem;color:var(--color-text);font-weight:var(--weight-medium);border-radius:var(--radius-sm);transition:color var(--duration-fast) var(--ease-standard);text-decoration:none;display:inline-flex}.phone-link .icon{color:var(--color-accent)}.phone-link:hover{color:var(--color-accent);text-underline-offset:3px;text-decoration:underline}.frame-card__footer{justify-content:space-between;align-items:center;gap:var(--space-2);padding-top:var(--space-3);margin-top:auto;display:flex}.frame-card__actions{gap:var(--space-1);margin-right:calc(var(--space-2) * -1);display:flex}.icon{flex:none}.icon-button{border-radius:var(--radius-pill);min-width:2.75rem;min-height:2.75rem;color:var(--color-text-muted);font-size:var(--text-lg);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.icon-button:hover{background:var(--color-accent-soft);color:var(--color-accent)}.icon-button:active,.chip:active{transform:scale(.94)}.icon-button--danger:hover{background:var(--color-danger-soft);color:var(--color-danger)}.month-stepper{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);padding:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);display:flex}.month-stepper__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-regular);line-height:var(--leading-tight);text-align:center;margin:0}.month-stepper .button--secondary{background:0 0;border-color:#0000}.month-stepper .button--secondary:hover:not(:disabled){background:var(--color-accent-soft);border-color:#0000}@media (width<=639.98px){.month-stepper .button{width:2.75rem;padding:0}.month-stepper__label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.reminder-section+.reminder-section{margin-top:var(--space-7)}.reminder-section__title{margin:0 0 var(--space-3);color:var(--color-text-muted);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase}.patient-row__due--overdue{color:var(--color-danger)}.patient-row__actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}.patient-row__actions>.icon-button:first-of-type{margin-left:auto}.reminder-actions>.button{flex:auto}.reminder-actions>.badge{height:2.75rem;padding-inline:var(--space-3);background:var(--color-success-soft);color:var(--color-success)}
