.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:2000;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;will-change:opacity;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-overlay.open{opacity:1;visibility:visible}body.modal-open{overflow:hidden}.modal-box{display:flex;flex-direction:column;background:var(--white);border-radius:24px;width:100%;max-width:520px;max-height:90vh;max-height:90dvh;overflow-y:auto;overflow-x:hidden;position:relative;box-shadow:0 30px 80px rgba(0,0,0,.25);transform:translateY(30px) scale(.97);transition:transform .35s cubic-bezier(.34, 1.56, .64, 1);scrollbar-width:thin;scrollbar-color:var(--green-light) transparent;will-change:transform}.modal-box::-webkit-scrollbar{width:5px}.modal-box::-webkit-scrollbar-track{background:0 0}.modal-box::-webkit-scrollbar-thumb{background:var(--green-light);border-radius:10px}.modal-overlay.open .modal-box{transform:translateY(0) scale(1)}.modal-scroll-area{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;-webkit-overflow-scrolling:touch}.modal-header{background:linear-gradient(135deg,var(--green),var(--green-dark));padding:32px 32px 28px;border-radius:24px 24px 0 0;position:relative;overflow:hidden;flex-shrink:0}.modal-header::before{content:"";position:absolute;top:-40px;right:-40px;width:160px;height:160px;background:rgba(255,255,255,.08);border-radius:50%;pointer-events:none}.modal-header::after{content:"";position:absolute;bottom:-30px;left:-30px;width:120px;height:120px;background:rgba(255,255,255,.05);border-radius:50%;pointer-events:none}.modal-header-content{position:relative;z-index:1}.modal-event-badge{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.2);color:var(--white);padding:5px 14px;border-radius:20px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-bottom:14px;border:1px solid rgba(255,255,255,.25)}.modal-header h2{font-family:var(--font-heading);font-size:32px;color:var(--white);letter-spacing:1px;line-height:1.05;margin-bottom:8px}.modal-header h2 span{color:var(--yellow)}.modal-header p{font-size:13px;color:rgba(255,255,255,.8);line-height:1.6}.modal-close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.15);border:2px solid rgba(255,255,255,.25);color:var(--white);display:flex;align-items:center;justify-content:center;font-size:16px;cursor:pointer;transition:var(--transition);z-index:2;min-width:36px;min-height:36px}.modal-close:hover{background:rgba(255,255,255,.3);transform:rotate(90deg)}.modal-close:focus-visible{outline:3px solid var(--white);outline-offset:3px}.modal-event-info{display:flex;gap:0;border-bottom:2px solid var(--border);flex-wrap:wrap;flex-shrink:0}.modal-info-item{flex:1;display:flex;align-items:center;gap:10px;padding:16px 20px;border-right:1px solid var(--border);min-width:120px}.modal-info-item:last-child{border-right:none}.modal-info-icon{width:34px;height:34px;border-radius:8px;background:var(--green-light);color:var(--green);display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.modal-info-text{display:flex;flex-direction:column;gap:2px}.modal-info-label{font-size:10px;color:#aaa;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.modal-info-value{font-size:12px;font-weight:700;color:var(--dark);line-height:1.2}.modal-info-value.urgent{color:#e74c3c}.modal-body{padding:28px 32px 32px}.form-section-title{font-size:11px;font-weight:700;color:var(--green);text-transform:uppercase;letter-spacing:2px;margin-bottom:16px;display:flex;align-items:center;gap:8px}.form-section-title::after{content:"";flex:1;height:1px;background:var(--border)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.form-grid.full{grid-template-columns:1fr}.form-group{display:flex;flex-direction:column;gap:6px}.form-group.span-2{grid-column:1/-1}.form-group label{font-size:12px;font-weight:700;color:var(--dark);text-transform:uppercase;letter-spacing:.5px;display:flex;align-items:center;gap:5px}.form-group label .req{color:#e74c3c;font-size:14px;line-height:1}.form-input,.form-select,.form-textarea{width:100%;padding:12px 16px;border:2px solid var(--border);border-radius:var(--radius);font-size:13px;font-family:var(--font-body);color:var(--dark);background:var(--white);transition:border-color .3s ease,box-shadow .3s ease;outline:0;-webkit-appearance:none;appearance:none}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--green);box-shadow:0 0 0 4px rgba(39,174,96,.12)}.form-input::placeholder,.form-textarea::placeholder{color:#bbb;opacity:1}.form-input.valid,.form-select.valid,.form-textarea.valid{border-color:var(--green);background:rgba(39,174,96,.03)}.form-input.invalid,.form-select.invalid,.form-textarea.invalid{border-color:#e74c3c;background:rgba(231,76,60,.03);box-shadow:0 0 0 4px rgba(231,76,60,.1)}.field-error{font-size:11px;color:#e74c3c;font-weight:600;display:none;align-items:center;gap:4px;margin-top:2px}.field-error.show{display:flex}.toggle-group{display:flex;gap:10px}.toggle-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 16px;border:2px solid var(--border);border-radius:var(--radius);background:var(--white);color:var(--text-muted);font-family:var(--font-body);font-size:13px;font-weight:600;cursor:pointer;transition:var(--transition-fast)}.toggle-btn i{transition:color .15s ease}.toggle-btn:hover{border-color:var(--green);color:var(--green)}.toggle-btn.active{border-color:var(--green);background:var(--green);color:var(--white)}.toggle-btn.active i{color:var(--white)}.toggle-group.invalid .toggle-btn{border-color:var(--red)}.transport-station-wrap{max-height:0;opacity:0;overflow:hidden;transform:translateY(-6px);pointer-events:none;transition:max-height .4s ease,opacity .3s ease 50ms,transform .3s ease}.transport-station-wrap.open{max-height:220px;opacity:1;transform:translateY(0);pointer-events:auto}.field-success{font-size:11px;color:var(--green);font-weight:600;display:none;align-items:center;gap:4px;margin-top:2px}.field-success.show{display:flex}.input-wrap{position:relative}.input-wrap .form-input{padding-left:42px}.input-wrap .input-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#bbb;font-size:14px;transition:color .3s;pointer-events:none}.input-wrap .form-input.valid+.input-icon,.input-wrap .form-input:focus+.input-icon{color:var(--green)}.input-wrap .form-input.invalid+.input-icon{color:#e74c3c}.form-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2327AE60' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:40px;cursor:pointer}.form-textarea{resize:vertical;min-height:90px;max-height:200px;line-height:1.6}.form-check{display:flex;align-items:flex-start;gap:10px;cursor:pointer;padding:4px 0}.form-check input[type=checkbox].invalid{border-color:#e74c3c;box-shadow:0 0 0 3px rgba(231,76,60,.15)}.form-check input[type=checkbox],.form-check input[type=radio]{width:18px;height:18px;border:2px solid var(--border);border-radius:4px;cursor:pointer;flex-shrink:0;margin-top:2px;-webkit-appearance:none;appearance:none;background:var(--white);transition:var(--transition);position:relative}.form-check input[type=radio]{border-radius:50%}.form-check input[type=checkbox]:checked,.form-check input[type=radio]:checked{background:var(--green);border-color:var(--green)}.form-check input[type=checkbox]:checked::after{content:"";position:absolute;top:2px;left:5px;width:5px;height:9px;border:2px solid #fff;border-top:none;border-left:none;transform:rotate(45deg)}.form-check input[type=radio]:checked::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:6px;height:6px;border-radius:50%;background:var(--white)}.form-check-label{font-size:13px;color:#555;line-height:1.5;cursor:pointer}.form-check-label a{color:var(--green);font-weight:700;text-decoration:underline;text-underline-offset:2px}.form-check-label a:hover{color:var(--green-dark)}.modal-footer{padding:0 32px 32px;display:flex;flex-direction:column;gap:12px}.btn-submit{width:100%;padding:16px;border-radius:var(--radius);font-size:15px;font-weight:700;text-transform:uppercase;letter-spacing:1px;border:2px solid transparent;cursor:pointer;background:var(--green);color:var(--white);transition:var(--transition);display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 6px 20px rgba(39,174,96,.35);font-family:var(--font-body);min-height:52px;position:relative;overflow:hidden}.btn-submit::before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent);transition:left .5s ease}.btn-submit:hover::before{left:100%}.btn-submit:hover{background:var(--green-dark);transform:translateY(-2px);box-shadow:0 12px 28px rgba(39,174,96,.4)}.btn-submit:active{transform:translateY(0)}.btn-submit.loading{pointer-events:none;opacity:.8}.btn-submit.loading .btn-text{display:none}.btn-submit.loading .btn-loader{display:flex}.btn-loader{display:none;align-items:center;gap:8px}.spinner{width:18px;height:18px;border:3px solid rgba(255,255,255,.3);border-top:3px solid var(--white);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.modal-security-note{display:flex;align-items:center;justify-content:center;gap:6px;font-size:11px;color:#aaa;text-align:center}.modal-security-note i{color:var(--green)}.rules-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:2200;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.rules-overlay.open{opacity:1;visibility:visible}.rules-box{background:var(--white);border-radius:20px;width:100%;max-width:480px;max-height:80dvh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.3)}.rules-header{background:linear-gradient(135deg,var(--green),var(--green-dark));padding:18px 22px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.rules-header h3{color:var(--white);font-size:16px;display:flex;align-items:center;gap:8px}.rules-close{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.15);border:none;color:var(--green);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}.rules-close:hover{background:rgba(255,255,255,.3)}.rules-body{padding:20px 22px;overflow-y:auto;flex:1;min-height:0}.rules-body ol{list-style:decimal;padding-left:20px;display:flex;flex-direction:column;gap:10px}.rules-body li{font-size:13px;color:#555;line-height:1.6}.rules-footer{padding:16px 22px;border-top:1px solid var(--border);flex-shrink:0}.rules-footer .btn-submit{min-height:44px}.rules-link{color:var(--green);font-weight:700;text-decoration:underline;text-decoration-color:rgba(39,174,96,0.4);text-underline-offset:2px;cursor:pointer}.rules-link:hover{color:var(--green-dark)}#modalFormView,#modalReviewView{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}#regForm{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}#modalErrorBanner{flex-shrink:0}.coming-soon-box{max-width:400px;position:relative}.coming-soon-content{padding:40px 32px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px}.coming-soon-icon{width:70px;height:70px;border-radius:50%;background:var(--green-light);border:3px solid var(--green);display:flex;align-items:center;justify-content:center;font-size:30px;color:var(--green);margin-bottom:6px}.coming-soon-content h2{font-family:var(--font-heading);font-size:26px;color:var(--dark);letter-spacing:1px}.coming-soon-content h2 span{color:var(--green)}.coming-soon-msg{font-size:14px;color:#666;line-height:1.7;max-width:300px}.coming-soon-btn{margin-top:10px;width:100%}.coming-soon-box .modal-close{top:14px;right:14px}.modal-success{display:none;flex-direction:column;align-items:center;text-align:center;padding:50px 32px;gap:16px}.modal-success.show{display:flex}.success-icon{width:80px;height:80px;border-radius:50%;background:var(--green-light);border:3px solid var(--green);display:flex;align-items:center;justify-content:center;font-size:36px;color:var(--green);animation:successPop .5s cubic-bezier(.34,1.56,.64,1)}@keyframes successPop{0%{transform:scale(0);opacity:0}100%{transform:scale(1);opacity:1}}.success-title{font-family:var(--font-heading);font-size:28px;color:var(--dark);letter-spacing:1px}.success-title span{color:var(--green)}.success-msg{font-size:14px;color:#666;line-height:1.7;max-width:360px}.success-id{background:var(--green-light);border:2px solid rgba(39,174,96,.3);border-radius:var(--radius);padding:12px 24px;font-size:13px;color:var(--green-dark);font-weight:700;letter-spacing:1px}.btn-success-close{padding:14px 32px;border-radius:var(--radius);font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1px;border:2px solid var(--green);cursor:pointer;background:var(--green);color:var(--white);transition:var(--transition);font-family:var(--font-body);min-height:48px;margin-top:8px}.btn-success-close:hover{background:var(--green-dark);transform:translateY(-2px)}.modal-error-banner{display:none;align-items:center;gap:12px;background:#fdf0f0;border:2px solid #f5c6cb;border-radius:var(--radius);padding:14px 18px;margin-bottom:16px;font-size:13px;color:#721c24}.modal-error-banner.show{display:flex}.modal-error-banner i{color:#e74c3c;font-size:18px;flex-shrink:0}@media (max-width:768px){.modal-overlay{padding:16px;align-items:flex-end}.modal-box{max-height:100vh;max-height:100dvh;border-radius:24px 24px 0 0;transform:translateY(100%)}.modal-overlay.open .modal-box{transform:translateY(0)}.modal-header{padding:24px 24px 20px}.modal-body{padding:20px 24px 24px}.modal-footer{padding:0 24px 28px}.form-grid{grid-template-columns:1fr}.modal-event-info{flex-direction:row}.modal-info-item{flex:1;border-right:1px solid var(--border);border-bottom:none}.modal-info-item:last-child{border-right:none}}@media (max-width:480px){.modal-overlay{padding:0}.modal-box{max-height:100vh;max-height:100dvh;border-radius:0}.modal-header{padding:16px 20px 12px}.modal-header h2{font-size:22px}.modal-body{padding:16px 20px 20px}.modal-footer{padding:0 20px 24px}.modal-success{padding:36px 20px}}.all-events-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:2100;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;backdrop-filter:blur(4px)}.all-events-overlay.open{opacity:1;visibility:visible}.ae-box{background:var(--white);border-radius:24px;width:100%;max-width:600px;max-height:85vh;overflow-y:auto;box-shadow:0 30px 80px rgba(0,0,0,.25);transform:translateY(30px) scale(.97);transition:transform .35s cubic-bezier(.34, 1.56, .64, 1);scrollbar-width:thin;scrollbar-color:var(--green-light) transparent}.all-events-overlay.open .ae-box{transform:translateY(0) scale(1)}.ae-header{background:linear-gradient(135deg,var(--green),var(--green-dark));padding:28px 32px;border-radius:24px 24px 0 0;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.ae-header h2{font-family:var(--font-heading);font-size:28px;color:var(--white);letter-spacing:1px}.ae-header p{font-size:12px;color:rgba(255,255,255,.75);margin-top:4px}.ae-close{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.15);border:2px solid rgba(255,255,255,.3);color:var(--white);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition);flex-shrink:0}.ae-close:hover{background:rgba(255,255,255,.3);transform:rotate(90deg)}.ae-body{padding:28px 28px 32px;display:flex;flex-direction:column;gap:12px}.ae-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;display:flex;align-items:center;gap:8px;margin-bottom:4px}.upcoming-label{color:var(--green)}.past-label{color:#999}.ae-divider{display:flex;align-items:center;gap:12px;margin:8px 0}.ae-divider::after,.ae-divider::before{content:"";flex:1;height:1px;background:#eee}.ae-divider span{font-size:11px;color:#bbb;font-weight:600;white-space:nowrap;text-transform:uppercase;letter-spacing:1px}.ae-card{display:flex;align-items:center;gap:16px;padding:16px 18px;border-radius:14px;border:1.5px solid #f0f0f0;transition:var(--transition)}.ae-card.upcoming{background:#f7fdf9;border-color:rgba(39,174,96,.2)}.ae-card.upcoming:hover{border-color:var(--green);box-shadow:0 6px 20px rgba(39,174,96,.12);transform:translateX(4px)}.ae-card.ended{background:#fafafa;filter:grayscale(60%);opacity:.72}.ae-card.ended:hover{filter:grayscale(20%);opacity:.9;transform:translateX(4px)}.ae-emoji{font-size:32px;width:52px;height:52px;border-radius:12px;background:var(--gray);display:flex;align-items:center;justify-content:center;flex-shrink:0}.ae-card.ended .ae-emoji{background:#eee}.ae-info{flex:1;min-width:0}.ae-top{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}.ae-type{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--green);background:var(--green-light);padding:3px 10px;border-radius:20px}.ae-card.ended .ae-type{color:#999;background:#eee}.ae-badge{font-size:10px;font-weight:700;padding:3px 10px;border-radius:20px;text-transform:uppercase;letter-spacing:.5px}.upcoming-badge{background:rgba(39,174,96,.12);color:var(--green-dark)}.ended-badge{background:#f0f0f0;color:#999}.ae-title{font-family:var(--font-heading);font-size:18px;color:var(--dark);margin-bottom:6px;white-space:normal;overflow:hidden;text-overflow:ellipsis}.ae-card.ended .ae-title{color:#888}.ae-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:#999}.ae-meta span{display:flex;align-items:center;gap:5px}.ae-meta i{color:var(--green);font-size:10px}.ae-card.ended .ae-meta i{color:#bbb}@media (max-width:480px){.ae-box{border-radius:18px}.ae-header{padding:22px 20px;border-radius:18px 18px 0 0}.ae-body{padding:20px 16px 24px}.ae-title{font-size:15px}.ae-emoji{width:42px;height:42px;font-size:24px}}.member-header{background:linear-gradient(135deg,var(--dark),#2d2d4e)!important}.member-badge{background:rgba(245,197,24,.2)!important;border-color:rgba(245,197,24,.4)!important;color:var(--yellow)!important}.member-submit{background:linear-gradient(135deg,var(--green),var(--green-dark))!important}.member-submit:hover{background:var(--green-dark)!important}.review-summary-box{background:var(--gray);border:2px solid var(--border);border-radius:var(--radius);padding:4px 18px}.review-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--border);gap:12px}.review-row:last-child{border-bottom:none}.review-label{font-size:12px;font-weight:700;color:#888;text-transform:uppercase;letter-spacing:.5px;flex-shrink:0}.review-value{font-size:13px;font-weight:700;color:var(--dark);text-align:right;overflow-wrap:anywhere}.price-box{background:var(--green-light);border:2px solid rgba(39,174,96,.25);border-radius:var(--radius);padding:6px 18px}.price-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;font-size:13px;color:#555;border-bottom:1px dashed rgba(39,174,96,.25);gap:10px}.price-row:last-child{border-bottom:none}.price-row .tier-badge{margin-left:6px;font-size:10px;padding:2px 8px}.price-discount{color:#e67e22;font-weight:700}.price-total{font-size:15px;font-weight:800;color:var(--green-dark)}.price-total span:last-child{font-family:var(--font-heading);font-size:22px;letter-spacing:.5px}.payment-note{display:flex;align-items:center;gap:6px;font-size:11px;color:#aaa;line-height:1.6;padding:4px}.payment-note i{color:var(--green);flex-shrink:0}.review-footer{flex-direction:row!important;gap:12px}.btn-edit-back{flex-shrink:0;padding:0 20px;border-radius:var(--radius);border:2px solid var(--border);background:var(--white);color:#666;font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px;cursor:pointer;transition:var(--transition);font-family:var(--font-body);min-height:52px}.btn-edit-back:hover{background:var(--gray);border-color:#ccc}.review-footer .btn-submit{flex:1}@media (max-width:480px){.review-footer{flex-direction:column!important}.btn-edit-back{width:100%;justify-content:center}}.modal-box.keyboard-open .modal-header{padding-top:10px;padding-bottom:10px;transition:padding .2s ease}.modal-box.keyboard-open .modal-event-badge,.modal-box.keyboard-open .modal-header-content h2,.modal-box.keyboard-open .modal-header-content p{display:none}.modal-box.keyboard-open .modal-event-info{display:none}.modal-box.keyboard-open .modal-footer{display:none}.modal-footer{background:var(--white);position:relative;z-index:3}.choices{margin-bottom:0;font-size:13px;font-family:var(--font-body)}.choices__inner{background:var(--white);border:2px solid var(--border);border-radius:var(--radius);padding:12px 16px;min-height:unset;font-size:13px;transition:border-color .3s ease,box-shadow .3s ease}.choices.is-focused .choices__inner,.choices.is-open .choices__inner{border-color:var(--green);box-shadow:0 0 0 4px rgba(39,174,96,.12)}.choices__list--single .choices__item{color:var(--dark);padding:0}.choices__placeholder{color:#bbb;opacity:1}.choices__list--dropdown,.choices__list[aria-expanded]{background:var(--white);border:2px solid var(--border);border-radius:var(--radius);margin-top:4px}.choices__list--dropdown .choices__item--selectable,.choices__list[aria-expanded] .choices__item--selectable{color:var(--dark);font-size:13px;padding:10px 16px}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{background:rgba(39,174,96,.08)}.choices__input{background:0 0!important;color:var(--dark)!important;font-size:13px;padding:4px 0}.choices[data-type*=select-one] .choices__inner{padding-right:40px}.choices[data-type*=select-one]::after{border-color:var(--green) transparent transparent}.choices:has(select.invalid) .choices__inner{border-color:#e74c3c!important;background:rgba(231,76,60,.03);box-shadow:0 0 0 4px rgba(231,76,60,.1)}.choices:has(select.valid) .choices__inner{border-color:var(--green)!important;background:rgba(39,174,96,.03)}