*,:after,:before{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100%;overflow-x:hidden;overflow-y:auto}ol,ul{list-style:none}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit;border:none;outline:none;background:none}button{cursor:pointer}a{color:inherit;text-decoration:none}:root{--bg:#0a0e1a;--bg-card:#131829;--bg-card-hover:#1a2035;--bg-elevated:#1c2137;--bg-input:#0f1424;--border:hsla(0,0%,100%,.06);--border-strong:hsla(0,0%,100%,.12);--text:#f0f2f5;--text-secondary:#8a94a6;--text-tertiary:#5a6478;--text-inverse:#0a0e1a;--accent:#3b82f6;--accent-hover:#2563eb;--accent-light:rgba(59,130,246,.12);--accent-glow:rgba(59,130,246,.25);--success:#22c55e;--success-light:rgba(34,197,94,.12);--warning:#f59e0b;--warning-light:rgba(245,158,11,.12);--danger:#ef4444;--danger-light:rgba(239,68,68,.12);--cyan:#06b6d4;--cyan-light:rgba(6,182,212,.12);--orange:#f97316;--orange-light:rgba(249,115,22,.12);--purple:#8b5cf6;--purine-low:#22c55e;--purine-moderate:#f59e0b;--purine-high:#f97316;--purine-very-high:#ef4444;--shadow-sm:0 1px 3px rgba(0,0,0,.4);--shadow-md:0 4px 12px rgba(0,0,0,.5);--shadow-lg:0 12px 32px rgba(0,0,0,.6);--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-full:9999px;--font:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",Roboto,Helvetica,Arial,sans-serif;--transition:200ms ease;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--nav-height:68px}html[data-theme=light]{--bg:#f4f6f9;--bg-card:#fff;--bg-card-hover:#f0f2f5;--bg-elevated:#fff;--bg-input:#f4f6f9;--border:rgba(0,0,0,.06);--border-strong:rgba(0,0,0,.1);--text:#111827;--text-secondary:#6b7280;--text-tertiary:#9ca3af;--text-inverse:#fff;--accent-light:rgba(59,130,246,.08);--accent-glow:rgba(59,130,246,.15);--shadow-sm:0 1px 3px rgba(0,0,0,.06);--shadow-md:0 4px 12px rgba(0,0,0,.08);--shadow-lg:0 12px 32px rgba(0,0,0,.12)}body{font-family:var(--font);font-size:16px;line-height:1.5;color:var(--text);background:var(--bg);min-height:100%;overflow-x:hidden;-webkit-overflow-scrolling:touch}::selection{background:var(--accent-light);color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}.page{max-width:430px;margin:0 auto;padding:calc(var(--safe-top) + 12px) 16px calc(var(--nav-height) + var(--safe-bottom) + 32px);min-height:100vh;overflow-y:auto}.page-full{min-height:100vh;padding-top:var(--safe-top)}@media (min-width:500px){html{background:#050810}html[data-theme=light]{background:#e2e6ec}body{max-width:430px;margin:0 auto;min-height:100vh;position:relative;box-shadow:0 0 80px rgba(59,130,246,.08),0 0 0 1px var(--border);border-radius:0}.bottom-nav{max-width:430px;margin-left:auto;margin-right:auto}.toast{max-width:390px}.fab{right:calc(50% - 215px + 20px)}}.section{margin-bottom:24px}.section-label{font-size:13px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px;padding-bottom:8px;border-bottom:2px solid var(--accent);display:inline-block}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;transition:background var(--transition),border-color var(--transition)}.card:hover{border-color:var(--border-strong)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;border-radius:var(--radius-md);font-size:15px;font-weight:600;line-height:1;white-space:nowrap;transition:all var(--transition);position:relative}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;pointer-events:none}.btn-full{width:100%}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 2px 10px var(--accent-glow)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:transparent;color:var(--accent);border:1.5px solid var(--accent)}.btn-secondary:hover{background:var(--accent-light)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--accent-light);color:var(--accent)}.btn-sm{padding:8px 14px;font-size:13px}.btn-lg{padding:16px 28px;font-size:17px;border-radius:var(--radius-lg)}.input{width:100%;padding:12px 16px;font-size:15px;color:var(--text);background:var(--bg-input);border:1.5px solid var(--border-strong);border-radius:var(--radius-md);transition:border-color var(--transition),box-shadow var(--transition)}.input::placeholder{color:var(--text-tertiary)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:600;line-height:1;border-radius:var(--radius-full);white-space:nowrap}.badge-success{background:var(--success-light);color:var(--success)}.badge-warning{background:var(--warning-light);color:var(--warning)}.badge-danger{background:var(--danger-light);color:var(--danger)}.badge-info{background:var(--accent-light);color:var(--accent)}.progress-track{width:100%;height:8px;background:var(--border);overflow:hidden}.progress-fill,.progress-track{border-radius:var(--radius-full)}.progress-fill{height:100%;transition:width .6s cubic-bezier(.25,1,.5,1)}.toggle{position:relative;width:50px;height:30px;background:var(--border-strong);border-radius:var(--radius-full);cursor:pointer;transition:background var(--transition);flex-shrink:0;border:none}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;background:#fff;border-radius:var(--radius-full);box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform var(--transition)}.toggle-active{background:var(--accent)}.toggle-active:after{transform:translateX(20px)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--nav-height) + var(--safe-bottom));background:var(--bg-card);border-top:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-around;padding-top:8px;padding-bottom:var(--safe-bottom);z-index:200}.nav-item{display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 12px;font-size:10px;font-weight:500;color:var(--text-tertiary);transition:color var(--transition);min-width:56px}.nav-item svg{width:24px;height:24px;transition:transform var(--transition)}.nav-item.active{color:var(--accent)}.nav-item.active svg{transform:scale(1.1)}.nav-item:active svg{transform:scale(.9)}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;z-index:500;animation:fadeIn .15s ease}.modal-sheet{background:var(--bg-card);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:24px 20px calc(32px + var(--safe-bottom));width:100%;max-width:430px;max-height:90vh;overflow-y:auto;animation:slideUp .25s cubic-bezier(.16,1,.3,1)}.modal-center{align-items:center}.modal-center .modal-sheet{border-radius:var(--radius-xl);margin:20px;padding-bottom:24px;animation:scaleIn .2s cubic-bezier(.16,1,.3,1)}.toast{position:fixed;bottom:calc(var(--nav-height) + var(--safe-bottom) + 16px);left:50%;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:12px 20px;border-radius:var(--radius-full);font-size:14px;font-weight:500;box-shadow:var(--shadow-lg);z-index:600;animation:slideUp .25s cubic-bezier(.16,1,.3,1),fadeIn .15s ease;white-space:nowrap}.toast-success{background:var(--success);color:#fff}.toast-danger{background:var(--danger);color:#fff}.spinner{width:24px;height:24px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.spinner-lg{width:36px;height:36px;border-width:4px}.empty-state{flex-direction:column;text-align:center;padding:48px 24px;gap:12px}.empty-icon,.empty-state{display:flex;align-items:center}.empty-icon{width:64px;height:64px;border-radius:var(--radius-full);background:var(--accent-light);color:var(--accent);justify-content:center}.empty-title{font-size:17px;font-weight:600;color:var(--text)}.empty-text{font-size:14px;color:var(--text-secondary);max-width:280px;line-height:1.5}.fab{position:fixed;bottom:calc(var(--nav-height) + var(--safe-bottom) + 16px);right:20px;width:56px;height:56px;border-radius:var(--radius-full);background:var(--accent);color:#fff;border:none;box-shadow:0 4px 20px var(--accent-glow);display:flex;align-items:center;justify-content:center;z-index:250;transition:all var(--transition)}.fab:hover{transform:translateY(-2px);box-shadow:0 8px 28px var(--accent-glow)}.fab:active{transform:translateY(0) scale(.95)}.reminder-select,.reminder-time{padding:8px 12px;font-size:14px;font-weight:600;color:var(--text);background:var(--bg-input);border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);transition:border-color var(--transition);-webkit-appearance:none;-moz-appearance:none;appearance:none}.reminder-select:focus,.reminder-time:focus{border-color:var(--accent);outline:none}.reminder-select{padding-right:28px;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%235a6478' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.reminder-time::-webkit-calendar-picker-indicator{filter:invert(.5)}html[data-theme=light] .reminder-time::-webkit-calendar-picker-indicator{filter:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-fadeIn{animation:fadeIn .2s ease forwards}.animate-fadeInUp{animation:fadeInUp .3s ease forwards}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}}body.capacitor{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:none}body.capacitor input,body.capacitor textarea{-webkit-user-select:text;-moz-user-select:text;user-select:text}@media (max-width:375px){.page{padding:calc(var(--safe-top) + 12px) 14px calc(var(--nav-height) + var(--safe-bottom) + 24px)}}@media (min-width:500px){.modal-overlay{max-width:430px;left:50%;transform:translateX(-50%)}}