:root{--bg:#e8e4dc;--bg-elevated:#f7f4ee;--ink:#1a1f1c;--ink-soft:#5c655f;--line:#d0cbc0;--accent:#1f6b4a;--accent-strong:#155539;--danger:#9b2c2c;--now:#c23b2a;--shadow:0 18px 50px #1a1f1c1f;--font-display:"Fraunces", "Times New Roman", serif;--font-body:"Figtree", "Helvetica Neue", sans-serif;color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%, #dfe8df 0%, transparent 55%), radial-gradient(900px 500px at 100% 0%, #e7dcc8 0%, transparent 50%), var(--bg);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--accent) 45%, var(--line)) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--accent) 35%, var(--line));background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--accent) 55%, var(--line));background-clip:padding-box;border:2px solid #0000}::-webkit-scrollbar-corner{background:0 0}html,body,#root{height:100%;min-height:100%;margin:0}button,input{font:inherit;color:inherit}button{cursor:pointer}.app{grid-template-rows:auto 1fr;height:100%;min-height:100vh;display:grid}.topbar{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg-elevated) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:.85rem 1.25rem;display:grid}.brand{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent), #3d8f68);width:.85rem;height:.85rem;box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent);border-radius:.2rem}.brand-name{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.25rem;font-weight:600}.topbar-center{justify-self:center}.next-chip{color:var(--ink-soft);margin:0;font-size:.92rem}.next-chip strong{color:var(--ink);font-weight:600}.next-chip.muted{opacity:.75}.topbar-actions{justify-self:end;align-items:center;gap:.5rem;display:flex}.completed-toggle{color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;-webkit-user-select:none;user-select:none;background:#ffffff8c;border-radius:999px;align-items:center;gap:.4rem;padding:.4rem .75rem;font-size:.82rem;font-weight:600;display:inline-flex}.completed-toggle.on{color:var(--accent-strong);border-color:color-mix(in srgb, var(--accent) 45%, var(--line));background:color-mix(in srgb, var(--accent) 12%, white)}.completed-toggle input{accent-color:var(--accent)}.task-block.completed{opacity:.72;cursor:pointer;border-style:solid}.task-block.completed .task-block-title{text-decoration:line-through;text-decoration-thickness:1px}.sidebar-head-actions{align-items:center;gap:.4rem;display:flex}.recurrence-pills{grid-template-columns:repeat(2,1fr)}.task-block.habit{border-style:dashed}.task-block.deadline-pinned{z-index:2;border-style:solid;border-width:2.5px;box-shadow:0 0 0 2px #fff,0 0 0 4px #b45309,0 4px 12px #b4530947}.task-block.deadline-pinned .task-block-time:after{content:" · due lock";letter-spacing:.02em;text-transform:uppercase;opacity:.9;font-size:.65em;font-weight:650}.habit-card .task-title{font-weight:650}.workspace{grid-template-columns:1fr minmax(300px,360px);height:100%;min-height:0;display:grid}.primary-btn{background:var(--accent);color:#f4faf6;border:none;border-radius:999px;padding:.55rem 1.05rem;font-weight:600;transition:background .15s,transform .15s}.primary-btn:hover:not(:disabled){background:var(--accent-strong)}.primary-btn:disabled{opacity:.45;cursor:not-allowed}.ghost-btn{border:1px solid var(--line);color:var(--ink-soft);background:0 0;border-radius:999px;padding:.45rem .9rem}.ghost-btn:hover{color:var(--ink);background:#ffffff80}.icon-btn{border:1px solid var(--line);background:var(--bg-elevated);border-radius:.55rem;place-items:center;width:2rem;height:2rem;font-size:1.1rem;line-height:1;display:inline-grid}.icon-btn.small{border-radius:999px;width:1.6rem;height:1.6rem;font-size:.95rem}.icon-btn.danger:hover{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 40%, var(--line))}.calendar{border-right:1px solid var(--line);background:color-mix(in srgb, var(--bg-elevated) 70%, transparent);grid-template-rows:auto 1fr;min-width:0;min-height:0;display:grid}.calendar-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.1rem;display:flex}.calendar-nav{align-items:center;gap:.55rem;display:flex}.calendar-nav h1{font-family:var(--font-display);min-width:10rem;margin:0;font-size:1.35rem;font-weight:550}.week-stats{color:var(--ink-soft);align-items:center;gap:.65rem;font-size:.82rem;display:flex}.stat-bar{background:color-mix(in srgb, var(--line) 80%, white);border-radius:999px;width:7rem;height:.35rem;overflow:hidden}.stat-fill{background:var(--accent);border-radius:inherit;height:100%}.calendar-scroll{min-height:0;overflow:auto}.day-headers{z-index:3;background:color-mix(in srgb, var(--bg-elevated) 94%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);grid-template-columns:4.5rem repeat(7,1fr);display:grid;position:sticky;top:0}.time-gutter-head{border-right:1px solid var(--line)}.day-head{border:none;border-right:1px solid var(--line);color:inherit;font:inherit;cursor:pointer;background:0 0;flex-direction:column;align-items:center;gap:.2rem;padding:.65rem .25rem .75rem;display:flex;position:relative}.day-head:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}.day-head:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:-2px;z-index:1}.day-head.has-review .date-num{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent)}.day-review-dot{background:var(--accent);border-radius:999px;width:.35rem;height:.35rem;margin-top:.05rem}.day-head:last-child{border-right:none}.dow{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);font-size:.72rem}.date-num{border-radius:999px;place-items:center;width:2rem;height:2rem;font-size:.95rem;font-weight:650;display:grid}.date-num.today{background:var(--accent);color:#f4faf6}.grid-body{grid-template-columns:4.5rem repeat(7,1fr);display:grid;position:relative}.time-gutter{border-right:1px solid var(--line);position:relative}.hour-label{color:var(--ink-soft);text-align:right;padding-right:.55rem;font-size:.68rem;position:relative;transform:translateY(-.45rem)}.day-col{border-right:1px solid var(--line);background:linear-gradient(#0000 0 calc(100% - 1px),#0000);position:relative}.day-col:last-child{border-right:none}.slot-line{pointer-events:none;height:1px;position:absolute;left:0;right:0}.slot-line.hour{background:color-mix(in srgb, var(--line) 85%, transparent)}.slot-line.half{background:color-mix(in srgb, var(--line) 40%, transparent)}.now-line{background:var(--now);z-index:5;pointer-events:none;height:2px;position:absolute;left:0;right:0}.now-dot{background:var(--now);border-radius:50%;width:10px;height:10px;position:absolute;top:-4px;left:-4px}.task-block{text-align:left;z-index:1;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;border:1.5px solid;border-radius:.45rem;flex-direction:column;gap:.1rem;padding:.3rem .4rem;transition:box-shadow .12s;display:flex;position:absolute;left:3px;right:3px;overflow:hidden}.task-block:hover{z-index:3;box-shadow:0 6px 16px #1a1f1c1f}.task-block.dragging{cursor:grabbing;z-index:6}.task-block.preview{pointer-events:none;z-index:7;border-style:dashed;box-shadow:0 8px 20px #1a1f1c2e}.task-block.locked{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 8%, transparent)}.task-block-title{white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;font-weight:650;line-height:1.15;overflow:hidden}.task-block-time{color:var(--ink-soft);font-size:.62rem;font-weight:500;line-height:1}.sidebar{background:var(--bg-elevated);flex-direction:column;min-height:0;display:flex;overflow:auto}.sidebar-head{border-bottom:1px solid var(--line);background:var(--bg-elevated);z-index:2;justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 1rem .75rem;display:flex;position:sticky;top:0}.sidebar-head h2{font-family:var(--font-display);margin:0;font-size:1.2rem;font-weight:550}.sidebar-section{padding:.9rem 1rem 1.25rem}.sidebar-section h3{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin:0 0 .65rem;font-size:.72rem}.sidebar-section.muted{opacity:.75;border-top:1px solid var(--line)}.sidebar-section.missed-section{border-top:1px solid color-mix(in srgb, #be123c 28%, var(--line));background:#be123c0d}.sidebar-section.missed-section h3{color:#9f1239;margin:0}.section-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.65rem;display:flex}.missed-reschedule-all{color:#9f1239;border-color:color-mix(in srgb, #be123c 35%, var(--line));flex-shrink:0;font-size:.72rem}.missed-reschedule-all:hover{background:#be123c1a}.section-count{letter-spacing:0;text-transform:none;color:#fff;vertical-align:middle;background:#be123c;border-radius:999px;justify-content:center;align-items:center;min-width:1.15rem;height:1.15rem;margin-left:.35rem;padding:0 .35rem;font-size:.68rem;font-weight:700;display:inline-flex}.task-card.missed{background:color-mix(in srgb, #be123c 6%, var(--panel,#fff))}.task-card.missed .task-meta{color:#9f1239}.empty{color:var(--ink-soft);margin:0;font-size:.9rem;line-height:1.45}.task-list{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.task-card{--card-color:var(--line);border:1.5px solid var(--card-color);background:color-mix(in srgb, var(--card-color) 12%, #fffcf7);border-radius:.65rem;flex-direction:column;gap:.55rem;padding:.65rem .7rem;transition:border-color .15s,background .15s,box-shadow .15s;display:flex}.task-card-row{grid-template-columns:1fr auto;align-items:start;gap:.4rem;display:grid}.task-card.selected{border-color:color-mix(in srgb, var(--card-color) 75%, var(--ink));box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent)}.task-editor{border-top:1px solid var(--line);flex-direction:column;gap:.55rem;padding-top:.55rem;display:flex}.task-editor-field{color:var(--ink-soft);flex-direction:column;gap:.3rem;font-size:.72rem;font-weight:600;display:flex}.task-editor-field input[type=datetime-local]{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:.5rem;padding:.45rem .55rem;font-size:.85rem;font-weight:500}.task-editor-actions{flex-wrap:wrap;gap:.35rem;display:flex}.ghost-btn.compact{padding:.35rem .65rem;font-size:.75rem;font-weight:600}.task-card.done{opacity:.7}.task-card.done .task-title{text-decoration:line-through}.task-main{text-align:left;background:0 0;border:none;flex-direction:column;gap:.2rem;min-width:0;padding:0;display:flex}.task-title{font-size:.92rem;font-weight:650;line-height:1.25}.task-meta{color:var(--ink-soft);font-size:.75rem}.task-actions{align-items:center;gap:.3rem;display:flex}.duration-pill{color:var(--ink-soft);background:color-mix(in srgb, var(--line) 55%, white);white-space:nowrap;border-radius:999px;padding:.2rem .45rem;font-size:.68rem;font-weight:600}.modal-backdrop{z-index:20;background:#1a1f1c59;place-items:center;padding:1rem;animation:.16s fade-in;display:grid;position:fixed;inset:0}.modal{width:min(420px,100%);box-shadow:var(--shadow);border:1px solid var(--line);background:#fffcf7;border-radius:1rem;flex-direction:column;gap:.85rem;padding:1.15rem 1.2rem 1rem;animation:.2s rise-in;display:flex}.title-input{border:none;border-bottom:1px solid var(--line);width:100%;font-family:var(--font-display);background:0 0;outline:none;padding:.35rem 0 .55rem;font-size:1.35rem}.title-input:focus{border-bottom-color:var(--accent)}.field-row{gap:.75rem;display:flex}.field-row.two{grid-template-columns:1fr 1fr;display:grid}.field{color:var(--ink-soft);flex-direction:column;gap:.35rem;font-size:.78rem;font-weight:600;display:flex}.field.grow{flex:1}.field input[type=date]{border:1px solid var(--line);background:#fff;border-radius:.55rem;padding:.55rem .65rem}.field input[type=date]:disabled{opacity:.45}.due-priority{flex-direction:column;gap:.75rem;display:flex}.due-mode-pills{grid-template-columns:repeat(3,1fr)}.due-mode-pills:has(>:nth-child(2):last-child){grid-template-columns:repeat(2,1fr)}.modal-hint.tight{margin:.15rem 0 0}.field input[type=time]{border:1px solid var(--line);background:#fff;border-radius:.55rem;padding:.55rem .65rem}.check-row{color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.45rem;font-size:.85rem;font-weight:600;display:inline-flex}.priority-pills{grid-template-columns:repeat(4,1fr);gap:.35rem;display:grid}.priority-pill{border:1px solid var(--line);color:var(--ink-soft);background:#fff;border-radius:.5rem;padding:.5rem .35rem;font-size:.72rem;font-weight:650}.priority-pill:hover{border-color:color-mix(in srgb, var(--accent) 40%, var(--line));color:var(--ink)}.priority-pill.active{color:#fffcf7;border-color:#0000}.priority-pill.critical.active{background:#9b2c2c}.priority-pill.high.active{background:#b45309}.priority-pill.medium.active{background:#1f5c8a}.priority-pill.low.active{background:#5c655f}.priority-tag{text-transform:capitalize;font-weight:650}.priority-tag.critical{color:#9b2c2c}.priority-tag.high{color:#b45309}.priority-tag.medium{color:#1f5c8a}.priority-tag.low{color:#5c655f}.stepper{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:.55rem;grid-template-columns:2rem 1fr 2rem;align-items:center;min-width:9rem;display:grid;overflow:hidden}.stepper button{background:color-mix(in srgb, var(--line) 35%, white);border:none;height:2.2rem}.stepper span{text-align:center;font-size:.9rem}.readonly-field{border:1px solid var(--line);background:color-mix(in srgb, var(--line) 25%, white);color:var(--ink);border-radius:.55rem;padding:.55rem .65rem;font-weight:500}.color-row{flex-wrap:wrap;gap:.45rem;display:flex}.color-dot{border:2px solid #0000;border-radius:999px;width:1.25rem;height:1.25rem;padding:0}.color-dot.active{box-shadow:0 0 0 2px var(--ink)}.modal-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:.72rem;font-weight:650}.modal-hint{color:var(--ink-soft);margin:-.25rem 0 0;font-size:.78rem}.action-fill{justify-content:center;width:100%}.quick-actions{flex-direction:column;gap:.4rem;display:flex}.modal-footer{justify-content:flex-end;gap:.5rem;padding-top:.25rem;display:flex}.modal-footer.spread{justify-content:space-between;align-items:center;gap:.75rem}.modal-footer-left,.modal-footer-right{align-items:center;gap:.4rem;display:flex}.danger-text{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 35%, var(--line))}.danger-text:hover{background:color-mix(in srgb, var(--danger) 8%, white)}.field input[type=datetime-local]{border:1px solid var(--line);background:#fff;border-radius:.55rem;padding:.55rem .65rem}.field input[type=datetime-local]:disabled{opacity:.45}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.xp-chip{letter-spacing:.02em;color:var(--accent-strong);background:color-mix(in srgb, var(--accent) 12%, white);border:1px solid color-mix(in srgb, var(--accent) 30%, var(--line));border-radius:999px;align-items:center;gap:.35rem;margin:0 0 .2rem;padding:.2rem .65rem;font-size:.78rem;font-weight:650;display:inline-flex}.xp-chip-sep{opacity:.45}.sound-toggle.on{color:var(--accent-strong);border-color:color-mix(in srgb, var(--accent) 45%, var(--line))}.celebration-overlay{z-index:40;pointer-events:none;place-items:center;animation:.12s ease-out fade-in;display:grid;position:fixed;inset:0}.celebration-confetti{position:absolute;inset:0;overflow:hidden}.celebration-particle{width:var(--size);height:calc(var(--size) * .55);transform:translate(-50%, -50%) rotate(var(--rot));border-radius:2px;animation:1.35s cubic-bezier(.15,.75,.25,1) forwards confetti-burst;position:absolute}@keyframes confetti-burst{0%{opacity:1;transform:translate(-50%, -50%) rotate(var(--rot)) scale(.4)}to{opacity:0;transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy) + 120px)) rotate(calc(var(--rot) + 180deg)) scale(1)}}.celebration-card{z-index:1;text-align:center;background:color-mix(in srgb, var(--bg-elevated) 94%, white);border:1px solid color-mix(in srgb, var(--accent) 35%, var(--line));min-width:min(18rem,86vw);box-shadow:var(--shadow);border-radius:1rem;padding:1.25rem 1.5rem 1.35rem;animation:.45s cubic-bezier(.2,1.2,.4,1) celebrate-pop;position:relative}@keyframes celebrate-pop{0%{opacity:0;transform:scale(.82)translateY(12px)}60%{opacity:1;transform:scale(1.04)translateY(0)}to{transform:scale(1)}}.celebration-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:.72rem;font-weight:650}.celebration-title{font-family:var(--font-display);margin:.35rem 0 .55rem;font-size:1.45rem;font-weight:600;line-height:1.2}.celebration-xp{color:var(--accent-strong);margin:0;font-size:1.35rem;font-weight:750}.celebration-level{color:var(--ink);margin:.45rem 0 0;font-weight:700}.celebration-streak{color:var(--ink-soft);margin:.35rem 0 0;font-size:.9rem;font-weight:650}.review-backdrop{z-index:30}.review-modal{width:min(440px,94vw);max-height:min(88vh,820px);overflow:auto}.review-hero{font-family:var(--font-display);margin:0;font-size:1.85rem;font-weight:600;line-height:1.15}.review-stats{grid-template-columns:repeat(4,1fr);gap:.45rem;display:grid}.review-stat{background:color-mix(in srgb, var(--accent) 8%, white);border:1px solid color-mix(in srgb, var(--accent) 18%, var(--line));border-radius:.55rem;flex-direction:column;align-items:center;gap:.15rem;padding:.55rem .25rem;display:flex}.review-stat strong{color:var(--accent-strong);font-size:1.1rem;font-weight:750}.review-stat span{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-size:.68rem}.review-list{flex-direction:column;gap:.35rem;max-height:7.5rem;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.review-list.compact{max-height:none}.review-list li{background:color-mix(in srgb, var(--line) 22%, white);border-radius:.45rem;justify-content:space-between;gap:.75rem;padding:.4rem .55rem;font-size:.86rem;display:flex}.review-meta{color:var(--ink-soft);white-space:nowrap;font-size:.75rem}.review-journal{border-top:1px solid var(--line);flex-direction:column;gap:.75rem;padding-top:.35rem;display:flex}.scale-pills{flex-wrap:wrap;gap:.35rem;display:flex}.review-textarea{border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;resize:vertical;background:#fff;border-radius:.55rem;min-height:2.6rem;padding:.55rem .65rem}.review-textarea:focus{outline:2px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:1px}.modal-hint.tight{margin-top:.15rem}@media (prefers-reduced-motion:reduce){.celebration-particle,.celebration-card{animation:none}}@media (width<=900px){.workspace{grid-template-rows:minmax(55vh,1fr) auto;grid-template-columns:1fr}.calendar{border-right:none;border-bottom:1px solid var(--line)}.sidebar{max-height:40vh}.topbar{grid-template-columns:1fr auto}.topbar-center,.week-stats{display:none}}body{margin:0}
