:root{color-scheme:light dark;--bg: #f6f6f4;--bg-elev: #ffffff;--bg-soft: #ececea;--fg: #1a1a1a;--fg-muted: #555;--border: #d6d6d2;--accent: #1f4f8f;--hard-event: #c2410c;--block: #1d4ed8;--reservation: #6d28d9;--holiday: #047857;--task: #0f766e;--reminder: #be185d;--other: #4b5563;--error: #b91c1c;--warn: #b45309;--ok: #166534;--chat-width: min(34rem, 38vw)}@media(prefers-color-scheme:dark){:root{--bg: #14161a;--bg-elev: #1c1f24;--bg-soft: #21252b;--fg: #e8e8e6;--fg-muted: #9aa0a6;--border: #2c2f36;--accent: #6ea8ff;--hard-event: #fb923c;--block: #93c5fd;--reservation: #c4b5fd;--holiday: #6ee7b7;--task: #5eead4;--reminder: #f9a8d4;--other: #9ca3af;--error: #fca5a5;--warn: #fcd34d;--ok: #86efac}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45}.page-header{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid var(--border);background:var(--bg-elev)}.page-header__title h1{margin:0;font-size:1.4rem;font-weight:600}.tagline{margin:.2rem 0 0;color:var(--fg-muted);font-size:.8rem}.page-header__meta{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.meta-chip{display:inline-flex;align-items:center;font-size:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bg);color:var(--fg-muted);border:1px solid var(--border);border-radius:999px;padding:.25rem .6rem}.meta-chip--button{cursor:pointer;background:var(--bg);color:var(--fg);font-family:inherit}.meta-chip--button:hover{border-color:var(--accent);color:var(--accent)}.meta-chip--button[disabled]{cursor:default;opacity:.55;color:var(--fg-muted)}.meta-chip--button[disabled]:hover{border-color:var(--border);color:var(--fg-muted)}.meta-chip[data-anchor-state=past]{color:var(--warn);border-color:var(--warn)}.meta-chip[data-anchor-state=future]{color:var(--accent);border-color:var(--accent)}.meta-chip__note{margin-left:.35rem;text-transform:lowercase;font-size:.7rem;opacity:.85}.meta-chip--status[data-state=open]{color:var(--ok);border-color:var(--ok)}.meta-chip--status[data-state=connecting]{color:var(--warn);border-color:var(--warn)}.meta-chip--status[data-state=closed]{color:var(--error);border-color:var(--error)}.view-tabs{display:inline-flex;border:1px solid var(--border);border-radius:999px;background:var(--bg);padding:.15rem}.view-tab{appearance:none;background:transparent;border:none;color:var(--fg-muted);font-family:inherit;font-size:.8rem;padding:.25rem .7rem;border-radius:999px;cursor:pointer}.view-tab[aria-selected=true]{background:var(--bg-elev);color:var(--accent);box-shadow:0 0 0 1px var(--border)}.date-nav{display:inline-flex;gap:.25rem}.page-main{max-width:1200px;margin:0 auto;padding:1.25rem 1.5rem 2rem;display:block}.view-section__heading{margin:0 0 .6rem;font-size:1.05rem;font-weight:600;letter-spacing:.01em}.view-root{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;min-height:4rem}.day-tasks-container{min-height:4rem}.task-menu-button{font-weight:600}.task-drawer{position:fixed;inset:0;z-index:50;pointer-events:none}.task-drawer.is-open{pointer-events:auto}.task-drawer__scrim{position:absolute;inset:0;border:0;background:#02061700;opacity:0;transition:opacity .16s ease,background .16s ease}.task-drawer.is-open .task-drawer__scrim{background:#02061773;opacity:1}.task-drawer__panel{position:absolute;top:0;right:0;width:min(24rem,calc(100vw - 1.5rem));height:100%;background:var(--bg-elev);border-left:1px solid var(--border);box-shadow:-18px 0 48px #00000047;transform:translate(105%);transition:transform .18s ease;display:flex;flex-direction:column}.task-drawer.is-open .task-drawer__panel{transform:translate(0)}.task-drawer__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem;border-bottom:1px solid var(--border)}.task-drawer__header h2{margin:0;font-size:1.1rem}.task-drawer__eyebrow{margin:0 0 .2rem;color:var(--fg-muted);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase}.task-drawer .day-tasks-container{padding:.75rem 1rem 1.25rem;overflow:auto}.day-tasks-container[data-state=loading] .day-tasks-list,.day-tasks-container[data-state=empty] .day-tasks-list,.day-tasks-container[data-state=error] .day-tasks-list,.day-tasks-container[data-state=ok] .state-message{display:none}.day-tasks-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.day-task-row{display:grid;grid-template-columns:.4rem 1fr;gap:.55rem;padding:.4rem .4rem .4rem 0;border-bottom:1px dashed var(--border)}.day-task-row:last-child{border-bottom:none}.day-task-row__bar{width:4px;border-radius:2px;background:var(--task)}.day-task-row[data-category=overdue] .day-task-row__bar{background:var(--error)}.day-task-row[data-category=due_today] .day-task-row__bar{background:var(--warn)}.day-task-row[data-category=done_today] .day-task-row__bar{background:var(--ok)}.day-task-row[data-category=snoozed] .day-task-row__bar{background:var(--other)}.day-task-row__title{margin:0;font-weight:500;font-size:.92rem;word-break:break-word}.day-task-row__meta{margin:.15rem 0 0;font-size:.75rem;color:var(--fg-muted);display:flex;flex-wrap:wrap;gap:.4rem}.day-task-row__badge{text-transform:uppercase;letter-spacing:.04em;font-size:.65rem;padding:.05rem .35rem;border-radius:3px;border:1px solid var(--border)}.day-task-row[data-category=overdue] .day-task-row__badge{color:var(--error);border-color:var(--error)}.day-task-row[data-category=due_today] .day-task-row__badge{color:var(--warn);border-color:var(--warn)}.day-task-row[data-category=ready] .day-task-row__badge{color:var(--task);border-color:var(--task)}.day-task-row[data-category=done_today] .day-task-row__badge{color:var(--ok);border-color:var(--ok)}.day-task-row[data-category=snoozed] .day-task-row__badge{color:var(--other);border-color:var(--other)}.view-root{padding:.5rem .75rem}.view-root[data-state=loading] [data-content],.view-root[data-state=empty] [data-content],.view-root[data-state=error] [data-content],.view-root[data-state=ok] .state-message{display:none}.state-message{margin:0;padding:.75rem .25rem;color:var(--fg-muted);font-style:italic;font-size:.9rem}.view-root[data-state=error] .state-message{color:var(--error);font-style:normal}.schedule-list{list-style:none;margin:0;padding:0}.schedule-row{display:grid;grid-template-columns:minmax(10.75rem,max-content) .35rem minmax(0,1fr);gap:.75rem;align-items:start;position:relative;overflow:hidden;padding:.65rem .25rem;border-bottom:1px solid var(--border)}.schedule-row:last-child{border-bottom:none}.schedule-row[data-past=true]{opacity:.55}.schedule-row[data-active=true]{border-radius:6px;background:color-mix(in srgb,var(--accent) 5%,transparent)}.schedule-row__progress{position:absolute;inset:0;width:var(--progress);background:color-mix(in srgb,var(--accent) 14%,transparent);pointer-events:none;z-index:0}.schedule-row__time,.schedule-row__bar,.schedule-row__body{position:relative;z-index:1}.schedule-row__time{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;color:var(--fg-muted);white-space:nowrap;overflow:visible}.schedule-row__bar{width:4px;height:100%;border-radius:2px;background:var(--other)}.schedule-row[data-kind=event] .schedule-row__bar{background:var(--hard-event)}.schedule-row[data-kind=block] .schedule-row__bar{background:var(--block)}.schedule-row[data-kind=reservation] .schedule-row__bar{background:var(--reservation)}.schedule-row[data-kind=holiday] .schedule-row__bar{background:var(--holiday)}.schedule-row[data-kind=task] .schedule-row__bar{background:var(--task)}.schedule-row[data-kind=reminder] .schedule-row__bar{background:var(--reminder);min-height:1.2rem;height:1.2rem}.schedule-row__body{min-width:0}.schedule-row__title{margin:0;font-weight:500;font-size:.95rem;word-break:break-word}.schedule-row__meta{margin:.15rem 0 0;font-size:.78rem;color:var(--fg-muted);display:flex;flex-wrap:wrap;gap:.5rem}.schedule-row__badge{display:inline-block;text-transform:uppercase;letter-spacing:.04em;font-size:.65rem;padding:.05rem .35rem;border-radius:3px;border:1px solid var(--border);color:var(--fg-muted)}.schedule-row__now{display:inline-block;text-transform:uppercase;letter-spacing:.08em;font-size:.65rem;font-weight:700;padding:.05rem .4rem;border-radius:3px;background:var(--accent);color:var(--bg)}.schedule-row__hint{font-size:.7rem;color:var(--fg-muted);text-transform:lowercase}.schedule-row[data-kind=event] .schedule-row__badge{color:var(--hard-event);border-color:var(--hard-event)}.schedule-row[data-kind=block] .schedule-row__badge{color:var(--block);border-color:var(--block)}.schedule-row[data-kind=reservation] .schedule-row__badge{color:var(--reservation);border-color:var(--reservation)}.schedule-row[data-kind=holiday] .schedule-row__badge{color:var(--holiday);border-color:var(--holiday)}.schedule-row[data-kind=task] .schedule-row__badge{color:var(--task);border-color:var(--task)}.schedule-row[data-kind=reminder] .schedule-row__badge{color:var(--reminder);border-color:var(--reminder)}.schedule-row[data-displaced=true]{border-radius:6px;background:color-mix(in srgb,var(--warn) 10%,transparent)}.schedule-row[data-displaced=true] .schedule-row__bar{background:var(--warn)}.schedule-row[data-displaced=true] .schedule-row__badge{color:var(--warn);border-color:var(--warn);font-weight:700}@media(max-width:640px){.schedule-row{grid-template-columns:.35rem minmax(0,1fr);gap:.35rem .65rem}.schedule-row__bar{grid-column:1;grid-row:1 / span 2}.schedule-row__time{grid-column:2;grid-row:1}.schedule-row__body{grid-column:2;grid-row:2}}.schedule-row__date-divider{margin:1rem 0 .25rem;font-size:.78rem;font-weight:600;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.06em}.timeline{display:grid;grid-template-columns:3.5rem 1fr;position:relative}.timeline__hours{display:flex;flex-direction:column}.timeline__hour-label{height:3rem;font-size:.7rem;color:var(--fg-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;border-top:1px solid var(--border);padding-right:.4rem;text-align:right}.timeline__lane{position:relative;border-left:1px solid var(--border)}.timeline__lane:before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(3rem - 1px),var(--border) calc(3rem - 1px),var(--border) 3rem);pointer-events:none}.timeline__entry{position:absolute;left:.4rem;right:.4rem;border-radius:4px;padding:.25rem .5rem;font-size:.78rem;background:var(--bg-soft);border-left:3px solid var(--other);color:var(--fg);overflow:hidden}.timeline__entry[data-kind=event]{border-left-color:var(--hard-event)}.timeline__entry[data-kind=block]{border-left-color:var(--block)}.timeline__entry[data-kind=reservation]{border-left-color:var(--reservation)}.timeline__entry[data-kind=holiday]{border-left-color:var(--holiday)}.timeline__entry[data-kind=task]{border-left-color:var(--task)}.timeline__entry-title{margin:0;font-weight:500;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline__entry-meta{margin:0;font-size:.7rem;color:var(--fg-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.timeline__now{position:absolute;left:0;right:0;border-top:2px solid var(--accent);pointer-events:none;z-index:2}.timeline__now:before{content:"";position:absolute;left:-4px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--accent)}.week-grid{display:grid;grid-template-columns:3.5rem repeat(7,minmax(0,1fr));position:relative}.week-grid__heading{font-size:.75rem;font-weight:600;text-align:center;padding:.4rem .25rem;border-bottom:1px solid var(--border);color:var(--fg-muted)}.week-grid__heading--corner{border-right:1px solid var(--border)}.week-grid__heading[data-today=true]{color:var(--accent)}.week-grid__hours,.week-grid__day-lane{position:relative}.week-grid__hours .timeline__hour-label{border-top:1px solid var(--border)}.week-grid__day-lane{border-left:1px solid var(--border)}.week-grid__day-lane:before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(3rem - 1px),var(--border) calc(3rem - 1px),var(--border) 3rem);pointer-events:none}.week-grid__entry{position:absolute;left:2px;right:2px;border-radius:3px;padding:.15rem .3rem;font-size:.7rem;background:var(--bg-soft);border-left:3px solid var(--other);overflow:hidden}.week-grid__entry[data-kind=event]{border-left-color:var(--hard-event)}.week-grid__entry[data-kind=block]{border-left-color:var(--block)}.week-grid__entry[data-kind=reservation]{border-left-color:var(--reservation)}.week-grid__entry[data-kind=holiday]{border-left-color:var(--holiday)}.week-grid__entry[data-kind=task]{border-left-color:var(--task)}.week-grid__entry-title{margin:0;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--border);border-left:1px solid var(--border)}.month-grid__heading{padding:.35rem .5rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted);border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--bg-soft)}.month-cell{min-height:6rem;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:.3rem .4rem;display:flex;flex-direction:column;gap:.15rem;background:var(--bg-elev)}.month-cell[data-other-month=true]{background:var(--bg);color:var(--fg-muted)}.month-cell[data-today=true]{outline:2px solid var(--accent);outline-offset:-2px}.month-cell__date{font-size:.75rem;font-weight:600}.month-cell__entry{font-size:.7rem;padding:.1rem .3rem;border-radius:3px;background:var(--bg-soft);border-left:3px solid var(--other);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.month-cell__entry[data-kind=event]{border-left-color:var(--hard-event)}.month-cell__entry[data-kind=block]{border-left-color:var(--block)}.month-cell__entry[data-kind=reservation]{border-left-color:var(--reservation)}.month-cell__entry[data-kind=holiday]{border-left-color:var(--holiday)}.month-cell__entry[data-kind=task]{border-left-color:var(--task)}.month-cell__more{font-size:.7rem;color:var(--fg-muted);font-style:italic}.page-footer{border-top:1px solid var(--border);margin-top:2rem;padding:1rem 1.5rem 2rem;font-size:.78rem;color:var(--fg-muted);text-align:center}.schedule-row__tasks,.timeline__entry-tasks{margin:.45rem 0 0;padding-left:0;list-style:none;display:grid;gap:.25rem}.schedule-row__tasks li,.timeline__entry-tasks li{display:grid;grid-template-columns:1.5rem minmax(0,1fr);gap:.35rem;align-items:start;color:var(--fg)}.schedule-row__tasks-priority,.timeline__entry-tasks-priority{color:var(--block);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem}.timeline__entry-tasks{gap:.1rem;margin-top:.2rem;font-size:.7rem}.schedule-row[data-multiplexed=true] .schedule-row__bar,.timeline__entry[data-multiplexed=true]{border-left-color:var(--accent)}.auth-overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:1.5rem;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.auth-overlay[hidden]{display:none}.auth-card{width:min(26rem,100%);border:1px solid var(--border);border-radius:14px;background:var(--bg-elev);box-shadow:0 1rem 3rem #0000002e;padding:1.25rem}.auth-card__eyebrow{margin:0 0 .35rem;color:var(--accent);font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.auth-card h2{margin:0;font-size:1.25rem}.auth-card p{color:var(--fg-muted)}.auth-card__label{display:block;margin:1rem 0 .35rem;font-size:.8rem;font-weight:600}.auth-card__input{width:100%;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--fg);font:inherit;padding:.7rem .8rem}.auth-card__input:focus{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);border-color:var(--accent)}.wallet-list{display:grid;gap:.6rem;margin-top:1rem}.wallet-option{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.7rem;align-items:center;width:100%;border:1px solid var(--border);border-radius:12px;background:var(--bg-soft);color:var(--fg);font:inherit;padding:.75rem .8rem;cursor:pointer;text-align:left}.wallet-option:hover:not(:disabled){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg-soft))}.wallet-option:disabled{cursor:not-allowed;opacity:.62}.wallet-option__icon{width:1.5rem;height:1.5rem;border-radius:.35rem}.wallet-option__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.wallet-option__status{color:var(--fg-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.auth-card__hint{margin:.55rem 0 0;color:var(--fg-muted);font-size:.8rem}.auth-card__error{min-height:1.2rem;margin:.65rem 0;color:var(--error);font-size:.85rem}.auth-card__button{width:100%;border:1px solid var(--accent);border-radius:999px;background:var(--accent);color:#fff;font:inherit;font-weight:700;padding:.7rem 1rem;cursor:pointer}.auth-card__button:hover{filter:brightness(1.05)}tm-root{display:block;transition:padding-right .18s ease}tm-root:has(.planner-chat.is-open){padding-right:var(--chat-width)}.planner-chat{position:fixed;top:0;right:0;bottom:0;width:var(--chat-width);z-index:60;pointer-events:none}.planner-chat.is-open{pointer-events:auto}.planner-chat__panel{position:absolute;inset:0;background:var(--bg-elev);border-left:1px solid var(--border);box-shadow:-18px 0 48px #00000047;transform:translate(100%);transition:transform .18s ease;display:flex;flex-direction:column}@media(max-width:900px){:root{--chat-width: 100vw}tm-root:has(.planner-chat.is-open){padding-right:0}}.planner-chat.is-open .planner-chat__panel{transform:translate(0)}.planner-chat__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem;border-bottom:1px solid var(--border)}.planner-chat__header h2{margin:0;font-size:1.1rem}.planner-chat__eyebrow,.planner-chat__status{margin:0 0 .2rem;color:var(--fg-muted);font-size:.72rem}.planner-chat__eyebrow{letter-spacing:.12em;text-transform:uppercase}.planner-chat__actions{display:inline-flex;gap:.35rem}.planner-chat__messages{flex:1;overflow:auto;display:flex;flex-direction:column;gap:.75rem;padding:1rem}.planner-chat__empty,.planner-chat__pending,.planner-chat__error{margin:0;color:var(--fg-muted);font-size:.86rem}.planner-chat__error{color:var(--error)}.planner-chat__message{max-width:88%;padding:.65rem .75rem;border:1px solid var(--border);border-radius:12px;background:var(--bg-soft)}.planner-chat__message[data-role=user]{align-self:flex-end;border-color:color-mix(in srgb,var(--accent) 45%,var(--border))}.planner-chat__message[data-role=assistant]{align-self:flex-start;background:var(--bg)}.planner-chat__message-role{margin:0 0 .25rem;color:var(--fg-muted);font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.planner-chat__message-text{margin:0;white-space:pre-wrap}.planner-chat__composer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.6rem;padding:1rem;border-top:1px solid var(--border)}.planner-chat__composer textarea{width:100%;resize:vertical;min-height:4rem;max-height:12rem;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--fg);font:inherit;padding:.65rem .75rem}.planner-chat__composer textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);border-color:var(--accent)}.planner-chat__composer button{align-self:end;border:1px solid var(--accent);border-radius:999px;background:var(--accent);color:#fff;font:inherit;font-weight:700;padding:.65rem 1rem;cursor:pointer}.planner-chat__composer button:disabled{cursor:not-allowed;opacity:.55}.wallet-empty{display:flex;flex-direction:column;gap:8px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--bg-soft)}.wallet-empty__title{margin:0;font-weight:600}.wallet-empty p{margin:0;color:var(--fg-muted);font-size:.92rem}.wallet-empty__action,.wallet-empty__retry{display:inline-block;align-self:flex-start;padding:8px 14px;border-radius:6px;border:1px solid var(--border);background:var(--bg-elev);color:var(--accent);font:inherit;text-decoration:none;cursor:pointer}.wallet-empty__action:hover,.wallet-empty__retry:hover{border-color:var(--accent)}
