/* ═══════════════════════════════════════════════════════════════════
   GPS Reservation Calendar — v1.5 · dark cinematic
   Square corners everywhere (client requirement). Font inherits (Raleway).
   ═══════════════════════════════════════════════════════════════════ */

.gps-res{
    --gps-bg:#0E1A21;
    --gps-surface:#13242E;
    --gps-surface-2:#1B303D;
    --gps-line:rgba(249,240,223,.14);
    --gps-line-strong:rgba(249,240,223,.28);
    --gps-text:#F9F0DF;
    --gps-muted:rgba(249,240,223,.62);
    --gps-faint:rgba(249,240,223,.32);
    --gps-mint:#95D7BC;
    --gps-mint-soft:rgba(149,215,188,.14);
    --gps-mint-range:rgba(149,215,188,.18);
    --gps-orange:#F88B2E;
    --gps-ink:#0E1A21;
    --gps-danger:#FF8A7A;
    --gps-ease:cubic-bezier(.2,.7,.2,1);
    --gps-progress:0;

    position:relative;
    max-width:780px;
    margin:2rem auto;
    background:var(--gps-bg);
    color:var(--gps-text);
    font-family:inherit;
    font-size:15px;
    line-height:1.5;
    border:1px solid var(--gps-line);
    overflow:hidden;
    -webkit-font-smoothing:antialiased;
}
.gps-res *,.gps-res *::before,.gps-res *::after{box-sizing:border-box}
/* Client requirement: no rounded corners anywhere, beats theme styles. */
.gps-res,.gps-res *,.gps-res *::before,.gps-res *::after{border-radius:0!important}

/* Theme-proof reset for interactive elements inside the widget */
.gps-res button,.gps-res input,.gps-res textarea{
    font:inherit;color:inherit;letter-spacing:normal;text-transform:none;
    margin:0;box-shadow:none;text-shadow:none;min-height:0;
}
.gps-res button{background:none;border:0;padding:0;cursor:pointer;-webkit-appearance:none;appearance:none}
.gps-res button:disabled{cursor:not-allowed}
.gps-res h3,.gps-res p{margin:0}

/* Focus — always visible, keyboard only */
.gps-res :focus{outline:none}
.gps-res :focus-visible{outline:2px solid var(--gps-mint)!important;outline-offset:2px}
.gps-res .gps-res__panel-title:focus-visible{outline:none!important}

/* ─── Step indicator: horizontal track with progress line ─── */
.gps-res .gps-res__steps{
    position:relative;display:flex;
    padding:22px 8px 18px;
    background:var(--gps-surface);
    border-bottom:1px solid var(--gps-line);
}
.gps-res .gps-res__steps::before,
.gps-res .gps-res__steps::after{
    content:"";position:absolute;top:36px;left:12.5%;height:2px;pointer-events:none;
}
.gps-res .gps-res__steps::before{right:12.5%;background:var(--gps-line)}
.gps-res .gps-res__steps::after{
    width:calc(75% * var(--gps-progress));
    background:var(--gps-mint);
    transition:width .35s var(--gps-ease);
}
.gps-res .gps-res__step{
    position:relative;z-index:1;flex:1;min-width:0;
    display:flex;flex-direction:column;align-items:center;gap:8px;
    padding:0 4px;cursor:default;
    color:var(--gps-muted);
    font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
    transition:color .2s;
}
.gps-res .gps-res__step-num{
    display:inline-flex;align-items:center;justify-content:center;
    width:30px;height:30px;flex-shrink:0;
    background:var(--gps-surface);
    border:1px solid var(--gps-line-strong);
    color:var(--gps-muted);
    font-size:12px;font-weight:600;letter-spacing:0;
    font-variant-numeric:tabular-nums;
    transition:background .2s,border-color .2s,color .2s;
}
.gps-res .gps-res__step-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.gps-res .gps-res__step--active{color:var(--gps-text)}
.gps-res .gps-res__step--active .gps-res__step-num{background:var(--gps-mint);border-color:var(--gps-mint);color:var(--gps-ink)}
.gps-res .gps-res__step--done{color:var(--gps-mint)}
.gps-res .gps-res__step--done .gps-res__step-num{background:var(--gps-surface-2);border-color:var(--gps-mint);color:var(--gps-mint)}

