@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fraunces-vietnamese-600-normal-BjlAJixd.woff2)format("woff2"),url(/assets/fraunces-vietnamese-600-normal-DlAl5EAR.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fraunces-latin-ext-600-normal-BtzmzP0X.woff2)format("woff2"),url(/assets/fraunces-latin-ext-600-normal-B0Dy4lqi.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fraunces-latin-600-normal-BFCDtZfi.woff2)format("woff2"),url(/assets/fraunces-latin-600-normal-DL5QCzvS.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/outfit-latin-ext-400-normal-5tcqmc2S.woff2)format("woff2"),url(/assets/outfit-latin-ext-400-normal-DHm7mdGe.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/outfit-latin-400-normal-BGsTXAXT.woff2)format("woff2"),url(/assets/outfit-latin-400-normal-DMwTpYkH.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/outfit-latin-ext-500-normal-zeox_O30.woff2)format("woff2"),url(/assets/outfit-latin-ext-500-normal-DrCvqoFD.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/outfit-latin-500-normal-DKnIMDSk.woff2)format("woff2"),url(/assets/outfit-latin-500-normal-ClnHRwRh.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/outfit-latin-ext-600-normal-B85nYjL1.woff2)format("woff2"),url(/assets/outfit-latin-ext-600-normal-CWJcPgd7.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/outfit-latin-600-normal-B7SfZ07L.woff2)format("woff2"),url(/assets/outfit-latin-600-normal-BEfTtDA7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--tomato:#e84830;--sage:#2d7a5e;--text:#f3ebe3;--muted:#8f837a;--surface:#1c1815;--surface-2:#26201c;--border:#3a322c;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{color:var(--text);background:#12100e;font-family:Outfit,sans-serif}button,input{font:inherit}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:var(--border)}.app{isolation:isolate;min-height:100svh;padding:2.5rem 1.25rem 3rem;position:relative}.atmosphere{z-index:-1;background:radial-gradient(90% 60% at 15% 10%,#e848302e,#0000 55%),radial-gradient(70% 50% at 90% 80%,#2d7a5e24,#0000 50%),linear-gradient(165deg,#12100e 0%,#1a1613 45%,#0e1412 100%);transition:background .6s;position:fixed;inset:0}.app.shortBreak .atmosphere,.app.longBreak .atmosphere{background:radial-gradient(90% 60% at 20% 15%,#2d7a5e38,#0000 55%),radial-gradient(60% 45% at 85% 75%,#e8483014,#0000 50%),linear-gradient(165deg,#0e1412 0%,#121816 50%,#101210 100%)}.brand{text-align:center;margin-bottom:2.25rem;animation:.7s both rise;position:relative}.brand-actions{justify-content:flex-end;gap:.45rem;margin-bottom:.75rem;display:flex}.login-app{place-items:center;min-height:100svh;display:grid}.boot-hint{color:var(--muted);font-family:Outfit,sans-serif}.login-card{background:var(--surface);border:1px solid var(--border);width:min(100%,380px);padding:2rem 1.5rem;animation:.55s both rise}.login-card h1{color:var(--text);text-align:center;margin:0;font-family:Fraunces,Georgia,serif;font-size:2.2rem;font-weight:600}.login-card>p{color:var(--muted);text-align:center;margin:.45rem 0 1.4rem;font-family:Outfit,sans-serif;font-size:.95rem}.login-form{flex-direction:column;gap:.9rem;display:flex}.login-form label{color:var(--muted);flex-direction:column;gap:.35rem;font-family:Outfit,sans-serif;font-size:.85rem;display:flex}.login-form input{appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text);outline:none;padding:.7rem .85rem;font-family:Outfit,sans-serif;font-size:.95rem}.login-form input:focus{border-color:var(--tomato);box-shadow:0 0 0 3px #e8483026}.login-form .btn{width:100%;margin-top:.35rem}.brand h1{letter-spacing:-.02em;color:var(--text);margin:0;font-family:Fraunces,Georgia,serif;font-size:clamp(2.6rem,7vw,3.75rem);font-weight:600;line-height:1.05}.brand p{color:var(--muted);margin:.55rem 0 0;font-family:Outfit,sans-serif;font-size:1rem}.layout{align-items:start;gap:2.5rem;max-width:980px;margin:0 auto;display:grid}@media (width>=860px){.layout{grid-template-columns:1fr 1fr;gap:3rem}}.timer{flex-direction:column;align-items:center;gap:1.25rem;animation:.8s 80ms both rise;display:flex}.mode-switch{background:var(--surface);border:1px solid var(--border);gap:.35rem;padding:.3rem;display:flex}.mode-switch button{appearance:none;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:.5rem .65rem;font-family:Outfit,sans-serif;font-size:.78rem;font-weight:500;transition:color .2s,background .2s}.mode-switch button.active{background:var(--surface-2);color:var(--text)}.ring-wrap{width:280px;height:280px;position:relative}.ring-wrap.running{animation:2.8s ease-in-out infinite breathe}.ring-track{stroke:var(--border)}.ring-progress{stroke:var(--tomato);transition:stroke-dashoffset .95s linear,stroke .4s}.ring-wrap.shortBreak .ring-progress,.ring-wrap.longBreak .ring-progress{stroke:var(--sage)}.cycle-dots{justify-content:center;gap:.45rem;display:flex}.cycle-dots .dot{background:var(--border);border-radius:50%;width:.55rem;height:.55rem;transition:background .25s,transform .25s}.cycle-dots .dot.on{background:var(--tomato);transform:scale(1.15)}.app.shortBreak .cycle-dots .dot.on,.app.longBreak .cycle-dots .dot.on{background:var(--sage)}.hint-keys{color:var(--muted);font-size:.78rem;font-weight:400}.main-col{flex-direction:column;align-items:center;gap:1.5rem;display:flex}.stats{width:min(100%,320px);animation:.9s .18s both rise}.stats-summary{grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:.85rem;display:grid}.stats-summary>div{flex-direction:column;gap:.15rem;font-family:Outfit,sans-serif;display:flex}.stats-label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.75rem}.stats-summary strong{color:var(--text);font-family:Fraunces,Georgia,serif;font-size:1.35rem;font-weight:600}.stats-sub{color:var(--muted);font-size:.78rem}.stats-bars{align-items:flex-end;gap:.35rem;height:72px;display:flex}.stats-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:.3rem;height:100%;display:flex}.stats-bar{background:var(--tomato);opacity:.85;width:100%;max-width:28px;min-height:2px;transition:height .35s}.app.shortBreak .stats-bar,.app.longBreak .stats-bar{background:var(--sage)}.stats-col span{color:var(--muted);font-family:Outfit,sans-serif;font-size:.65rem}.modal-backdrop{z-index:40;background:#080605b8;place-items:center;padding:1rem;animation:.25s both rise;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);width:min(100%,440px);max-height:min(90svh,640px);padding:1.25rem 1.25rem 1.4rem;overflow:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:1.1rem;display:flex}.modal-header h2{margin:0;font-family:Fraunces,Georgia,serif;font-size:1.45rem;font-weight:600}.settings-grid{grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1rem;display:grid}.settings-field{color:var(--muted);flex-direction:column;gap:.35rem;font-family:Outfit,sans-serif;font-size:.8rem;display:flex}.settings-field input{appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:.55rem .65rem;font-family:Outfit,sans-serif;font-size:.95rem}.settings-toggles{flex-direction:column;gap:.65rem;margin-bottom:1.25rem;display:flex}.settings-toggle{color:var(--text);justify-content:space-between;align-items:center;gap:1rem;font-family:Outfit,sans-serif;font-size:.9rem;display:flex}.settings-toggle input{width:1.1rem;height:1.1rem;accent-color:var(--tomato)}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:.55rem;display:flex}.ring-center{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:absolute;inset:0}.mode-label{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0;font-family:Outfit,sans-serif;font-size:.8rem}.clock{font-variant-numeric:tabular-nums;color:var(--text);margin:.35rem 0 .5rem;font-family:Fraunces,Georgia,serif;font-size:3.5rem;font-weight:600;line-height:1}.active-task{max-width:11rem;color:var(--text);white-space:nowrap;text-overflow:ellipsis;margin:0;font-family:Outfit,sans-serif;font-size:.85rem;overflow:hidden}.active-task.muted{color:var(--muted)}.timer-actions{gap:.65rem;display:flex}.pomodoro-count{color:var(--muted);margin:0;font-family:Outfit,sans-serif;font-size:.9rem}.pomodoro-count strong{color:var(--tomato);font-weight:600}.app.shortBreak .pomodoro-count strong,.app.longBreak .pomodoro-count strong{color:var(--sage)}.tasks{animation:.85s .14s both rise}.tasks-header h2{color:var(--text);margin:0;font-family:Fraunces,Georgia,serif;font-size:1.65rem;font-weight:600}.tasks-header p{color:var(--muted);margin:.4rem 0 1.1rem;font-family:Outfit,sans-serif;font-size:.92rem}.task-form{margin-bottom:1.1rem}.task-form.expanded .task-composer{transition:min-height .2s}.composer-row{align-items:stretch;gap:.45rem;display:flex}.task-composer{appearance:none;border:1px solid var(--border);background:var(--surface);min-width:0;color:var(--text);resize:none;field-sizing:content;outline:none;flex:1;max-height:12rem;padding:.7rem .9rem;font-family:Outfit,sans-serif;font-size:.95rem;line-height:1.4;transition:border-color .2s,box-shadow .2s,min-height .2s}.task-composer:focus{border-color:var(--tomato);box-shadow:0 0 0 3px #e8483026}.task-composer::placeholder{color:var(--muted)}.composer-hint{color:var(--sage);margin:.45rem 0 0;font-family:Outfit,sans-serif;font-size:.8rem}.composer-keys{color:var(--muted);margin:.25rem 0 0;font-family:Outfit,sans-serif;font-size:.72rem}.input-row{align-items:stretch;gap:.45rem;display:flex}.input-row input{appearance:none;border:1px solid var(--border);background:var(--surface);min-width:0;color:var(--text);outline:none;flex:1;padding:.7rem .9rem;font-family:Outfit,sans-serif;font-size:.95rem;transition:border-color .2s,box-shadow .2s}.input-row input:focus{border-color:var(--tomato);box-shadow:0 0 0 3px #e8483026}.input-row input::placeholder{color:var(--muted)}.form-error{color:#e07a6a;margin:.55rem 0 0;font-family:Outfit,sans-serif;font-size:.82rem}.task-list{flex-direction:column;gap:.45rem;max-height:min(52vh,420px);margin:0;padding:0;list-style:none;display:flex;overflow:auto}.task-empty{color:var(--muted);padding:1rem .25rem;font-family:Outfit,sans-serif;font-size:.92rem}.task-item{background:var(--surface);border:1px solid #0000;align-items:center;gap:.4rem;padding:.55rem .45rem .55rem .55rem;transition:border-color .2s,background .2s,transform .2s;animation:.35s both slide-in;display:flex}.task-item.active{background:var(--surface-2);border-color:#e8483073}.task-item.done .task-title{color:var(--muted);text-decoration:line-through}.check{border:1.5px solid var(--border);width:1.55rem;height:1.55rem;color:var(--sage);cursor:pointer;background:0 0;flex-shrink:0;place-items:center;font-size:.85rem;transition:border-color .2s,background .2s;display:grid}.task-item.done .check{border-color:var(--sage);background:#2d7a5e33}.task-body{appearance:none;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;min-width:0;padding:.15rem .35rem}.task-depth{appearance:none;cursor:pointer;background:0 0;border:0;flex-shrink:0;place-items:center;width:1.4rem;height:1.4rem;padding:0;display:grid}.task-depth-dot{background:var(--muted);opacity:.85;border-radius:50%;width:.4rem;height:.4rem;transition:background .2s,transform .2s}.task-depth:hover .task-depth-dot{background:var(--tomato);transform:scale(1.15)}.task-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-family:Outfit,sans-serif;font-size:.95rem;display:block;overflow:hidden}.task-meta{color:var(--muted);margin-top:.15rem;font-family:Outfit,sans-serif;font-size:.75rem;display:block}.btn{appearance:none;cursor:pointer;border:1px solid #0000;padding:.7rem 1.35rem;font-family:Outfit,sans-serif;font-size:.92rem;font-weight:500;transition:background .2s,color .2s,border-color .2s,transform .15s}.btn:active{transform:scale(.97)}.btn.primary{background:var(--tomato);color:#fff8f5;border-color:var(--tomato)}.btn.primary:hover{background:#f0563c}.app.shortBreak .btn.primary,.app.longBreak .btn.primary{background:var(--sage);border-color:var(--sage)}.app.shortBreak .btn.primary:hover,.app.longBreak .btn.primary:hover{background:#35906d}.btn.ghost{color:var(--muted);border-color:var(--border);background:0 0}.btn.ghost:hover{color:var(--text);border-color:var(--muted)}.btn.compact{padding:.55rem .85rem}.btn.track.on{color:var(--tomato);border-color:#e8483080}.btn.danger:hover{color:#e07a6a;border-color:#e07a6a80}.task-sheet{width:min(100%,480px);max-height:min(90svh,720px)}.sheet-field{color:var(--muted);flex-direction:column;gap:.35rem;margin-bottom:.9rem;font-family:Outfit,sans-serif;font-size:.8rem;display:flex}.sheet-field input,.sheet-notes,.sheet-append input{appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text);box-sizing:border-box;outline:none;width:100%;padding:.65rem .8rem;font-family:Outfit,sans-serif;font-size:.95rem}.sheet-field input:focus,.sheet-notes:focus,.sheet-append input:focus{border-color:var(--tomato);box-shadow:0 0 0 3px #e848301f}.sheet-notes{resize:vertical;min-height:7rem;line-height:1.45}.sheet-append{gap:.4rem;margin-bottom:1rem;display:flex}.sheet-append input{flex:1;min-width:0}.sheet-checklist{margin-bottom:1.1rem}.sheet-checklist-head{color:var(--muted);justify-content:space-between;align-items:baseline;margin-bottom:.5rem;font-family:Outfit,sans-serif;font-size:.8rem;display:flex}.sheet-checklist-count{font-size:.72rem}.sheet-empty{color:var(--muted);margin:0 0 .65rem;font-family:Outfit,sans-serif;font-size:.85rem}.sheet-checklist ul{flex-direction:column;gap:.35rem;margin:0 0 .65rem;padding:0;list-style:none;display:flex}.sheet-checklist li{color:var(--text);align-items:flex-start;gap:.45rem;font-family:Outfit,sans-serif;font-size:.9rem;animation:.25s both slide-in;display:flex}.sheet-checklist li.done span{color:var(--muted);text-decoration:line-through}.sheet-actions{flex-wrap:wrap;gap:.45rem;display:flex}.footer{text-align:center;color:var(--muted);opacity:.85;margin-top:2.75rem;font-family:Outfit,sans-serif;font-size:.78rem}@media (width<=640px){.task-sheet{align-self:end;width:100%;max-height:78svh}.modal-backdrop:has(.task-sheet){align-items:end;padding:0}.task-sheet{border-bottom:0}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.015)}}@keyframes slide-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}
