:root{--bg-color: #0d0e12;--surface-color: rgba(255, 255, 255, .03);--surface-border: rgba(255, 255, 255, .08);--accent-primary: #8e2de2;--accent-secondary: #4a00e0;--accent-glow: rgba(142, 45, 226, .4);--text-primary: #f8f9fa;--text-secondary: #a0a0a0;--glass-bg: rgba(255, 255, 255, .05);--glass-blur: 12px;--font-main: "Outfit", "Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-primary);font-family:var(--font-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;overflow-x:hidden}h1,h2,h3{font-weight:700;letter-spacing:-.02em}a{color:var(--accent-primary);text-decoration:none;transition:opacity .2s ease}a:hover{opacity:.8}.App{min-height:100vh;padding:1.5rem;background:radial-gradient(circle at top right,rgba(74,0,224,.1),transparent),radial-gradient(circle at bottom left,rgba(142,45,226,.1),transparent),var(--bg-color)}.App-header{max-width:1000px;margin:0 auto}.header-meta{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:2rem;position:relative}.header-actions{display:flex;gap:.5rem;align-items:center;position:absolute;top:-.5rem;right:0}.separator{color:var(--surface-border);font-size:.65rem;opacity:.5}.logout-link{background:transparent;border:none;color:var(--text-secondary);font-size:.65rem;cursor:pointer;text-decoration:underline;transition:color .2s;opacity:.7}.logout-link:hover{color:var(--accent-primary)}.header-tabs{display:flex;gap:0;border-bottom:1px solid var(--surface-border);margin-bottom:1.5rem}.header-tab{background:none;border:none;color:var(--text-secondary);font-size:.95rem;padding:.75rem 1.25rem;cursor:pointer;border-bottom:2px solid transparent;transition:all .2s ease}.header-tab:hover{color:#fff}.header-tab.active{color:#fff;border-bottom-color:#6c5ce7}.tab-placeholder{text-align:center;padding:3rem 1rem;color:var(--text-secondary)}.tab-placeholder h2{color:#fff;margin-bottom:.5rem}.App-header h1{font-size:1.5rem;margin:0;background:linear-gradient(135deg,#fff,#a0a0a0);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-align:left}.dashboard-content{max-width:1000px;margin:0 auto}.search-bar-container{margin-bottom:1.5rem;width:100%}.search-input{width:100%;background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--surface-border);padding:.85rem 1.25rem;border-radius:1rem;color:#fff;font-size:1rem;outline:none;transition:all .2s ease}.search-input:focus{border-color:var(--accent-primary);background:#ffffff14;box-shadow:0 0 15px var(--accent-glow)}.item-list{display:flex;flex-direction:column;gap:.75rem;width:100%}.item-card{display:flex;align-items:center;justify-content:flex-start;background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--surface-border);padding:.75rem 1rem;border-radius:1rem;transition:all .2s ease;gap:.75rem;width:100%;text-align:left;overflow:hidden;box-sizing:border-box}.item-card.single-line:hover{background:#ffffff14;border-color:#ffffff26}.add-button{background:transparent;border:1px dashed var(--surface-border);cursor:pointer;color:var(--text-secondary);justify-content:center}.add-button:hover{border-color:var(--accent-primary);color:#fff;background:#8e2de20d}.add-content{display:flex;align-items:center;gap:.75rem;font-weight:500}.plus-icon{font-size:1.25rem;margin-top:-2px}.subscriber-name-chip{flex:1;min-width:0;padding:.35rem .75rem;border-radius:2rem;transition:all .2s ease}.subscriber-name-chip.clickable{cursor:pointer}.subscriber-name-chip.clickable:hover{filter:brightness(1.2);transform:translateY(-1px)}.subscriber-name-chip.clickable:active{transform:translateY(0)}.subscriber-name-chip.payed{background:#2ed5731a;border:1px solid rgba(46,213,115,.2)}.subscriber-name-chip.to_pay{background:#ff47571a;border:1px solid rgba(255,71,87,.2)}.subscriber-name-chip h3{font-size:.9rem;font-weight:500;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}.subscription-summary{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.subscription-info{display:flex;justify-content:flex-end;flex-grow:1}.session-chip{padding:.35rem .75rem;border-radius:2rem;font-size:.8rem;font-weight:600;font-family:monospace;white-space:nowrap;min-width:50px;text-align:center;flex-shrink:0}.session-chip.clickable{cursor:pointer;transition:transform .1s active,box-shadow .2s ease}.session-chip.clickable:hover{filter:brightness(1.2)}.session-chip.clickable:active{transform:scale(.95)}.session-chip.no-sub{background:#ffffff0d;color:var(--text-secondary);border:1px dashed rgba(255,255,255,.2);cursor:pointer;font-size:.75rem;font-weight:500;font-family:inherit;transition:all .2s ease}.session-chip.no-sub:hover{color:#fff;border-color:var(--accent-primary);background:#8e2de21a}.session-chip.payed{background:#2ed5731f;color:#2ed573;border:1px solid rgba(46,213,115,.25)}.session-chip.to_pay{background:#ff47571f;color:#ff4757;border:1px solid rgba(255,71,87,.25)}.session-status-icon{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:none;transition:all .2s cubic-bezier(.2,.8,.2,1)}.session-status-icon.add{background:var(--accent-primary);cursor:pointer;box-shadow:0 4px 10px #0000004d}.session-status-icon.add:hover{transform:scale(1.1);background:#9d3bf5;box-shadow:0 0 15px var(--accent-glow)}.session-status-icon.add:active{transform:scale(.9)}.session-status-icon.inactive{background:#ffffff14;border:1px solid rgba(255,255,255,.1)}.session-status-icon.checked{background:#2ed573;box-shadow:0 0 10px #2ed57366}.session-status-icon.remove{background:#ff475726;border:1px solid rgba(255,71,87,.3);cursor:pointer}.session-status-icon.remove:hover{background:#ff4757;transform:scale(1.1);box-shadow:0 0 12px #ff475780}.session-status-icon.remove:active{transform:scale(.9)}.calendar-btn{width:44px;height:44px;border-radius:.75rem;background:#ffffff0d;color:#fff;border:1px solid var(--surface-border);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.25rem;transition:all .2s ease;flex-shrink:0}.calendar-btn:hover{background:#ffffff1a;border-color:var(--accent-primary);transform:translateY(-2px)}.empty-state{color:var(--text-secondary);font-size:.8rem}.modal-overlay{position:fixed;inset:0;background:#000c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#1a1b23;border:1px solid var(--surface-border);padding:2.5rem;border-radius:1.5rem;width:90%;max-width:400px;box-shadow:0 24px 48px #00000080}.modal-content h2{margin-bottom:.5rem;font-size:1.25rem;color:#fff}.modal-subtext{color:var(--text-secondary);font-size:.9rem;margin-bottom:2rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;margin-bottom:.5rem;font-size:.85rem;color:var(--text-secondary)}.form-group input{width:100%;background:#ffffff08;border:1px solid var(--surface-border);padding:.75rem 1rem;border-radius:.75rem;color:#fff;font-size:1rem;outline:none}.error-text{color:#ff6b6b;font-size:.8rem;margin-top:.35rem;display:block}.payment-switch-container{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin:2rem 0;font-weight:600;font-size:.9rem}.active-red{color:#ff4757}.active-green{color:#2ed573}.switch{width:60px;height:30px;background:#ffffff0d;border-radius:15px;padding:3px;cursor:pointer;position:relative;transition:background .3s;border:1px solid var(--surface-border)}.switch.to_pay{background:#ff47571a;border-color:#ff47574d}.switch.payed{background:#2ed5731a;border-color:#2ed5734d}.switch-thumb{width:24px;height:24px;background:#fff;border-radius:50%;transition:transform .3s cubic-bezier(.4,0,.2,1)}.switch.payed .switch-thumb{transform:translate(30px);background:#2ed573;box-shadow:0 0 10px #2ed57380}.switch.to_pay .switch-thumb{background:#ff4757;box-shadow:0 0 10px #ff475780}.checkbox-group{display:flex;align-items:center;gap:.75rem;margin-top:1.5rem;padding:1rem;background:#ffffff05;border-radius:.75rem;border:1px solid var(--surface-border)}.checkbox-group input{width:18px;height:18px;accent-color:var(--accent-primary);cursor:pointer}.checkbox-group label{font-size:.9rem;color:var(--text-primary);cursor:pointer}.modal-actions{display:flex;gap:1rem;margin-top:2rem}.modal-actions button{flex:1;padding:.75rem;border-radius:.75rem;font-weight:600;cursor:pointer}.btn-primary{background:var(--accent-primary);color:#fff;border:none}.btn-primary:hover{background:#9d3bf5}.btn-secondary{background:transparent;color:var(--text-secondary);border:1px solid var(--surface-border)}@media(max-width:600px){.App{padding:1rem}.header-meta h1{font-size:1.25rem}.item-card{padding:.5rem .75rem;gap:.75rem}.progress-bar-small{display:none}.subscription-summary{gap:.5rem}.session-status-icon,.calendar-btn{width:34px;height:34px}.subscriber-name-chip{padding:.35rem .75rem}.subscriber-name-chip h3{font-size:.85rem}}@media(max-width:400px){.header-actions{gap:.5rem}.logout-link{font-size:.75rem}.item-card{padding:.4rem .6rem;gap:.4rem;flex-wrap:nowrap}.subscriber-name-chip{padding:.25rem .5rem}.session-status-icon,.calendar-btn{width:34px;height:34px}.session-chip{padding:.25rem .5rem;font-size:.7rem;min-width:40px}}.sessions-toolbar{display:flex;justify-content:flex-end;margin-bottom:.75rem}.filter-toggle-btn{display:flex;align-items:center;gap:.5rem;background:#ffffff0d;border:1px solid var(--surface-border);color:var(--text-secondary);padding:.5rem .85rem;border-radius:.6rem;cursor:pointer;font-size:.8rem;transition:all .2s ease}.filter-toggle-btn:hover{color:#fff;border-color:#fff3}.filter-toggle-btn.active{color:var(--accent-primary);border-color:var(--accent-primary)}.sessions-filters{margin-bottom:1.5rem;animation:fadeIn .2s ease-out}.date-filter-row{display:flex;gap:.75rem;align-items:flex-end}.date-filter-group{flex:1}.date-filter-group label{display:block;font-size:.8rem;color:var(--text-secondary);margin-bottom:.35rem}.date-filter-group input{width:100%;background:var(--glass-bg);border:1px solid var(--surface-border);padding:.65rem .75rem;border-radius:.75rem;color:#fff;font-size:.9rem;outline:none}.date-filter-group input:focus{border-color:var(--accent-primary)}.clear-filter-btn{background:none;border:1px solid var(--surface-border);color:var(--text-secondary);padding:.65rem 1rem;border-radius:.75rem;cursor:pointer;font-size:.8rem;white-space:nowrap;transition:all .2s ease}.clear-filter-btn:hover{color:#fff;border-color:#fff3}.session-card{display:flex;flex-direction:column;background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));border:1px solid var(--surface-border);border-radius:1rem;padding:.85rem 1rem;transition:all .2s ease}.session-card.future{border-left:3px solid #2ed573}.session-card.past{border-left:3px solid #ff4757}.session-card-main{display:flex;align-items:center;gap:.75rem}.session-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.session-status-dot.future{background:#2ed573;box-shadow:0 0 6px #2ed57380}.session-status-dot.past{background:#ff4757;box-shadow:0 0 6px #ff475780}.session-card-info{flex:1;display:flex;flex-direction:column;gap:.15rem;min-width:0}.session-card-date{font-size:.95rem;font-weight:500;color:#fff;text-transform:capitalize}.session-card-count{font-size:.8rem;color:var(--text-secondary)}.session-card-actions{display:flex;gap:.35rem;flex-shrink:0}.session-action-btn{width:36px;height:36px;border-radius:.5rem;background:#ffffff0d;border:1px solid var(--surface-border);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.session-action-btn:hover{color:#fff;background:#ffffff1a;border-color:#fff3}.session-action-btn.delete:hover{color:#ff4757;border-color:#ff47574d;background:#ff47571a}.participants-list{display:flex;flex-direction:column;gap:.5rem;max-height:300px;overflow-y:auto;margin:1rem 0}.participant-item{display:flex;align-items:center;gap:.75rem;padding:.65rem .85rem;border-radius:.75rem;background:#ffffff08;border:1px solid var(--surface-border);cursor:pointer;transition:all .15s ease;font-size:.9rem;color:var(--text-secondary)}.participant-item:hover{background:#ffffff0f}.participant-item.selected{background:#2ed57314;border-color:#2ed57340;color:#fff}.participant-item input[type=checkbox]{width:16px;height:16px;accent-color:#2ed573;cursor:pointer}.participant-name{flex:1}.participant-remaining{font-size:.75rem;font-weight:600;font-family:monospace;padding:.2rem .5rem;border-radius:1rem;background:#2ed5731a;color:#2ed573;flex-shrink:0}.participant-remaining.low{background:#ffa5021a;color:#ffa502}.participant-remaining.empty{background:#ff47571a;color:#ff4757}@media(max-width:600px){.session-action-btn{width:32px;height:32px}.date-filter-row{flex-wrap:wrap}.date-filter-group{min-width:120px}}.login-page{display:flex!important;align-items:center;justify-content:center;height:100vh;margin:0;padding:0}.login-container{width:100%;max-width:400px;animation:fadeIn .8s ease-out;padding:1rem}.login-card{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--surface-border);padding:3rem 2rem;border-radius:2rem;text-align:center;box-shadow:0 40px 100px #0006}.login-logo{margin-bottom:2rem}.logo-icon{font-size:3rem;display:block;margin-bottom:1rem;filter:drop-shadow(0 0 15px var(--accent-glow))}.login-logo h1{background:linear-gradient(135deg,#fff,#a0a0a0);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-size:2rem;margin:0;text-align:center!important}.login-subtitle{color:var(--text-secondary);font-size:.9rem;margin-bottom:2.5rem}.login-btn{width:100%;margin-top:1rem;font-size:1rem;height:3.5rem;letter-spacing:.5px}.form-row{display:flex;gap:.75rem}.form-row .form-group{flex:1}.login-links{display:flex;justify-content:space-between;margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--surface-border)}.login-link{color:var(--text-secondary);font-size:.85rem;text-decoration:none;transition:color .2s ease}.login-link:hover{color:#fff}.sub-accordion-card{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--surface-border);border-radius:1rem;overflow:hidden;transition:all .2s ease}.sub-accordion-header{display:flex;align-items:center;gap:.75rem;width:100%;padding:.85rem 1rem;background:none;border:none;color:#fff;cursor:pointer;text-align:left;transition:background .15s ease}.sub-accordion-header:hover{background:#ffffff0a}.sub-accordion-name{flex:1;font-size:.95rem;font-weight:500}.sub-accordion-chevron{flex-shrink:0;transition:transform .2s ease;color:var(--text-secondary)}.sub-accordion-chevron.expanded{transform:rotate(180deg)}.sub-accordion-body{display:flex;flex-direction:column;gap:.5rem;padding:0 .85rem .85rem;animation:fadeIn .15s ease-out}.sub-accordion-empty{color:var(--text-secondary);font-size:.85rem;text-align:center;padding:.5rem 0;margin:0}.subscription-squares{display:flex;flex-wrap:wrap;gap:.5rem}.subscription-square{width:52px;height:52px;border-radius:.6rem;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.subscription-square.clickable{cursor:pointer}.subscription-square.clickable:hover{transform:scale(1.1);filter:brightness(1.3)}.subscription-square.payed{background:#2ed5731f;border:1px solid rgba(46,213,115,.3)}.subscription-square.to_pay{background:#ff47571f;border:1px solid rgba(255,71,87,.3)}.subscription-square-count{font-size:.8rem;font-weight:700;font-family:monospace}.subscription-square.payed .subscription-square-count{color:#2ed573}.subscription-square.to_pay .subscription-square-count{color:#ff4757}.subscription-square.add-square{background:transparent;border:1px dashed rgba(255,255,255,.2)}.subscription-square.add-square .subscription-square-count{color:var(--text-secondary);font-size:1.2rem}.subscription-square.add-square:hover{border-color:var(--accent-primary);background:#8e2de21a}.subscription-square.add-square:hover .subscription-square-count{color:#fff}.sub-detail-modal{margin-top:1.5rem}.sub-detail-row{display:flex;justify-content:space-between;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--surface-border)}.sub-detail-row:last-of-type{border-bottom:none}.sub-detail-label{font-size:.85rem;color:var(--text-secondary)}.sub-detail-value{font-size:.9rem;font-weight:500;color:#fff}.sub-detail-value.green{color:#2ed573}.sub-detail-value.red{color:#ff4757}.adhesion-square{width:64px;height:52px;border-radius:.6rem;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.adhesion-square.clickable{cursor:pointer}.adhesion-square.clickable:hover{transform:scale(1.1);filter:brightness(1.3)}.adhesion-square.payed{background:#2ed5731f;border:1px solid rgba(46,213,115,.3)}.adhesion-square.to_pay{background:#ff47571f;border:1px solid rgba(255,71,87,.3)}.adhesion-square-season{font-size:.7rem;font-weight:700;font-family:monospace}.adhesion-square.payed .adhesion-square-season{color:#2ed573}.adhesion-square.to_pay .adhesion-square-season{color:#ff4757}.sub-detail-sessions{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--surface-border)}.sub-detail-sessions-title{font-size:.85rem;color:var(--text-secondary);display:block;margin-bottom:.6rem}.sub-detail-sessions-loading,.sub-detail-sessions-empty{font-size:.8rem;color:var(--text-secondary);opacity:.6;margin:0}.sub-detail-sessions-list{display:flex;flex-direction:column;gap:.35rem;max-height:180px;overflow-y:auto}.sub-detail-session-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#fff;padding:.35rem .5rem;border-radius:.5rem;background:#ffffff08}.sub-detail-session-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-primary);flex-shrink:0}.sub-detail-actions{display:flex;gap:.75rem;margin-top:1.5rem}.sub-detail-actions button{flex:1;padding:.7rem;border-radius:.75rem;font-weight:600;font-size:.85rem;cursor:pointer}.sub-detail-datepicker{display:flex;gap:.75rem;margin-top:.75rem;animation:fadeIn .15s ease-out}.sub-detail-datepicker input{flex:1;background:#ffffff08;border:1px solid var(--surface-border);padding:.65rem .75rem;border-radius:.75rem;color:#fff;font-size:.9rem;outline:none}.sub-detail-datepicker input:focus{border-color:var(--accent-primary)}.sub-detail-datepicker button{padding:.65rem 1rem;border-radius:.75rem;font-weight:600;font-size:.85rem;cursor:pointer;white-space:nowrap}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
