:root{--color-bg: #0f1115;--color-surface: #1a1d24;--color-surface-2: #232730;--color-border: #2e3340;--color-text: #e6e8ec;--color-text-muted: #9aa3b2;--color-primary: #6366f1;--color-primary-hover: #4f52d4;--color-danger: #ef4444;--color-danger-hover: #c93838;--color-success: #10b981;--color-warning: #f59e0b;--color-priority-low: #64748b;--color-priority-medium: #f59e0b;--color-priority-high: #ef4444;--color-status-pending: #94a3b8;--color-status-in_progress: #6366f1;--color-status-done: #10b981;--color-status-cancelled: #475569;--radius: 8px;--radius-sm: 4px;--shadow: 0 1px 2px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .5);font-family:Space Grotesk,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:var(--color-text);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0}.app-layout{flex:1;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;gap:1.5rem;padding:.75rem 1.5rem;background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:10}.app-header__brand{font-weight:700;font-size:1.1rem;letter-spacing:.5px}.app-header__nav{display:flex;gap:.5rem;flex:1}.app-header__link{padding:.4rem .75rem;border-radius:var(--radius-sm);color:var(--color-text-muted)}.app-header__link:hover{color:var(--color-text);text-decoration:none;background:var(--color-surface-2)}.app-header__link.active{color:var(--color-text);background:var(--color-surface-2)}.app-header__user{display:flex;align-items:center;gap:.75rem}.app-header__name{color:var(--color-text-muted);font-size:.9rem}.app-main{flex:1;padding:1.5rem;max-width:960px;width:100%;margin:0 auto}.page{display:flex;flex-direction:column;gap:1.25rem}.page__header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.page__hint{margin:.25rem 0 0;color:var(--color-text-muted);font-size:.9rem}.page__section{display:flex;flex-direction:column;gap:.75rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem .9rem;border:1px solid transparent;border-radius:var(--radius-sm);font:inherit;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--secondary{background:var(--color-surface-2);color:var(--color-text);border-color:var(--color-border)}.btn--secondary:hover:not(:disabled){background:var(--color-border)}.btn--danger{background:transparent;color:var(--color-danger);border-color:var(--color-danger)}.btn--danger:hover:not(:disabled){background:var(--color-danger);color:#fff}.btn--ghost{background:transparent;color:var(--color-text-muted)}.btn--ghost:hover:not(:disabled){color:var(--color-text);background:var(--color-surface-2)}.form{display:flex;flex-direction:column;gap:.75rem}.form__title{font-size:1.25rem;margin:0 0 .25rem}.form__hint{font-size:.85rem;color:var(--color-text-muted);margin:.5rem 0 0;text-align:center}.form__actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}.form-row{display:flex;flex-direction:column;gap:.3rem}.form-row-group{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.form-label{font-size:.85rem;color:var(--color-text-muted)}.input,.textarea,.select{background:var(--color-surface-2);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.5rem .65rem;font:inherit;width:100%}.input:focus,.textarea:focus,.select:focus{outline:2px solid var(--color-primary);outline-offset:-1px;border-color:var(--color-primary)}.input--error{border-color:var(--color-danger)}.textarea{resize:vertical;min-height:4rem}.form-error{color:var(--color-danger);font-size:.85rem;margin:0}.auth-page{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-start;justify-content:flex-start;padding:2rem;pointer-events:none;z-index:4}.auth-page__panel{pointer-events:auto;width:100%;max-width:340px;padding:1.5rem;background:#0f121c38;backdrop-filter:blur(10px) saturate(130%);-webkit-backdrop-filter:blur(10px) saturate(130%);border:1px solid rgba(255,255,255,.05);border-radius:12px;box-shadow:0 10px 30px #0000002e;color:#f0f4fa}.auth-page__panel .form{gap:.6rem}.auth-page__panel .form__title{font-size:1.2rem;margin:0 0 .4rem;color:#f0f4fa;font-weight:600;letter-spacing:.01em}.auth-page__panel .form-label{color:#f0f4fab3;font-size:.8rem;font-weight:500}.city--no-labels .building__label{display:none}.auth-loading{flex:1;display:flex;align-items:center;justify-content:center}@media (max-width: 640px){.auth-page{align-items:flex-end;padding:0}.auth-page__panel{max-width:none;border-radius:16px 16px 0 0;padding:1.5rem 1.5rem calc(1.5rem + env(safe-area-inset-bottom,0));background:#0f121cb8}}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--color-border);padding-bottom:0;overflow-x:auto}.tabs__tab{padding:.5rem .9rem;color:var(--color-text-muted);border-bottom:2px solid transparent;white-space:nowrap;font-size:.95rem}.tabs__tab:hover{color:var(--color-text);text-decoration:none}.tabs__tab--active{color:var(--color-text);border-bottom-color:var(--color-primary)}.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.list__item{display:flex;align-items:center;gap:.75rem}.list__main{flex:1;min-width:0}.list__title{margin:0 0 .15rem;font-size:1rem;font-weight:600}.list__description{margin:0 0 .4rem;color:var(--color-text-muted);font-size:.9rem;word-break:break-word}.list__meta{display:flex;flex-wrap:wrap;gap:.35rem}.list__actions{display:flex;gap:.4rem;flex-shrink:0}.task__check input{width:1.1rem;height:1.1rem;cursor:pointer;accent-color:var(--color-primary)}.task--done .list__title{text-decoration:line-through;color:var(--color-text-muted)}.empty-state{color:var(--color-text-muted);text-align:center;padding:2rem 1rem;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius)}.badge{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;background:var(--color-surface-2);color:var(--color-text-muted);border:1px solid var(--color-border)}.badge--priority-low{color:var(--color-priority-low);border-color:var(--color-priority-low)}.badge--priority-medium{color:var(--color-priority-medium);border-color:var(--color-priority-medium)}.badge--priority-high{color:var(--color-priority-high);border-color:var(--color-priority-high)}.badge--status-pending{color:var(--color-status-pending);border-color:var(--color-status-pending)}.badge--status-in_progress{color:var(--color-status-in_progress);border-color:var(--color-status-in_progress)}.badge--status-done{color:var(--color-status-done);border-color:var(--color-status-done)}.badge--status-cancelled{color:var(--color-status-cancelled);border-color:var(--color-status-cancelled)}.badge--goal{background:#6366f11a;border-color:var(--color-primary);color:var(--color-primary)}.badge--note-category{background:#f59e0b1a;border-color:var(--color-warning);color:var(--color-warning)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:flex-start;justify-content:center;padding:4rem 1rem;z-index:100;overflow-y:auto}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:480px}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border)}.modal__title{margin:0;font-size:1.1rem}.modal__close{background:transparent;border:none;color:var(--color-text-muted);font-size:1.5rem;line-height:1;cursor:pointer;padding:0 .25rem}.modal__close:hover{color:var(--color-text)}.modal__body{padding:1.25rem}.toast-viewport{position:fixed;right:1.25rem;bottom:1.25rem;z-index:200;display:flex;flex-direction:column;gap:.5rem;max-width:calc(100vw - 2.5rem);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:.6rem;min-width:220px;max-width:360px;padding:.65rem .75rem;background:#0f121ce0;backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border:1px solid rgba(255,255,255,.08);border-left:3px solid var(--toast-accent, var(--color-primary));border-radius:10px;box-shadow:0 12px 32px #00000073;color:var(--color-text);font-size:.875rem;line-height:1.3;animation:toast-in .22s cubic-bezier(.2,.8,.2,1)}.toast--success{--toast-accent: var(--color-success)}.toast--error{--toast-accent: var(--color-danger)}.toast--info{--toast-accent: var(--color-primary)}.toast__icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;border-radius:999px;color:var(--toast-accent);background:color-mix(in srgb,var(--toast-accent) 14%,transparent)}.toast__message{flex:1 1 auto;min-width:0;word-wrap:break-word}.toast__close{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;padding:0;background:transparent;border:none;color:#ffffff73;border-radius:4px;cursor:pointer;transition:color .15s,background .15s}.toast__close:hover,.toast__close:focus-visible{color:#ffffffd9;background:#ffffff14;outline:none}@keyframes toast-in{0%{opacity:0;transform:translate(16px) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}.confirm-modal{text-align:center;padding-top:.5rem}.confirm-modal__close{position:absolute;top:.7rem;right:.7rem;z-index:2;background:transparent;border:1px solid transparent;color:#ffffff80;cursor:pointer;width:28px;height:28px;display:grid;place-items:center;border-radius:6px;padding:0;transition:color .15s,background .15s,border-color .15s}.confirm-modal__close:hover:not(:disabled){color:var(--mod-accent, var(--color-text));background:color-mix(in srgb,var(--mod-accent, var(--color-text)) 10%,transparent);border-color:color-mix(in srgb,var(--mod-accent, var(--color-text)) 22%,transparent)}.confirm-modal__close:disabled{opacity:.4;cursor:not-allowed}.confirm-modal__body{display:flex;flex-direction:column;align-items:center;padding:.5rem .5rem 0}.confirm-modal__icon{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;margin-bottom:1.1rem;flex-shrink:0}.confirm-modal__icon--danger{background:#f43f5e1f;color:var(--color-danger)}.confirm-modal__icon--default{background:color-mix(in srgb,var(--mod-accent, var(--color-primary)) 12%,transparent);color:var(--mod-accent, var(--color-primary))}.confirm-modal__title{font-size:1.05rem;font-weight:600;margin:0 0 .5rem;color:var(--color-text);letter-spacing:-.01em;line-height:1.3}.confirm-modal__message{font-size:.92rem;color:var(--color-text-muted);line-height:1.5;margin:0;max-width:32ch}.confirm-modal__message strong{color:var(--color-text);font-weight:500}.confirm-modal__footer{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.5rem}.spinner{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem;color:var(--color-text-muted)}.spinner__circle{width:1.75rem;height:1.75rem;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}.spinner__label{font-size:.85rem}@keyframes skeleton-shimmer{0%{background-position:-150% 0}to{background-position:150% 0}}.skeleton{background:linear-gradient(90deg,#ffffff0a,#ffffff1a,#ffffff0a);background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite;border-radius:6px}.skeleton-line{display:block}.skeleton-pill{display:inline-block}.skeleton-icon-btn{display:block}@media (max-width: 640px){.app-header{flex-wrap:wrap;gap:.75rem}.app-header__nav{order:3;width:100%}.form-row-group{grid-template-columns:1fr}.list__item{flex-wrap:wrap}.list__actions{width:100%;justify-content:flex-end}}.note-card{cursor:pointer;transition:border-color .15s,background .15s}.note-card:hover{border-color:var(--color-primary)}.note-card__main{display:flex;flex-direction:column;gap:.25rem}.note-card__title{display:flex;align-items:center;gap:.4rem}.note-card__star{color:var(--color-warning);font-size:1rem;line-height:1}.note-card__snippet{margin:.15rem 0 0;color:var(--color-text-muted);font-size:.9rem;line-height:1.4;word-break:break-word;overflow-wrap:anywhere}.notes-toolbar{display:flex;flex-direction:column;gap:.75rem;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.notes-search{display:flex;gap:.5rem;align-items:stretch}.notes-search .input{flex:1}.notes-toolbar__row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem}.notes-toolbar__row .form-row{min-width:180px;flex:1}.notes-toolbar__favorite{display:inline-flex;align-items:center;gap:.4rem;color:var(--color-text-muted);font-size:.9rem;padding-bottom:.55rem;cursor:pointer;white-space:nowrap}.notes-toolbar__favorite input{accent-color:var(--color-primary)}.notes-form__favorite{display:inline-flex;align-items:center;gap:.5rem;color:var(--color-text-muted);font-size:.9rem;cursor:pointer}.notes-form__favorite input{accent-color:var(--color-primary);width:1rem;height:1rem}.note-detail{display:flex;flex-direction:column;gap:.85rem}.note-detail__source{margin:0;font-size:.9rem;word-break:break-all}.note-detail__content{word-break:break-word;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.75rem .9rem;max-height:60vh;overflow-y:auto;font-size:.95rem;line-height:1.5}.rich-text-editor{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);display:flex;flex-direction:column;transition:border-color .15s,outline-color .15s}.rich-text-editor:focus-within{outline:2px solid var(--color-primary);outline-offset:-1px;border-color:var(--color-primary)}.rich-text-editor__toolbar{display:flex;flex-wrap:wrap;gap:.25rem;padding:.4rem .5rem;border-bottom:1px solid var(--color-border);background:var(--color-surface);border-top-left-radius:var(--radius-sm);border-top-right-radius:var(--radius-sm)}.rich-text-editor__btn{background:transparent;color:var(--color-text-muted);border:1px solid transparent;border-radius:var(--radius-sm);padding:.3rem .55rem;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;min-width:2rem}.rich-text-editor__btn:hover:not(:disabled){background:var(--color-surface-2);color:var(--color-text)}.rich-text-editor__btn:disabled{opacity:.4;cursor:not-allowed}.rich-text-editor__btn--active{background:var(--color-primary);color:#fff}.rich-text-editor__btn--active:hover{background:var(--color-primary-hover);color:#fff}.rich-text-editor__content{padding:.6rem .75rem;font-size:.95rem;line-height:1.5}.rich-text-editor__content .ProseMirror{outline:none;min-height:inherit}.rich-text-editor__content .ProseMirror p{margin:0 0 .5em}.rich-text-editor__content .ProseMirror p:last-child{margin-bottom:0}.rich-text-editor__content .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--color-text-muted);float:left;pointer-events:none;height:0}.rich-text-editor__content .ProseMirror ul,.rich-text-editor__content .ProseMirror ol{margin:0 0 .5em;padding-left:1.5em}.rich-text-editor__content .ProseMirror li{margin:.1em 0}.rich-text-editor__content .ProseMirror ul[data-type=taskList]{list-style:none;padding:0;margin:.4em 0}.rich-text-editor__content .ProseMirror ul[data-type=taskList]>li[data-type=taskItem]{display:flex!important;align-items:center!important;flex-direction:row!important;gap:.55em;margin:.1em 0;padding:.1em .3em;border-radius:4px;transition:background .12s}.rich-text-editor__content .ProseMirror ul[data-type=taskList]>li[data-type=taskItem]:hover{background:#ffffff08}.rich-text-editor__content .ProseMirror ul[data-type=taskList]>li[data-type=taskItem]>label{flex-shrink:0;display:inline-flex!important;align-items:center!important;margin:0;padding:0;-webkit-user-select:none;user-select:none;line-height:1}.rich-text-editor__content .ProseMirror ul[data-type=taskList]>li[data-type=taskItem] input[type=checkbox]{width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--mod-accent, var(--color-primary));vertical-align:middle}.rich-text-editor__content .ProseMirror ul[data-type=taskList]>li[data-type=taskItem]>div{flex:1 1 0%;min-width:0;line-height:1.5em;display:block}.rich-text-editor__content .ProseMirror ul[data-type=taskList]>li[data-type=taskItem]>div>p{margin:0!important;padding:0;line-height:1.5em}.rich-text-editor__content .ProseMirror ul[data-type=taskList]>li[data-type=taskItem][data-checked=true]>div{color:var(--color-text-muted, rgba(255, 255, 255, .5));text-decoration:line-through}.rich-text-view{word-break:break-word;font-size:.95rem;line-height:1.5}.rich-text-view>*:first-child{margin-top:0}.rich-text-view>*:last-child{margin-bottom:0}.rich-text-view p{margin:0 0 .5em}.rich-text-view p:last-child{margin-bottom:0}.rich-text-view ul,.rich-text-view ol{margin:0 0 .5em;padding-left:1.5em}.rich-text-view li{margin:.1em 0}.rich-text-view ul[data-type=taskList]{list-style:none;padding:0;margin:.4em 0}.rich-text-view ul[data-type=taskList]>li[data-type=taskItem]{display:flex!important;align-items:center!important;flex-direction:row!important;gap:.5em;margin:.1em 0}.rich-text-view ul[data-type=taskList]>li[data-type=taskItem]>label{flex-shrink:0;display:inline-flex!important;align-items:center!important;margin:0;padding:0;line-height:1}.rich-text-view ul[data-type=taskList]>li[data-type=taskItem] input[type=checkbox]{width:15px;height:15px;margin:0;accent-color:var(--mod-accent, var(--color-primary));pointer-events:none;cursor:default;vertical-align:middle}.rich-text-view ul[data-type=taskList]>li[data-type=taskItem]>div{flex:1 1 0%;min-width:0;line-height:1.5em;display:block}.rich-text-view ul[data-type=taskList]>li[data-type=taskItem]>div>p{margin:0!important;padding:0;line-height:1.5em}.rich-text-view ul[data-type=taskList]>li[data-type=taskItem][data-checked=true]>div{color:var(--color-text-muted, rgba(255, 255, 255, .5));text-decoration:line-through}.rich-text-view strong{font-weight:700}.rich-text-view em{font-style:italic}.rich-text-view u{text-decoration:underline}.rich-text-view__empty{color:var(--color-text-muted);font-style:italic}.task__main{cursor:pointer;border-radius:var(--radius-sm);padding:.1rem .25rem;margin:-.1rem -.25rem;transition:background .1s}.task__main:hover{background:var(--color-surface-2)}.task__main:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.task-modal{display:flex;flex-direction:column;max-height:min(85vh,720px);overflow:hidden;position:relative;animation:modal-pop .18s ease-out;background:#0f121cd1;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);border:1px solid rgba(255,255,255,.08);border-radius:12px;box-shadow:0 20px 60px #0000008c}.task-modal:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--mod-accent, var(--color-primary)) 0%,color-mix(in srgb,var(--mod-accent, var(--color-primary)) 25%,transparent) 100%);z-index:1}.task-modal .modal__body{padding:0;flex:1 1 auto;min-height:0;display:flex;flex-direction:column}@keyframes modal-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.task-modal__close{position:absolute;top:.7rem;right:.7rem;z-index:2;background:transparent;border:1px solid transparent;color:#ffffff80;cursor:pointer;width:28px;height:28px;display:grid;place-items:center;border-radius:6px;padding:0;transition:color .15s,background .15s,border-color .15s}.task-modal__close:hover:not(:disabled){color:var(--mod-accent, var(--color-text));background:color-mix(in srgb,var(--mod-accent, var(--color-text)) 10%,transparent);border-color:color-mix(in srgb,var(--mod-accent, var(--color-text)) 22%,transparent)}.task-modal__close:disabled{opacity:.4;cursor:not-allowed}.task-modal__hero{position:relative;flex-shrink:0;padding:1.25rem 1.5rem 1rem;border-bottom:1px solid rgba(255,255,255,.06)}.task-modal__hero-content{display:flex;flex-direction:column;gap:.5rem;padding-right:2.2rem}.task-modal__chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.task-modal__title{margin:0;font-size:1.4rem;line-height:1.2;font-weight:700;color:var(--color-text);word-break:break-word;letter-spacing:-.01em}.task-modal__info{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:0;font-family:Space Mono,monospace;font-size:11px;letter-spacing:.04em;color:#fff6}.task-modal__info-item{display:inline-flex;align-items:center;gap:4px}.task-modal__info-item--muted{opacity:.5;font-style:italic}.task-modal__info-sep{opacity:.4}.task-modal__body{flex:1 1 auto;overflow-y:auto;min-height:0}.task-modal__body::-webkit-scrollbar{width:4px}.task-modal__body::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--mod-accent, var(--color-text-dim)) 30%,transparent);border-radius:2px}.task-modal__section{padding:1.1rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.05)}.task-modal__section--no-divider{border-bottom:none}.task-modal__section-title{margin:0 0 .7rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:#ffffff59;font-weight:600;font-family:Space Mono,monospace}.task-modal__section-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.7rem}.task-modal__section-head .task-modal__section-title{margin-bottom:0}.task-modal__field-row{display:flex;align-items:center;gap:.5rem;min-width:0}.task-modal__field-row--info{margin-top:.15rem}.task-modal__field-row .task-modal__title{flex:1;min-width:0}.task-modal__field-row .task-modal__info{flex:1;min-width:0;margin:0}.task-modal__field-row .chip{flex:0 0 auto}.task-modal__field-edit-btn{opacity:0;transition:opacity .15s;flex-shrink:0;width:24px;height:24px;color:#ffffff80}.task-modal__field-edit-btn--visible,.task-modal__field-row:hover .task-modal__field-edit-btn,.task-modal__field-row:focus-within .task-modal__field-edit-btn,.task-modal__section-head:hover .task-modal__field-edit-btn,.task-modal__section-head:focus-within .task-modal__field-edit-btn{opacity:1}.task-modal__field-edit-row{display:flex;align-items:center;gap:.4rem;width:100%;min-width:0}.task-modal__field-edit-row .form-row{flex:1;min-width:0}.task-modal__field-edit-row .input{width:100%}.task-modal__field-edit-row .segmented{flex:1;min-width:0}.task-modal__field-action{flex-shrink:0;width:26px;height:26px;opacity:1}.task-modal__field-actions{display:flex;gap:.3rem;flex-shrink:0}.task-modal__field-error{margin:.5rem 0 0;font-size:.78rem;color:#f43f5e}.task-modal__content{background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:8px;padding:.85rem 1rem;max-height:30vh;overflow-y:auto;color:#ffffffc7}.task-modal__form{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.task-form{display:flex;flex-direction:column;padding:1.1rem 1.5rem 1.4rem;gap:.1rem}.task-form__field{display:flex;flex-direction:column}.task-form__row-2col{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin-top:.9rem}.task-modal__error{margin:0 1.5rem .9rem;padding:.6rem .8rem;background:#f43f5e14;border:1px solid rgba(244,63,94,.3);border-radius:6px;color:#f43f5e;font-size:.85rem}.task-modal__footer{display:flex;align-items:center;gap:.5rem;padding:.85rem 1.5rem;border-top:1px solid rgba(255,255,255,.06);flex-shrink:0;background:transparent}.task-modal__footer-spacer{flex:1}.task-modal__footer .task-icon-btn{opacity:1}.task-modal__detail-error{display:flex;align-items:center;gap:.75rem;padding:.55rem 1.1rem;margin:0;background:var(--color-danger-bg, #fdecea);color:var(--color-danger, #b3261e);font-size:.85rem;border-bottom:1px solid var(--color-danger-border, #f5c2c0)}.task-modal__detail-error-text{flex:1}.task-modal__detail-error-retry{background:transparent;border:1px solid currentColor;color:inherit;padding:.2rem .6rem;border-radius:6px;font-size:.8rem;cursor:pointer;transition:background .15s ease,color .15s ease}.task-modal__detail-error-retry:hover:not(:disabled){background:var(--color-danger, #b3261e);color:#fff}.task-modal__detail-error-retry:disabled{opacity:.5;cursor:not-allowed}.task-modal--skeleton{-webkit-user-select:none;user-select:none}.task-modal--skeleton .task-modal__hero{min-height:180px}.task-modal--skeleton .task-modal__body{min-height:240px}.task-modal__title-skeleton{display:flex;flex-direction:column;gap:8px;margin:.4rem 0 .2rem}.skeleton-line--modal-title-1{width:80%;height:18px}.skeleton-line--modal-title-2{width:50%;height:18px}.skeleton-line--modal-date{width:35%;height:12px;opacity:.7}.skeleton-pill--modal-status{width:78px;height:18px;border-radius:10px}.skeleton-pill--modal-priority{width:66px;height:18px;border-radius:10px}.skeleton-line--modal-section-title{display:block;width:110px;height:11px;margin-bottom:.7rem;border-radius:4px}.skeleton-line--modal-desc-1,.skeleton-line--modal-desc-2{display:block;width:95%;height:12px;margin-bottom:6px}.skeleton-line--modal-desc-3{display:block;width:60%;height:12px}.skeleton-block--modal-attachments{display:block;width:100%;height:40px;border-radius:8px}.task-modal--skeleton .skeleton-icon-btn{width:28px;height:28px;border-radius:6px}@media (max-width: 560px){.task-modal__row-2col,.task-form__row-2col{grid-template-columns:1fr}.task-form{padding:.9rem 1.1rem 1.1rem}.task-modal__title{font-size:1.2rem}.task-modal__hero{padding:1rem 1.1rem .85rem}.task-modal__section{padding:.9rem 1.1rem}.task-modal__footer{padding:.75rem 1.1rem}}.task-modal .input,.task-modal .select,.task-modal .textarea{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);color:var(--color-text);border-radius:8px}.task-modal .input::placeholder,.task-modal .textarea::placeholder{color:#ffffff4d}.task-modal .input:focus,.task-modal .select:focus,.task-modal .textarea:focus{outline:none;border-color:var(--mod-accent, var(--color-primary));background:color-mix(in srgb,var(--mod-accent, var(--color-primary)) 6%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--mod-accent, var(--color-primary)) 15%,transparent)}.task-modal .form-label{color:#ffffff8c;font-size:.78rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;font-family:Space Mono,monospace}.task-modal .rich-text-editor{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:8px}.task-modal .rich-text-editor:focus-within{border-color:var(--mod-accent, var(--color-primary));outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--mod-accent, var(--color-primary)) 15%,transparent)}.task-modal .rich-text-editor__toolbar{background:transparent;border-bottom:1px solid rgba(255,255,255,.06);padding:.35rem .4rem}.task-modal .rich-text-editor__btn{color:#ffffff8c;border-radius:5px;padding:.3rem;min-width:1.85rem;display:inline-grid;place-items:center}.task-modal .rich-text-editor__btn:hover:not(:disabled){background:#ffffff0f;color:var(--color-text)}.task-modal .rich-text-editor__btn--active{background:color-mix(in srgb,var(--mod-accent, var(--color-primary)) 25%,transparent);color:var(--mod-accent, var(--color-primary))}.task-modal .rich-text-editor__btn--active:hover{background:color-mix(in srgb,var(--mod-accent, var(--color-primary)) 35%,transparent);color:var(--mod-accent, var(--color-primary))}.task-modal .rich-text-editor__content{color:#ffffffd1}.segmented{display:inline-flex;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:3px;gap:2px}.segmented--full{display:flex;width:100%}.segmented--full .segmented__btn{flex:1;justify-content:center}.segmented__btn{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border:none;background:transparent;color:#ffffff8c;border-radius:5px;font-size:11px;font-family:Space Grotesk,system-ui,sans-serif;font-weight:500;cursor:pointer;white-space:nowrap;transition:color .15s,background .15s}.segmented__btn:hover:not(.segmented__btn--active):not(:disabled){color:var(--color-text);background:#ffffff0a}.segmented__btn:focus-visible{outline:2px solid var(--mod-accent, var(--color-primary));outline-offset:1px}.segmented__btn--active{background:color-mix(in srgb,var(--mod-accent, var(--color-primary)) 22%,transparent);color:var(--mod-accent, var(--color-primary));font-weight:600}.segmented__btn--pending.segmented__btn--active{background:#ffffff1f;color:var(--color-text)}.segmented__btn--progress.segmented__btn--active{background:#6366f133;color:#818cf8}.segmented__btn--done.segmented__btn--active{background:#10b98133;color:#10b981}.segmented__btn--urgent.segmented__btn--active{background:#f43f5e33;color:#f43f5e}.segmented__btn--medium.segmented__btn--active{background:#f59e0b38;color:#f59e0b}.segmented__btn--low.segmented__btn--active{background:#64748b38;color:#94a3b8}.segmented__btn:disabled{opacity:.4;cursor:not-allowed}@media (max-width: 560px){.segmented{display:flex;width:100%}.segmented__btn{flex:1;justify-content:center}}.chip{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:999px;font-size:.78rem;font-weight:500;line-height:1.2;background:var(--color-surface-2);color:var(--color-text-muted);border:1px solid var(--color-border);white-space:nowrap}.chip--inline{padding:.15rem .5rem;font-size:.75rem}.chip--priority-high{background:#ef44441f;border-color:var(--color-priority-high);color:var(--color-priority-high)}.chip--priority-medium{background:#f59e0b1f;border-color:var(--color-priority-medium);color:var(--color-priority-medium)}.chip--priority-low{background:#64748b26;border-color:var(--color-priority-low);color:var(--color-priority-low)}.chip--status-pending{background:#94a3b826;border-color:var(--color-status-pending);color:var(--color-status-pending)}.chip--status-in_progress{background:#6366f11f;border-color:var(--color-status-in_progress);color:var(--color-status-in_progress)}.chip--status-done{background:#10b9811f;border-color:var(--color-status-done);color:var(--color-status-done)}.chip--date{background:#f59e0b1a;border-color:var(--color-warning);color:var(--color-warning)}.chip--goal{background:#6366f11a;border-color:var(--color-primary);color:var(--color-primary)}.category-manager{padding:0;overflow:hidden}.category-manager>summary{list-style:none;cursor:pointer;padding:.85rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem;-webkit-user-select:none;user-select:none}.category-manager>summary::-webkit-details-marker{display:none}.category-manager[open]>summary{border-bottom:1px solid var(--color-border)}.category-manager__hint{color:var(--color-text-muted);font-size:.8rem}.category-manager__body{display:flex;flex-direction:column;gap:.75rem;padding:.85rem 1rem 1rem}.category-manager__create{display:flex;gap:.5rem}.category-manager__create .input{flex:1}.category-manager__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.category-manager__item{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2);flex-wrap:wrap}.category-manager__item .input{flex:1;min-width:120px}.category-manager__name{flex:1;font-size:.95rem;word-break:break-word}.modal--sm{max-width:480px}.modal--md{max-width:640px}.modal--lg{max-width:820px}.task-attachments{position:relative;display:flex;flex-direction:column;gap:.7rem}.task-attachments--dragging{outline:2px dashed var(--color-primary);outline-offset:4px;border-radius:var(--radius-sm)}.task-attachments__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.task-attachments__title{margin:0;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);font-weight:600}.task-attachments__count{margin-left:.4rem;color:var(--color-text-muted);font-weight:500}.task-attachments__hint{margin:0;font-size:.85rem;color:var(--color-text-muted);font-style:italic}.task-attachments__alert{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .6rem .3rem .7rem;background:#ef44441a;color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-sm);font-size:.8rem;cursor:pointer;max-width:100%;text-align:left;font-family:inherit}.task-attachments__alert:hover{background:#ef44442e}.task-attachments__alert-close{font-size:1rem;line-height:1;margin-left:.2rem}.task-attachments__empty{display:flex;align-items:center;gap:.8rem;padding:.9rem 1rem;background:var(--color-surface-2);border:1px dashed var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:.88rem}.task-attachments__empty p{margin:0}.task-attachments__empty strong{color:var(--color-text)}.task-attachments__empty-icon{font-size:1.6rem;flex-shrink:0}.task-attachments__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.7rem}.task-attachments__item{position:relative;display:flex;flex-direction:column;gap:.4rem;padding:.5rem;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:0;transition:border-color .15s ease,transform .15s ease}.task-attachments__item:hover{border-color:var(--color-primary);transform:translateY(-1px)}.task-attachments__item--error{border-color:var(--color-danger)}.task-attachments__item--pending{opacity:.92}.task-attachments__thumb-btn{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:4 / 3;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);cursor:pointer;overflow:hidden;padding:0;color:var(--color-text-muted);font-size:.85rem;transition:border-color .15s ease}.task-attachments__thumb-btn:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-text)}.task-attachments__thumb{width:100%;height:100%;object-fit:cover;display:block}.task-attachments__doc{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text)}.task-attachments__doc--spin{display:inline-block;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.task-attachments__meta{display:flex;flex-direction:column;gap:.1rem;min-width:0}.task-attachments__name{font-size:.82rem;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-attachments__sub{font-size:.7rem;color:var(--color-text-muted)}.task-attachments__sub--error{color:var(--color-danger)}.task-attachments__remove{position:absolute;top:.35rem;right:.35rem;width:1.4rem;height:1.4rem;display:flex;align-items:center;justify-content:center;background:#000000b3;color:var(--color-text);border:none;border-radius:50%;cursor:pointer;font-size:.95rem;line-height:1;padding:0;transition:background .15s ease;opacity:0}.task-attachments__item:hover .task-attachments__remove,.task-attachments__remove:focus-visible{opacity:1}.task-attachments__remove:hover{background:var(--color-danger)}.task-attachments__dropzone{display:flex;align-items:center;justify-content:center;padding:.7rem 1rem;background:transparent;color:var(--color-primary);border:1px dashed var(--color-primary);border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem;font-weight:500;transition:background .15s ease,color .15s ease}.task-attachments__dropzone:hover:not(:disabled){background:#6366f114}.task-attachments__dropzone:disabled{color:var(--color-text-muted);border-color:var(--color-border);cursor:not-allowed}.task-attachments__drop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#6366f114;border:2px dashed var(--color-primary);border-radius:var(--radius-sm);pointer-events:none;z-index:1;animation:drop-fade .15s ease-out}@keyframes drop-fade{0%{opacity:0}to{opacity:1}}.task-attachments__drop-overlay-inner{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.8rem 1.2rem;background:var(--color-surface);border:1px solid var(--color-primary);border-radius:var(--radius-sm);color:var(--color-primary);font-weight:600;box-shadow:var(--shadow-lg)}.task-attachments__drop-overlay-icon{font-size:1.8rem}:root{--city-sky-top: #0a0e1a;--city-sky-mid: #111827;--city-sky-bottom: #1a2340;--city-ground: #1a1f2e;--city-moon: #fcd34d;--city-moon-glow: rgba(251, 191, 36, .25);--city-road: #f59e0b;--city-star: white;--city-text: #e2e8f0;--city-text-dim: #64748b;--city-surface: #1e2537;--city-surface-2: #252d42;--city-border: #2d3748;--city-accent-tasks: #f59e0b;--city-accent-notes: #3b82f6;--city-accent-goals: #10b981;--city-accent-habits: #8b5cf6}.city{--sky-top: #050810;--sky-mid: #0d1526;--sky-bottom: #1a2340;--ground-top: #141929;--ground-bottom: #0e1220;--moon-opacity: 1;--stars-opacity: 1;--road-opacity: .35;--user-menu-bg: rgba(30, 37, 55, .7);--user-menu-border: #2d3748}.city[data-time=dawn]{--sky-top: #4a3868;--sky-mid: #e89270;--sky-bottom: #ffd9a0;--ground-top: #3a2e4a;--ground-bottom: #2a1e3a;--moon-opacity: .3;--stars-opacity: .5;--road-opacity: .4;--city-text: #2a1830;--city-text-dim: #6a5070;--user-menu-bg: rgba(255, 240, 220, .75);--user-menu-border: #c0a890}.city[data-time=day]{--sky-top: #4a90d4;--sky-mid: #b8d4e8;--sky-bottom: #ffe9c0;--ground-top: #5a6250;--ground-bottom: #3a3a2a;--moon-opacity: 0;--stars-opacity: .55;--road-opacity: .3;--city-text: #1a1f2e;--city-text-dim: #5a6070;--user-menu-bg: rgba(255, 255, 255, .7);--user-menu-border: #b0b8c0}.city[data-time=dusk]{--sky-top: #1a1545;--sky-mid: #c0506a;--sky-bottom: #f0a060;--ground-top: #2a1e3a;--ground-bottom: #1a0e2a;--moon-opacity: .6;--stars-opacity: .7;--road-opacity: .4;--city-text: #fff5e8;--city-text-dim: #c0a890;--user-menu-bg: rgba(40, 30, 60, .7);--user-menu-border: #4a3a5a}.city{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;background:var(--sky-top);color:var(--city-text);font-family:Space Grotesk,system-ui,sans-serif;transition:background 1.5s ease,color 1.5s ease}.city-sky{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,var(--sky-top) 0%,var(--sky-mid) 55%,var(--sky-bottom) 100%);transition:background 1.5s ease}.city-stars{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;opacity:var(--stars-opacity);transition:opacity 1.5s ease}.city-star{position:absolute;background:var(--city-star);border-radius:50%;animation:city-twinkle var(--d) ease-in-out infinite alternate;will-change:opacity}@keyframes city-twinkle{0%{opacity:var(--min)}to{opacity:1}}.city-sun{position:absolute;width:90px;height:90px;border-radius:50%;background:radial-gradient(circle at 38% 38%,#fff8d4,#ffd24d 50%,#f59e0b);box-shadow:0 0 40px 14px #ffc85080,0 0 90px 30px #ffc85038;pointer-events:none;transform:translate(-50%,-50%);transition:opacity 1.5s ease,left 30s linear,top 30s linear;z-index:2}.city-moon{position:absolute;width:68px;height:68px;background:radial-gradient(circle at 38% 38%,#fff9c4,var(--city-moon) 40%,#f59e0b 100%);border-radius:50%;box-shadow:0 0 30px 10px var(--city-moon-glow),0 0 70px 20px #fbbf241a;pointer-events:none;transform:translate(-50%,-50%);animation:city-moon-float 8s ease-in-out infinite;transition:opacity 1.5s ease,left 30s linear,top 30s linear;z-index:2}@keyframes city-moon-float{0%,to{transform:translate(-50%,-50%)}50%{transform:translate(-50%,calc(-50% - 8px))}}.city-buildings{position:absolute;bottom:18%;left:0;right:0;display:flex;align-items:flex-end;justify-content:center;gap:0;padding:0 2%;min-width:max-content}.building{position:relative;cursor:pointer;transition:transform .25s ease,filter .25s ease;flex-shrink:0;outline:none}.building:hover,.building:focus-visible{transform:scale(1.06);transform-origin:center bottom;filter:brightness(1.25);z-index:10}.building:hover .building__label,.building:focus-visible .building__label{opacity:1;transform:translate(-50%)}.building--deco{cursor:default;pointer-events:none}.building--deco:hover{transform:none;filter:none}.building__body{border-radius:3px 3px 0 0;position:relative}.building__windows{position:absolute;top:14%;left:12%;right:12%;bottom:8%;display:grid;gap:6px}.building__win{border-radius:2px;animation:city-win-blink var(--bd) ease-in-out infinite alternate;will-change:opacity}@keyframes city-win-blink{0%{opacity:.9}to{opacity:.25}}.building__label{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,6px);background:#0a0e1ae6;border:1px solid var(--accent);color:var(--accent);padding:4px 10px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.08em;white-space:nowrap;opacity:0;transition:opacity .2s ease,transform .2s ease;pointer-events:none;font-family:Space Mono,monospace}.city-ground{position:absolute;bottom:0;left:0;right:0;height:18%;background:linear-gradient(180deg,var(--ground-top) 0%,var(--ground-bottom) 100%);border-top:2px solid #2a3350;transition:background 1.5s ease}.city-ground:after{content:"";position:absolute;top:30%;left:0;right:0;height:2px;background:repeating-linear-gradient(90deg,var(--city-road) 0,var(--city-road) 30px,transparent 30px,transparent 60px);opacity:var(--road-opacity);animation:city-road-scroll 3s linear infinite;transition:opacity 1.5s ease}@keyframes city-road-scroll{0%{background-position:0 0}to{background-position:60px 0}}.city-hint{position:fixed;bottom:4%;left:50%;transform:translate(-50%);color:var(--city-text-dim);font-size:12px;letter-spacing:.1em;font-family:Space Mono,monospace;animation:city-pulse 2.5s ease-in-out infinite;white-space:nowrap;transition:color 1.5s ease;z-index:3;pointer-events:none}@keyframes city-pulse{0%,to{opacity:.4}50%{opacity:.9}}.city-user-menu{position:absolute;top:16px;right:18px;z-index:5;display:flex;align-items:center;gap:.6rem;padding:6px 10px 6px 14px;background:var(--user-menu-bg);border:1px solid var(--user-menu-border);border-radius:999px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background 1.5s ease,border-color 1.5s ease}.city-user-menu__name{color:var(--city-text);font-size:.85rem;font-weight:600;transition:color 1.5s ease}.module-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;background:#07091a8c;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);opacity:0;pointer-events:none;transform:translateY(20px);transition:opacity .5s ease,transform .5s ease;overflow:hidden}.module-panel--visible{opacity:1;pointer-events:all;transform:translateY(0)}.mod-bar{display:flex;align-items:center;gap:12px;padding:14px 20px;background:#07091a99;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--mod-accent, var(--city-border));border-bottom-color:color-mix(in srgb,var(--mod-accent, var(--city-border)) 15%,transparent);flex-shrink:0}.mod-back{font-size:11px;font-family:Space Mono,monospace;padding:4px 12px;border-radius:20px;border:1px solid rgba(255,255,255,.15);color:#ffffff80;background:#ffffff0d;cursor:pointer;text-decoration:none;transition:border-color .2s,color .2s;display:inline-block}.mod-back:hover,.mod-back:focus-visible{border-color:var(--mod-accent, var(--city-text-dim));color:var(--mod-accent, var(--city-text-dim));outline:none;text-decoration:none}.mod-dot{width:9px;height:9px;border-radius:50%;background:var(--mod-accent, var(--city-text));box-shadow:0 0 8px var(--mod-accent, transparent);flex-shrink:0}.mod-emoji{font-size:16px;line-height:1;flex-shrink:0}.mod-title{font-size:17px;font-weight:700;letter-spacing:-.02em;color:var(--mod-accent, var(--city-text))}.mod-count{margin-left:auto;font-size:11px;font-family:Space Mono,monospace;color:#ffffff4d}.mod-subtitle{margin-left:auto;font-size:11px;font-family:Space Mono,monospace;color:var(--city-text-dim)}.mod-body{flex:1;overflow-y:auto;padding:20px;background:#07091a73;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.mod-body::-webkit-scrollbar{width:4px}.mod-body::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--mod-accent, var(--city-text-dim)) 30%,transparent);border-radius:2px}.mod-body::-webkit-scrollbar-track{background:transparent}.module-panel .page__header{display:none}.module-panel .mod-body>*{max-width:960px;margin-left:auto;margin-right:auto}.tabs{display:flex;gap:6px;border-bottom:none;padding:0;margin-bottom:18px;overflow-x:auto}.tabs__tab{padding:5px 12px;font-family:Space Mono,monospace;font-size:11px;letter-spacing:.04em;color:#ffffff73;border:1px solid rgba(255,255,255,.08);background:#ffffff08;border-radius:20px;white-space:nowrap;text-decoration:none;transition:color .2s,border-color .2s,background .2s}.tabs__tab:hover{color:var(--mod-accent, var(--color-text));border-color:color-mix(in srgb,var(--mod-accent, var(--color-text)) 35%,transparent);text-decoration:none;background:color-mix(in srgb,var(--mod-accent, var(--color-text)) 8%,transparent)}.tabs__tab--active{color:#000;background:var(--mod-accent, var(--color-primary));border-color:var(--mod-accent, var(--color-primary));font-weight:700}.tabs__tab--active:hover{color:#000;background:var(--mod-accent, var(--color-primary));border-color:var(--mod-accent, var(--color-primary))}.task-add-row{display:flex;gap:10px;margin-bottom:18px}.task-add-input{flex:1;background:#ffffff0d;border:1px solid color-mix(in srgb,var(--mod-accent, var(--color-text)) 20%,transparent);color:#ffffffd9;padding:9px 14px;border-radius:8px;font-family:Space Grotesk,system-ui,sans-serif;font-size:13px;outline:none;transition:border-color .2s,background .2s}.task-add-input::placeholder{color:#ffffff40}.task-add-input:focus{border-color:var(--mod-accent, var(--color-primary));background:color-mix(in srgb,var(--mod-accent, var(--color-primary)) 6%,transparent)}.task-add-input:disabled{opacity:.5}.task-add-btn{background:var(--mod-accent, var(--color-primary));color:#000;border:none;border-radius:8px;padding:9px 16px;font-weight:700;font-size:13px;cursor:pointer;font-family:Space Grotesk,system-ui,sans-serif;transition:opacity .2s;white-space:nowrap}.task-add-btn:hover:not(:disabled){opacity:.85}.task-add-btn:disabled{opacity:.5;cursor:not-allowed}.task-add-error{margin:6px 2px 0;color:#f43f5e;font-size:12px}.module-panel .list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;background:transparent}.task-item{display:flex;align-items:center;gap:12px;padding:11px 14px;background:#ffffff0a;border:1px solid rgba(255,255,255,.07);border-radius:9px;transition:border-color .2s,background .2s;cursor:pointer}.task-item:hover{border-color:color-mix(in srgb,var(--mod-accent, var(--color-text)) 30%,transparent);background:color-mix(in srgb,var(--mod-accent, var(--color-text)) 4%,transparent)}.task-item--done{background:color-mix(in srgb,var(--color-status-done) 8%,transparent);border-color:color-mix(in srgb,var(--color-status-done) 22%,transparent);box-shadow:inset 4px 0 0 var(--color-status-done);opacity:.9}.task-item:not(.task-item--done):not(:disabled){cursor:grab}.task-item--dragging{cursor:grabbing!important;opacity:.6;touch-action:none;position:relative;z-index:10;border-color:color-mix(in srgb,var(--mod-accent, var(--color-text)) 50%,transparent);background:color-mix(in srgb,var(--mod-accent, var(--color-text)) 8%,transparent)}.task-chk{width:18px;height:18px;border-radius:5px;border:1.5px solid var(--mod-accent, var(--color-primary));flex-shrink:0;cursor:pointer;display:grid;place-items:center;transition:background .15s,border-color .15s;background:transparent;padding:0;color:#000}.task-chk:hover:not(:disabled){background:color-mix(in srgb,var(--mod-accent, var(--color-primary)) 15%,transparent)}.task-chk:disabled{cursor:not-allowed;opacity:.5}.task-chk--done{background:var(--mod-accent, var(--color-primary));border-color:var(--mod-accent, var(--color-primary))}.task-chk--done:after{content:"✓";font-size:11px;color:#000;font-weight:900;line-height:1}.task-item__main{flex:1;min-width:0}.task-item:focus-visible .task-text{text-decoration-style:underline}.task-text{display:block;font-size:13px;color:#ffffffbf;word-break:break-word;line-height:1.35}.task-text--done{text-decoration:line-through;color:#ffffff40}.task-description{margin:4px 0 0;color:#fff9;font-size:12.5px;line-height:1.5;word-break:break-word;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.task-description p{margin:0}.task-description ul,.task-description ol{margin:0;padding-left:1.4em}.task-description ul[data-type=taskList]{list-style:none;padding-left:0}.task-description ul[data-type=taskList]>li[data-type=taskItem]{display:flex!important;align-items:center!important;flex-direction:row!important;gap:.45em;margin:.05em 0}.task-description ul[data-type=taskList]>li[data-type=taskItem]>label{flex-shrink:0;display:inline-flex!important;align-items:center!important;margin:0;padding:0;line-height:1}.task-description ul[data-type=taskList]>li[data-type=taskItem] input[type=checkbox]{width:14px;height:14px;margin:0;accent-color:var(--mod-accent, var(--color-primary));pointer-events:none;cursor:default;vertical-align:middle}.task-description ul[data-type=taskList]>li[data-type=taskItem]>div{flex:1 1 0%;min-width:0;line-height:1.5em;display:block}.task-description ul[data-type=taskList]>li[data-type=taskItem]>div>p{margin:0!important;padding:0;line-height:1.5em}.task-description ul[data-type=taskList]>li[data-type=taskItem][data-checked=true]>div{color:var(--color-text-muted, rgba(255, 255, 255, .4));text-decoration:line-through}.task-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px;font-family:Space Mono,monospace;font-size:10px;color:#ffffff4d;letter-spacing:.04em}.task-meta__item{white-space:nowrap}.task-tag{font-size:10px;font-family:Space Mono,monospace;padding:2px 8px;border-radius:10px;border:1px solid;flex-shrink:0;text-transform:lowercase;letter-spacing:.04em}.task-tag--urgent{color:#f43f5e;border-color:#f43f5e4d;background:#f43f5e14}.task-tag--done{color:#10b981;border-color:#10b9814d;background:#10b98114}.task-tag--progress{color:var(--mod-accent, var(--color-primary));border-color:color-mix(in srgb,var(--mod-accent, var(--color-primary)) 30%,transparent);background:color-mix(in srgb,var(--mod-accent, var(--color-primary)) 8%,transparent)}.task-tag--goal{color:#a78bfa;border-color:#a78bfa59;background:#a78bfa1a}.task-item__tags{display:flex;align-items:center;gap:6px;flex-shrink:0}.task-status{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-family:Space Mono,monospace;padding:2px 8px;border-radius:10px;border:1px solid;flex-shrink:0;text-transform:lowercase;letter-spacing:.04em}.task-status--pending{color:var(--color-status-pending);border-color:color-mix(in srgb,var(--color-status-pending) 35%,transparent);background:color-mix(in srgb,var(--color-status-pending) 8%,transparent)}.task-status--in_progress{color:var(--color-status-in_progress);border-color:color-mix(in srgb,var(--color-status-in_progress) 35%,transparent);background:color-mix(in srgb,var(--color-status-in_progress) 8%,transparent)}.task-status--done{color:var(--color-status-done);border-color:color-mix(in srgb,var(--color-status-done) 35%,transparent);background:color-mix(in srgb,var(--color-status-done) 8%,transparent)}.task-actions{display:flex;gap:4px;flex-shrink:0;opacity:0;transition:opacity .15s}.task-item:hover .task-actions,.task-item:focus-within .task-actions{opacity:1}.task-icon-btn{width:28px;height:28px;display:grid;place-items:center;background:transparent;border:1px solid transparent;border-radius:6px;color:#ffffff73;cursor:pointer;padding:0;transition:color .15s,background .15s,border-color .15s}.task-icon-btn svg{display:block}.task-icon-btn:hover:not(:disabled){color:var(--mod-accent, var(--color-text));background:color-mix(in srgb,var(--mod-accent, var(--color-text)) 10%,transparent);border-color:color-mix(in srgb,var(--mod-accent, var(--color-text)) 22%,transparent)}.task-icon-btn--danger:hover:not(:disabled){color:#f43f5e;background:#f43f5e1a;border-color:#f43f5e40}.task-icon-btn:focus-visible{outline:2px solid var(--mod-accent, var(--color-primary));outline-offset:1px}.task-icon-btn:disabled{opacity:.4;cursor:not-allowed}.task-del{background:none;border:none;color:#fff3;cursor:pointer;font-size:16px;line-height:1;padding:2px 5px;border-radius:4px;transition:color .2s,background .2s;flex-shrink:0}.task-del:hover{color:#f43f5e;background:#f43f5e14}@media (max-width: 640px){.task-item{flex-wrap:wrap;padding:9px 12px;column-gap:10px;row-gap:6px}.task-item__main{flex:1 1 calc(100% - 28px);min-width:0}.task-item__tags{margin-left:auto}.task-description{display:none}.task-actions{opacity:1}}@media (max-width: 380px){.task-text{font-size:12.5px}.task-status,.task-tag--urgent{font-size:9px;padding:1px 6px}.task-meta{font-size:9.5px}}.task-list--skeleton{gap:8px}.task-item--skeleton{cursor:default;pointer-events:none}.task-item--skeleton:hover{background:#ffffff0a;border-color:#ffffff12}.task-chk--skeleton{width:18px;height:18px;border-radius:5px;border:none}.skeleton-line--title{width:65%;height:13px;margin-bottom:8px}.skeleton-line--date{width:35%;height:10px;opacity:.7}.skeleton-pill{width:80px;height:16px;border-radius:10px}.task-actions--skeleton{opacity:1}.skeleton-icon-btn{width:28px;height:28px;border-radius:6px}.task-empty{text-align:center;padding:48px 24px;color:#ffffff40;font-size:13px;background:transparent;border:none}.task-empty__icon{font-size:36px;margin-bottom:10px;color:#ffffff4d}.module-panel .form-error{color:#f43f5e;font-size:12px;text-align:center;padding:16px;background:transparent;border:1px dashed rgba(244,63,94,.3);border-radius:8px}.habit-input-row{display:flex;gap:10px;margin-bottom:20px}.habit-input-row input{flex:1;background:var(--city-surface);border:1px solid var(--city-border);color:var(--city-text);padding:10px 14px;border-radius:8px;font-family:Space Grotesk,sans-serif;font-size:14px;outline:none;transition:border-color .2s}.habit-input-row input:focus{border-color:var(--city-accent-habits)}.habit-add{padding:10px 18px;border-radius:8px;border:none;background:var(--city-accent-habits);color:#000;font-weight:700;font-family:Space Grotesk,sans-serif;cursor:pointer;transition:opacity .2s}.habit-add:hover{opacity:.85}.habit-list{display:flex;flex-direction:column;gap:10px}.habit-row{display:flex;align-items:center;gap:14px;background:var(--city-surface);border:1px solid var(--city-border);border-radius:10px;padding:14px 16px;transition:border-color .2s}.habit-row:hover{border-color:var(--city-accent-habits)}.habit-emoji{font-size:22px}.habit-name{flex:1;font-weight:600;font-size:14px;color:var(--city-text)}.habit-days{display:flex;gap:6px}.habit-day{width:28px;height:28px;border-radius:50%;background:var(--city-surface-2);border:1.5px solid var(--city-border);cursor:pointer;font-size:10px;font-family:Space Mono,monospace;color:var(--city-text-dim);display:grid;place-items:center;transition:all .2s;padding:0}.habit-day--done{background:var(--city-accent-habits);border-color:var(--city-accent-habits);color:#000;font-weight:700}.habit-del{background:none;border:none;color:var(--city-text-dim);cursor:pointer;font-size:18px;line-height:1;padding:4px 8px;border-radius:4px;transition:color .2s}.habit-del:hover{color:var(--color-danger, #ef4444)}.habit-empty{text-align:center;padding:48px 24px;color:var(--city-text-dim)}.habit-empty .big{font-size:40px;margin-bottom:12px}@media (max-width: 768px){.city-buildings{overflow-x:auto;justify-content:flex-start;padding-left:5%}.city-hint{font-size:10px}.city-user-menu{top:10px;right:10px;padding:4px 8px 4px 10px}.city-user-menu__name{font-size:.75rem}.mod-bar{padding:14px 16px}.mod-body{padding:16px}.mod-title{font-size:16px}}.goals-preview{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.goal-badge{display:inline-flex;align-items:center;max-width:240px;padding:.3rem .75rem;border-radius:999px;background:#f59e0b26;border:1px solid var(--color-warning);color:var(--color-warning);font-size:.82rem;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.goal-badge:hover{background:#f59e0b40}.tasks-toolbar{display:flex;flex-direction:column;gap:.5rem}.tasks-toolbar__row{display:flex;align-items:flex-end;gap:.75rem;flex-wrap:wrap}.tasks-toolbar__row .form-row{flex:0 1 280px;min-width:200px}.error-boundary{flex:1;display:grid;place-items:center;padding:2rem 1rem;min-height:100vh;background:var(--color-bg)}.error-boundary__inner{max-width:480px;width:100%;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;text-align:center;box-shadow:var(--shadow-lg)}.error-boundary__icon{font-size:2.5rem;margin-bottom:.5rem}.error-boundary__title{margin:0 0 .5rem;font-size:1.3rem;color:var(--color-text)}.error-boundary__message{margin:0 0 1rem;color:var(--color-text-muted);line-height:1.5}.error-boundary__detail{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.75rem;margin:0 0 1.25rem;text-align:left;font-size:.8rem;color:var(--color-danger);font-family:Space Mono,monospace;white-space:pre-wrap;word-break:break-word;max-height:160px;overflow-y:auto}.error-boundary__actions{display:flex;justify-content:center}.page--calendar{display:flex;flex-direction:column;gap:1rem}.calendar-layout{display:grid;grid-template-columns:1fr 320px;gap:1rem;align-items:start}@media (max-width: 768px){.calendar-layout{grid-template-columns:1fr}}.calendar-layout__grid{min-width:0}.calendar-loading{margin:.5rem 0 0;font-size:.85rem;color:var(--color-text-muted)}.calendar-grid{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem}.calendar-grid__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.75rem}.calendar-grid__title{margin:0;font-size:1.1rem;font-weight:600;color:var(--color-text);text-transform:capitalize}.calendar-grid__nav{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.calendar-grid__nav:hover{background:var(--color-surface-2);border-color:var(--color-text-muted)}.calendar-grid__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}.calendar-grid__weekday{text-align:center;font-size:.72rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;padding:.25rem 0}.calendar-grid__cells{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(78px,auto);gap:4px}.calendar-cell{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:4px;padding:6px 6px 8px;background:var(--color-surface-2);border:1px solid transparent;border-radius:var(--radius-sm);color:var(--color-text);font:inherit;text-align:left;cursor:pointer;position:relative;transition:background-color .12s ease,border-color .12s ease;min-width:0}.calendar-cell:hover{background:color-mix(in srgb,var(--color-primary) 8%,var(--color-surface-2));border-color:var(--color-border)}.calendar-cell:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.calendar-cell--empty{background:transparent;cursor:default;border:1px dashed var(--color-border);opacity:.4}.calendar-cell--outside{opacity:.45}.calendar-cell--today{border-color:var(--color-primary)}.calendar-cell--today .calendar-cell__day{color:var(--color-primary);font-weight:700}.calendar-cell--selected{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 18%,var(--color-surface-2))}.calendar-cell__day{font-size:.78rem;font-weight:600;color:var(--color-text);line-height:1}.calendar-cell__today-dot{position:absolute;top:6px;right:6px;width:6px;height:6px;border-radius:50%;background:var(--color-primary)}.calendar-cell__tasks{display:flex;flex-direction:column;gap:2px;min-width:0}.calendar-cell__chip{display:block;font-size:.7rem;line-height:1.25;padding:1px 4px;border-radius:3px;background:var(--color-surface);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-cell__chip--urgent{background:color-mix(in srgb,var(--color-danger) 25%,var(--color-surface));color:var(--color-text);font-weight:600}.calendar-cell__chip--done{text-decoration:line-through;opacity:.6}.calendar-cell__more{font-size:.68rem;color:var(--color-text-muted);padding:0 4px}.calendar-cell__urgent-badge{margin-top:2px;font-size:.65rem;color:var(--color-danger);font-weight:700;text-transform:uppercase;letter-spacing:.05em}.day-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.85rem;display:flex;flex-direction:column;gap:.75rem;position:sticky;top:1rem;max-height:calc(100vh - 2rem);overflow:hidden}.day-panel__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.day-panel__title{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text);text-transform:capitalize}.day-panel__close{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer}.day-panel__close:hover{background:var(--color-surface-2)}.day-panel__body{overflow-y:auto;flex:1 1 auto;min-height:0}.day-panel__empty{margin:0;font-size:.85rem;color:var(--color-text-muted);text-align:center;padding:1rem 0}.day-task-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.day-task{margin:0}.day-task__open{display:flex;align-items:center;gap:.5rem;width:100%;padding:.45rem .55rem;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);text-align:left;cursor:pointer;font:inherit;transition:background-color .12s ease}.day-task__open:hover{background:var(--color-surface-2)}.day-task__open:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.day-task__status{font-size:.85rem;flex-shrink:0}.day-task__status--pending{color:var(--color-text-muted)}.day-task__status--done{color:var(--color-success)}.day-task__title{flex:1 1 auto;font-size:.85rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-task--done .day-task__title{text-decoration:line-through;opacity:.6}.day-task__badge{font-size:.65rem;padding:2px 6px;border-radius:999px;background:color-mix(in srgb,var(--color-danger) 25%,var(--color-surface));color:var(--color-text);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
