:root{--brand:#921e26;--brand-ink:#ffffff;--paper:#faf7f2;--card:#ffffff;--ink:#2b2622;--muted:#6f675e;--line:#ebe4da;--topbar-h:56px;--tabbar-h:64px;--tap:44px;color-scheme:light}*{box-sizing:border-box}body,html{margin:0;background:var(--paper);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.45;-webkit-text-size-adjust:100%}a{color:inherit}:focus-visible{outline:3px solid var(--brand);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:.875rem}.brand{color:var(--brand);font-weight:700;font-size:1.5rem;margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);padding:0 1.25rem;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-weight:600;text-decoration:none;cursor:pointer}.btn-primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink);min-width:200px}.btn:disabled{opacity:.6;cursor:default}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);border:0;border-radius:10px;background:transparent;color:inherit;cursor:pointer}.icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.centered{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem 1.5rem;text-align:center}.centered p{margin:0}.shell{max-width:720px;margin:0 auto;min-height:100dvh}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:.5rem;height:calc(var(--topbar-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) .5rem 0;background:var(--brand);color:var(--brand-ink)}.topbar-title{flex:1 1;margin:0;font-size:1.125rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-right:.25rem;border-radius:50%;border:2px solid var(--brand-ink);font-size:.875rem;font-weight:700}.content{padding:1rem 1rem calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 5rem)}.greeting{margin:.25rem 0 .5rem;font-size:1.375rem}.tabbar{position:fixed;left:50%;bottom:0;transform:translateX(-50%);z-index:10;display:flex;width:100%;max-width:720px;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--card);border-top:1px solid var(--line)}.tab{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--tap);color:var(--muted);font-size:.75rem;font-weight:600;text-decoration:none}.tab[aria-current=page]{color:var(--brand)}.menu-layer{position:fixed;inset:0;z-index:20}.menu-backdrop{position:absolute;inset:0;background:rgb(0 0 0/.35)}.menu{position:absolute;top:0;bottom:0;left:0;width:min(300px,85vw);padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);background:var(--card);box-shadow:2px 0 12px rgb(0 0 0/.15);overflow-y:auto}.menu-head{display:flex;align-items:center;justify-content:space-between;height:var(--topbar-h);padding:0 .5rem 0 1rem;border-bottom:1px solid var(--line)}.menu ul{list-style:none;margin:0;padding:.5rem 0}.menu-item{display:flex;align-items:center;gap:.875rem;width:100%;min-height:48px;padding:0 1rem;border:0;background:none;color:var(--ink);font:inherit;text-align:left;text-decoration:none;cursor:pointer}.menu-item[aria-current=page]{color:var(--brand);font-weight:600;background:var(--paper)}@media (prefers-reduced-motion:no-preference){.menu{animation:slide-in .16s ease-out}@keyframes slide-in{0%{transform:translateX(-100%)}}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.btn-small{min-height:36px;padding:0 .875rem;font-size:.875rem}.link-btn{border:0;background:none;padding:0;color:var(--brand);font:inherit;text-decoration:underline;cursor:pointer}.badge{margin-left:.5rem;padding:0 .4rem;border-radius:6px;background:var(--line);color:var(--ink);font-size:.75rem}.cal-nav,.cal-toolbar{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.cal-toolbar{justify-content:space-between}.cal-nav .icon-btn{font-size:1.5rem;color:var(--ink)}.cal-label{flex:1 1;margin:0;font-size:1.125rem;text-align:center}.scope-btn{min-height:36px;max-width:60%;padding:0 .875rem;border:1px solid var(--line);border-radius:999px;color:var(--ink);font:inherit;font-weight:600;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}.scope-btn,.segmented{background:var(--card);overflow:hidden}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:10px}.segmented button{min-height:36px;padding:0 .875rem;border:0;background:none;color:var(--ink);font:inherit;font-size:.875rem;font-weight:600;cursor:pointer}.segmented button[aria-pressed=true]{background:var(--brand);color:var(--brand-ink)}.date-grid{width:100%;border-collapse:collapse;table-layout:fixed;margin-bottom:.75rem}.date-grid th{padding-bottom:.25rem;color:var(--muted);font-size:.75rem;font-weight:600}.date-grid td{padding:1px;text-align:center}.day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;min-height:var(--tap);border:0;border-radius:10px;background:none;color:var(--ink);font:inherit;cursor:pointer}.day.outside{color:var(--muted);opacity:.6}.day.today span:first-child{color:var(--brand);font-weight:700}.day.closed{background:var(--line)}.day.selected{background:var(--brand)}.day.selected,.day.selected span:first-child{color:var(--brand-ink)}.dot-mark{width:5px;height:5px;border-radius:50%;background:var(--brand)}.day.selected .dot-mark{background:var(--brand-ink)}.dot-mark.empty{visibility:hidden}.day-title{margin:.5rem 0;font-size:1rem}.closure{margin:0 0 .5rem;padding:.5rem .75rem;border-radius:10px;background:var(--line);font-weight:600}.events{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.event{display:flex;align-items:stretch;gap:.75rem;width:100%;min-height:56px;padding:.625rem .75rem .625rem 0;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:inherit;text-align:left;overflow:hidden}button.event{cursor:pointer}.event.selected{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand) inset}.event-block{background:var(--paper);border-style:dashed}.event-bar{flex:none;width:6px;margin:-.625rem 0}.event-time{flex:none;width:6.5rem;color:var(--muted);font-size:.875rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.event-main{display:flex;flex-direction:column;min-width:0}.event-title{font-weight:600}.event-detail,.event-line{color:var(--muted);font-size:.875rem}.event-main.crossed .event-title{text-decoration:line-through}.event-main.crossed .event-detail{color:var(--brand);font-weight:600}.fab{position:fixed;right:max(1rem,calc(50% - 360px + 1rem));bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 1rem);z-index:11;width:56px;height:56px;border:0;border-radius:50%;background:var(--brand);color:var(--brand-ink);font-size:2rem;line-height:1;box-shadow:0 4px 12px rgb(0 0 0/.25);cursor:pointer}.sheet-layer{position:fixed;inset:0;z-index:30;display:flex;align-items:flex-end;justify-content:center}.sheet-backdrop{position:absolute;inset:0;background:rgb(0 0 0/.35)}.sheet{position:relative;width:100%;max-width:720px;max-height:85dvh;display:flex;flex-direction:column;border-radius:16px 16px 0 0;background:var(--card);padding-bottom:env(safe-area-inset-bottom);outline:none}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:.5rem .5rem .5rem 1rem;border-bottom:1px solid var(--line)}.sheet-head h2{margin:0;font-size:1.125rem}.sheet-body{padding:.75rem 1rem 1rem;overflow-y:auto}@media (prefers-reduced-motion:no-preference){.sheet{animation:sheet-up .18s ease-out}@keyframes sheet-up{0%{transform:translateY(100%)}}.sheet:has([data-autofocus]){animation:sheet-fade .15s ease-out}@keyframes sheet-fade{0%{opacity:0}}}.search input{width:100%;min-height:var(--tap);padding:0 .875rem;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:inherit}.pick-head{margin:1rem 0 .25rem;color:var(--muted);font-size:.8125rem;text-transform:uppercase;letter-spacing:.04em}.pick-list{list-style:none;margin:.25rem 0 0;padding:0}.pick{display:flex;align-items:center;gap:.625rem;width:100%;min-height:var(--tap);padding:0 .25rem;border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.pick-empty{padding:.5rem .25rem}.dot{width:12px;height:12px;border-radius:50%;flex:none}.facts{margin:0;display:flex;flex-direction:column;gap:.75rem}.facts dt{color:var(--muted);font-size:.8125rem}.facts dd{margin:0}.pre{white-space:pre-wrap}.actions{display:flex;flex-direction:column;gap:.5rem;margin-top:1.25rem}.btn-danger{background:#a3262e;border-color:#a3262e;color:#ffffff}.btn-danger-outline{border-color:#a3262e;color:#a3262e}.status-off{color:var(--brand);font-weight:600}.form{display:flex;flex-direction:column;gap:.875rem}.form p{margin:0}.field{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1 1}.field label{color:var(--muted);font-size:.8125rem;font-weight:600}.field input,.field select,.field textarea{width:100%;min-height:var(--tap);padding:.5rem .75rem;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:inherit}.field textarea{resize:vertical}.field-row{display:flex;gap:.5rem}.field-row .field-narrow{flex:0 0 5.5rem}.form-buttons{display:flex;gap:.5rem;justify-content:flex-end}.form-buttons .btn-primary{min-width:0}.form-error{color:#a3262e;font-weight:600}.form-warn{color:#8a5a00}.choice-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.choice{width:100%;justify-content:flex-start}.impact{margin:0;padding-left:1.25rem}.day-head{align-items:baseline}.closure,.day-head{display:flex;justify-content:space-between;gap:.5rem}.closure{align-items:center}.check{display:flex;align-items:flex-start;gap:.625rem;min-height:var(--tap);padding:.5rem 0;cursor:pointer}.check input{width:20px;height:20px;margin:.125rem 0 0;flex:none;accent-color:var(--brand)}.check-list{list-style:none;margin:0;padding:0;max-height:45dvh;overflow-y:auto;border-top:1px solid var(--line)}.check-list li{border-bottom:1px solid var(--line)}.field-label{color:var(--muted);font-size:.8125rem;font-weight:600}.picked{display:flex;align-items:center;justify-content:space-between;min-height:var(--tap);padding:0 .75rem;border:1px solid var(--line);border-radius:10px;font-weight:600}.picked,.sheet-full{background:var(--paper)}.sheet-full{height:calc(100dvh - env(safe-area-inset-top) - 12px);max-height:none}.sheet-head-actions{display:grid;grid-template-columns:1fr auto 1fr;padding:.25rem .5rem;background:var(--card)}.sheet-head-actions h2{text-align:center;font-size:1.0625rem}.sheet-head-side{display:flex}.sheet-head-side.end{justify-content:flex-end}.text-btn{min-height:var(--tap);padding:0 .5rem;border:0;background:none;color:var(--brand);font:inherit;font-size:1.0625rem;cursor:pointer}.text-btn.strong{font-weight:700}.text-btn:disabled{color:var(--muted);opacity:.6;cursor:default}.grouped{display:flex;flex-direction:column}.group{margin-bottom:1.25rem;border-radius:12px;background:var(--card);overflow:hidden}.group-title{margin:0 0 .375rem 1rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.group-foot,.group-title{color:var(--muted);font-size:.8125rem}.group-foot{margin:-.875rem 1rem 1.25rem}.row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:48px;padding:.25rem 1rem}.row+.row{border-top:1px solid var(--line)}.row-stack{flex-direction:column;align-items:stretch;padding:.625rem 1rem}.row-label{flex:none;color:var(--ink)}.row-value{flex:1 1;display:flex;justify-content:flex-end;min-width:0}.row textarea,.row-value input,.row-value select{max-width:100%;min-height:36px;border:0;background:transparent;color:var(--ink);font:inherit;text-align:right;text-align-last:right}.row textarea{margin-top:.375rem;padding:.5rem;border:1px solid var(--line);border-radius:8px;background:var(--paper);text-align:left;resize:vertical}.row-link{align-items:center;gap:.5rem;min-height:40px;border:0;background:none;color:var(--ink);font:inherit;cursor:pointer}.chevron,.placeholder{color:var(--muted)}.chevron{font-size:1.25rem}.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.chip{min-height:36px;padding:0 .875rem;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink);font:inherit;font-size:.875rem;font-weight:600;cursor:pointer}.chip[aria-pressed=true]{border-color:var(--brand);background:var(--brand);color:var(--brand-ink)}.inline-input{display:inline-flex;align-items:center;gap:.375rem;margin-top:.5rem}.row-value .inline-input{margin-top:0}.inline-input input{width:5.5rem;min-height:36px;padding:0 .5rem;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font:inherit;text-align:right}.pick-name{flex:1 1}.pick-field{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--tap);padding:0 .75rem;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:inherit;text-align:left;cursor:pointer}.check-mark{flex:none;width:1.25rem;margin-left:auto;color:var(--brand);font-weight:700;text-align:right}.pick[aria-current=true] .pick-name{font-weight:600}.row-value input[type=date]::-webkit-date-and-time-value,.row-value input[type=time]::-webkit-date-and-time-value{text-align:right}.searchbar{gap:.25rem;margin-bottom:.625rem}.searchbar,.searchbar-field{display:flex;align-items:center}.searchbar-field{position:relative;flex:1 1}.searchbar-icon{position:absolute;left:.625rem;width:18px;height:18px;color:var(--muted);pointer-events:none}.searchbar input{width:100%;min-height:40px;padding:0 2.25rem;border:0;border-radius:10px;background:var(--line);color:var(--ink);font:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbar input::-webkit-search-cancel-button{display:none}.searchbar-clear{position:absolute;right:.25rem;width:32px;height:32px;border:0;border-radius:50%;background:none;color:var(--muted);cursor:pointer}.status-chips{margin-top:0}.chip-set{display:inline-flex;padding:0;overflow:hidden;border-color:var(--brand);background:var(--brand);color:var(--brand-ink)}.chip-part{min-height:34px;padding:0 .625rem;border:0;background:none;color:inherit;font:inherit;font-weight:600;cursor:pointer}.chip-part+.chip-part{border-left:1px solid rgb(255 255 255/.35)}.people{list-style:none;margin:.75rem 0 0;padding:0;border-radius:12px;background:var(--card);overflow:hidden}.people li+li{border-top:1px solid var(--line)}.person-row{display:flex;align-items:center;gap:.5rem;min-height:56px;padding:.625rem .75rem .625rem 1rem;color:var(--ink);text-decoration:none}.person-main{flex:1 1;display:flex;flex-direction:column;min-width:0}.person-name{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;font-weight:600}.person-name .badge{margin-left:0}.person-line{color:var(--muted);font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge-trial{background:#f3e3c3}.badge-inactive{background:var(--line);color:var(--muted)}.badge-active{background:#d9ecdf}.load-more{display:flex;margin:.75rem auto 0}.back-link{min-height:var(--tap);margin:-.5rem 0 0 -.25rem;padding:0 .25rem;border:0;background:none;color:var(--brand);font:inherit;cursor:pointer}.detail-head{margin-bottom:.75rem}.detail-name{margin:0 0 .375rem;font-size:1.5rem}.badges{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:.75rem}.badges .badge{margin-left:0}.badge-tag{display:inline-flex;align-items:center;gap:.25rem;background:var(--card);border:1px solid var(--line)}.badge-tag .dot{width:8px;height:8px}.facts.compact{gap:.5rem}.facts a{color:var(--brand)}.notes{margin-top:.75rem;padding:.625rem .75rem;border-radius:10px;background:#fbf3dc}.notes-label{color:var(--muted);font-size:.75rem;font-weight:600}.notes p{margin:.25rem 0 0}.tabs{display:flex;gap:.25rem;overflow-x:auto;margin:0 -1rem .75rem;padding:0 1rem;border-bottom:1px solid var(--line);scrollbar-width:none}.tabs button{flex:none;min-height:var(--tap);padding:0 .75rem;border:0;border-bottom:3px solid transparent;background:none;color:var(--muted);font:inherit;font-weight:600;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:var(--brand);color:var(--brand)}.tab-panel{gap:.75rem}.cards,.tab-panel{display:flex;flex-direction:column}.cards{list-style:none;margin:0;padding:0;gap:.5rem}.card{display:flex;flex-direction:column;gap:.125rem;padding:.75rem 1rem;border:1px solid var(--line);border-radius:12px;background:var(--card)}.card-color{border-left-width:6px}.card-title{font-weight:600}.card-line{font-size:.9375rem}.card a{color:var(--brand)}.due{color:#a3262e}.due,.totals{font-weight:600}.totals{margin:0}.balance-total{margin:0;font-size:1.25rem;font-weight:700}.balance-total.due{color:#a3262e}.history{list-style:none;margin:0;padding:0;border-radius:12px;background:var(--card);overflow:hidden}.history-row{display:flex;align-items:stretch;gap:.75rem;padding:.5rem .75rem .5rem 0}.history-row+.history-row{border-top:1px solid var(--line)}.history-row .event-bar{margin:-.5rem 0}.history-row.off{background:#fbf0f0}.history-date{flex:none;width:6.5rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.history-main{flex:1 1;display:flex;flex-direction:column;min-width:0}.history-status{color:var(--muted);font-size:.875rem}.history-status.off{color:#a3262e;font-weight:600}.page-switch{display:flex;margin-bottom:.75rem}.page-switch button{flex:1 1}.detail-title{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.badge-add{border:1px dashed var(--muted);background:none;color:var(--brand);font:inherit;font-size:.75rem;font-weight:600;cursor:pointer}.card-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin:-.25rem 0}.card-head .text-btn{min-height:36px;font-size:.9375rem}.more-btn{width:36px;height:36px;font-size:1.25rem;color:var(--muted)}.card-action{align-self:flex-start;margin-top:.375rem;min-height:32px}.row-hint{display:block;color:var(--muted);font-size:.8125rem}button.row{width:100%;border:0;background:none;font:inherit;cursor:pointer}.row-danger{justify-content:center;color:#a3262e;font-weight:600}.row-link-left{justify-content:flex-start;color:var(--brand)}.row-button{width:100%;border:0;background:none;font:inherit;text-align:left;cursor:pointer}.row-button:disabled{cursor:default}.entry-top{display:flex;justify-content:space-between;font-weight:600}.switch{-moz-appearance:none;appearance:none;-webkit-appearance:none;flex:none;position:relative;width:51px;height:31px;margin:0;border-radius:999px;background:var(--line);cursor:pointer;transition:background .15s}.switch:after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#ffffff;box-shadow:0 1px 3px rgb(0 0 0/.3);transition:transform .15s}.switch:checked{background:#34a853}.switch:checked:after{transform:translateX(20px)}@media (prefers-reduced-motion:reduce){.switch,.switch:after{transition:none}}.swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));grid-gap:.625rem;gap:.625rem;padding:.875rem;margin-bottom:1.25rem}.swatch{width:40px;height:40px;border:3px solid transparent;border-radius:50%;cursor:pointer}.swatch[aria-checked=true]{border-color:var(--ink);box-shadow:0 0 0 2px var(--card) inset}.list-section+.list-section{margin-top:1.5rem}.people-flush{margin-top:0}.avatar-badge{display:inline-flex;flex:none;align-items:center;justify-content:center;border-radius:50%;font-weight:700}.detail-who{display:flex;align-items:center;gap:.75rem;min-width:0}.detail-who .detail-name{margin:0}.person-row-wrap{display:flex;align-items:center;padding-right:.25rem}.person-row-wrap .person-row{flex:1 1;min-width:0}.window-row{justify-content:flex-start;gap:.5rem}.window-row input{min-height:36px;padding:0 .5rem;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font:inherit}.window-row .icon-btn{margin-left:auto;color:var(--muted)}.schedule-line{display:flex;gap:.75rem}.schedule-time{flex:none;width:9rem;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.detail-title{margin-bottom:.75rem}.detail-title .detail-name{margin:0}