/* ============================================================
   Travel Pals — Indian e-Visa intake
   Design system + 3 switchable visual directions
   Theme is set via [data-theme] on <html>:
     heritage  (default)  — warm ivory, serif headlines, kumkum red
     modern               — cool paper, grotesk, crisp government-grade
     boutique             — stone + plum, elegant serif, gold hairlines
   The component layer below reads CSS variables, so a theme swap
   restyles the entire form.
   ============================================================ */

:root{
  /* shared scale */
  --step:0;
  --maxw:1080px;
  --r-sm:6px; --r-md:10px; --r-lg:16px;
  --ease:cubic-bezier(.2,.7,.2,1);
  --fs-1:13px; --fs-2:15px; --fs-3:17px; --fs-4:21px; --fs-5:27px; --fs-6:38px;
  --space:1;
}

/* ---------------- THEME: HERITAGE (default) ---------------- */
html[data-theme="heritage"]{
  --bg:#F7F1E7;
  --bg-2:#F1E8D8;
  --surface:#FFFFFF;
  --surface-2:#FCF8F1;
  --ink:#241E1A;
  --ink-2:#5C5147;
  --muted:#8C8071;
  --line:#E6DBC8;
  --line-2:#D8CBB3;
  --brand:#C0142E;            /* sindoor / kumkum red from the logo */
  --brand-deep:#9C0F25;
  --brand-tint:#FBEAEC;
  --accent:#1F6F5C;           /* deep teal, equal-weight to brand */
  --accent-tint:#E5F0EC;
  --gold:#B07D2A;
  --ok:#1F7A4D; --warn:#B26A00; --bad:#B0142E;
  --shadow:0 1px 2px rgba(60,40,20,.06), 0 12px 32px -12px rgba(80,40,20,.18);
  --shadow-sm:0 1px 2px rgba(60,40,20,.08);
  --font-display:"Marcellus", Georgia, serif;
  --font-body:"Hanken Grotesk", system-ui, sans-serif;
  --r-card:14px; --r-input:10px; --r-pill:999px;
  --label-tt:none; --label-ls:0; --label-w:600;
  --display-tt:none; --display-ls:.1px;
}

/* ---------------- THEME: MODERN ---------------- */
html[data-theme="modern"]{
  --bg:#EEF2F7;
  --bg-2:#E4EAF2;
  --surface:#FFFFFF;
  --surface-2:#F7F9FC;
  --ink:#101828;
  --ink-2:#475467;
  --muted:#8A95A6;
  --line:#E2E8F0;
  --line-2:#CDD6E3;
  --brand:#C0142E;
  --brand-deep:#990F23;
  --brand-tint:#FCEAEC;
  --accent:#1B3A8B;           /* trust indigo */
  --accent-tint:#E8EDFA;
  --gold:#8a6d2a;
  --ok:#067647; --warn:#B54708; --bad:#B42318;
  --shadow:0 1px 2px rgba(16,24,40,.06), 0 10px 28px -14px rgba(16,24,40,.22);
  --shadow-sm:0 1px 2px rgba(16,24,40,.08);
  --font-display:"Hanken Grotesk", system-ui, sans-serif;
  --font-body:"Hanken Grotesk", system-ui, sans-serif;
  --r-card:12px; --r-input:8px; --r-pill:8px;
  --label-tt:none; --label-ls:0; --label-w:600;
  --display-tt:none; --display-ls:-.2px;
}