/* ─── Panels ─── */
.gps-res .gps-res__panel{padding:28px;animation:gpsPanelIn .2s var(--gps-ease) both}
.gps-res .gps-res__panel--hidden{display:none!important}
@keyframes gpsPanelIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.gps-res .gps-res__panel-title{
    font-family:inherit;font-size:22px;font-weight:600;line-height:1.25;
    letter-spacing:.01em;color:var(--gps-text);margin:0 0 6px;
}
.gps-res .gps-res__panel-subtitle{font-size:14px;color:var(--gps-muted);margin:0 0 22px}
.gps-res .gps-res__panel-title + .gps-res__services,
.gps-res .gps-res__panel-title + .gps-res__calendar-layout,
.gps-res .gps-res__panel-title + .gps-res__form-grid{margin-top:18px}

/* ─── Service cards ─── */
.gps-res .gps-res__services{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.gps-res .gps-res__services .gps-res__svc-card:last-child:nth-child(odd){grid-column:1/-1}
.gps-res .gps-res__svc-card{
    position:relative;display:flex;align-items:flex-start;gap:14px;
    padding:18px;cursor:pointer;
    background:var(--gps-surface);
    border:1px solid var(--gps-line);
    transition:border-color .2s,background .2s;
}
.gps-res .gps-res__svc-card::before{
    content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:3px;
    background:var(--gps-mint);transform:scaleY(0);transform-origin:top;
    transition:transform .2s var(--gps-ease);
}
.gps-res .gps-res__svc-card:hover{border-color:var(--gps-line-strong);background:var(--gps-surface-2)}
.gps-res .gps-res__svc-card--selected,
.gps-res .gps-res__svc-card--selected:hover{border-color:var(--gps-mint);background:var(--gps-surface-2)}
.gps-res .gps-res__svc-card--selected::before{transform:scaleY(1)}
.gps-res .gps-res__svc-icon{
    width:44px;height:44px;flex-shrink:0;overflow:hidden;
    display:flex;align-items:center;justify-content:center;
    background:var(--gps-bg);border:1px solid var(--gps-line);padding:8px;
}
.gps-res .gps-res__svc-icon img{width:100%;height:100%;object-fit:contain;display:block}
.gps-res .gps-res__svc-body{flex:1;min-width:0}
.gps-res .gps-res__svc-label{font-size:16px;font-weight:600;line-height:1.3;margin-bottom:8px;color:var(--gps-text)}
.gps-res .gps-res__svc-meta{display:flex;align-items:baseline;gap:6px 14px;flex-wrap:wrap;font-size:13px;color:var(--gps-muted)}
.gps-res .gps-res__svc-meta strong{color:var(--gps-text);font-weight:600}
.gps-res .gps-res__svc-price{
    color:var(--gps-orange);font-weight:600;font-size:18px;
    font-variant-numeric:tabular-nums;letter-spacing:.01em;
}
.gps-res .gps-res__svc-price--quote{font-size:14px;letter-spacing:.04em}
.gps-res .gps-res__svc-fees{
    margin-top:8px;font-size:12px;color:var(--gps-muted);
    letter-spacing:.02em;font-variant-numeric:tabular-nums;
}

/* ─── Calendar + time slots layout ─── */
.gps-res .gps-res__calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) 248px;gap:24px;margin-bottom:18px}
.gps-res .gps-res__calendar-layout--single{grid-template-columns:minmax(0,1fr)}
.gps-res .gps-res__calendar{min-width:0}
.gps-res .gps-res__timeslots{min-width:0}
.gps-res .gps-res__timeslots--hidden{display:none!important}
.gps-res .gps-res__timeslots-title{
    font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
    color:var(--gps-muted);margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--gps-line);
}
.gps-res .gps-res__timeslots-list{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:6px;
    max-height:340px;overflow-y:auto;padding:2px;
}

