*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d0b0b;--bg-surface:#120e0e;--bg-elevated:#1a1414;--border:#1e1818;--border-mid:#2a2020;--text-primary:#f0ece8;--text-secondary:#5c4f4a;--text-muted:#3a302e;--accent:#3b82f6;--accent-dim:#1e3a5f;--accent-glow:#3b82f626;--font-display:"Bricolage Grotesque", sans-serif;--font-body:"Instrument Sans", sans-serif;--sidebar-w:200px;--sidebar-collapsed:56px;--t-fast:.15s ease-out;--t-normal:.22s ease-out;--t-slow:.35s ease-out}html{scroll-behavior:auto}body{background:var(--bg);color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);line-height:1.15}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-mid);border-radius:2px}a{color:inherit;text-decoration:none}button{cursor:pointer}.sidebar{width:var(--sidebar-w);background:color-mix(in srgb, var(--bg) 85%, var(--bg-surface));border-right:1px solid var(--border);min-height:100vh;transition:width var(--t-normal);flex-direction:column;flex-shrink:0;height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.sidebar--collapsed{width:var(--sidebar-collapsed)}.sidebar__logo{font-family:var(--font-display);color:var(--text-primary);white-space:nowrap;letter-spacing:-.02em;padding:22px 18px 24px;font-size:15px;font-weight:800}.sidebar__nav{flex-direction:column;flex:1;gap:2px;padding:0 8px;display:flex}.sidebar__bottom{flex-direction:column;gap:2px;padding:0 8px 16px;display:flex}.sidebar__item{color:var(--text-secondary);white-space:nowrap;transition:background var(--t-fast), color var(--t-fast);width:100%;font-size:13px;font-weight:500;font-family:var(--font-body);background:0 0;border:none;border-radius:7px;align-items:center;gap:10px;padding:9px 8px;display:flex}.sidebar__item:hover{background:var(--bg-surface);color:var(--text-primary)}.sidebar__item--active{background:var(--accent-glow);color:var(--accent)}.sidebar__icon{text-align:center;flex-shrink:0;width:20px;font-size:15px}.sidebar__label{opacity:1;transition:opacity var(--t-normal)}.sidebar--collapsed .sidebar__label{opacity:0}@media (width<=767px){.sidebar{display:none}}.bottom-tabs{display:none}@media (width<=767px){.bottom-tabs{background:color-mix(in srgb, var(--bg) 92%, var(--bg-surface));border-top:1px solid var(--border);padding:6px 0 max(10px, env(safe-area-inset-bottom));z-index:100;-webkit-backdrop-filter:blur(12px);display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-tabs__item{color:var(--text-secondary);font-size:10px;font-family:var(--font-body);transition:color var(--t-fast);flex-direction:column;flex:1;align-items:center;gap:3px;padding:4px 0;display:flex}.bottom-tabs__item--active{color:var(--accent)}.bottom-tabs__icon{font-size:18px}main{padding-bottom:72px}}.week-grid{flex:1;overflow:auto}.week-grid__header{border-bottom:1px solid var(--border);background:var(--bg);z-index:2;display:flex;position:sticky;top:0}.week-grid__time-spacer{flex-shrink:0;width:52px}.week-grid__day-header{text-align:center;color:var(--text-secondary);letter-spacing:.06em;text-transform:uppercase;flex:1;min-width:100px;padding:10px 0;font-size:11px;font-weight:600}.week-grid__body{display:flex}.week-grid__time-col{flex-shrink:0;width:52px}.week-grid__hour-label{color:var(--text-secondary);box-sizing:border-box;justify-content:flex-end;align-items:flex-start;padding:5px 8px 0 0;font-size:11px;display:flex}.week-grid__day-col{border-left:1px solid var(--border);cursor:crosshair;box-sizing:border-box;flex:1;min-width:100px;position:relative}.week-grid__slot{border-bottom:1px solid var(--border);box-sizing:border-box}.week-grid__slot:last-child{border-bottom:none}.week-block{cursor:pointer;z-index:1;transition:filter var(--t-fast), transform var(--t-fast);border-radius:6px;flex-direction:column;gap:2px;padding:5px 8px;display:flex;position:absolute;left:4px;right:4px;overflow:hidden}.week-block:hover{filter:brightness(1.2);transform:scaleX(.97)}.week-block__name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;font-family:var(--font-body);overflow:hidden}.week-block__hours{color:#ffffffa6;font-size:10px;font-family:var(--font-body)}.modal-overlay{z-index:200;-webkit-backdrop-filter:blur(4px);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-surface);border:1px solid var(--border-mid);border-radius:14px;width:360px;max-width:calc(100vw - 32px);padding:24px;box-shadow:0 24px 64px #00000080}.modal__header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal__header h2{font-family:var(--font-display);letter-spacing:-.02em;font-size:18px;font-weight:700}.modal__close{color:var(--text-secondary);cursor:pointer;transition:background var(--t-fast), color var(--t-fast);background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:15px}.modal__close:hover{background:var(--bg-elevated);color:var(--text-primary)}.modal__form{flex-direction:column;gap:14px;display:flex}.modal__label{color:var(--text-secondary);letter-spacing:.02em;flex-direction:column;gap:6px;font-size:12px;font-weight:500;display:flex}.modal__input,.modal__select{background:var(--bg-elevated);border:1px solid var(--border-mid);color:var(--text-primary);font-family:var(--font-body);transition:border-color var(--t-fast);border-radius:8px;outline:none;padding:9px 12px;font-size:14px}.modal__input:focus,.modal__select:focus{border-color:var(--accent)}.modal__row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.modal__actions{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.modal__btn{font-size:13px;font-weight:600;font-family:var(--font-body);cursor:pointer;transition:opacity var(--t-fast);border:none;border-radius:8px;padding:9px 18px}.modal__btn:hover{opacity:.85}.modal__btn--primary{background:var(--accent);color:#fff}.modal__btn--danger{color:#f97060;background:0 0;border:1px solid #f9706066;margin-right:auto}.calendar-page{flex-direction:column;height:100vh;display:flex;overflow:hidden}.calendar-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;display:flex}.calendar-nav{align-items:center;gap:10px;display:flex}.calendar-week-label{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.01em;white-space:nowrap;font-size:15px;font-weight:700}.calendar-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.cal-btn{font-size:13px;font-family:var(--font-body);border:1px solid var(--border-mid);background:var(--bg-surface);color:var(--text-primary);cursor:pointer;transition:background var(--t-fast), border-color var(--t-fast);border-radius:7px;padding:7px 12px;font-weight:500}.cal-btn:hover{background:var(--bg-elevated)}.cal-btn--text{color:var(--text-secondary);background:0 0;border-color:#0000}.cal-btn--text:hover{color:var(--text-primary);background:var(--bg-surface)}.cal-btn--accent{background:var(--accent);border-color:var(--accent);color:#fff}.cal-btn--accent:hover{opacity:.9}.cal-planned-badge{color:var(--accent);padding:7px 4px;font-size:12px;font-weight:600}.calendar-loading{color:var(--text-secondary);flex:1;justify-content:center;align-items:center;font-size:14px;display:flex}.calendar-empty-hint{color:var(--text-secondary);flex-shrink:0;padding:16px 20px;font-size:13px}.cal-btn--inline{padding:0 4px;font-size:13px;display:inline}.projects-page{max-width:900px;padding:28px 32px}.projects-page-title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.02em;margin-bottom:24px;font-size:22px;font-weight:700}.section-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.section-title{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);font-size:13px;font-weight:600}.section-toggle{color:var(--text-secondary);cursor:pointer;transition:color var(--t-fast);background:0 0;border:none;padding:0;font-size:12px}.section-toggle:hover{color:var(--text-primary)}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:16px;display:grid}.project-card{background:var(--bg-surface);border:1px solid var(--border);transition:border-color var(--t-fast), background var(--t-fast);cursor:pointer;border-radius:10px;flex-direction:column;gap:10px;padding:16px;display:flex;position:relative}.project-card:hover{border-color:var(--border-mid);background:var(--bg-elevated)}.project-card-top{align-items:center;gap:10px;display:flex}.project-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.project-name{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.01em;flex:1;font-size:15px;font-weight:600}.project-card-meta{justify-content:space-between;align-items:center;display:flex}.project-task-count{color:var(--text-secondary);font-size:12px}.project-status-badge{text-transform:capitalize;border-radius:20px;padding:2px 8px;font-size:11px;font-weight:500}.project-status-badge--active{color:#3b82f6;background:#3b82f626}.project-status-badge--pause{color:#eab308;background:#eab3081f}.project-status-badge--done{color:#22c55e;background:#22c55e1f}.project-card-arrow{color:var(--text-secondary);opacity:0;transition:opacity var(--t-fast), transform var(--t-fast);background:0 0;border:none;padding:0;font-size:16px;line-height:1;position:absolute;top:14px;right:14px}.project-card:hover .project-card-arrow{opacity:1;transform:translate(2px)}.add-project-btn{border:1px dashed var(--border-mid);color:var(--text-secondary);font-size:13px;font-family:var(--font-body);cursor:pointer;transition:border-color var(--t-fast), color var(--t-fast);background:0 0;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;display:flex}.add-project-btn:hover{border-color:var(--accent);color:var(--accent)}.project-form{background:var(--bg-elevated);border:1px solid var(--border-mid);border-radius:10px;flex-direction:column;gap:12px;margin-bottom:12px;padding:16px;display:flex}.project-form-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-form input[type=text]{background:var(--bg-surface);border:1px solid var(--border-mid);min-width:160px;color:var(--text-primary);font-size:14px;font-family:var(--font-body);transition:border-color var(--t-fast);border-radius:7px;outline:none;flex:1;padding:8px 12px}.project-form input[type=text]:focus{border-color:var(--accent)}.color-swatches{gap:6px;display:flex}.color-swatch{cursor:pointer;width:22px;height:22px;transition:transform var(--t-fast), border-color var(--t-fast);border:2px solid #0000;border-radius:50%}.color-swatch:hover{transform:scale(1.15)}.color-swatch.selected{border-color:var(--text-primary)}.project-form-actions{gap:8px;display:flex}.btn-primary{background:var(--accent);color:#fff;font-size:13px;font-weight:500;font-family:var(--font-body);cursor:pointer;transition:opacity var(--t-fast);border:none;border-radius:7px;padding:8px 16px}.btn-primary:hover{opacity:.85}.btn-primary:disabled{opacity:.4;cursor:default}.btn-ghost{border:1px solid var(--border-mid);color:var(--text-secondary);font-size:13px;font-family:var(--font-body);cursor:pointer;transition:border-color var(--t-fast), color var(--t-fast);background:0 0;border-radius:7px;padding:8px 14px}.btn-ghost:hover{border-color:var(--text-secondary);color:var(--text-primary)}.section-divider{background:var(--border);height:1px;margin:32px 0}.todo-add-form{gap:8px;margin-bottom:16px;display:flex}.todo-add-form input[type=text]{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-primary);font-size:14px;font-family:var(--font-body);transition:border-color var(--t-fast);border-radius:7px;outline:none;flex:1;padding:8px 12px}.todo-add-form input[type=text]:focus{border-color:var(--accent)}.todo-list{flex-direction:column;gap:2px;display:flex}.todo-item{transition:background var(--t-fast);border-radius:7px;align-items:center;gap:10px;padding:9px 10px;display:flex}.todo-item:hover{background:var(--bg-elevated)}.todo-checkbox{border:1.5px solid var(--border-mid);cursor:pointer;width:16px;height:16px;transition:border-color var(--t-fast), background var(--t-fast);background:0 0;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.todo-checkbox:hover{border-color:var(--accent)}.todo-checkbox.checked{background:var(--accent);border-color:var(--accent)}.todo-checkbox.checked:after{content:"✓";color:#fff;font-size:10px}.todo-name{color:var(--text-primary);flex:1;font-size:14px}.todo-name.done{color:var(--text-secondary);text-decoration:line-through}.todo-status-chip{border-radius:20px;padding:2px 7px;font-size:11px;font-weight:500}.todo-status-chip--todo{color:var(--text-secondary);background:#5c4f4a66}.todo-status-chip--in_progress{color:#3b82f6;background:#3b82f61f}.todo-status-chip--done{color:#22c55e;background:#22c55e1f}.todo-urgent-btn{cursor:pointer;opacity:.5;transition:opacity var(--t-fast);background:0 0;border:none;padding:0 2px;font-size:14px}.todo-urgent-btn:hover,.todo-urgent-btn.urgent{opacity:1}.todo-delete-btn{color:var(--text-secondary);cursor:pointer;opacity:0;transition:opacity var(--t-fast), color var(--t-fast);background:0 0;border:none;padding:0 2px;font-size:16px}.todo-item:hover .todo-delete-btn{opacity:1}.todo-delete-btn:hover{color:#ef4444}.projects-loading{color:var(--text-secondary);padding:20px 0;font-size:14px}.todo-assign-btn{border:1px solid var(--border-mid);color:var(--text-secondary);cursor:pointer;opacity:0;transition:opacity var(--t-fast), border-color var(--t-fast), color var(--t-fast);background:0 0;border-radius:5px;flex-shrink:0;padding:2px 7px;font-size:12px}.todo-item:hover .todo-assign-btn{opacity:1}.todo-assign-btn:hover{border-color:var(--accent);color:var(--accent)}.todo-assign-dropdown{background:var(--bg-surface);border:1px solid var(--border-mid);z-index:50;border-radius:8px;flex-direction:column;gap:1px;min-width:160px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #0006}.todo-assign-option{color:var(--text-primary);font-size:13px;font-family:var(--font-body);cursor:pointer;text-align:left;width:100%;transition:background var(--t-fast);background:0 0;border:none;border-radius:5px;align-items:center;gap:8px;padding:7px 10px;display:flex}.todo-assign-option:hover{background:var(--bg-elevated)}.todo-assign-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.project-detail{max-width:980px;min-height:100vh;padding:28px 32px}.project-detail-header{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:28px;display:flex}.project-detail-back{color:var(--text-secondary);cursor:pointer;transition:color var(--t-fast);background:0 0;border:none;align-items:center;gap:4px;padding:0;font-size:13px;display:flex}.project-detail-back:hover{color:var(--text-primary)}.project-detail-dot{border-radius:50%;flex-shrink:0;width:12px;height:12px}.project-detail-name{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text-primary);cursor:default;flex:1;font-size:22px;font-weight:700}.project-status-cycler{border:1px solid var(--border-mid);cursor:pointer;transition:border-color var(--t-fast);background:0 0;border-radius:20px;padding:3px 12px;font-size:12px;font-weight:500}.project-status-cycler:hover{border-color:var(--text-secondary)}.project-status-cycler--active{color:#3b82f6}.project-status-cycler--pause{color:#eab308}.project-status-cycler--done{color:#22c55e}.project-detail-actions{gap:8px;margin-left:auto;display:flex}.kanban-board{grid-template-columns:repeat(3,1fr);align-items:start;gap:16px;display:grid}.kanban-col{background:var(--bg-surface);border:1px solid var(--border);border-radius:10px;min-height:200px;padding:14px}.kanban-col-title{text-transform:uppercase;letter-spacing:.07em;color:var(--text-secondary);margin-bottom:12px;font-size:11px;font-weight:600}.task-item{transition:background var(--t-fast);border-radius:6px;align-items:center;gap:8px;padding:8px 6px;display:flex}.task-item:hover{background:var(--bg-elevated)}.task-name{color:var(--text-primary);flex:1;font-size:14px;line-height:1.4}.task-name.done{color:var(--text-secondary);text-decoration:line-through}.task-urgent-btn{cursor:pointer;opacity:.4;transition:opacity var(--t-fast);background:0 0;border:none;flex-shrink:0;padding:0;font-size:14px}.task-urgent-btn:hover,.task-urgent-btn.urgent{opacity:1}.task-move-btn{border:1px solid var(--border-mid);color:var(--text-secondary);cursor:pointer;transition:border-color var(--t-fast), color var(--t-fast);opacity:0;background:0 0;border-radius:4px;flex-shrink:0;padding:2px 6px;font-size:11px}.task-item:hover .task-move-btn{opacity:1}.task-move-btn:hover{border-color:var(--accent);color:var(--accent)}.task-delete-btn{color:var(--text-secondary);cursor:pointer;opacity:0;transition:opacity var(--t-fast), color var(--t-fast);background:0 0;border:none;flex-shrink:0;padding:0;font-size:16px;line-height:1}.task-item:hover .task-delete-btn{opacity:1}.task-delete-btn:hover{color:#ef4444}.task-add-form{border-top:1px solid var(--border);gap:6px;margin-top:10px;padding-top:10px;display:flex}.task-add-form input[type=text]{background:var(--bg);border:1px solid var(--border);color:var(--text-primary);font-size:13px;font-family:var(--font-body);transition:border-color var(--t-fast);border-radius:6px;outline:none;flex:1;padding:6px 10px}.task-add-form input[type=text]:focus{border-color:var(--accent)}.task-add-form button[type=submit]{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;transition:opacity var(--t-fast);border:none;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:500}.task-add-form button[type=submit]:disabled{opacity:.4;cursor:default}.task-add-form button[type=submit]:hover:not(:disabled){opacity:.85}.project-name-form{flex:1;align-items:center;gap:8px;display:flex}.project-name-input{background:var(--bg-surface);border:1px solid var(--accent);color:var(--text-primary);font-size:22px;font-family:var(--font-display);letter-spacing:-.02em;border-radius:6px;outline:none;width:280px;padding:4px 10px;font-weight:700}.project-detail-loading{color:var(--text-secondary);padding:20px 0;font-size:14px}.template-page{flex-direction:column;height:100vh;display:flex;overflow:hidden}.template-toolbar{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:16px;padding:20px 24px 16px;display:flex}.template-title{font-family:var(--font-display);letter-spacing:-.02em;margin-bottom:4px;font-size:22px;font-weight:800}.template-subtitle{color:var(--text-secondary);font-size:13px}.template-empty{color:var(--text-secondary);flex-shrink:0;padding:12px 24px;font-size:13px;font-style:italic}
