.tw-booking{
  --tw-primary:#4e66f8;
  --tw-primary-soft:#f3f5ff;
  --tw-accent:#91d9ff;
  --tw-text:#182238;
  --tw-muted:#6f7890;
  --tw-line:#dfe5f0;
  --tw-soft:#f8faff;
  --tw-green:#149447;
  --tw-orange:#ed7a16;
  --tw-red:#d85a5a;
  --tw-blue-muted:#2c5eb8;
  font-family:inherit;
  color:var(--tw-text);
  background:#fff;
  width:100%;
}
.tw-booking *{box-sizing:border-box}
.tw-booking button,.tw-booking input{font:inherit}
.tw-booking button{line-height:1.2}
.tw-booking__top{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:18px}
.tw-kicker{display:block;color:var(--tw-primary);font-size:11px;line-height:1.25;letter-spacing:.12em;font-weight:800;margin-bottom:5px}
.tw-booking h2,.tw-booking h3,.tw-booking h4{color:var(--tw-text);font-weight:750;letter-spacing:-.02em}
.tw-booking h2{font-size:clamp(25px,3vw,36px);line-height:1.12;margin:0}
.tw-nav{display:flex;gap:8px;flex:none}
.tw-nav__btn{display:flex;align-items:center;justify-content:center;width:42px;height:42px;padding:0;border-radius:12px;border:1px solid var(--tw-line);background:#fff;color:var(--tw-primary);font-size:20px;font-weight:700;cursor:pointer;transition:.15s}
.tw-nav__btn:hover{background:var(--tw-primary-soft);border-color:#cbd4ff}
.tw-days-loading,.tw-public-message{padding:17px;border:1px solid var(--tw-line);border-radius:14px;background:var(--tw-soft);font-size:13px;color:var(--tw-muted)}

/* Days are navigation tabs. Only the selected day shows routes below. */
.tw-days-public{transition:.2s}
.tw-days-public.is-dimmed{opacity:.32;pointer-events:none}
.tw-day-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin-bottom:16px}
.tw-day-tab{appearance:none;border:1px solid var(--tw-line);border-radius:14px;background:#fff;min-height:74px;padding:10px 8px;color:var(--tw-text);cursor:pointer;text-align:center;transition:.15s;box-shadow:0 1px 0 rgba(17,24,39,.02)}
.tw-day-tab:hover{border-color:#bcc8ff;background:#fbfcff}
.tw-day-tab.is-selected{background:var(--tw-primary);border-color:var(--tw-primary);color:#fff;box-shadow:0 9px 22px rgba(78,102,248,.18)}
.tw-day-tab span{display:block;font-size:10px;text-transform:uppercase;font-weight:800;letter-spacing:.07em;opacity:.7;margin-bottom:3px}
.tw-day-tab strong{display:block;font-size:17px;line-height:1.15}
.tw-day-tab em{display:block;font-size:10px;font-style:normal;margin-top:4px;opacity:.7}
.tw-day-tab.is-selected span,.tw-day-tab.is-selected em{opacity:.9;color:#fff}
.tw-selected-day-panel{border-top:1px solid var(--tw-line);padding-top:16px}
.tw-selected-day-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}
.tw-selected-day-heading>div{display:flex;align-items:baseline;gap:8px}
.tw-selected-day-heading span{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--tw-muted);font-weight:800}
.tw-selected-day-heading strong{font-size:16px}
.tw-public-directions{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.tw-public-direction h4{font-size:12px;margin:0 0 9px;color:var(--tw-text);text-transform:uppercase;letter-spacing:.06em}
.tw-public-direction__trips{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.tw-trip-btn,.tw-return-trip{width:100%;min-width:0;border:1.5px solid #cfd8ff;border-radius:13px;background:#fff;padding:12px 10px;text-align:center;margin:0;cursor:pointer;transition:.15s;color:var(--tw-text)}
.tw-trip-btn:hover,.tw-return-trip:hover{transform:translateY(-1px);border-color:var(--tw-primary);box-shadow:0 7px 18px rgba(78,102,248,.08)}
.tw-trip-btn strong,.tw-return-trip strong{display:block;font-size:17px;line-height:1.1;color:var(--tw-text)}
.tw-trip-btn span,.tw-return-trip span{display:block;font-size:11px;line-height:1.3;color:var(--tw-muted);margin-top:5px}
.tw-trip-btn em,.tw-return-trip em{display:block;font-style:normal;font-size:9px;line-height:1.25;font-weight:850;letter-spacing:.05em;text-transform:uppercase;margin-top:5px}
.tw-trip-btn--open em,.tw-return-trip--open em{color:var(--tw-green)}
.tw-trip-btn--warning em,.tw-return-trip--warning em{color:var(--tw-orange)}
.tw-trip-btn--soldout em,.tw-trip-btn--closed em,.tw-return-trip--soldout em,.tw-return-trip--closed em{color:var(--tw-red)}
.tw-trip-btn.is-disabled,.tw-return-trip:disabled{opacity:1;cursor:not-allowed;background:#fbfbfc;border-color:#e3e6ed}
.tw-trip-btn.is-disabled strong,.tw-return-trip:disabled strong{color:#aeb5c3}
.tw-trip-btn.is-disabled span,.tw-return-trip:disabled span{color:#adb4c0}
.tw-return-trip.is-selected{border-color:var(--tw-primary);background:var(--tw-primary-soft);box-shadow:0 0 0 2px rgba(78,102,248,.09)}
.tw-no-trips{font-size:12px;color:var(--tw-muted);margin:8px 0}

.tw-wizard{max-width:820px;margin:30px auto 0;border:1px solid var(--tw-line);border-radius:20px;padding:24px;background:#fff;box-shadow:0 14px 38px rgba(30,43,90,.06)}
.tw-wizard__steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:0 auto 24px;max-width:560px}
.tw-step-marker{position:relative;text-align:center;color:var(--tw-muted);font-size:10px;font-weight:700;padding-top:37px}
.tw-step-marker:before{content:attr(data-number);position:absolute;top:0;left:50%;transform:translateX(-50%);width:28px;height:28px;border-radius:50%;background:#eef1f7;color:#687188;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;z-index:2}
.tw-step-marker:after{content:"";position:absolute;top:13px;left:50%;width:100%;height:2px;background:#e8ebf3;z-index:1}
.tw-step-marker:last-child:after{display:none}
.tw-step-marker.is-active,.tw-step-marker.is-done{color:var(--tw-primary)}
.tw-step-marker.is-active:before,.tw-step-marker.is-done:before{background:var(--tw-primary);color:#fff}
.tw-step-marker.is-done:after{background:#b9c4ff}
.tw-step h3{font-size:clamp(22px,3vw,28px);line-height:1.2;margin:16px 0 5px}
.tw-step h4{font-size:16px;margin:20px 0 10px}
.tw-step-intro{color:var(--tw-muted);font-size:14px;line-height:1.5;margin:0 0 18px}
.tw-link{display:inline-flex;align-items:center;justify-content:center;min-height:38px;border:1px solid #d4dcff;background:#fff;border-radius:10px;padding:8px 12px;color:var(--tw-primary);font-size:12px;font-weight:750;cursor:pointer}
.tw-link:hover{background:var(--tw-primary-soft)}
.tw-selected-trip{display:grid;grid-template-columns:1fr auto;gap:4px 16px;background:#f8fbff;border:1px solid #e0e8f3;border-radius:15px;padding:15px;margin-top:14px}
.tw-selected-trip span{grid-column:1/-1;font-size:9px;text-transform:uppercase;letter-spacing:.09em;color:var(--tw-muted);font-weight:800}
.tw-selected-trip strong{font-size:17px}
.tw-selected-trip b{font-size:12px;color:var(--tw-muted);font-weight:650;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.tw-selected-trip em{grid-column:2;grid-row:2/4;align-self:center;font-style:normal;color:var(--tw-green);font-size:12px;font-weight:800}
.tw-inline-icon{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.tw-inline-icon svg{width:14px;height:14px;display:block;stroke:currentColor;fill:none;stroke-width:1.8}

.tw-counter-list{display:grid;gap:8px}
.tw-counter{display:flex;align-items:center;justify-content:space-between;gap:15px;border:1px solid var(--tw-line);border-radius:13px;padding:11px 13px;background:#fff}
.tw-counter>div:first-child strong{font-size:14px}
.tw-counter>div:first-child span{display:block;color:var(--tw-muted);font-size:11px;margin-top:2px}
.tw-counter__controls{display:flex;align-items:center;gap:9px;flex:none}
.tw-counter__controls button{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border-radius:10px;border:1px solid var(--tw-line);background:#fff;color:var(--tw-primary);font-size:18px;line-height:1;font-weight:600;cursor:pointer}
.tw-counter__controls button:hover{background:var(--tw-primary-soft);border-color:#c7d1ff}
.tw-counter__controls .tw-count-plus{background:var(--tw-primary);border-color:var(--tw-primary);color:#fff}
.tw-counter__controls .tw-count-plus:hover{background:#4058eb}
.tw-counter__controls b{min-width:28px;text-align:center;font-size:15px}

.tw-price-box{margin:16px 0;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--tw-line);border-radius:13px;background:#fff;padding:13px 15px;color:var(--tw-text)}
.tw-price-box span{font-size:11px;color:var(--tw-muted)}
.tw-price-box strong{font-size:20px;color:var(--tw-primary)}
.tw-price-box--split{display:grid;grid-template-columns:1fr 1fr 1.15fr;gap:0;padding:0;overflow:hidden}
.tw-price-box--split>div{display:flex;flex-direction:column;padding:13px 14px;border-right:1px solid var(--tw-line)}
.tw-price-box--split>div:last-child{border-right:0}
.tw-price-box__grand{background:#f9faff}
.tw-price-box__grand strong{font-size:22px}
.tw-primary{width:100%;border:0;border-radius:12px;background:var(--tw-primary);color:#fff;padding:13px 17px;font-size:14px;font-weight:800;cursor:pointer;transition:.15s}
.tw-primary:hover{background:#4259ed;transform:translateY(-1px)}
.tw-primary:disabled{opacity:.34;cursor:not-allowed;transform:none}

.tw-return-choice{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:18px}
.tw-choice{border:1.5px solid #cfd8ff;background:#fff;color:var(--tw-text);border-radius:12px;padding:13px 14px;font-size:13px;font-weight:750;cursor:pointer}
.tw-choice.is-selected{border-color:var(--tw-primary);background:var(--tw-primary-soft);color:var(--tw-primary)}
.tw-return-trips{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.tw-return-counters{margin-top:20px}
.tw-inline-loading{color:var(--tw-muted);font-size:13px}

.tw-order-summary{display:grid;gap:14px;margin:17px 0 18px}
.tw-summary-card{border:1px solid var(--tw-line);border-radius:14px;padding:15px;position:relative;background:#fff}
.tw-summary-card>span{display:block;font-size:9px;color:var(--tw-primary);font-weight:850;text-transform:uppercase;letter-spacing:.09em;margin-bottom:5px}
.tw-summary-card h4{margin:0 0 6px;font-size:17px;line-height:1.3;padding-right:90px}
.tw-summary-card .tw-summary-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--tw-muted);margin-bottom:7px}
.tw-summary-card p{color:var(--tw-muted);font-size:12px;margin:0;padding-right:90px}
.tw-summary-card>strong{position:absolute;right:15px;bottom:15px;font-size:17px;color:var(--tw-text)}
.tw-summary-grand{display:flex;align-items:center;justify-content:space-between;border:1px solid #ccd5ff;background:#f7f9ff;color:var(--tw-text);border-radius:14px;padding:15px 16px;margin-top:2px}
.tw-summary-grand span{font-size:13px;font-weight:700}
.tw-summary-grand strong{font-size:23px;color:var(--tw-primary)}

.tw-customer-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin:17px 0}
.tw-customer-grid label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:750;color:var(--tw-text)}
.tw-customer-grid input{height:44px;border:1px solid var(--tw-line);border-radius:10px;padding:0 12px;background:#fff;color:var(--tw-text);font-size:13px}
.tw-customer-grid input:focus{outline:2px solid rgba(78,102,248,.12);border-color:var(--tw-primary)}
.tw-demo-note{display:flex;gap:10px;background:#fffaf2;border:1px solid #f5dfb7;border-radius:12px;padding:11px 12px;margin-bottom:13px;color:#704b16}
.tw-demo-note strong{white-space:nowrap;font-size:11px}
.tw-demo-note span{font-size:11px;line-height:1.45}

.tw-modal{position:fixed;z-index:999999;inset:0;background:rgba(20,28,45,.55);display:flex;align-items:center;justify-content:center;padding:20px}
.tw-modal[hidden]{display:none}
.tw-modal__box{width:min(620px,100%);max-height:88vh;overflow:auto;background:#fff;border-radius:20px;padding:24px;position:relative;box-shadow:0 30px 80px rgba(18,30,55,.18)}
.tw-modal__close{position:absolute;right:14px;top:14px;display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid var(--tw-line);background:#fff;color:var(--tw-text);border-radius:10px;font-size:20px;line-height:1;cursor:pointer}
.tw-modal__content{padding-top:10px}
.tw-modal__content>h3{font-size:22px;line-height:1.25;margin:7px 42px 14px 0}
.tw-modal__customer{margin-top:18px;padding-top:16px;border-top:1px solid var(--tw-line);font-size:13px;line-height:1.65;color:var(--tw-muted)}
.tw-modal__customer strong{color:var(--tw-text);font-size:15px}

@media(max-width:1099px){
  .tw-day-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tw-public-directions{grid-template-columns:1fr;gap:17px}
  .tw-public-direction__trips{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:767px){
  .tw-booking__top{align-items:center}
  .tw-booking h2{font-size:25px}
  .tw-day-tabs{grid-template-columns:1fr}
  .tw-selected-day-heading{align-items:flex-start;flex-direction:column}
  .tw-public-direction__trips{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tw-wizard{padding:17px;border-radius:16px;margin-top:20px}
  .tw-wizard__steps{margin-bottom:19px}
  .tw-step-marker{font-size:8px;padding-top:34px}
  .tw-step-marker:before{width:26px;height:26px}
  .tw-step-marker:after{top:12px}
  .tw-selected-trip{grid-template-columns:1fr}
  .tw-selected-trip em{grid-column:1;grid-row:auto;margin-top:5px}
  .tw-return-choice,.tw-customer-grid{grid-template-columns:1fr}
  .tw-return-trips{grid-template-columns:1fr 1fr}
  .tw-price-box--split{grid-template-columns:1fr 1fr}
  .tw-price-box__grand{grid-column:1/-1;border-top:1px solid var(--tw-line);border-right:0!important}
  .tw-summary-card h4,.tw-summary-card p{padding-right:0}
  .tw-summary-card>strong{position:static;display:block;margin-top:10px}
  .tw-modal__box{padding:19px}
}


/* =========================================================
   v0.4 – UI aligned with approved mockup
   ========================================================= */

/* Public booking area = one subtle, clearly separated system card */
.tw-booking .tw-search-card{
  border:1px solid #e4e8f0;
  border-radius:20px;
  background:#fff;
  padding:24px;
  box-shadow:0 8px 28px rgba(24,34,56,.035);
}

/* Date cards: always white. Selected date = blue border, not blue fill. */
.tw-booking .tw-day-tab,
.tw-booking button.tw-day-tab{
  background:#fff !important;
  background-image:none !important;
  color:var(--tw-text) !important;
  border:1px solid #dfe5f0 !important;
  box-shadow:none !important;
}
.tw-booking .tw-day-tab span,
.tw-booking .tw-day-tab strong,
.tw-booking .tw-day-tab em{
  color:inherit !important;
}
.tw-booking .tw-day-tab:hover{
  background:#f8faff !important;
  border-color:#91a2ff !important;
  transform:none !important;
}
.tw-booking .tw-day-tab.is-selected{
  background:#fff !important;
  color:var(--tw-text) !important;
  border:1.5px solid var(--tw-primary) !important;
  box-shadow:0 0 0 2px rgba(78,102,248,.06) !important;
}
.tw-booking .tw-day-tab.is-selected span{
  color:var(--tw-primary) !important;
  opacity:1 !important;
}
.tw-booking .tw-day-tab.is-selected em{
  color:var(--tw-primary) !important;
  opacity:.9 !important;
}

/* Main trip and return trip cards: white base, blue outline.
   This intentionally uses !important to override Elementor/theme button backgrounds. */
.tw-booking .tw-trip-btn,
.tw-booking button.tw-trip-btn,
.tw-booking .tw-return-trip,
.tw-booking button.tw-return-trip{
  background:#fff !important;
  background-image:none !important;
  color:var(--tw-text) !important;
  border:1.5px solid #cbd5ff !important;
  box-shadow:none !important;
}
.tw-booking .tw-trip-btn strong,
.tw-booking .tw-return-trip strong{
  color:var(--tw-text) !important;
}
.tw-booking .tw-trip-btn span,
.tw-booking .tw-return-trip span{
  color:var(--tw-muted) !important;
}
.tw-booking .tw-trip-btn:hover,
.tw-booking .tw-return-trip:hover{
  background:#f3f5ff !important;
  border-color:var(--tw-primary) !important;
  box-shadow:0 7px 18px rgba(78,102,248,.08) !important;
  transform:translateY(-1px) !important;
}
.tw-booking .tw-trip-btn.is-disabled,
.tw-booking .tw-return-trip:disabled{
  background:#fafbfc !important;
  border-color:#e4e7ed !important;
  color:#aeb5c3 !important;
}
.tw-booking .tw-return-trip.is-selected{
  background:#f3f5ff !important;
  color:var(--tw-text) !important;
  border-color:var(--tw-primary) !important;
  box-shadow:0 0 0 2px rgba(78,102,248,.08) !important;
}

/* Return yes/no options stay white; blue is only selection/hover accent. */
.tw-booking .tw-choice,
.tw-booking button.tw-choice{
  background:#fff !important;
  background-image:none !important;
  color:var(--tw-text) !important;
  border:1.5px solid #d8def0 !important;
}
.tw-booking .tw-choice:hover{
  background:#f3f5ff !important;
  border-color:var(--tw-primary) !important;
  color:var(--tw-primary) !important;
}
.tw-booking .tw-choice.is-selected{
  background:#fff !important;
  border-color:var(--tw-primary) !important;
  color:var(--tw-primary) !important;
  box-shadow:0 0 0 2px rgba(78,102,248,.07) !important;
}

/* Step captions in capitals, like the approved mockup. */
.tw-booking .tw-step-marker{
  text-transform:uppercase;
  letter-spacing:.035em;
  font-size:9px;
  font-weight:800;
}

/* Compact route cards closer to the mockup. */
.tw-booking .tw-public-direction__trips{
  gap:10px;
}
.tw-booking .tw-trip-btn{
  min-height:86px;
  padding:13px 8px;
}
.tw-booking .tw-trip-btn strong,
.tw-booking .tw-return-trip strong{
  font-size:16px;
}
.tw-booking .tw-trip-btn em,
.tw-booking .tw-return-trip em{
  margin-top:6px;
}

/* Navigation buttons: white outlined squares, not filled blue. */
.tw-booking .tw-nav__btn,
.tw-booking button.tw-nav__btn{
  background:#fff !important;
  color:var(--tw-text) !important;
  border:1px solid #dfe5f0 !important;
  box-shadow:none !important;
}
.tw-booking .tw-nav__btn:hover{
  color:var(--tw-primary) !important;
  background:#f8faff !important;
  border-color:#aab7ff !important;
}

/* More air between the top card and the wizard. */
.tw-booking .tw-wizard{
  margin-top:24px;
}

/* Keep primary CTA as the only large solid blue element. */
.tw-booking .tw-primary{
  background:var(--tw-primary) !important;
  color:#fff !important;
}

/* Choice / route content never inherits white button text from theme. */
.tw-booking .tw-trip-btn *,
.tw-booking .tw-return-trip *,
.tw-booking .tw-day-tab *,
.tw-booking .tw-choice *{
  text-shadow:none !important;
}

/* Tablet/mobile spacing */
@media(max-width:1099px){
  .tw-booking .tw-search-card{padding:20px}
}
@media(max-width:767px){
  .tw-booking .tw-search-card{
    padding:15px;
    border-radius:16px;
  }
  .tw-booking .tw-day-tab{min-height:68px}
}


/* v0.5 – spacing in summaries + checkout handoff */
.tw-booking .tw-order-summary{gap:18px !important}
.tw-booking .tw-summary-card{margin:0 !important}
.tw-booking .tw-summary-grand{margin-top:8px !important}
.tw-booking .tw-modal__content .tw-summary-card + .tw-summary-card{margin-top:18px !important}
.tw-booking .tw-modal__content .tw-summary-grand{margin-top:18px !important}
.tw-booking .tw-modal__customer{
  margin-top:26px !important;
  padding-top:22px !important;
  border-top:1px solid var(--tw-line);
  line-height:1.75;
}
.tw-booking .tw-checkout-status{
  border-radius:12px;
  padding:12px 14px;
  margin:0 0 12px;
  font-size:13px;
  font-weight:700;
}
.tw-booking .tw-checkout-status[hidden]{display:none}
.tw-booking .tw-checkout-status.is-error{
  background:#fff1f2;
  border:1px solid #fecdd3;
  color:#9f1239;
}
.tw-booking .tw-checkout-status.is-success{
  background:#f0fdf4;
  border:1px solid #bbf7d0;
  color:#166534;
}


/* =========================================================
   v0.8 – mobile stability + 2-column route layout
   ========================================================= */

/* On phones, keep both directions next to each other:
   left: Hel → Sopot, right: Sopot → Hel */
@media(max-width:767px){

  .tw-booking .tw-public-directions{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
    gap:10px !important;
    align-items:start !important;
  }

  .tw-booking .tw-public-directions > div{
    min-width:0 !important;
  }

  .tw-booking .tw-public-directions h4{
    min-height:32px;
    display:flex;
    align-items:flex-end;
    margin-bottom:7px !important;
    font-size:10px !important;
    line-height:1.25 !important;
  }

  .tw-booking .tw-public-direction__trips{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:8px !important;
  }

  .tw-booking .tw-trip-btn{
    width:100% !important;
    min-width:0 !important;
    min-height:82px !important;
    padding:10px 6px !important;
    margin:0 !important;
  }

  .tw-booking .tw-trip-btn strong{
    font-size:16px !important;
    line-height:1.1 !important;
  }

  .tw-booking .tw-trip-btn span{
    font-size:10px !important;
  }

  .tw-booking .tw-trip-btn em{
    font-size:9px !important;
    line-height:1.2 !important;
  }

  /* Slightly tighter top card on phones */
  .tw-booking .tw-search-card{
    padding:13px !important;
  }

  .tw-booking .tw-public-day{
    border:0 !important;
    box-shadow:none !important;
    overflow:visible !important;
  }

  .tw-booking .tw-public-day > header{
    margin-bottom:10px !important;
  }
}


/* v0.9 – coupon */
.tw-booking .tw-coupon-box{
  border:1px solid var(--tw-line);
  border-radius:16px;
  padding:15px;
  margin:16px 0;
  background:#fff;
}
.tw-booking .tw-coupon-box>div:first-child strong{display:block;font-size:14px}
.tw-booking .tw-coupon-box>div:first-child span{display:block;color:var(--tw-muted);font-size:12px;margin-top:3px}
.tw-booking .tw-coupon-input-row{display:flex;gap:8px;margin-top:12px}
.tw-booking .tw-coupon-code{
  flex:1;
  min-width:0;
  height:44px;
  border:1px solid var(--tw-line);
  border-radius:11px;
  padding:0 12px;
}
.tw-booking .tw-coupon-apply{
  border:1px solid var(--tw-primary);
  background:#fff;
  color:var(--tw-primary);
  border-radius:11px;
  padding:0 16px;
  font-weight:800;
  cursor:pointer;
}
.tw-booking .tw-coupon-message{font-size:12px;font-weight:700;margin-top:9px}
.tw-booking .tw-coupon-message[hidden]{display:none}
.tw-booking .tw-coupon-message.is-success{color:#168a49}
.tw-booking .tw-coupon-message.is-error{color:#cc3030}
.tw-booking .tw-summary-discount{
  display:flex;
  justify-content:space-between;
  gap:12px;
  border:1px dashed #b7c2ff;
  background:#f8faff;
  border-radius:13px;
  padding:12px 14px;
  color:#4e66f8;
  font-size:13px;
  font-weight:800;
}
@media(max-width:767px){
  .tw-booking .tw-coupon-input-row{flex-direction:column}
  .tw-booking .tw-coupon-apply{height:44px}
}


/* =========================================================
   v0.93 – UX accessibility / older users / mobile
   ========================================================= */

/* Comfortable touch targets and iOS-safe font sizing */
.tw-booking input[type="text"],
.tw-booking input[type="email"],
.tw-booking input[type="tel"],
.tw-booking input[type="number"],
.tw-booking select{
  min-height:52px;
  font-size:16px !important;
  line-height:1.3;
  border-radius:12px;
}

.tw-booking .tw-coupon-code{
  min-height:56px !important;
  height:56px !important;
  padding:0 16px !important;
  font-size:17px !important;
}

.tw-booking .tw-coupon-apply{
  min-height:56px;
  padding:0 20px;
  font-size:15px;
}

.tw-booking .tw-primary,
.tw-booking .tw-secondary,
.tw-booking [class*="tw-next-"],
.tw-booking [class*="tw-prev-"]{
  min-height:54px;
}

.tw-booking .tw-qty button,
.tw-booking .tw-ticket-row button,
.tw-booking button[data-action="plus"],
.tw-booking button[data-action="minus"]{
  min-width:48px !important;
  min-height:48px !important;
  width:48px;
  height:48px;
  font-size:20px;
}

/* Clear keyboard/touch focus */
.tw-booking button:focus-visible,
.tw-booking input:focus-visible,
.tw-booking select:focus-visible,
.tw-booking a:focus-visible{
  outline:3px solid rgba(78,102,248,.28) !important;
  outline-offset:2px;
}

/* More readable secondary text */
.tw-booking .tw-step-subtitle,
.tw-booking .tw-muted,
.tw-booking small{
  color:#5f697b;
}

/* Coupon result must be unmistakable */
.tw-booking .tw-coupon-message{
  font-size:14px !important;
  line-height:1.5;
  padding-top:2px;
}

.tw-booking .tw-summary-discount{
  font-size:14px;
}

/* Better tap feedback */
.tw-booking button,
.tw-booking .tw-trip-btn{
  -webkit-tap-highlight-color:rgba(78,102,248,.12);
  touch-action:manipulation;
}

/* Do not rely on tiny uppercase labels */
.tw-booking .tw-progress-label,
.tw-booking .tw-step-label{
  font-size:12px !important;
  letter-spacing:.03em !important;
}

@media(max-width:767px){
  .tw-booking{
    font-size:16px;
  }

  .tw-booking h2{
    line-height:1.15;
  }

  .tw-booking .tw-coupon-box{
    padding:16px !important;
  }

  .tw-booking .tw-coupon-box>div:first-child strong{
    font-size:16px;
  }

  .tw-booking .tw-coupon-box>div:first-child span{
    font-size:14px;
    line-height:1.45;
  }

  .tw-booking .tw-coupon-input-row{
    gap:10px;
  }

  .tw-booking .tw-coupon-apply{
    width:100%;
  }

  /* Comfortable spacing so buttons are not accidentally tapped */
  .tw-booking .tw-ticket-row{
    padding-top:15px !important;
    padding-bottom:15px !important;
  }
}


/* v0.94.91 – brak możliwości cofania klienta do dni z przeszłości */
.tw-nav__btn.is-disabled,
.tw-nav__btn:disabled{
    opacity:.35;
    cursor:not-allowed;
    pointer-events:none;
}


/* v0.99 – komunikat trybu konserwacyjnego */
.tw-maintenance-public{
  max-width:720px;
  margin:20px auto;
  padding:34px 24px;
  border:1px solid #dfe5f0;
  border-radius:20px;
  background:#fff;
  text-align:center;
  box-sizing:border-box;
  font-family:inherit;
}
.tw-maintenance-public__icon{
  width:64px;
  height:64px;
  margin:0 auto 14px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#f1f4ff;
  font-size:28px;
}
.tw-maintenance-public>span{
  display:block;
  color:#4e66f8;
  font-size:11px;
  font-weight:900;
  letter-spacing:.13em;
}
.tw-maintenance-public h2{
  margin:7px 0 8px;
  color:#172033;
  font-size:26px;
}
.tw-maintenance-public p{
  max-width:520px;
  margin:0 auto;
  color:#667085;
  font-size:14px;
  line-height:1.6;
}


/* =========================================================
   v1.0.3 – czytelniejsze kierunki rejsów
   ========================================================= */
.tw-booking .tw-public-direction h4{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:flex-end;
  gap:3px;
  min-height:48px;
  margin:0 0 10px;
  text-transform:none;
  letter-spacing:0;
}
.tw-booking .tw-route-start{
  display:block;
  color:#6f7890;
  font-size:10px;
  line-height:1.2;
  font-weight:850;
  letter-spacing:.10em;
  text-transform:uppercase;
}
.tw-booking .tw-route-name{
  display:block;
  color:#4e66f8;
  font-size:clamp(18px,1.5vw,22px);
  line-height:1.1;
  font-weight:900;
  letter-spacing:-.02em;
}
.tw-booking .tw-route-name b{
  color:#4e66f8;
  font-weight:900;
}
@media(max-width:767px){
  .tw-booking .tw-public-directions h4{
    min-height:56px !important;
    margin-bottom:9px !important;
    align-items:flex-start !important;
    justify-content:flex-end !important;
  }
  .tw-booking .tw-route-start{
    font-size:9px !important;
    line-height:1.15 !important;
    letter-spacing:.07em !important;
  }
  .tw-booking .tw-route-name{
    font-size:clamp(15px,4vw,18px) !important;
    line-height:1.12 !important;
    white-space:nowrap;
  }
}
@media(max-width:390px){
  .tw-booking .tw-route-start{
    font-size:8px !important;
  }
  .tw-booking .tw-route-name{
    font-size:15px !important;
  }
}


/* =========================================================
   v1.0.8 – dane do faktury
   ========================================================= */
.tw-booking .tw-invoice-box{
  margin-top:18px;
  border:1px solid #dfe5f0;
  border-radius:18px;
  background:#fff;
  overflow:hidden;
}
.tw-booking .tw-invoice-switch{
  display:flex;
  align-items:center;
  gap:13px;
  padding:17px 18px;
  cursor:pointer;
  user-select:none;
}
.tw-booking .tw-invoice-switch>input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.tw-booking .tw-invoice-switch-ui{
  position:relative;
  flex:0 0 auto;
  width:50px;
  height:30px;
  border-radius:999px;
  background:#d7ddeb;
  transition:.2s ease;
}
.tw-booking .tw-invoice-switch-ui:after{
  content:"";
  position:absolute;
  width:24px;
  height:24px;
  top:3px;
  left:3px;
  border-radius:50%;
  background:#fff;
  box-shadow:0 2px 5px rgba(23,32,51,.18);
  transition:.2s ease;
}
.tw-booking .tw-invoice-switch>input:checked + .tw-invoice-switch-ui{
  background:#4e66f8;
}
.tw-booking .tw-invoice-switch>input:checked + .tw-invoice-switch-ui:after{
  transform:translateX(20px);
}
.tw-booking .tw-invoice-switch strong{
  display:block;
  color:#172033;
  font-size:16px;
  line-height:1.25;
}
.tw-booking .tw-invoice-switch small{
  display:block;
  margin-top:2px;
  font-size:12px;
  line-height:1.4;
  color:#667085;
}
.tw-booking .tw-invoice-panel{
  padding:0 18px 18px;
  border-top:1px solid #eef1f6;
}
.tw-booking .tw-invoice-panel[hidden],
.tw-booking .tw-invoice-personal[hidden],
.tw-booking .tw-invoice-company[hidden]{
  display:none !important;
}
.tw-booking .tw-invoice-type{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  padding:16px 0;
}
.tw-booking .tw-invoice-type-btn{
  min-height:70px;
  padding:12px 14px;
  text-align:left;
  border:1px solid #dfe5f0;
  border-radius:14px;
  background:#fff;
  cursor:pointer;
}
.tw-booking .tw-invoice-type-btn strong{
  display:block;
  color:#172033;
  font-size:14px;
}
.tw-booking .tw-invoice-type-btn span{
  display:block;
  margin-top:3px;
  color:#667085;
  font-size:12px;
}
.tw-booking .tw-invoice-type-btn.is-active{
  border:2px solid #4e66f8;
  background:#f7f8ff;
  box-shadow:0 0 0 2px rgba(78,102,248,.06);
}
.tw-booking .tw-invoice-type-btn.is-active strong{
  color:#4e66f8;
}
.tw-booking .tw-invoice-hint{
  margin:0 0 12px;
  color:#667085;
  font-size:12px;
  line-height:1.55;
}
.tw-booking .tw-grid-wide{
  grid-column:1/-1;
}
.tw-booking .tw-nip-lookup{
  margin-bottom:10px;
}
.tw-booking .tw-nip-row{
  display:flex;
  gap:9px;
  margin-top:6px;
}
.tw-booking .tw-nip-row input{
  flex:1;
  min-width:0;
}
.tw-booking .tw-lookup-nip{
  min-height:52px;
  padding:0 16px;
  border:0;
  border-radius:12px;
  background:#4e66f8;
  color:#fff;
  font-size:13px;
  font-weight:850;
  cursor:pointer;
  white-space:nowrap;
}
.tw-booking .tw-lookup-nip:disabled{
  opacity:.6;
  cursor:wait;
}
.tw-booking .tw-nip-status{
  margin-top:8px;
  padding:10px 12px;
  border-radius:10px;
  font-size:12px;
  line-height:1.45;
  font-weight:700;
}
.tw-booking .tw-nip-status[hidden]{display:none}
.tw-booking .tw-nip-status.is-success{
  background:#eefbf4;
  color:#14713c;
}
.tw-booking .tw-nip-status.is-error{
  background:#fff0f0;
  color:#b42318;
}
@media(max-width:767px){
  .tw-booking .tw-invoice-switch{padding:16px}
  .tw-booking .tw-invoice-panel{padding:0 16px 16px}
  .tw-booking .tw-invoice-type{grid-template-columns:1fr}
  .tw-booking .tw-nip-row{flex-direction:column}
  .tw-booking .tw-lookup-nip{width:100%}
  .tw-booking .tw-grid-wide{grid-column:auto}
}


/* =========================================================
   v1.0.25 – status dnia, najbliższy rejs i prognoza pogody
   ========================================================= */
.tw-booking .tw-day-tab{
  position:relative;
  min-height:102px !important;
  overflow:hidden;
}
.tw-booking .tw-day-tab.is-status-available{background:rgba(31,169,90,.075)!important;border-color:rgba(31,169,90,.28)!important}
.tw-booking .tw-day-tab.is-status-soon{background:rgba(78,102,248,.065)!important;border-color:rgba(78,102,248,.22)!important}
.tw-booking .tw-day-tab.is-status-weather{background:rgba(220,67,67,.065)!important;border-color:rgba(220,67,67,.22)!important}
.tw-booking .tw-day-tab.is-status-season_end{background:rgba(74,85,104,.065)!important;border-color:rgba(74,85,104,.20)!important}
.tw-booking .tw-day-tab.is-status-closed{background:rgba(120,128,145,.055)!important}
.tw-booking .tw-day-tab.is-selected{border:2px solid var(--tw-primary)!important;box-shadow:0 0 0 2px rgba(78,102,248,.07)!important}
.tw-booking .tw-day-tab-status{
  display:flex;align-items:center;justify-content:center;gap:5px;margin-top:7px;
  font-size:8px;line-height:1;text-transform:uppercase;letter-spacing:.04em;font-weight:850
}
.tw-booking .tw-day-tab-status svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tw-booking .is-status-available .tw-day-tab-status{color:#168247}
.tw-booking .is-status-soon .tw-day-tab-status{color:#4e66f8}
.tw-booking .is-status-weather .tw-day-tab-status{color:#d74a4a}
.tw-booking .is-status-season_end .tw-day-tab-status{color:#596273}
.tw-booking .is-status-closed .tw-day-tab-status{color:#7a8495}

.tw-booking .tw-day-notice{
  display:grid;grid-template-columns:48px minmax(0,1fr);gap:13px;align-items:flex-start;
  margin:0 0 16px;padding:16px 17px;border:1px solid;border-radius:16px
}
.tw-booking .tw-day-notice__icon{width:48px;height:48px;display:grid;place-items:center;border-radius:13px}
.tw-booking .tw-day-notice__icon svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tw-booking .tw-day-notice__content>strong{display:block;font-size:16px;line-height:1.3;margin-top:1px}
.tw-booking .tw-day-notice__content p{margin:5px 0 0;font-size:12px;line-height:1.6;color:#687386}
.tw-booking .tw-day-notice.is-weather{background:#fff7f7;border-color:#f4cece}.tw-booking .tw-day-notice.is-weather .tw-day-notice__icon{background:#ffe7e7;color:#cc3e3e}
.tw-booking .tw-day-notice.is-soon{background:#f6f8ff;border-color:#d6ddff}.tw-booking .tw-day-notice.is-soon .tw-day-notice__icon{background:#e8edff;color:#4e66f8}
.tw-booking .tw-day-notice.is-season_end{background:#f7f8fa;border-color:#dce0e6}.tw-booking .tw-day-notice.is-season_end .tw-day-notice__icon{background:#e9edf2;color:#566171}
.tw-booking .tw-day-notice.is-closed{background:#fafbfc;border-color:#e3e6eb}.tw-booking .tw-day-notice.is-closed .tw-day-notice__icon{background:#edf0f4;color:#667085}
.tw-booking .tw-go-nearest{margin-top:11px;border:0!important;border-radius:10px!important;background:#4e66f8!important;color:#fff!important;padding:10px 14px!important;font-size:11px!important;font-weight:850!important;cursor:pointer}

.tw-booking .tw-season-end-note{display:flex;gap:10px;align-items:flex-start;margin:0 0 16px;padding:11px 13px;border-radius:13px;background:#f7f8fa;border:1px solid #e0e4e9}
.tw-booking .tw-season-end-note>span{width:28px;height:28px;display:grid;place-items:center;color:#596273}
.tw-booking .tw-season-end-note svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tw-booking .tw-season-end-note strong{display:block;font-size:12px;color:#293244}
.tw-booking .tw-season-end-note p{margin:2px 0 0;font-size:10px;line-height:1.5;color:#737d8e}

.tw-booking .tw-availability-wait{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 18px;align-items:center;margin:0 0 16px;padding:15px 16px;border:1px solid #dbe1ff;border-radius:15px;background:#fbfcff}
.tw-booking .tw-availability-wait>div:first-child strong{display:block;font-size:13px;color:#172033}
.tw-booking .tw-availability-wait>div:first-child span{display:block;margin-top:3px;font-size:10px;line-height:1.5;color:#6c778b}
.tw-booking .tw-availability-wait-form{display:flex;gap:7px}
.tw-booking .tw-availability-wait-form input{min-width:220px;height:39px;border:1px solid #d9dfeb;border-radius:9px;padding:0 10px;font-size:12px;background:#fff}
.tw-booking .tw-availability-wait-form button{height:39px;min-width:142px;border:0;border-radius:9px;padding:0 18px;background:#4e66f8;color:#fff;font-size:11px;font-weight:850;cursor:pointer;white-space:nowrap;line-height:1}
.tw-booking .tw-availability-wait-msg{grid-column:1/-1;padding:9px 10px;border-radius:9px;font-size:10px;font-weight:700}
.tw-booking .tw-availability-wait-msg[hidden]{display:none!important}
.tw-booking .tw-availability-wait-msg.is-success{background:#edf9f2;color:#167342}
.tw-booking .tw-availability-wait-msg.is-error{background:#fff1f1;color:#b73737}

@media(max-width:767px){
  .tw-booking .tw-day-tabs{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px!important}
  .tw-booking .tw-day-tab{min-height:100px!important;padding:9px 4px!important}
  .tw-booking .tw-day-tab strong{font-size:16px!important}
  .tw-booking .tw-day-tab-status{font-size:6.8px;gap:3px;letter-spacing:0}
  .tw-booking .tw-day-tab-status svg{width:12px;height:12px}
  .tw-booking .tw-day-notice{grid-template-columns:40px minmax(0,1fr);padding:14px;gap:10px}
  .tw-booking .tw-day-notice__icon{width:40px;height:40px}
  .tw-booking .tw-day-notice__content>strong{font-size:14px}
  .tw-booking .tw-day-notice__content p{font-size:11px}
  .tw-booking .tw-go-nearest{width:100%;line-height:1.3}
  .tw-booking .tw-availability-wait{grid-template-columns:1fr}
  .tw-booking .tw-availability-wait-form{display:grid;grid-template-columns:1fr}
  .tw-booking .tw-availability-wait-form input{min-width:0;width:100%;font-size:16px}
  .tw-booking .tw-availability-wait-form button{width:100%}
}

/* v1.0.26 – przycisk powiadomienia zawsze w jednej linii */
.tw-booking .tw-availability-wait-form button{white-space:nowrap!important}


/* =========================================================
   v1.0.27 – poprawki formularza powiadomień i CTA
   ========================================================= */

/* CTA najbliższego rejsu ma własny wiersz w boxie komunikatu. */
.tw-booking .tw-day-notice__action{
  grid-column:2;
  margin-top:-2px;
}
.tw-booking .tw-day-notice__action .tw-go-nearest{
  margin-top:0;
}

/* Desktop: pole e-mail i przycisk mają dokładnie tę samą wysokość
   oraz są ustawione centralnie względem siebie. */
@media(min-width:768px){
  .tw-booking .tw-availability-wait-form{
    display:grid;
    grid-template-columns:minmax(240px,1fr) auto;
    align-items:center;
    gap:8px;
  }

  .tw-booking .tw-availability-wait-form input,
  .tw-booking .tw-availability-wait-form button{
    height:52px!important;
    min-height:52px!important;
    max-height:52px!important;
    box-sizing:border-box!important;
    margin:0!important;
  }

  .tw-booking .tw-availability-wait-form input{
    padding:0 14px!important;
    line-height:52px!important;
  }

  .tw-booking .tw-availability-wait-form button{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    align-self:center!important;
    padding:0 20px!important;
    line-height:1!important;
    white-space:nowrap!important;
  }
}

/* Mobile: CTA "Przejdź do najbliższego..." wykorzystuje pełną szerokość boxa,
   a nie tylko kolumnę tekstową obok ikonki. */
@media(max-width:767px){
  .tw-booking .tw-day-notice__action{
    grid-column:1/-1;
    width:100%;
    margin-top:2px;
  }

  .tw-booking .tw-day-notice__action .tw-go-nearest{
    display:flex!important;
    width:100%!important;
    min-height:48px;
    align-items:center;
    justify-content:center;
    text-align:center;
    box-sizing:border-box;
    padding-left:14px!important;
    padding-right:14px!important;
  }
}

/* 1.0.34: departure points remain available throughout the booking steps. */
.tw-departure-maps { margin:0 0 18px; padding:14px 18px; background:#f8faff; border:1px solid #dfe5f0; border-radius:14px; }
.tw-departure-maps>strong { display:block; color:#172033; font-size:15px; }
.tw-departure-maps>div { display:flex; flex-wrap:wrap; gap:8px; }
.tw-departure-maps a { overflow-wrap:anywhere; }
@media(max-width:540px) { .tw-departure-maps a { width:100%; box-sizing:border-box; } }

/* 1.0.38: wspólny promień przycisków w obrębie systemu TW. */
.tw-booking :is(button, .button, .button-primary, .button-secondary, [role="button"], input[type="submit"], input[type="button"], input[type="reset"], a[class*="btn"], a.tw-link){border-radius:8px !important;}