/* ---------------- THEME: BOUTIQUE ---------------- */
html[data-theme="boutique"]{
  --bg:#F0EAE2;
  --bg-2:#E7DFD3;
  --surface:#FBF8F4;
  --surface-2:#F4EEE5;
  --ink:#211B22;
  --ink-2:#574B53;
  --muted:#897C82;
  --line:#E1D7C9;
  --line-2:#CFC2AE;
  --brand:#9E1B3A;            /* deep maroon */
  --brand-deep:#7C1430;
  --brand-tint:#F4E6E9;
  --accent:#5A4A6B;           /* muted plum */
  --accent-tint:#EBE5F0;
  --gold:#A07C2C;
  --ok:#3E6B47; --warn:#9C6B16; --bad:#9E1B3A;
  --shadow:0 1px 2px rgba(40,25,30,.06), 0 16px 40px -18px rgba(60,30,40,.26);
  --shadow-sm:0 1px 2px rgba(40,25,30,.08);
  --font-display:"Cormorant Garamond", Georgia, serif;
  --font-body:"Hanken Grotesk", system-ui, sans-serif;
  --r-card:6px; --r-input:5px; --r-pill:4px;
  --label-tt:uppercase; --label-ls:.7px; --label-w:600;
  --display-tt:none; --display-ls:.2px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:var(--fs-3);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
button{font-family:inherit}
.tp-app svg{width:1.15em;height:1.15em;flex:none}
::selection{background:var(--brand-tint)}

/* page shell */
.tp-app{min-height:100vh;display:flex;flex-direction:column}

/* ---------------- top bar ---------------- */
.tp-top{
  position:sticky;top:0;z-index:30;
  background:color-mix(in srgb, var(--surface) 86%, transparent);
  backdrop-filter:saturate(1.4) blur(10px);
  border-bottom:1px solid var(--line);
}
.tp-top-in{
  max-width:var(--maxw);margin:0 auto;padding:14px 24px;
  display:flex;align-items:center;gap:14px;
}
.tp-brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit}
.tp-brand img{height:38px;width:auto;display:block}
.tp-brand-name{font-family:var(--font-display);font-size:20px;letter-spacing:var(--display-ls);line-height:1}
.tp-brand-name b{color:var(--brand);font-weight:inherit}
.tp-brand-sub{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:3px}
.tp-top-right{margin-left:auto;display:flex;align-items:center;gap:18px}
.tp-secure{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2)}
.tp-secure svg{width:15px;height:15px;color:var(--accent)}
.tp-help{font-size:13px;color:var(--ink-2);text-decoration:none;border-bottom:1px solid var(--line-2);padding-bottom:1px}
.tp-help:hover{color:var(--brand)}
.tp-back{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--ink-2);text-decoration:none;padding:7px 13px;border:1.5px solid var(--line-2);border-radius:var(--r-pill);transition:all .14s}
.tp-back svg{width:15px;height:15px}
.tp-back:hover{border-color:var(--brand);color:var(--brand)}
@media(max-width:560px){.tp-back span,.tp-back-txt{display:none}}

/* ---------------- layout ---------------- */
.tp-main{flex:1;max-width:var(--maxw);width:100%;margin:0 auto;padding:28px 24px 120px;display:grid;grid-template-columns:248px 1fr;gap:36px}
@media(max-width:880px){.tp-main{grid-template-columns:1fr;gap:20px;padding-bottom:96px}}

/* stepper rail */
.tp-rail{position:sticky;top:92px;align-self:start;height:max-content}
@media(max-width:880px){.tp-rail{position:static;top:auto}}
.tp-rail-title{font-family:var(--font-display);font-size:var(--fs-4);margin:0 0 4px;letter-spacing:var(--display-ls)}
.tp-rail-sub{font-size:12.5px;color:var(--muted);margin:0 0 20px}
.tp-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.tp-step{display:flex;gap:12px;align-items:flex-start;padding:8px 10px;border-radius:var(--r-input);cursor:pointer;color:var(--ink-2);position:relative;transition:background .15s}
.tp-step:hover{background:var(--surface-2)}
.tp-step .dot{flex:none;width:24px;height:24px;border-radius:var(--r-pill);border:1.5px solid var(--line-2);display:grid;place-items:center;font-size:12px;font-weight:600;color:var(--muted);background:var(--surface);margin-top:1px;transition:all .18s}
.tp-step .lbl{font-size:13.5px;line-height:1.35;padding-top:3px}
.tp-step.done .dot{background:var(--accent);border-color:var(--accent);color:#fff}
.tp-step.active{color:var(--ink)}
.tp-step.active .dot{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 0 0 4px var(--brand-tint)}
.tp-step.active .lbl{font-weight:600}
.tp-rail-mini{display:none}
@media(max-width:880px){
  .tp-steps{display:none}
  .tp-rail-mini{display:block}
  .tp-rail-title{display:none}.tp-rail-sub{display:none}
}

/* mobile progress bar */
.tp-progress{height:6px;border-radius:var(--r-pill);background:var(--line);overflow:hidden;margin-bottom:6px}
.tp-progress > i{display:block;height:100%;background:var(--brand);border-radius:inherit;transition:width .35s var(--ease)}
.tp-progress-meta{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted)}

