*,:before,:after{box-sizing:border-box}html,body,#root{height:100dvh}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root,[data-theme=dark]{--bg:#05070b;--bg-accent:#3d9eff1f;--header-bg:#000;--text:#eef3f8;--text-muted:#8a9bb0;--text-subtle:#6f8298;--border:#5a8cc824;--border-strong:#5a8cc82e;--card-bg:#0c1018eb;--cell-bg:#0b0f16;--cell-hover:#121a27;--cell-selected:#132033;--cell-selected-border:#3d9eff;--accent:#3d9eff;--nav-bg:#10151e;--nav-hover:#182233;--progress-track:#24364c;--progress-red:#f87171;--progress-orange:#fb923c;--progress-yellow:#facc15;--progress-green-soft:#86efac;--progress-green:#4ade80;--input-bg:#10151ee6;--input-border:#5a8cc838;--shadow:0 18px 50px #00000047;--confirm-bg:#0f141c;--confirm-text:#eef3f8;--confirm-text-muted:#8a9bb0;--confirm-border:#5a8cc838}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f6fb;--bg-accent:#3d9eff14;--header-bg:#fff;--text:#152033;--text-muted:#5f7088;--text-subtle:#8a9bb0;--border:#5a78a02e;--border-strong:#5a78a047;--card-bg:#fffffff5;--cell-bg:#f8fafd;--cell-hover:#eef3fa;--cell-selected:#e8f3ff;--cell-selected-border:#3d9eff;--accent:#2563eb;--nav-bg:#f1f5fb;--nav-hover:#e6edf8;--progress-track:#d7e2ef;--progress-red:#dc2626;--progress-orange:#ea580c;--progress-yellow:#ca8a04;--progress-green-soft:#65a30d;--progress-green:#16a34a;--input-bg:#f8fafd;--input-border:#5a78a047;--shadow:0 12px 32px #0f172a14;--confirm-bg:#fff;--confirm-text:#152033;--confirm-text-muted:#5f7088;--confirm-border:#5a78a047}body{background:var(--bg);min-width:320px;color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;margin:0;font-family:Outfit,system-ui,sans-serif;overflow:hidden}button,input{font:inherit}button,a,[role=button],.sidebar-item,.icon-btn{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus:not(:focus-visible),a:focus:not(:focus-visible),.sidebar-item:focus:not(:focus-visible),.icon-btn:focus:not(:focus-visible){outline:none}button:focus-visible,a:focus-visible,.sidebar-item:focus-visible,.icon-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,p{margin:0}#root{width:100%}.app{height:100dvh;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px);background:radial-gradient(1200px 480px at 50% -120px, var(--bg-accent), transparent 70%), var(--bg);flex-direction:column;display:flex;overflow:hidden}.app-header{height:calc(72px + env(safe-area-inset-top,0px));padding-top:env(safe-area-inset-top,0px);border-bottom:1px solid var(--border);background:var(--header-bg);flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.header-menu-btn{left:12px;top:calc(env(safe-area-inset-top,0px) + 16px);display:none;position:absolute}.header-menu-icon{width:18px;height:18px}.brand{align-items:center;gap:10px;display:flex}.brand-logo{object-fit:contain;width:42px;height:42px}.brand h1{letter-spacing:.04em;color:var(--text);font-size:1.55rem;font-weight:600}.header-actions{top:calc(env(safe-area-inset-top,0px) + 16px);align-items:center;gap:10px;display:flex;position:absolute;right:20px}.header-user{box-sizing:border-box;border:2.5px solid var(--border-strong);background:var(--nav-bg);border-radius:999px;align-items:center;gap:8px;max-width:min(260px,42vw);height:40px;padding:0 12px 0 6px;display:flex}.header-user-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:24px;height:24px}.header-user-name{text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:.84rem;font-weight:500;line-height:1.2;overflow:hidden}.icon-btn{box-sizing:border-box;border:2.5px solid var(--border-strong);background:var(--nav-bg);width:40px;height:40px;color:var(--text);border-radius:12px;flex-shrink:0;place-items:center;transition:background .15s,border-color .15s,color .15s;display:grid}.icon-btn:hover{background:var(--nav-hover);border-color:var(--accent)}.theme-toggle:hover{border-color:var(--accent)}.sign-out-btn{color:#ef4444;border-color:#ef444473}.sign-out-btn:hover{color:#dc2626;background:#ef44441a;border-color:#ef4444}.sign-out-icon{width:18px;height:18px;display:block}.boot-screen{color:var(--text-muted);flex:1;place-items:center;font-size:.95rem;display:grid}.boot-skeleton{pointer-events:none}.boot-skeleton-sidebar{border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:10px;width:212px;min-height:0;padding:16px 12px;display:flex}.boot-skeleton-main{flex:1;min-width:0;min-height:0;padding:16px 20px}.boot-skeleton-card{border:1px solid var(--border);background:var(--card-bg);height:100%;box-shadow:var(--shadow);border-radius:20px;flex-direction:column;gap:14px;padding:16px;display:flex}.boot-skeleton-toolbar{grid-template-columns:40px 1fr 40px;align-items:center;gap:12px;display:grid}.boot-skeleton-weekdays{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.boot-skeleton-grid{flex:1;grid-template-rows:repeat(5,minmax(0,1fr));grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;min-height:0;display:grid}.boot-skeleton-block,.boot-skeleton-cell{background:linear-gradient(90deg, var(--nav-bg) 0%, var(--cell-hover) 50%, var(--nav-bg) 100%);background-size:200% 100%;border-radius:10px;animation:.9s ease-in-out infinite tasks-skeleton-shimmer}.boot-skeleton-block.is-avatar{border-radius:12px;width:40px;height:40px}.boot-skeleton-block.is-nav{border-radius:12px;height:40px}.boot-skeleton-block.is-square{border-radius:12px;width:40px;height:40px}.boot-skeleton-block.is-title{justify-self:center;width:min(180px,40%);height:18px}.boot-skeleton-block.is-weekday{justify-self:center;width:42%;height:10px}@media (width<=700px){.boot-skeleton-sidebar{display:none}.boot-skeleton-main{padding:12px}}.sync-banner{color:#fecaca;background:#f871711f;border-bottom:1px solid #f8717159;flex-shrink:0;justify-content:center;align-items:center;gap:12px;padding:8px 16px;font-size:.85rem;display:flex}[data-theme=light] .sync-banner{color:#991b1b;background:#dc262614}.sync-banner button{height:28px;color:inherit;background:0 0;border:2.5px solid;border-radius:8px;padding:0 10px;font-size:.8rem}.auth-screen{padding:24px 16px calc(24px + env(safe-area-inset-bottom,0px));flex:1;place-items:center;display:grid}.auth-card{border:1px solid var(--border);background:var(--card-bg);width:min(400px,100%);box-shadow:var(--shadow);border-radius:18px;padding:28px 24px}.auth-card h2{font-size:1.35rem;font-weight:600}.auth-lead,.auth-card>p{color:var(--text-muted);margin-top:8px;font-size:.92rem;line-height:1.45}.auth-card code{color:var(--accent);font-size:.85em}.auth-form{flex-direction:column;gap:14px;margin-top:22px;display:flex}.auth-field{flex-direction:column;gap:6px;display:flex}.auth-field span{color:var(--text-muted);font-size:.82rem}.auth-field input{border:1px solid var(--input-border);background:var(--input-bg);height:42px;color:var(--text);border-radius:10px;outline:none;padding:0 12px}.auth-field input:focus{border-color:var(--accent)}.auth-password-wrap{align-items:center;display:flex;position:relative}.auth-password-wrap input{width:100%;padding-right:44px}.auth-password-wrap>.tooltip-anchor{position:absolute;top:50%;right:6px;transform:translateY(-50%)}.auth-eye{width:32px;height:32px;color:var(--text-muted);background:0 0;border:0;border-radius:8px;place-items:center;transition:color .15s,background .15s;display:grid}.auth-eye:hover{color:var(--text);background:var(--nav-hover)}.auth-eye svg{width:18px;height:18px;display:block}.auth-remember{color:var(--text-muted);-webkit-user-select:none;user-select:none;align-items:center;gap:10px;font-size:.88rem;display:flex}.auth-remember input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.auth-error,.auth-message{margin:0;font-size:.85rem;line-height:1.4}.auth-error{color:#f87171}.auth-message{color:var(--progress-green)}.auth-submit{background:var(--accent);color:#fff;border:0;border-radius:10px;height:42px;margin-top:4px;font-weight:600;transition:opacity .15s}.auth-submit:disabled{opacity:.7;cursor:default}.auth-switch{width:100%;color:var(--text-muted);text-align:center;cursor:pointer;background:0 0;border:0;margin-top:16px;font-size:.88rem;text-decoration:none;display:block}.auth-switch:hover{color:var(--accent)}.theme-toggle svg,.theme-toggle-icon{width:20px;height:20px}.icon-mask{width:18px;height:18px;-webkit-mask-image:var(--icon);mask-image:var(--icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--icon);background-color:currentColor;display:block;-webkit-mask-position:50%;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat}.app-body{flex:1;min-width:0;min-height:0;display:flex}.app-main{flex:1;width:auto;min-width:0;min-height:0;margin:0;padding:16px 20px}.workspace{align-items:stretch;gap:0;height:100%;min-height:0;display:flex}.calendar-card,.tasks-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:20px}.calendar-card{flex-direction:column;flex:1;min-width:0;min-height:0;padding:16px 16px 14px;transition:flex .35s;display:flex}.month-nav{flex-shrink:0;grid-template-columns:40px 1fr 40px;align-items:center;margin-bottom:12px;display:grid}.month-nav>.tooltip-anchor{width:40px;height:40px}.month-nav h2,.calendar-title{text-align:center;letter-spacing:.02em;font-size:1.1rem;font-weight:600}.year-picker{justify-self:center}.year-picker-trigger{border:2.5px solid var(--border-strong);background:var(--nav-bg);min-width:96px;color:var(--text);letter-spacing:.02em;border-radius:12px;justify-content:center;align-items:center;gap:4px;padding:6px 10px 6px 14px;font-size:1.1rem;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.year-picker-trigger:hover,.year-picker-trigger[aria-expanded=true]{background:var(--nav-hover);border-color:var(--accent);color:var(--accent)}.year-picker-trigger svg{flex-shrink:0;width:18px;height:18px}.year-picker-menu{z-index:60;border:1px solid var(--border);background:var(--card-bg);box-shadow:var(--shadow);border-radius:12px;outline:none;padding:4px;overflow:auto}.year-picker-menu:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.year-picker-option{width:100%;color:var(--text);text-align:center;font-variant-numeric:tabular-nums;background:0 0;border:0;border-radius:8px;padding:8px 12px;font-size:.95rem;font-weight:500;transition:background .15s,color .15s;display:block}.year-picker-option:hover{background:var(--nav-hover)}.year-picker-option.is-selected{background:var(--cell-selected);color:var(--accent);font-weight:600}.calendar-title-btn{width:fit-content;max-width:100%;color:var(--text);letter-spacing:.02em;background:0 0;border:0;border-radius:10px;justify-self:center;padding:6px 12px;font-size:1.1rem;font-weight:600;transition:background .15s,color .15s}.calendar-title-btn:hover{background:var(--nav-hover);color:var(--accent)}.month-nav>.tooltip-anchor:has(.calendar-title-btn){justify-self:center;width:auto;height:auto}.nav-btn{border:2.5px solid var(--border-strong);background:var(--nav-bg);width:40px;height:40px;color:var(--text);border-radius:12px;place-items:center;transition:background .15s,border-color .15s;display:grid}.nav-btn:hover{background:var(--nav-hover);border-color:var(--accent)}.nav-btn svg{width:20px;height:20px}.weekday-row,.day-grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.weekday-row{flex-shrink:0}.weekday{text-align:center;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;padding:0 4px 8px;font-size:.72rem;font-weight:500}.weekday-short{display:none}.day-grid{grid-template-rows:repeat(var(--week-rows,6), minmax(0, 1fr));border:1px solid var(--border-strong);border-radius:14px;flex:1;min-height:0;overflow:hidden}.year-grid{flex:1;grid-template-rows:repeat(4,minmax(0,1fr));grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;min-height:0;padding:4px;display:grid}.year-month-cell{isolation:isolate;border:2.5px solid var(--border);background:var(--cell-bg);color:#fff;border-radius:14px;place-items:end center;min-height:0;transition:border-color .15s,box-shadow .15s;display:grid;position:relative;overflow:hidden}.year-month-art{z-index:0;object-fit:cover;pointer-events:none;width:100%;height:100%;transition:transform .35s;position:absolute;inset:0;transform:scale(1.02)}.year-month-cell:before{content:"";z-index:1;pointer-events:none;background:linear-gradient(#080c1414 35%,#080c148c 78%,#080c14c7 100%);position:absolute;inset:0}.year-month-cell:hover{border-color:var(--accent)}.year-month-cell:hover .year-month-art{transform:scale(1.08)}.year-month-cell.is-current{box-shadow:inset 0 0 0 1px #3d9eff59}.year-month-cell.is-selected{border-color:var(--cell-selected-border);box-shadow:0 0 0 1px var(--cell-selected-border)}@media (prefers-reduced-motion:reduce){.year-month-art,.year-month-cell:hover .year-month-art{transition:none;transform:none}}.year-month-name{z-index:2;letter-spacing:.02em;text-align:center;color:#fff;text-shadow:0 1px 8px #00000073;width:100%;padding:10px 8px 12px;font-size:clamp(.85rem,1.6vw,1.05rem);font-weight:600;position:relative}.day-cell{min-height:0;color:inherit;background:var(--cell-bg);border:0;border-right:1px solid var(--border);border-bottom:1px solid var(--border);flex-direction:column;justify-content:center;align-items:center;padding:4px;transition:background .15s;display:flex;position:relative}.day-cell:nth-child(7n){border-right:0}.day-cell:nth-last-child(-n+7){border-bottom:0}.day-cell:first-child{border-top-left-radius:13px}.day-cell:nth-child(7){border-top-right-radius:13px}.day-cell:nth-last-child(7){border-bottom-left-radius:13px}.day-cell:last-child{border-bottom-right-radius:13px}.day-cell:focus-visible,.nav-btn:focus-visible,.icon-btn:focus-visible,.theme-toggle:focus-visible,.sign-out-btn:focus-visible,.task-check:focus-visible,.tasks-close:focus-visible,.tasks-clear:focus-visible,.task-action:focus-visible,.auth-eye:focus-visible,.calendar-title-btn:focus-visible,.year-picker-trigger:focus-visible,.year-picker-option:focus-visible,.year-month-cell:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.task-form input,.task-form input:focus,.task-form input:focus-visible,.task-edit-input,.task-edit-input:focus,.task-edit-input:focus-visible{box-shadow:none;outline:none}.day-cell:hover{background:var(--cell-hover)}.day-cell.is-outside{opacity:.38}.day-cell.is-selected{z-index:1;background:var(--cell-selected)}.day-cell.is-selected:after{content:"";border:2px solid var(--cell-selected-border);border-radius:inherit;pointer-events:none;position:absolute;inset:0}.day-cell.is-today .day-number{color:var(--accent)}.day-number{letter-spacing:.04em;color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.68rem;font-weight:600;position:absolute;top:6px;right:7px}.progress-ring{aspect-ratio:1;width:min(72%,72px);margin:0;position:relative}.progress-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.progress-ring circle{fill:none;stroke-width:2.7px}.progress-track{stroke:var(--progress-track)}.progress-value{stroke-linecap:round;transition:stroke-dashoffset .4s,stroke .3s}.progress-label{letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--text);place-items:center;font-size:clamp(.58rem,1.2vw,.82rem);font-weight:600;display:grid;position:absolute;inset:0}.progress-tick{color:var(--progress-green)}.progress-tick svg{width:52%;height:52%;transform:none}.progress-ring.is-complete .progress-value{stroke:var(--progress-green)}.tasks-panel{opacity:0;flex:0 0 0;width:0;min-width:0;transition:flex-basis .35s,width .35s,opacity .35s,transform .35s;overflow:hidden;transform:translate(16px)}.tasks-panel.is-open{opacity:1;flex:0 0 min(360px,34vw);width:min(360px,34vw);margin-left:16px;overflow:visible;transform:translate(0)}.tasks-card{box-sizing:border-box;isolation:isolate;flex-direction:column;width:min(360px,34vw);height:100%;min-height:0;padding:18px 18px 16px;display:flex;position:relative;overflow:hidden}.tasks-skeleton{flex-direction:column;gap:16px;height:100%;min-height:0;display:flex}.tasks-skeleton-heading{flex-direction:column;gap:8px;display:flex}.tasks-skeleton-body{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex}.tasks-skeleton-line{background:linear-gradient(90deg, var(--nav-bg) 0%, var(--cell-hover) 50%, var(--nav-bg) 100%);background-size:200% 100%;border-radius:8px;height:14px;animation:.9s ease-in-out infinite tasks-skeleton-shimmer}.tasks-skeleton-line.is-title{width:62%;height:18px}.tasks-skeleton-line.is-sub{width:44%;height:12px}.tasks-skeleton-line.is-short{width:55%}.tasks-skeleton-form{background:linear-gradient(90deg, var(--nav-bg) 0%, var(--cell-hover) 50%, var(--nav-bg) 100%);background-size:200% 100%;border-radius:12px;height:50px;animation:.9s ease-in-out infinite tasks-skeleton-shimmer}@keyframes tasks-skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.tasks-confirm{z-index:6;border-radius:inherit;background-color:var(--confirm-bg);box-shadow:inset 0 0 0 1px var(--confirm-border);flex-direction:column;justify-content:center;padding:24px;display:flex;position:absolute;inset:0}.tasks-confirm-title{color:var(--confirm-text);margin:0;font-size:1.15rem;font-weight:600}.tasks-confirm-description{color:var(--confirm-text-muted);margin:10px 0 0;font-size:.92rem;line-height:1.45}.tasks-confirm-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.tasks-heading{flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.tasks-heading h2{font-size:1rem;font-weight:600;line-height:1.3}.tasks-heading p,.empty-hint{color:var(--text-muted);font-size:.88rem}.tasks-heading p{margin-top:4px}.tasks-heading-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.tasks-clear{color:#ef4444;white-space:nowrap;background:#ef444414;border:2.5px solid #ef444466;border-radius:10px;height:34px;padding:0 12px;font-size:.8rem;font-weight:500;transition:background .15s,border-color .15s,color .15s}.tasks-clear:hover{color:#dc2626;background:#ef444424;border-color:#ef4444}.tasks-close{border:2.5px solid var(--border-strong);background:var(--nav-bg);width:34px;height:34px;color:var(--text-muted);border-radius:10px;flex-shrink:0;place-items:center;transition:background .15s,color .15s,border-color .15s;display:grid}.tasks-close:hover{color:var(--text);background:var(--nav-hover);border-color:var(--accent)}.tasks-close svg{width:18px;height:18px}.tasks-body{flex:1;min-height:0;overflow:hidden}.empty-hint{margin-top:8px}.task-list{scrollbar-width:thin;flex-direction:column;height:100%;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.task-list li{border-bottom:1px solid var(--border);flex-shrink:0;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:48px;display:grid}.task-list li.is-dragging,.backlog-item.is-dragging{opacity:.42}.task-list li.is-drop-target,.backlog-item.is-drop-target{box-shadow:inset 0 -2px 0 var(--accent)}.task-drag-handle{width:18px;height:28px;color:var(--text-subtle);cursor:grab;touch-action:none;background:0 0;border:0;border-radius:6px;flex-shrink:0;place-items:center;padding:0;display:grid}.task-drag-handle:hover,.task-drag-handle:focus-visible{color:var(--text-muted);background:var(--nav-hover)}.task-drag-handle:active{cursor:grabbing}.task-drag-dots{grid-template-rows:repeat(3,4px);grid-template-columns:repeat(2,4px);gap:2px;display:grid}.task-drag-dots span{background:currentColor;border-radius:50%;width:4px;height:4px}.task-description-badge{width:28px;height:28px;color:var(--text-muted);border-radius:8px;place-items:center;display:grid}.task-description-icon{width:16px;height:16px}.task-description-badge:hover,.task-description-badge:focus-visible{color:var(--text);background:var(--nav-hover)}.task-check{border:2.5px solid var(--text-muted);width:20px;height:20px;color:var(--accent);background:0 0;border-radius:50%;flex-shrink:0;place-items:center;padding:0;transition:border-color .18s,color .18s;display:grid}.task-check:hover:not([aria-pressed=true]){border-color:var(--accent)}.task-check-tick{opacity:0;width:12px;height:12px;transition:opacity .18s,transform .18s;transform:scale(.6)}.task-check:hover:not([aria-pressed=true]) .task-check-tick{opacity:1;transform:scale(1)}.task-text-btn{text-align:left;cursor:pointer;background:0 0;border:0;min-width:0;padding:0}.task-text-btn:hover .task-text{color:var(--accent)}.task-text{text-overflow:ellipsis;white-space:nowrap;width:fit-content;min-width:0;max-width:100%;font-size:.95rem;line-height:1.35;display:block;position:relative;overflow:hidden}.task-text:after{content:"";transform-origin:0;pointer-events:none;background:currentColor;height:1.5px;transition:transform .22s;position:absolute;top:50%;left:0;right:0;transform:scaleX(0)}.task-char-counter{color:var(--text-subtle);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;font-size:.72rem}.task-list li.is-done .task-check,.backlog-item.is-done .task-check{border-color:var(--accent)}.task-list li.is-done .task-check-tick,.backlog-item.is-done .task-check-tick{opacity:1;transform:scale(1)}.task-list li.is-done .task-text,.backlog-item.is-done .task-text{color:var(--text-muted)}.task-list li.is-done .task-text:after,.backlog-item.is-done .task-text:after{transform:scaleX(1)}@media (prefers-reduced-motion:reduce){.task-text:after{transition:none}}.task-edit-input{border:1px solid var(--input-border);background:var(--input-bg);width:100%;min-width:0;height:32px;color:var(--text);border-radius:8px;padding:0 8px}.task-actions{flex-shrink:0;align-items:center;gap:2px;display:flex}.task-menu{flex-shrink:0;position:relative}.task-menu-trigger{width:28px;height:28px;color:var(--text-muted);background:0 0;border:0;border-radius:8px;place-items:center;transition:color .15s,background .15s;display:grid}.task-menu-trigger:hover,.task-menu-trigger[aria-expanded=true]{color:var(--text);background:var(--nav-hover)}.task-menu-trigger svg{width:18px;height:18px}.task-menu-dropdown{z-index:60;border:1px solid var(--border);background:var(--card-bg);min-width:148px;box-shadow:var(--shadow);border-radius:10px;padding:4px}.task-menu-item{width:100%;color:var(--text);text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:.86rem;transition:background .15s,color .15s;display:flex}.task-menu-icon{flex-shrink:0;width:16px;height:16px}.task-menu-item:hover{background:var(--nav-hover)}.task-menu-item.is-danger{color:#ef4444}.task-menu-item.is-danger:hover{color:#dc2626;background:#ef44441a}.task-action{width:28px;height:28px;color:var(--text-muted);background:0 0;border:0;border-radius:8px;place-items:center;font-size:1.25rem;line-height:1;transition:color .15s,background .15s;display:grid}.task-action:hover{color:var(--text);background:var(--nav-hover)}.task-delete:hover{color:#ff8a96;background:#ff5a6e14}.task-form{border:1px solid var(--input-border);background:var(--input-bg);border-radius:12px;flex-shrink:0;align-items:center;gap:10px;margin-top:12px;padding:8px 12px;display:flex}.task-form-icon{width:18px;height:18px;color:var(--text-subtle);flex-shrink:0}.task-form input{min-width:0;height:34px;color:var(--text);background:0 0;border:0;outline:none;flex:1}.task-form input::placeholder{color:var(--text-subtle)}.schedule-card{flex-direction:column;min-height:0;display:flex}.schedule-header{margin-bottom:12px}.schedule-header-center{flex-direction:column;align-items:center;gap:4px;min-width:0;display:flex}.schedule-subtitle{color:var(--text-muted);text-align:center;margin:0;font-size:.82rem}.schedule-timeline-scroll{border:1px solid var(--border-strong);background:var(--cell-bg);border-radius:14px;flex:1;min-height:0;overflow:auto}.schedule-timeline{grid-template-columns:56px minmax(0,1fr);min-width:0;display:grid;position:relative}.schedule-hours{flex-direction:column;grid-area:1/1/auto/-1;display:flex}.schedule-hour-row{border-bottom:1px solid var(--border);grid-template-columns:56px minmax(0,1fr);display:grid}.schedule-hour-row:last-child{border-bottom:0}.schedule-hour-label{color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right;padding:6px 8px 0 0;font-size:.72rem;font-weight:500}.schedule-hour-slot{border-left:1px solid var(--border);min-height:100%;transition:background .15s}.schedule-hour-slot:hover{background:color-mix(in srgb, var(--cell-hover) 70%, transparent)}.schedule-blocks-layer{pointer-events:none;position:absolute;inset:0 0 0 56px}.schedule-block{box-sizing:border-box;border:1px solid var(--cell-selected-border);background:var(--cell-selected);color:var(--text);pointer-events:auto;cursor:grab;border-radius:10px;flex-direction:column;padding:6px 8px 10px;transition:box-shadow .15s,border-color .15s;display:flex;position:absolute;left:8px;right:8px;overflow:hidden}.schedule-block:active{cursor:grabbing}.schedule-block.is-done{opacity:.72;border-color:var(--border-strong);background:color-mix(in srgb, var(--nav-bg) 88%, var(--cell-selected))}.schedule-block-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.schedule-block-title{text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;font-weight:600;line-height:1.3;overflow:hidden}.schedule-block-time{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.68rem}.schedule-block-actions{position:absolute;top:4px;right:4px}.schedule-block-remove{width:22px;height:22px;color:var(--text-muted);opacity:0;background:0 0;border:0;border-radius:6px;place-items:center;font-size:1rem;line-height:1;transition:opacity .15s,background .15s,color .15s;display:grid}.schedule-block:hover .schedule-block-remove{opacity:1}.schedule-block-remove:hover{color:var(--text);background:var(--nav-hover)}.schedule-block-resize{cursor:ns-resize;height:8px;position:absolute;bottom:0;left:0;right:0}.schedule-block-resize:after{content:"";background:var(--border-strong);opacity:0;border-radius:999px;width:28px;height:3px;transition:opacity .15s;position:absolute;bottom:2px;left:50%;transform:translate(-50%)}.schedule-block:hover .schedule-block-resize:after{opacity:1}.schedule-task-draggable{cursor:grab}.schedule-task-draggable:active{cursor:grabbing}.schedule-task-draggable .task-drag-handle,.schedule-task-draggable .task-check,.schedule-task-draggable .task-action{cursor:pointer}.schedule-task-draggable .task-drag-handle,.schedule-task-draggable .task-text{cursor:grab}.schedule-task-draggable:active .task-text{cursor:grabbing}.schedule-drag-preview{opacity:.82;box-shadow:var(--shadow);z-index:99999}.tasks-date-link{text-align:left;margin:0;padding:0;display:inline-block}.tasks-heading .calendar-title-btn.tasks-date-link{font-size:1rem;line-height:1.3}.tasks-heading .calendar-title-btn.tasks-date-link:hover,.tasks-heading .calendar-title-btn.tasks-date-link:focus-visible{color:var(--accent);background:0 0}.tooltip-anchor{align-items:center;line-height:normal;display:inline-flex}:is(.tooltip-anchor:has(>.icon-btn),.tooltip-anchor:has(>.nav-btn),.tooltip-anchor:has(>.tasks-close),.tooltip-anchor:has(>.task-action),.tooltip-anchor:has(>.task-drag-handle),.tooltip-anchor:has(>.auth-eye)){line-height:0}.app-tooltip{z-index:10000;color:#f8fafc;letter-spacing:.01em;pointer-events:none;word-break:break-word;background:#0f172a;border-radius:8px;max-width:min(280px,100vw - 16px);padding:7px 10px;font-size:.78rem;font-weight:500;line-height:1.35;box-shadow:0 10px 28px #0f172a47}[data-theme=light] .app-tooltip{color:#f8fafc;background:#152033}.app-tooltip-arrow{fill:#0f172a}[data-theme=light] .app-tooltip-arrow{fill:#152033}.modal-root{z-index:20000;padding:max(20px, env(safe-area-inset-top,0px)) max(20px, env(safe-area-inset-right,0px)) max(20px, env(safe-area-inset-bottom,0px)) max(20px, env(safe-area-inset-left,0px));place-items:center;display:grid;position:fixed;inset:0}.modal-backdrop{cursor:pointer;background:#05070b9e;border:0;position:absolute;inset:0}.modal-card{z-index:1;border:1px solid var(--border);background:var(--card-bg);width:min(400px,100%);box-shadow:var(--shadow);border-radius:20px;padding:24px;position:relative}.modal-title{color:var(--text);margin:0;font-size:1.15rem;font-weight:600}.modal-description{color:var(--text-muted);margin:10px 0 0;font-size:.92rem;line-height:1.45}.modal-actions{justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.modal-btn{border-radius:10px;height:40px;padding:0 16px;font-size:.9rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.modal-btn-secondary{border:2.5px solid var(--border-strong);background:var(--nav-bg);color:var(--text)}.modal-btn-secondary:hover{background:var(--nav-hover);border-color:var(--accent)}.modal-btn-primary{border:2.5px solid var(--accent);background:var(--accent);color:#fff}.modal-btn-primary:hover{filter:brightness(1.06)}.modal-btn-primary.is-danger{background:#ef4444;border-color:#ef4444}.modal-btn-primary.is-danger:hover{background:#dc2626;border-color:#dc2626}.task-edit-modal{flex-direction:column;gap:14px;width:min(800px,100vw - 40px);max-height:min(90vh,760px);display:flex;overflow:hidden}.task-edit-modal>.modal-title,.task-edit-modal>.task-edit-field:not(.task-edit-description-field){flex-shrink:0}.task-edit-modal .modal-actions{flex-shrink:0;margin-top:8px}.task-edit-field{flex-direction:column;gap:6px;min-width:0;display:flex}.task-edit-description-field{flex:auto;min-height:220px;overflow:hidden}.task-edit-description-field>span{flex-shrink:0}.task-edit-field span{color:var(--text-muted);font-size:.82rem}.task-edit-field-label{justify-content:space-between;align-items:center;gap:8px;display:flex}.task-edit-field input{box-sizing:border-box;border:1px solid var(--input-border);background:var(--input-bg);width:100%;color:var(--text);font:inherit;border-radius:10px;outline:none;padding:10px 12px}.task-edit-field input:focus{border-color:var(--accent)}.task-view-value{border:1px solid var(--border);background:var(--nav-bg);color:var(--text);word-break:break-word;border-radius:10px;margin:0;padding:10px 12px;font-size:.95rem;line-height:1.45}.task-view-description-wrap{flex-direction:column;flex:auto;min-width:0;min-height:220px;display:flex;position:relative}.task-view-copy{z-index:1;background:var(--card-bg);height:28px;color:var(--text-muted);letter-spacing:.02em;box-shadow:0 0 0 1px var(--border);border:0;border-radius:8px;align-items:center;gap:6px;padding:0 10px;font-size:.75rem;font-weight:600;transition:background .15s,color .15s;display:inline-flex;position:absolute;top:8px;right:22px}.task-view-copy svg{flex-shrink:0;width:14px;height:14px}.task-view-copy:hover{background:var(--nav-hover);color:var(--text)}.task-view-description{-webkit-overflow-scrolling:touch;border:1px solid var(--border);background:var(--nav-bg);border-radius:12px;flex:auto;min-height:220px;max-height:min(50vh,420px);padding-top:44px;overflow-y:auto}.task-view-empty{border:1px solid var(--border);background:var(--nav-bg);color:var(--text-subtle);border-radius:12px;margin:0;padding:10px 12px;font-size:.92rem;font-style:italic}.rich-text-editor{border:1px solid var(--input-border);background:var(--input-bg);border-radius:12px;flex-direction:column;flex:auto;min-height:220px;max-height:min(50vh,420px);display:flex;overflow:hidden}.rich-text-toolbar{border-bottom:1px solid var(--border);background:var(--nav-bg);flex-shrink:0;align-items:center;gap:2px;padding:8px;display:flex}.rich-text-tool{width:32px;height:32px;color:var(--text-muted);background:0 0;border:0;border-radius:8px;place-items:center;transition:background .15s,color .15s;display:grid}.rich-text-tool:hover{background:var(--nav-hover);color:var(--text)}.rich-text-tool svg{width:16px;height:16px}.rich-text-content{color:var(--text);font:inherit;scrollbar-width:thin;outline:none;padding:12px 14px;line-height:1.55}.rich-text-editor .rich-text-content{flex:auto;min-height:0;overflow-y:auto}.task-view-description.rich-text-content{flex:auto;min-height:220px;max-height:min(50vh,420px);padding-top:44px;overflow-y:auto}.rich-text-content:empty:before{content:attr(data-placeholder);color:var(--text-subtle);pointer-events:none}.rich-text-content ul,.rich-text-content ol{margin:.4em 0;padding-left:1.4em}.rich-text-content li+li{margin-top:.2em}.rich-text-footer{border-top:1px solid var(--border);background:var(--nav-bg);flex-shrink:0;justify-content:flex-end;padding:6px 10px;display:flex}@media (width<=900px){.task-edit-modal{width:min(680px,100vw - 32px)}.rich-text-editor,.task-view-description,.task-view-description.rich-text-content{min-height:180px;max-height:min(42vh,360px)}}@media (width<=640px){.modal-root:has(.task-edit-modal){align-items:center;padding:12px}.task-edit-modal{width:100%;max-height:calc(100dvh - 24px);padding:18px 16px;overflow:hidden}.task-edit-description-field{flex:auto;min-height:min(36dvh,220px);max-height:none;overflow:hidden}.rich-text-editor,.task-view-description,.task-view-description.rich-text-content{flex:auto;min-height:min(36dvh,220px);max-height:min(52dvh,420px)}.rich-text-toolbar{flex-wrap:wrap}.task-edit-modal .modal-actions{border-top:1px solid var(--border);background:0 0;flex-shrink:0;margin-top:4px;padding-top:12px;position:static}}.app-sidebar{border-right:1px solid var(--border);background:color-mix(in srgb, var(--header-bg) 88%, var(--nav-bg));flex-direction:column;flex-shrink:0;width:212px;min-height:0;padding:12px 10px;transition:width .22s;display:flex;overflow:hidden}.app-sidebar.is-collapsed{width:68px;padding-left:8px;padding-right:8px}.sidebar-top{justify-content:flex-end;margin-bottom:10px;display:flex}.app-sidebar.is-collapsed .sidebar-top{justify-content:center}.sidebar-toggle{box-sizing:border-box;border:2.5px solid var(--border-strong);background:var(--nav-bg);width:40px;height:40px;color:var(--text);border-radius:12px;place-items:center;transition:background .15s,border-color .15s;display:grid}.sidebar-toggle:hover{background:var(--nav-hover);border-color:var(--accent)}.sidebar-toggle-icon{width:18px;height:18px}.sidebar-toggle-mobile{display:none}.sidebar-nav{flex-direction:column;flex:auto;gap:6px;min-height:0;display:flex}.sidebar-footer{flex-direction:column;flex-shrink:0;gap:6px;margin-top:auto;padding-top:12px;display:none}.sidebar-item{box-sizing:border-box;width:100%;min-height:44px;color:var(--text-muted);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:0 12px;text-decoration:none;transition:background .15s,color .15s;display:flex}.app-sidebar.is-collapsed .sidebar-item{justify-content:center;width:44px;margin:0 auto;padding:0}.sidebar-item:hover{background:var(--nav-hover);color:var(--text)}.sidebar-item.is-active{background:var(--nav-hover);color:var(--accent)}.sidebar-item-icon{flex-shrink:0;place-items:center;width:22px;height:22px;display:grid}.sidebar-item-icon svg{width:20px;height:20px}.sidebar-action-icon{flex-shrink:0;width:20px;height:20px;display:block}.sidebar-item-label{white-space:nowrap;font-size:.95rem;font-weight:500}.sidebar-sign-out-btn{color:#ef4444}.sidebar-sign-out-btn:hover{color:#dc2626;background:#ef44441a}.app-sidebar.is-collapsed .sidebar-top>.tooltip-anchor,.app-sidebar.is-collapsed .sidebar-nav>.tooltip-anchor,.app-sidebar.is-collapsed .sidebar-footer>.tooltip-anchor{justify-content:center;width:100%;display:flex}.sidebar-backdrop{display:none}.backlog-page{background:var(--card-bg);border:1px solid var(--border);max-width:1000px;height:100%;min-height:0;box-shadow:var(--shadow);border-radius:20px;flex-direction:column;margin:0 auto;padding:20px;display:flex;position:relative;overflow:hidden}.backlog-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px;display:flex}.backlog-header h2{letter-spacing:.02em;font-size:1.35rem;font-weight:600}.backlog-header p{color:var(--text-muted);margin-top:4px;font-size:.9rem}.backlog-scroll{flex:1;min-height:0;padding:8px 14px 20px;overflow:auto}.backlog-list{margin:0;padding:0;list-style:none}.backlog-item{border-bottom:1px solid var(--border);grid-template-columns:auto auto minmax(0,1fr) auto auto;align-items:center;gap:10px;min-height:48px;display:grid}.backlog-item:not(:has(.backlog-assigned-date)){grid-template-columns:auto auto minmax(0,1fr) auto}.backlog-assigned-date{background:var(--cell-selected);color:var(--accent);letter-spacing:.02em;white-space:nowrap;cursor:pointer;border:0;border-radius:10px;flex-shrink:0;padding:6px 12px;font-size:.82rem;font-weight:600;transition:background .15s,color .15s}.backlog-assigned-date:hover{background:var(--nav-hover)}.backlog-header-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:8px;display:flex}.backlog-clear{flex-shrink:0}.backlog-confirm{z-index:6;border-radius:inherit;background-color:var(--confirm-bg);box-shadow:inset 0 0 0 1px var(--confirm-border);flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.backlog-calendar-icon{width:16px;height:16px}.backlog-form{border-bottom:1px solid var(--border);align-items:center;gap:10px;margin-top:8px;padding:10px 4px;display:flex}.backlog-form input{min-width:0;height:36px;color:var(--text);background:0 0;border:0;outline:none;flex:1}.backlog-form-icon{width:16px;height:16px;color:var(--text-subtle);flex-shrink:0}.backlog-form input::placeholder{color:var(--text-subtle)}.backlog-done{border-top:1px solid var(--border);margin-top:18px;padding-top:8px}.backlog-done-toggle{width:100%;color:var(--text-muted);text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:10px 4px;font-size:.92rem;font-weight:500;display:flex}.backlog-done-toggle:hover{color:var(--text)}.backlog-done-chevron{width:14px;height:14px;color:var(--text-muted);flex-shrink:0;transition:transform .25s;transform:rotate(180deg)}.backlog-done-chevron.is-open{transform:rotate(0)}.backlog-done-panel{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .28s,opacity .22s;display:grid}.backlog-done-panel.is-open{opacity:1;grid-template-rows:1fr}.backlog-done-panel-inner{min-height:0;overflow:hidden}.backlog-sentinel{width:100%;height:1px}.assign-dialog-backdrop{z-index:40;padding:max(20px, env(safe-area-inset-top,0px)) max(20px, env(safe-area-inset-right,0px)) max(20px, env(safe-area-inset-bottom,0px)) max(20px, env(safe-area-inset-left,0px));background:#0000007a;place-items:center;display:grid;position:fixed;inset:0}.assign-dialog{border:1px solid var(--border);background:var(--card-bg);width:min(360px,100%);box-shadow:var(--shadow);border-radius:18px;padding:18px 18px 16px}.assign-dialog-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.assign-dialog-header h2{font-size:1.1rem;font-weight:600}.assign-dialog-close{width:32px;height:32px;color:var(--text-muted);background:0 0;border:0;border-radius:10px;font-size:1.4rem;line-height:1}.assign-dialog-close:hover{background:var(--nav-hover);color:var(--text)}.assign-month-nav{grid-template-columns:40px 1fr 40px;align-items:center;margin-bottom:10px;display:grid}.assign-month-title{text-align:center;font-size:.95rem;font-weight:560}.assign-weekday-row{color:var(--text-subtle);text-align:center;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px;font-size:.72rem;display:grid}.assign-day-grid{grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--week-rows,6), 36px);gap:2px;margin-bottom:14px;display:grid}.assign-day-cell{color:var(--text);background:0 0;border:1px solid #0000;border-radius:10px;font-size:.82rem}.assign-day-cell:hover{background:var(--cell-hover)}.assign-day-cell.is-outside{color:var(--text-subtle);opacity:.55}.assign-day-cell.is-today{border-color:var(--border-strong)}.assign-day-cell.is-selected{background:var(--cell-selected);border-color:var(--cell-selected-border);color:var(--accent);font-weight:600}.assign-dialog-actions{justify-content:flex-end;gap:8px;display:flex}.duplicate-dialog-description{color:var(--text-muted);margin:0 0 12px;font-size:.88rem;line-height:1.45}.duplicate-dialog-count{color:var(--text-subtle);text-align:center;margin:0 0 14px;font-size:.82rem}@media (width<=900px){.app-main{padding:12px 14px}.tasks-panel.is-open{flex-basis:min(320px,42vw);width:min(320px,42vw);margin-left:12px}.tasks-card{width:min(320px,42vw)}.weekday-full{display:none}.weekday-short{display:inline}.day-number{font-size:.62rem;top:4px;right:5px}.progress-ring{width:min(78%,58px)}}@media (width<=700px){.app{overflow:hidden}.app-body{flex-direction:row;flex:1;min-height:0}.header-menu-btn{display:grid}.header-actions{display:none}.sidebar-footer{display:flex}.sidebar-toggle-desktop{display:none}.sidebar-toggle-mobile{display:grid}.sidebar-backdrop{z-index:40;cursor:pointer;background:#0000007a;border:0;margin:0;padding:0;display:block;position:fixed;inset:0}.app-sidebar,.app-sidebar.is-collapsed{z-index:50;width:min(300px,86vw);height:100dvh;padding:calc(16px + env(safe-area-inset-top,0px)) 14px calc(16px + env(safe-area-inset-bottom,0px));border-right:1px solid var(--border);box-shadow:var(--shadow);pointer-events:none;border-bottom:0;border-radius:0 18px 18px 0;transition:transform .24s;position:fixed;top:0;bottom:0;left:0;overflow:hidden;transform:translate(-105%)}.app-sidebar.is-mobile-open{pointer-events:auto;transform:translate(0)}.app-sidebar.is-collapsed .sidebar-top{justify-content:flex-end}.app-sidebar.is-collapsed .sidebar-item{justify-content:flex-start;width:100%;margin:0;padding:0 12px}.app-sidebar.is-collapsed .sidebar-item-label{display:inline}.app-sidebar.is-collapsed .sidebar-top>.tooltip-anchor,.app-sidebar.is-collapsed .sidebar-nav>.tooltip-anchor,.app-sidebar.is-collapsed .sidebar-footer>.tooltip-anchor{width:100%;display:block}.sidebar-top{justify-content:flex-end;margin:0 0 14px}.app-main{flex:1;width:100%;height:auto;min-height:0;padding:12px;overflow:auto}.workspace{height:auto;min-height:calc(100dvh - 72px - env(safe-area-inset-top,0px) - 24px);flex-direction:column}.workspace.tasks-open .calendar-card,.workspace.tasks-open .schedule-card{flex:none;min-height:min(52vh,420px)}.tasks-panel{transform:translateY(12px)}.tasks-panel.is-open{flex:none;width:100%;height:min(48vh,420px);margin-top:12px;margin-left:0;transform:translateY(0)}.tasks-card{width:100%;height:100%}.backlog-page{height:auto;min-height:min(70vh,640px)}.brand h1{font-size:1.3rem}}@media (width<=640px){.brand h1{font-size:1.3rem}}
