.login-gate{display:flex;flex-direction:column;gap:1.5em;margin-top:2em}.login-form{display:flex;gap:.5em}.login-form input{flex:1;min-width:0}.login-error{font-size:.85em;color:var(--danger)}.project-form{display:flex;flex-direction:column;gap:.5em;padding:.7em;border:1px solid var(--border);border-radius:10px;background:var(--bg-sunken)}.project-form-actions{display:flex;gap:.5em}.project-form-actions .cool-button{flex:1}.project-sidebar{display:flex;flex-direction:column;gap:.6em}.project-sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:.5em}.project-sidebar-head h2{font-size:1.15em;line-height:1.1}.project-new{width:1.8em;height:1.8em;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--border);background:var(--bg-raised);color:var(--text-dim);font-size:1.1em;line-height:1;cursor:pointer;transition:color .2s ease-out,border-color .25s,background .2s ease-out;-webkit-tap-highlight-color:transparent}.project-new:hover{color:var(--text);border-color:var(--accent);background:var(--accent-soft)}.project-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.2em}.project-item{width:100%;display:flex;align-items:baseline;justify-content:space-between;gap:.6em;padding:.45em .6em;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--text-dim);text-align:left;cursor:pointer;transition:color .18s ease-out,background .18s ease-out,border-color .18s;-webkit-tap-highlight-color:transparent}.project-item:hover{color:var(--text);background:var(--bg-raised)}.project-item-active{color:var(--text);background:var(--accent-soft);border-color:var(--accent-border)}.project-item-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-item-count{flex-shrink:0;font-size:.75em;opacity:.6;font-variant-numeric:tabular-nums}.project-empty{padding:.45em .6em}.rich-editor{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--bg-raised);overflow:hidden}.rich-editor-toolbar{display:flex;flex-wrap:wrap;gap:.1em;padding:.3em .4em;border-bottom:1px solid var(--border);background:#ffffff05}.rich-editor-tool{display:inline-flex;align-items:center;justify-content:center;min-width:1.8em;height:1.8em;padding:0 .4em;border:none;border-radius:4px;background:transparent;color:inherit;font-family:inherit;font-size:.9em;cursor:pointer;transition:background .12s ease,color .12s ease}.rich-editor-tool:hover{background:#ffffff14}.rich-editor-tool:focus{outline:none}.rich-editor-tool:focus-visible{outline:1px solid var(--accent-border);outline-offset:1px}.rich-editor-surface{min-height:6em;padding:.6em .8em;font-family:inherit;font-size:inherit;line-height:1.4;outline:none;white-space:pre-wrap;overflow-wrap:anywhere}.rich-editor-surface[contenteditable=false]{opacity:.4;cursor:not-allowed}.rich-editor-surface:empty:before{content:attr(data-placeholder);color:var(--text-faint);pointer-events:none}.rich-editor-surface code{padding:0 .25em;border-radius:3px;background:#ffffff14;font-family:inherit;font-size:.9em}.rich-editor-surface a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-border);text-underline-offset:2px}.task-form{display:flex;flex-direction:column;gap:.6em;padding:.8em;border:1px solid var(--accent-border);border-radius:12px;background:var(--bg-sunken)}.task-form-title{font-size:1.05em}.task-form-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6em}.task-field{display:flex;flex-direction:column;gap:.25em;min-width:0}.task-field-label{font-size:.72em;letter-spacing:.04em;color:var(--text-faint)}.task-field select,.task-field input{width:100%}.task-form-actions{display:flex;gap:.5em}.task{display:flex;flex-direction:column;gap:.55em;padding:.85em .95em;border:1px solid var(--border);border-radius:12px;background:var(--bg-raised);transition:border-color .2s ease-out,opacity .2s ease-out}.task:hover{border-color:var(--border-strong)}.task-editing{border-color:var(--accent-border);background:transparent}.task-done{opacity:.55}.task-head{display:flex;align-items:center;gap:.6em}.task-toggle{flex-shrink:0;width:1.25em;height:1.25em;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid var(--border-strong);background:var(--bg-sunken);color:var(--success);cursor:pointer;transition:border-color .18s,background .18s;-webkit-tap-highlight-color:transparent}.task-toggle:hover{border-color:var(--success)}.task-toggle-on{border-color:var(--success);background:#4ade8024}.task-title{flex:1;min-width:0;font-size:1em;font-weight:600;line-height:1.3;overflow-wrap:anywhere}.task-done .task-title{text-decoration:line-through;text-decoration-color:var(--text-faint)}.task-priority{flex-shrink:0;padding:.15em .5em;border-radius:999px;border:1px solid transparent;font-size:.72em;line-height:1.6}.task-priority-low{color:var(--text-dim);border-color:var(--border-strong);background:#ffffff08}.task-priority-medium{color:var(--accent);border-color:var(--accent-border);background:var(--accent-soft)}.task-priority-high{color:var(--warn);border-color:#fbbf2466;background:#fbbf241f}.task-actions{flex-shrink:0;display:flex;gap:.1em}.task-action{padding:.15em .35em;border:none;border-radius:6px;background:transparent;color:var(--text-faint);font-size:.75em;cursor:pointer;transition:color .16s ease-out,background .16s ease-out;-webkit-tap-highlight-color:transparent}.task-action:hover{color:var(--text);background:#ffffff0d}.task-action-danger:hover{color:var(--danger);background:#f871711a}.task-description{padding-left:1.85em;font-size:.9em;line-height:1.6;color:var(--text)}.task-description .rich-link{color:var(--accent)}.task-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.5em;padding-left:1.85em;font-size:.78em;color:var(--text-dim)}.task-meta-label{color:var(--text-faint);margin-right:.15em}.task-meta-arrow{color:var(--text-faint)}.task-deadline-overdue{color:var(--danger)}.task-deadline-overdue .task-meta-label{color:var(--danger);opacity:.7}.todo-boot{margin-top:2em;font-size:.9em}.todo-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1em;flex-wrap:wrap}.todo-head-actions{display:flex;gap:.5em}.todo-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:2.5em;align-items:start}.todo-aside{min-width:0}.todo-main{display:flex;flex-direction:column;gap:1em;min-width:0}.project-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1em;flex-wrap:wrap}.project-head-text{display:flex;flex-direction:column;gap:.2em;min-width:0}.project-head-actions{display:flex;gap:.5em}.project-desc{font-size:.9em;overflow-wrap:anywhere}.task-list{display:flex;flex-direction:column;gap:.7em}.add-task{align-self:flex-start}.notices{position:fixed;top:0;right:0;display:flex;flex-direction:column;align-items:flex-end;gap:.4em;padding:1.5em;z-index:100}@keyframes notice-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.notice{padding:.5em .8em;border-radius:8px;font-size:.8em;background:var(--bg-raised);border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);max-width:20rem;animation:notice-in .16s ease}.notice-ok{border-color:#4ade8059;background:#142d1ed9}.notice-error{border-color:#f8717159;background:#30161ad9}@media (max-width: 860px){.todo-layout{grid-template-columns:1fr;gap:1.5em}.todo-aside{border-bottom:1px solid var(--border);padding-bottom:1em}}#app{max-width:min(1080px,100vw);width:100%;margin:0 auto;padding:2rem;display:flex;flex-direction:column;gap:1.5em;box-sizing:border-box}#app>*{min-width:0}hr{height:1px;margin:1em 0;border:none;background:linear-gradient(to right,transparent 0%,var(--border-strong) 20%,var(--accent-border) 50%,var(--border-strong) 80%,transparent 100%)}section{display:flex;flex-direction:column;gap:.4em}.text-half-visible{opacity:.3}.text-small{font-size:.8em}.text-dim{color:var(--text-dim)}.text-large{font-size:clamp(1.4rem,4vw,2.2em);line-height:1em;color:var(--accent-2)}.info-line{font-size:.9em;color:var(--text);line-height:1.7}.info-label{color:var(--text-dim);margin-right:.2em}.rich-link{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-border);text-underline-offset:2px}.rich-muted{opacity:.6}input[type=password],input[type=text],input[type=date],select,textarea{padding:.5em .7em;border-radius:8px;border:1px solid var(--border);background:var(--bg-sunken);color:inherit;font-family:inherit}textarea{resize:vertical;min-height:4.5em}select{cursor:pointer}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-border)}.cool-button{border-radius:10px;border:1px solid transparent;padding:.5em .7em;font-size:1em;font-weight:500;font-family:inherit;color:inherit;background-color:var(--bg-raised);cursor:pointer;display:inline-flex;justify-content:center;align-items:center;gap:.4em;transition:color .2s ease-out,border-color .25s,background .2s ease-out;-webkit-tap-highlight-color:transparent}.cool-button:hover{border-color:var(--accent);background-color:var(--accent-soft)}.cool-button:disabled{opacity:.5;cursor:not-allowed}.cool-button:disabled:hover{border-color:transparent;background-color:var(--bg-raised)}.cool-button-danger:hover{border-color:var(--danger);background-color:#f871711f}.cool-button-warn:hover{border-color:var(--warn);background-color:#fbbf241f}.cool-button-ok:hover{border-color:var(--success);background-color:#4ade801f}@media (max-width: 860px){#app{padding:1.25rem}}@font-face{font-family:Cascadia Code;src:url(/CascadiaCode.woff2) format("woff2");font-style:normal;font-display:swap}@font-face{font-family:Cascadia Code;src:url(/CascadiaCodeItalic.woff2) format("woff2");font-style:italic;font-display:swap}:root{--bg: #0b0b0f;--bg-raised: #16161e;--bg-sunken: #08080b;--border: rgb(255 255 255 / .08);--border-strong: rgb(255 255 255 / .16);--text: rgba(255, 255, 255, .87);--text-dim: rgb(255 255 255 / .5);--text-faint: rgb(255 255 255 / .3);--accent: #a78bfa;--accent-2: #22d3ee;--accent-soft: rgb(167 139 250 / .12);--accent-border: rgb(167 139 250 / .4);--success: #4ade80;--danger: #f87171;--warn: #fbbf24;font-family:Cascadia Code,Courier New,Courier,monospace;line-height:1.5;font-weight:400;color-scheme:dark;color:var(--text);background-color:var(--bg);transition:background-color 2s ease;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-tod=dawn]{background-color:#100d16}:root[data-tod=day]{background-color:#0c0f16}:root[data-tod=dusk]{background-color:#140e16}:root[data-tod=evening]{background-color:#110d14}:root[data-tod=night]{background-color:#0b0b0f}input,button,select,textarea{font-size:inherit;font-family:inherit}svg{display:block}a{color:inherit;text-decoration:inherit}*{margin:0}body{display:flex;justify-content:flex-start;min-width:320px;min-height:100vh}section>h1{font-size:2em;line-height:1.1}section>h1:before{content:"# ";opacity:.5;color:var(--accent)}section>h2{font-size:1.5em;line-height:1.1}section>h2:before{content:"## ";opacity:.5;color:var(--accent)}section>h3{font-size:1.2em;line-height:1.1}section>h3:before{content:"### ";opacity:.5;color:var(--accent)}code{font-family:inherit}
