/* THP Booking — scoped widget styles */
.thp-app{
  --rink:#0a0e16;--rink-2:#111826;--line-blue:#2b6cff;--crease:#ff3b30;
  --accent:#39e6c3;--ink:#eaf1fb;--muted:#8a99b3;
  --hair:rgba(255,255,255,.08);--hair-strong:rgba(255,255,255,.16);
  max-width:720px;margin:0 auto;color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:linear-gradient(180deg,var(--rink-2),#0c1320);
  border:1px solid var(--hair);border-radius:20px;padding:24px;
  box-shadow:0 24px 60px rgba(0,0,0,.45);
}
.thp-app *{box-sizing:border-box}
.thp-eyebrow{letter-spacing:2px;text-transform:uppercase;color:var(--accent);font-size:12px;font-weight:800;margin-bottom:6px}
.thp-h2{font-size:22px;font-weight:800;margin:0 0 18px;color:var(--ink)}
.thp-steps{display:flex;gap:8px;margin-bottom:20px}
.thp-pip{flex:1;height:4px;border-radius:99px;background:var(--hair)}
.thp-pip.done{background:var(--accent)}
.thp-pip.active{background:linear-gradient(90deg,var(--accent),var(--line-blue))}
.thp-opts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.thp-opts{grid-template-columns:1fr}}
.thp-opt{text-align:left;cursor:pointer;border:1.5px solid var(--hair-strong);background:rgba(255,255,255,.02);
  border-radius:14px;padding:18px;transition:.15s;color:var(--ink);font-family:inherit;width:100%}