/* Time buttons */
.gps-res .gps-res__time-btn{
    padding:11px 8px;text-align:center;
    background:var(--gps-surface);border:1px solid var(--gps-line);
    color:var(--gps-text);font-size:13px;font-weight:600;
    font-variant-numeric:tabular-nums;white-space:nowrap;
    transition:border-color .15s,background .15s,color .15s;
}
.gps-res .gps-res__time-btn:hover:not(:disabled){border-color:var(--gps-mint);background:var(--gps-surface-2)}
.gps-res .gps-res__time-btn--selected,
.gps-res .gps-res__time-btn--selected:hover:not(:disabled){background:var(--gps-mint);border-color:var(--gps-mint);color:var(--gps-ink)}
.gps-res .gps-res__time-btn--blocked,
.gps-res .gps-res__time-btn--blocked:hover{
    background:transparent;border-color:var(--gps-line);color:var(--gps-faint);
    text-decoration:line-through;cursor:not-allowed;
}

/* Calendar */
.gps-res .gps-res__cal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.gps-res .gps-res__cal-title{font-size:16px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;font-variant-numeric:tabular-nums}
.gps-res .gps-res__cal-nav{
    width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;
    border:1px solid var(--gps-line-strong);color:var(--gps-text);font-size:20px;line-height:1;
    transition:background .15s,border-color .15s,color .15s;
}
.gps-res .gps-res__cal-nav:hover:not(:disabled){border-color:var(--gps-mint);color:var(--gps-mint)}
.gps-res .gps-res__cal-nav:disabled{opacity:.3}
.gps-res .gps-res__cal-weekdays{
    display:grid;grid-template-columns:repeat(7,1fr);text-align:center;
    font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
    color:var(--gps-muted);padding-bottom:8px;margin-bottom:6px;border-bottom:1px solid var(--gps-line);
}
.gps-res .gps-res__cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.gps-res .gps-res__day{
    position:relative;aspect-ratio:1;min-height:36px;
    display:flex;align-items:center;justify-content:center;
    font-size:14px;font-weight:500;font-variant-numeric:tabular-nums;
    color:var(--gps-text);background:transparent;border:1px solid transparent;
    transition:background .15s,color .15s,border-color .15s;
}
.gps-res .gps-res__day:hover:not(:disabled):not(.gps-res__day--empty):not(.gps-res__day--start):not(.gps-res__day--end){border-color:var(--gps-mint);background:var(--gps-mint-soft)}
.gps-res .gps-res__day--empty{cursor:default;pointer-events:none}
.gps-res .gps-res__day--today{font-weight:500;color:var(--gps-mint)}
.gps-res .gps-res__day--today::after{
    content:"";position:absolute;left:50%;bottom:16%;width:14px;height:2px;margin-left:-7px;background:currentColor;
}
.gps-res .gps-res__day--past,
.gps-res .gps-res__day--blocked{color:var(--gps-faint);text-decoration:line-through;cursor:not-allowed}
.gps-res .gps-res__day--blocked{
    background:repeating-linear-gradient(135deg,transparent 0 5px,rgba(249,240,223,.05) 5px 6px);
}
.gps-res .gps-res__day--offday{color:var(--gps-faint);opacity:.6;cursor:not-allowed}
.gps-res .gps-res__day--past.gps-res__day--today{color:var(--gps-faint)}
.gps-res .gps-res__day--in-range{background:var(--gps-mint-range);color:var(--gps-text)}
.gps-res .gps-res__day--start,
.gps-res .gps-res__day--end{background:var(--gps-mint);border-color:var(--gps-mint);color:var(--gps-ink);font-weight:600}
.gps-res .gps-res__day--start.gps-res__day--today::after,
.gps-res .gps-res__day--end.gps-res__day--today::after{background:var(--gps-ink)}