/* ---------------- card / panel ---------------- */
.tp-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);overflow:hidden}
.tp-card-head{padding:26px 30px 0}
.tp-eyebrow{display:flex;align-items:center;gap:9px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--brand);font-weight:600;margin-bottom:12px}
.tp-eyebrow .n{font-variant-numeric:tabular-nums;background:var(--brand-tint);color:var(--brand-deep);border-radius:var(--r-pill);padding:2px 9px}
.tp-h{font-family:var(--font-display);font-weight:500;font-size:var(--fs-5);letter-spacing:var(--display-ls);margin:0 0 6px;line-height:1.12;text-transform:var(--display-tt)}
.tp-sub{color:var(--ink-2);font-size:var(--fs-2);margin:0;max-width:60ch}
.tp-card-body{padding:24px 30px 30px}
@media(max-width:560px){.tp-card-head{padding:20px 18px 0}.tp-card-body{padding:18px}}

/* section grouping inside a step */
.tp-group{margin-top:26px}
.tp-group:first-child{margin-top:8px}
.tp-group-h{display:flex;align-items:center;gap:10px;font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);font-weight:600;margin:0 0 14px}
.tp-group-h::after{content:"";flex:1;height:1px;background:var(--line)}

/* ---------------- fields ---------------- */
.tp-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px 18px}
.col-12{grid-column:span 12}.col-8{grid-column:span 8}.col-6{grid-column:span 6}
.col-4{grid-column:span 4}.col-3{grid-column:span 3}.col-2{grid-column:span 2}
@media(max-width:620px){.col-8,.col-6,.col-4,.col-3,.col-2{grid-column:span 12}}

.tp-field{display:flex;flex-direction:column;gap:7px;min-width:0}
.tp-label{font-size:13px;font-weight:var(--label-w);color:var(--ink);text-transform:var(--label-tt);letter-spacing:var(--label-ls);display:flex;align-items:center;gap:6px}
.tp-label .req{color:var(--brand)}
.tp-label .opt{color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0;font-size:11.5px}
.tp-hint{font-size:11.5px;color:var(--muted);margin-top:-1px}
.tp-input,.tp-select,.tp-textarea{
  width:100%;background:var(--surface);border:1.5px solid var(--line-2);
  border-radius:var(--r-input);padding:11px 13px;font-size:var(--fs-2);color:var(--ink);
  font-family:inherit;transition:border-color .15s, box-shadow .15s, background .15s;
  appearance:none;-webkit-appearance:none;
}
.tp-input::placeholder,.tp-textarea::placeholder{color:#b7ab9b}
.tp-input:focus,.tp-select:focus,.tp-textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint)}
.tp-input:disabled,.tp-select:disabled{background:var(--surface-2);color:var(--ink-2)}
.tp-textarea{resize:vertical;min-height:84px;line-height:1.45}
.tp-select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' fill='none' stroke='%238C8071' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:right 13px center;padding-right:34px;cursor:pointer}
.tp-input.autofilled{background:var(--accent-tint);border-color:color-mix(in srgb,var(--accent) 45%,var(--line-2))}
.tp-field.err .tp-input,.tp-field.err .tp-select,.tp-field.err .tp-textarea{border-color:var(--bad);box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 14%,transparent)}
.tp-err{font-size:11.5px;color:var(--bad);display:flex;align-items:center;gap:5px}

