#app.logged-out{max-width:400px;margin:10vh auto 0;padding:0 16px}#app.logged-out .brand{text-align:center;font-size:22px}.shell{grid-template-columns:264px 1fr;height:100vh;display:grid}.sidebar{background:var(--sidebar);border-right:1px solid var(--border);flex-direction:column;gap:18px;min-height:0;padding:14px 14px 10px;display:flex;overflow-y:auto}.brand-row{justify-content:space-between;align-items:center;padding:2px 4px;display:flex}.brand{font-size:15px;font-weight:700}.side-section h2{color:var(--muted);letter-spacing:.02em;margin:0 4px 8px;font-size:12px;font-weight:600}.side-section{flex:1;min-height:120px;overflow-y:auto}.account{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;align-items:center;gap:8px;padding:8px 4px 0;font-size:12px;display:flex}.account .email{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button.ghost{color:var(--muted);background:0 0;border-color:#0000;padding:4px 8px;font-size:12px}button.ghost:hover{background:var(--hover);color:var(--text)}button.icon-btn{color:var(--muted);background:0 0;border:none;padding:2px 8px;font-size:20px;line-height:1}button.icon-btn:hover{background:var(--hover);color:var(--text)}.sidebar .todo-add input:not([type=date]){background:var(--bg);padding:8px 10px;font-size:14px}.sidebar .todos li{padding:5px 6px;font-size:14px}.mini-cal{padding:0 2px}.mini-head{justify-content:space-between;align-items:center;padding:0 2px 6px;font-size:14px;display:flex}.mini-grid{text-align:center;grid-template-columns:repeat(7,1fr);row-gap:2px;display:grid}.mini-grid .dow{color:var(--faint);padding:2px 0 4px;font-size:11px}.mini-grid .day{height:28px;color:var(--text);font-variant-numeric:tabular-nums;background:0 0;border:none;border-radius:0;padding:0;font-size:12.5px}.mini-grid .day:hover{background:var(--hover);border-radius:6px}.mini-grid .day.other{color:var(--faint)}.mini-grid .day.sun:not(.other){color:var(--today)}.mini-grid .day.in-range{background:var(--hover)}.mini-grid .day.today{color:#fff;z-index:0;font-weight:700;position:relative}.mini-grid .day.today:before{content:"";background:var(--today);z-index:-1;border-radius:999px;width:24px;position:absolute;inset:2px 50%;translate:-12px}.cal-main{flex-direction:column;min-width:0;min-height:0;display:flex}.cal-header{justify-content:space-between;align-items:center;gap:12px;padding:14px 20px 10px;display:flex}.cal-header h1{letter-spacing:-.01em;font-size:24px;font-weight:700}.cal-controls{align-items:center;gap:6px;display:flex}.cal-controls>button:not(.icon-btn){padding:5px 12px;font-size:14px}.segmented{background:var(--surface);border-radius:8px;padding:2px;display:flex}.segmented button{color:var(--muted);background:0 0;border:none;border-radius:6px;padding:4px 14px;font-size:14px}.segmented button.active{background:var(--bg);color:var(--text);font-weight:600;box-shadow:0 1px 2px #0000001f}#calendar{flex:1;min-height:0}.cal-controls>button.ghost-toggle{color:var(--muted);background:0 0;border-color:#0000}.cal-controls>button.ghost-toggle:hover{background:var(--hover);color:var(--text)}.cal-controls>button.ghost-toggle.active{background:var(--surface);color:var(--text);font-weight:600}@media (width<=860px){.shell{grid-template-columns:1fr;height:auto}.sidebar{border-right:none;border-top:1px solid var(--border);order:2}.sidebar #mini-calendar{display:none}.cal-main{height:82vh}.cal-header{flex-wrap:wrap;padding:10px 12px}.cal-header h1{font-size:19px}}.fc{--fc-border-color:var(--border);--fc-page-bg-color:var(--bg);--fc-neutral-bg-color:var(--bg);--fc-today-bg-color:transparent;--fc-now-indicator-color:var(--today);--fc-highlight-color:color-mix(in srgb, var(--primary) 12%, transparent);font-size:13px}.fc .fc-scrollgrid{border-left:none;border-right:none}.fc td,.fc th{border-color:var(--border)}.fc .fc-timegrid-slot-minor{border-top-color:#0000}.fc .fc-timegrid-slot{height:2.6em}.fc .fc-timegrid-slot-label-cushion,.fc .fc-timegrid-axis-cushion{color:var(--faint);font-size:11px}.fc .fc-col-header-cell{border-left-color:#0000;border-right-color:#0000}.fc .fc-col-header-cell-cushion{color:var(--muted);padding:8px 0;font-size:13px;font-weight:500}.fc .fc-col-header-cell-cushion .num{color:var(--text);margin-left:4px;font-size:14px}.fc .fc-day-today .fc-col-header-cell-cushion .dow{color:var(--today);font-weight:600}.fc .fc-day-today .fc-col-header-cell-cushion .num{background:var(--today);color:#fff;border-radius:6px;padding:1px 6px;font-weight:700}.fc .fc-day-sun .fc-col-header-cell-cushion .dow{color:var(--today)}.fc .fc-daygrid-day-top{flex-direction:row;padding:4px 6px 0}.fc .fc-daygrid-day-number{color:var(--text);padding:2px 6px;font-size:12.5px}.fc .fc-day-other .fc-daygrid-day-number{color:var(--faint)}.fc .fc-day-sun .fc-daygrid-day-number{color:var(--today)}.fc .fc-timegrid .fc-daygrid-day-top{display:none}.fc .fc-dayGridMonth-view .fc-day-today .fc-daygrid-day-number{background:var(--today);color:#fff;border-radius:6px;font-weight:700}.fc .fc-daygrid-more-link{color:var(--muted);font-size:12px}.fc .fc-timegrid-now-indicator-line{border-width:2px 0 0}.fc .fc-timegrid-now-indicator-arrow{border:none;margin-top:-9px;left:auto;right:2px}.fc .now-label{background:var(--today);color:#fff;font-variant-numeric:tabular-nums;border-radius:4px;padding:1px 4px;font-size:10.5px;font-weight:700;display:inline-block}.fc .fc-event{cursor:pointer;border-radius:4px}.fc .ev{--ev:#2383e2;background:color-mix(in srgb, var(--ev) 16%, var(--bg));border:none;border-left:3px solid var(--ev);box-shadow:none}.fc .ev:hover{background:color-mix(in srgb, var(--ev) 24%, var(--bg))}.fc .ev .fc-event-main{color:color-mix(in srgb, var(--ev) 45%, var(--text));padding:2px 4px}.fc .ev .fc-event-title{font-weight:600}.fc .ev .fc-event-time{opacity:.85;font-variant-numeric:tabular-nums;font-size:11px}.fc .ev.past{opacity:.55}.fc .fc-daygrid-event.ev{margin-top:2px}.fc .fc-timegrid-event-harness-inset .fc-timegrid-event{box-shadow:0 0 0 1px var(--bg)}.fc .fc-event-mirror{opacity:.8}.fc .todo-item{background:var(--bg);border:1.5px solid var(--border-strong)}.fc .todo-item .fc-event-main{color:var(--text);padding:1px 4px;font-weight:500}.fc .todo-item.scheduled{border-style:dashed;border-color:var(--primary);background:color-mix(in srgb, var(--primary) 5%, var(--bg))}.fc .todo-item.scheduled .fc-event-time{color:var(--muted);font-size:11px}.fc .todo-item.done{opacity:.5}.fc .todo-item.done .fc-event-title{text-decoration:line-through}.fc .todo-item.overdue{border-color:var(--danger)}.fc .todo-item.overdue .fc-event-main{color:var(--danger)}.event-dialog{background:var(--bg);width:min(440px,100vw - 32px);color:var(--text);border:none;border-radius:12px;padding:20px;box-shadow:0 8px 28px #00000047}.event-dialog::backdrop{background:#00000040}.event-dialog form{gap:12px;display:grid}.event-dialog .title-input{border:none;border-bottom:2px solid var(--border);border-radius:0;padding:6px 2px;font-size:20px}.event-dialog .title-input:focus{border-bottom-color:var(--primary);outline:none}.event-dialog .check{color:var(--muted);align-items:center;gap:8px;display:flex}.event-dialog .when{grid-template-columns:1fr 1fr;align-items:center;gap:6px 8px;display:grid}.event-dialog .when .dash{display:none}.event-dialog .when input{padding:8px}.event-dialog .when input[hidden]{display:none}.event-dialog .colors{gap:8px;display:flex}.event-dialog .colors label{position:relative}.event-dialog .colors input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.event-dialog .colors span{cursor:pointer;border-radius:999px;width:24px;height:24px;display:block}.event-dialog .colors input:checked+span{outline:3px solid var(--text);outline-offset:2px}.event-dialog .colors input:focus-visible+span{outline:3px solid var(--primary);outline-offset:2px}.event-dialog textarea{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);width:100%;color:var(--text);font:inherit;resize:vertical;padding:8px 12px}.event-dialog .message{color:var(--danger);margin:0;font-size:14px}.event-dialog .message:empty{display:none}.event-dialog .actions{gap:8px;display:flex}.event-dialog .actions .spacer{flex:1}.event-dialog .actions .danger{color:var(--danger);border-color:#0000}.event-dialog .actions .danger[hidden]{display:none}.install-btn{text-align:left;background:var(--bg);border:1px dashed var(--border-strong);width:100%;color:var(--text);padding:8px 10px;font-size:13px}.install-dialog{background:var(--bg);width:min(520px,100vw - 32px);color:var(--text);border:none;border-radius:12px;padding:24px;box-shadow:0 8px 28px #00000047}.install-dialog::backdrop{background:#00000040}.install-dialog h2{font-size:18px}.install-dialog .lead{color:var(--muted);margin:6px 0 14px}.install-dialog ol{gap:10px;margin:0 0 14px;padding-left:22px;display:grid}.install-dialog .download{border-radius:var(--radius);background:var(--primary);color:var(--primary-text);padding:6px 12px;font-weight:600;text-decoration:none;display:inline-block}.install-dialog code,.install-dialog kbd{background:var(--surface);border-radius:4px;padding:1px 6px;font-size:13px}.install-dialog kbd{border:1px solid var(--border-strong)}.install-dialog .copy{margin-left:4px;padding:2px 8px;font-size:12px}.install-dialog .note{color:var(--muted);font-size:13px}.install-dialog form{justify-content:flex-end;display:flex}