/* ─── Selection info ─── */
.gps-res .gps-res__selection-info{background:var(--gps-surface);border:1px solid var(--gps-line);padding:18px}
.gps-res .gps-res__date-single{text-align:center}
.gps-res .gps-res__dates-display{display:flex;align-items:center;justify-content:center;gap:16px}
.gps-res .gps-res__date-box{display:flex;flex-direction:column;align-items:center}
.gps-res .gps-res__date-label{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gps-muted)}
.gps-res .gps-res__date-value{font-size:16px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}
.gps-res .gps-res__date-arrow{font-size:18px;color:var(--gps-mint);margin-top:14px}
.gps-res .gps-res__price-display{
    text-align:center;margin-top:12px;min-height:22px;
    font-size:15px;font-weight:600;color:var(--gps-orange);font-variant-numeric:tabular-nums;
}
.gps-res .gps-res__price-display:empty{display:none}

/* ─── Actions & buttons ─── */
.gps-res .gps-res__actions{
    display:flex;justify-content:space-between;align-items:center;gap:12px;
    margin-top:28px;padding-top:20px;border-top:1px solid var(--gps-line);
}
.gps-res .gps-res__btn{
    display:inline-flex;align-items:center;justify-content:center;gap:6px;
    min-height:46px;padding:12px 22px;
    font-size:13px;font-weight:600;line-height:1.2;
    letter-spacing:.08em;text-transform:uppercase;
    border:1px solid transparent;
    transition:background .15s,border-color .15s,color .15s,opacity .15s;
}
.gps-res .gps-res__btn strong{font-weight:500}
.gps-res .gps-res__btn:disabled{opacity:.4}
.gps-res .gps-res__btn--primary{background:var(--gps-mint);border-color:var(--gps-mint);color:var(--gps-ink)}
.gps-res .gps-res__btn--primary:hover:not(:disabled){background:var(--gps-text);border-color:var(--gps-text);color:var(--gps-ink)}
.gps-res .gps-res__btn--ghost{background:transparent;border-color:var(--gps-line-strong);color:var(--gps-text)}
.gps-res .gps-res__btn--ghost:hover:not(:disabled){border-color:var(--gps-mint);color:var(--gps-mint)}

/* ─── Form ─── */
.gps-res .gps-res__form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.gps-res .gps-res__field{min-width:0}
.gps-res .gps-res__field--full{grid-column:1/-1}
.gps-res .gps-res__field > label{
    display:block;margin-bottom:8px;
    font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gps-muted);
}
.gps-res .gps-req{color:var(--gps-orange)}
.gps-res .gps-res__field input[type="text"],
.gps-res .gps-res__field input[type="email"],
.gps-res .gps-res__field input[type="tel"],
.gps-res .gps-res__field textarea{
    display:block;width:100%;padding:12px 14px;
    background:var(--gps-surface);color:var(--gps-text);
    border:1px solid var(--gps-line-strong);
    font-size:15px;line-height:1.4;
    transition:border-color .15s,background .15s;
}
.gps-res .gps-res__field textarea{resize:vertical;min-height:96px}
.gps-res .gps-res__field input::placeholder,
.gps-res .gps-res__field textarea::placeholder{color:var(--gps-faint)}
.gps-res .gps-res__field input:hover,
.gps-res .gps-res__field textarea:hover{border-color:var(--gps-muted)}
.gps-res .gps-res__field input:focus,
.gps-res .gps-res__field textarea:focus{border-color:var(--gps-mint);background:var(--gps-surface-2)}
.gps-res .gps-res__field input.gps-invalid{border-color:var(--gps-danger)}

/* Student checkbox */
.gps-res .gps-res__field--check{padding-top:4px}
.gps-res .gps-res__check{
    display:flex;align-items:flex-start;gap:12px;cursor:pointer;
    padding:14px 16px;background:var(--gps-surface);border:1px solid var(--gps-line);
    font-size:14px;line-height:1.45;color:var(--gps-text);
    letter-spacing:normal;text-transform:none;margin:0;
    transition:border-color .15s;
}
.gps-res .gps-res__check:hover{border-color:var(--gps-line-strong)}
.gps-res .gps-res__check:has(.gps-res__checkbox:checked){border-color:var(--gps-mint)}
.gps-res .gps-res__checkbox{
    -webkit-appearance:none;appearance:none;flex-shrink:0;position:relative;
    width:20px;height:20px;margin:1px 0 0;
    background:transparent;border:1px solid var(--gps-line-strong);cursor:pointer;
    transition:background .15s,border-color .15s;
}
.gps-res .gps-res__checkbox:checked{background:var(--gps-mint);border-color:var(--gps-mint)}
.gps-res .gps-res__checkbox:checked::after{
    content:"";position:absolute;left:6px;top:2px;width:6px;height:11px;
    border:solid var(--gps-ink);border-width:0 2px 2px 0;transform:rotate(45deg);
}

