*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f2f2f5;color:#111}.app-shell{display:flex;flex-direction:column;height:100vh;max-width:480px;margin:0 auto;background:#f2f2f5}.top-bar{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:#fff;border-bottom:1px solid #eee}.top-bar h1{font-size:1.15rem;margin:0;font-weight:600}.icon-btn{background:none;border:none;font-size:1.2rem;cursor:pointer}.icon-btn-spacer{width:24px;display:inline-block}.app-content{flex:1;overflow-y:auto;padding-bottom:12px}.page{padding:16px}.bottom-nav{display:flex;border-top:1px solid #eee;background:#fff}.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 10px;font-size:.72rem;color:#888;text-decoration:none}.bottom-nav-item.active{color:#111;font-weight:600}.bottom-nav-icon{font-size:1.2rem}.card{background:#fff;border-radius:14px;padding:16px;margin-bottom:12px;box-shadow:0 1px 2px #0000000a}.class-card{display:flex;align-items:center;gap:12px}.class-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.class-info{flex:1}.class-info h3{margin:0 0 4px;font-size:1rem}.class-info p{margin:2px 0;font-size:.85rem;color:#555}.spots-ok{color:#059669!important;font-weight:600}.spots-full{color:#dc2626!important;font-weight:600}.book-btn,.cancel-btn{border-radius:20px;padding:8px 16px;font-size:.85rem;font-weight:600;border:1px solid #111;background:#111;color:#fff;cursor:pointer}.book-btn:disabled{opacity:.4;cursor:not-allowed}.cancel-btn{background:#fff;color:#dc2626;border-color:#dc2626}.date-nav{display:flex;align-items:center;gap:10px;margin-bottom:4px}.date-nav button{border:none;background:#fff;border-radius:50%;width:32px;height:32px;font-size:1.1rem}.date-nav input{flex:1;padding:6px;border-radius:8px;border:1px solid #ddd}.date-label{text-transform:capitalize;color:#444;font-size:.9rem;margin-bottom:12px}.date-input{margin-bottom:12px;padding:8px;border-radius:8px;border:1px solid #ddd}.tabs{display:flex;gap:24px;border-bottom:1px solid #ddd;margin-bottom:16px}.tab{background:none;border:none;padding:10px 0;font-size:1rem;color:#888;border-bottom:2px solid transparent;cursor:pointer}.tab.active{color:#111;font-weight:600;border-color:#111}.section-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:600}.badge{background:#eee;border-radius:10px;padding:2px 8px;font-size:.8rem;margin-left:4px}.sub-card{display:flex;justify-content:space-between;align-items:center}.tag{display:inline-block;background:#ecfdf5;color:#059669;border-radius:8px;padding:2px 8px;font-size:.75rem;margin-top:6px}.credits-circle{width:52px;height:52px;border-radius:50%;border:2px solid #dc2626;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:600}.plan-card{display:flex;justify-content:space-between;align-items:center}.fab-cart{position:sticky;bottom:12px;width:100%;padding:14px;border-radius:14px;border:none;background:#111;color:#fff;font-weight:600;font-size:1rem;cursor:pointer}.totals-card{display:flex;flex-direction:column;gap:10px;text-align:center}.filters{display:flex;justify-content:center;gap:16px}.booking-card{display:flex;justify-content:space-between;align-items:flex-start}.booking-actions{display:flex;flex-direction:column;gap:8px;align-items:stretch}.empty-state{text-align:center;color:#999;margin-top:40px}.error-text{color:#dc2626;font-size:.85rem}.auth-page{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;padding:24px;gap:16px}.auth-form{display:flex;flex-direction:column;gap:10px;width:100%;max-width:320px}.auth-form input{padding:12px;border-radius:10px;border:1px solid #ddd}.auth-form button{padding:12px;border-radius:10px;border:none;background:#111;color:#fff;font-weight:600}.link-btn{background:none;border:none;color:#555;text-decoration:underline;cursor:pointer}.danger-btn{margin-top:16px;padding:12px;border-radius:10px;border:1px solid #dc2626;background:#fff;color:#dc2626;width:100%}.greeting{font-weight:600;margin-bottom:12px}.wod-title{font-weight:600}.side-menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:20;display:flex}.side-menu{background:#fff;width:260px;height:100%;padding:24px 16px;display:flex;flex-direction:column;gap:18px}.side-menu a{text-decoration:none;color:#111;font-size:1rem}.side-menu-logout{margin-top:auto;background:none;border:1px solid #dc2626;color:#dc2626;border-radius:10px;padding:10px}.admin-attendees{border-top:1px solid #eee;margin-top:12px;padding-top:8px}.admin-attendee-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:.9rem}.attendance-btns{display:flex;gap:6px}.att-btn{border-radius:14px;padding:4px 10px;font-size:.75rem;border:1px solid #ccc;background:#fff;color:#888;cursor:pointer}.att-btn.att-yes.active{background:#ecfdf5;border-color:#059669;color:#059669;font-weight:600}.att-btn.att-no.active{background:#fef2f2;border-color:#dc2626;color:#dc2626;font-weight:600}.admin-actions{display:flex;gap:10px;margin-top:12px}.admin-form{display:flex;flex-direction:column;gap:12px}.admin-form label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:#444}.admin-form input,.admin-form select{padding:10px;border-radius:10px;border:1px solid #ddd;font-size:.95rem}.admin-form-row{display:flex;gap:12px}.admin-form-row label{flex:1}.tag-unpaid{background:#fef3c7;color:#b45309}.plan-price{font-weight:700;font-size:1.05rem;margin-top:6px}.remove-sub{display:block;padding:0;margin-top:8px;font-size:.8rem;color:#dc2626;text-align:left}.weekday-row{display:flex;gap:6px;flex-wrap:wrap}.weekday-btn{border-radius:14px;padding:6px 10px;font-size:.8rem;border:1px solid #ccc;background:#fff;color:#888;cursor:pointer}.weekday-btn.active{background:#111;border-color:#111;color:#fff;font-weight:600}.pay-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.series-check{background:#fffbeb;border:1px solid #fde68a;border-radius:10px;padding:10px}.push-desc{font-size:.85rem;color:#555}.price-old{text-decoration:line-through;color:#999;font-weight:400}.price-promo{color:#dc2626;font-weight:700}.promo-badge{background:#dc2626;color:#fff;border-radius:8px;padding:2px 8px;font-size:.7rem;font-weight:700;vertical-align:middle}.plan-hidden{opacity:.55}.promo-countdown{color:#b45309;font-size:.8rem;font-weight:600;margin:2px 0}.success-text{color:#059669;font-size:.85rem}.admin-form textarea{padding:10px;border-radius:10px;border:1px solid #ddd;font-size:.95rem;font-family:inherit;resize:vertical}.pay-info h3{margin:0 0 2px;font-size:.95rem}.pay-info p{margin:2px 0;font-size:.8rem;color:#555}