/* input affix (e.g. flag, lock) */
.tp-affix{position:relative;display:flex;align-items:center}
.tp-affix .pre{position:absolute;left:12px;color:var(--muted);font-size:13px;display:flex;align-items:center;gap:6px;pointer-events:none}
.tp-affix.has-pre .tp-input{padding-left:var(--pre-pad,52px)}
.tp-affix .lock{position:absolute;right:12px;color:var(--accent);width:14px;height:14px}

/* radio / segmented */
.tp-seg{display:flex;flex-wrap:wrap;gap:8px}
.tp-seg.yn{max-width:240px}
.tp-chip{
  flex:1 1 auto;min-width:64px;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:10px 14px;border:1.5px solid var(--line-2);border-radius:var(--r-input);background:var(--surface);
  color:var(--ink-2);font-size:14px;font-weight:500;cursor:pointer;transition:all .14s;user-select:none;text-align:center;
}
.tp-chip:hover{border-color:var(--brand);color:var(--ink)}
.tp-chip[aria-pressed="true"]{border-color:var(--brand);background:var(--brand-tint);color:var(--brand-deep);font-weight:600;box-shadow:inset 0 0 0 1px var(--brand)}
.tp-chip .tick{width:15px;height:15px}

/* radio cards (for visa sub-type, etc.) */
.tp-cards{display:grid;gap:12px}
.tp-cards.c3{grid-template-columns:repeat(3,1fr)}
@media(max-width:680px){.tp-cards.c3{grid-template-columns:1fr}}
.tp-radio-card{position:relative;border:1.5px solid var(--line-2);border-radius:var(--r-card);background:var(--surface);padding:16px 16px 16px 46px;cursor:pointer;transition:all .15s}
.tp-radio-card:hover{border-color:var(--brand)}
.tp-radio-card .mark{position:absolute;left:16px;top:17px;width:18px;height:18px;border-radius:var(--r-pill);border:2px solid var(--line-2);transition:all .15s}
.tp-radio-card[aria-pressed="true"]{border-color:var(--brand);background:color-mix(in srgb,var(--brand-tint) 55%,var(--surface));box-shadow:0 0 0 1px var(--brand)}
.tp-radio-card[aria-pressed="true"] .mark{border-color:var(--brand);background:radial-gradient(circle at center,var(--brand) 0 4.5px,transparent 5px)}
.tp-radio-card .rc-t{font-weight:600;font-size:15px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tp-radio-card.is-pop .rc-t{padding-right:74px}
.tp-radio-card .rc-pop{position:absolute;top:12px;right:12px;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:var(--r-pill);background:var(--brand);color:#fff}
.tp-radio-card .rc-d{font-size:13px;color:var(--ink-2);margin-top:4px;line-height:1.4}
.tp-tag{font-size:11px;font-weight:600;letter-spacing:.04em;padding:2px 8px;border-radius:var(--r-pill);background:var(--accent-tint);color:var(--accent)}

/* checkbox */
.tp-check{display:flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:13.5px;color:var(--ink-2);line-height:1.45}
.tp-check input{position:absolute;opacity:0;width:0;height:0}
.tp-check .box{flex:none;width:19px;height:19px;border-radius:5px;border:1.5px solid var(--line-2);background:var(--surface);display:grid;place-items:center;margin-top:1px;transition:all .14s}
.tp-check .box svg{width:12px;height:12px;color:#fff;opacity:0;transform:scale(.6);transition:all .14s}
.tp-check input:checked + .box{background:var(--brand);border-color:var(--brand)}
.tp-check input:checked + .box svg{opacity:1;transform:scale(1)}
.tp-check input:focus-visible + .box{box-shadow:0 0 0 3px var(--brand-tint)}

/* ---------------- buttons ---------------- */
.tp-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-size:15px;font-weight:600;border-radius:var(--r-input);padding:13px 22px;border:1.5px solid transparent;cursor:pointer;transition:all .15s;text-decoration:none;line-height:1;white-space:nowrap}
.tp-btn svg{width:17px;height:17px}
.tp-btn.primary{background:var(--brand);color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.tp-btn.primary:hover{background:var(--brand-deep)}
.tp-btn.ghost{background:var(--surface);color:var(--ink);border-color:var(--line-2)}
.tp-btn.ghost:hover{border-color:var(--ink-2);background:var(--surface-2)}
.tp-btn.subtle{background:transparent;color:var(--ink-2);padding-left:8px;padding-right:8px}
.tp-btn.subtle:hover{color:var(--brand)}
.tp-btn:disabled{opacity:.5;cursor:not-allowed}
.tp-btn.lg{padding:15px 28px;font-size:16px}
.tp-btn.block{width:100%}

/* footer nav */
.tp-nav{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:28px;padding-top:22px;border-top:1px solid var(--line)}
.tp-nav .spacer{flex:1}
.tp-save{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted)}

/* ---------------- uploader / scanner ---------------- */
.tp-drop{border:1.8px dashed var(--line-2);border-radius:var(--r-card);background:var(--surface-2);padding:30px;text-align:center;transition:all .18s;cursor:pointer;position:relative}
.tp-drop:hover,.tp-drop.drag{border-color:var(--brand);background:var(--brand-tint)}
.tp-drop .ic{width:46px;height:46px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--line);display:grid;place-items:center;margin:0 auto 14px;color:var(--brand)}
.tp-drop .ic svg{width:22px;height:22px}
.tp-drop h4{margin:0 0 5px;font-size:16px;font-weight:600}
.tp-drop p{margin:0;font-size:13px;color:var(--muted)}
.tp-drop .browse{color:var(--brand);font-weight:600;text-decoration:underline;text-underline-offset:2px}

.tp-scan{display:grid;grid-template-columns:300px 1fr;gap:24px;align-items:start}
@media(max-width:680px){.tp-scan{grid-template-columns:1fr}}
.tp-pp{position:relative;border-radius:var(--r-card);overflow:hidden;border:1px solid var(--line);background:#111;aspect-ratio:125/88}
.tp-pp img{width:100%;height:100%;object-fit:cover;display:block}
.tp-pp .scanline{position:absolute;left:0;right:0;height:3px;background:linear-gradient(90deg,transparent,var(--brand),transparent);box-shadow:0 0 14px 2px var(--brand);animation:scan 1.7s var(--ease) infinite}
@keyframes scan{0%{top:6%}50%{top:92%}100%{top:6%}}
.tp-pp .mrzbox{position:absolute;left:5%;right:5%;bottom:6%;height:22%;border:1.5px solid color-mix(in srgb,var(--brand) 70%,#fff);border-radius:4px;box-shadow:0 0 0 100vmax rgba(0,0,0,.28)}
.tp-scan-status{font-size:14px;color:var(--ink-2);display:flex;align-items:center;gap:10px;margin-bottom:14px}
.tp-spin{width:16px;height:16px;border:2px solid var(--line-2);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.tp-bar{height:6px;border-radius:var(--r-pill);background:var(--line);overflow:hidden;margin:6px 0 16px}
.tp-bar > i{display:block;height:100%;background:var(--accent);border-radius:inherit;transition:width .3s}
.tp-extract{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 18px}
@media(max-width:520px){.tp-extract{grid-template-columns:1fr}}
.tp-extract li{display:flex;justify-content:space-between;gap:12px;font-size:13.5px;padding:7px 0;border-bottom:1px solid var(--line)}
.tp-extract li .k{color:var(--muted)}
.tp-extract li .v{font-weight:600;font-variant-numeric:tabular-nums;text-align:right;transform:translateY(4px);animation:pop .4s var(--ease) both}
@keyframes pop{from{transform:translateY(4px)}to{transform:translateY(0)}}

/* photo upload preview */
.tp-photo{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.tp-photo .frame{width:128px;height:128px;border-radius:var(--r-input);border:1px solid var(--line);background:var(--surface-2);overflow:hidden;flex:none;display:grid;place-items:center;color:var(--muted)}
.tp-photo .frame img{width:100%;height:100%;object-fit:cover}
.tp-specs{list-style:none;margin:0;padding:0;font-size:13px;color:var(--ink-2);display:grid;gap:7px}
.tp-specs li{display:flex;align-items:center;gap:8px}
.tp-specs li svg{width:14px;height:14px;flex:none}
.tp-specs li.ok{color:var(--ok)} .tp-specs li.no{color:var(--muted)}

/* callouts */
.tp-note{display:flex;gap:12px;border-radius:var(--r-card);padding:14px 16px;font-size:13.5px;line-height:1.5;border:1px solid}
.tp-note svg{width:18px;height:18px;flex:none;margin-top:1px}
.tp-note.info{background:var(--accent-tint);border-color:color-mix(in srgb,var(--accent) 25%,transparent);color:color-mix(in srgb,var(--accent) 92%,#000)}
.tp-note.warn{background:#FBF1E3;border-color:#EAD3AE;color:#7A5310}
.tp-note b{font-weight:600}

/* review */
.tp-review-sec{border:1px solid var(--line);border-radius:var(--r-card);margin-bottom:14px;overflow:hidden;background:var(--surface)}
.tp-review-h{display:flex;align-items:center;gap:10px;padding:14px 18px;background:var(--surface-2);border-bottom:1px solid var(--line);font-weight:600;font-size:14.5px}
.tp-review-h .edit{margin-left:auto;font-size:12.5px;color:var(--brand);font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:5px}
.tp-review-h .ix{width:24px;height:24px;border-radius:var(--r-pill);background:var(--brand-tint);color:var(--brand-deep);display:grid;place-items:center;font-size:12px}
.tp-dl{display:grid;grid-template-columns:1fr 1fr;gap:2px 22px;padding:14px 18px}
@media(max-width:560px){.tp-dl{grid-template-columns:1fr}}
.tp-dl div{display:flex;justify-content:space-between;gap:14px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.tp-dl div:last-child{border-bottom:0}
.tp-dl .k{color:var(--muted)} .tp-dl .v{font-weight:500;text-align:right}
.tp-dl .v.empty{color:var(--muted);font-weight:400;font-style:italic}

/* payment */
.tp-pay{display:grid;grid-template-columns:1fr 360px;gap:28px;align-items:start}
@media(max-width:840px){.tp-pay{grid-template-columns:1fr}}
.tp-summary{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-card);padding:22px;position:sticky;top:92px}
.tp-summary h3{font-family:var(--font-display);font-size:var(--fs-4);margin:0 0 16px}
.tp-line{display:flex;justify-content:space-between;gap:12px;font-size:14px;padding:9px 0;color:var(--ink-2)}
.tp-line.total{border-top:1.5px solid var(--line-2);margin-top:6px;padding-top:14px;font-size:18px;font-weight:700;color:var(--ink);white-space:nowrap}
.tp-line .amt{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink)}
.tp-stripe-badge{display:flex;align-items:center;gap:8px;justify-content:center;font-size:12px;color:var(--muted);margin-top:14px}
.tp-card-input{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line-2);border-radius:var(--r-input);padding:0 13px;background:var(--surface);transition:all .15s}
.tp-card-input:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint)}
.tp-card-input input{border:0;outline:0;padding:12px 0;font-size:15px;flex:1;background:transparent;color:var(--ink);font-family:inherit;font-variant-numeric:tabular-nums}
.tp-card-brands{display:flex;gap:5px}
.tp-card-brands span{width:30px;height:20px;border-radius:3px;border:1px solid var(--line);display:grid;place-items:center;font-size:8px;font-weight:700;color:var(--muted);background:var(--surface)}

/* confirmation */
.tp-done{max-width:560px;margin:24px auto;text-align:center}
.tp-done .seal{width:88px;height:88px;border-radius:50%;background:var(--accent-tint);display:grid;place-items:center;margin:0 auto 22px;color:var(--accent);animation:sealpop .5s var(--ease) both}
.tp-done .seal svg{width:42px;height:42px}
@keyframes sealpop{from{transform:scale(.9)}to{transform:scale(1)}}
.tp-ref{display:inline-flex;align-items:center;gap:10px;background:var(--surface-2);border:1px dashed var(--line-2);border-radius:var(--r-input);padding:12px 18px;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:.06em;font-size:18px;margin:6px 0 22px;white-space:nowrap}
.tp-timeline{text-align:left;list-style:none;margin:24px 0 0;padding:0;display:grid;gap:2px}
.tp-timeline li{display:flex;gap:14px;padding:0 0 18px;position:relative}
.tp-timeline li::before{content:"";position:absolute;left:13px;top:26px;bottom:-2px;width:2px;background:var(--line)}
.tp-timeline li:last-child::before{display:none}
.tp-timeline .n{flex:none;width:28px;height:28px;border-radius:50%;background:var(--brand-tint);color:var(--brand-deep);display:grid;place-items:center;font-size:13px;font-weight:700;z-index:1}
.tp-timeline .tx h5{margin:3px 0 3px;font-size:14.5px}
.tp-timeline .tx p{margin:0;font-size:13px;color:var(--ink-2)}

/* misc */
.tp-fade{animation:fade .45s var(--ease)}
@keyframes fade{from{transform:translateY(10px)}to{transform:translateY(0)}}
.tp-foot{max-width:var(--maxw);margin:0 auto;padding:22px 24px 40px;color:var(--muted);font-size:12px;line-height:1.6;border-top:1px solid var(--line)}
.tp-foot a{color:var(--ink-2)}
.muted{color:var(--muted)} .nowrap{white-space:nowrap}
.hidden{display:none!important}

/* ---------------- access gate modal ---------------- */
.tp-gate{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;background:color-mix(in srgb,var(--ink) 56%,transparent);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:fade .3s var(--ease) both}
.tp-gate-card{position:relative;width:100%;max-width:540px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:0 40px 100px -30px rgba(0,0,0,.5);padding:40px 40px 30px;text-align:center;animation:sealpop .35s var(--ease) both}
.tp-gate-badge{width:64px;height:64px;border-radius:50%;background:var(--brand-tint);color:var(--brand);display:grid;place-items:center;margin:0 auto 20px}
.tp-gate-badge svg{width:30px;height:30px}
.tp-gate-eyebrow{font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--brand-deep);font-weight:700;margin-bottom:10px}
.tp-gate-title{font-family:var(--font-display);font-weight:500;font-size:var(--fs-5);letter-spacing:var(--display-ls);line-height:1.16;margin:0 0 16px;color:var(--ink)}
.tp-gate-body{font-size:15px;line-height:1.6;color:var(--ink-2);margin:0 auto 14px;max-width:44ch}
.tp-gate-body b{color:var(--ink);font-weight:600}
.tp-gate-points{list-style:none;margin:18px auto;padding:18px 20px;max-width:46ch;text-align:left;display:grid;gap:12px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-card)}
.tp-gate-points li{display:flex;align-items:flex-start;gap:11px;font-size:14px;line-height:1.45;color:var(--ink-2)}
.tp-gate-points li svg{width:18px;height:18px;flex:none;color:var(--accent);margin-top:1px}
.tp-gate-actions{display:flex;flex-direction:column;gap:12px;margin:26px 0 18px}
.tp-gate-actions .tp-btn{width:100%}
.tp-gate-fine{font-size:12px;line-height:1.55;color:var(--muted);margin:0;max-width:48ch;margin-inline:auto}
@media(max-width:560px){.tp-gate-card{padding:30px 22px 24px}}