/* ─── Summary ─── */
.gps-res .gps-res__summary{background:var(--gps-surface);border:1px solid var(--gps-line);padding:6px 20px}
.gps-res .gps-res__summary-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 0;font-size:14px}
.gps-res .gps-res__summary-row + .gps-res__summary-row{border-top:1px solid var(--gps-line)}
.gps-res .gps-res__summary-row > span{color:var(--gps-muted);flex-shrink:0}
.gps-res .gps-res__summary-row > strong{font-weight:600;text-align:right;overflow-wrap:anywhere}
.gps-res .gps-res__amount{font-variant-numeric:tabular-nums}
.gps-res .gps-res__summary-row--fee > strong{color:var(--gps-text)}
.gps-res .gps-res__summary-total{padding-top:16px}
.gps-res .gps-res__summary-row.gps-res__summary-total{border-top:1px solid var(--gps-line-strong)}
.gps-res .gps-res__summary-total > span{color:var(--gps-text);font-weight:600;letter-spacing:.08em;text-transform:uppercase;font-size:12px}
.gps-res .gps-res__summary-total > strong{color:var(--gps-orange);font-size:22px;font-weight:500}
.gps-res .gps-res__summary-row--deposit > strong{color:var(--gps-orange);font-weight:600}
.gps-res .gps-res__summary-note{
    margin-top:12px;padding:10px 14px;font-size:13px;color:var(--gps-muted);
    border-left:2px solid var(--gps-mint);background:var(--gps-mint-soft);
}

/* ─── Errors ─── */
.gps-res .gps-res__errors{
    margin-top:16px;padding:12px 16px;font-size:13px;line-height:1.5;
    color:var(--gps-danger);background:rgba(255,138,122,.08);border:1px solid rgba(255,138,122,.45);
}

/* ─── Responsive ─── */
@media (max-width:720px){
    .gps-res .gps-res__calendar-layout{grid-template-columns:minmax(0,1fr)}
    .gps-res .gps-res__timeslots-list{max-height:none}
}
@media (max-width:600px){
    .gps-res{margin:1.25rem auto}
    .gps-res .gps-res__panel{padding:20px 16px}
    .gps-res .gps-res__panel-title{font-size:19px}
    .gps-res .gps-res__services{grid-template-columns:1fr}
    .gps-res .gps-res__form-grid{grid-template-columns:1fr}
    .gps-res .gps-res__steps{padding:16px 4px 14px}
    .gps-res .gps-res__steps::before,.gps-res .gps-res__steps::after{top:30px}
    .gps-res .gps-res__step-label{display:none}
    .gps-res .gps-res__summary{padding:4px 14px}
    .gps-res .gps-res__summary-row{flex-wrap:wrap;gap:4px 12px}
    .gps-res .gps-res__summary-row > strong{margin-left:auto}
    .gps-res .gps-res__btn{padding:12px 14px;font-size:12px;letter-spacing:.06em}
    .gps-res .gps-res__actions{flex-wrap:wrap}
}
@media (max-width:420px){
    .gps-res .gps-res__btn strong{display:none}
    .gps-res .gps-res__day{font-size:13px;min-height:0}
    .gps-res .gps-res__cal-days{gap:2px}
    .gps-res .gps-res__svc-card{padding:14px;gap:12px}
    .gps-res .gps-res__svc-icon{width:38px;height:38px;padding:6px}
    .gps-res .gps-res__timeslots-list{grid-template-columns:repeat(2,minmax(0,1fr))}
    .gps-res .gps-res__dates-display{gap:10px}
    .gps-res .gps-res__date-value{font-size:14px}
}

/* ─── Reduced motion ─── */
@media (prefers-reduced-motion:reduce){
    .gps-res *,.gps-res *::before,.gps-res *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
