/* In-School Field Trip booking — public school-facing flow */
.ftb { font-family: var(--font-primary, 'Poppins', sans-serif); }
.ftb__head { text-align: center; max-width: 760px; margin: 0 auto 36px; }
.ftb__eyebrow { display:inline-block; background:#EEF0FB; color:#32378A; border:1.5px solid #C9CEEA; font-weight:800; font-size:12px; letter-spacing:.06em; text-transform:uppercase; padding:5px 14px; border-radius:9999px; margin-bottom:14px; }
.ftb__title { font-family:'Fredoka One',cursive,sans-serif; font-size:2rem; color:#21256B; line-height:1.1; margin:0 0 10px; }
.ftb__sub { font-family: var(--font-secondary,'Poppins',sans-serif); font-size:1rem; color:#5a5a5a; line-height:1.55; margin:0; }

/* stepper */
.ftb__steps { display:flex; gap:8px; justify-content:center; flex-wrap:wrap; margin:0 auto 30px; }
.ftb__step { display:flex; align-items:center; gap:8px; font-size:13px; font-weight:800; color:#9498B5; }
.ftb__step .n { width:26px; height:26px; border-radius:50%; display:grid; place-items:center; background:#E8EAF4; color:#9498B5; border:2px solid #D4D8E6; font-size:12px; }
.ftb__step.is-on { color:#21256B; }
.ftb__step.is-on .n { background:#F0E136; color:#1a1a1a; border-color:#1a1a1a; }
.ftb__step.is-done .n { background:#A2C64B; color:#1a1a1a; border-color:#1a1a1a; }
.ftb__step .bar { width:24px; height:2px; background:#D4D8E6; }

.ftb__panel { max-width:1040px; margin:0 auto; }

/* activity cards */
.ftb-acts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.ftb-act { background:#fff; border:3px solid #1a1a1a; border-radius:18px; padding:22px; box-shadow:5px 5px 0 var(--c,#E5AC38); cursor:pointer; transition:transform .14s, box-shadow .14s; display:flex; flex-direction:column; gap:10px; }
.ftb-act:hover { transform:translate(-2px,-2px); box-shadow:8px 8px 0 var(--c,#E5AC38); }
.ftb-act.is-sel { box-shadow:8px 8px 0 var(--c,#E5AC38); outline:3px solid var(--c,#E5AC38); outline-offset:2px; }
.ftb-act__name { font-family:'Fredoka One',cursive,sans-serif; font-size:1.25rem; color:#21256B; }
.ftb-act__blurb { font-family:var(--font-secondary,'Poppins',sans-serif); font-size:.88rem; color:#555; line-height:1.5; flex:1; }
.ftb-act__meta { display:flex; flex-direction:column; gap:5px; font-size:.82rem; color:#444; font-weight:600; }
.ftb-act__meta span { display:flex; gap:7px; align-items:center; }
.ftb-act__price { font-family:'Fredoka One',cursive,sans-serif; font-size:1.5rem; color:#1a1a1a; }
.ftb-act__price small { font-family:var(--font-secondary,'Poppins',sans-serif); font-size:.72rem; color:#777; font-weight:700; display:block; margin-top:2px; }

/* calendar */
.ftb-cal-wrap { display:grid; grid-template-columns:1.1fr .9fr; gap:26px; align-items:start; }
.ftb-cal { background:#fff; border:3px solid #1a1a1a; border-radius:18px; padding:18px 20px; box-shadow:5px 5px 0 rgba(50,55,138,.18); }
.ftb-cal__top { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.ftb-cal__top button { width:34px; height:34px; border-radius:9px; border:2px solid #1a1a1a; background:#fff; cursor:pointer; font-size:16px; box-shadow:2px 2px 0 #1a1a1a; }
.ftb-cal__top button:hover { background:#F0E136; }
.ftb-cal__top button:disabled { opacity:.4; cursor:not-allowed; box-shadow:none; }
.ftb-cal__month { font-family:'Fredoka One',cursive,sans-serif; font-size:1.1rem; color:#21256B; }
.ftb-cal__grid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.ftb-cal__dow { text-align:center; font-size:11px; font-weight:800; color:#9498B5; padding:4px 0; }
.ftb-cal__day { aspect-ratio:1; border:none; background:transparent; border-radius:9px; font-family:var(--font-primary); font-weight:700; font-size:14px; color:#21256B; cursor:pointer; transition:background .12s; }
.ftb-cal__day:hover:not(:disabled) { background:#F0E136; }
.ftb-cal__day:disabled { color:#C9CCD8; cursor:not-allowed; }
.ftb-cal__day.is-sel { background:#32378A; color:#fff; }
.ftb-cal__day.is-blocked { color:#D88; text-decoration:line-through; cursor:not-allowed; }

/* slots */
.ftb-slots__title { font-family:'Fredoka One',cursive,sans-serif; font-size:1.05rem; color:#21256B; margin:0 0 4px; }
.ftb-slots__hint { font-family:var(--font-secondary); font-size:.82rem; color:#777; margin:0 0 14px; }
.ftb-slot { display:flex; align-items:center; gap:12px; background:#fff; border:2.5px solid #1a1a1a; border-radius:12px; padding:12px 14px; margin-bottom:10px; cursor:pointer; box-shadow:3px 3px 0 transparent; transition:box-shadow .12s, transform .12s; }
.ftb-slot:hover { transform:translate(-1px,-1px); box-shadow:3px 3px 0 rgba(0,0,0,.16); }
.ftb-slot.is-on { box-shadow:4px 4px 0 var(--c,#E5AC38); }
.ftb-slot.is-blocked { opacity:.5; cursor:not-allowed; background:#F6F7FB; }
.ftb-slot__box { width:22px; height:22px; border-radius:6px; border:2.5px solid #1a1a1a; display:grid; place-items:center; flex-shrink:0; background:#fff; }
.ftb-slot.is-on .ftb-slot__box { background:#A2C64B; }
.ftb-slot__box svg { width:13px; height:13px; opacity:0; }
.ftb-slot.is-on .ftb-slot__box svg { opacity:1; }
.ftb-slot__time { font-weight:800; font-size:.95rem; color:#21256B; flex:1; }
.ftb-slot__tag { font-size:.72rem; font-weight:800; color:#9A6B00; background:#FFF6E0; border:1.5px solid #E7CF8E; border-radius:9999px; padding:2px 8px; }

/* cart / summary */
.ftb-cart { background:#FAFBFE; border:2.5px solid #1a1a1a; border-radius:16px; padding:18px 20px; box-shadow:4px 4px 0 rgba(229,172,56,.4); position:sticky; top:90px; }
.ftb-cart__title { font-family:'Fredoka One',cursive,sans-serif; font-size:1.05rem; color:#21256B; margin:0 0 12px; }
.ftb-cart__line { display:flex; justify-content:space-between; gap:10px; font-size:.86rem; color:#333; padding:7px 0; border-bottom:1px dashed #D9DCEC; }
.ftb-cart__line .lbl { font-weight:600; }
.ftb-cart__line .amt { font-weight:800; white-space:nowrap; }
.ftb-cart__disc { color:#3D7A1E; }
.ftb-cart__total { display:flex; justify-content:space-between; font-family:'Fredoka One',cursive,sans-serif; font-size:1.25rem; color:#1a1a1a; margin-top:12px; }
.ftb-cart__empty { font-family:var(--font-secondary); font-size:.85rem; color:#9498B5; padding:6px 0; }

/* form */
.ftb-form { background:#fff; border:3px solid #1a1a1a; border-radius:18px; padding:24px 26px; box-shadow:5px 5px 0 rgba(50,55,138,.18); }
.ftb-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 16px; }
.ftb-field { display:flex; flex-direction:column; gap:6px; }
.ftb-field.full { grid-column:1/-1; }
.ftb-field label { font-weight:800; font-size:.78rem; color:#21256B; }
.ftb-field label .opt { color:#A4A8BE; font-weight:700; }
.ftb-field input, .ftb-field textarea { font-family:var(--font-secondary); font-size:.92rem; border:2px solid #1a1a1a; border-radius:10px; padding:10px 12px; outline:none; width:100%; box-sizing:border-box; }
.ftb-field textarea { resize:vertical; min-height:64px; }
.ftb-field.is-err input, .ftb-field.is-err textarea { border-color:#C2412A; }
.ftb-field__err { font-size:.72rem; color:#C2412A; display:none; }
.ftb-field.is-err .ftb-field__err { display:block; }

/* nav buttons + generic */
.ftb-nav { display:flex; gap:12px; justify-content:space-between; margin-top:24px; max-width:1040px; margin-left:auto; margin-right:auto; flex-wrap:wrap; }
.ftb-btn { display:inline-flex; align-items:center; gap:8px; font-family:var(--font-primary); font-weight:900; font-size:15px; padding:13px 26px; border-radius:9999px; border:2.5px solid #1a1a1a; cursor:pointer; box-shadow:3px 3px 0 #1a1a1a; transition:transform .12s, box-shadow .12s, background .12s; }
.ftb-btn:hover:not(:disabled) { transform:translate(-2px,-2px); box-shadow:5px 5px 0 #1a1a1a; }
.ftb-btn:disabled { opacity:.5; cursor:not-allowed; box-shadow:none; }
.ftb-btn--primary { background:#E5AC38; color:#1a1a1a; }
.ftb-btn--primary:hover:not(:disabled) { background:#F0E136; }
.ftb-btn--ghost { background:#fff; color:#32378A; }

.ftb-note { background:#EEF0FB; border:1.5px solid #C9CEEA; border-radius:12px; padding:12px 16px; font-family:var(--font-secondary); font-size:.85rem; color:#3A3E5C; line-height:1.5; margin-bottom:20px; }
.ftb-note b { color:#21256B; }

/* status / lookup + payment */
.ftb-status { max-width:680px; margin:0 auto; background:#fff; border:3px solid #1a1a1a; border-radius:20px; padding:28px; box-shadow:6px 6px 0 rgba(50,55,138,.2); }
.ftb-status__badge { display:inline-flex; align-items:center; gap:7px; font-weight:800; font-size:.78rem; text-transform:uppercase; letter-spacing:.04em; padding:5px 12px; border-radius:9999px; }
.ftb-status__badge[data-s="submitted"]{ background:#FFF6E0; color:#9A6B00; border:1.5px solid #E7CF8E; }
.ftb-status__badge[data-s="confirmed"]{ background:#EAF3FF; color:#2D6CDF; border:1.5px solid #B9D4F5; }
.ftb-status__badge[data-s="paid"]{ background:#EAF7E9; color:#3D7A1E; border:1.5px solid #A9D292; }
.ftb-status__badge[data-s="declined"]{ background:#FBE9E5; color:#C2412A; border:1.5px solid #E7B6AE; }
.ftb-lookup { display:flex; gap:10px; flex-wrap:wrap; max-width:560px; margin:18px auto 0; }
.ftb-lookup input { flex:1; min-width:200px; font-family:var(--font-secondary); border:2px solid #1a1a1a; border-radius:10px; padding:11px 14px; outline:none; }

/* reference box on submit */
.ftb-refbox { background:#EEF0FB; border:2.5px solid #1a1a1a; border-radius:16px; padding:18px 20px; margin-bottom:20px; box-shadow:4px 4px 0 rgba(50,55,138,.18); text-align:center; }
.ftb-refbox__label { font-family:var(--font-primary); font-weight:800; font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:#6B6F8A; }
.ftb-refbox__code { font-family:'Fredoka One',cursive; font-size:2rem; color:#21256B; letter-spacing:.05em; margin:4px 0 8px; }
.ftb-refbox__hint { font-family:var(--font-secondary); font-size:.85rem; color:#555; line-height:1.5; margin:0; }
.ftb-linkbtn { background:none; border:none; color:#32378A; font-weight:800; font-family:var(--font-primary); font-size:.85rem; cursor:pointer; text-decoration:underline; padding:0; }
.ftb-linkbtn:disabled { color:#3D7A1E; text-decoration:none; cursor:default; }

/* my-bookings list (logged-in school) */
.ftb-mybk { width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; background:#fff; border:2px solid #E2E4F0; border-radius:12px; padding:12px 15px; margin-bottom:9px; cursor:pointer; text-align:left; transition:border-color .14s, box-shadow .14s; }
.ftb-mybk:hover { border-color:#9AA2D8; box-shadow:3px 3px 0 rgba(50,55,138,.14); }
.ftb-mybk > span:first-child { display:flex; flex-direction:column; gap:2px; min-width:0; }
.ftb-mybk b { font-family:var(--font-primary); font-weight:800; color:#21256B; font-size:.95rem; }
.ftb-mybk__ref { font-family:var(--font-secondary); font-size:.78rem; color:#777; }

/* admin date-change comparison */
.ftb-datecompare { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin:6px 0 4px; }
.ftb-datecompare__col { background:#F7F8FC; border:1.5px solid #E2E4F0; border-radius:12px; padding:12px 14px; }
.ftb-datecompare__col--new { background:#EAF3FF; border-color:#B9D4F5; }
.ftb-datecompare__h { font-family:var(--font-primary); font-weight:800; font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; color:#6B6F8A; margin-bottom:8px; }
.ftb-datecompare__col--new .ftb-datecompare__h { color:#2D6CDF; }
@media (max-width:560px){ .ftb-datecompare { grid-template-columns:1fr; } }

/* test payment modal */
.ftb-pay-overlay { position:fixed; inset:0; z-index:1000; background:rgba(20,22,55,.55); display:none; align-items:center; justify-content:center; padding:24px; }
.ftb-pay-overlay.show { display:flex; }
.ftb-pay { background:#fff; border:3px solid #1a1a1a; border-radius:20px; width:100%; max-width:460px; box-shadow:8px 8px 0 rgba(0,0,0,.25); overflow:hidden; }
.ftb-pay__test { background:#FFF6E0; border-bottom:2px solid #1a1a1a; color:#9A6B00; font-weight:800; font-size:12px; text-align:center; padding:8px; letter-spacing:.04em; }
.ftb-pay__body { padding:24px 26px; }
.ftb-pay__title { font-family:'Fredoka One',cursive,sans-serif; font-size:1.3rem; color:#21256B; margin:0 0 4px; }
.ftb-pay__amt { font-family:'Fredoka One',cursive,sans-serif; font-size:1.6rem; color:#1a1a1a; margin:0 0 18px; }
.ftb-pay__foot { padding:0 26px 24px; display:flex; gap:12px; justify-content:flex-end; }

@media (max-width:860px){
  .ftb-acts { grid-template-columns:1fr; }
  .ftb-cal-wrap, .ftb-grid { grid-template-columns:1fr; }
  .ftb-cart { position:static; }
}
