.todo-page{padding-bottom:calc(var(--shell-nav-h, 4.5rem) + 3.5rem);position:relative}.todo-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.todo-header h1{margin:0}.todo-header__actions{display:flex;align-items:center;gap:.35rem;flex-shrink:0}.todo-tool-btn{display:inline-flex;align-items:center;gap:.15rem;padding:.35rem;min-width:2rem;min-height:2rem;justify-content:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:8px}.todo-tool-btn__icon{display:block}.sort-toggle.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.filter-toggle__chevron{font-size:.85rem;line-height:1;margin-left:-.1rem;transition:transform .15s ease}.filter-toggle.open{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}.filter-toggle.open .filter-toggle__chevron{transform:rotate(90deg)}.todo-toolbar{position:sticky;top:0;z-index:8;margin:0 -1rem .75rem;padding:0 1rem .5rem;background:var(--bg);border-bottom:1px solid var(--panel-border)}body.has-bg-image .todo-toolbar{background:var(--panel)}.context-tabs{display:flex;gap:0;margin-bottom:0;border-bottom:1px solid var(--panel-border)}.context-tabs button{flex:1;background:transparent;color:var(--muted);border:none;border-radius:0;padding:.65rem .5rem;font-weight:600;font-size:.9rem;border-bottom:2px solid transparent;margin-bottom:-1px}.context-tabs button.active{color:var(--accent);border-bottom-color:var(--accent);background:transparent}.todo-filters{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin:.75rem 0 0}.status-circle{flex-shrink:0;width:28px;height:28px;border-radius:50%;border:2px solid var(--accent);background:transparent;padding:0;display:grid;place-items:center;position:relative;overflow:hidden}.status-circle--open,.status-circle--in_progress{background:transparent}.status-circle__half{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--accent);clip-path:inset(0 50% 0 0);border-radius:50%;pointer-events:none}.status-circle--done{background:var(--accent);color:var(--accent-on)}.status-circle__check{font-size:.85rem;font-weight:700;line-height:1}.task-row{display:flex;gap:.65rem;align-items:flex-start;padding:.75rem;margin-bottom:.5rem;position:relative}.task-row--desktop{padding-top:.85rem;padding-right:1.5rem}.task-row.done .task-title-input,.task-row.grace-period.done .task-title-input,.task-row.grace-period.done .task-done-meta,.task-row.grace-period.done .task-claim{color:var(--muted)}.drag-handle{cursor:grab;color:var(--muted);font-size:1.1rem;padding:.15rem .25rem;-webkit-user-select:none;user-select:none;touch-action:none;align-self:flex-start;flex-shrink:0;border:none;background:transparent;line-height:1}.drag-handle:active{cursor:grabbing}.task-row--sort-over{outline:2px solid var(--accent);outline-offset:-2px}.task-row--sort-dragging{opacity:.55}.task-list--sort-mode .task-swipe-slide{touch-action:pan-y}.task-row__grid{flex:1;min-width:0;display:grid;grid-template-columns:28px 1fr;column-gap:.65rem;row-gap:.35rem;align-items:center}.task-row__cell--circle{grid-column:1;grid-row:1;display:flex;align-items:center;justify-content:center;align-self:center}.task-row__cell--title{grid-column:2;grid-row:1;align-self:center;min-width:0}.task-row__cell--chevron{grid-column:1;grid-row:2;display:flex;align-items:center;justify-content:center}.task-row__cell--status{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:0}.task-row__cell--status-full{display:block}.task-row__cell--status-full .task-row__status-text{width:100%}.task-row__cell--meta{grid-column:2;grid-row:3;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.task-row__cell--notes{grid-column:2;grid-row:4;min-width:0}.task-row__status-text{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem}.task-title-input{flex:1;min-width:0;width:100%;border:none;background:transparent;color:inherit;font-size:1rem;font-weight:600;line-height:1.35;padding:.15rem 0;border-radius:0;resize:none;overflow:hidden;field-sizing:content}@supports not (field-sizing: content){.task-title-input{min-height:calc(1.35em + .3rem);max-height:calc(2.7em + .3rem)}}.task-title-input:focus{outline:none;box-shadow:0 1px 0 var(--accent)}.task-claim,.task-done-meta,.task-assign-request__line{margin:0}.task-assign-request{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;position:relative}.task-assign-ask,.task-assign-cancel{padding:.2rem .5rem;font-size:.75rem;font-weight:600}.task-assign-accept{padding:.3rem .65rem;font-size:.75rem;font-weight:600;background:var(--accent);color:var(--accent-on);border-radius:999px}.task-assign-members__panel{min-width:8rem;background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;box-shadow:0 6px 16px #0003}.task-assign-members{list-style:none;margin:0;padding:.25rem}.task-assign-members button{width:100%;text-align:left;background:transparent;color:var(--text);padding:.4rem .5rem;font-size:.8rem;font-weight:500;border-radius:6px}.task-assign-members button:hover{background:var(--accent-soft);color:var(--accent)}.task-meta-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .35rem;font-size:.8rem;font-weight:500;line-height:1.25;min-height:1.75rem;border-radius:8px}.task-row__cell--meta .context-select{flex-shrink:0;width:auto;max-width:100%;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:var(--bg-elevated);background-image:none;border:1px solid var(--panel-border);color:var(--muted);cursor:pointer}.task-row__cell--meta .context-select option{color:var(--text);background:var(--panel)}.notes-chevron{position:relative;width:28px;height:28px;min-width:28px;min-height:28px;padding:0;border:none;background:transparent;border-radius:50%;display:grid;place-items:center;color:var(--muted);opacity:.45;flex-shrink:0}.notes-chevron.has-notes{opacity:.9;color:var(--accent)}.notes-chevron__icon{display:block;transition:transform .15s ease}.notes-chevron--open .notes-chevron__icon{transform:rotate(90deg)}.delete-confirm{position:absolute;top:.55rem;right:.55rem;z-index:5}.delete-confirm__close{width:15px;height:15px;min-width:15px;padding:0;border:none;border-radius:50%;background:#ff5f57;color:#4a0002;font-size:10px;font-weight:700;line-height:1;display:grid;place-items:center;box-shadow:none}.delete-confirm__close span{display:block;margin-top:-1px;color:#fff;font-size:12px;line-height:1}.delete-confirm__popover{position:absolute;top:calc(100% + 4px);right:0;background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;padding:.25rem;box-shadow:0 4px 12px #0003;white-space:nowrap}.delete-confirm__action{background:var(--danger);color:#fff;border:none;padding:.35rem .65rem;font-size:.75rem;font-weight:600;border-radius:6px}.task-notes-input{width:100%;margin:0;resize:vertical;min-height:4rem;font-size:.9rem}.task-swipe-wrap{position:relative;overflow:hidden;margin-bottom:.5rem;border-radius:16px}.task-delete-reveal{position:absolute;right:0;top:0;bottom:0;width:80px;background:var(--danger);color:#fff;border:none;border-radius:0 16px 16px 0;font-weight:600;font-size:.85rem;transition:width .15s ease-out}.task-swipe-slide{transition:transform .15s ease-out;will-change:transform;background:var(--panel);border-radius:16px}.task-swipe-slide--dragging,.task-delete-reveal--dragging{transition:none}.task-swipe-slide .task-row{margin-bottom:0}.due-picker{position:relative;flex-shrink:0}.due-picker--float{margin-left:auto}.due-picker__trigger{background:transparent;color:var(--muted);border:1px solid transparent}.due-picker--float .due-picker__trigger{display:flex;align-items:center;gap:.35rem}.due-picker--float .due-picker__stack{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;font-size:.68rem;max-width:6.5rem;text-align:right}.due-picker--inline .due-picker__stack{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .35rem;line-height:1.25;font-size:.8rem;text-align:left;max-width:none}.due-picker__placeholder{color:var(--muted);font-size:.8rem;font-weight:500}.due-picker__time{font-weight:600;color:var(--text)}.due-picker__date{color:var(--muted);font-weight:500}.due-picker__clock{flex-shrink:0;color:var(--muted)}.due-picker__trigger--set .due-picker__clock{color:var(--accent)}.due-picker__trigger--set{background:var(--bg-elevated);border-color:var(--panel-border);color:var(--text)}.due-picker__modal{padding:0 0 .25rem;width:min(100%,22rem)}.due-picker__modal-head{padding:.85rem 1rem .65rem;border-bottom:1px solid var(--panel-border);text-align:center}.due-picker__modal-title{margin:0;font-size:1.05rem;font-weight:700;color:var(--text);line-height:1.3}.due-picker__modal-subtitle{margin:.35rem 0 0;font-size:.88rem;font-weight:500;color:var(--muted);text-align:center}.due-option{display:block;width:100%;text-align:left;background:transparent;color:var(--text);border:none;padding:.5rem .85rem;font-size:.88rem;font-weight:500;border-radius:0}.due-option:hover,.due-option.active{background:var(--accent-soft);color:var(--accent)}.due-picker__footer{border-top:1px solid var(--panel-border)}.due-option--set{color:var(--accent);font-weight:600;text-align:center}.due-option--clear{color:var(--danger);font-size:.82rem;text-align:center;border-top:1px solid var(--panel-border)}.due-picker__grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border-bottom:1px solid var(--panel-border)}.due-picker__or{margin:0;padding:.45rem 0;text-align:center;font-size:.78rem;font-weight:600;text-transform:lowercase;color:var(--muted);border-bottom:1px solid var(--panel-border)}.due-picker__grid .due-option{text-align:center;padding:.55rem .5rem;border-right:1px solid var(--panel-border)}.due-picker__grid .due-option:nth-child(2n){border-right:none}.due-picker__grid .due-option:nth-child(-n+2){border-bottom:1px solid var(--panel-border)}.due-picker__datetime{position:relative;display:flex;flex-direction:column;gap:.5rem;padding:.65rem .75rem .55rem}.due-picker__datetime-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.35rem}.due-picker__chip{min-width:5.75rem;padding:.4rem .55rem;font-size:.85rem;font-weight:600;font-variant-numeric:tabular-nums;border:1px solid var(--panel-border);border-radius:8px;background:var(--bg-elevated);color:var(--text);text-align:center}.due-picker__chip--date{min-width:6.25rem}.due-picker__chip--empty{color:var(--muted);font-weight:500}.due-picker__meridiem{display:inline-flex;border:1px solid var(--panel-border);border-radius:8px;overflow:hidden}.due-picker__meridiem-btn{padding:.38rem .45rem;min-width:2.1rem;font-size:.72rem;font-weight:700;border:none;border-radius:0;background:var(--bg-elevated);color:var(--muted)}.due-picker__meridiem-btn.active{background:var(--accent-soft);color:var(--accent)}.due-picker__native-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.due-picker__field-picker-btn{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;border:1px solid var(--panel-border);border-radius:8px;background:var(--bg-elevated);color:var(--muted)}.due-picker__field-picker-btn:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.tag-picker{position:relative;flex:0 1 auto;min-width:0}.tag-picker__trigger{background:var(--bg-elevated);color:var(--muted);border:1px solid var(--panel-border);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-row__cell--meta .tag-picker__trigger.task-meta-chip,.task-row__cell--meta .context-select.task-meta-chip{padding:.2rem .35rem;font-size:.8rem;font-weight:500;line-height:1.25;min-height:1.75rem;border-radius:8px}.due-picker--icon-only{flex-shrink:0}.due-picker--icon-only .due-picker__trigger{display:grid;place-items:center;padding:.15rem;min-height:28px;min-width:28px;background:transparent;border:1px solid transparent;border-radius:8px}.due-picker--icon-only .due-picker__trigger--set{background:transparent;border-color:transparent}.due-picker--icon-only .due-picker__trigger--set .due-picker__clock{color:var(--accent)}.due-picker--icon-only .due-picker__clock{width:18px;height:18px}.due-picker--status-row{flex-shrink:0;margin-left:auto}.due-picker--status-row .due-picker__trigger{display:inline-flex;align-items:center;gap:.35rem;padding:.15rem .25rem;min-height:28px;background:transparent;border:1px solid transparent;border-radius:8px}.due-picker--status-row .due-picker__trigger--set{background:var(--bg-elevated);border-color:var(--panel-border)}.due-picker--status-row .due-picker__stack{display:flex;flex-direction:column;align-items:flex-end;gap:.05rem;line-height:1.15;font-size:.8rem;text-align:right}.due-picker--status-row .due-picker__time{font-size:.75rem;font-weight:600;color:var(--text);white-space:nowrap}.due-picker--status-row .due-picker__clock{width:18px;height:18px}.due-picker--status-row .due-picker__trigger--set .due-picker__clock{color:var(--accent)}.tag-picker__panel{position:relative;min-width:220px;max-width:min(300px,calc(100vw - 1rem));background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;padding:1.75rem .5rem .5rem;box-shadow:0 8px 24px #00000040}.tag-picker__modal{padding:0 0 .25rem;width:min(100%,22rem)}.tag-picker__modal-head{padding:.85rem 1rem .65rem;border-bottom:1px solid var(--panel-border);text-align:center}.tag-picker__modal-title{margin:0;font-size:1.05rem;font-weight:700;color:var(--text);line-height:1.3}.tag-picker__modal-subtitle{margin:.35rem 0 0;font-size:.88rem;font-weight:500;color:var(--muted)}.tag-picker__modal-body{position:relative;padding:1.75rem .75rem .75rem}.tag-picker__modal-body .tag-picker__list{max-height:min(40vh,14rem)}.tag-picker__add-fab{position:absolute;top:.35rem;right:.35rem;width:25px;height:25px;min-width:25px;padding:0;border:none;border-radius:50%;background:#22c55e;color:#fff;font-size:1.75em;font-weight:600;line-height:.2;display:grid;place-items:center;box-shadow:0 2px 6px #22c55e66}.tag-picker__add-fab:hover{filter:brightness(1.05)}.tag-picker__empty{margin:0 0 .35rem}.tag-picker__list{list-style:none;margin:0;padding:0;max-height:160px;overflow-y:auto}.tag-picker__row{display:flex;align-items:center;gap:.35rem;margin:0}.tag-picker__spacer{flex-shrink:0;width:18px;height:18px}.tag-option{flex:1;min-width:0;text-align:left;background:transparent;color:var(--text);border:none;padding:.45rem .5rem;font-size:.85rem;font-weight:500;border-radius:8px}.tag-option.active{background:var(--accent-soft);color:var(--accent)}.tag-picker__create{display:flex;gap:.35rem;margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--panel-border)}.tag-picker__create input{flex:1;padding:.45rem .5rem;font-size:.85rem}.tag-picker__add-save{width:25px;height:25px;min-width:25px;padding:0;border-radius:50%;background:#22c55e;color:#fff;font-size:1.75em;font-weight:600;line-height:.2;display:grid;place-items:center}.family-icon{flex-shrink:0;display:grid;place-items:center;width:auto;height:auto;padding:.2rem;border:none;border-radius:6px;background:transparent;color:#5b8fd4;opacity:.35}.family-icon--active{opacity:1;color:#2563eb;background:#2563eb1f}.family-icon svg{display:block}.fab{position:fixed;right:max(1rem,env(safe-area-inset-right));bottom:calc(var(--shell-nav-h, 4.5rem) + .75rem);width:50px;height:50px;min-width:50px;border-radius:50%;background:#22c55e;color:#fff;font-size:3em;font-weight:500;line-height:1;padding:0 0 5px;display:grid;place-items:center;box-shadow:0 4px 16px #22c55e73;z-index:35}@media(min-width:1024px){.fab{right:2.5rem}}.fab:hover{filter:brightness(1.05)}.shopping-page{padding-bottom:calc(var(--shell-nav-h, 4.5rem) + 1rem)}.shopping-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.shopping-header h1{margin:0}.shopping-app{display:flex;flex-direction:column;gap:0;min-height:0;flex:1}.shopping-app .context-tabs{display:flex;gap:0;margin-bottom:.75rem;border-bottom:1px solid var(--panel-border);flex-shrink:0}.shopping-app .context-tabs button{flex:1;background:transparent;color:var(--muted);border:none;border-radius:0;padding:.65rem .5rem;font-weight:600;font-size:.9rem;line-height:1.25;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}.shopping-app .context-tabs button.active{color:var(--accent);border-bottom-color:var(--accent);background:transparent;font-size:.9rem;font-weight:600}.select-composer{display:flex;flex-direction:column;gap:1rem;min-height:0;flex:1}.select-field{position:relative;flex-shrink:0}.select-field__input{width:calc(100% - 2px);margin-inline:1px;box-sizing:border-box;padding:.55rem .75rem;border-radius:.5rem;border:1px solid var(--panel-border);background:var(--bg-elevated);color:var(--text);font-size:1rem}.select-field__input:focus{outline:2px solid var(--accent);outline-offset:0}.select-field--has-actions .select-field__input{padding-right:10.5rem}@media(min-width:380px){.select-field--has-actions .select-field__input{padding-right:11rem}}.select-field__trailing{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:.15rem;pointer-events:none}.select-field__actions{display:flex;align-items:center;gap:.15rem;pointer-events:auto}.select-field__btn{border:none;background:transparent;color:var(--muted);cursor:pointer;padding:.2rem .35rem;font-weight:600;font-size:.8rem;line-height:1;border-radius:.25rem}.select-field__btn--icon{font-size:1.15rem;font-weight:400;padding:.15rem .25rem;color:var(--muted)}.select-field__btn--stock{padding:.1rem .2rem;display:inline-flex;align-items:center;justify-content:center}.select-field__chip-icon{display:block;width:27px;height:27px}.shopping-stock-icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;color:var(--muted)}.select-field__btn:hover{color:var(--text)}.select-field__btn.is-focused{color:var(--accent);background:var(--accent-soft)}.select-field__btn--clear{pointer-events:auto;margin-left:.1rem}.select-dropdown{position:absolute;z-index:20;top:100%;left:1px;right:1px;margin:.25rem 0 0;padding:.25rem 0;list-style:none;background:var(--panel);border:1px solid var(--panel-border);border-radius:.5rem;box-shadow:var(--frame-shadow);max-height:14rem;overflow-y:auto}.select-dropdown__item{display:block;width:100%;text-align:left;padding:.5rem .75rem;border:none;background:transparent;color:var(--text);font-size:.95rem;cursor:pointer}.select-dropdown__item.is-active,.select-dropdown__item:hover{background:var(--accent-soft);color:var(--accent)}.select-section__title{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 .5rem}.shopping-list--compact .shopping-row--compact{padding:.45rem .65rem}.select-chip--inline{margin-left:auto;flex-shrink:0}.shopping-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;flex:1;min-height:0}.shopping-row{display:flex;align-items:center;gap:.65rem;padding:.65rem .75rem}.shopping-row.grace-period{opacity:.92}.shopping-row__name{flex:1;min-width:0;border:none;background:transparent;color:var(--text);font-size:1rem;padding:.15rem 0}.shopping-row__name:focus{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.shopping-row__meta{font-size:.75rem;color:var(--muted);text-transform:capitalize}.shopping-empty{padding:1.5rem .5rem;text-align:center}.shop-toolbar{display:flex;justify-content:flex-end;margin-bottom:.5rem;flex-shrink:0}.shop-clear-purchased{border:none;background:transparent;color:var(--accent);font-size:.85rem;font-weight:600;cursor:pointer;padding:.35rem .5rem}.shop-clear-purchased:hover{text-decoration:underline}.shopping-row--got .shopping-row__name{color:var(--muted)}:root,[data-theme=dark]{color-scheme:dark;--bg: #12121a;--bg-elevated: #10101a;--panel: #1a1a2e;--panel-border: #2a2a44;--text: #f4f4f8;--accent: #7c9cff;--accent-soft: rgba(124, 156, 255, .15);--accent-on: #10101a;--danger: #ff7b7b;--muted: #9aa0b5;--badge-personal: #8fd4ff;--badge-work: #ffd27f;--viewport-bg: #0c0c12;--frame-shadow: 0 12px 48px rgba(0, 0, 0, .45);--bg-gradient: radial-gradient( circle at top, rgba(124, 156, 255, .12), transparent 40% )}[data-theme=light]{color-scheme:light;--bg: #f2f3f8;--bg-elevated: #ffffff;--panel: #ffffff;--panel-border: #d8dce8;--text: #1a1a2e;--accent: #3d5ccc;--accent-soft: rgba(61, 92, 204, .12);--accent-on: #ffffff;--danger: #c62828;--muted: #5c6478;--badge-personal: #1565c0;--badge-work: #e65100;--viewport-bg: #e8eaf0;--frame-shadow: 0 12px 40px rgba(0, 0, 0, .12);--bg-gradient: radial-gradient( circle at top, rgba(61, 92, 204, .08), transparent 45% )}[data-theme=high-contrast]{color-scheme:dark;--bg: #000000;--bg-elevated: #0a0a0a;--panel: #141414;--panel-border: #ffffff;--text: #ffffff;--accent: #ffff00;--accent-soft: rgba(255, 255, 0, .2);--accent-on: #000000;--danger: #ff4444;--muted: #cccccc;--badge-personal: #00ffff;--badge-work: #ff9900;--viewport-bg: #000000;--frame-shadow: 0 0 0 2px #ffffff;--bg-gradient: none}:root{--font-scale: 1;--app-vh: 100dvh;--safe-bottom: 0px;--shell-nav-h: 4.5rem;--app-frame-min: 320px;--app-frame-max: 768px;--app-frame-sidecar: 420px;font-family:SF Pro Text,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;font-size:calc(16px * var(--font-scale));color:var(--text);background:var(--bg)}*{box-sizing:border-box}html{width:100%;max-width:100%;height:100%;height:100dvh;height:-webkit-fill-available;overflow:hidden;overscroll-behavior:none;-webkit-text-size-adjust:100%}body{margin:0;width:100%;max-width:100%;height:var(--app-vh, 100dvh);max-height:var(--app-vh, 100dvh);overflow:hidden;overscroll-behavior:none;touch-action:pan-y;color:var(--text);background:var(--bg-gradient),var(--bg)}html.is-standalone.is-ios body{background:var(--panel)}#root{width:100%;max-width:100%;height:var(--app-vh, 100dvh);max-height:var(--app-vh, 100dvh);overflow:hidden;display:flex;flex-direction:column}body.has-bg-image{background-image:var(--bg-image);background-size:cover;background-position:center;background-attachment:scroll}@media(min-width:768px){body.has-bg-image{background-attachment:fixed}}button,input,select{font:inherit}a{color:var(--accent)}.viewport{position:relative;width:100%;max-width:100%;flex:1 1 0;min-height:0;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-items:stretch;background:var(--bg);overscroll-behavior:none;box-sizing:border-box}.app-frame{width:100%;min-width:0;max-width:min(var(--app-frame-max),100%);flex:1 1 0;min-height:0;display:flex;flex-direction:column;background:var(--bg-gradient),var(--bg);position:relative;overflow:hidden;overscroll-behavior:none}body.has-bg-image .app-frame{background:transparent}.app-frame--auth{padding:1.5rem 1rem 2rem}@media(min-width:768px)and (max-width:1023px){.app-frame{max-width:min(var(--app-frame-max),100%)}}@media(max-width:1023px){.viewport{justify-content:flex-start}html.is-standalone.is-ios .viewport:after{content:"";position:absolute;left:0;right:0;bottom:0;height:var(--safe-bottom, 12px);background:var(--panel);pointer-events:none;z-index:1}}@media(min-width:1024px){.viewport{position:relative;inset:auto;height:100%;height:100dvh;min-height:100dvh;flex-direction:row;justify-content:flex-end;padding:1rem 1.5rem 1rem 0;background:var(--viewport-bg)}.app-frame{width:var(--app-frame-sidecar);max-width:var(--app-frame-sidecar);flex:0 0 auto;height:calc(100dvh - 2rem);max-height:calc(100dvh - 2rem);min-height:0;border-radius:20px;border:1px solid var(--panel-border);box-shadow:var(--frame-shadow);overflow:hidden}}.shell-header{flex-shrink:0;padding-top:max(.85rem,env(safe-area-inset-top));padding-bottom:0;padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));border-bottom:1px solid var(--panel-border);background:var(--panel)}.shell-brand{font-weight:700;font-size:.8rem;letter-spacing:.02em}.shell-main{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 1rem .5rem;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}.app-nav{flex:0 0 auto;flex-shrink:0;margin-top:auto;position:relative;z-index:30;padding:0;padding-left:max(.75rem,env(safe-area-inset-left));padding-right:max(.75rem,env(safe-area-inset-right));border-top:1px solid var(--panel-border);background:var(--panel)}.app-nav:after{content:"";display:block;height:env(safe-area-inset-bottom,0px);background:var(--panel)}html.is-standalone.is-ios .app-nav:after{display:none}.app-nav__tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:.25rem;padding:.5rem .75rem}html.is-standalone.is-ios .app-nav__tabs{padding:.3rem .75rem 0}@media(max-width:1023px){.app-nav__tabs{padding:calc(.5rem + 10px) .75rem 0;gap:.15rem}.app-nav button{padding:.35rem .3rem;font-size:.78rem}html.is-standalone.is-ios .app-nav__tabs{padding:calc(.3rem + 10px) .75rem 0}[data-density=compact] .app-nav__tabs{padding:calc(.25rem + 10px) .75rem 0}html.is-standalone.is-ios[data-density=compact] .app-nav__tabs{padding:calc(.15rem + 10px) .75rem 0}}.app-nav button{background:transparent;color:var(--muted);padding:.55rem .35rem;font-size:.8rem;font-weight:600;border-radius:10px}.app-nav button.active{background:var(--accent-soft);color:var(--accent)}.page{padding:.5rem 0 1.5rem;max-width:100%;overflow-x:hidden}.page--auth{padding:0}.auth-card{margin-bottom:.75rem}.auth-card__hint{margin:.75rem 0 0}.auth-card--secondary{margin-top:.75rem}.install-prompt{margin:0 0 .75rem}.install-prompt__body{background:var(--accent-soft);border:1px solid var(--panel-border);border-radius:12px;padding:.75rem .85rem}.install-prompt__body strong{display:block;margin-bottom:.35rem}.install-prompt__actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.65rem}.passkey-list{list-style:none;margin:0 0 .75rem;padding:0}.passkey-list__row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.45rem 0;border-bottom:1px solid var(--panel-border)}.passkey-list__row:last-child{border-bottom:none}.app-version{margin:.5rem 0 1rem;text-align:center}.page-header{margin-bottom:1rem}.page-header h1,.hero h1{margin:0;font-size:1.65rem}.loading-msg{padding:2rem 1rem;text-align:center}.muted{color:var(--muted)}.muted.small{font-size:.85rem;margin:0 0 .75rem}.card{background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;padding:1rem}.centered-modal__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:1rem;background:#00000073}.centered-modal{width:min(100%,20rem);max-height:min(85vh,32rem);overflow-y:auto;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;box-shadow:0 12px 40px #00000059}label{display:block;margin-bottom:.35rem;color:var(--muted);font-size:.9rem}input,select{width:100%;border:1px solid var(--panel-border);border-radius:12px;background:var(--bg-elevated);color:inherit;padding:.75rem .9rem}button{border:0;border-radius:12px;background:var(--accent);color:var(--accent-on);padding:.75rem 1rem;font-weight:600;cursor:pointer}button:disabled{opacity:.6;cursor:default}button.ghost{background:transparent;color:var(--muted);border:1px solid var(--panel-border)}button.ghost.danger{color:var(--danger)}button.full-width{width:100%}.topbar,.task-main,.composer-row,.toolbar{display:flex;gap:.75rem;align-items:center;justify-content:space-between}.toolbar{flex-wrap:wrap;margin-bottom:1rem}.segmented{display:inline-flex;background:var(--bg-elevated);border-radius:999px;padding:.2rem}.segmented button{background:transparent;color:var(--muted);padding:.45rem .9rem}.segmented button.active{background:var(--accent-soft);color:var(--accent)}.checkbox{display:inline-flex;align-items:center;gap:.5rem;color:var(--muted)}.checkbox input{width:auto}.composer{display:grid;gap:.75rem;margin-bottom:1rem}.composer-row{display:grid;grid-template-columns:120px 1fr auto}.task-list{display:grid;gap:.75rem}.task{display:flex;align-items:center;justify-content:space-between;gap:1rem}.task.done h2{text-decoration:line-through;color:var(--muted)}.task-main{flex:1;align-items:flex-start}.status-pill{flex-shrink:0;background:var(--accent-soft);color:var(--accent);font-size:.8rem}.task h2{margin:0 0 .35rem;font-size:1.05rem}.meta{display:flex;flex-wrap:wrap;gap:.4rem;margin:0}.badge,.tag,.due{font-size:.75rem;padding:.15rem .5rem;border-radius:999px;background:var(--bg-elevated);color:var(--muted)}.badge.personal{color:var(--badge-personal)}.badge.work{color:var(--badge-work)}.settings-section{margin-bottom:.75rem}.settings-section h2{margin:0 0 .75rem;font-size:1rem}.settings-section--passkeys h2{margin:0}.settings-collapse-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:0;border:none;background:transparent;color:inherit;text-align:left;cursor:pointer}.settings-collapse-trigger__label{display:flex;flex-direction:column;gap:.15rem}.settings-collapse-trigger__chevron{color:var(--muted);font-size:1.1rem;line-height:1}.settings-collapse-body{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--panel-border)}.theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.theme-option{padding:.65rem .5rem;font-size:.85rem;border:1px solid var(--panel-border);background:var(--bg-elevated);color:var(--text)}.theme-option.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.theme-option[data-theme-preview=dark]{background:#1a1a2e;color:#f4f4f8}.theme-option[data-theme-preview=light]{background:#fff;color:#1a1a2e}.theme-option[data-theme-preview=high-contrast]{background:#000;color:#ff0;border-color:#fff}.settings-save{margin-top:.75rem}.placeholder-card{margin-top:.5rem}.notice,.error,.dev-link{margin-top:1rem}.error{color:var(--danger)}@media(max-width:640px){.composer-row{grid-template-columns:1fr}.task{flex-direction:column;align-items:stretch}}[data-density=compact] .shell-main{padding-bottom:.25rem}[data-density=compact] .app-nav__tabs{padding-bottom:0}[data-density=compact] .page{padding-top:.25rem;padding-bottom:.75rem}[data-density=compact] .settings-section{margin-bottom:.5rem}[data-density=compact] .card{padding:.5rem .75rem}[data-density=compact] .task-row{padding:.375rem .75rem;margin-bottom:.25rem}[data-density=compact] .task-swipe-wrap{margin-bottom:.25rem}[data-density=compact] .task-delete-reveal{top:.375rem;bottom:.375rem;border-radius:0 12px 12px 0}[data-density=compact] .task-row__grid{row-gap:.175rem}[data-density=compact] .todo-toolbar{margin-bottom:.375rem;padding-bottom:.25rem}[data-density=compact] .context-tabs button{padding:.325rem .5rem}[data-density=compact] .todo-filters{margin-top:.375rem;gap:.375rem}[data-density=compact] .todo-page{padding-bottom:calc(var(--shell-nav-h, 4.5rem) + 2.75rem)}[data-density=compact] .shopping-app .context-tabs{margin-bottom:.375rem}[data-density=compact] .shopping-app .context-tabs button{padding:.325rem .5rem}[data-density=compact] .shopping-item-row,[data-density=compact] .select-field__row{padding-top:.325rem;padding-bottom:.325rem}
