.app{max-width:1080px;margin:0 auto;padding:28px 20px 60px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.app-title{display:flex;align-items:center;gap:10px;font-size:26px;font-weight:700;margin:0}.app-title .logo{font-size:30px}.app-subtitle{margin:2px 0 0;color:var(--muted);font-size:13px}.header-actions{display:flex;align-items:center;gap:12px}.today-pill{background:var(--card);border:1px solid var(--border);padding:8px 14px;border-radius:999px;font-size:13px;box-shadow:var(--shadow);white-space:nowrap}.today-pill strong{color:var(--work);font-size:15px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.card-head h2{margin:0;font-size:18px}.card-sub{color:var(--muted);font-size:13px}.timer-card{text-align:center;--accent: var(--work);--accent-soft: var(--work-soft)}.timer-card[data-mode=short]{--accent: var(--short);--accent-soft: var(--short-soft)}.timer-card[data-mode=long]{--accent: var(--long);--accent-soft: var(--long-soft)}.mode-tabs{display:flex;justify-content:center;gap:8px;margin-bottom:14px}.mode-tab{border:none;background:transparent;color:var(--muted);padding:8px 18px;border-radius:999px;font-size:14px;font-weight:600;transition:all .15s ease}.mode-tab:hover{color:var(--text)}.mode-tab.active{color:var(--accent);background:var(--accent-soft)}.timer-ring{position:relative;width:300px;height:300px;margin:6px auto 10px}.timer-ring svg{width:100%;height:100%;display:block}.timer-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.timer-time{font-size:60px;font-weight:700;letter-spacing:1px;font-variant-numeric:tabular-nums;line-height:1}.timer-label{color:var(--muted);font-size:14px;margin-top:6px}.timer-controls{display:flex;justify-content:center;gap:12px;margin:8px 0 16px}.btn-primary{background:var(--accent);color:#fff;border:none;padding:12px 32px;border-radius:999px;font-size:16px;font-weight:600;min-width:120px;box-shadow:0 8px 18px #0000001f;transition:transform .1s ease,filter .15s ease}.btn-primary:hover{filter:brightness(1.05)}.btn-primary:active{transform:translateY(1px)}.btn-ghost{background:var(--accent-soft);color:var(--accent);border:none;padding:12px 20px;border-radius:999px;font-size:14px;font-weight:600}.btn-ghost:hover{filter:brightness(.97)}.round-dots{display:flex;align-items:center;justify-content:center;gap:8px}.round-dots .dot{width:10px;height:10px;border-radius:50%;background:var(--track)}.round-dots .dot.filled{background:var(--accent)}.round-text{margin-left:10px;font-size:12px;color:var(--muted)}.active-task{margin-top:14px;font-size:14px;display:inline-block;padding:8px 16px;border-radius:999px;background:var(--accent-soft)}.active-task strong{color:var(--accent)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px;align-items:start}.todo-form{display:flex;gap:8px;margin-bottom:14px}.input{border:1px solid var(--border);border-radius:12px;padding:10px 12px;font-size:14px;background:#fafafc;color:var(--text);outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.input:focus{border-color:var(--work);box-shadow:0 0 0 3px var(--work-soft);background:#fff}.todo-form .input{flex:1;min-width:0}.est-input{width:64px;text-align:center}.btn-add{padding:10px 18px;min-width:auto}.todo-list{list-style:none;margin:0;padding:0;max-height:320px;overflow-y:auto}.todo-empty{text-align:center;padding:26px 0;font-size:14px}.todo-item{display:flex;align-items:center;gap:10px;padding:8px;border-radius:12px;transition:background .12s ease}.todo-item:hover{background:#fafafc}.todo-item.active{background:var(--work-soft)}.todo-item.done .todo-title{text-decoration:line-through;color:var(--muted)}.todo-radio,.todo-check{width:26px;height:26px;border-radius:50%;border:2px solid var(--border);background:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;flex:none;transition:all .12s ease;padding:0}.todo-radio:hover{border-color:var(--work)}.todo-radio.on{border-color:var(--work);background:var(--work)}.todo-check{border-radius:8px}.todo-check:hover{border-color:var(--short)}.todo-check.on{border-color:var(--short);background:var(--short);color:#fff}.todo-title{flex:1;font-size:14px;word-break:break-word}.todo-meta{font-size:12px;color:var(--muted);white-space:nowrap}.todo-delete{background:none;border:none;color:var(--muted);font-size:14px;padding:4px 6px;border-radius:8px}.todo-delete:hover{color:var(--work);background:var(--work-soft)}.todo-footer{display:flex;align-items:center;justify-content:space-between;margin-top:12px;font-size:13px}.btn-link{background:none;border:none;color:var(--muted);font-size:13px;text-decoration:underline}.btn-link:hover{color:var(--work)}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:18px}.stat{background:#fafafc;border-radius:14px;padding:14px 10px;text-align:center}.stat-value{font-size:22px;font-weight:700;line-height:1.2}.stat-label{color:var(--muted);font-size:12px;margin-top:4px}.chart{margin-top:6px}.chart-title{font-size:12px;margin-bottom:10px}.chart-bars{display:flex;align-items:flex-end;gap:10px;height:150px}.chart-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%}.bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center}.bar{width:70%;max-width:30px;border-radius:8px 8px 4px 4px;background:linear-gradient(var(--work),#f78c89);transition:height .3s ease;position:relative;display:flex;justify-content:center}.bar.today{background:linear-gradient(var(--work),#d9453f);box-shadow:0 4px 10px #ef535059}.bar-val{position:absolute;top:-18px;font-size:11px;color:var(--muted)}.bar-day{font-size:12px;color:var(--muted)}.bar-day.today{color:var(--work);font-weight:700}.btn-icon{background:var(--card);border:1px solid var(--border);width:40px;height:40px;border-radius:12px;font-size:18px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow)}.btn-icon:hover{background:#fafafc}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#281e3c59;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{width:100%;max-width:460px}.modal .card-head .btn-icon{box-shadow:none}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.field .input{width:100%;color:var(--text)}.settings-toggles{display:flex;flex-direction:column;gap:4px;margin-top:16px}.toggle{display:flex;align-items:center;justify-content:space-between;font-size:14px;padding:8px 0}.switch{width:44px;height:26px;border-radius:999px;border:none;background:#d7d7e0;position:relative;transition:background .15s ease;padding:0}.switch .knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:left .15s ease}.switch.on{background:var(--work)}.switch.on .knob{left:21px}.settings-note{margin-top:16px;font-size:12px}.app-footer{text-align:center;color:var(--muted);font-size:12px;margin-top:30px}@media (max-width: 860px){.grid{grid-template-columns:1fr}.app-title{font-size:22px}}@media (max-width: 560px){.app{padding:20px 14px 50px}.timer-ring{width:260px;height:260px}.timer-time{font-size:50px}.header-actions .today-pill{display:none}.timer-controls{flex-wrap:wrap}.settings-grid{grid-template-columns:1fr}}:root{--work: #ef5350;--work-soft: #fdeceb;--short: #26a69a;--short-soft: #e1f4f1;--long: #5b8def;--long-soft: #e9f0ff;--track: #ece9f2;--text: #2b2b3a;--muted: #8a8a99;--card: #ffffff;--border: #eeeef3;--shadow: 0 10px 30px rgba(80, 70, 110, .08);--radius: 22px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Roboto,Helvetica,Arial,sans-serif;color:var(--text);background:linear-gradient(160deg,#fff1ec,#ffe4ee 45%,#f1e8ff);background-attachment:fixed;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit;cursor:pointer}input{font-family:inherit}.muted{color:var(--muted)}::selection{background:var(--work-soft)}
