:root{--bg: #0f1117;--surface: #181b23;--surface-hover: #1e222c;--border: rgba(255, 255, 255, .08);--text: #e8eaed;--text-secondary: #8b8f98;--accent: #6c8cff;--accent-hover: #8aa4ff;--danger: #ff6b6b;--danger-bg: rgba(255, 107, 107, .08);--urgent: #ff6b6b;--urgent-bg: rgba(255, 107, 107, .1);--soon: #f0a040;--soon-bg: rgba(240, 160, 64, .1);--overdue: #ff4040;--overdue-bg: rgba(255, 64, 64, .12);--radius: .625rem;--radius-sm: .375rem;--shadow: 0 1px 3px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .2);--shadow-lg: 0 8px 30px rgba(0, 0, 0, .45);--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:dark}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.5;-webkit-font-smoothing:antialiased}.app{max-width:52rem;margin:0 auto;padding:2rem 1.25rem 4rem}.app-header{margin-bottom:2rem}.app-header h1{font-size:1.75rem;font-weight:700;letter-spacing:-.03em;color:#fff}.subtitle{color:var(--text-secondary);font-size:.95rem;margin-top:.25rem}.summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-bottom:1.5rem}.summary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.25rem;display:flex;flex-direction:column;gap:.3rem;box-shadow:var(--shadow)}.summary-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);font-weight:500}.summary-value{font-size:1.5rem;font-weight:700;font-family:var(--mono);color:#fff;letter-spacing:-.02em}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.filters{display:flex;gap:.375rem}.filter-btn{background:var(--surface);border:1px solid var(--border);color:var(--text-secondary);font-size:.8rem;font-weight:500;padding:.4rem .85rem;border-radius:var(--radius-sm);cursor:pointer;transition:all .15s}.filter-btn:hover{color:var(--text);background:var(--surface-hover)}.filter-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.add-btn{background:var(--accent);color:#fff;border:none;font-size:.85rem;font-weight:600;padding:.5rem 1.1rem;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s;white-space:nowrap}.add-btn:hover{background:var(--accent-hover)}.sub-list{display:flex;flex-direction:column;gap:.625rem}.sub-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;box-shadow:var(--shadow);transition:border-color .2s,background .2s}.sub-card:hover{background:var(--surface-hover)}.sub-card.soon{border-left:3px solid var(--soon);background:var(--soon-bg)}.sub-card.urgent{border-left:3px solid var(--urgent);background:var(--urgent-bg)}.sub-card.overdue{border-left:3px solid var(--overdue);background:var(--overdue-bg)}.sub-info{flex:1;min-width:0}.sub-header{display:flex;align-items:center;gap:.625rem;flex-wrap:wrap}.sub-name{font-size:1rem;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:.15rem .5rem;border-radius:999px;white-space:nowrap}.badge.soon{background:var(--soon);color:#000}.badge.urgent{background:var(--urgent);color:#fff}.badge.overdue{background:var(--overdue);color:#fff}.sub-meta{display:flex;align-items:baseline;gap:.4rem;margin-top:.3rem;flex-wrap:wrap}.sub-cost{font-size:1.1rem;font-weight:700;font-family:var(--mono);color:#fff}.sub-cycle{font-size:.8rem;color:var(--text-secondary)}.sub-date{font-size:.8rem;color:var(--text-secondary);margin-left:.5rem}.sub-actions{display:flex;gap:.375rem;flex-shrink:0}.icon-btn{background:transparent;border:1px solid var(--border);color:var(--text-secondary);width:2rem;height:2rem;border-radius:var(--radius-sm);display:grid;place-items:center;cursor:pointer;font-size:.85rem;transition:all .15s}.icon-btn:hover{background:var(--surface-hover);color:var(--text)}.icon-btn.danger:hover{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}.empty-state{text-align:center;color:var(--text-secondary);padding:3rem 1rem;font-size:.95rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:center;z-index:100;padding:1rem;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:2rem;width:100%;max-width:26rem;box-shadow:var(--shadow-lg)}.modal h2{font-size:1.2rem;font-weight:700;margin-bottom:1.5rem;color:#fff}.modal label{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;font-weight:500;color:var(--text-secondary);margin-bottom:1rem}.modal input,.modal select{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font);font-size:.9rem;padding:.55rem .75rem;margin-top:.15rem;transition:border-color .15s;width:100%}.modal input:focus,.modal select:focus{outline:none;border-color:var(--accent)}.modal input::placeholder{color:#fff3}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.75rem}.btn-primary{background:var(--accent);color:#fff;border:none;font-size:.85rem;font-weight:600;padding:.5rem 1.2rem;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:transparent;color:var(--text-secondary);border:1px solid var(--border);font-size:.85rem;font-weight:500;padding:.5rem 1.2rem;border-radius:var(--radius-sm);cursor:pointer;transition:all .15s}.btn-secondary:hover{color:var(--text);background:var(--surface-hover)}@media(max-width:600px){.app{padding:1.25rem .75rem 3rem}.summary{grid-template-columns:1fr}.summary-value{font-size:1.25rem}.toolbar{flex-direction:column;align-items:stretch}.filters{flex-wrap:wrap}.add-btn{text-align:center}.sub-card{flex-direction:column;align-items:flex-start;gap:.75rem;padding:.85rem 1rem}.sub-actions{align-self:flex-end}.modal{padding:1.5rem}}