.thp-opt:hover{border-color:var(--line-blue);background:rgba(43,108,255,.08)}
.thp-opt.sel{border-color:var(--accent);background:rgba(57,230,195,.08);box-shadow:0 0 0 3px rgba(57,230,195,.15)}
.thp-kind{font-size:18px;font-weight:800}
.thp-meta{color:var(--muted);font-size:13px;font-weight:600;margin:5px 0 12px}
.thp-price{font-size:30px;font-weight:800;color:#fff;line-height:1}
.thp-price small{font-size:12px;font-weight:700;color:var(--muted)}
.thp-tax{font-size:11px;color:var(--muted);font-weight:600;margin-top:3px}
.thp-days{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px}
.thp-day{flex:0 0 auto;width:74px;border:1.5px solid var(--hair-strong);border-radius:13px;padding:12px 8px;
  text-align:center;cursor:pointer;background:rgba(255,255,255,.02);transition:.15s}
.thp-day:hover{border-color:var(--line-blue)}
.thp-day.sel{border-color:var(--accent);background:rgba(57,230,195,.08)}
.thp-dow{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.thp-num{font-size:26px;font-weight:800;line-height:1.1}
.thp-mo{font-size:11px;color:var(--muted);font-weight:600}
.thp-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:18px}
@media(max-width:560px){.thp-slots{grid-template-columns:repeat(2,1fr)}}
.thp-slot{border:1.5px solid var(--hair-strong);border-radius:11px;padding:12px 6px;text-align:center;
  cursor:pointer;font-weight:700;font-size:15px;background:rgba(255,255,255,.02);transition:.15s}
.thp-slot:hover{border-color:var(--line-blue);background:rgba(43,108,255,.08)}
.thp-slot.sel{border-color:var(--accent);background:rgba(57,230,195,.1);color:#fff}
.thp-slot.taken{opacity:.32;cursor:not-allowed;border-style:dashed}
.thp-slot small{display:block;font-size:10.5px;font-weight:600;margin-top:3px}
.thp-slot small.open{color:var(--accent)}.thp-slot small.tight{color:#ffb020}.thp-slot small.full{color:var(--crease)}
.thp-field{margin-bottom:14px}
.thp-field label{display:block;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-bottom:6px}
.thp-field input{width:100%;background:rgba(255,255,255,.03);border:1.5px solid var(--hair-strong);border-radius:10px;
  padding:12px 14px;color:var(--ink);font-family:inherit;font-size:15px;font-weight:500;transition:.15s}
.thp-field input:focus{outline:none;border-color:var(--accent);background:rgba(57,230,195,.05)}
.thp-credit{margin:6px 0 14px;padding:13px 14px;border:1.5px solid var(--accent);border-radius:11px;
  background:rgba(57,230,195,.08);display:flex;align-items:center;gap:10px;font-weight:600;font-size:14px}
.thp-credit input{width:18px;height:18px;accent-color:var(--accent)}
.thp-sumline{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--hair);font-size:14px}
.thp-sumline:last-of-type{border-bottom:none}
.thp-sumline .k{color:var(--muted);font-weight:600}.thp-sumline .v{font-weight:700}
.thp-total{display:flex;justify-content:space-between;align-items:baseline;margin-top:12px;padding-top:14px;border-top:2px solid var(--hair-strong)}
.thp-total .k{font-size:18px;font-weight:800}.thp-total .v{font-size:32px;font-weight:800;color:var(--accent)}
.thp-nav{display:flex;justify-content:space-between;gap:12px;margin-top:22px}
.thp-btn{font-weight:800;font-size:15px;border:none;border-radius:11px;padding:14px 24px;cursor:pointer;transition:.15s;font-family:inherit}
.thp-primary{background:linear-gradient(135deg,var(--accent),#2bd0ad);color:#04231d;flex:1}
.thp-primary:hover{filter:brightness(1.08)}.thp-primary:disabled{opacity:.4;cursor:not-allowed;filter:none}
.thp-ghost{background:transparent;border:1.5px solid var(--hair-strong);color:var(--ink)}
.thp-ghost:hover{border-color:var(--ink)}
.thp-msg{font-size:13px;color:var(--crease);font-weight:600;margin-top:12px;text-align:center;min-height:16px}
.thp-banner{padding:16px;border-radius:12px;font-weight:700;text-align:center;margin-bottom:16px}
.thp-banner.ok{background:rgba(57,230,195,.12);border:1px solid var(--accent)}
.thp-banner.warn{background:rgba(255,176,32,.12);border:1px solid #ffb020}
.thp-pkg{border:1.5px solid var(--hair-strong);border-radius:14px;padding:18px;margin-bottom:12px;display:flex;
  justify-content:space-between;align-items:center;gap:14px}
.thp-pkg .pl{font-weight:800;font-size:17px}
.thp-pkg .ps{color:var(--muted);font-size:13px;font-weight:600;margin-top:3px}
.thp-pkg .pp{font-size:24px;font-weight:800;color:#fff;white-space:nowrap}
.thp-spin{text-align:center;color:var(--muted);font-weight:600;padding:20px}

.thp-app .thp-logo{display:block;max-height:64px;width:auto;margin:0 auto 14px}

/* calendar date picker */
.thp-app .thp-cal{border:1px solid var(--hair-strong);border-radius:14px;padding:14px;background:rgba(255,255,255,.02)}
.thp-app .thp-calhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.thp-app .thp-clabel{font-weight:800;font-size:16px}
.thp-app .thp-cnav{width:36px;height:36px;border-radius:9px;border:1.5px solid var(--hair-strong);background:rgba(255,255,255,.03);color:var(--ink);font-size:18px;cursor:pointer;transition:.15s}
.thp-app .thp-cnav:hover:not([disabled]){border-color:var(--accent);color:var(--accent)}
.thp-app .thp-cnav[disabled]{opacity:.3;cursor:not-allowed}
.thp-app .thp-cgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.thp-app .thp-cdow{text-align:center;font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;padding:4px 0}
.thp-app .thp-ccell{aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;border-radius:9px;font-weight:700;font-size:14px}
.thp-app .thp-ccell.blank{visibility:hidden}
.thp-app .thp-ccell.off{color:var(--muted);opacity:.3}
.thp-app .thp-ccell.ok{cursor:pointer;border:1.5px solid var(--hair-strong);background:rgba(255,255,255,.03)}
.thp-app .thp-ccell.ok:hover{border-color:var(--line-blue);background:rgba(43,108,255,.1)}
.thp-app .thp-ccell.sel{border-color:var(--accent);background:rgba(57,230,195,.15);color:#fff}
.thp-app .thp-ccell.today{box-shadow:inset 0 0 0 2px #ffb020}

/* front-desk (staff) page */
.thp-app .thp-pill{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.5px;padding:2px 8px;border-radius:5px}
.thp-app .thp-pill.solo{background:rgba(43,108,255,.18);color:#7fa8ff}
.thp-app .thp-pill.duo{background:rgba(255,176,32,.16);color:#ffb020}
.thp-app .thp-pill.group{background:rgba(57,230,195,.16);color:var(--accent)}
.thp-app .thp-staff-bar{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.thp-app .thp-daynav{width:38px;height:38px;border-radius:10px;border:1.5px solid var(--hair-strong);background:rgba(255,255,255,.03);color:var(--ink);font-size:18px;cursor:pointer}
.thp-app .thp-daynav:hover{border-color:var(--accent);color:var(--accent)}
.thp-app .thp-staff-date{font-weight:800;font-size:17px;flex:1;min-width:160px}
.thp-app .thp-todaytag{font-size:10px;font-weight:800;letter-spacing:1px;background:var(--accent);color:#04231d;border-radius:5px;padding:2px 7px;vertical-align:middle;margin-left:6px}
.thp-app .thp-staff-today,.thp-app .thp-staff-refresh{padding:9px 14px;flex:0 0 auto}
.thp-app .thp-staff-count{color:var(--muted);font-size:12.5px;font-weight:700;margin-bottom:14px}
.thp-app .thp-staff-empty{color:var(--muted);font-weight:600;padding:24px 0;text-align:center}
.thp-app .thp-staff-list{display:flex;flex-direction:column;gap:8px}
.thp-app .thp-staff-row{display:grid;grid-template-columns:84px 1fr auto;gap:12px;align-items:center;
  border:1.5px solid var(--hair-strong);border-radius:12px;padding:12px 14px;background:rgba(255,255,255,.02)}
.thp-app .thp-staff-time{font-weight:800;font-size:17px}
.thp-app .thp-staff-players{font-weight:800;font-size:14px;margin-top:4px}
.thp-app .thp-staff-sub{color:var(--muted);font-size:12px;font-weight:600;margin-top:2px}
.thp-app .thp-staff-paid{text-align:right;font-weight:800;font-size:14px;white-space:nowrap}
.thp-app .thp-staff-status{display:block;font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}
@media(max-width:560px){.thp-app .thp-staff-row{grid-template-columns:64px 1fr}.thp-app .thp-staff-paid{grid-column:2;text-align:left}}

/* waiver box (booking) */
.thp-app .thp-waiver{border:1.5px solid var(--amber,#ffb020);border-radius:12px;padding:14px;margin:6px 0 4px;background:rgba(255,176,32,.06)}
.thp-app .thp-waiver-head{font-weight:700;font-size:13.5px;margin-bottom:8px}
.thp-app .thp-waiver-toggle{background:none;border:none;color:var(--accent);font-weight:700;font-size:13px;cursor:pointer;padding:0 0 6px}
.thp-app .thp-waiver-text{max-height:200px;overflow-y:auto;font-size:12px;line-height:1.55;color:var(--muted);background:rgba(0,0,0,.15);border-radius:8px;padding:10px 12px;margin-bottom:8px;white-space:normal}
.thp-app .thp-waiver-check{display:flex;align-items:flex-start;gap:9px;font-size:13px;font-weight:600;margin:7px 0;cursor:pointer;line-height:1.4}
.thp-app .thp-waiver-check input{margin-top:2px;flex:0 0 auto}
/* waiver badge (front desk) */
.thp-app .thp-wv-badge{display:block;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;margin-top:4px}
.thp-app .thp-wv-badge.ok{color:var(--accent)}
.thp-app .thp-wv-badge.no{color:#ff6b6b}

/* waiver page label */
.thp-app .thp-flabel{display:block;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin:10px 0 6px}

/* front-desk actions / customers */
.thp-app .thp-staff-item{border:1.5px solid var(--hair-strong);border-radius:12px;background:rgba(255,255,255,.02);margin-bottom:8px;overflow:hidden}
.thp-app .thp-staff-item .thp-staff-row{border:none;border-radius:0;background:transparent;margin:0}
.thp-app .thp-staff-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 14px;border-top:1px dashed var(--hair-strong)}
.thp-app .thp-mini{font-size:12px;font-weight:700;padding:6px 12px;border-radius:8px;border:1.5px solid var(--hair-strong);background:rgba(255,255,255,.03);color:var(--ink);cursor:pointer;text-decoration:none;display:inline-block}
.thp-app .thp-mini:hover{border-color:var(--accent);color:var(--accent)}
.thp-app .thp-mini.thp-act-cancel:hover{border-color:#ff6b6b;color:#ff6b6b}
.thp-app .thp-mini.primary{background:var(--accent);color:#04231d;border-color:var(--accent)}
.thp-app .thp-resched{flex-basis:100%;margin-top:6px}
.thp-app #thp-cust-search{padding:11px 14px;border-radius:10px;border:1.5px solid var(--hair-strong);background:rgba(255,255,255,.03);color:var(--ink);font-size:14px}

/* parties */
.thp-app .thp-party-banner{background:rgba(57,230,195,.1);border:1.5px solid var(--accent);border-radius:12px;padding:12px 14px;margin-bottom:10px;font-size:14px;font-weight:600}
.thp-app .thp-party-id{display:inline-block;font-family:monospace;font-weight:800;background:var(--accent);color:#04231d;border-radius:6px;padding:2px 8px;letter-spacing:.5px}

/* front-desk mini calendar */
.thp-app .thp-mc{border:1.5px solid var(--hair-strong);border-radius:10px;padding:10px;background:rgba(255,255,255,.03)}
.thp-app .thp-mc-head{display:flex;align-items:center;justify-content:space-between;font-weight:800;margin-bottom:8px}
.thp-app .thp-mc-nav{width:32px;height:32px;border-radius:8px;border:1.5px solid var(--hair-strong);background:transparent;color:var(--ink);font-size:16px;cursor:pointer}
.thp-app .thp-mc-nav:hover{border-color:var(--accent);color:var(--accent)}
.thp-app .thp-mc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.thp-app .thp-mc-dow{text-align:center;font-size:9px;font-weight:700;color:var(--muted);text-transform:uppercase}
.thp-app .thp-mc-day{aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;border-radius:7px;font-size:13px;font-weight:700;cursor:pointer;border:1.5px solid transparent}
.thp-app .thp-mc-day:hover{border-color:var(--line-blue)}
.thp-app .thp-mc-day.sel{background:var(--accent);color:#04231d}
.thp-app .thp-mc-day.off{color:var(--muted);opacity:.3;cursor:default}

/* promo box */
.thp-app .thp-promo-row{display:flex;gap:8px;margin-top:10px}
.thp-app .thp-promo-row input{flex:1;text-transform:uppercase}
.thp-app .thp-promo-row .thp-btn{white-space:nowrap}
.thp-app .thp-promo-msg{font-size:12px;font-weight:700;margin-top:6px;min-height:14px}
.thp-app .thp-promo-applied{font-size:13px;color:var(--accent);font-weight:700;margin-top:8px;text-align:right}
.thp-app .thp-promo-applied a{color:var(--muted);font-weight:600}

/* waiver recognized */
.thp-app .thp-waiver-ok{background:rgba(57,230,195,.1);border:1.5px solid var(--accent);border-radius:12px;padding:12px 14px;color:var(--accent);font-weight:700;font-size:14px;margin-top:6px}

/* front-desk month calendar dashboard */
.thp-app .thp-cal-hint{font-size:13px;color:var(--muted);margin:4px 0 12px}
.thp-app .thp-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.thp-app .thp-cal-dow{text-align:center;font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;padding-bottom:4px}
.thp-app .thp-cal-cell{min-height:84px;border:1.5px solid var(--hair-strong);border-radius:10px;padding:6px;cursor:pointer;background:rgba(255,255,255,.02);transition:border-color .15s,transform .05s;overflow:hidden}
.thp-app .thp-cal-cell:hover{border-color:var(--accent)}
.thp-app .thp-cal-cell:active{transform:scale(.98)}
.thp-app .thp-cal-cell.empty{border:none;background:none;cursor:default}
.thp-app .thp-cal-cell.today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.thp-app .thp-cal-cell.hasparty{background:rgba(57,230,195,.08)}
.thp-app .thp-cal-num{font-weight:800;font-size:14px;margin-bottom:4px}
.thp-app .thp-cal-party{font-size:10px;font-weight:700;background:var(--accent);color:#04231d;border-radius:5px;padding:2px 5px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thp-app .thp-cal-book{font-size:11px;color:var(--muted);font-weight:700}
@media (max-width:560px){
  .thp-app .thp-cal-cell{min-height:58px;padding:4px;border-radius:8px}
  .thp-app .thp-cal-num{font-size:12px}
  .thp-app .thp-cal-book{font-size:9px}
  .thp-app .thp-cal-grid{gap:3px}
}

/* options intro blurb */
.thp-app .thp-intro{font-size:14px;line-height:1.6;color:var(--muted);margin:-2px 0 16px;max-width:52ch}

/* revenue view */
.thp-app .thp-rev-period{text-align:center;font-weight:700;color:var(--muted);margin-top:8px}
.thp-app .thp-rev-total{text-align:center;font-size:42px;font-weight:800;color:var(--accent);letter-spacing:-1px}

.thp-app .thp-party-open:hover{border-color:var(--accent)}
.thp-app .thp-cal-party[data-pcode]{cursor:pointer}
.thp-app .thp-cal-party[data-pcode]:hover{opacity:.85}

/* front-desk day status */
.thp-app .thp-dayav{margin:10px 0;font-size:13px;font-weight:700;color:var(--muted)}
.thp-app .thp-dayav .thp-mini{margin-left:4px}
.thp-app .thp-cal-closed{font-size:10px;font-weight:800;background:#ff6b6b;color:#fff;border-radius:5px;padding:1px 5px;margin-bottom:3px;text-align:center}
.thp-app .thp-cal-coachoff{font-size:10px;font-weight:800;background:#f0a020;color:#3a2600;border-radius:5px;padding:1px 5px;margin-bottom:3px;text-align:center}

/* walk-in player chips */
.thp-app .thp-playerchips{display:flex;flex-wrap:wrap;gap:8px}
.thp-app .thp-chip{border:1.5px solid var(--hair-strong);background:transparent;color:var(--ink);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:700;cursor:pointer}
.thp-app .thp-chip:hover{border-color:var(--accent)}
.thp-app .thp-chip.on{background:var(--accent);color:#04231d;border-color:var(--accent)}

/* calendar headcount secondary text */
.thp-app .thp-cal-bk2{color:var(--muted);font-weight:600}
@media (max-width:560px){ .thp-app .thp-cal-bk2{display:none} }

/* running selection summary on booking steps */
.thp-app .thp-selbar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.thp-app .thp-sel-chip{background:rgba(57,230,195,.10);border:1px solid var(--accent);color:var(--ink);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:700}
.thp-app .thp-sel-chip .thp-sel-k{color:var(--muted);font-weight:600;margin-right:5px}

/* two-box first/last name rows */
.thp-app .thp-name2{display:flex;gap:8px}
.thp-app .thp-name2 input{flex:1;min-width:0}
#thp-waiver-app .thp-name2{display:flex;gap:8px}
#thp-waiver-app .thp-name2 input{flex:1;min-width:0}

/* returning-customer recognition */
.thp-app .thp-recog-box{background:rgba(57,230,195,.10);border:1px solid var(--accent);border-radius:10px;padding:10px 12px;margin:-4px 0 14px;font-size:14px;font-weight:600;color:var(--ink)}
.thp-app .thp-kidchips-label{font-size:13px;color:var(--muted);font-weight:600;margin:0 0 6px}
.thp-app #thp-kidchips{margin-bottom:10px}
.thp-app #thp-kidchips .thp-playerchips{display:flex;flex-wrap:wrap;gap:8px}
.thp-app #thp-kidchips .thp-chip{border:1.5px solid var(--accent);background:transparent;color:var(--ink);border-radius:999px;padding:7px 13px;font-size:14px;font-weight:700;cursor:pointer}
.thp-app #thp-kidchips .thp-chip:active{background:var(--accent);color:#04231d}

/* package-vs-session payment choice */
.thp-app .thp-paychoice{display:flex;flex-direction:column;gap:10px;margin:14px 0}
.thp-app .thp-payopt{display:flex;align-items:flex-start;gap:10px;border:1.5px solid var(--line,#2a2f3a);border-radius:12px;padding:12px 14px;cursor:pointer;font-size:15px}
.thp-app .thp-payopt input{margin-top:3px}
.thp-app .thp-payopt small{color:var(--muted);font-weight:400}
.thp-app .thp-payopt:has(input:checked){border-color:var(--accent);background:rgba(57,230,195,.07)}

/* ===================== HOCKEY TOUCHES ===================== */
/* Hockey-stick cursor on clickable things only */
.thp-app button, .thp-app .thp-btn, .thp-app .thp-slot, .thp-app .thp-tile,
.thp-app .thp-chip, .thp-app .thp-pip, .thp-app a, .thp-app [data-svc],
.thp-app [data-day], .thp-app [data-mon], .thp-app .thp-payopt,
.thp-app label.thp-credit, .thp-app input[type=checkbox], .thp-app input[type=radio],
.thp-app select {
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='5.5' stroke-linecap='round'%3E%3Cline x1='25' y1='5' x2='10' y2='21'/%3E%3Cline x1='10' y1='21' x2='4' y2='21'/%3E%3C/g%3E%3Cline x1='25' y1='5' x2='10' y2='21' stroke='%23c8821e' stroke-width='3' stroke-linecap='round'/%3E%3Cline x1='10.5' y1='21' x2='4' y2='21' stroke='%23151515' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E") 4 21, pointer;
}

/* Progress pips styled as little pucks */
.thp-app .thp-pip { background: #2a2f3a; border: 1.5px solid #11151c; }
.thp-app .thp-pip.active { background: var(--accent, #39e6c3); border-color: var(--accent, #39e6c3); }
.thp-app .thp-pip.done { background: #1d6fe6; border-color: #1d6fe6; }

/* Rink-line divider under the header eyebrow */
.thp-app .thp-eyebrow {
  position: relative; padding-bottom: 10px;
}
.thp-app .thp-eyebrow::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px;
  background: linear-gradient(90deg, #ff4d4d 0 33%, transparent 33% 50%, #1d6fe6 50% 83%, transparent 83%);
  opacity: .55; border-radius: 2px;
}

/* Puck-dot bullets on summary lines */
.thp-app .thp-sumline .k::before {
  content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  background: #151515; border: 1px solid #444; margin-right: 8px; vertical-align: middle;
}

/* GOAL! flash */
.thp-app .thp-goal {
  text-align: center; font-weight: 900; font-size: 30px; letter-spacing: 1px;
  color: #ff4d4d; margin: 6px 0 12px; text-shadow: 0 2px 0 rgba(0,0,0,.25);
  animation: thp-goal-pop .6s cubic-bezier(.2,1.4,.4,1) both;
}
@keyframes thp-goal-pop {
  0% { transform: scale(.3) rotate(-8deg); opacity: 0; }
  60% { transform: scale(1.15) rotate(3deg); opacity: 1; }
  100% { transform: scale(1) rotate(0); opacity: 1; }
}

/* Confetti */
.thp-confetti { position: fixed; inset: 0; pointer-events: none; z-index: 9999; overflow: hidden; }
.thp-confetti i {
  position: absolute; top: -14px; width: 9px; height: 14px; border-radius: 2px;
  animation: thp-fall linear forwards;
}
@keyframes thp-fall {
  0% { top: -14px; opacity: 1; }
  100% { top: 105%; opacity: .9; }
}
@media (prefers-reduced-motion: reduce) {
  .thp-app .thp-goal { animation: none; }
}
