/* Public booking only. Pricing, dates and validation are owned by the existing controllers. */
.public-booking {
  --public-bg: #f7f8fa;
  --public-surface: #fff;
  --public-field: #f4f6f9;
  --public-text: #172338;
  --public-muted: #566277;
  --public-line: #e2e7ee;
  --public-accent: #283b80;
  --public-soft: #edf0fb;
  min-height: 100vh;
  margin: 0;
  background: var(--public-bg);
  color: var(--public-text);
  font: 16px/1.55 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}
.public-booking *, .public-booking *::before, .public-booking *::after {box-sizing: border-box;}
.public-booking .hidden, .public-booking [hidden] {display: none !important;}
.public-booking button, .public-booking a {touch-action: manipulation; -webkit-tap-highlight-color: transparent;}
.public-booking button:not(:disabled), .public-booking select {cursor: pointer;}
.public-booking :is(button,a,input,select):focus-visible {outline: 3px solid #8194e0; outline-offset: 4px;}
.public-booking button:disabled {cursor: not-allowed;}
.public-booking h1 {color: var(--public-text); font-size: 32px; font-weight: 550; line-height: 1.18; letter-spacing: -1px;}
.public-booking h2 {font-weight: 600;}
.public-booking :is(input,button,select) {font-family: inherit;}
.public-booking input::placeholder {color: #8b96a7; opacity: 1;}
.public-booking .text-teal-700, .public-booking .text-blue-700 {color: var(--public-accent);}
.public-booking .text-slate-500, .public-booking .text-slate-600 {color: var(--public-muted);}
.public-booking .text-slate-900, .public-booking .text-slate-950 {color: var(--public-text);}
.public-booking .font-extrabold {font-weight: 600;}
.public-booking .text-xs {font-size: 14px; line-height: 1.5;}
.public-booking .text-sm {font-size: 16px; line-height: 1.5;}
.public-header {background: #08244d; color: white;}
.public-header-inner {max-width: 1200px; margin: auto; padding: 22px 34px; display: flex; align-items: center; justify-content: space-between; gap: 20px;}
.public-logo {display: block; width: 154px; height: 32px; object-fit: contain;}
.public-header-link {display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 8px 17px; border: 1px solid #526077; border-radius: 30px; background: transparent; font-size: 15px; color: white; text-decoration: none;}
.public-header-link:hover {background: #15345f; border-color: #ff9000;}
.public-header-actions {display: flex; align-items: center; gap: 12px;}
.public-header-actions form {margin: 0;}
.public-language {position: relative;}
.public-language-select {display: flex; align-items: center; gap: 7px; min-height: 40px; padding: 7px 10px; border: 1px solid #526077; border-radius: 12px; background: #08244d; color: white; font-size: 15px; cursor: pointer; list-style: none;}
.public-language-select::-webkit-details-marker {display: none;}
.public-language-select:hover, .public-language[open] .public-language-select {background: #15345f; border-color: #ff9000;}
.public-language-select:focus-visible {outline: 3px solid #8194e0; outline-offset: 4px;}
.public-language-flag {width: 22px; height: 16px; flex: none; border-radius: 2px; box-shadow: 0 0 0 1px #ffffff30;}
.public-language-chevron {width: 12px; height: 12px; flex: none;}
.public-language[open] .public-language-chevron {transform: rotate(180deg);}
.public-language-options {position: absolute; right: 0; top: calc(100% + 8px); z-index: 60; min-width: 152px; padding: 5px; border: 1px solid #dce2eb; border-radius: 12px; background: white; box-shadow: 0 10px 30px #101c3526;}
.public-language-options button {display: flex; align-items: center; gap: 10px; width: 100%; min-height: 42px; padding: 8px 10px; border: 0; border-radius: 8px; background: white; color: #172338; text-align: left; font-size: 15px;}
.public-language-options button:hover, .public-language-options button[aria-current] {background: #edf0fb;}
@media (max-width: 480px) {
  .public-header-inner {flex-wrap: wrap; gap: 12px;}
  .public-header-actions {margin-left: auto; gap: 8px;}
  .public-header-actions .public-header-link {padding: 8px 12px;}
}
.public-main {max-width: 1200px; margin: 0 auto; padding: 30px 34px 48px; min-width: 0;}
.public-booking[data-public-page="change"] {display: flex; flex-direction: column;}
.public-booking[data-public-page="change"] > .public-main {width: 100%; flex: 1;}
.public-booking[data-public-page="change"] > .public-footer {width: calc(100% - 68px);}
.public-page-shell {min-width: 0;}
.public-layout {display: grid; grid-template-columns: minmax(0, 1fr) 286px; gap: 28px; align-items: start;}
.public-panel {background: var(--public-surface); border: 1px solid var(--public-line); border-radius: 20px; padding: 30px; min-width: 0; box-shadow: 0 3px 14px #17233803;}
.public-booking-panel {min-height: 456px; display: flex; flex-direction: column;}
.public-booking-panel > .public-panel-body {display: flex; flex-direction: column; flex: 1; min-width: 0;}
.public-booking .booking-step > p:first-child:not(.public-lead) {display: none;}
.public-booking .booking-step > h1 {margin-top: 0;}
.public-lead, .public-booking .booking-step > h1 + p {color: var(--public-muted); font-size: 16px; line-height: 1.65; margin-top: 12px; max-width: 58ch;}
.public-stepper {grid-column: 1 / -1; display: flex; align-items: center; gap: 12px; margin-bottom: 4px;}
.public-step-button {display: flex; align-items: center; gap: 9px; padding: 4px 0; border: 0; background: transparent; font-size: 15px; color: var(--public-muted); white-space: nowrap;}
.public-step-button:disabled {cursor: default;}
.public-step-number {width: 30px; height: 30px; border-radius: 50%; background: #e9edf3; display: grid; place-items: center; font-size: 14px; font-weight: 600;}
.public-step-button[aria-current="step"] {font-weight: 600; color: var(--public-accent);}
.public-step-button[aria-current="step"] .public-step-number {background: var(--public-accent); color: white;}
.public-step-button.is-complete .public-step-number {background: #e6efe9; color: #286955;}
.public-step-connector {flex: 1; height: 1px; background: var(--public-line);}
.public-mobile-progress {display: none;}
.public-booking .public-primary-button {display: inline-flex; align-items: center; justify-content: center; min-height: 51px; padding: 13px 26px; border: 0; border-radius: 16px; background: var(--public-accent); color: white; font-size: 16px; font-weight: 550; box-shadow: none;}
.public-booking .public-primary-button:hover:not(:disabled) {background: #354b95;}
.public-booking .public-primary-button:disabled {background: #e2e7ee; color: #79869a; cursor: not-allowed;}
.public-actions {margin-top: auto; padding-top: 30px; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;}
.public-actions > .public-primary-button {margin-left: auto; min-width: 168px;}
.public-back {display: inline-flex; align-items: center; gap: 8px; color: var(--public-muted); font-size: 16px; padding: 12px 0; border: 0; background: transparent; text-decoration: none;}
.public-back::before {content: "←"; font-size: 18px;}
.public-booking .public-field {position: relative; min-width: 0;}
.public-booking .public-field > label {display: block; position: relative; z-index: 1; font-size: 14px; font-weight: 500; color: var(--public-muted); margin: 0 16px -32px; padding-top: 11px; pointer-events: none;}
.public-booking .public-field > :is(input:not([type=hidden]),select),
.public-booking .public-field > div > :is(#dropoff-trigger,#pickup-trigger) {width: 100%; min-width: 0; min-height: 82px; padding: 35px 16px 13px; margin: 0; border: 1px solid var(--public-line); border-radius: 16px; background: var(--public-field); color: var(--public-text); font-size: 17px; font-weight: 450; box-shadow: none;}
.public-booking .public-field > div.relative {margin-top: 0;}
.public-booking .public-field > :is(input,select):focus,
.public-booking .public-field :is(#dropoff-trigger,#pickup-trigger):focus-visible {border-color: #8f9dcc; background: white;}
.public-booking .public-field input[readonly], .public-booking .public-field button:disabled {color: var(--public-muted); background: #eceff3;}
.public-booking .public-date-display {overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;}
.public-booking .public-registration-label {display: block; font-size: 15px; font-weight: 500; color: var(--public-muted); margin-bottom: 10px;}
.public-plate {display: flex; overflow: hidden; border: 1px solid var(--public-line); border-radius: 14px; background: white;}
.public-plate:focus-within {outline: 3px solid #8194e0; outline-offset: 3px;}
.public-plate-country {display: grid; place-items: center; width: 42px; flex: none; color: white; background: #255eb0; font-size: 16px;}
.public-plate-country--norway {display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; font-size: 18px; font-weight: 700; line-height: 1;}
.public-booking .public-plate input {border: 0; border-radius: 0; margin: 0; background: transparent; width: 100%; min-width: 0; font-size: 29px; font-weight: 550; letter-spacing: 2px; padding: 17px 20px; outline: none; box-shadow: none;}
.public-booking[data-public-page="booking"] .public-plate input {font-weight: 650;}
.public-booking .public-plate input[readonly] {color: var(--public-muted); background: var(--public-field);}
.public-booking #vehicle-summary-card {border: 0; border-top: 1px solid var(--public-line); border-radius: 0; padding: 22px 0 0; margin-top: 24px; background: transparent;}
.public-booking #vehicle-summary-title {font-size: 16px; font-weight: 550; white-space: normal;}
.public-booking #vehicle-summary-status {font-weight: 500;}
.public-booking #vehicle-lookup-status {font-size: 15px; width: 100%;}
.public-booking #vehicle-lookup-button {min-height: 44px; font-size: 15px; padding: 10px 18px;}
.public-booking .public-services {display: grid; grid-template-columns: 1fr; gap: 0; overflow: hidden; border: 1px solid var(--public-line); border-radius: 16px;}
.public-booking .public-service {display: flex; align-items: center; gap: 14px; min-height: 86px; border: 0; border-bottom: 1px solid var(--public-line); border-radius: 0; padding: 19px; background: white; cursor: pointer;}
.public-booking .public-service:last-child {border-bottom: 0;}
.public-booking .public-service:has(input:checked) {background: var(--public-soft);}
.public-booking .public-service:has(input:disabled) {cursor: default;}
.public-booking .public-service > input[type=checkbox] {order: 2; margin-left: auto;}
.public-booking .public-service > span {flex: 1;}
.public-booking .public-service::before {content: "+"; color: #8591a8; border: 1px solid var(--public-line); width: 30px; height: 30px; border-radius: 10px; display: grid; place-items: center; flex: none; font-size: 19px;}
.public-booking .public-service:has(input:checked)::before {content: "✓"; color: var(--public-accent);}
.public-booking input[type=checkbox] {accent-color: var(--public-accent); width: 21px; height: 21px; flex: none;}
.public-booking .public-note, .public-booking #arrival-flight-help {border: 0; background: #eef1f5; color: #526075; border-radius: 12px; font-size: 14px; font-weight: 400;}
.public-booking #arrival-flight-help {padding: 12px 14px;}
.public-booking #arrival-flight-help .font-semibold {font-weight: 500;}
.public-booking .public-terms {background: transparent; border: 0; padding: 0; margin-top: 24px;}
.public-booking .public-terms label {align-items: center; min-height: 44px; font-size: 15px;}
.public-booking #tour_operator_id, .public-booking [data-vehicle-manual-panel] select {border: 1px solid var(--public-line); border-radius: 16px; min-height: 54px; font-size: 16px;}
.public-summary {min-width: 0; position: sticky; top: 24px; padding: 23px; border: 1px solid var(--public-line); border-radius: 20px; background: white;}
.public-summary h2 {font-size: 16px; font-weight: 550;}
.public-summary #summary-placeholder {border: 0; background: var(--public-field); padding: 22px 16px; border-radius: 12px; font-size: 15px; line-height: 1.6;}
.public-summary #summary-total {font-size: 26px; font-weight: 550; letter-spacing: -.7px;}
.public-summary :is(#summary-total,#change-summary-total) {font-variant-numeric: tabular-nums; white-space: nowrap;}
.public-summary #summary-content > div:first-child {padding: 0; background: transparent; grid-template-columns: 1fr; gap: 16px; margin-bottom: 22px;}
.public-summary #summary-content > div:first-child > div {grid-column: auto;}
.public-summary #summary-content > div:first-child p + p {font-weight: 500; font-size: 16px; margin-top: 3px;}
.public-summary-head, .public-mobile-summary-toggle {display: none;}
.public-summary-footnote {border-top: 1px solid var(--public-line); padding-top: 17px; margin-top: 19px; font-size: 14px; line-height: 1.6; color: var(--public-muted);}
.public-summary .public-summary-car {font-size: 15px; padding-bottom: 17px; margin-top: 17px; border-bottom: 1px solid var(--public-line);}
.public-summary-car strong {display: block; font-weight: 550; font-size: 16px;}
.public-summary-car span {color: var(--public-muted);}
.public-mobile-summary-slot {display: none; width: 100%;}
.public-footer {max-width: 1132px; margin: 0 auto; padding: 0 0 30px; color: var(--public-muted); font-size: 14px; display: flex; justify-content: space-between; gap: 16px;}
.public-login {max-width: 540px; margin: 24px auto; padding: 36px;}
.public-login form {grid-template-columns: 1fr;}
.public-login .public-primary-button {width: 100%;}
.public-login form > div {grid-column: auto;}
.public-reference {font-size: 14px; letter-spacing: .4px; color: var(--public-muted); margin-bottom: 10px;}
.public-edit-title {margin-bottom: 24px;}
.public-edit-contact {font-size: 16px; color: var(--public-muted); margin: 15px 0 27px; overflow-wrap: anywhere;}
.public-edit-cancel {display: inline-flex; align-items: center; justify-content: center; min-height: 44px; margin-bottom: 20px; padding: 10px 18px; border-radius: 12px; background: var(--public-line); color: var(--public-text); font-size: 16px; font-weight: 600; text-decoration: none;}
.public-edit-cancel:hover {background: #d5dce6;}
.public-edit-overview {border: 1px solid var(--public-line); border-radius: 16px; overflow: hidden;}
.public-edit-row {display: flex; align-items: center; gap: 20px; justify-content: space-between; padding: 18px 20px; background: white;}
.public-edit-row + .public-edit-row {border-top: 1px solid var(--public-line);}
.public-edit-row small {display: block; font-size: 14px; color: var(--public-muted); margin-bottom: 4px;}
.public-edit-row strong {display: block; font-size: 16px; font-weight: 500; overflow-wrap: anywhere;}
.public-edit-row button {flex: none; font-size: 15px; color: var(--public-accent); min-height: 44px; padding: 6px;}
.public-edit-row button:disabled {color: var(--public-muted);}
.public-edit-form {display: block; margin: 0;}
.public-edit-form [data-edit-section] {margin: 0 0 24px;}
.public-edit-form [data-edit-section] > h2 {font-size: 22px; letter-spacing: -.4px; font-weight: 500; margin-bottom: 20px;}
.public-edit-period {display: contents;}
.public-edit-period > div {display: contents;}
.public-edit-period > h2 {display: none;}
.public-edit-form [data-edit-section] > .public-edit-date-fields {display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 0;}
.public-edit-date-fields > div:last-child:has(#arrival_flight_number) {grid-column: 1 / -1;}
.public-edit-controls {display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 26px;}
.public-edit-controls .public-primary-button {width: auto; margin-left: auto;}
.public-booking #terms-modal > div {border-radius: 20px; padding: 26px;}
.public-booking #step-error {font-size: 15px; border-radius: 12px;}
.public-booking .public-calendar {border-radius: 16px !important; padding: 17px !important;}
.public-booking .public-calendar [data-nav] {width: 34px !important; height: 34px !important; border-radius: 10px !important;}
.public-booking .public-calendar [data-date] {border-radius: 10px !important;}
@media (max-width: 820px) {
  .public-main {padding: 24px 22px 34px;}
  .public-layout {gap: 22px; grid-template-columns: minmax(0,1fr) 250px;}
  .public-panel {padding: 24px;}
  .public-summary {padding: 20px;}
  .public-footer {padding: 0 22px 26px;}
  .public-booking[data-public-page="change"] > .public-footer {width: 100%;}
  .public-step-button {font-size: 14px; gap: 6px;}
  .public-stepper {gap: 7px;}
}
@media (max-width: 700px) {
  .public-booking {background: white;}
  .public-header-inner {padding: 18px 22px; gap: 10px;}
  .public-logo {width: 138px; height: 29px;}
  .public-header-link {font-size: 14px; min-height: 36px; padding: 7px 12px;}
  .public-main {padding: 23px 24px 28px;}
  .public-layout {display: block;}
  .public-stepper {display: none;}
  .public-mobile-progress {display: block; margin-bottom: 28px;}
  .public-mobile-progress > div:first-child {display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 14px; min-height: 30px; font-size: 14px; color: var(--public-muted);}
  .public-mobile-progress .public-back {padding: 0; min-height: 36px; font-size: 15px;}
  .public-progress-bars {display: flex; gap: 5px;}
  .step-bar {height: 3px; flex: 1; border-radius: 3px;}
  .public-panel {padding: 0; border: 0; border-radius: 0; box-shadow: none;}
  .public-booking-panel {min-height: 440px;}
  .public-booking h1 {font-size: 30px; max-width: 17ch; line-height: 1.16;}
  .public-lead, .public-booking .booking-step > h1 + p {max-width: 40ch;}
  .public-booking .booking-step > .grid {grid-template-columns: 1fr 1fr; gap: 12px;}
  .public-booking .booking-step > .grid:has(#first_name) > div:has(input[type=email]) {grid-column: 1 / -1;}
  .public-booking .booking-step > .grid > div:has(#arrival_flight_number) {grid-column: 1 / -1;}
  .public-booking .booking-step > .public-services {grid-template-columns: 1fr; gap: 0;}
  .public-booking .public-field > :is(input:not([type=hidden]),select), .public-booking .public-field > div > :is(#dropoff-trigger,#pickup-trigger) {font-size: 17px; min-height: 80px; background: white;}
  .public-booking .public-field:has(#dropoff-wrap), .public-booking .public-field:has(#pickup-wrap) {grid-column: 1 / -1;}
  .public-booking .public-field:has(#dropoff-time), .public-booking .public-field:has(#pickup-time) {grid-column: 1 / -1;}
  .public-actions {padding-top: 28px; gap: 0;}
  .public-actions > .public-primary-button {width: 100%; min-height: 55px; font-size: 16px; margin: 0;}
  .public-actions > #prev-step {display: none;}
  .public-mobile-summary-slot:empty {display: none;}
  .public-mobile-summary-slot {display: block;}
  .public-summary {position: static; background: transparent; border: 0; border-top: 1px solid var(--public-line); border-radius: 0; padding: 18px 0; margin: 0; width: 100%;}
  .public-summary-head {display: flex; align-items: center; justify-content: space-between; gap: 12px;}
  .public-summary-head small {display: block; font-size: 14px; color: var(--public-muted);}
  .public-summary-head strong {display: block; font-size: 24px; font-weight: 550; letter-spacing: -.6px; font-variant-numeric: tabular-nums;}
  .public-mobile-summary-toggle {display: block; color: var(--public-accent); font-size: 14px; min-height: 44px; padding: 8px 0 8px 8px;}
  .public-summary.is-collapsed .public-summary-body {display: none;}
  .public-summary .public-summary-body {padding-top: 14px;}
  .public-summary h2, .public-summary-car, .public-summary-footnote {display: none;}
  .public-summary.is-empty, .public-summary.is-unpriced:not(.is-pending):not(.is-error) {display: none;}
  .public-summary.is-unpriced .public-summary-head {display: none;}
  .public-summary.is-unpriced .public-summary-body {display: block; padding: 0;}
  .public-summary #summary-placeholder {margin-top: 0; padding: 14px;}
  .public-summary #summary-content > div:first-child {display: grid; grid-template-columns: 1fr 1fr; gap: 12px;}
  .public-summary #summary-content > div:last-child {display: none;}
  .public-footer {border-top: 1px solid var(--public-line); margin: 16px 24px 0; padding: 22px 0; flex-direction: column; gap: 5px; font-size: 13px;}
  .public-booking[data-public-page="change"] > .public-footer {width: auto;}
  .public-login {margin: 20px 0;}
  .public-login .public-primary-button {min-height: 55px;}
  .public-edit-title {margin-top: 10px;}
  .public-edit-contact {font-size: 15px;}
  .public-edit-row {padding: 17px 14px; gap: 10px;}
  .public-edit-row strong {font-size: 16px;}
  .public-edit-controls {flex-wrap: wrap; gap: 0; margin-top: 18px;}
  .public-edit-controls > .public-primary-button {width: 100%; min-height: 55px; order: 1;}
  .public-edit-summary-slot {margin-top: 26px;}
  .public-edit-form [data-edit-section] > .public-edit-date-fields {grid-template-columns: 1fr;}
}
@media (prefers-reduced-motion: reduce) { .public-booking * {scroll-behavior: auto !important; transition: none !important;} }
@media (max-width: 480px) {
  .public-header-inner {padding: 16px;}
  .public-logo {width: 112px;}
  .public-header-actions .public-header-link, .public-language-select {font-size: 14px;}
}
@media print {
  .public-header, .public-footer {display: none;}
}
