/* Fitness Point booking — dynamic parts (black / red / bone) */
.fp-mono { font-family: 'IBM Plex Mono', monospace; letter-spacing: .12em; }
.fp-muted { margin: 0; font-size: 16px; color: #A6A6A8; }
.fp-notice { border-radius: 4px; padding: 18px 20px; font-size: 16px; line-height: 1.5; font-weight: 500; background: #4A0E12; color: #FFD6D9; }
.fp-notice.ok { background: #E8E4E1; color: #000000; }

/* weekly grid */
.fp-grid { min-width: 1040px; display: flex; flex-direction: column; gap: 6px; }
.fp-grid-row { display: grid; gap: 6px; }
.fp-grid-head { font-family: 'IBM Plex Mono', monospace; font-size: 12px; letter-spacing: .12em; color: #555555; }
.fp-grid-head span { padding: 10px 14px; }
.fp-grid-time { padding: 18px 14px; font-weight: 300; font-size: 28px; letter-spacing: -.04em; display: flex; align-items: center; }
.fp-cell { border-radius: 4px; padding: 16px; min-height: 88px; display: flex; flex-direction: column; justify-content: space-between; gap: 6px; }
.fp-cell .m { font-family: 'IBM Plex Mono', monospace; font-size: 11px; letter-spacing: .1em; }
.fp-cell .n { font-weight: 500; font-size: 20px; letter-spacing: -.03em; line-height: 1.1; }
.fp-cell.hiit { background: #F01B28; color: #FFFFFF; }
.fp-cell.strength { background: #000000; color: #E8E4E1; }
.fp-cell.combat { background: #C7C7C9; color: #000000; }
.fp-cell.none { background: #DCD8D4; color: #8C8C8F; }

/* day picker */
.fp-weeknav { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.fp-weeklabel { font-family: 'IBM Plex Mono', monospace; font-size: 13px; letter-spacing: .14em; min-width: 170px; text-align: center; }
.fp-arrow { width: 48px; height: 48px; border-radius: 4px; border: 1px solid #333333; background: #131313; color: #E8E4E1; font-size: 24px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0 0 3px; }
.fp-days { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 6px; }
.fp-day { flex: 0 0 auto; min-width: 96px; min-height: 76px; padding: 12px 16px; border-radius: 4px; border: 1px solid #333333; background: #131313; color: #E8E4E1; font-family: inherit; cursor: pointer; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 4px; }
.fp-day b { font-family: 'IBM Plex Mono', monospace; font-size: 12px; font-weight: 500; letter-spacing: .14em; }
.fp-day span { font-weight: 300; font-size: 22px; letter-spacing: -.03em; }
.fp-day[aria-selected="true"] { background: #F01B28; border-color: #F01B28; color: #FFFFFF; }
.fp-arrow:disabled, .fp-day:disabled { opacity: .3; cursor: not-allowed; }

/* class list */
.fp-list { display: flex; flex-direction: column; border-top: 1px solid #333333; margin-top: 28px; }
.fp-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; align-items: center; padding: 22px 0; border-bottom: 1px solid #222222; }
.fp-time { font-weight: 300; font-size: 36px; letter-spacing: -.04em; }
.fp-cname { display: flex; align-items: center; gap: 10px; font-size: 22px; font-weight: 500; letter-spacing: -.02em; }
.fp-dot { width: 12px; height: 12px; border-radius: 2px; flex: 0 0 auto; }
.fp-meta { font-family: 'IBM Plex Mono', monospace; font-size: 12px; letter-spacing: .1em; color: #8C8C8F; }
.fp-rowend { display: flex; justify-content: flex-end; align-items: center; gap: 16px; flex-wrap: wrap; }
.fp-price { font-family: 'IBM Plex Mono', monospace; font-size: 15px; }
.fp-box { border: 1px dashed #444444; border-radius: 6px; padding: 32px; margin-top: 28px; display: flex; flex-direction: column; gap: 8px; }
.fp-box h3 { margin: 0; font-weight: 500; font-size: 30px; letter-spacing: -.04em; }
.fp-box p { margin: 0; font-size: 16px; color: #A6A6A8; }

/* buttons */
.fp-btn { min-height: 50px; padding: 0 26px; border-radius: 4px; border: none; background: #F01B28; color: #FFFFFF; font-family: inherit; font-size: 15px; font-weight: 500; cursor: pointer; }
.fp-btn:disabled { opacity: .45; cursor: not-allowed; }
.fp-btn.big { min-height: 60px; font-size: 17px; width: 100%; }
.fp-btn.white { background: #FFFFFF; color: #000000; }
.fp-btn.black { background: #000000; color: #FFFFFF; }
.fp-btn.outline { background: transparent; border: 1px solid currentColor; color: inherit; min-height: 44px; padding: 0 20px; font-size: 14px; }
.fp-btn.ghost { background: #131313; color: #E8E4E1; border: 1px solid #444444; }

/* booking form */
.fp-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 28px; align-items: start; }
.fp-summary { background: #F01B28; color: #FFFFFF; border-radius: 6px; padding: 32px; display: flex; flex-direction: column; gap: 18px; }
.fp-summary .eyebrow { font-family: 'IBM Plex Mono', monospace; font-size: 12px; font-weight: 500; letter-spacing: .16em; }
.fp-summary .title { font-weight: 500; font-size: 52px; line-height: .95; letter-spacing: -.05em; }
.fp-summary .meta { display: flex; flex-direction: column; gap: 8px; font-size: 17px; }
.fp-lines { border-top: 1px solid rgba(255,255,255,.5); padding-top: 16px; display: flex; flex-direction: column; gap: 8px; }
.fp-line { display: flex; justify-content: space-between; gap: 12px; font-size: 16px; }
.fp-line.total { font-size: 20px; font-weight: 500; padding-top: 8px; border-top: 1px solid rgba(255,255,255,.5); }
.fp-fields { display: flex; flex-direction: column; gap: 22px; }
.fp-grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.fp-field { display: flex; flex-direction: column; gap: 8px; }
.fp-field label, .fp-label { font-family: 'IBM Plex Mono', monospace; font-size: 12px; letter-spacing: .12em; color: #A6A6A8; text-transform: uppercase; }
.fp-input { min-height: 52px; padding: 0 16px; border-radius: 4px; border: 1px solid #333333; background: #131313; color: #E8E4E1; font-family: inherit; font-size: 16px; width: 100%; }
.fp-input::placeholder { color: #6E6E70; }
.fp-choices { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
.fp-choice { min-height: 64px; padding: 10px 14px; border-radius: 4px; border: 1px solid #333333; background: #131313; color: #E8E4E1; font-family: inherit; font-size: 15px; font-weight: 500; cursor: pointer; text-align: left; }
.fp-choice small { display: block; font-family: 'IBM Plex Mono', monospace; font-weight: 400; font-size: 11px; letter-spacing: .06em; margin-top: 4px; color: inherit; opacity: .8; }
.fp-choice[aria-pressed="true"] { background: #E8E4E1; border-color: #E8E4E1; color: #000000; }
.fp-panel { background: #131313; border: 1px solid #222222; border-radius: 6px; padding: 18px; display: flex; flex-direction: column; gap: 12px; font-size: 15px; line-height: 1.5; margin: 0; }
.fp-panel.bone { background: #E8E4E1; color: #000000; border-color: #E8E4E1; }
.fp-error { margin: 0; background: #4A0E12; color: #FFD6D9; border-radius: 4px; padding: 14px 16px; font-size: 15px; font-weight: 500; }

.fp-done { background: #F01B28; color: #FFFFFF; border-radius: 6px; padding: 48px 36px; display: flex; flex-direction: column; gap: 18px; align-items: flex-start; }
.fp-done .eyebrow { font-family: 'IBM Plex Mono', monospace; font-size: 12px; font-weight: 500; letter-spacing: .16em; }
.fp-done .big { font-size: clamp(56px, 7vw, 104px); line-height: .86; letter-spacing: -.06em; }
.fp-done p { margin: 0; font-size: 18px; line-height: 1.6; }

/* packs */
.fp-packgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; }
.fp-pack { background: #131313; border: 1px solid #2A2A2A; border-radius: 6px; padding: 32px; display: flex; flex-direction: column; gap: 16px; }
.fp-pack.best { background: #F01B28; border-color: #F01B28; color: #FFFFFF; }
.fp-pack .n { font-weight: 200; font-size: 96px; line-height: .8; letter-spacing: -.06em; }
.fp-pack .n small { font-weight: 300; font-size: 28px; letter-spacing: -.03em; margin-left: 10px; }
.fp-pack .p { font-weight: 500; font-size: 52px; line-height: .9; letter-spacing: -.05em; }
.fp-pack .per { font-family: 'IBM Plex Mono', monospace; font-size: 12px; letter-spacing: .12em; opacity: .8; }
.fp-pack.sel { outline: 3px solid #E8E4E1; outline-offset: 3px; }
.fp-buy { background: #131313; border: 1px solid #2A2A2A; border-radius: 6px; padding: 32px; display: flex; flex-direction: column; gap: 18px; margin-top: 16px; }
.fp-check { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-top: 16px; border-top: 1px solid #333333; padding-top: 24px; }
.fp-check .fp-field { flex: 1 1 220px; }
.fp-check-result { flex-basis: 100%; margin: 0; font-size: 16px; font-weight: 500; color: #FFFFFF; }

/* members-only pack */
.fp-pack.members { border-color: #E8E4E1; }
.fp-member-note { font-size: 13px; line-height: 1.45; color: #A6A6A8; }
