.today-card{margin:0 0 12px;padding:14px 12px;text-align:center;background:var(--surface);border:1px solid var(--surface-2);border-radius:var(--radius)}.today-card-count{margin:0;font-size:3rem;font-weight:700;line-height:1.05;color:var(--accent);font-variant-numeric:tabular-nums}.today-card-label{margin:2px 0 0;font-size:.875rem;color:var(--text-muted)}.task-stats{margin:0 0 12px}.task-stats-title{font-size:.875rem;margin:0 0 6px;color:var(--text-muted);text-wrap:pretty}.task-stats-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.task-stats-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 10px;min-height:44px;font-size:.9375rem;background:var(--surface);border-radius:var(--radius)}.task-stats-count{flex:0 0 auto;font-weight:600;font-variant-numeric:tabular-nums}.alltime-total{margin:8px 0 0;font-size:.9375rem;text-align:center;color:var(--text)}.stats-skeleton{display:flex;flex-direction:column;gap:6px}.skeleton{height:44px;border-radius:var(--radius);background:var(--surface);animation:skeleton-pulse 1.2s ease-in-out infinite}.skeleton-big{height:96px}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-reduced-motion: reduce){.skeleton{animation:none}}.task-item-leading-stack{display:flex;flex-direction:column;align-items:center;gap:4px}.completion-btn{min-width:48px;min-height:48px;padding:0;border:none;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .12s ease-out}.completion-btn:hover{background:var(--accent-hover)}.completion-btn:focus-visible{outline:2px solid var(--text);outline-offset:2px}.completion-btn.animate-tap{animation:tap-pop .24s ease-out}@keyframes tap-pop{0%{transform:scale(1)}40%{transform:scale(1.18)}to{transform:scale(1)}}.undo-control{min-height:32px;padding:0 8px;font-size:.75rem;border:1px solid var(--surface-2);border-radius:8px;background:var(--surface-2);color:var(--text);cursor:pointer}.undo-control:disabled{opacity:.6;cursor:default}@media (prefers-reduced-motion: reduce){.completion-btn.animate-tap{animation:none}}.heatmap-nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px;margin-bottom:10px}.heatmap-nav-toggle{display:flex;gap:2px;padding:3px;background:var(--surface);border-radius:var(--radius)}.heatmap-toggle-btn{min-height:36px;padding:0 10px;font-size:.8125rem;border:none;border-radius:calc(var(--radius) - 4px);background:transparent;color:var(--text-muted);cursor:pointer;transition:background-color .12s ease-out}.heatmap-toggle-btn[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);font-weight:600}.heatmap-range-label{margin:0;font-size:.9375rem;font-weight:600;font-variant-numeric:tabular-nums;text-wrap:pretty}.heatmap-nav-arrows{display:flex;gap:6px}.heatmap-nav-arrows .btn{min-height:36px;padding:0 8px;font-size:.8125rem}.heatmap-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.heatmap-cell{position:relative;min-width:24px;min-height:24px;aspect-ratio:1;border-radius:4px;background:var(--surface-2)}.heatmap-cell.level-0{background:var(--surface-2)}.heatmap-cell.level-1{background:var(--heat-1)}.heatmap-cell.level-2{background:var(--heat-2)}.heatmap-cell.level-3{background:var(--heat-3)}.heatmap-cell--btn{border:none;padding:0;cursor:pointer}.heatmap-cell--btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.heatmap-cell--btn[aria-pressed=true]{outline:2px solid var(--text);outline-offset:1px}.heatmap-cell--future{opacity:.3}.heatmap-blank{background:transparent}.heatmap-tip{display:none;position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-50%);z-index:10;white-space:nowrap;padding:4px 10px;font-size:.75rem;color:var(--text);background:#020617;border:1px solid var(--surface-2);border-radius:6px;box-shadow:0 4px 12px #0006;pointer-events:none}@media (hover: hover){.heatmap-cell--btn:hover .heatmap-tip,.heatmap-cell--btn:focus-visible .heatmap-tip{display:block}}.day-detail{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px;margin-top:10px;padding:8px 10px;min-height:44px;background:var(--surface);border-radius:var(--radius)}.heatmap-skel{animation:heatmap-pulse 1.2s ease-in-out infinite}@keyframes heatmap-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-reduced-motion: reduce){.heatmap-skel{animation:none}}.heatmap-filter{display:flex;align-items:center;gap:12px;margin:12px 0}.heatmap-filter label{font-size:.8125rem;white-space:nowrap;color:var(--text-muted, var(--text))}.heatmap-filter select{padding:4px 8px;min-height:36px;font-size:.875rem;color:var(--text);background:var(--surface);border:1px solid var(--surface-2);border-radius:var(--radius)}.day-detail-info{display:flex;flex-direction:column;gap:4px}.day-breakdown{margin:0;padding-left:18px;font-size:.8125rem;color:var(--text-muted, var(--text))}.day-task-btn{background:none;border:none;padding:0;font:inherit;color:inherit;text-align:left;text-decoration:underline dotted;cursor:pointer;min-height:32px}.heatmap-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px;background:#00000073}.heatmap-modal{display:flex;flex-direction:column;gap:8px;min-width:min(320px,100%);max-height:80vh;overflow-y:auto;padding:16px;border-radius:12px;background:var(--bg, #fff);box-shadow:0 8px 32px #00000040}.heatmap-modal-title{margin:0;font-size:1rem}.heatmap-modal-date{margin:0;font-size:.8125rem;color:var(--text-muted, var(--text))}.heatmap-modal-times{margin:0;padding-left:18px;font-variant-numeric:tabular-nums;font-size:.9375rem}.quick-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px;text-align:center}.quick-check{font-size:80px;line-height:1;font-weight:700;color:#22c55e;animation:quick-pop .45s ease-out}.quick-name{margin:0;font-size:20px;color:#f8fafc}.quick-count{margin:0;font-size:16px;color:#cbd5e1}.quick-hint{margin:6px 0 0;font-size:13px;color:#94a3b8}.quick-pending{font-size:16px;color:#cbd5e1}.quick-page--error .quick-error-msg{font-size:16px;color:#f87171;margin:0 0 6px}.quick-home-link{color:#38bdf8;font-size:15px}@keyframes quick-pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.15);opacity:1}to{transform:scale(1)}}@media (prefers-reduced-motion: reduce){.quick-check{animation:none}}.pwa-install-toast{position:fixed;left:50%;bottom:12px;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:8px 12px;background:#0f172a;color:#f8fafc;border:1px solid #334155;border-radius:12px;box-shadow:0 8px 24px #0006;z-index:1000;font-size:13px}.pwa-install-btn{border:none;border-radius:8px;background:#22c55e;color:#052e16;font-weight:600;padding:6px 10px;font-size:13px;cursor:pointer}.pwa-install-dismiss{border:none;background:transparent;color:#94a3b8;font-size:16px;cursor:pointer;padding:4px}.login-page{display:flex;flex-direction:column;gap:var(--space-4);padding-top:calc(var(--space-6) + env(safe-area-inset-top))}.login-title{margin:0}.login-sub{margin:0;color:var(--text-muted);font-size:.875rem}.login-mode{display:flex;gap:var(--space-2)}.login-mode-btn{flex:1 1 0;min-height:44px;border:none;border-radius:var(--radius);background:var(--surface);color:var(--text-muted);font-size:.875rem;cursor:pointer;transition:background-color .12s ease-out}.login-mode-btn:hover{background:var(--surface-hover)}.login-mode-btn.is-active{background:var(--accent);color:var(--accent-ink);font-weight:600}.login-form{display:flex;flex-direction:column;gap:var(--space-3)}.login-label{font-size:.8125rem;color:var(--text-muted)}.login-input{min-height:44px;padding:0 var(--space-4);border:1px solid var(--surface-2);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:1rem}.login-input:focus-visible{border-color:var(--accent)}.login-error{margin:0;color:var(--danger);font-size:.875rem}.login-submit{min-height:44px;margin-top:var(--space-2);border:none;border-radius:var(--radius);background:var(--accent);color:var(--accent-ink);font-size:1rem;font-weight:600;cursor:pointer}.login-submit:hover:not(:disabled){background:var(--accent-hover)}.login-submit:disabled{opacity:.6;cursor:default}.app-nav{position:sticky;top:0;z-index:100;display:flex;gap:6px;max-width:480px;margin:0 auto;padding:calc(6px + env(safe-area-inset-top)) 12px 6px;background:var(--bg);border-bottom:1px solid var(--surface-2)}.app-nav-btn{flex:1 1 0;min-height:44px;padding:0 4px;font-size:.8125rem;white-space:nowrap;border:none;border-radius:var(--radius);background:var(--surface);color:var(--text-muted);cursor:pointer;transition:background-color .12s ease-out}.app-nav-btn:hover{background:var(--surface-hover)}.app-nav-btn[aria-current=page]{background:var(--accent);color:var(--accent-ink);font-weight:600}.app-user-menu-root{position:relative;flex:0 0 auto;display:flex;align-items:center}.app-nav-menu-btn{min-width:44px;min-height:44px;padding:0 8px;border:none;border-radius:var(--radius);background:var(--surface);color:var(--text-muted);font-size:1.125rem;line-height:1;cursor:pointer;transition:background-color .12s ease-out}.app-nav-menu-btn:hover{background:var(--surface-hover);color:var(--text)}.app-nav-menu-btn[aria-expanded=true]{background:var(--accent);color:var(--accent-ink)}.app-user-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:200;min-width:190px;max-width:min(260px,calc(100vw - 24px));padding:6px;background:var(--surface);border:1px solid var(--surface-2);border-radius:var(--radius);box-shadow:0 8px 24px #00000073}.app-user-menu-info{display:flex;flex-direction:column;gap:2px;padding:6px 8px 8px}.app-user-menu-caption{font-size:.75rem;color:var(--text-muted)}.app-user-menu-name{font-size:.9375rem;font-weight:600;overflow-wrap:anywhere}.app-user-menu-item{width:100%;min-height:44px;padding:0 8px;text-align:left;border:none;border-radius:calc(var(--radius) - 2px);background:transparent;color:var(--text);font-size:.9375rem;cursor:pointer;transition:background-color .12s ease-out}.app-user-menu-item:hover{background:var(--surface-hover)}@media (prefers-reduced-motion: reduce){.app-nav-menu-btn,.app-user-menu-item{transition:none!important}}:root{--bg: #0f172a;--surface: #1e293b;--surface-2: #273549;--text: #f1f5f9;--text-muted: #94a3b8;--accent: #38bdf8;--accent-ink: #082f49;--danger: #f87171;--radius: 10px;--space-1: 4px;--space-2: 6px;--space-3: 8px;--space-4: 12px;--space-5: 16px;--space-6: 24px;--accent-hover: oklch(70% .14 229);--accent-subtle: oklch(92% .05 229);--surface-hover: oklch(31% .032 255);--danger-hover: oklch(65% .17 22);--heat-1: oklch(44% .09 237);--heat-2: oklch(60% .13 237);--heat-3: oklch(85% .09 231)}@supports (color: oklch(from red calc(l - .1) c h)){:root{--accent-hover: oklch(from var(--accent) calc(l - .06) c h);--accent-subtle: oklch(from var(--accent) calc(l + .16) calc(c*.35) h);--surface-hover: oklch(from var(--surface) calc(l + .035) c h);--danger-hover: oklch(from var(--danger) calc(l - .06) c h);--heat-1: oklch(from var(--accent) calc(l - .3) c h);--heat-2: oklch(from var(--accent) calc(l - .15) c h);--heat-3: oklch(from var(--accent) l c h)}}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.45}:where(button,a,input,select,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent-subtle);color:var(--accent-ink)}.page{max-width:480px;margin:0 auto;padding:10px 14px calc(20px + env(safe-area-inset-bottom))}.app-title{font-size:1.375rem;line-height:1.25;margin:0 0 10px;text-wrap:pretty}.create-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.create-input{flex:1 1 200px;min-width:0;min-height:44px;padding:0 12px;font-size:1rem;color:var(--text);background:var(--surface);border:1px solid var(--surface-2);border-radius:var(--radius)}.create-input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.field-notice{flex-basis:100%;margin:0;color:var(--danger);font-size:.875rem}.btn{min-height:44px;min-width:44px;padding:0 12px;font-size:.9375rem;border:none;border-radius:var(--radius);background:var(--surface-2);color:var(--text);cursor:pointer;transition:background-color .12s ease-out}.btn:not(.btn-add):not(.btn-danger):hover:not(:disabled){background:var(--surface-hover)}.btn:disabled{opacity:.6;cursor:default}.btn-add{background:var(--accent);color:var(--accent-ink);font-weight:600}.btn-add:hover:not(:disabled){background:var(--accent-hover)}.btn-danger{background:var(--danger);color:#450a0a;font-weight:600}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-danger-text{color:var(--danger)}.btn-ghost{background:transparent;border:1px solid var(--surface-2)}.task-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.task-item{display:flex;align-items:center;gap:6px;padding:6px 8px;background:var(--surface);border-radius:var(--radius);transition:background-color .12s ease-out}.task-item:hover{background:var(--surface-hover)}.task-item-leading{flex:0 0 auto;display:flex;align-items:center}.task-item-body{flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:nowrap}.task-name{overflow-wrap:anywhere;min-width:0}.task-item-main{flex:1 1 auto;display:flex;flex-direction:row;align-items:baseline;flex-wrap:wrap;column-gap:8px;row-gap:0;min-width:0}.task-counters{color:var(--text-muted);font-size:.8125rem;font-variant-numeric:tabular-nums}.task-item-actions{display:flex;gap:4px;flex:0 0 auto}.btn-icon{padding:0 8px;font-size:.875rem}.task-item-pinned{background:var(--surface-2)}.pin-btn{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:1.125rem;line-height:1;color:var(--text-muted)}.pin-btn-active{color:var(--accent)}.task-menu-root{position:relative;flex:0 0 auto}.kebab-btn{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:1.25rem;line-height:1;color:var(--text-muted)}.task-menu{position:absolute;top:calc(100% - 4px);right:0;z-index:30;min-width:160px;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #00000040;overflow:hidden}.task-menu-item{min-height:44px;display:flex;align-items:center;gap:8px;padding:0 14px;background:none;border:none;color:var(--text);font-size:.9375rem;text-align:left;cursor:pointer}.task-menu-item:hover,.task-menu-item:focus-visible{background:var(--surface-2)}.task-menu-item-danger{color:var(--danger, #ef4444)}.task-pin-badge{color:var(--accent);margin-right:4px}.task-item-drag{flex:0 0 auto;display:flex;align-items:center}.drag-handle{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius);background:transparent;color:var(--text-muted);font-size:1.125rem;line-height:1;cursor:grab;touch-action:none}.drag-handle:hover{color:var(--text);background:var(--surface-2)}.drag-handle:active{cursor:grabbing}.drag-handle:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (prefers-reduced-motion: reduce){.task-item,.btn,.app-nav-btn,.completion-btn,.heatmap-toggle-btn{transition:none!important}}.rename-input{flex:1 1 100%;min-width:0;min-height:44px;padding:0 10px;font-size:1rem;color:var(--text);background:var(--bg);border:1px solid var(--accent);border-radius:var(--radius)}.delete-confirm{flex:1 1 100%;display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap}.delete-confirm-text{color:var(--danger)}.delete-confirm-actions{display:flex;gap:6px}.state-text{color:var(--text-muted);text-align:center;padding:16px 0}.toast-region{position:fixed;left:50%;bottom:16px;transform:translate(-50%);z-index:1000;pointer-events:none}.toast{background:#7f1d1d;color:#fecaca;padding:10px 14px;border-radius:var(--radius);box-shadow:0 4px 16px #0006;max-width:min(343px,calc(100vw - 32px));font-size:.875rem;text-align:center}
