:root{--color-bg:#f5f7fa;--color-surface:#fff;--color-surface-2:#eef2f6;--color-text:#1d2733;--color-muted:#5b6878;--color-border:#dde3ea;--color-grid:#e8edf2;--color-primary:#2f5d8a;--color-primary-contrast:#fff;--color-accent:#e0565b;--color-online:#2e7d4f;--color-offline:#b3412f;--color-warn:#a86b00;--color-danger:#c2413a;--radius:12px;--space:16px;--header-h:52px;--nav-h:56px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--color-bg:#11161c;--color-surface:#1a2129;--color-surface-2:#222b35;--color-text:#e6ebf0;--color-muted:#9aa6b3;--color-border:#2c3641;--color-grid:#232c36;--color-primary:#6fa3d6;--color-primary-contrast:#0b1520;--color-online:#6cc995;--color-offline:#f08a78;--color-warn:#f2b33d;--color-danger:#f0776f}}*,:before,:after{box-sizing:border-box}html,body{background:var(--color-bg);height:100%;color:var(--color-text);margin:0}#root{height:100%}h1{margin:0 0 12px;font-size:1.4rem}h2{margin:0 0 12px;font-size:1.1rem}h3{margin:0 0 8px}a{color:var(--color-primary)}input,select,textarea,button{font:inherit;color:inherit}input:not([type=checkbox]):not([type=radio]):not([type=color]),select,textarea{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;width:100%;min-height:40px;padding:8px 10px}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.muted{color:var(--color-muted)}.pre{white-space:pre-wrap}.splash{height:100%;color:var(--color-primary);place-items:center;font-size:1.5rem;display:grid}.app{grid-template-rows:auto 1fr auto;height:100%;display:grid}.app-header{min-height:var(--header-h);padding:env(safe-area-inset-top) var(--space) 0;background:var(--color-primary);color:var(--color-primary-contrast);justify-content:space-between;align-items:center;gap:12px;display:flex}.app-title{font-size:1.1rem;font-weight:600}.family-switcher{color:var(--color-primary-contrast);max-width:60vw;font-weight:600;border:1px solid color-mix(in srgb, var(--color-primary-contrast) 40%, transparent)!important;background:0 0!important;width:auto!important}.family-switcher option{color:var(--color-text);background:var(--color-surface)}.app-content{min-height:0;position:relative;overflow:auto}.app-nav{border-top:1px solid var(--color-border);background:var(--color-surface);padding-bottom:env(safe-area-inset-bottom);justify-content:space-around;display:flex}.app-nav a{text-align:center;min-height:var(--nav-h);color:var(--color-muted);flex:1;place-items:center;padding:10px 4px;font-size:.9rem;text-decoration:none;display:grid}.app-nav a.active{color:var(--color-primary);font-weight:600}.sync-indicator{background:var(--color-surface);color:var(--color-text);cursor:pointer;white-space:nowrap;border:0;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.8rem;display:inline-flex}.sync-indicator__dot{background:var(--color-online);border-radius:50%;width:8px;height:8px}.sync-indicator--syncing .sync-indicator__dot{background:var(--color-warn)}.sync-indicator--offline .sync-indicator__dot,.sync-indicator--error .sync-indicator__dot{background:var(--color-offline)}.badge{background:var(--color-accent);color:#fff;border-radius:999px;padding:0 6px;font-size:.75rem}.page{max-width:760px;padding:var(--space);gap:var(--space);align-content:start;margin:0 auto;display:grid}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space)}.button{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;min-height:40px;color:inherit;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:6px 14px;text-decoration:none;display:inline-flex}.button:disabled{opacity:.5;cursor:default}.button--primary{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-contrast)}.button--danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.button--danger-outline{color:var(--color-danger);border-color:color-mix(in srgb, var(--color-danger) 50%, transparent)}.button--small{min-height:32px;padding:2px 10px;font-size:.85rem}.button--block{width:100%}.icon-button{cursor:pointer;background:0 0;border:0;border-radius:50%;width:40px;height:40px;font-size:1.5rem;line-height:1}.field{gap:4px;margin-bottom:12px;display:grid}.field>span{color:var(--color-muted);font-size:.85rem}.field--inline{align-items:center;gap:8px;display:flex}.field--inline input{width:80px!important}.field--time{max-width:140px}.row{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.row>.field{flex:140px}.row>input,.row>select{flex:160px;width:auto}.spacer{flex:1}.form-error{color:var(--color-danger);margin:0 0 12px}.form-success{color:var(--color-online)}.toggle{align-items:center;gap:8px;margin-bottom:12px;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{--c:var(--color-primary);border:1.5px solid var(--c);cursor:pointer;background:0 0;border-radius:999px;min-height:36px;padding:6px 12px}.chip.is-selected{background:var(--c);color:#fff}.chip:disabled{opacity:.4;cursor:not-allowed}.chip--day{min-width:42px;padding:6px 8px}.segmented{border:1px solid var(--color-border);border-radius:10px;gap:2px;margin:0 0 12px;padding:3px;display:flex}.segmented label{text-align:center;cursor:pointer;border-radius:8px;flex:1;padding:6px 4px;font-size:.9rem}.segmented label.is-active{background:var(--color-primary);color:var(--color-primary-contrast)}.segmented input{opacity:0;pointer-events:none;position:absolute}.choice{border:0;gap:6px;margin:0 0 12px;padding:0;display:grid}.plain-list{gap:8px;margin:0 0 8px;padding:0;list-style:none;display:grid}.device-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.empty-state{padding:32px var(--space);text-align:center}.auth-page{min-height:100%;padding:var(--space);place-items:center;display:grid}.auth-card{width:100%;max-width:400px}.auth-logo{width:56px;height:56px;margin-bottom:8px;display:block}.auth-hint{text-align:center;margin-top:16px}.invitation-card{text-align:center;justify-items:center;gap:8px;display:grid}.invitation-code{letter-spacing:.08em;margin:0;font-family:ui-monospace,monospace;font-size:1.4rem}.qr{background:#fff;border-radius:8px;padding:4px}.qr svg{width:100%;height:100%}.member-list{gap:10px;margin:0 0 12px;padding:0;list-style:none;display:grid}.member-row{border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:flex-start;gap:10px;padding-bottom:10px;display:flex}.member-row input[type=color]{background:0 0;border:0;border-radius:50%;width:36px;height:36px;padding:0}.member-row__main{flex:160px;display:grid}.member-row__actions{flex-wrap:wrap;gap:6px;display:flex}.grant-table-wrap{margin-bottom:12px;overflow-x:auto}.grant-table{border-collapse:collapse;font-size:.9rem}.grant-table th,.grant-table td{text-align:center;border-bottom:1px solid var(--color-border);padding:6px 8px}.grant-table th[scope=row]{text-align:left}.grant-table input{width:20px;height:20px}.calendar-page{grid-template-rows:auto auto 1fr;height:100%;min-height:0;display:grid}.calendar-toolbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);align-items:center;gap:4px;padding:6px 8px;display:flex}.calendar-toolbar__date{text-align:center;text-overflow:ellipsis;white-space:nowrap;flex-direction:column;flex:1;align-items:center;min-width:0;font-weight:600;line-height:1.2;display:flex;position:relative;overflow:hidden}.calendar-toolbar__date>span{text-overflow:ellipsis;max-width:100%;overflow:hidden}.calendar-toolbar__week{color:var(--color-muted);font-size:.75rem;font-weight:500}.date-jump{color:var(--color-primary);justify-content:center;align-items:center;display:inline-flex;position:relative}.date-jump:focus-within{outline:2px solid var(--color-primary);outline-offset:2px}.date-jump input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.date-jump input::-webkit-calendar-picker-indicator{cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.cal-scroll{scroll-snap-type:x mandatory;min-height:0;scroll-padding-left:var(--axis);overscroll-behavior-x:contain;background:var(--color-surface);overflow:auto}.cal-grid{grid-template-columns:var(--axis) repeat(var(--days), var(--page));grid-template-rows:auto calc(24 * var(--hour));width:max-content;display:grid}.cal-corner{z-index:4;background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;left:0}.cal-day-header{z-index:2;background:var(--color-surface);border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);scroll-snap-align:start;min-width:0;padding:4px 0 2px;position:sticky;top:0}.cal-day-header__date{color:var(--color-muted);text-align:center;text-transform:capitalize;font-size:.8rem}.cal-day-header.is-today .cal-day-header__date{color:var(--color-accent);font-weight:700}.cal-members,.cal-allday{grid-template-columns:repeat(var(--cols), minmax(0, 1fr));display:grid}.cal-member{flex-direction:column;align-items:center;gap:2px;min-width:0;padding:2px;display:flex}.avatar{color:#fff;border-radius:50%;place-items:center;width:28px;height:28px;font-size:.85rem;font-weight:700;display:grid}.cal-member__name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.75rem;overflow:hidden}.cal-allday{grid-auto-flow:dense;gap:2px;padding:2px}.cal-allday__item{--c:var(--color-primary);text-align:left;background:color-mix(in srgb, var(--c) 25%, var(--color-surface));border:0;border-left:3px solid var(--c);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:6px;min-width:0;padding:2px 6px;font-size:.75rem;overflow:hidden}.cal-axis{z-index:3;background:var(--color-surface);border-right:1px solid var(--color-border);position:sticky;left:0}.cal-axis__hour{height:var(--hour);color:var(--color-muted);text-align:right;padding-right:4px;font-size:.7rem;transform:translateY(-.6em)}.cal-day{border-left:1px solid var(--color-border);background-image:repeating-linear-gradient(to bottom, var(--color-grid) 0, var(--color-grid) 1px, transparent 1px, transparent var(--hour));cursor:copy;position:relative}.cal-day.is-today{background-color:color-mix(in srgb, var(--color-accent) 4%, transparent)}.cal-day__sep{background:var(--color-grid);width:1px;position:absolute;top:0;bottom:0}.cal-now{background:var(--color-accent);z-index:1;pointer-events:none;height:2px;position:absolute;left:0;right:0}.cal-event{--c:var(--color-primary);z-index:1;border:0;border-left:3px solid var(--c);background:color-mix(in srgb, var(--c) 22%, var(--color-surface));text-align:left;cursor:pointer;border-radius:6px;flex-direction:column;align-items:flex-start;padding:2px 5px;font-size:.75rem;line-height:1.25;display:flex;position:absolute;overflow:hidden;box-shadow:0 1px 2px #00000014}.cal-event--cont-before{border-top-left-radius:0;border-top-right-radius:0}.cal-event--cont-after{border-bottom-right-radius:0;border-bottom-left-radius:0}.cal-event__title{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.cal-event__time{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.fab{right:calc(var(--space) + env(safe-area-inset-right));bottom:calc(var(--nav-h) + var(--space) + env(safe-area-inset-bottom));background:var(--color-accent);color:#fff;cursor:pointer;z-index:5;border:0;border-radius:50%;width:56px;height:56px;font-size:2rem;line-height:1;position:fixed;box-shadow:0 4px 14px #00000040}.conflicts{background:color-mix(in srgb, var(--color-warn) 12%, var(--color-surface));border-bottom:1px solid var(--color-border);gap:6px;padding:6px 8px;font-size:.85rem;display:grid}.conflict{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;display:flex}.conflict__actions{gap:6px;display:flex}.modal-backdrop{z-index:20;background:#0006;place-items:end center;display:grid;position:fixed;inset:0}.modal{background:var(--color-surface);width:100%;max-width:560px;max-height:92dvh;padding-bottom:env(safe-area-inset-bottom);border-radius:16px 16px 0 0;overflow:auto}@media (width>=640px){.modal-backdrop{place-items:center}.modal{border-radius:16px}}.modal__header{padding:12px var(--space) 4px;background:var(--color-surface);z-index:1;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.modal__header h2{margin:0}.modal__body{padding:4px var(--space) var(--space)}.editor__actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.repeat{background:var(--color-surface-2);border-radius:10px;gap:8px;margin-bottom:12px;padding:10px;display:grid}.details{grid-template-columns:auto 1fr;gap:4px 12px;margin:0 0 12px;display:grid}.details dt{color:var(--color-muted)}.details dd{margin:0}.leave-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.toast{left:var(--space);right:var(--space);bottom:calc(var(--nav-h) + var(--space) + env(safe-area-inset-bottom));max-width:480px;padding:12px var(--space);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);z-index:30;flex-wrap:wrap;align-items:center;gap:8px;margin:0 auto;display:flex;position:fixed;box-shadow:0 6px 24px #00000026}.toast span{flex:auto}.calendar-page{grid-template-rows:auto auto auto auto 1fr}.calendar-subbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);align-items:center;gap:8px;padding:4px 8px 6px;display:flex}.segmented--compact{flex:1;max-width:420px;margin:0}.segmented--compact label{padding:3px 4px;font-size:.8rem}.button--highlight{border-color:var(--color-primary);color:var(--color-primary)}.calendar-filter{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:6px 8px}.cal-scroll--multi .cal-member__name{font-size:.7rem}.cal-scroll--multi .avatar{width:22px;height:22px;font-size:.75rem}.cal-scroll--multi .cal-day-header{border-left-width:2px}.month{background:var(--color-surface);grid-template-rows:auto 1fr;min-height:0;display:grid;overflow:auto}.month__weekdays,.month__grid{grid-template-columns:26px repeat(7,minmax(0,1fr));display:grid}.month__week,.month__week-head{color:var(--color-muted);background:var(--color-surface-2);border-right:1px solid var(--color-grid);justify-content:center;font-size:.7rem;display:flex}.month__week{border-bottom:1px solid var(--color-grid);padding-top:4px}.month__weekdays div{text-align:center;color:var(--color-muted);border-bottom:1px solid var(--color-border);padding:4px 0;font-size:.75rem}.month__grid{grid-auto-rows:minmax(84px,1fr)}.month__day{border:0;border-right:1px solid var(--color-grid);border-bottom:1px solid var(--color-grid);text-align:left;cursor:pointer;background:0 0;flex-direction:column;align-items:stretch;gap:2px;min-width:0;padding:2px;display:flex;overflow:hidden}.month__day.is-outside{background:var(--color-surface-2);color:var(--color-muted)}.month__date{text-align:center;border-radius:999px;align-self:flex-start;min-width:22px;font-size:.8rem;font-weight:600}.month__day.is-today .month__date{background:var(--color-accent);color:#fff}.month__item{--c:var(--color-primary);border-left:2px solid var(--c);background:color-mix(in srgb, var(--c) 15%, transparent);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;padding:1px 3px;font-size:.68rem;line-height:1.25;overflow:hidden}.month__item.is-allday{background:color-mix(in srgb, var(--c) 35%, transparent)}.month__time{color:var(--color-muted)}.month__more{color:var(--color-muted);font-size:.68rem}.color-chips{align-items:center}.color-dot{cursor:pointer;width:30px;height:30px;box-shadow:inset 0 0 0 2px var(--color-surface);border:2px solid #0000;border-radius:50%}.color-dot.is-selected{border-color:var(--color-text)}.hint{margin:-6px 0 12px;font-size:.85rem}.agenda-week{border-bottom:2px solid var(--color-primary);flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:18px 0 10px;padding-bottom:4px;display:flex}.agenda-week:first-of-type{margin-top:4px}.agenda-week__number{color:var(--color-primary);font-weight:700}.agenda-week__range{color:var(--color-muted);font-size:.85rem}.agenda-week__current{background:var(--color-primary);color:var(--color-primary-contrast);border-radius:999px;margin-left:auto;padding:1px 8px;font-size:.75rem}.agenda-day h2{color:var(--color-muted);text-transform:capitalize;margin:0 0 6px;font-size:.95rem}.agenda-day.is-past{opacity:.6}.agenda-item{--c:var(--color-primary);text-align:left;border:1px solid var(--color-border);border-left:4px solid var(--c);background:var(--color-surface);cursor:pointer;border-radius:10px;align-items:flex-start;gap:12px;width:100%;padding:10px 12px;display:flex}.agenda-item__time{font-variant-numeric:tabular-nums;color:var(--color-muted);flex:0 0 92px;font-size:.9rem}.agenda-item__main{min-width:0;display:grid}.agenda-item__main .muted{text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.status-pill{border-radius:999px;align-self:center;padding:4px 10px;font-size:.85rem}.status-pill--on{background:color-mix(in srgb, var(--color-online) 18%, transparent);color:var(--color-online)}.cal-scroll--multi .cal-event{border-left-width:2px;padding:2px 3px}.cal-scroll--multi .cal-event__title{white-space:normal;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;font-size:.7rem;line-height:1.15}.cal-scroll--multi .cal-event__time,.cal-scroll--multi .cal-event__series{display:none}@media (width<=600px){.month__time{display:none}.month__item{text-overflow:clip;padding:1px 2px}}.page-title-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.page-title-row h1{margin:0}.feed-created{background:color-mix(in srgb, var(--color-online) 10%, var(--color-surface));border-radius:10px;gap:8px;margin-bottom:12px;padding:12px;display:grid}.feed-created p{margin:0}.hint-small{font-size:.85rem}.import-list{border:1px solid var(--color-border);border-radius:10px;max-height:45dvh;margin:8px 0;padding:0;list-style:none;overflow:auto}.import-item{border-bottom:1px solid var(--color-border);cursor:pointer;align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.import-item input{margin-top:4px}.import-warning{color:var(--color-warn);font-size:.8rem;display:block}.avatar{flex:none;line-height:1;position:relative;overflow:hidden}.avatar__img{object-fit:cover;box-sizing:border-box;border:2px solid;border-radius:50%;width:100%;height:100%;display:block}.cal-scroll--multi .cal-member__avatar{width:22px!important;height:22px!important}.chip{align-items:center;gap:6px;display:inline-flex}.chip__avatar{margin-left:-6px}.member-photo{justify-items:center;gap:2px;display:grid}.member-photo__button{cursor:pointer;background:0 0;border:0;border-radius:50%;padding:0;position:relative}.member-photo__badge{background:var(--color-surface);border:1px solid var(--color-border);width:20px;height:20px;color:var(--color-text);border-radius:50%;place-items:center;font-size:.7rem;display:grid;position:absolute;bottom:-2px;right:-2px}.member-photo__error{max-width:160px;font-size:.8rem}.link-button{color:var(--color-muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:.75rem;text-decoration:underline}.photo-dialog{max-width:420px}.photo-dialog__preview{object-fit:cover;border:4px solid;border-radius:50%;width:min(256px,70vw);height:min(256px,70vw);margin:8px auto 16px;display:block}.member-row .member-photo{width:84px}
