:root{color-scheme:dark;--bg: #0b1220;--surface: #121a2b;--surface-2: #1a2438;--border: #2a3650;--text: #e8eefc;--muted: #93a0b8;--accent: #14b8a6;--accent-2: #0f766e;--danger: #f87171;--warn: #fbbf24;--ok: #34d399;--radius: 14px;--safe-bottom: env(safe-area-inset-bottom, 0px);font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.45;font-weight:400;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:radial-gradient(1200px 600px at 50% -10%,#134e4a55,transparent),var(--bg)}a{color:var(--accent);text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:var(--accent-2);color:#fff;border-radius:10px;padding:.65rem 1rem;font-weight:600}button.secondary{background:var(--surface-2);border:1px solid var(--border)}button.danger{background:#7f1d1d}button:disabled{opacity:.5;cursor:not-allowed}.app-shell{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding-bottom:calc(64px + var(--safe-bottom))}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1rem;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.brand{font-weight:800;letter-spacing:-.02em}.brand span{color:var(--accent)}.badge{font-size:.7rem;padding:.2rem .5rem;border-radius:999px;background:#134e4a;color:#99f6e4}.nav{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:min(480px,100%);display:grid;grid-template-columns:repeat(4,1fr);gap:.25rem;padding:.45rem .5rem calc(.45rem + var(--safe-bottom));background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border)}.nav a{text-align:center;padding:.45rem .2rem;border-radius:10px;color:var(--muted);font-size:.75rem;font-weight:600}.nav a.active{color:var(--text);background:var(--surface-2)}.nav .ico{display:block;font-size:1.1rem;margin-bottom:.1rem}main{padding:1rem;flex:1}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-bottom:.85rem}.card h2,.card h3{margin:0 0 .6rem;font-size:1rem}.muted{color:var(--muted);font-size:.9rem}.row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.stack{display:flex;flex-direction:column;gap:.65rem}.totals{display:grid;gap:.5rem}.total-pill{display:flex;justify-content:space-between;align-items:baseline;padding:.75rem .9rem;border-radius:12px;background:linear-gradient(135deg,#134e4a,#0f172a);border:1px solid #115e59}.total-pill strong{font-size:1.25rem}.list{list-style:none;margin:0;padding:0}.list li{display:flex;justify-content:space-between;gap:.75rem;padding:.75rem 0;border-bottom:1px solid var(--border)}.list li:last-child{border-bottom:none}.sub-name{font-weight:650}.status{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;padding:.15rem .4rem;border-radius:6px;background:var(--surface-2)}.status.active{color:var(--ok)}.status.paused{color:var(--warn)}.status.canceled{color:var(--danger)}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem}.cal-head,.cal-day{text-align:center;font-size:.7rem;color:var(--muted)}.cal-day{aspect-ratio:1;border-radius:8px;background:var(--surface-2);display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;border:1px solid transparent}.cal-day.has-charge{border-color:var(--accent);color:var(--text);font-weight:700}.cal-day.today{outline:2px solid #38bdf8}.cal-dot{width:4px;height:4px;border-radius:50%;background:var(--accent);margin-top:2px}.form label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--muted)}.form input,.form select,.form textarea{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:.65rem .75rem}.form textarea{min-height:72px;resize:vertical}.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.empty{text-align:center;padding:1.5rem 1rem;color:var(--muted)}.paywall{text-align:center;padding:1.5rem 1rem}.paywall .lock{font-size:2.5rem;margin-bottom:.5rem}.paywall ul{text-align:left;color:var(--muted);margin:1rem auto;max-width:280px}.banner{background:#422006;border:1px solid #92400e;color:#fde68a;border-radius:10px;padding:.65rem .8rem;margin-bottom:.85rem;font-size:.85rem}.spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:2rem auto}@keyframes spin{to{transform:rotate(360deg)}}.alert-list{display:flex;flex-direction:column;gap:.5rem}.alert-chip{display:flex;align-items:center;gap:.65rem;padding:.65rem .75rem;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);color:inherit;text-decoration:none}.alert-chip.window-1{border-color:#b91c1c;background:#450a0a55}.alert-chip.window-3{border-color:#b45309;background:#451a0355}.alert-chip.window-7{border-color:#0f766e;background:#042f2e55}.alert-chip.locked{opacity:.85;border-style:dashed}.alert-badge{flex-shrink:0;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.25rem .45rem;border-radius:8px;background:var(--bg);color:var(--accent)}.alert-chip.window-1 .alert-badge{color:#fca5a5}.alert-chip.window-3 .alert-badge{color:#fcd34d}.alert-body{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:0}.alert-body strong{font-size:.95rem}.alert-unlock{font-size:.8rem;font-weight:700;white-space:nowrap}.paywall-banner{background:#3b0764!important;border-color:#7e22ce!important;color:#e9d5ff!important}.paywall-inline{margin-top:.75rem;padding:.85rem;border-radius:12px;background:#1e1b4b;border:1px dashed #6366f1;text-align:center}.paywall-inline p{margin:0 0 .65rem;color:var(--muted);font-size:.9rem}.checklist{list-style:none;margin:.5rem 0 0;padding:0}.checklist li{padding:.55rem 0;border-bottom:1px solid var(--border)}.checklist li:last-child{border-bottom:none}.checklist label{display:flex;align-items:flex-start;gap:.6rem;cursor:pointer;color:var(--text);font-size:.95rem}.checklist label.done span{text-decoration:line-through;color:var(--muted)}.checklist input[type=checkbox]{margin-top:.2rem;width:1.05rem;height:1.05rem;accent-color:var(--accent)}code{font-size:.8em;background:var(--surface-2);padding:.1rem .35rem;border-radius:4px}
