:root{--color-bg:#0f0f13;--color-surface:#ffffff0f;--color-border:#ffffff1a;--color-accent:#7c6af7;--color-accent-hover:#6a58e8;--color-text:#f0f0f5;--color-text-muted:#f0f0f580;--color-success:#4ade80;--color-danger:#f87171;--color-danger-hover:#ef5757;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", Consolas, "Liberation Mono", monospace;--line-height-base:1.6;--line-height-tight:1.25;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-sm:0 1px 3px #0006, 0 1px 2px #0000004d;--shadow-md:0 4px 12px #00000080, 0 2px 6px #0000004d;--shadow-lg:0 8px 32px #0009, 0 4px 12px #0006;--z-base:0;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-overlay:300;--z-modal:400;--z-toast:500;--transition-fast:.12s ease;--transition-base:.2s ease;--transition-slow:.35s ease;--focus-ring:0 0 0 3px #7c6af773;font-family:var(--font-sans);font-size:16px;line-height:var(--line-height-base);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--color-text);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme=light]{--color-bg:#f2f2f7;--color-surface:#fffc;--color-border:#0000001a;--color-text:#1c1c1e;--color-text-muted:#1c1c1e73;--color-accent:#6355e0;--color-accent-hover:#5347ca;--color-success:#34c759;--color-danger:#ff3b30;--color-danger-hover:#e0342a;--shadow-sm:0 1px 3px #0000001a, 0 1px 2px #0000000f;--shadow-md:0 4px 12px #0000001a, 0 2px 6px #0000000f;--shadow-lg:0 8px 32px #0000001f, 0 4px 12px #00000014;--focus-ring:0 0 0 3px #6355e04d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background-color:var(--color-bg);color:var(--color-text)}[data-theme=light] .input{background-color:#ffffffe6}[data-theme=light] .card{-webkit-backdrop-filter:blur(12px);background:#ffffffd9}[data-theme=light] .app-header{background:#f2f2f7e0}[data-theme=light] .done-btn--done{color:#1a7a3a;background-color:#34c7591a;border-color:#34c7594d}[data-theme=light] .done-btn--pending{background-color:var(--color-accent);color:#fff}[data-theme=light] .done-btn--future{color:var(--color-text-muted);border-color:var(--color-border);background-color:#0000000a}[data-theme=light] .done-quick-btn--active{background-color:var(--color-success);border-color:var(--color-success);color:#fff}[data-theme=light] .task-card--done{opacity:.55}[data-theme=light]{--card-panel-bg:#0000000d;--cal-missed-bg:#0000000d;--cal-missed-border:#0000001a;--box-missed:#0000002e;--box-future:#00000014}[data-theme=light] .task-card{background:#ffffffe6;border-color:#00000014}[data-theme=light] .task-card .task-card-name{color:var(--color-text)}[data-theme=light] .done-quick-btn{color:#0006;border-color:#0003}[data-theme=light] .progress-dot--missed{background-color:#0000001a;border-color:#00000026}[data-theme=light] .progress-dot--future{background-color:#0000000d;border-color:#00000014}[data-theme=light] .progress-dot--today{border-color:var(--color-accent);background-color:#0000}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-overflow-scrolling:touch;height:100%}body{background-color:var(--color-bg);min-height:100%;color:var(--color-text)}img,svg,video{max-width:100%;display:block}button,input,select,textarea{font:inherit}#root{min-height:100svh;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);flex-direction:column;display:flex}.app-content{width:100%;max-width:600px;padding-inline:var(--space-4);padding-block:var(--space-6);flex:1;margin-inline:auto}h1,h2,h3,h4,h5,h6{line-height:var(--line-height-tight);color:var(--color-text);font-weight:600}h1{letter-spacing:-.03em;font-size:clamp(1.75rem,5vw,2.25rem)}h2{letter-spacing:-.02em;font-size:clamp(1.25rem,4vw,1.5rem)}h3{font-size:1.125rem}h4{font-size:1rem}p{line-height:var(--line-height-base)}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover);text-decoration:underline}.card{background:var(--color-surface);-webkit-backdrop-filter:blur(12px);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-md)}.card-sm{padding:var(--space-4);border-radius:var(--radius-md)}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:44px;padding-inline:var(--space-5);padding-block:var(--space-3);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border:1px solid #0000;font-size:.9375rem;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-primary{background-color:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){background-color:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-primary:active:not(:disabled){background-color:var(--color-accent-hover);opacity:.85}.btn-secondary{color:var(--color-text);border-color:var(--color-border);background-color:#0000}.btn-secondary:hover:not(:disabled){background-color:#ffffff12;border-color:#fff3}.btn-secondary:active:not(:disabled){background-color:#ffffff0a}.btn-danger{color:var(--color-danger);background-color:#0000;border-color:#f8717159}.btn-danger:hover:not(:disabled){border-color:var(--color-danger);background-color:#f871711f}.btn-danger:active:not(:disabled){background-color:#f8717133}.btn-block{width:100%}.input{width:100%;min-height:44px;padding-inline:var(--space-4);padding-block:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:1rem;line-height:var(--line-height-base);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);-webkit-tap-highlight-color:transparent;background-color:#00000059;display:block}.input::placeholder{color:var(--color-text-muted)}.input:focus{border-color:var(--color-accent);box-shadow:var(--focus-ring);outline:none}.input:disabled{opacity:.45;cursor:not-allowed}.input[aria-invalid=true],.input.is-invalid{border-color:var(--color-danger);box-shadow:0 0 0 3px #f871714d}textarea.input{resize:vertical;min-height:96px}.form-group{gap:var(--space-2);flex-direction:column;display:flex}label{color:var(--color-text);font-size:.875rem;font-weight:500}.field-error{color:var(--color-danger);font-size:.8125rem}.text-muted{color:var(--color-text-muted)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.text-sm{font-size:.875rem}.text-xs{font-size:.75rem}.text-lg{font-size:1.125rem}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-4{gap:var(--space-4)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-success{color:var(--color-success)}.text-danger{color:var(--color-danger)}.text-accent{color:var(--color-accent)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-fade-in{animation:fadeIn var(--transition-base) both}.animate-slide-up{animation:slideUp var(--transition-slow) both}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.divider{background-color:var(--color-border);height:1px;margin-block:var(--space-4);border:none}.badge{padding-inline:var(--space-2);border-radius:var(--radius-full);color:var(--color-accent);background-color:#7c6af72e;border:1px solid #7c6af740;align-items:center;padding-block:2px;font-size:.75rem;font-weight:500;line-height:1.4;display:inline-flex}.badge-success{color:var(--color-success);background-color:#4ade8026;border-color:#4ade8040}.badge-danger{color:var(--color-danger);background-color:#f8717126;border-color:#f8717140}.empty-state{justify-content:center;align-items:center;gap:var(--space-4);padding-block:var(--space-16);text-align:center;color:var(--color-text-muted);flex-direction:column;display:flex}.app-header{z-index:var(--z-sticky);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--color-border);background:#0f0f13d9;position:sticky;top:0}.app-header-inner{max-width:600px;padding-inline:var(--space-4);justify-content:space-between;align-items:center;height:56px;margin-inline:auto;display:flex;position:relative}.app-logo{letter-spacing:-.02em;color:var(--color-text);pointer-events:none;font-size:1.05rem;font-weight:700;position:absolute;left:50%;transform:translate(-50%)}.btn-icon{border-radius:var(--radius-sm);width:36px;min-height:36px;padding:0;font-size:1.1rem}.fab{bottom:calc(var(--space-6) + env(safe-area-inset-bottom));right:var(--space-6);border-radius:var(--radius-full);background-color:var(--color-accent);color:#fff;cursor:pointer;width:56px;height:56px;box-shadow:var(--shadow-lg), 0 0 0 0 #7c6af766;transition:background-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast);z-index:var(--z-raised);-webkit-tap-highlight-color:transparent;border:none;justify-content:center;align-items:center;font-size:1.75rem;line-height:1;display:flex;position:fixed}.fab:hover{background-color:var(--color-accent-hover);transform:scale(1.06)}.fab:active{transform:scale(.94)}.home-header{align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-6);display:flex}.task-list{gap:var(--space-3);flex-direction:column;list-style:none;display:flex}.task-card{cursor:pointer;transition:transform var(--transition-fast), box-shadow var(--transition-fast);-webkit-tap-highlight-color:transparent}.task-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-1px)}.task-card:active{transform:scale(.98)}.task-card--done{opacity:.65}.task-card-content{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.task-card-info{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.task-card-name{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:1rem;font-weight:600;overflow:hidden}.done-quick-btn{border-radius:var(--radius-full);border:2px solid var(--color-border);width:40px;height:40px;color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;background:0 0;flex-shrink:0;justify-content:center;align-items:center;font-size:1.1rem;display:flex}.done-quick-btn--active{background-color:var(--color-success);border-color:var(--color-success);color:#000}.done-quick-btn:hover:not(.done-quick-btn--active){border-color:var(--color-success);color:var(--color-success)}.form-stack{gap:var(--space-5);flex-direction:column;display:flex}.form-row{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.form-section-label{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);margin-bottom:calc(-1 * var(--space-2));font-size:.8125rem;font-weight:600}.interval-selector{gap:var(--space-2);flex-wrap:wrap;display:flex}.interval-btn{min-width:90px;padding:var(--space-3) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;background:0 0;flex:1;font-size:.875rem;font-weight:500}.interval-btn--active{border-color:var(--color-accent);color:var(--color-accent);background-color:#7c6af726}.interval-btn:hover:not(.interval-btn--active){color:var(--color-text);border-color:#fff3}.form-actions{gap:var(--space-3);padding-top:var(--space-2);display:flex}.form-actions .btn{flex:1}.task-detail-header{margin-bottom:var(--space-6)}.task-detail-meta{align-items:center;gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.progress-summary{align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.progress-fraction{color:var(--color-accent);font-size:1.5rem;font-weight:700}.progress-dots{flex-wrap:wrap;gap:6px;display:flex}.progress-dot{border-radius:var(--radius-full);cursor:pointer;width:20px;height:20px;transition:transform var(--transition-fast), opacity var(--transition-fast);-webkit-tap-highlight-color:transparent;border:2px solid #0000;padding:0}.progress-dot--done{background-color:var(--color-success);border-color:var(--color-success)}.progress-dot--today{border-color:var(--color-accent);background-color:#0000;box-shadow:0 0 0 2px #7c6af740}.progress-dot--missed{background-color:#ffffff14;border-color:#ffffff1f}.progress-dot--future{cursor:default;background-color:#ffffff0a;border-color:#ffffff0f}.progress-dot:not(.progress-dot--future):hover{transform:scale(1.2)}.done-btn{border-radius:var(--radius-lg);cursor:pointer;width:100%;min-height:56px;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;border:none;font-size:1.125rem;font-weight:600}.done-btn--pending{background-color:var(--color-accent);color:#fff}.done-btn--pending:hover{background-color:var(--color-accent-hover)}.done-btn--done{color:var(--color-success);background-color:#4ade8026;border:2px solid #4ade804d}.done-btn--done:hover{background-color:#4ade8014}.done-btn--future{color:var(--color-text-muted);border:1px solid var(--color-border);cursor:not-allowed;background-color:#0000}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.05)}to{transform:scale(1)}}.done-btn--pop{animation:.35s pop}.task-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.task-actions .btn{flex:1}.notification-banner{margin-bottom:var(--space-4)}.notification-banner--active{background:#4ade800f;border-color:#4ade8040}.notification-banner--warn{background:#f871710f;border-color:#f8717140}.install-guide{margin-bottom:var(--space-4)}.install-steps{padding-left:var(--space-5);gap:var(--space-2);color:var(--color-text-muted);flex-direction:column;margin:0;font-size:.875rem;line-height:1.5;display:flex}.install-icon{vertical-align:middle;font-size:1rem}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:2px solid #ffffff26;border-top-color:var(--color-accent);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin;display:inline-block}
