{"product_id":"witfl-winter-2027-las-vegas-qualifier-1-january-8-10","title":"WITFL Winter 2027 — Las Vegas Qualifier 1 | January 8–10, 2027","description":" \u003c!-- DEVELOPER NOTES\nTHE WITFL | WINTER QUALIFIER 1 | COMPLETE CUSTOM LIQUID v4\nPRODUCT: witfl-winter-2027-las-vegas-qualifier-1-january-8-10\nMEET: January 8-10, 2027, Las Vegas\nThis product includes free agent, new team, and existing team payment paths.\n- New team can save an unpaid registration before the payment deadline.\nLive theme files cannot be written by this integration. Paste entire code into\nONE enabled Custom Liquid section on a dedicated product template.\n\nINTERNAL SETTINGS\n- Team deposit: $250; team full: $1,000; free agent: $125 regular.\n- Team registration and roster due 10 days before meet (December 29, 2026).\n- Team balance due 30 days before meet (December 9, 2026).\n- $100 early bird for free agents REQUIRES discount WITFLFA25 to include this product.\n- Per-race free agent 16-cap requires authoritative backend enforcement.\n- Pay-later saves the team registration in the existing backend; cart recovery\/marketing\n  is conditional on customer identity, consent, and configured automations.\n- A locally saved browser cart is not the same as an abandoned checkout record.\n- This draft gathers roster rows with the order. Updating roster after checkout\n  will require an authenticated roster workflow; this form does not supply one.\n- Existing unpaid team link uses ?payment_only=1\u0026submissionId=...;\n  the backend must separately verify an existing application before marking paid.\n- Only display optional upsells if published and available.\n- Reuse athlete data explicitly from this shopping cart, never reuse signatures.\n\nEDIT DESIGN in CSS variables below; edit text in HTML.\nLiquid usage is limited to one standard product-variant JSON output. No Liquid loops or conditions.\nCSS uses dedicated w27 classes to avoid collisions with theme grid and field styles.\nEND DEVELOPER NOTES --\u003e\n\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow:wght@400;500;600;700;800;900\u0026amp;family=Barlow+Condensed:wght@600;700;800;900\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\u003csection id=\"w27-meet-one\"\u003e\n\u003cstyle\u003e\n\/* 01 EDITABLE DESIGN CONTROLS *\/\n#w27-meet-one {\n  --green:#3CB54A; --orange:#FF6A00; --navy:#071B30;\n  --ink:#173448; --muted:#526D7D; --border:#D7E4EC;\n  --width:1320px; --gap:24px; --pad:30px; --radius:15px;\n  --hero-font:clamp(40px,5vw,68px); --section-font:35px;\n  --body-font:16px; --label-font:15px; --input-font:16px;\n  --button-font:18px; --small-font:14px;\n  width:min(var(--width),calc(100vw - 40px))!important;\n  max-width:none!important; position:relative!important; left:50%!important;\n  transform:translateX(-50%)!important; margin:22px 0 60px!important;\n  padding:0 0 30px!important; font:var(--body-font)\/1.55 Barlow,Arial,sans-serif;\n  color:var(--ink); text-align:left;\n}\n#w27-meet-one,#w27-meet-one *{box-sizing:border-box}\n#w27-meet-one [hidden]{display:none!important}\n.shopify-section:has(#w27-meet-one){overflow:visible!important}\n#w27-meet-one h1,#w27-meet-one h2,#w27-meet-one h3{\n  font-family:'Barlow Condensed',Barlow,Arial,sans-serif;\n  text-transform:uppercase;line-height:1.07;font-weight:900;margin:0 0 13px\n}\n#w27-meet-one h2{font-size:var(--section-font);color:var(--navy)}\n#w27-meet-one h3{font-size:25px}\n#w27-meet-one p{margin:0 0 13px}\n#w27-meet-one .hero{background:linear-gradient(120deg,#061729,#15465c);color:white;\n  padding:48px;border-radius:var(--radius);margin-bottom:var(--gap)}\n#w27-meet-one .eyebrow{color:#A9EAB0;font-weight:900;letter-spacing:1.4px;font-size:13px;\n  text-transform:uppercase;margin:0 0 12px}\n#w27-meet-one .hero h1{font-size:var(--hero-font);color:white}\n#w27-meet-one .hero h1 span{color:#87EB92}\n#w27-meet-one .hero p{max-width:930px;color:#E8F1F5;font-size:17px}\n#w27-meet-one .pills{display:flex;gap:9px;flex-wrap:wrap;margin-top:20px}\n#w27-meet-one .pills span{border:1px solid #7795A7;border-radius:40px;padding:8px 12px;\n  font-size:12px;font-weight:900}\n#w27-meet-one .layout{display:grid!important;grid-template-columns:minmax(0,1.65fr) minmax(295px,.85fr)!important;\n  gap:var(--gap);align-items:start}\n#w27-meet-one .layout\u003emain,#w27-meet-one .layout\u003easide{display:block;min-width:0;width:100%}\n#w27-meet-one .card{background:white;border:1px solid var(--border);border-radius:var(--radius);\n  padding:var(--pad);margin:0 0 20px;box-shadow:0 5px 19px rgba(13,43,62,.05)}\n#w27-meet-one .card.primary{border-top:5px solid var(--green)}\n#w27-meet-one .step{color:#2C8A3D;letter-spacing:1.2px;text-transform:uppercase;\n  font-size:12px;font-weight:900;margin-bottom:8px}\n#w27-meet-one .muted{color:var(--muted);font-size:var(--small-font);line-height:1.65}\n#w27-meet-one .w27-fields{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;\n  column-gap:20px;row-gap:17px;margin-top:17px;grid-auto-flow:row!important;justify-items:stretch!important;align-items:start!important}\n#w27-meet-one .w27-field{display:block!important;position:static!important;float:none!important;min-width:0!important;width:100%!important}\n#w27-meet-one .w27-fields \u003e .w27-field{grid-column:auto!important;grid-row:auto!important;float:none!important;clear:none!important;min-width:0!important;max-width:none!important;align-self:stretch!important}\n#w27-meet-one .w27-fields \u003e .w27-field.wide{grid-column:1\/-1!important}\n#w27-meet-one .w27-field label{position:static!important;top:auto!important;left:auto!important;right:auto!important;max-width:100%!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}\n#w27-meet-one .w27-field select{min-height:50px!important;display:block!important;min-width:0!important;width:100%!important;opacity:1!important;visibility:visible!important;appearance:auto!important;-webkit-appearance:auto!important}\n#w27-meet-one .w27-field input{min-height:50px!important}\n#w27-meet-one .w27-field label,#w27-meet-one .w27-field-label{display:block!important;position:static!important;\n  width:100%!important;margin:0 0 8px!important;padding:0!important;font-size:var(--label-font)!important;\n  line-height:1.4!important;font-weight:900!important;transform:none!important}\n#w27-meet-one input:not([type=checkbox]):not([type=radio]),\n#w27-meet-one select,#w27-meet-one textarea{\n  display:block!important;width:100%!important;min-width:0!important;max-width:100%!important;\n  min-height:50px;padding:11px 13px!important;margin:0!important;\n  border:1px solid #B9CBD7;border-radius:9px;background:#fff;color:var(--ink);\n  font:var(--input-font)\/1.4 Barlow,Arial,sans-serif;position:static!important\n}\n#w27-meet-one textarea{min-height:88px;resize:vertical}\n#w27-meet-one input:focus-visible,#w27-meet-one select:focus-visible,#w27-meet-one button:focus-visible{\n  outline:3px solid var(--green);outline-offset:2px}\n#w27-meet-one .radio-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin-top:15px}\n#w27-meet-one .radio-card{display:flex;gap:11px;align-items:start;border:2px solid var(--border);\n  border-radius:12px;padding:16px;cursor:pointer}\n#w27-meet-one .radio-card:has(input:checked){background:#F0FAF2;border-color:var(--green)}\n#w27-meet-one input[type=radio],#w27-meet-one input[type=checkbox]{width:19px!important;height:19px!important;\n  margin:3px 0 0!important;flex:0 0 19px;accent-color:var(--green);appearance:auto!important}\n#w27-meet-one .radio-card strong{display:block;font-size:17px}\n#w27-meet-one .radio-card small{display:block;font-size:13px;color:var(--muted)}\n#w27-meet-one .notice{background:#F0F9F1;border-left:4px solid var(--green);\n  border-radius:8px;padding:15px;margin:16px 0;color:#2C5636;font-size:var(--small-font)}\n#w27-meet-one .roster-item{border:1px solid var(--border);background:#FAFCFD;\n  border-radius:12px;padding:16px;margin:12px 0}\n#w27-meet-one .roster-title{display:flex;justify-content:space-between;gap:10px;align-items:center}\n#w27-meet-one .mini-button{border:1px solid #87B696;background:#fff;color:#215034;\n  border-radius:8px;padding:9px 13px;font:800 14px Barlow,Arial,sans-serif;cursor:pointer}\n#w27-meet-one .guardian{background:#F5FAF5;border:1px solid #C6E0CD;border-radius:11px;padding:18px;margin-top:20px}\n#w27-meet-one .agreement{border:1px solid var(--border);background:#FBFDFE;\n  border-radius:10px;padding:15px;margin:13px 0}\n#w27-meet-one .agreement summary{cursor:pointer;font-weight:900;color:#154565}\n#w27-meet-one .terms{max-height:200px;overflow:auto;background:white;\n  border:1px solid var(--border);padding:14px;margin:12px 0;font-size:14px}\n#w27-meet-one .check{display:flex;align-items:flex-start;gap:10px;font-size:14px;margin:14px 0}\n#w27-meet-one .summary{background:#EEF6F8;border-radius:12px;padding:18px;margin:19px 0}\n#w27-meet-one .summary-row{display:flex;justify-content:space-between;gap:12px;\n  padding:7px 0;border-bottom:1px solid #D7E5EA}\n#w27-meet-one .summary-row:last-child{border-bottom:0}\n#w27-meet-one .summary-row strong{text-align:right}\n#w27-meet-one .cta{display:block;width:100%;background:var(--green);border:0;border-radius:9px;\n  padding:15px 17px;min-height:59px;color:#071B30;font:900 var(--button-font) Barlow,Arial,sans-serif;\n  text-align:center;cursor:pointer;white-space:normal}\n#w27-meet-one .cta:disabled{opacity:.5;cursor:not-allowed}\n#w27-meet-one .cta.w27-secondary{margin-top:12px;background:#FFFFFF;color:#173448;border:2px solid var(--green);font-size:16px}\n#w27-meet-one .w27-save-explain{margin-top:8px}\n#w27-meet-one .error{color:#AF2929;font-size:14px;font-weight:800;margin:12px 0}\n#w27-meet-one .upsells{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin-top:10px}\n#w27-meet-one .upsell{border:1px solid var(--border);border-radius:12px;padding:15px}\n#w27-meet-one .upsell a{color:#175572;font-weight:900}\n#w27-meet-one .links a{display:block;padding:12px 0;border-bottom:1px solid var(--border);\n  text-decoration:none;font-weight:800;color:#175572}\n@media(max-width:920px){#w27-meet-one .layout{grid-template-columns:1fr!important}}\n@media(max-width:650px){#w27-meet-one{width:calc(100vw - 24px)!important}\n  #w27-meet-one .hero{padding:28px 22px}\n  #w27-meet-one .hero h1{font-size:clamp(36px,8vw,48px)}\n  #w27-meet-one .card{padding:19px}\n  #w27-meet-one h2{font-size:29px}\n  #w27-meet-one .w27-fields,#w27-meet-one .radio-grid,#w27-meet-one .upsells{grid-template-columns:1fr!important}}\n\u003c\/style\u003e\n\u003c!-- 02 CUSTOMER COPY — EDIT HEADINGS HERE --\u003e\n\u003cheader class=\"hero\"\u003e\n  \u003cdiv class=\"eyebrow\"\u003eTHE WITFL · LAS VEGAS · WINTER 2027\u003c\/div\u003e\n  \u003ch1\u003eWINTER QUALIFIER \u003cspan\u003eJANUARY 8–10, 2027\u003c\/span\u003e\n\u003c\/h1\u003e\n  \u003cp\u003eRegister your team or enter as an individual free agent for this entire qualifying weekend. Choose your events, add your entry to the cart, and register another athlete or meet before checkout.\u003c\/p\u003e\n  \u003cdiv class=\"pills\"\u003e\n\u003cspan\u003eONE MEET · THREE DAYS\u003c\/span\u003e\u003cspan\u003eTEAM OR FREE AGENT\u003c\/span\u003e\u003cspan\u003eADD MULTIPLE ENTRIES\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/header\u003e\n\u003cdiv class=\"layout\"\u003e\n\u003cmain\u003e\n\u003cform id=\"w27-form\" novalidate\u003e\n  \u003csection class=\"card primary\"\u003e\n    \u003cdiv class=\"step\"\u003eStep 1 · Registration Type\u003c\/div\u003e\n    \u003ch2\u003eWho Are You Registering?\u003c\/h2\u003e\n    \u003cdiv class=\"radio-grid\"\u003e\n      \u003clabel class=\"radio-card\"\u003e\u003cinput type=\"radio\" name=\"w27-mode\" value=\"free\" checked\u003e\u003cspan\u003e\u003cstrong\u003eIndividual Free Agent\u003c\/strong\u003e\u003csmall\u003eRegister one athlete for up to two races or field events.\u003c\/small\u003e\u003c\/span\u003e\u003c\/label\u003e\n      \u003clabel class=\"radio-card\"\u003e\u003cinput type=\"radio\" name=\"w27-mode\" value=\"team\"\u003e\u003cspan\u003e\u003cstrong\u003eNew Team Registration\u003c\/strong\u003e\u003csmall\u003eRegister your team and optionally enter its roster now.\u003c\/small\u003e\u003c\/span\u003e\u003c\/label\u003e\n      \u003clabel class=\"radio-card\"\u003e\u003cinput type=\"radio\" name=\"w27-mode\" value=\"existing\"\u003e\u003cspan\u003e\u003cstrong\u003eAlready Registered Team\u003c\/strong\u003e\u003csmall\u003eComplete payment without submitting another application.\u003c\/small\u003e\u003c\/span\u003e\u003c\/label\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"w27-fields\"\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-division\"\u003eCompetition Division *\u003c\/label\u003e\n        \u003cselect id=\"w27-division\" required\u003e\u003coption value=\"\"\u003eSelect division\u003c\/option\u003e\n        \u003coption value=\"Club Team Girls · Ages 14–18\"\u003eClub Team Girls · Ages 14–18\u003c\/option\u003e\n\u003coption value=\"Club Team Boys · Ages 14–18\"\u003eClub Team Boys · Ages 14–18\u003c\/option\u003e\n\u003coption value=\"Open Women · Ages 18+\"\u003eOpen Women · Ages 18+\u003c\/option\u003e\n\u003coption value=\"Open Men · Ages 18+\"\u003eOpen Men · Ages 18+\u003c\/option\u003e\n        \u003c\/select\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cp class=\"muted\"\u003eThis product covers January 8–10, 2027 only. You can select another qualifying weekend from the tournament page.\u003c\/p\u003e\n  \u003c\/section\u003e\n  \u003csection id=\"w27-free-fields\" class=\"card\"\u003e\n    \u003cdiv class=\"step\"\u003eStep 2 · Free Agent Athlete\u003c\/div\u003e\n\u003ch2\u003eAthlete Details \u0026amp; Events\u003c\/h2\u003e\n    \u003cdiv id=\"w27-reuse-box\" class=\"notice\" hidden\u003e\n      \u003clabel class=\"w27-field-label\" for=\"w27-reuse\"\u003eAlready added an athlete? Reuse their information.\u003c\/label\u003e\n      \u003cdiv class=\"w27-fields\"\u003e\n\u003cdiv class=\"w27-field\"\u003e\u003cselect id=\"w27-reuse\"\u003e\u003coption value=\"\"\u003eSelect athlete in cart\u003c\/option\u003e\u003c\/select\u003e\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\u003cbutton type=\"button\" class=\"mini-button\" id=\"w27-reuse-button\"\u003eUse Athlete Information\u003c\/button\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n      \u003cp class=\"muted\"\u003eA new entry still requires its own event selection and agreement signatures.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"w27-fields\"\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-first\"\u003eAthlete First Name *\u003c\/label\u003e\u003cinput id=\"w27-first\" autocomplete=\"given-name\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-last\"\u003eAthlete Last Name *\u003c\/label\u003e\u003cinput id=\"w27-last\" autocomplete=\"family-name\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-gender\"\u003eCompetition Gender *\u003c\/label\u003e\n        \u003cselect id=\"w27-gender\"\u003e\u003coption value=\"\"\u003eSelect\u003c\/option\u003e\n\u003coption\u003eFemale\u003c\/option\u003e\n\u003coption\u003eMale\u003c\/option\u003e\u003c\/select\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-dob\"\u003eDate of Birth *\u003c\/label\u003e\u003cinput id=\"w27-dob\" type=\"date\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-email\"\u003eAthlete \/ Family Email *\u003c\/label\u003e\u003cinput id=\"w27-email\" type=\"email\" autocomplete=\"email\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-phone\"\u003eContact Telephone *\u003c\/label\u003e\u003cinput id=\"w27-phone\" type=\"tel\" autocomplete=\"tel\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-city\"\u003eCity and State *\u003c\/label\u003e\u003cinput id=\"w27-city\" autocomplete=\"address-level2\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-club\"\u003eSchool or Club (Optional)\u003c\/label\u003e\u003cinput id=\"w27-club\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-event1\"\u003ePrimary Race \/ Field Event *\u003c\/label\u003e\n        \u003cselect id=\"w27-event1\"\u003e\u003coption value=\"\"\u003eSelect competition\u003c\/option\u003e\n          \u003coption\u003e60M Dash\u003c\/option\u003e\n\u003coption\u003e60M Hurdles\u003c\/option\u003e\n\u003coption\u003eLong Jump\u003c\/option\u003e\n\u003coption\u003ePole Vault\u003c\/option\u003e\n\u003coption\u003eTrackFIT 1600M (youth only)\u003c\/option\u003e\n        \u003c\/select\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-event2\"\u003eSecond Event (Optional)\u003c\/label\u003e\n        \u003cselect id=\"w27-event2\"\u003e\u003coption value=\"\"\u003eNone\u003c\/option\u003e\n          \u003coption\u003e60M Dash\u003c\/option\u003e\n\u003coption\u003e60M Hurdles\u003c\/option\u003e\n\u003coption\u003eLong Jump\u003c\/option\u003e\n\u003coption\u003ePole Vault\u003c\/option\u003e\n\u003coption\u003eTrackFIT 1600M (youth only)\u003c\/option\u003e\n        \u003c\/select\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cp class=\"notice\"\u003eUp to two different events per athlete. Each race or field event has a limit of 16 free-agent entrants for this meet; entries are subject to availability confirmation.\u003c\/p\u003e\n    \u003cdiv class=\"guardian\" id=\"w27-guardian\" hidden\u003e\n      \u003ch3\u003eParent or Legal Guardian\u003c\/h3\u003e\n\u003cp class=\"muted\"\u003eRequired if the athlete is younger than 18 on January 8, 2027.\u003c\/p\u003e\n      \u003cdiv class=\"w27-fields\"\u003e\n        \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-guardian-name\"\u003eGuardian Full Legal Name *\u003c\/label\u003e\u003cinput id=\"w27-guardian-name\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-guardian-email\"\u003eGuardian Email *\u003c\/label\u003e\u003cinput id=\"w27-guardian-email\" type=\"email\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-guardian-phone\"\u003eGuardian Telephone *\u003c\/label\u003e\u003cinput id=\"w27-guardian-phone\" type=\"tel\"\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n  \u003csection id=\"w27-waiver-section\" class=\"card\"\u003e\n    \u003cdiv class=\"step\"\u003eStep 3 · Athlete Agreements\u003c\/div\u003e\n\u003ch2\u003eReview \u0026amp; Sign\u003c\/h2\u003e\n    \u003cp class=\"muted\"\u003eAll three agreements require separate acceptance and electronic signatures. A parent or legal guardian signs for minors.\u003c\/p\u003e\n    \u003cp class=\"muted\"\u003e\u003ca target=\"_blank\" rel=\"noopener\" href=\"\/pages\/witfl-tournament-athlete-agreements\"\u003eView Official Athlete Agreements\u003c\/a\u003e\u003c\/p\u003e\n    \u003cdiv id=\"w27-waiver-status\" class=\"notice\" role=\"status\"\u003eLoading agreements…\u003c\/div\u003e\n    \u003cdiv id=\"w27-waivers\" hidden\u003e\n      \u003cdetails class=\"agreement\" open\u003e\n  \u003csummary\u003e1. Event Participation Waiver \u0026amp; Release of Liability *\u003c\/summary\u003e\n  \u003cdiv class=\"terms\" id=\"w27-term1\"\u003e\u003c\/div\u003e\n  \u003clabel class=\"check\"\u003e\u003cinput type=\"checkbox\" id=\"w27-accept1\"\u003e\u003cspan\u003eI have read and accept this agreement.\u003c\/span\u003e\u003c\/label\u003e\n  \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-sign1\"\u003eFull Legal Electronic Signature *\u003c\/label\u003e\u003cinput id=\"w27-sign1\" maxlength=\"160\"\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"agreement\"\u003e\n  \u003csummary\u003e2. TrackFIT Data Collection \u0026amp; Scoring Terms *\u003c\/summary\u003e\n  \u003cdiv class=\"terms\" id=\"w27-term2\"\u003e\u003c\/div\u003e\n  \u003clabel class=\"check\"\u003e\u003cinput type=\"checkbox\" id=\"w27-accept2\"\u003e\u003cspan\u003eI have read and accept this agreement.\u003c\/span\u003e\u003c\/label\u003e\n  \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-sign2\"\u003eFull Legal Electronic Signature *\u003c\/label\u003e\u003cinput id=\"w27-sign2\" maxlength=\"160\"\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"agreement\"\u003e\n  \u003csummary\u003e3. Photo, Video \u0026amp; Media Release *\u003c\/summary\u003e\n  \u003cdiv class=\"terms\" id=\"w27-term3\"\u003e\u003c\/div\u003e\n  \u003clabel class=\"check\"\u003e\u003cinput type=\"checkbox\" id=\"w27-accept3\"\u003e\u003cspan\u003eI have read and accept this agreement.\u003c\/span\u003e\u003c\/label\u003e\n  \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-sign3\"\u003eFull Legal Electronic Signature *\u003c\/label\u003e\u003cinput id=\"w27-sign3\" maxlength=\"160\"\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n      \u003clabel class=\"check\"\u003e\u003cinput type=\"checkbox\" id=\"w27-certify\"\u003e\u003cspan\u003eI am the athlete age 18 or older, or the authorized parent\/legal guardian signing for a minor.\u003c\/span\u003e\u003c\/label\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n  \u003csection id=\"w27-team-fields\" class=\"card\" hidden\u003e\n    \u003cdiv class=\"step\"\u003eStep 2 · Team Application\u003c\/div\u003e\n\u003ch2\u003eRegister Your Team\u003c\/h2\u003e\n    \u003cdiv class=\"w27-fields\"\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-team-name\"\u003eRegistered Team Name *\u003c\/label\u003e\u003cinput id=\"w27-team-name\" maxlength=\"160\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-school\"\u003eSchool \/ Club Affiliation (Optional)\u003c\/label\u003e\u003cinput id=\"w27-school\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-lead-first\"\u003eTeam Lead First Name *\u003c\/label\u003e\u003cinput id=\"w27-lead-first\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-lead-last\"\u003eTeam Lead Last Name *\u003c\/label\u003e\u003cinput id=\"w27-lead-last\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-lead-email\"\u003eTeam Lead Email *\u003c\/label\u003e\u003cinput id=\"w27-lead-email\" type=\"email\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field\"\u003e\n\u003clabel for=\"w27-lead-phone\"\u003eTeam Lead Phone *\u003c\/label\u003e\u003cinput id=\"w27-lead-phone\" type=\"tel\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-team-city\"\u003eTeam City and State\u003c\/label\u003e\u003cinput id=\"w27-team-city\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-team-notes\"\u003eRegistration Notes\u003c\/label\u003e\u003ctextarea id=\"w27-team-notes\" rows=\"2\"\u003e\u003c\/textarea\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003ch3\u003eTeam Roster\u003c\/h3\u003e\n    \u003cp class=\"muted\"\u003eYou may enter athletes now. The complete roster must be submitted no later than December 29, 2026. Each athlete needs a full name, gender, date of birth, and event selections.\u003c\/p\u003e\n    \u003cdiv id=\"w27-roster\"\u003e\u003c\/div\u003e\n    \u003cbutton id=\"w27-add-roster\" class=\"mini-button\" type=\"button\"\u003e+ Add Athlete to Roster\u003c\/button\u003e\n    \u003cdiv class=\"w27-fields\"\u003e\u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-lead-sign\"\u003eTeam Lead Electronic Signature *\u003c\/label\u003e\u003cinput id=\"w27-lead-sign\" maxlength=\"160\"\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n    \u003clabel class=\"check\"\u003e\u003cinput type=\"checkbox\" id=\"w27-team-authorize\"\u003e \u003cspan\u003eI am authorized to register this team and understand the roster and payment deadlines.\u003c\/span\u003e\u003c\/label\u003e\n  \u003c\/section\u003e\n  \u003csection id=\"w27-existing-fields\" class=\"card\" hidden\u003e\n    \u003cdiv class=\"step\"\u003eAlready Registered · Payment Only\u003c\/div\u003e\n\u003ch2\u003eComplete Your Team Payment\u003c\/h2\u003e\n    \u003cp class=\"muted\"\u003eUse the registration reference you received. This does not submit a second team application.\u003c\/p\u003e\n    \u003cdiv class=\"w27-fields\"\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-existing-ref\"\u003eExisting Registration Reference *\u003c\/label\u003e\u003cinput id=\"w27-existing-ref\" maxlength=\"120\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-existing-team\"\u003eRegistered Team Name *\u003c\/label\u003e\u003cinput id=\"w27-existing-team\" maxlength=\"160\"\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"w27-field wide\"\u003e\n\u003clabel for=\"w27-existing-email\"\u003eRegistration Email *\u003c\/label\u003e\u003cinput id=\"w27-existing-email\" type=\"email\"\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n  \u003csection class=\"card primary\"\u003e\n    \u003cdiv class=\"step\"\u003eFinal Step · Add Entry to Cart\u003c\/div\u003e\n\u003ch2\u003eChoose Payment\u003c\/h2\u003e\n    \u003cdiv id=\"w27-payments\" class=\"radio-grid\"\u003e\n      \u003clabel class=\"radio-card\" id=\"w27-deposit-choice\"\u003e\u003cinput type=\"radio\" name=\"w27-pay\" value=\"deposit\" checked\u003e\u003cspan\u003e\u003cstrong\u003e$250 Refundable Team Deposit\u003c\/strong\u003e\u003csmall\u003eApplied toward $1,000 total; remaining $750 due December 9, 2026.\u003c\/small\u003e\u003c\/span\u003e\u003c\/label\u003e\n      \u003clabel class=\"radio-card\" id=\"w27-full-choice\"\u003e\u003cinput type=\"radio\" name=\"w27-pay\" value=\"full\"\u003e\u003cspan\u003e\u003cstrong\u003e$1,000 Team Paid in Full\u003c\/strong\u003e\u003csmall\u003eEntire team entry paid now.\u003c\/small\u003e\u003c\/span\u003e\u003c\/label\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"summary\"\u003e\n      \u003cdiv class=\"summary-row\"\u003e\n\u003cspan\u003eCompetition\u003c\/span\u003e\u003cstrong\u003eJanuary 8–10, 2027\u003c\/strong\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"summary-row\"\u003e\n\u003cspan\u003eRegistration\u003c\/span\u003e\u003cstrong id=\"w27-choice-name\"\u003eFree Agent\u003c\/strong\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"summary-row\"\u003e\n\u003cspan\u003ePayment Today\u003c\/span\u003e\u003cstrong id=\"w27-total\"\u003eSelect division\u003c\/strong\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cbutton id=\"w27-add\" type=\"submit\" class=\"cta\"\u003eADD EVENT ENTRY TO CART\u003c\/button\u003e\n    \u003cbutton id=\"w27-pay-later\" type=\"button\" class=\"cta w27-secondary\" hidden\u003eSAVE TEAM REGISTRATION — PAY LATER\u003c\/button\u003e\n    \u003cp id=\"w27-pay-later-note\" class=\"muted w27-save-explain\" hidden\u003eSubmit your team application now without paying. Your registration contact information will be saved for payment follow-up. Payment is due by December 9, 2026. You can also keep your selected payment in the cart.\u003c\/p\u003e\n    \u003cp class=\"error\" id=\"w27-error\" role=\"alert\" aria-live=\"polite\"\u003e\u003c\/p\u003e\n    \u003cp class=\"muted\"\u003eYour entry is added to the cart. You can add another athlete, another qualifying weekend, or optional products before checkout. Checkout billing details may belong to a different person.\u003c\/p\u003e\n  \u003c\/section\u003e\n\u003c\/form\u003e\n\u003csection class=\"card primary\" id=\"w27-success\" hidden\u003e\n  \u003cdiv class=\"step\" id=\"w27-success-step\"\u003eEntry Added\u003c\/div\u003e\n\u003ch2 id=\"w27-success-title\"\u003eRegistration Added to Your Cart\u003c\/h2\u003e\n  \u003cp id=\"w27-success-message\"\u003eYour registration details are included with this cart entry. You can continue registering athletes and meets before paying.\u003c\/p\u003e\n  \u003cp id=\"w27-saved-ref\" class=\"notice\" hidden\u003e\u003c\/p\u003e\n  \u003cdiv class=\"w27-fields\"\u003e\n\u003cdiv\u003e\u003cbutton type=\"button\" class=\"cta\" id=\"w27-another\"\u003e+ ADD ANOTHER ENTRY\u003c\/button\u003e\u003c\/div\u003e\n  \u003cdiv\u003e\u003ca id=\"w27-view-cart\" class=\"cta\" style=\"background:var(--navy);color:white;text-decoration:none\" href=\"\/cart\"\u003eVIEW CART \u0026amp; CHECKOUT →\u003c\/a\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n  \u003cp style=\"margin-top:18px\"\u003e\u003ca href=\"\/pages\/las-vegas-trackfit-tournament\"\u003eExplore other Winter qualifying weekends →\u003c\/a\u003e\u003c\/p\u003e\n  \u003ch3\u003eOptional Additions\u003c\/h3\u003e\n  \u003cdiv class=\"upsells\"\u003e\n    \u003cdiv class=\"upsell\"\u003e\n\u003cstrong\u003eTrackFIT Founding Membership\u003c\/strong\u003e\u003cp class=\"muted\"\u003eAdd a founding membership to your cart.\u003c\/p\u003e\n\u003ca href=\"\/products\/trackfit-founding-athlete-membership\"\u003eView Membership →\u003c\/a\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"upsell\"\u003e\n\u003cstrong\u003eFitFeet Insoles\u003c\/strong\u003e\u003cp class=\"muted\"\u003eExplore FitFeet before checkout.\u003c\/p\u003e\n\u003ca href=\"\/products\/the-fitfeet-system\"\u003eView FitFeet →\u003c\/a\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/main\u003e\u003caside\u003e\n  \u003csection class=\"card\"\u003e\u003cdiv class=\"step\"\u003eMeet Schedule\u003c\/div\u003e\n\u003ch2\u003eJanuary 8–10, 2027\u003c\/h2\u003e\n\u003cp class=\"muted\"\u003eJanuary 8–10, 2027 is one weekend tournament. Select one primary event and an optional second event for an individual free agent.\u003c\/p\u003e\n    \u003cdiv class=\"links\"\u003e\n\u003ca href=\"\/pages\/las-vegas-trackfit-tournament\"\u003eWinter Tournament Overview →\u003c\/a\u003e\u003ca href=\"\/pages\/las-vegas-indoor-series-schedule\"\u003eMeet Schedule →\u003c\/a\u003e\u003ca href=\"\/pages\/las-vegas-tournament-operations-guide\"\u003eOperations Guide →\u003c\/a\u003e\n\u003c\/div\u003e\n  \u003c\/section\u003e\n  \u003csection class=\"card\"\u003e\u003cdiv class=\"step\"\u003eTeam Deadlines\u003c\/div\u003e\n\u003ch2\u003eImportant Dates\u003c\/h2\u003e\n    \u003cp\u003e\u003cstrong\u003eDecember 9, 2026\u003c\/strong\u003e\u003cbr\u003e\u003cspan class=\"muted\"\u003eRemaining team balance due.\u003c\/span\u003e\u003c\/p\u003e\n    \u003cp\u003e\u003cstrong\u003eDecember 29, 2026\u003c\/strong\u003e\u003cbr\u003e\u003cspan class=\"muted\"\u003eTeam registration and final roster deadline.\u003c\/span\u003e\u003c\/p\u003e\n  \u003c\/section\u003e\n  \u003csection class=\"card\"\u003e\u003cdiv class=\"step\"\u003eFree Agent Availability\u003c\/div\u003e\n\u003ch2\u003e16 Per Event\u003c\/h2\u003e\n\u003cp class=\"muted\"\u003eEach individual race or field event has 16 free-agent allocations per meet. WITFL confirms availability.\u003c\/p\u003e\u003c\/section\u003e\n\u003c\/aside\u003e\n\u003c\/div\u003e\n\u003cscript type=\"application\/json\" id=\"w27-variants\"\u003e{{ product.variants | json }}\u003c\/script\u003e\n\u003cscript\u003e\n(function(){\n'use strict';\nconst root=document.getElementById('w27-meet-one');if(!root)return;\nconst $=s=\u003eroot.querySelector(s),$$=s=\u003eArray.from(root.querySelectorAll(s));\nconst form=$('#w27-form'),variants=JSON.parse($('#w27-variants').textContent||'[]');\nconst teamFields=['w27-team-name','w27-lead-first','w27-lead-last','w27-lead-email','w27-lead-phone','w27-lead-sign'];\nconst freeFields=['w27-first','w27-last','w27-gender','w27-dob','w27-email','w27-phone','w27-city','w27-event1'];\nconst existingFields=['w27-existing-ref','w27-existing-team','w27-existing-email'];\nconst guardianFields=['w27-guardian-name','w27-guardian-email','w27-guardian-phone'];\nconst WEEKEND='January 8–10, 2027',MEET_START='2027-01-08';\nconst BACKEND='https:\/\/script.google.com\/macros\/s\/AKfycby8FN9EU3RJ7pova-piw_qFjFWY-C43zskhfohZ-Fj2byWQtD3ClgjCNBA7L0d_jC_fBA\/exec';\nlet waiverReady=false,busy=false,registrationSaved=false,submissionId='';\nlet previousAthletes=[];\nconst v=id=\u003e$('#'+id)?.value?.trim()||'';\nconst mode=()=\u003eroot.querySelector('input[name=w27-mode]:checked')?.value||'free';\nconst pay=()=\u003eroot.querySelector('input[name=w27-pay]:checked')?.value||'deposit';\nconst currency=cents=\u003enew Intl.NumberFormat('en-US',{style:'currency',currency:'USD'}).format(Number(cents)\/100);\nconst options=item=\u003eitem.options||[item.option1,item.option2,item.option3];\nconst newId=()=\u003etypeof crypto!=='undefined'\u0026\u0026crypto.randomUUID?crypto.randomUUID():'W27-'+Date.now()+'-'+Math.random().toString(36).slice(2);\nconst normalize=s=\u003eString(s||'').replace(\/\\s+\/g,' ').trim().toLowerCase();\nfunction findVariant(){\n const kind=mode()==='free'?'Free Agent':pay()==='deposit'?'Team — $250 Refundable Deposit':'Team — $1,000 Pay in Full';\n return variants.find(x=\u003e{const o=options(x);return o[0]===v('w27-division')\u0026\u0026o[1].includes(kind)\u0026\u0026x.available})||null;\n}\nfunction vegasDay(){const a=new Intl.DateTimeFormat('en-CA',{timeZone:'America\/Los_Angeles',year:'numeric',month:'2-digit',day:'2-digit'}).formatToParts(new Date());const o=Object.fromEntries(a.map(p=\u003e[p.type,p.value]));return `${o.year}-${o.month}-${o.day}`;}\nfunction ageOnMeet(dob){if(!\/^\\d{4}-\\d{2}-\\d{2}$\/.test(dob))return null;const d=new Date(dob+'T12:00:00Z');if(!Number.isFinite(d.getTime()))return null;let age=2027-d.getUTCFullYear();if(d.getUTCMonth()\u003e0||(d.getUTCMonth()===0\u0026\u0026d.getUTCDate()\u003e8))age--;return age;}\nfunction genderValid(division,gender){if(!division||!gender)return false;return \/(Girls|Women)\/.test(division)?gender==='Female':gender==='Male';}\nfunction ageValid(division,age){if(age===null||age\u003c0)return false;return \/Club\/.test(division)?age\u003e=14\u0026\u0026age\u003c=18:age\u003e=18;}\nfunction eventValid(a,b,division){if(!a||a===b)return false;if(\/Open\/.test(division)\u0026\u0026(\/youth only\/i.test(a)||\/youth only\/i.test(b)))return false;return true;}\nfunction setRequired(ids,required){ids.forEach(id=\u003e{$('#'+id).required=required;});}\nfunction updateMode(){const m=mode(),free=m==='free',team=m==='team',existing=m==='existing';\n $('#w27-free-fields').hidden=!free;$('#w27-waiver-section').hidden=!free;\n $('#w27-team-fields').hidden=!team;$('#w27-existing-fields').hidden=!existing;\n $('#w27-payments').hidden=free;setRequired(freeFields,free);setRequired(teamFields,team);setRequired(existingFields,existing);\n for(let i=1;i\u003c=3;i++){setRequired(['w27-accept'+i,'w27-sign'+i],free);}$('#w27-certify').required=free;\n $('#w27-team-authorize').required=team;\n if(free){$('#w27-choice-name').textContent='Free Agent · Paid in Full';}\n if(team){$('#w27-choice-name').textContent='Team Registration';}\n if(existing){$('#w27-choice-name').textContent='Registered Team · Payment';}\n const today=vegasDay();const depositAllowed=today\u003c='2026-12-09';\n $('#w27-pay-later').hidden=!(team\u0026\u0026today\u003c='2026-12-09');\n $('#w27-pay-later-note').hidden=!(team\u0026\u0026today\u003c='2026-12-09');\n\n const depositRadio=$('input[name=w27-pay][value=deposit]');depositRadio.disabled=!depositAllowed;\n $('#w27-deposit-choice').style.opacity=depositAllowed?'1':'.45';\n if(!depositAllowed\u0026\u0026pay()==='deposit')$('input[name=w27-pay][value=full]').checked=true;\n if(today\u003e'2026-12-29'\u0026\u0026team){$('#w27-error').textContent='New team registration has closed for this meet. Contact event support.';}\n updateGuardian();updateEvents();updatePrice();\n}\nfunction updateGuardian(){const age=ageOnMeet(v('w27-dob')),minor=age!==null\u0026\u0026age\u003c18,visible=mode()==='free'\u0026\u0026minor;\n $('#w27-guardian').hidden=!visible;setRequired(guardianFields,visible);}\nfunction updateEvents(){const open=\/Open\/.test(v('w27-division'));\n ['w27-event1','w27-event2'].forEach(id=\u003e{$$('#'+id+' option').forEach(x=\u003e{if(\/youth only\/i.test(x.value)){x.disabled=open;if(x.disabled\u0026\u0026x.selected)$('#'+id).value='';}});});\n}\nfunction updatePrice(){const x=findVariant();$('#w27-total').textContent=x?currency(x.price):'Choose division \u0026 payment';\n if(mode()==='free')$('#w27-choice-name').textContent='Free Agent · Paid in Full';}\nfunction rosterRows(){return $$('.w27-roster-row').map(el=\u003e({\n  name:el.querySelector('[data-name]').value.trim(),gender:el.querySelector('[data-gender]').value,\n  dob:el.querySelector('[data-dob]').value,event1:el.querySelector('[data-event1]').value,event2:el.querySelector('[data-event2]').value\n})).filter(r=\u003er.name||r.dob||r.gender||r.event1||r.event2);}\nfunction addRosterRow(data={}){\n const item=document.createElement('div');item.className='roster-item w27-roster-row';\n item.innerHTML=`\u003cdiv class=\"roster-title\"\u003e\u003ch3\u003eRoster Athlete\u003c\/h3\u003e\u003cbutton type=\"button\" class=\"mini-button\" data-remove\u003eRemove\u003c\/button\u003e\u003c\/div\u003e\n \u003cdiv class=\"w27-fields\"\u003e\u003cdiv class=\"w27-field wide\"\u003e\u003clabel\u003eAthlete Full Legal Name\u003c\/label\u003e\u003cinput data-name maxlength=\"160\"\u003e\u003c\/div\u003e\n \u003cdiv class=\"w27-field\"\u003e\u003clabel\u003eGender\u003c\/label\u003e\u003cselect data-gender\u003e\u003coption value=\"\"\u003eSelect\u003c\/option\u003e\u003coption\u003eFemale\u003c\/option\u003e\u003coption\u003eMale\u003c\/option\u003e\u003c\/select\u003e\u003c\/div\u003e\n \u003cdiv class=\"w27-field\"\u003e\u003clabel\u003eDate of Birth\u003c\/label\u003e\u003cinput data-dob type=\"date\"\u003e\u003c\/div\u003e\n \u003cdiv class=\"w27-field\"\u003e\u003clabel\u003ePrimary Event\u003c\/label\u003e\u003cselect data-event1\u003e\u003coption value=\"\"\u003eSelect event\u003c\/option\u003e\u003coption\u003e60M Dash\u003c\/option\u003e\u003coption\u003e60M Hurdles\u003c\/option\u003e\u003coption\u003eLong Jump\u003c\/option\u003e\u003coption\u003ePole Vault\u003c\/option\u003e\u003coption\u003eTrackFIT 1600M (youth only)\u003c\/option\u003e\u003c\/select\u003e\u003c\/div\u003e\n \u003cdiv class=\"w27-field\"\u003e\u003clabel\u003eSecond Event (Optional)\u003c\/label\u003e\u003cselect data-event2\u003e\u003coption value=\"\"\u003eNone\u003c\/option\u003e\u003coption\u003e60M Dash\u003c\/option\u003e\u003coption\u003e60M Hurdles\u003c\/option\u003e\u003coption\u003eLong Jump\u003c\/option\u003e\u003coption\u003ePole Vault\u003c\/option\u003e\u003coption\u003eTrackFIT 1600M (youth only)\u003c\/option\u003e\u003c\/select\u003e\u003c\/div\u003e\u003c\/div\u003e`;\n $('#w27-roster').appendChild(item);item.querySelector('[data-remove]').onclick=()=\u003eitem.remove();\n ['name','gender','dob','event1','event2'].forEach(key=\u003e{if(data[key])item.querySelector('[data-'+key+']').value=data[key];});\n}\nfunction validateRoster(){const rows=rosterRows();for(const r of rows){\n if(!r.name||!r.gender||!r.dob||!r.event1)throw Error('Complete all athlete details in each roster row or remove the incomplete row.');\n const age=ageOnMeet(r.dob);if(!ageValid(v('w27-division'),age)||!genderValid(v('w27-division'),r.gender))throw Error('A roster athlete does not match the selected division.');\n if(!eventValid(r.event1,r.event2,v('w27-division')))throw Error('Choose distinct eligible roster events.');\n }return rows;}\nasync function loadWaivers(){try{\n const r=await fetch('\/pages\/witfl-tournament-athlete-agreements',{credentials:'same-origin',cache:'no-store'});\n if(!r.ok)throw Error('Unable to load athlete agreements.');\n const doc=new DOMParser().parseFromString(await r.text(),'text\/html');\n for(let i=1;i\u003c=3;i++){const node=doc.querySelector('#witfl-waiver'+i);if(!node||!node.textContent.trim())throw Error('One of the official agreements is unavailable.');$('#w27-term'+i).innerHTML=node.innerHTML;}\n waiverReady=true;$('#w27-waivers').hidden=false;$('#w27-waiver-status').hidden=true;\n }catch(e){waiverReady=false;$('#w27-waiver-status').textContent='Agreements unavailable. Contact support@worlditfl.com before registering.';}}\nfunction verifyFree(){const d=v('w27-division'),age=ageOnMeet(v('w27-dob'));\n if(!ageValid(d,age))throw Error('Athlete age does not meet the selected division.');\n if(!genderValid(d,v('w27-gender')))throw Error('Competition gender does not match the selected division.');\n if(!eventValid(v('w27-event1'),v('w27-event2'),d))throw Error('Select a primary event and a different second event, if desired.');\n if(!waiverReady)throw Error('All official agreements must load before signing.');\n const signer=age\u003c18?v('w27-guardian-name'):v('w27-first')+' '+v('w27-last');\n if([1,2,3].some(i=\u003enormalize(v('w27-sign'+i))!==normalize(signer)))throw Error('All three signatures must match the full legal name of the required signer.');\n}\nfunction verifyTeam(){if(vegasDay()\u003e'2026-12-29')throw Error('New team registration is closed for this meet.');\n const signer=v('w27-lead-first')+' '+v('w27-lead-last');\n if(normalize(v('w27-lead-sign'))!==normalize(signer))throw Error('Team lead signature must match the full legal name.');\n return validateRoster();}\nfunction formProperties(rows){const m=mode(),common={'Tournament':'WITFL Winter Qualifier 1','Meet Dates':WEEKEND,'Division':v('w27-division'),'Entry Reference':newId()};\n if(m==='free')return {...common,'Entry Type':'Free Agent','Athlete Name':v('w27-first')+' '+v('w27-last'),\n  'Competition Gender':v('w27-gender'),'Date of Birth':v('w27-dob'),'Athlete Email':v('w27-email'),'Contact Telephone':v('w27-phone'),\n  'City and State':v('w27-city'),'School or Club':v('w27-club'),'Primary Event':v('w27-event1'),'Second Event':v('w27-event2')||'None',\n  'Guardian Name':v('w27-guardian-name')||'Not Required','Guardian Email':v('w27-guardian-email'),'Guardian Phone':v('w27-guardian-phone'),\n  'Participation Waiver':'Accepted','TrackFIT Terms':'Accepted','Media Release':'Accepted',\n  'Participation Signature':v('w27-sign1'),'TrackFIT Signature':v('w27-sign2'),'Media Signature':v('w27-sign3'),\n  'Agreement Timestamp UTC':new Date().toISOString()};\n if(m==='existing')return {...common,'Entry Type':'Existing Team Payment','Registration Reference':v('w27-existing-ref'),\n  'Team Name':v('w27-existing-team'),'Registration Email':v('w27-existing-email'),\n  'Payment Choice':pay()==='deposit'?'Refundable Deposit':'Paid in Full'};\n return {...common,'Entry Type':'Team Registration','Registration Reference':submissionId,\n  'Team Name':v('w27-team-name'),'Team Lead':v('w27-lead-first')+' '+v('w27-lead-last'),\n  'Team Lead Email':v('w27-lead-email'),'Team Lead Phone':v('w27-lead-phone'),'Team City and State':v('w27-team-city'),\n  'School or Club':v('w27-school'),'Registration Notes':v('w27-team-notes'),\n  'Payment Choice':pay()==='deposit'?'Refundable Deposit':'Paid in Full',\n  'Roster Count Submitted':String(rows.length),'Roster Snapshot':JSON.stringify(rows),\n  'Team Lead Signature':v('w27-lead-sign'),'Submission Timestamp UTC':new Date().toISOString()};\n}\nasync function saveNewTeam(rows,deferred=false){if(registrationSaved)return;\n submissionId=submissionId||newId();\n const data={entryType:'Team Sponsor \/ Parent Sponsor',tournamentSeason:'Winter 2027',\n  registrationStatus:'Application Submitted',depositStatus:deferred?'Unpaid \/ Payment Pending':'Pending Checkout',\n  depositAmount:deferred?'0':(pay()==='deposit'?'250':'1000'),paymentChoice:deferred?'Pay Later':(pay()==='deposit'?'Refundable Deposit':'Pay in Full'),\n  teamName:v('w27-team-name'),division:v('w27-division'),\n  captainFirstName:v('w27-lead-first'),captainLastName:v('w27-lead-last'),\n  registrantName:v('w27-lead-first')+' '+v('w27-lead-last'),email:v('w27-lead-email'),phone:v('w27-lead-phone'),\n  schoolOrClub:v('w27-school'),city:v('w27-team-city'),firstWeekendPreference:WEEKEND,\n  teamSponsorCertification:'Accepted',teamSponsorSignature:v('w27-lead-sign'),\n  registrationNotes:v('w27-team-notes'),rosterJSON:JSON.stringify(rows),rosterCount:String(rows.length),\n  submissionId,submittedAt:new Date().toISOString(),confirmationPath:'\/cart'};\n const res=await fetch(BACKEND,{method:'POST',headers:{'Content-Type':'application\/x-www-form-urlencoded'},body:new URLSearchParams(data).toString(),redirect:'follow'});\n if(!res.ok)throw Error('Team application could not be saved.');\n const result=await res.json();if(result.success!==true)throw Error(result.error||'Team application could not be saved.');\n registrationSaved=true;\n}\nasync function loadCartAthletes(){try{const resp=await fetch('\/cart.js',{credentials:'same-origin'});if(!resp.ok)return;\n const cart=await resp.json();previousAthletes=(cart.items||[]).filter(item=\u003eitem.properties\u0026\u0026item.properties['Athlete Name']);\n const select=$('#w27-reuse');select.innerHTML='\u003coption value=\"\"\u003eSelect athlete in cart\u003c\/option\u003e';\n previousAthletes.forEach((item,i)=\u003e{const option=document.createElement('option');option.value=String(i);\n option.textContent=item.properties['Athlete Name'];select.appendChild(option);});\n $('#w27-reuse-box').hidden=previousAthletes.length===0;\n }catch(e){$('#w27-reuse-box').hidden=true;}}\n$('#w27-reuse-button').addEventListener('click',()=\u003e{const i=Number($('#w27-reuse').value);if(!$('#w27-reuse').value||!previousAthletes[i])return;\n const p=previousAthletes[i].properties;const names=String(p['Athlete Name']||'').split(' ');\n $('#w27-first').value=names.shift()||'';$('#w27-last').value=names.join(' ');\n [['w27-gender','Competition Gender'],['w27-dob','Date of Birth'],['w27-email','Athlete Email'],\n  ['w27-phone','Contact Telephone'],['w27-city','City and State'],['w27-club','School or Club'],\n  ['w27-guardian-name','Guardian Name'],['w27-guardian-email','Guardian Email'],['w27-guardian-phone','Guardian Phone']]\n .forEach(([id,key])=\u003e{$('#'+id).value=p[key]\u0026\u0026p[key]!=='Not Required'?p[key]:'';});\n updateGuardian();});\nconst query=new URLSearchParams(window.location.search);\nif(query.get('payment_only')==='1'){$('input[name=w27-mode][value=existing]').checked=true;\n ['submissionId','teamName','email','division'].forEach(key=\u003e{\n const id={submissionId:'w27-existing-ref',teamName:'w27-existing-team',email:'w27-existing-email',division:'w27-division'}[key];\n if(query.get(key))$('#'+id).value=query.get(key);\n });}\n$('#w27-add-roster').addEventListener('click',()=\u003eaddRosterRow());\n$('#w27-another').addEventListener('click',()=\u003e{form.reset();$('#w27-success').hidden=true;form.hidden=false;\n registrationSaved=false;submissionId='';$('#w27-roster').replaceChildren();$('#w27-error').textContent='';\n $$('.agreement input').forEach(el=\u003e{if(el.type==='checkbox')el.checked=false;else el.value='';});\n updateMode();loadCartAthletes();window.scrollTo({top:root.getBoundingClientRect().top+window.scrollY-40,behavior:'smooth'});});\nform.addEventListener('input',e=\u003e{if(e.target.id==='w27-dob')updateGuardian();if(e.target.id==='w27-division')updateEvents();updatePrice();});\nform.addEventListener('change',e=\u003e{if(e.target.name==='w27-mode')updateMode();else if(e.target.id==='w27-dob')updateGuardian();else if(e.target.id==='w27-division')updateEvents();updatePrice();});\n\/* TEAM REGISTER NOW \/ PAY LATER: Save application first; try to keep payment in the cart.\n   Abandoned cart retargeting is NOT guaranteed by a browser cart alone. *\/\n$('#w27-pay-later').addEventListener('click',async()=\u003e{\n if(busy||mode()!=='team')return;\n $('#w27-error').textContent='';\n const button=$('#w27-pay-later');\n try{\n  if(vegasDay()\u003e'2026-12-09')throw Error('The team payment deadline has passed; payment is required.');\n  if(!v('w27-division'))throw Error('Select a competition division.');\n  if(!form.reportValidity())throw Error('Complete the required team registration fields.');\n  const rows=verifyTeam();\n  const variant=findVariant();\n  if(!variant)throw Error('Choose an available payment option before saving your registration.');\n  busy=true;button.disabled=true;$('#w27-add').disabled=true;button.textContent='SAVING TEAM REGISTRATION…';\n  await saveNewTeam(rows,true);\n  let cartAdded=false;\n  try{\n   const response=await fetch('\/cart\/add.js',{method:'POST',headers:{'Content-Type':'application\/json','Accept':'application\/json'},body:JSON.stringify({id:Number(variant.id),quantity:1,properties:formProperties(rows)})});\n   cartAdded=response.ok;\n  }catch(cartError){cartAdded=false;}\n  $('#w27-success-step').textContent='Team Registration Saved';\n  $('#w27-success-title').textContent='Team Registered — Payment Pending';\n  $('#w27-success-message').textContent=cartAdded\n   ? 'Your team application and contact email have been saved. Your selected payment is also in this browser’s cart; payment is still outstanding. The team balance deadline is December 9, 2026.'\n   : 'Your team application and contact email have been saved for payment follow-up. Payment is outstanding. The cart could not be updated, so use your registration reference when completing payment.';\n  $('#w27-saved-ref').textContent='Registration reference: '+submissionId;\n  $('#w27-saved-ref').hidden=false;\n  $('#w27-view-cart').hidden=!cartAdded;\n  form.hidden=true;$('#w27-success').hidden=false;\n  $('#w27-success').scrollIntoView({behavior:'smooth',block:'start'});\n }catch(err){$('#w27-error').textContent=err.message||'Could not save team registration. Please try again.';}\n finally{busy=false;button.disabled=false;$('#w27-add').disabled=false;button.textContent='SAVE TEAM REGISTRATION — PAY LATER';}\n});\nform.addEventListener('submit',async e=\u003e{e.preventDefault();if(busy)return;$('#w27-error').textContent='';\n try{\n  const m=mode(),variant=findVariant();if(!variant)throw Error('Choose an available division and entry payment.');\n  if(!form.reportValidity())throw Error('Complete the required registration fields.');\n  if(m==='free')verifyFree();let rows=[];if(m==='team')rows=verifyTeam();\n  if(m!=='free'\u0026\u0026pay()==='deposit'\u0026\u0026vegasDay()\u003e'2026-12-09')throw Error('Team deposit deadline has passed. Please pay in full.');\n  busy=true;$('#w27-add').disabled=true;$('#w27-add').textContent='PREPARING YOUR CART…';\n  if(m==='team')await saveNewTeam(rows);\n  const properties=formProperties(rows);\n  const response=await fetch('\/cart\/add.js',{method:'POST',headers:{'Content-Type':'application\/json','Accept':'application\/json'},\n   body:JSON.stringify({id:Number(variant.id),quantity:1,properties})});\n  const result=await response.json().catch(()=\u003e({}));if(!response.ok)throw Error(result.description||'Could not add entry to cart.');\n  $('#w27-success-step').textContent='Entry Added';\n  $('#w27-success-title').textContent='Registration Added to Your Cart';\n  $('#w27-success-message').textContent='Your registration details are included with this cart entry. You can continue registering athletes and meets before paying.';\n  $('#w27-saved-ref').hidden=true;$('#w27-view-cart').hidden=false;\n  form.hidden=true;$('#w27-success').hidden=false;\n  $('#w27-success').scrollIntoView({behavior:'smooth',block:'start'});\n }catch(err){$('#w27-error').textContent=err.message||'Please try again.';\n }finally{busy=false;$('#w27-add').disabled=false;$('#w27-add').textContent='ADD EVENT ENTRY TO CART';}\n});\nloadWaivers();loadCartAthletes();updateMode();\n})();\n\u003c\/script\u003e\n\u003c\/section\u003e\n","brand":"The WITFL","offers":[{"title":"Club Team Girls · Ages 14–18 \/ Team — $250 Refundable Deposit","offer_id":67869661429973,"sku":"W27-LV01-01-TEAM-DEP","price":250.0,"currency_code":"USD","in_stock":true},{"title":"Club Team Girls · Ages 14–18 \/ Team — $1,000 Pay in Full","offer_id":67869661462741,"sku":"W27-LV01-01-TEAM-FULL","price":1000.0,"currency_code":"USD","in_stock":true},{"title":"Club Team Girls · Ages 14–18 \/ Free Agent — $125 Pay in Full","offer_id":67869661495509,"sku":"W27-LV01-01-FA-FULL","price":125.0,"currency_code":"USD","in_stock":true},{"title":"Club Team Boys · Ages 14–18 \/ Team — $250 Refundable Deposit","offer_id":67869661528277,"sku":"W27-LV01-02-TEAM-DEP","price":250.0,"currency_code":"USD","in_stock":true},{"title":"Club Team Boys · Ages 14–18 \/ Team — $1,000 Pay in Full","offer_id":67869661561045,"sku":"W27-LV01-02-TEAM-FULL","price":1000.0,"currency_code":"USD","in_stock":true},{"title":"Club Team Boys · Ages 14–18 \/ Free Agent — $125 Pay in Full","offer_id":67869661593813,"sku":"W27-LV01-02-FA-FULL","price":125.0,"currency_code":"USD","in_stock":true},{"title":"Open Women · Ages 18+ \/ Team — $250 Refundable Deposit","offer_id":67869661626581,"sku":"W27-LV01-03-TEAM-DEP","price":250.0,"currency_code":"USD","in_stock":true},{"title":"Open Women · Ages 18+ \/ Team — $1,000 Pay in Full","offer_id":67869661659349,"sku":"W27-LV01-03-TEAM-FULL","price":1000.0,"currency_code":"USD","in_stock":true},{"title":"Open Women · Ages 18+ \/ Free Agent — $125 Pay in Full","offer_id":67869661692117,"sku":"W27-LV01-03-FA-FULL","price":125.0,"currency_code":"USD","in_stock":true},{"title":"Open Men · Ages 18+ \/ Team — $250 Refundable Deposit","offer_id":67869661724885,"sku":"W27-LV01-04-TEAM-DEP","price":250.0,"currency_code":"USD","in_stock":true},{"title":"Open Men · Ages 18+ \/ Team — $1,000 Pay in Full","offer_id":67869661757653,"sku":"W27-LV01-04-TEAM-FULL","price":1000.0,"currency_code":"USD","in_stock":true},{"title":"Open Men · Ages 18+ \/ Free Agent — $125 Pay in Full","offer_id":67869661790421,"sku":"W27-LV01-04-FA-FULL","price":125.0,"currency_code":"USD","in_stock":true}],"url":"https:\/\/worlditfl.com\/products\/witfl-winter-2027-las-vegas-qualifier-1-january-8-10","provider":"WITFL - The World Indoor Track \u0026 Field League","version":"1.0","type":"link"}