:root{--bg: #f6f5f1;--surface: #ffffff;--surface-alt: #f1f0ea;--border: #e7e5df;--border-strong:#d6d3ca;--text: #18181b;--text-muted: #6b6b6b;--accent: #f5b400;--accent-hover: #e0a200;--accent-strong:#8a6800;--accent-soft: rgba(245, 180, 0, .15);--on-accent: #1a1a1a;--danger: #b91c1c;--danger-hover: #991b1b;--success: #16a34a;--shadow-sm: 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 14px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color-scheme:light;color:var(--text);background-color:var(--bg);line-height:1.5;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:var(--accent-strong);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;padding:.5rem .95rem;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;transition:background .12s,border-color .12s,color .12s}button:hover{background:var(--surface-alt)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}button.danger{background:transparent;border-color:transparent;color:var(--danger)}button.danger:hover:not(:disabled){background:#b91c1c14;color:var(--danger-hover)}input:not([type]),input[type=text],input[type=email],input[type=password],input[type=search],textarea{font:inherit;width:100%;padding:.55rem .75rem;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #f5b40059}select{font:inherit;padding:.55rem .75rem;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer}select:disabled{opacity:.55;cursor:not-allowed}input[type=checkbox]{flex:0 0 auto;width:1.05rem;height:1.05rem;accent-color:var(--accent);cursor:pointer;margin:0}textarea{resize:vertical;min-height:6rem}.app--auth{max-width:760px;margin:0 auto;padding:1.5rem 1.5rem 4rem}.app--shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{border-right:1px solid var(--border);background:var(--surface);padding:1.5rem 1rem;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column}.sidebar-title{margin:0 0 1rem;font-size:1.15rem;font-weight:600;letter-spacing:-.01em;padding:0}.sidebar-title a{color:inherit;text-decoration:none;display:block}.sidebar-logo{display:block;width:100%;height:auto;max-height:120px;object-fit:contain;object-position:left center}.sidebar-nav{display:flex;flex-direction:column;gap:.125rem}.sidebar-nav a{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:6px;color:var(--text);font-size:.9375rem;text-decoration:none}.sidebar-nav a:hover{background:var(--surface-alt)}.sidebar-nav a.active{background:var(--accent);color:var(--on-accent);font-weight:600}.sidebar-icon{font-size:.95rem;line-height:1;flex:0 0 auto;color:currentColor}.sidebar-footer{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--border);display:flex;align-items:center;gap:.5rem}.sidebar-profile{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;border-radius:6px;color:var(--text);text-decoration:none}.sidebar-profile:hover{background:var(--surface-alt);text-decoration:none}.sidebar-profile-name{font-size:.8125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-logout{padding:.375rem .5rem;border:1px solid transparent;background:transparent;color:var(--text-muted);border-radius:6px;display:flex;align-items:center;justify-content:center}.sidebar-logout:hover{background:var(--surface-alt);color:var(--text)}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;overflow:hidden;flex:0 0 auto;color:#fff;font-weight:600;-webkit-user-select:none;user-select:none;background:var(--surface-alt)}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.avatar--sm{width:28px;height:28px;font-size:.75rem}.avatar--md{width:36px;height:36px;font-size:.875rem}.avatar--lg{width:96px;height:96px;font-size:2rem}.main{display:flex;flex-direction:column;min-width:0}.main-header{display:flex;justify-content:space-between;align-items:center;padding:.875rem 1.5rem;border-bottom:1px solid var(--border);background:var(--surface)}.main-header .user{font-size:.875rem;color:var(--text-muted);display:flex;gap:.75rem;align-items:center}.main-header__burger{display:none;padding:.375rem .5rem;border:1px solid transparent;background:transparent;color:var(--text);border-radius:6px;align-items:center;justify-content:center}.main-header__burger:hover{background:var(--surface-alt)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;z-index:40;animation:drawer-backdrop-in .12s ease-out}@keyframes drawer-backdrop-in{0%{opacity:0}to{opacity:1}}.main-body{max-width:1080px;width:100%;margin:0 auto;padding:1.75rem 1.5rem 4rem}.auth-card{max-width:380px;margin:5rem auto;padding:2rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-md)}.auth-logo{display:block;width:100%;max-width:280px;height:auto;margin:0 auto 1rem;object-fit:contain}.auth-card h1{margin:0 0 1.5rem;font-size:1.25rem;font-weight:600;text-align:center}.auth-card form{display:flex;flex-direction:column;gap:.75rem}.auth-card .error{color:var(--danger);font-size:.875rem;padding:.5rem .75rem;background:#b91c1c0f;border-radius:6px}.auth-card .link{margin-top:1.25rem;font-size:.875rem;color:var(--text-muted)}.new-task{display:flex;gap:.5rem;margin-bottom:.75rem;flex-wrap:wrap}.new-task input{flex:1;min-width:0}.new-task-category{flex:0 0 auto;max-width:12rem}.tasks-toolbar{margin-bottom:1.25rem}.task-add-category{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .6rem;font-size:.8125rem;color:var(--text-muted)}.task-group{margin-bottom:1.25rem}.task-group-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.task-group-toggle{display:flex;align-items:center;gap:.45rem;flex:1;min-width:0;padding:.25rem 0;background:none;border:none;box-shadow:none;cursor:pointer;text-align:left}.task-group-toggle:hover{background:none}.task-group-chevron{color:var(--text-muted);transition:transform .12s}.task-group-chevron--collapsed{transform:rotate(-90deg)}.task-group-dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 6px #f5b40080}.task-group-name{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.task-group-count{font-size:.7rem;font-weight:600;color:var(--text-muted);background:var(--surface-alt);border:1px solid var(--border);border-radius:999px;padding:.05rem .45rem}.task-group-actions{display:flex;gap:.15rem;flex:0 0 auto}.task-group-actions button{display:inline-flex;align-items:center;padding:.3rem;border-color:transparent;background:transparent;color:var(--text-muted)}.task-group-actions button:hover{background:var(--surface-alt);color:var(--text)}.task-group-actions button.danger:hover{color:var(--danger-hover)}.task-group-empty{font-size:.8125rem;color:var(--text-muted);padding:.25rem .25rem .5rem}.task-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.875rem}.task-card{display:flex;flex-direction:column;gap:.5rem;padding:.875rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm);transition:box-shadow .12s,border-color .12s,transform .12s}.task-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-1px)}.task-card.completed{background:var(--surface-alt)}.task-card__top{display:flex;align-items:flex-start;gap:.625rem}.task-card__top input[type=checkbox]{margin-top:.15rem}.task-card__title{flex:1;min-width:0;color:var(--text);font-weight:500;line-height:1.35;word-break:break-word}.task-card__title:hover{color:var(--accent-strong);text-decoration:none}.task-card.completed .task-card__title{text-decoration:line-through;color:var(--text-muted)}.task-card__delete{flex:0 0 auto;display:inline-flex;align-items:center;padding:.2rem;border-color:transparent;background:transparent;color:var(--text-muted);opacity:0;transition:opacity .12s,color .12s,background .12s}.task-card:hover .task-card__delete,.task-card__delete:focus-visible{opacity:1}.task-card__delete:hover{background:#b91c1c14;color:var(--danger-hover)}.task-card__body{margin:0;font-size:.8125rem;color:var(--text-muted);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.task-card__meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:auto}.task-card__time{font-size:.7rem;color:var(--text-muted);white-space:nowrap;cursor:default;margin-left:auto}.tasks-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.375rem}.tasks-list li{display:flex;align-items:center;gap:.75rem;padding:.625rem .875rem;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-sm);transition:border-color .12s,box-shadow .12s}.tasks-list li:hover{border-color:var(--border-strong)}.tasks-list li.completed{background:var(--surface-alt)}.tasks-list li.completed .title{text-decoration:line-through;color:var(--text-muted)}.tasks-list .title{flex:1;min-width:0;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tasks-list .title:hover{color:var(--accent-strong);text-decoration:none}.tasks-list .row-time{font-size:.75rem;color:var(--text-muted);white-space:nowrap;cursor:default}.task-editor{display:flex;flex-direction:column;gap:1rem;max-width:720px;margin-inline:auto;width:100%}.task-editor label{font-size:.8125rem;color:var(--text-muted);font-weight:500;display:block;margin-bottom:.25rem}.task-editor .timestamps{font-size:.75rem;color:var(--text-muted);margin-top:-.5rem}.task-editor .timestamps span{cursor:default}.task-editor .actions{display:flex;gap:.5rem;justify-content:space-between;align-items:center;padding-top:.5rem}.task-editor .checkbox{display:flex;align-items:center;gap:.5rem}.task-editor .checkbox label{margin:0;font-size:.875rem;color:var(--text)}.attachments{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border)}.attachments h2{font-size:.875rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 1rem}.drop-zone{border:2px dashed var(--border-strong);border-radius:8px;padding:1.5rem;text-align:center;color:var(--text-muted);background:var(--surface-alt);cursor:pointer;margin-bottom:1rem;transition:border-color .15s,background .15s,color .15s}.drop-zone:hover{border-color:var(--accent);color:var(--text)}.drop-zone.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.attachment-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.attachment-list li{display:grid;grid-template-columns:1fr auto;grid-template-areas:"main remove" "description remove";align-items:center;column-gap:.75rem;row-gap:.375rem;padding:.625rem .875rem;background:var(--surface);border:1px solid var(--border);border-radius:6px}.attachment-list .attachment-main{grid-area:main;display:flex;align-items:center;gap:.75rem;min-width:0}.attachment-list .attachment-description{grid-area:description;font-size:.8125rem;padding:.35rem .5rem}.attachment-list .danger{grid-area:remove}.attachment-list a{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.attachment-list a:hover{color:var(--accent-strong)}.attachment-list .meta{font-size:.75rem;color:var(--text-muted);white-space:nowrap}.empty{color:var(--text-muted);text-align:center;padding:2rem 0;font-size:.875rem}.search-button{display:inline-flex;align-items:center;justify-content:space-between;gap:.75rem;min-width:240px;padding:.5rem .6rem .5rem .875rem;font-size:.8125rem;color:var(--text-muted);background:var(--surface-alt);border:1px solid var(--border);border-radius:999px}.search-button:hover{background:var(--surface);border-color:var(--border-strong)}.search-button kbd{font-family:inherit;font-size:.6875rem;background:var(--surface-alt);border:1px solid var(--border);border-radius:4px;padding:1px 6px;color:var(--text-muted)}.search-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a59;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;display:flex;align-items:flex-start;justify-content:center;padding-top:10vh}.search-modal{width:100%;max-width:640px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 20px 50px #0000002e;display:flex;flex-direction:column;overflow:hidden}.search-modal input[type=search]{border:none;border-bottom:1px solid var(--border);border-radius:0;padding:1rem 1.25rem;font-size:1rem;box-shadow:none!important}.search-modal input[type=search]:focus{outline:none;border-color:var(--border);border-bottom-color:var(--accent)}.search-list{max-height:60vh;overflow-y:auto;scrollbar-width:thin}.search-empty{padding:2rem;text-align:center;color:var(--text-muted);font-size:.875rem}.search-row{cursor:pointer;border-bottom:1px solid var(--border);transition:background .08s}.search-row.active{background:var(--accent-soft)}.search-row:last-child{border-bottom:none}.search-row-inner{padding:.625rem 1.25rem;display:flex;flex-direction:column;gap:.25rem;height:100%;justify-content:center}.search-row-title{display:flex;align-items:baseline;gap:.4rem;font-size:.9375rem}.search-row-kind{font-size:.875rem}.search-row-task{font-weight:500;color:var(--text)}.search-row-attachment{color:var(--text-muted);font-size:.8125rem}.search-row-snippet{font-size:.8125rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-row-snippet strong{color:var(--text);background:#facc1559;font-weight:600;padding:0 1px;border-radius:2px}.search-footer{display:flex;gap:1.25rem;padding:.5rem 1.25rem;border-top:1px solid var(--border);background:var(--surface-alt);font-size:.75rem;color:var(--text-muted)}.search-footer kbd{font-family:inherit;font-size:.6875rem;background:var(--surface);border:1px solid var(--border-strong);border-radius:3px;padding:0 5px;margin-right:4px}.paste-chooser-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a59;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:70;display:flex;align-items:center;justify-content:center}.paste-chooser{background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 20px 50px #0000002e;padding:1.25rem 1.5rem;min-width:320px}.paste-chooser h3{margin:0 0 1rem;font-size:1rem;font-weight:600}.paste-chooser-actions{display:flex;gap:.5rem;justify-content:flex-end}.paste-toast{position:fixed;bottom:1.5rem;right:1.5rem;z-index:60;background:var(--text);color:var(--surface);padding:.625rem 1rem;border-radius:8px;font-size:.8125rem;box-shadow:0 8px 24px #0003;animation:paste-toast-in .15s ease-out}@keyframes paste-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.profile{display:flex;flex-direction:column;gap:1.5rem;max-width:720px;margin-inline:auto;width:100%}.profile-header-card{display:flex;align-items:center;gap:1.25rem;padding:1.25rem 1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-sm)}.profile-header-meta{display:flex;flex-direction:column;gap:.25rem;min-width:0}.profile-header-name{font-size:1.25rem;font-weight:600}.profile-header-email{color:var(--text-muted);font-size:.9375rem}.profile-header-since{color:var(--text-muted);font-size:.8125rem}.profile-section{padding:1.25rem 1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-sm)}.profile-section h2{margin:0 0 .875rem;font-size:.875rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.profile-form{display:flex;gap:.5rem;align-items:center}.profile-form input{flex:1;min-width:0}.profile-form-stacked{display:flex;flex-direction:column;gap:.625rem;max-width:360px}.profile-checkbox{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem}.profile-field{display:grid;grid-template-columns:7rem 1fr;align-items:center;gap:.625rem;font-size:.875rem;color:var(--text-muted)}.profile-field input,.profile-field select{width:100%}.profile-field input:disabled,.profile-field select:disabled{opacity:.55;cursor:not-allowed}.profile-avatar-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.profile-avatar-row input[type=file]{flex:1;min-width:220px}.profile-hint{margin:.5rem 0 0;font-size:.8125rem;color:var(--text-muted)}.profile-ok{margin-top:.75rem;padding:.5rem .75rem;font-size:.875rem;background:#16a34a14;color:var(--success);border-radius:6px}.profile-err{margin-top:.75rem;padding:.5rem .75rem;font-size:.875rem;background:#b91c1c0f;color:var(--danger);border-radius:6px}.task-due-chip{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--text-muted);background:var(--surface-alt);padding:.125rem .4rem;border-radius:999px;white-space:nowrap;flex:0 0 auto}.task-due-chip__icon{flex:0 0 auto}.task-due-chip__label{line-height:1.1}.task-due-chip--overdue{color:var(--danger);background:#b91c1c14}.due-picker-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.due-picker-row input[type=date],.due-picker-row input[type=time]{flex:0 1 auto;width:auto;font:inherit;padding:.5rem .625rem;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text)}.due-picker-row input[type=time]:disabled{background:var(--surface-alt);color:var(--text-muted);cursor:not-allowed}.due-quick-buttons{display:flex;gap:.375rem;margin-top:.5rem;flex-wrap:wrap}.due-quick-buttons button{padding:.25rem .625rem;font-size:.8125rem}.calendar-page{display:flex;flex-direction:column;gap:1rem;max-width:960px;margin-inline:auto;width:100%}.calendar-view-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;padding:2px;background:var(--surface-alt);width:fit-content;gap:2px}.calendar-view-toggle button{padding:.3rem .875rem;font-size:.8125rem;border:1px solid transparent;background:transparent;border-radius:6px;color:var(--text-muted)}.calendar-view-toggle button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm);border-color:var(--border)}.calendar-toolbar{display:flex;align-items:center;gap:.5rem}.calendar-toolbar>button{padding:.375rem .5rem;border-radius:6px;display:inline-flex;align-items:center;justify-content:center}.calendar-month-label{font-size:1rem;font-weight:600;min-width:10ch}.calendar-today-btn{margin-left:auto;font-size:.8125rem;padding:.3rem .75rem}.calendar-grid{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--border);background:var(--surface-alt)}.calendar-weekday{padding:.5rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);text-align:left}.calendar-cells{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(96px,1fr)}.calendar-cell{display:flex;flex-direction:column;gap:.25rem;padding:.4rem .5rem .5rem;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface);text-align:left;border-radius:0;border-top:none;border-left:none;cursor:pointer;min-height:96px;align-items:stretch;justify-content:flex-start}.calendar-cell:hover{background:var(--surface-alt)}.calendar-cell:nth-child(7n){border-right:none}.calendar-cell:nth-last-child(-n+7){border-bottom:none}.calendar-cell--other-month{background:var(--surface-alt);color:var(--text-muted)}.calendar-cell--other-month .calendar-cell-day{color:var(--text-muted)}.calendar-cell--today .calendar-cell-day{background:var(--accent);color:var(--on-accent);border-radius:999px;width:1.5em;height:1.5em;display:inline-flex;align-items:center;justify-content:center;font-weight:600}.calendar-cell--selected{box-shadow:inset 0 0 0 2px var(--accent)}.calendar-cell-day{font-size:.8125rem;font-weight:500}.calendar-cell-tasks{display:flex;flex-direction:column;gap:2px;font-size:.6875rem;line-height:1.25;overflow:hidden}.calendar-cell-task{background:var(--accent-soft);color:var(--accent-strong);padding:1px 4px;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-cell-task--overdue{background:#b91c1c1a;color:var(--danger)}.calendar-cell-more{color:var(--text-muted);font-size:.6875rem;padding:0 4px}.calendar-day-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem 1.25rem}.calendar-day-panel__heading{margin:0 0 .75rem;font-size:.9375rem;font-weight:600}.calendar-upcoming{display:flex;flex-direction:column;gap:1.25rem}.calendar-upcoming-group{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem 1.25rem}.calendar-upcoming-heading{margin:0 0 .75rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.calendar-upcoming-heading--overdue{color:var(--danger)}.calendar-day-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.375rem}.calendar-day-list li{display:flex;align-items:center;gap:.625rem;padding:.5rem .625rem;background:var(--surface);border:1px solid var(--border);border-radius:6px}.calendar-day-list li.completed{background:var(--surface-alt)}.calendar-day-list li.completed .title{text-decoration:line-through;color:var(--text-muted)}.calendar-day-list .title{flex:1;min-width:0;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-day-list .title:hover{color:var(--accent-strong);text-decoration:none}.calendar-row-icon{color:var(--text-muted);flex:0 0 auto}.calendar-row-icon--overdue{color:var(--danger)}.calendar-row-time{font-size:.75rem;color:var(--text-muted);white-space:nowrap}.calendar-row-time--overdue{color:var(--danger)}.dashboard-page{max-width:960px;margin:0 auto;padding:.5rem 0 2rem}.dashboard-greeting{margin-bottom:1.5rem}.dashboard-greeting h1{margin:0;font-size:1.5rem;font-weight:600;letter-spacing:-.01em}.dashboard-greeting__date{margin:.25rem 0 0;color:var(--text-muted);font-size:.9rem}.dashboard-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.875rem;margin-bottom:1rem}.dashboard-stat-card{display:flex;flex-direction:column;gap:.25rem;padding:1rem 1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-sm)}.dashboard-stat-card .label{font-size:.8rem;color:var(--text-muted);letter-spacing:.01em}.dashboard-stat-card .value{font-size:2rem;font-weight:600;line-height:1.1}.dashboard-stat-card--overdue .value{color:var(--danger)}.dashboard-stat-card--open .value{color:var(--accent-strong)}.dashboard-stat-card--done .value{color:var(--text-muted)}.dashboard-stat-card__icon{color:var(--text-muted);line-height:0}.dashboard-stat-card--hero{background:var(--accent);border-color:var(--accent)}.dashboard-stat-card--hero .label,.dashboard-stat-card--hero .value,.dashboard-stat-card--hero .dashboard-stat-card__icon{color:var(--on-accent)}.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.875rem;grid-template-areas:"activity activity weather" "upcoming upcoming donut" "news     news     bycat"}.dashboard-activity{grid-area:activity}.dashboard-weather{grid-area:weather}.dashboard-upcoming{grid-area:upcoming}.dashboard-donut{grid-area:donut}.dashboard-news{grid-area:news}.dashboard-bycat{grid-area:bycat}.dashboard-card{display:flex;flex-direction:column;gap:.75rem;padding:1.1rem 1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm);min-width:0}.dashboard-card__header{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.dashboard-card__header h2{margin:0;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);display:inline-flex;align-items:center;gap:.4rem}.dashboard-card__sub{font-size:.7rem;color:var(--text-muted)}.dashboard-empty{color:var(--text-muted);font-size:.85rem;padding:.5rem 0}.dashboard-weather__change,.dashboard-weather__link{font-size:.72rem;padding:.1rem .35rem;border-color:transparent;background:transparent;color:var(--text-muted)}.dashboard-weather__change:hover,.dashboard-weather__link:hover{background:var(--surface-alt);color:var(--text)}.dashboard-weather__main{display:flex;align-items:center;gap:.75rem}.dashboard-weather__icon{color:var(--accent-strong);line-height:0}.dashboard-weather__temp{font-size:2.5rem;font-weight:600;line-height:1}.dashboard-weather__meta{display:flex;flex-direction:column;gap:.1rem}.dashboard-weather__cond{font-size:.9rem}.dashboard-weather__hilo,.dashboard-weather__loc{font-size:.78rem;color:var(--text-muted)}.dashboard-weather__msg{color:var(--text-muted);font-size:.85rem}.dashboard-weather__city{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.dashboard-weather__city input{flex:1;min-width:0}.dashboard-weather__err{font-size:.75rem;color:var(--danger);flex-basis:100%}.dashboard-donut__wrap{display:flex;align-items:center;gap:1rem}.dashboard-donut__svg{width:112px;height:112px;flex:0 0 auto}.dashboard-donut__track{stroke:var(--surface-alt)}.dashboard-donut__value{stroke:var(--accent);transition:stroke-dasharray .4s ease}.dashboard-donut__pct{fill:var(--text);font-size:1.5rem;font-weight:700}.dashboard-donut__lbl{fill:var(--text-muted);font-size:.62rem;text-transform:uppercase;letter-spacing:.06em}.dashboard-donut__legend{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--text-muted)}.dashboard-donut__legend strong{color:var(--text);font-size:1.05rem}.dashboard-upcoming__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.dashboard-upcoming__list li{display:flex;align-items:center;gap:.5rem}.dashboard-upcoming__title{flex:1;min-width:0;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}.dashboard-upcoming__title:hover{color:var(--accent-strong);text-decoration:none}.dashboard-bycat__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.dashboard-bycat__list li{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.9rem}.dashboard-bycat__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-bycat__count{flex:0 0 auto;font-size:.72rem;font-weight:600;color:var(--text-muted);background:var(--surface-alt);border:1px solid var(--border);border-radius:999px;padding:.05rem .5rem}.dashboard-news__msg{color:var(--text-muted);font-size:.85rem}.dashboard-news__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.dashboard-news__list li{display:flex;flex-direction:column;gap:.15rem}.dashboard-news__title{display:inline-flex;align-items:flex-start;gap:.25rem;color:var(--text);font-size:.9rem;line-height:1.3}.dashboard-news__title:hover{color:var(--accent-strong);text-decoration:none}.dashboard-news__ext{flex:0 0 auto;margin-top:.15rem;color:var(--text-muted)}.dashboard-news__meta{display:flex;gap:.6rem;font-size:.72rem;color:var(--text-muted)}.dashboard-news__score{color:var(--accent-strong);font-weight:600}.dashboard-activity{grid-area:activity;padding:1.25rem 1.5rem 1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm)}.dashboard-activity__header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.875rem;flex-wrap:wrap}.dashboard-activity__header h2{margin:0;font-size:.95rem;font-weight:600;color:var(--text-muted);letter-spacing:.01em}.dashboard-activity__footnote{margin-top:.75rem;font-size:.8rem;color:var(--text-muted)}.dashboard-activity-wrap{display:grid;grid-template-columns:1.75rem 1fr;gap:.25rem;align-items:start}.dashboard-activity-rowlabels{display:grid;grid-template-rows:repeat(7,14px);gap:6px;padding-top:4px;font-size:.65rem;color:var(--text-muted);line-height:14px}.dashboard-activity-grid{display:grid;grid-template-rows:repeat(7,14px);grid-auto-flow:column;grid-auto-columns:14px;gap:6px;padding:2px}.dashboard-dot-btn{all:unset;display:grid;place-items:center;width:14px;height:14px;cursor:default;border-radius:50%}.dashboard-dot-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dashboard-dot-pad{width:14px;height:14px}.dashboard-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0}.dashboard-dot--open{background:var(--accent);box-shadow:0 0 6px #f5b40099}.dashboard-dot--overdue{background:var(--danger);box-shadow:0 0 6px #b91c1c8c}.dashboard-dot--done{background:var(--text);box-shadow:0 0 4px #00000040}.dashboard-dot--empty{background:var(--border);opacity:.55}.dashboard-legend{display:flex;gap:.875rem;flex-wrap:wrap;font-size:.75rem;color:var(--text-muted)}.dashboard-legend-item{display:inline-flex;align-items:center;gap:.4rem}.chat-page{display:grid;grid-template-columns:260px 1fr;gap:1rem;height:calc(100dvh - 10rem);min-height:420px}.chat-list{display:flex;flex-direction:column;gap:.6rem;min-height:0;padding:.75rem;background:var(--surface);border:1px solid var(--border);border-radius:12px}.chat-new{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:.4rem}.chat-conversations{list-style:none;margin:0;padding:0;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:.15rem}.chat-conversations li{display:flex;align-items:center;gap:.25rem;border-radius:8px}.chat-conversations li:hover{background:var(--surface-alt)}.chat-conversations li.active{background:var(--accent-soft)}.chat-conversation-title{flex:1;min-width:0;text-align:left;background:none;border:none;box-shadow:none;padding:.45rem .5rem;font-size:.85rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-conversation-title:hover{background:none}.chat-conversation-actions{display:none;gap:.1rem;padding-right:.25rem;flex:0 0 auto}.chat-conversations li:hover .chat-conversation-actions,.chat-conversations li.active .chat-conversation-actions{display:flex}.chat-conversation-actions button{padding:.25rem;border-color:transparent;background:transparent;color:var(--text-muted)}.chat-conversation-actions button:hover{background:var(--surface);color:var(--text)}.chat-conversation-actions button.danger:hover{color:var(--danger-hover)}.chat-conversations-empty{font-size:.8rem;color:var(--text-muted);padding:.5rem}.chat-main{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.chat-main-header{display:flex;align-items:center;gap:.5rem;padding:.6rem .875rem;border-bottom:1px solid var(--border)}.chat-list-toggle{display:none;padding:.3rem .4rem;border-color:transparent;background:transparent}.chat-list-toggle:hover{background:var(--surface-alt)}.chat-model{font-size:.75rem;color:var(--text-muted);margin-left:auto}.chat-thread{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.1rem}.chat-empty{margin:auto;text-align:center;color:var(--text-muted)}.chat-empty h2{margin:0 0 .25rem;font-size:1.1rem;color:var(--text)}.chat-bubble{max-width:80%;padding:.6rem .85rem;border-radius:14px;white-space:pre-wrap;word-break:break-word;line-height:1.45;font-size:.92rem}.chat-bubble--user{align-self:flex-end;background:var(--accent-soft);border:1px solid var(--accent)}.chat-bubble--assistant{align-self:flex-start;background:var(--surface-alt);border:1px solid var(--border)}.chat-bubble--system{display:none}.chat-markdown{white-space:normal}.chat-markdown>*:first-child{margin-top:0}.chat-markdown>*:last-child{margin-bottom:0}.chat-markdown p{margin:0 0 .6rem}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3,.chat-markdown h4{margin:1rem 0 .5rem;line-height:1.25;font-weight:600}.chat-markdown h1{font-size:1.3rem}.chat-markdown h2{font-size:1.15rem}.chat-markdown h3{font-size:1.02rem}.chat-markdown h4{font-size:.95rem}.chat-markdown ul,.chat-markdown ol{margin:0 0 .6rem;padding-left:1.4rem}.chat-markdown li{margin:.15rem 0}.chat-markdown li>ul,.chat-markdown li>ol{margin-bottom:0}.chat-markdown a{color:var(--accent-strong);text-decoration:underline}.chat-markdown blockquote{margin:0 0 .6rem;padding:.1rem .85rem;border-left:3px solid var(--border-strong);color:var(--text-muted)}.chat-markdown code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.85em;background:#0000000f;padding:.1em .35em;border-radius:4px}.chat-markdown pre{margin:0 0 .6rem;padding:.75rem .85rem;background:#1e1e1e;color:#f4f4f4;border-radius:8px;overflow-x:auto}.chat-markdown pre code{background:none;padding:0;font-size:.82rem;color:inherit;white-space:pre}.chat-markdown table{border-collapse:collapse;margin:0 0 .6rem;font-size:.85rem;display:block;overflow-x:auto}.chat-markdown th,.chat-markdown td{border:1px solid var(--border);padding:.3rem .55rem;text-align:left}.chat-markdown th{background:var(--surface);font-weight:600}.chat-markdown hr{border:none;border-top:1px solid var(--border);margin:.85rem 0}.chat-markdown img{max-width:100%;border-radius:6px}.chat-typing{display:inline-flex;gap:3px;align-items:center}.chat-typing span{width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:chat-typing 1s infinite ease-in-out}.chat-typing span:nth-child(2){animation-delay:.15s}.chat-typing span:nth-child(3){animation-delay:.3s}@keyframes chat-typing{0%,60%,to{opacity:.25}30%{opacity:1}}.chat-error{align-self:center;color:var(--danger);font-size:.8rem;background:#b91c1c0f;padding:.4rem .7rem;border-radius:8px}.chat-composer{display:flex;gap:.5rem;align-items:flex-end;padding:.75rem;border-top:1px solid var(--border);background:var(--surface)}.chat-composer textarea{flex:1;min-width:0;resize:none;min-height:2.6rem;max-height:160px;line-height:1.4}.chat-send{flex:0 0 auto;align-self:stretch;display:inline-flex;align-items:center}@media (max-width: 767.98px){.app--shell{grid-template-columns:1fr}.app--auth{padding:1rem 1rem 3rem}.auth-card{margin:2rem auto;padding:1.5rem}.sidebar{position:fixed;top:0;left:0;width:min(280px,80vw);height:100dvh;z-index:45;transform:translate(-100%);transition:transform .2s ease;will-change:transform}.sidebar--open{transform:translate(0);box-shadow:var(--shadow-md)}.main-header{position:sticky;top:0;z-index:30;padding:.625rem .875rem}.main-header__burger{display:inline-flex}.search-button kbd{display:none}.main-body{padding:1rem 1rem 3rem}.tasks-list li{flex-wrap:wrap;row-gap:.25rem}.tasks-list .row-time{order:3;flex-basis:100%}.attachment-list li{grid-template-columns:1fr auto;padding:.625rem .75rem}.profile-avatar-row input[type=file]{min-width:0;flex-basis:100%}.profile-form{flex-wrap:wrap}.profile-form input{flex-basis:100%}.search-overlay{padding-top:4vh}.paste-toast{left:1rem;right:1rem;bottom:1rem;text-align:center}.calendar-cells{grid-auto-rows:minmax(64px,1fr)}.calendar-cell{padding:.25rem .3rem .35rem;min-height:64px}.calendar-cell-day{font-size:.75rem}.calendar-cell-tasks{font-size:.625rem}.calendar-weekday{padding:.375rem .3rem;font-size:.625rem;text-align:center}.calendar-toolbar{flex-wrap:wrap}.calendar-today-btn{margin-left:0}.task-due-chip{font-size:.6875rem;padding:.1rem .35rem}.dashboard-stats{grid-template-columns:repeat(2,1fr);gap:.625rem}.dashboard-stat-card .value{font-size:1.6rem}.dashboard-grid{grid-template-columns:1fr;grid-template-areas:none}.dashboard-grid>*{grid-area:auto}.dashboard-activity{padding:1rem 1rem 1.25rem}.dashboard-activity-rowlabels{grid-template-rows:repeat(7,12px);line-height:12px;font-size:.6rem}.dashboard-activity-grid{grid-template-rows:repeat(7,12px);grid-auto-columns:12px;gap:5px}.dashboard-dot-btn,.dashboard-dot-pad{width:12px;height:12px}.dashboard-dot{width:8px;height:8px}.chat-page{grid-template-columns:1fr;height:calc(100dvh - 8rem)}.chat-list{display:none}.chat-list-toggle{display:inline-flex}.chat-page--list-open .chat-list{display:flex}.chat-page--list-open .chat-main{display:none}}
