:root{
    color-scheme:light;
    --bg:#f4f6f8;
    --card:#ffffff;
    --text:#17202a;
    --muted:#68737d;
    --border:#d9dfe5;
    --accent:#1769e0;
    --accent-dark:#0f55bd;
    --ok:#067647;
    --ok-bg:#ecfdf3;
    --danger:#b42318;
    --danger-bg:#fef3f2;
    --note:#1d4ed8;
    --note-bg:#eff6ff;
}
*{box-sizing:border-box}
body{
    margin:0;
    font-family:Arial,Helvetica,sans-serif;
    background:var(--bg);
    color:var(--text);
}
a{color:var(--accent)}
.psf-shell{
    width:min(1180px,calc(100% - 28px));
    margin:28px auto;
}
.card,.hero-card,.stat-card{
    background:var(--card);
    border:1px solid var(--border);
    border-radius:16px;
    box-shadow:0 8px 30px rgba(0,0,0,.05);
}
.card{padding:24px}
.hero-card{padding:28px;margin-bottom:18px}
.stat-card{padding:20px}
.narrow{max-width:560px;margin:50px auto}
h1{margin:0 0 8px;font-size:28px}
h2{margin:0 0 8px;font-size:21px}
h3{margin:0 0 10px;font-size:17px}
p{line-height:1.5}
.muted{color:var(--muted)}
.small{font-size:13px}
.eyebrow{
    font-size:12px;
    font-weight:800;
    letter-spacing:.08em;
    color:var(--accent);
    margin-bottom:8px;
}
.brandtext{font-size:18px}
.brandmark{
    width:52px;height:52px;
    display:flex;align-items:center;justify-content:center;
    border-radius:14px;background:var(--accent);color:#fff;
    font-weight:800;margin-bottom:16px;
}
.page-title{margin-top:5px}
.backlink{font-size:13px;text-decoration:none}
.topbar{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:16px;
    margin-bottom:18px;
}
.userbox{text-align:right}
.dashboard{display:grid;gap:18px}
.stat-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px;
    margin-bottom:18px;
}
.stat-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.stat-number{font-size:30px;font-weight:800}
.stat-label{font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.stat-text{font-size:20px;font-weight:800;margin-top:5px;text-transform:capitalize}
.split-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:18px;
}
.top-gap{margin-top:18px}
.section-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:16px;
    margin-bottom:14px;
}
label{display:block;font-weight:700;margin:15px 0 7px}
input,select,textarea{
    width:100%;
    padding:11px 12px;
    border:1px solid var(--border);
    border-radius:10px;
    font:inherit;
    background:#fff;
    color:var(--text);
}
textarea{resize:vertical}
input:focus,select:focus,textarea:focus{
    outline:2px solid rgba(23,105,224,.16);
    border-color:var(--accent);
}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.button{
    display:inline-block;
    margin-top:18px;
    border:0;
    border-radius:10px;
    padding:11px 17px;
    text-decoration:none;
    font:inherit;
    font-weight:700;
    cursor:pointer;
}
.button.primary{background:var(--accent);color:#fff}
.button.primary:hover{background:var(--accent-dark)}
.button.secondary{background:#eef2f6;color:var(--text)}
.button.compact{padding:8px 12px;margin-top:8px}
.full{width:100%}
.alert{
    padding:12px 14px;
    border-radius:10px;
    margin:14px 0;
    line-height:1.45;
}
.alert.ok{background:var(--ok-bg);color:var(--ok)}
.alert.error{background:var(--danger-bg);color:var(--danger)}
.alert.note{background:var(--note-bg);color:var(--note)}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse}
th,td{
    padding:11px 10px;
    border-bottom:1px solid #e5e7eb;
    text-align:left;
    vertical-align:top;
}
th{font-size:12px;color:var(--muted);background:#f8fafc}
td.right,th.right{text-align:right}
.badge{
    display:inline-block;
    padding:4px 8px;
    border-radius:999px;
    background:#eef2f6;
    font-size:12px;
    text-transform:capitalize;
}
.empty{
    padding:18px;
    border:1px dashed var(--border);
    border-radius:12px;
    color:var(--muted);
    text-align:center;
}
.soft{
    border:0;
    border-top:1px solid #e5e7eb;
    margin:22px 0;
}
.checkline{
    display:flex;
    align-items:center;
    gap:9px;
    font-weight:600;
}
.checkline input{width:auto}
.checkline.tall{margin-top:38px}
.progress{
    height:10px;
    background:#eef2f6;
    border-radius:999px;
    overflow:hidden;
    margin:14px 0 6px;
}
.progress span{
    display:block;
    height:100%;
    background:var(--accent);
}
.checklist{display:grid;gap:7px;margin-top:15px}
.checkitem{
    display:flex;
    align-items:center;
    gap:9px;
    padding:8px 10px;
    border-radius:9px;
    background:#f8fafc;
}
.checkitem.done{color:var(--ok);background:var(--ok-bg)}
.inline-details summary{cursor:pointer;color:var(--accent)}
.mini-form{
    min-width:210px;
    padding-top:8px;
}
.mini-form label{margin-top:9px}
@media(max-width:800px){
    .split-grid,.stat-grid.three,.grid3{grid-template-columns:1fr}
}
@media(max-width:600px){
    .psf-shell{margin:16px auto}
    .card,.hero-card{padding:18px}
    .grid2{grid-template-columns:1fr}
    .topbar{display:block}
    .userbox{text-align:left;margin-top:10px}
    .section-head{display:block}
}

/* ============================================================
   Step 2D-A - Hotel Partner Portal / Setup Wizard
   ============================================================ */

.site-header{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:20px;
    margin-bottom:24px;
}
.brand-line,
.brand-link{
    font-size:19px;
    font-weight:800;
    color:var(--text);
    text-decoration:none;
}
.account-nav{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:14px;
    flex-wrap:wrap;
    font-size:14px;
}
.portal-main{display:block}
.page-intro{margin-bottom:20px}
.page-intro h1{margin-bottom:6px}
.button-row{
    display:flex;
    align-items:center;
    gap:10px;
    flex-wrap:wrap;
    margin-top:18px;
}
.button-row .button{margin-top:0}
.hotel-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:18px;
}
.hotel-card{
    background:var(--card);
    border:1px solid var(--border);
    border-radius:16px;
    padding:22px;
    box-shadow:0 8px 30px rgba(0,0,0,.05);
}
.hotel-card-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:16px;
}
.hotel-card h2{margin:4px 0 5px}
.status-pill{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:28px;
    padding:5px 10px;
    border-radius:999px;
    background:#eef2f6;
    color:#344054;
    font-size:12px;
    font-weight:700;
    text-transform:capitalize;
    white-space:nowrap;
}
.setup-summary{margin:22px 0}
.setup-summary-row{
    display:flex;
    justify-content:space-between;
    gap:12px;
    margin-bottom:7px;
    font-size:14px;
}
.hotel-meta{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:12px;
    margin:18px 0 0;
}
.hotel-meta div{
    padding:11px;
    background:#f8fafc;
    border-radius:10px;
}
.hotel-meta dt{
    color:var(--muted);
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.hotel-meta dd{
    margin:4px 0 0;
    font-size:13px;
    font-weight:700;
    text-transform:capitalize;
}
.hotel-setup-header{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:20px;
}
.setup-meter{
    display:flex;
    flex-direction:column;
    align-items:flex-end;
}
.setup-meter strong{font-size:30px}
.progress.large{
    height:12px;
    margin:14px 0 22px;
}
.setup-layout{
    display:grid;
    grid-template-columns:280px minmax(0,1fr);
    gap:20px;
    align-items:start;
}
.setup-nav{
    position:sticky;
    top:18px;
    background:var(--card);
    border:1px solid var(--border);
    border-radius:16px;
    padding:18px;
    box-shadow:0 8px 30px rgba(0,0,0,.04);
}
.setup-nav h2{
    font-size:17px;
    margin-bottom:14px;
}
.setup-nav-item{
    display:flex;
    align-items:center;
    gap:10px;
    padding:10px 8px;
    border-top:1px solid #eef2f6;
}
.setup-nav-item:first-of-type{border-top:0}
.setup-nav-item.complete{color:var(--ok)}
.setup-nav-item.progressing{color:#9a6700}
.setup-icon{
    width:22px;
    height:22px;
    border-radius:50%;
    background:#eef2f6;
    display:flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
    font-size:12px;
    font-weight:800;
}
.setup-nav-item.complete .setup-icon{
    background:var(--ok-bg);
}
.setup-nav-copy{
    display:flex;
    min-width:0;
    flex:1;
    flex-direction:column;
    gap:2px;
}
.setup-nav-copy span{
    font-size:11px;
    color:var(--muted);
    text-transform:capitalize;
}
.setup-content{min-width:0}
.locked-fields{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
    padding:14px;
    margin:15px 0 20px;
    border-radius:12px;
    background:#f8fafc;
}
.locked-fields div{
    display:flex;
    flex-direction:column;
    gap:4px;
}
.locked-fields strong{text-transform:capitalize}
.contact-list{
    border-top:1px solid #e5e7eb;
}
.contact-row{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:18px;
    padding:14px 0;
    border-bottom:1px solid #e5e7eb;
}
.contact-name{
    font-weight:800;
    margin-bottom:4px;
}
.mini-badge{
    display:inline-block;
    margin-left:6px;
    padding:3px 7px;
    border-radius:999px;
    background:var(--ok-bg);
    color:var(--ok);
    font-size:10px;
    vertical-align:middle;
}
.text-button{
    border:0;
    background:transparent;
    padding:5px;
    font:inherit;
    cursor:pointer;
}
.danger-link{color:var(--danger)}
.checkbox-cell{
    display:flex;
    align-items:flex-end;
    padding-bottom:10px;
}
.checkbox-cell .checkline{margin:0}

@media(max-width:900px){
    .hotel-grid{grid-template-columns:1fr}
    .setup-layout{grid-template-columns:1fr}
    .setup-nav{position:static}
}
@media(max-width:700px){
    .site-header,
    .hotel-setup-header{
        display:block;
    }
    .account-nav{
        justify-content:flex-start;
        margin-top:10px;
    }
    .setup-meter{
        align-items:flex-start;
        margin-top:12px;
    }
    .hotel-meta,
    .locked-fields{
        grid-template-columns:1fr;
    }
}


/* ============================================================
   Step 2D-B - Amenities, Photos, Room Types
   ============================================================ */

.setup-nav-link{
    color:inherit;
    text-decoration:none;
}
.setup-nav-link:hover strong{
    color:var(--accent);
}
.setup-step-label{
    margin-left:auto;
    font-size:11px;
    color:var(--muted);
    white-space:nowrap;
}
.amenity-group,
.room-amenities{
    border:1px solid #e4e7ec;
    border-radius:12px;
    padding:16px;
    margin:16px 0;
}
.amenity-group legend,
.room-amenities legend{
    padding:0 7px;
    font-weight:800;
}
.amenity-row{
    display:grid;
    grid-template-columns:minmax(180px, .8fr) minmax(260px, 1.2fr);
    gap:14px;
    align-items:start;
    padding:12px 0;
    border-top:1px solid #eef2f6;
}
.amenity-row:first-of-type{border-top:0}
.amenity-main{
    display:flex;
    align-items:center;
    gap:9px;
    margin:8px 0 0;
    font-weight:700;
}
.amenity-main input{width:auto}
.amenity-details{
    display:grid;
    grid-template-columns:auto minmax(160px,1fr) minmax(160px,1fr);
    gap:9px;
    align-items:center;
}
.amenity-details input{margin:0}
.amenity-details .checkline{margin:0}
.photo-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:16px;
    margin-bottom:18px;
}
.photo-card{
    overflow:hidden;
    border:1px solid #e4e7ec;
    border-radius:13px;
    background:#fff;
}
.photo-frame{
    aspect-ratio:16 / 10;
    background:#eef2f6;
    overflow:hidden;
}
.photo-frame img{
    width:100%;
    height:100%;
    object-fit:cover;
    display:block;
}
.photo-card-body{padding:13px}
.photo-card-title{
    font-weight:800;
    text-transform:capitalize;
    margin-bottom:4px;
}
.photo-actions{
    display:flex;
    gap:10px;
    align-items:center;
    flex-wrap:wrap;
    margin-top:10px;
}
.completion-form{
    margin-top:18px;
    padding-top:18px;
    border-top:1px solid #e5e7eb;
}
.room-list{
    display:grid;
    gap:10px;
    margin-bottom:18px;
}
.room-card{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:18px;
    padding:14px;
    border:1px solid #e4e7ec;
    border-radius:12px;
    background:#fff;
}
.room-card.inactive{
    opacity:.62;
    background:#f8fafc;
}
.room-title{
    font-weight:800;
    margin-bottom:4px;
}
.room-actions{
    display:flex;
    gap:10px;
    align-items:center;
    flex-wrap:wrap;
    white-space:nowrap;
}
.room-actions form{margin:0}
.compact-grid{
    margin:16px 0;
    align-items:center;
}
.checkbox-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px 18px;
}
input[type="file"]{
    padding:9px;
    background:#fff;
}

@media(max-width:900px){
    .amenity-row{
        grid-template-columns:1fr;
    }
    .amenity-details{
        grid-template-columns:1fr;
    }
}
@media(max-width:700px){
    .photo-grid,
    .checkbox-grid{
        grid-template-columns:1fr;
    }
    .room-card{
        display:block;
    }
    .room-actions{
        margin-top:10px;
    }
}


/* ============================================================
   Organization owner / administrator management
   ============================================================ */

.org-user-list{
    display:grid;
    gap:12px;
}
.org-user-card{
    border:1px solid #e4e7ec;
    border-radius:12px;
    padding:14px;
    background:#fff;
}
.org-user-summary{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:14px;
}
.org-user-badges{
    display:flex;
    gap:7px;
    flex-wrap:wrap;
    justify-content:flex-end;
}
.org-user-details{
    margin-top:12px;
    padding-top:10px;
    border-top:1px solid #eef2f6;
}
.org-user-details summary{
    cursor:pointer;
    color:var(--accent);
    font-weight:700;
}
.org-user-edit-form{
    padding-top:8px;
}
.danger-zone{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    margin-top:20px;
    padding:14px;
    border:1px solid #fecdca;
    border-radius:11px;
    background:#fff7f6;
}
.danger-zone form{margin:0}
.danger-button{
    margin-top:0;
    background:#b42318;
    color:#fff;
}
.danger-button:hover{
    background:#912018;
}

@media(max-width:700px){
    .org-user-summary,
    .danger-zone{
        display:block;
    }
    .org-user-badges{
        justify-content:flex-start;
        margin-top:9px;
    }
    .danger-zone form{
        margin-top:12px;
    }
}


/* ============================================================
   Password management
   ============================================================ */

.auth-page{
    min-height:70vh;
    display:flex;
    align-items:flex-start;
    justify-content:center;
}
.auth-card{
    width:min(520px,100%);
}
.auth-links{
    margin:16px 0 0;
    text-align:center;
    font-size:14px;
}
.account-page{
    display:flex;
    justify-content:center;
}
.account-card{
    width:min(680px,100%);
}
.account-identity{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin:18px 0;
}
.account-identity div{
    display:flex;
    flex-direction:column;
    gap:4px;
    padding:12px;
    border-radius:10px;
    background:#f8fafc;
}
.password-reset-panel{
    margin-top:20px;
    padding:14px;
    border:1px solid #dbe5f0;
    border-radius:11px;
    background:#f8fbff;
}
.password-reset-form{
    margin-top:10px;
}
.password-reset-form .button{
    margin-top:12px;
}

@media(max-width:700px){
    .account-identity{
        grid-template-columns:1fr;
    }
}


/* ============================================================
   Hotel-specific users & access
   ============================================================ */

.hotel-admin-actions{
    display:flex;
    justify-content:flex-end;
    margin:-6px 0 18px;
}
.setup-users-link{
    margin-top:6px;
    text-decoration:none;
}
.hotel-user-list{
    display:grid;
    gap:12px;
}
.hotel-user-card{
    border:1px solid #e4e7ec;
    border-radius:12px;
    padding:14px;
    background:#fff;
}
.hotel-user-summary{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:14px;
}
.hotel-user-badges{
    display:flex;
    gap:7px;
    flex-wrap:wrap;
    justify-content:flex-end;
}
.hotel-user-details{
    margin-top:12px;
    padding-top:10px;
    border-top:1px solid #eef2f6;
}
.hotel-user-details summary{
    cursor:pointer;
    color:var(--accent);
    font-weight:700;
}
.hotel-user-management-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:16px;
    margin-top:14px;
}
.hotel-user-panel{
    padding:15px;
    border:1px solid #e4e7ec;
    border-radius:11px;
    background:#f8fafc;
}
.hotel-user-panel h3{
    margin-bottom:10px;
}
.remove-access-form{
    margin-top:16px;
    padding-top:14px;
    border-top:1px solid #e4e7ec;
}

@media(max-width:850px){
    .hotel-user-management-grid{
        grid-template-columns:1fr;
    }
}
@media(max-width:700px){
    .hotel-user-summary{
        display:block;
    }
    .hotel-user-badges{
        justify-content:flex-start;
        margin-top:9px;
    }
    .hotel-admin-actions{
        justify-content:flex-start;
    }
}


/* ============================================================
   Step 2D-C - Parking + Shuttle
   ============================================================ */

.field-help{
    margin-top:-6px;
    font-size:12px;
    color:var(--muted);
}
.setting-toggle{
    padding:14px;
    margin-bottom:18px;
    border:1px solid #dbe5f0;
    border-radius:11px;
    background:#f8fbff;
}
.strong-check{
    font-weight:800;
}
.parking-feature-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px 18px;
    margin:18px 0;
    padding:14px;
    border:1px solid #e4e7ec;
    border-radius:11px;
    background:#f8fafc;
}
.feature-check{
    margin:0;
}
.short-input{
    max-width:180px;
}
.airport-shuttle-card{
    border:1px solid #dfe5ec;
    border-radius:14px;
    padding:18px;
    margin-top:18px;
    background:#fff;
}
.airport-shuttle-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:18px;
    padding-bottom:14px;
    border-bottom:1px solid #eef2f6;
}
.airport-code{
    display:inline-block;
    margin-bottom:5px;
    font-size:13px;
    font-weight:900;
    letter-spacing:.08em;
    color:var(--accent);
}
.airport-shuttle-head h3{
    margin:0 0 4px;
}
.airport-badges{
    display:flex;
    flex-wrap:wrap;
    gap:7px;
    justify-content:flex-end;
}
.approved-badge{
    background:#ecfdf3;
    color:#027a48;
}
.pending-badge{
    background:#fffaeb;
    color:#b54708;
}
.airport-readonly-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    margin:14px 0 18px;
}
.airport-readonly-grid>div{
    display:flex;
    flex-direction:column;
    gap:3px;
    padding:10px 12px;
    border-radius:10px;
    background:#f8fafc;
}
.shuttle-toggle-row{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px 18px;
    margin:14px 0 18px;
    padding:14px;
    border:1px solid #dbe5f0;
    border-radius:11px;
    background:#f8fbff;
}
.schedule-title{
    margin:24px 0 2px;
}
.shuttle-schedule-table{
    display:grid;
    gap:8px;
    margin:14px 0 18px;
}
.shuttle-day-row{
    display:grid;
    grid-template-columns:150px 90px 125px 125px 120px minmax(180px,1fr);
    gap:10px;
    align-items:end;
    padding:11px;
    border:1px solid #e7ebf0;
    border-radius:10px;
    background:#fbfcfd;
}
.shuttle-day-row input{
    margin:0;
}
.shuttle-day-name{
    align-self:center;
}
.mini-label{
    display:block;
    margin:0 0 5px;
    font-size:11px;
    font-weight:800;
    color:var(--muted);
    text-transform:uppercase;
    letter-spacing:.04em;
}
.center-check{
    min-height:40px;
    margin:0;
}
.shuttle-empty p{
    margin-bottom:0;
}

@media(max-width:1150px){
    .shuttle-day-row{
        grid-template-columns:120px 90px repeat(3,110px) minmax(150px,1fr);
    }
}
@media(max-width:900px){
    .shuttle-day-row{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .shuttle-day-name{
        grid-column:1 / -1;
    }
}
@media(max-width:700px){
    .parking-feature-grid,
    .airport-readonly-grid,
    .shuttle-toggle-row,
    .shuttle-day-row{
        grid-template-columns:1fr;
    }
    .airport-shuttle-head{
        display:block;
    }
    .airport-badges{
        justify-content:flex-start;
        margin-top:10px;
    }
}


/* ============================================================
   Step 2D-D - Policies + Airport Assignment
   ============================================================ */

.policy-tip{
    margin:14px 0 18px;
    padding:12px 14px;
    border:1px solid #dbe5f0;
    border-radius:10px;
    background:#f8fbff;
}
.policy-list{
    display:grid;
    gap:12px;
    margin-bottom:18px;
}
.policy-card{
    border:1px solid #e4e7ec;
    border-radius:12px;
    padding:15px;
    background:#fff;
}
.policy-card.inactive{
    opacity:.62;
    background:#f8fafc;
}
.policy-card-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:18px;
}
.policy-card h3{
    margin:2px 0 5px;
}
.policy-type{
    font-size:11px;
    font-weight:900;
    letter-spacing:.06em;
    text-transform:uppercase;
    color:var(--accent);
}
.policy-actions{
    display:flex;
    align-items:center;
    gap:10px;
    flex-wrap:wrap;
    white-space:nowrap;
}
.policy-actions form{
    margin:0;
}
.policy-preview{
    margin-top:12px;
    padding-top:12px;
    border-top:1px solid #eef2f6;
    white-space:pre-wrap;
    line-height:1.55;
}
.policy-active-check{
    margin:16px 0;
}
.airport-assignment-empty{
    display:flex;
    gap:16px;
    align-items:flex-start;
    padding:20px;
    border:1px dashed #cfd8e3;
    border-radius:13px;
    background:#fafcff;
}
.assignment-icon{
    width:40px;
    height:40px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
    border-radius:50%;
    font-weight:900;
    background:#fff4e5;
    color:#b54708;
}
.airport-assignment-summary{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin-bottom:16px;
}
.airport-assignment-summary>div{
    display:flex;
    flex-direction:column;
    gap:4px;
    padding:14px;
    border:1px solid #e4e7ec;
    border-radius:11px;
    background:#f8fafc;
}
.airport-assignment-summary strong{
    font-size:24px;
}
.airport-assignment-list{
    display:grid;
    gap:14px;
}
.airport-assignment-card{
    border:1px solid #dfe5ec;
    border-radius:13px;
    padding:16px;
    background:#fff;
}
.airport-assignment-main{
    display:flex;
    gap:14px;
    align-items:center;
}
.large-code{
    min-width:60px;
    font-size:18px;
}
.airport-assignment-main h3{
    margin:0 0 4px;
}
.airport-assignment-badges{
    display:flex;
    gap:7px;
    flex-wrap:wrap;
    margin-top:12px;
}
.airport-assignment-details{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:10px;
    margin-top:14px;
}
.airport-assignment-details>div{
    display:flex;
    flex-direction:column;
    gap:3px;
    padding:10px;
    border-radius:9px;
    background:#f8fafc;
}
.airport-platform-action{
    margin-top:18px;
}

@media(max-width:800px){
    .airport-assignment-details{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:700px){
    .policy-card-head{
        display:block;
    }
    .policy-actions{
        margin-top:10px;
    }
    .airport-assignment-summary,
    .airport-assignment-details{
        grid-template-columns:1fr;
    }
}


/* ============================================================
   Step 2D-E - Packages & Rates
   ============================================================ */

.package-list{
    display:grid;
    gap:12px;
    margin:16px 0;
}
.package-card{
    border:1px solid #e1e6ec;
    border-radius:13px;
    padding:15px;
    background:#fff;
}
.package-card.inactive{
    opacity:.62;
    background:#f8fafc;
}
.package-card-main{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:18px;
}
.package-code{
    margin-bottom:3px;
    color:var(--accent);
    font-size:11px;
    font-weight:900;
    letter-spacing:.08em;
}
.package-card h3{
    margin:0 0 5px;
}
.package-price-block{
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    white-space:nowrap;
}
.package-price-block strong{
    font-size:22px;
}
.package-card-footer{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:14px;
    margin-top:13px;
    padding-top:12px;
    border-top:1px solid #eef2f6;
}
.package-badges,
.package-actions{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
}
.package-actions form{
    margin:0;
}
.compact-button{
    padding:8px 11px;
    margin-top:0;
}
.completion-card{
    border-color:#cfe0f4;
    background:#fbfdff;
}
.blackout-list{
    display:grid;
    gap:9px;
    margin:14px 0;
}
.blackout-row{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:14px;
    padding:12px;
    border:1px solid #e4e7ec;
    border-radius:10px;
}
.blackout-row.inactive{
    opacity:.55;
    background:#f8fafc;
}
.blackout-row form{
    margin:0;
}
.package-editor-page{
    max-width:1220px;
}
.package-editor-header{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:18px;
    margin-bottom:16px;
}
.package-editor-header h1{
    margin:3px 0 5px;
}
.package-editor-nav{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    margin-bottom:16px;
    padding:10px;
    border:1px solid #e4e7ec;
    border-radius:11px;
    background:#fff;
    position:sticky;
    top:8px;
    z-index:4;
}
.package-editor-nav a{
    padding:7px 10px;
    border-radius:8px;
    text-decoration:none;
    font-size:13px;
    font-weight:800;
    color:var(--accent);
}
.package-editor-nav a:hover{
    background:#f3f7fb;
}
.package-option-group{
    margin:18px 0;
    padding:15px;
    border:1px solid #e4e7ec;
    border-radius:11px;
}
.package-option-group legend{
    padding:0 7px;
    font-weight:800;
}
.package-room-list{
    display:grid;
    gap:9px;
    margin:14px 0;
}
.package-room-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) 180px;
    gap:15px;
    align-items:center;
    padding:12px;
    border:1px solid #e4e7ec;
    border-radius:10px;
}
.package-room-check{
    margin:0;
}
.package-room-check>span{
    display:flex;
    flex-direction:column;
}
.rate-list,
.day-rate-list{
    display:grid;
    gap:9px;
    margin:14px 0;
}
.rate-row,
.day-rate-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto auto;
    gap:14px;
    align-items:center;
    padding:12px;
    border:1px solid #e4e7ec;
    border-radius:10px;
}
.rate-row.inactive,
.day-rate-row.inactive{
    opacity:.55;
    background:#f8fafc;
}
.rate-row form,
.day-rate-row form{
    margin:0;
}
.rate-price{
    font-size:18px;
    font-weight:900;
    white-space:nowrap;
}
.weekday-grid{
    display:grid;
    grid-template-columns:repeat(7,minmax(0,1fr));
    gap:8px;
}
.weekday-grid .checkline{
    margin:0;
    padding:8px;
    border-radius:8px;
    background:#f8fafc;
}

@media(max-width:850px){
    .weekday-grid{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
}
@media(max-width:700px){
    .package-card-main,
    .package-card-footer,
    .package-editor-header,
    .blackout-row{
        display:block;
    }
    .package-price-block{
        align-items:flex-start;
        margin-top:10px;
    }
    .package-actions,
    .package-badges{
        margin-top:9px;
    }
    .package-room-row,
    .rate-row,
    .day-rate-row{
        grid-template-columns:1fr;
    }
    .weekday-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .package-editor-nav{
        position:static;
    }
}


/* ============================================================
   Step 2D-F - Inventory
   ============================================================ */

.inventory-readiness-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:12px;
    margin:16px 0;
}
.inventory-readiness-card{
    display:flex;
    flex-direction:column;
    gap:5px;
    min-height:90px;
    padding:14px;
    border:1px solid #e4e7ec;
    border-radius:11px;
    background:#f8fafc;
}
.inventory-readiness-card strong{
    font-size:22px;
}
.inventory-readiness-card.ready{
    border-color:#b7e4cd;
    background:#f2fbf6;
}
.inventory-readiness-card.needs-attention{
    border-color:#fed7aa;
    background:#fffaf0;
}
.inventory-explanation{
    margin-top:14px;
    padding:14px;
    border:1px solid #dbe5f0;
    border-radius:11px;
    background:#f8fbff;
}
.inventory-explanation p{
    margin:6px 0 0;
}
.inventory-window-card{
    padding-bottom:16px;
}
.inventory-window-form{
    display:grid;
    grid-template-columns:220px 160px auto;
    gap:12px;
    align-items:end;
    margin-bottom:10px;
}
.inventory-window-form .button{
    margin:0 0 8px;
}
.inventory-bulk-form{
    margin:14px 0 18px;
    padding:15px;
    border:1px solid #dfe5ec;
    border-radius:12px;
    background:#fbfcfd;
}
.inventory-form-grid{
    display:grid;
    grid-template-columns:minmax(200px,1.3fr) repeat(3,minmax(145px,.8fr));
    gap:12px;
}
.inventory-form-grid.parking-grid{
    grid-template-columns:repeat(3,minmax(170px,1fr));
}
.package-inventory-flags{
    display:flex;
    gap:16px;
    flex-wrap:wrap;
    margin:14px 0;
}
.package-inventory-flags .checkline{
    margin:0;
}
.inventory-table-wrap{
    overflow-x:auto;
    margin-top:16px;
    border:1px solid #e4e7ec;
    border-radius:11px;
}
.inventory-table{
    width:100%;
    border-collapse:collapse;
    min-width:760px;
    font-size:13px;
}
.inventory-table th,
.inventory-table td{
    padding:10px 11px;
    border-bottom:1px solid #eef2f6;
    vertical-align:top;
    text-align:left;
}
.inventory-table th{
    background:#f8fafc;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.04em;
    color:var(--muted);
}
.inventory-table tbody tr:last-child td{
    border-bottom:0;
}
.inventory-table .num{
    text-align:right;
    white-space:nowrap;
}
.strong-number{
    font-weight:900;
}
.closed-row{
    background:#fff7f6;
}
.closed-badge{
    background:#fee4e2;
    color:#b42318;
}
.tiny{
    font-size:11px;
}

@media(max-width:950px){
    .inventory-form-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:750px){
    .inventory-readiness-grid,
    .inventory-window-form,
    .inventory-form-grid,
    .inventory-form-grid.parking-grid{
        grid-template-columns:1fr;
    }
    .inventory-window-form .button{
        margin-top:0;
    }
}


/* ============================================================
   Phase 3A - Public Marketplace + Availability
   ============================================================ */

.public-header{
    max-width:1200px;
    margin:0 auto;
    padding:18px 20px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
}
.public-brand{
    font-size:20px;
    font-weight:900;
    text-decoration:none;
    color:var(--text);
}
.public-nav{
    display:flex;
    gap:16px;
    align-items:center;
}
.public-nav a{
    text-decoration:none;
    font-weight:700;
}
.marketplace-main{
    max-width:1200px;
    margin:0 auto;
    padding:10px 20px 40px;
}
.marketplace-hero{
    padding:44px 0 28px;
}
.marketplace-hero-copy{
    max-width:760px;
    margin-bottom:22px;
}
.marketplace-hero-copy h1{
    margin:6px 0 10px;
    font-size:clamp(38px,7vw,72px);
    line-height:.98;
    letter-spacing:-.04em;
}
.marketplace-hero-copy p{
    max-width:680px;
    font-size:18px;
    color:var(--muted);
}
.marketplace-search-card,
.search-edit-card{
    border:1px solid #dfe5ec;
    border-radius:16px;
    padding:18px;
    background:#fff;
    box-shadow:0 12px 35px rgba(20,30,50,.08);
}
.marketplace-search-grid{
    display:grid;
    grid-template-columns:1.6fr repeat(4,1fr);
    gap:12px;
    align-items:end;
}
.marketplace-search-card .button{
    margin-top:5px;
}
.public-search-button{
    min-width:220px;
}
.search-note{
    margin:9px 0 0;
}
.marketplace-how{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:16px;
    margin:30px 0;
}
.marketplace-how article{
    padding:20px;
    border:1px solid #e4e7ec;
    border-radius:14px;
    background:#fff;
}
.marketplace-how h2{
    margin:8px 0;
    font-size:18px;
}
.marketplace-how p{
    margin:0;
    color:var(--muted);
}
.how-number{
    width:34px;
    height:34px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:50%;
    background:#f2f6fb;
    font-weight:900;
}
.public-footer{
    max-width:1200px;
    margin:0 auto;
    padding:24px 20px 36px;
    border-top:1px solid #e9edf2;
    display:flex;
    justify-content:space-between;
    gap:18px;
    color:var(--muted);
    font-size:13px;
}
.public-footer a{
    text-decoration:none;
}
.search-results-page{
    padding-top:18px;
}
.compact-search-grid{
    grid-template-columns:1.5fr repeat(4,1fr);
}
.results-heading{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:20px;
    margin:28px 0 14px;
}
.results-heading h1{
    margin:3px 0 4px;
}
.price-disclaimer{
    max-width:260px;
    text-align:right;
    font-size:12px;
    color:var(--muted);
}
.no-results-card{
    margin-top:18px;
}
.public-result-list{
    display:grid;
    gap:16px;
}
.public-hotel-card{
    display:grid;
    grid-template-columns:310px minmax(0,1fr);
    overflow:hidden;
    border:1px solid #dfe5ec;
    border-radius:16px;
    background:#fff;
}
.public-hotel-image{
    position:relative;
    min-height:250px;
    background:#f2f4f7;
}
.public-hotel-image img{
    width:100%;
    height:100%;
    object-fit:cover;
    display:block;
}
.hotel-image-placeholder{
    height:100%;
    min-height:250px;
    display:flex;
    align-items:center;
    justify-content:center;
    color:var(--muted);
}
.featured-listing-badge{
    position:absolute;
    top:12px;
    left:12px;
    padding:6px 9px;
    border-radius:999px;
    background:#fff;
    font-size:11px;
    font-weight:900;
    box-shadow:0 4px 12px rgba(0,0,0,.12);
}
.public-hotel-body{
    padding:18px;
}
.public-hotel-title-row{
    display:flex;
    justify-content:space-between;
    gap:18px;
}
.public-hotel-title-row h2{
    margin:0 0 4px;
}
.starting-price{
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    white-space:nowrap;
}
.starting-price span,
.starting-price small{
    color:var(--muted);
}
.starting-price strong{
    font-size:26px;
}
.hotel-short-description{
    margin:12px 0;
    line-height:1.5;
}
.hotel-meta-row{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    margin:12px 0;
}
.hotel-meta-row span{
    padding:6px 8px;
    border-radius:8px;
    background:#f7f9fb;
    font-size:12px;
}
.amenity-chip-row{
    display:flex;
    gap:7px;
    flex-wrap:wrap;
    margin:10px 0;
}
.amenity-chip{
    padding:5px 8px;
    border:1px solid #e4e7ec;
    border-radius:999px;
    font-size:11px;
}
.best-offer-row{
    margin-top:14px;
    padding-top:14px;
    border-top:1px solid #eef2f6;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
}
.property-heading{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:18px;
    margin:24px 0 16px;
}
.property-heading h1{
    margin:4px 0 6px;
}
.property-gallery{
    display:grid;
    grid-template-columns:2fr 1fr 1fr;
    grid-auto-rows:180px;
    gap:8px;
    overflow:hidden;
    border-radius:16px;
    margin-bottom:18px;
}
.property-gallery figure{
    position:relative;
    margin:0;
    overflow:hidden;
    background:#f2f4f7;
}
.property-gallery .primary-photo{
    grid-row:span 2;
}
.property-gallery img{
    width:100%;
    height:100%;
    object-fit:cover;
}
.property-gallery figcaption{
    position:absolute;
    left:8px;
    right:8px;
    bottom:8px;
    padding:5px 7px;
    border-radius:6px;
    background:rgba(0,0,0,.62);
    color:#fff;
    font-size:11px;
}
.property-content-grid{
    display:grid;
    grid-template-columns:minmax(0,1.45fr) minmax(340px,.75fr);
    gap:18px;
    align-items:start;
}
.property-main-column{
    display:grid;
    gap:16px;
}
.property-main-column .card{
    margin:0;
}
.property-description{
    white-space:pre-wrap;
    line-height:1.6;
}
.property-facts{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
    margin-top:14px;
}
.property-facts>div{
    padding:11px;
    border-radius:10px;
    background:#f8fafc;
    display:flex;
    flex-direction:column;
    gap:3px;
}
.property-facts span{
    font-size:11px;
    color:var(--muted);
    text-transform:uppercase;
    letter-spacing:.04em;
}
.property-amenities{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
}
.property-amenity{
    padding:11px;
    border:1px solid #e4e7ec;
    border-radius:10px;
    display:flex;
    flex-direction:column;
    gap:3px;
}
.property-amenity span{
    color:var(--muted);
    font-size:12px;
}
.property-book-column{
    position:sticky;
    top:12px;
}
.booking-summary-card{
    margin:0;
}
.property-search-summary{
    display:grid;
    gap:8px;
    margin:12px 0 16px;
}
.property-search-summary>div{
    display:flex;
    justify-content:space-between;
    gap:12px;
    padding-bottom:7px;
    border-bottom:1px solid #eef2f6;
}
.property-search-summary span{
    color:var(--muted);
    font-size:12px;
}
.property-offer-list{
    display:grid;
    gap:10px;
}
.property-offer-card{
    padding:13px;
    border:1px solid #e1e6ec;
    border-radius:11px;
}
.property-offer-card h3{
    margin:2px 0 5px;
}
.offer-inclusions{
    margin:10px 0 0;
    padding-left:18px;
    font-size:12px;
    color:var(--muted);
}
.offer-price-row{
    margin-top:12px;
    padding-top:11px;
    border-top:1px solid #eef2f6;
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
}
.offer-price-row>div{
    display:flex;
    flex-direction:column;
}
.offer-price-row strong{
    font-size:24px;
}
.offer-price-row span{
    font-size:11px;
    color:var(--muted);
}
.low-inventory-note{
    margin-top:9px;
    color:#b54708;
    font-size:12px;
    font-weight:800;
}
.full-button{
    width:100%;
    justify-content:center;
}

@media(max-width:980px){
    .marketplace-search-grid,
    .compact-search-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .search-airport-field{
        grid-column:1 / -1;
    }
    .public-hotel-card{
        grid-template-columns:240px minmax(0,1fr);
    }
    .property-content-grid{
        grid-template-columns:1fr;
    }
    .property-book-column{
        position:static;
    }
}
@media(max-width:720px){
    .public-header,
    .results-heading,
    .property-heading,
    .best-offer-row,
    .public-hotel-title-row{
        display:block;
    }
    .public-nav{
        margin-top:8px;
    }
    .marketplace-search-grid,
    .compact-search-grid,
    .marketplace-how,
    .property-facts,
    .property-amenities{
        grid-template-columns:1fr;
    }
    .search-airport-field{
        grid-column:auto;
    }
    .public-hotel-card{
        grid-template-columns:1fr;
    }
    .public-hotel-image{
        min-height:210px;
    }
    .starting-price{
        align-items:flex-start;
        margin-top:9px;
    }
    .best-offer-row .button{
        margin-top:12px;
    }
    .price-disclaimer{
        text-align:left;
        margin-top:8px;
    }
    .property-gallery{
        grid-template-columns:1fr 1fr;
        grid-auto-rows:150px;
    }
    .property-gallery .primary-photo{
        grid-column:1 / -1;
        grid-row:auto;
        height:220px;
    }
}


/* ============================================================
   Phase 3B - Atomic Holds + Checkout
   ============================================================ */

.offer-select-form{
    margin:0;
}
.hold-error-card,
.hold-expired-card{
    margin-top:42px;
}
.checkout-page{
    max-width:1180px;
}
.checkout-heading{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:18px;
    margin:22px 0 16px;
}
.checkout-heading h1{
    margin:4px 0 7px;
}
.checkout-secure-label{
    font-size:12px;
    font-weight:800;
    color:var(--muted);
}
.hold-countdown-card{
    min-width:150px;
    padding:12px 15px;
    border:1px solid #fed7aa;
    border-radius:12px;
    background:#fffaf0;
    display:flex;
    flex-direction:column;
    align-items:flex-end;
}
.hold-countdown-card span{
    font-size:11px;
    color:#b54708;
    text-transform:uppercase;
    letter-spacing:.04em;
    font-weight:800;
}
.hold-countdown-card strong{
    font-size:27px;
    line-height:1.1;
}
.checkout-grid{
    display:grid;
    grid-template-columns:minmax(0,1.4fr) minmax(315px,.6fr);
    gap:18px;
    align-items:start;
}
.checkout-form-column{
    display:grid;
    gap:16px;
}
.checkout-section{
    margin:0 0 16px;
}
.checkout-section h2{
    margin-bottom:14px;
}
.checkout-section h3{
    margin:18px 0 8px;
    font-size:15px;
}
.optional-label{
    font-size:11px;
    color:var(--muted);
    font-weight:600;
}
.checkout-consent{
    margin:16px 0;
    padding:12px;
    border:1px solid #dfe5ec;
    border-radius:9px;
    background:#f8fafc;
}
.checkout-review-button{
    min-width:190px;
}
.checkout-summary-column{
    position:sticky;
    top:12px;
}
.checkout-summary-card{
    margin:0;
}
.checkout-summary-lines{
    display:grid;
    gap:8px;
    margin:14px 0;
}
.checkout-summary-lines>div{
    display:flex;
    justify-content:space-between;
    gap:12px;
    padding-bottom:8px;
    border-bottom:1px solid #eef2f6;
}
.checkout-summary-lines span{
    color:var(--muted);
    font-size:12px;
}
.checkout-summary-lines strong{
    text-align:right;
}
.checkout-price-preview{
    margin:16px 0;
    padding:14px;
    border-radius:11px;
    background:#f7f9fb;
    display:flex;
    flex-direction:column;
}
.checkout-price-preview span,
.checkout-price-preview small{
    color:var(--muted);
}
.checkout-price-preview strong{
    margin:2px 0;
    font-size:29px;
}
.cancel-hold-button{
    padding:0;
}
.checkout-review-card{
    margin:0;
}
.review-grid{
    display:grid;
    grid-template-columns:2fr .7fr 1.3fr;
    gap:10px;
    margin:16px 0;
}
.review-grid>div,
.flight-review>div{
    padding:12px;
    border:1px solid #e4e7ec;
    border-radius:10px;
    display:flex;
    flex-direction:column;
    gap:3px;
}
.review-grid span,
.flight-review span,
.review-special-request span{
    font-size:11px;
    color:var(--muted);
    text-transform:uppercase;
    letter-spacing:.04em;
}
.review-grid small{
    color:var(--muted);
}
.flight-review{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    margin:12px 0;
}
.review-special-request{
    margin:12px 0;
    padding:12px;
    border:1px solid #e4e7ec;
    border-radius:10px;
}
.review-special-request p{
    margin:5px 0 0;
}
.checkout-next-phase-note{
    margin:18px 0;
    padding:14px;
    border:1px solid #cfe0f4;
    border-radius:11px;
    background:#f8fbff;
}
.checkout-next-phase-note p{
    margin:6px 0 0;
}
.checkout-review-card .button[disabled]{
    opacity:.58;
    cursor:not-allowed;
}

@media(max-width:900px){
    .checkout-grid{
        grid-template-columns:1fr;
    }
    .checkout-summary-column{
        position:static;
    }
}
@media(max-width:700px){
    .checkout-heading{
        display:block;
    }
    .hold-countdown-card{
        margin-top:12px;
        align-items:flex-start;
    }
    .review-grid,
    .flight-review{
        grid-template-columns:1fr;
    }
}


/* ============================================================
   Phase 3C - Pricing + Reservation Finalization
   ============================================================ */

.checkout-review-price{
    display:grid;
    gap:8px;
    margin:16px 0;
    padding:14px;
    border:1px solid #dfe5ec;
    border-radius:11px;
    background:#f8fafc;
}
.checkout-review-price>div{
    display:flex;
    justify-content:space-between;
    gap:14px;
}
.checkout-review-price .review-total{
    padding-top:9px;
    border-top:1px solid #dde3ea;
    font-size:18px;
}
.payment-required-card{
    margin-top:42px;
}
.confirmation-page{
    max-width:1050px;
}
.confirmation-hero{
    display:flex;
    align-items:center;
    gap:16px;
    margin:28px 0 18px;
}
.confirmation-check{
    width:54px;
    height:54px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
    border-radius:50%;
    background:#ecfdf3;
    color:#027a48;
    font-size:28px;
    font-weight:900;
}
.confirmation-hero h1{
    margin:3px 0 5px;
}
.confirmation-grid{
    display:grid;
    grid-template-columns:minmax(0,1.3fr) minmax(300px,.7fr);
    gap:16px;
    align-items:start;
}
.confirmation-lines{
    display:grid;
    gap:8px;
    margin:14px 0;
}
.confirmation-lines>div,
.confirmation-charge-list>div{
    display:flex;
    justify-content:space-between;
    gap:14px;
    padding-bottom:8px;
    border-bottom:1px solid #eef2f6;
}
.confirmation-lines span,
.confirmation-charge-list span{
    color:var(--muted);
    font-size:12px;
}
.confirmation-total-card{
    margin:0;
}
.confirmation-total{
    display:flex;
    justify-content:space-between;
    align-items:end;
    gap:14px;
    margin:14px 0;
    padding:13px;
    border-radius:10px;
    background:#f8fafc;
}
.confirmation-total strong{
    font-size:27px;
}
.confirmation-charge-list{
    display:grid;
    gap:7px;
    margin:12px 0;
}
.confirmation-travel{
    margin-top:16px;
    padding-top:14px;
    border-top:1px solid #eef2f6;
}
.confirmation-travel p{
    margin:7px 0;
}
.confirmation-note{
    margin-top:16px;
}

@media(max-width:780px){
    .confirmation-grid{
        grid-template-columns:1fr;
    }
}


/* ============================================================
   Phase 3C-BF - Guest-Paid PSF Booking Fee
   ============================================================ */

.booking-fee-breakdown{
    margin:16px 0;
    border:1px solid #dfe5ec;
    border-radius:12px;
    overflow:hidden;
    background:#fff;
}
.booking-fee-line{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    padding:14px;
    border-bottom:1px solid #edf1f5;
}
.booking-fee-line>div{
    display:flex;
    flex-direction:column;
    gap:3px;
}
.booking-fee-line span{
    color:var(--muted);
    font-size:12px;
}
.booking-fee-line>strong{
    font-size:19px;
    white-space:nowrap;
}
.booking-fee-line.hotel-line{
    background:#f8fafc;
}
.booking-fee-tax-note{
    display:flex;
    flex-direction:column;
    gap:4px;
    padding:13px 14px;
    border-bottom:1px solid #edf1f5;
    background:#fffaf0;
}
.booking-fee-tax-note span{
    color:var(--muted);
    font-size:12px;
    line-height:1.45;
}
.booking-fee-due-now,
.booking-fee-due-hotel{
    display:flex;
    justify-content:space-between;
    gap:18px;
    padding:13px 14px;
}
.booking-fee-due-now{
    background:#f2fbf6;
    font-size:17px;
}
.booking-fee-due-hotel{
    border-top:1px solid #edf1f5;
}
.booking-fee-summary-mini{
    margin:14px 0;
    padding:13px;
    border-radius:11px;
    background:#f8fafc;
}
.booking-fee-summary-mini>div{
    display:flex;
    justify-content:space-between;
    gap:12px;
    padding:5px 0;
}
.booking-fee-summary-mini .due-now-mini{
    margin-top:6px;
    padding-top:9px;
    border-top:1px solid #dfe5ec;
    font-size:16px;
}
.booking-fee-summary-mini small{
    display:block;
    margin-top:7px;
    color:var(--muted);
}
.platform-fee-link-card{
    margin:16px 0;
}
.platform-fee-link-card .section-head{
    align-items:center;
}
.booking-fee-admin-intro{
    margin-bottom:16px;
}
.booking-fee-example{
    display:grid;
    gap:8px;
    margin:14px 0;
}
.booking-fee-example>div{
    display:flex;
    justify-content:space-between;
    gap:14px;
    padding:9px 0;
    border-bottom:1px solid #eef2f6;
}
.booking-fee-package-notice{
    padding:14px;
    margin-bottom:14px;
    border:1px solid #cfe0f4;
    border-radius:10px;
    background:#f8fbff;
}
.booking-fee-package-notice p{
    margin:5px 0 0;
    color:var(--muted);
}

@media(max-width:650px){
    .booking-fee-line,
    .booking-fee-due-now,
    .booking-fee-due-hotel{
        align-items:flex-start;
        flex-direction:column;
        gap:6px;
    }
}


/* ============================================================
   Phase 3D - Stripe + Square hosted booking-fee payments
   ============================================================ */

.payment-provider-admin-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px;
    margin:14px 0 18px;
}
.payment-provider-admin-card{
    display:flex;
    flex-direction:column;
    gap:7px;
    padding:15px;
    border:1px solid #dfe5ec;
    border-radius:12px;
    background:#fff;
    cursor:pointer;
}
.payment-provider-admin-card input{
    width:auto;
    align-self:flex-start;
}
.payment-provider-admin-card span,
.payment-provider-admin-card small{
    color:var(--muted);
    line-height:1.45;
}
.payment-provider-admin-card.provider-disabled{
    opacity:.58;
    cursor:not-allowed;
    background:#f8fafc;
}
.checkout-provider-choice{
    margin:16px 0;
    padding:13px;
    border:1px solid #dfe5ec;
    border-radius:12px;
}
.checkout-provider-choice legend{
    padding:0 6px;
    font-weight:800;
}
.provider-radio{
    display:flex;
    align-items:center;
    gap:9px;
    padding:10px;
    border:1px solid #edf1f5;
    border-radius:9px;
    margin:7px 0;
    cursor:pointer;
}
.provider-radio input{
    width:auto;
}
.provider-radio span{
    margin-left:auto;
    color:var(--muted);
    font-size:12px;
}
.checkout-provider-single{
    display:flex;
    justify-content:space-between;
    gap:12px;
    margin:16px 0;
    padding:12px 14px;
    border-radius:10px;
    background:#f8fafc;
}
.checkout-provider-single span{
    color:var(--muted);
}
.payment-return-card{
    text-align:center;
    margin-top:42px;
}
.payment-return-card .confirmation-check{
    margin:0 auto 10px;
}
.payment-processing-card{
    text-align:center;
    margin-top:42px;
}
.payment-spinner{
    width:34px;
    height:34px;
    margin:18px auto;
    border:4px solid #e5e7eb;
    border-top-color:#111827;
    border-radius:50%;
    animation:psf-spin .8s linear infinite;
}
@keyframes psf-spin{
    to{transform:rotate(360deg)}
}

@media(max-width:720px){
    .payment-provider-admin-grid{
        grid-template-columns:1fr;
    }
    .provider-radio{
        align-items:flex-start;
        flex-wrap:wrap;
    }
    .provider-radio span{
        width:100%;
        margin-left:27px;
    }
}


/* ============================================================
   Checkout total + estimated hotel taxes
   ============================================================ */

.booking-fee-summary-mini .guest-total-mini{
    margin-top:7px;
    padding-top:10px;
    border-top:1px solid #dfe5ec;
    font-size:17px;
    font-weight:800;
}
.booking-fee-guest-total{
    display:flex;
    justify-content:space-between;
    gap:18px;
    padding:14px;
    background:#f4f8ff;
    border-bottom:1px solid #edf1f5;
    font-size:18px;
    font-weight:800;
}
.guest-total-confirmation{
    margin-top:12px;
}
.tax-included-check{
    align-items:center;
    padding-top:27px;
}


/* Phase 3E automatic tax */
.package-tax-allocation{
    margin:14px 0;
    max-width:460px;
}
.tax-property-address{
    display:flex;
    flex-direction:column;
    gap:4px;
    margin:14px 0;
    padding:13px 14px;
    border:1px solid #dfe5ec;
    border-radius:10px;
    background:#f8fafc;
}
.tax-property-address span{
    color:var(--muted);
}
.tax-match-card{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    border:1px solid #dfe5ec;
    border-radius:11px;
    overflow:hidden;
}
.tax-match-card>div{
    display:flex;
    justify-content:space-between;
    gap:12px;
    padding:11px 13px;
    border-bottom:1px solid #edf1f5;
}
.tax-match-card span{
    color:var(--muted);
    font-size:12px;
}
@media(max-width:720px){
    .tax-match-card{
        grid-template-columns:1fr;
    }
}


/* Platform-only payment administration */
.processor-status-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin-top:14px;
}
.processor-status-grid>div{
    display:flex;
    justify-content:space-between;
    gap:15px;
    padding:12px 14px;
    border:1px solid #dfe5ec;
    border-radius:10px;
    background:#f8fafc;
}
.processor-status-grid span{
    color:var(--muted);
}
.payment-platform-choice{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin:14px 0;
}
.provider-toggle{
    display:flex;
    align-items:flex-start;
    gap:10px;
    padding:14px;
    border:1px solid #dfe5ec;
    border-radius:10px;
    background:#fff;
}
.provider-toggle span{
    display:flex;
    flex-direction:column;
    gap:3px;
}
.provider-toggle small{
    color:var(--muted);
}
.provider-toggle.is-disabled{
    opacity:.58;
}
@media(max-width:720px){
    .processor-status-grid,
    .payment-platform-choice{
        grid-template-columns:1fr;
    }
}


/* ============================================================
   Public SEO content
   ============================================================ */

.marketplace-seo-content{
    display:grid;
    gap:22px;
    margin-top:28px;
}
.marketplace-seo-copy,
.marketplace-seo-hotels,
.marketplace-faq{
    padding:22px;
    border:1px solid #e2e8f0;
    border-radius:14px;
    background:#fff;
}
.marketplace-seo-copy h2,
.marketplace-seo-hotels h2,
.marketplace-faq h2{
    margin-top:0;
}
.marketplace-seo-copy p{
    max-width:900px;
    line-height:1.7;
}
.seo-hotel-link-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:14px;
}
.seo-hotel-link-card{
    padding:16px;
    border:1px solid #e2e8f0;
    border-radius:12px;
}
.seo-hotel-link-card h3{
    margin:0 0 6px;
    font-size:17px;
}
.seo-hotel-link-card p:last-child{
    margin-bottom:0;
}
.marketplace-faq details{
    padding:12px 0;
    border-top:1px solid #e8edf2;
}
.marketplace-faq details:first-of-type{
    border-top:0;
}
.marketplace-faq summary{
    cursor:pointer;
    font-weight:700;
}
.marketplace-faq details p{
    margin:9px 0 0;
    line-height:1.6;
}
@media(max-width:900px){
    .seo-hotel-link-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:620px){
    .seo-hotel-link-grid{
        grid-template-columns:1fr;
    }
    .marketplace-seo-copy,
    .marketplace-seo-hotels,
    .marketplace-faq{
        padding:16px;
    }
}


/* ============================================================
   PSF legal pages
   ============================================================ */
.legal-main{
    max-width:980px;
    margin:28px auto 48px;
    padding:0 18px;
}
.legal-card{
    padding:30px;
}
.legal-card h1{
    margin:5px 0 8px;
}
.legal-card h2{
    margin:30px 0 9px;
    font-size:21px;
}
.legal-card h3{
    margin:20px 0 7px;
    font-size:17px;
}
.legal-card p,
.legal-card li{
    line-height:1.7;
}
.legal-card ul{
    padding-left:22px;
}
.legal-updated{
    margin-top:0;
    color:var(--muted);
    font-size:13px;
}
.legal-important{
    padding:13px 15px;
    border-left:4px solid #c62828;
    background:#fff6f6;
}
.legal-note{
    margin-top:30px;
    padding:14px 16px;
    border:1px solid #dfe5ec;
    border-radius:10px;
    background:#f8fafc;
    line-height:1.55;
}
.checkout-consent a{
    text-decoration:underline;
}
@media(max-width:620px){
    .legal-main{
        padding:0 10px;
        margin-top:16px;
    }
    .legal-card{
        padding:18px;
    }
}


/* ============================================================
   PSF Terms / Privacy popup
   ============================================================ */
html.legal-modal-open,
body.legal-modal-open{
    overflow:hidden;
}
.psf-legal-modal{
    position:fixed;
    inset:0;
    z-index:10000;
    display:none;
}
.psf-legal-modal.is-open{
    display:block;
}
.psf-legal-modal-backdrop{
    position:absolute;
    inset:0;
    background:rgba(15,23,42,.58);
    backdrop-filter:blur(2px);
}
.psf-legal-modal-dialog{
    position:relative;
    z-index:1;
    display:flex;
    flex-direction:column;
    width:min(920px,calc(100% - 32px));
    max-height:min(88vh,900px);
    margin:6vh auto 0;
    border-radius:16px;
    background:#fff;
    box-shadow:0 24px 80px rgba(15,23,42,.28);
    outline:none;
    overflow:hidden;
}
.psf-legal-modal-head{
    flex:0 0 auto;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    padding:15px 18px;
    border-bottom:1px solid #e2e8f0;
    background:#fff;
}
.psf-legal-modal-head strong{
    font-size:17px;
}
.psf-legal-modal-close{
    width:38px;
    height:38px;
    padding:0;
    border:0;
    border-radius:10px;
    background:#f1f5f9;
    color:#0f172a;
    cursor:pointer;
    font-size:27px;
    line-height:1;
}
.psf-legal-modal-close:hover{
    background:#e2e8f0;
}
.psf-legal-modal-body{
    flex:1 1 auto;
    overflow:auto;
    overscroll-behavior:contain;
    padding:0;
}
.psf-legal-modal-body .legal-card-modal{
    padding:24px 26px 32px;
}
.psf-legal-modal-body .legal-card-modal h1{
    margin-top:4px;
}
.psf-legal-modal-body .legal-note{
    margin-bottom:0;
}
@media(max-width:620px){
    .psf-legal-modal-dialog{
        width:calc(100% - 16px);
        max-height:94vh;
        margin:3vh auto 0;
        border-radius:13px;
    }
    .psf-legal-modal-head{
        padding:12px 13px;
    }
    .psf-legal-modal-body .legal-card-modal{
        padding:18px 16px 26px;
    }
}


/* ============================================================
   PSF Legal Readability Hotfix
   Larger desktop text + softer, easier-on-the-eyes colors
   ============================================================ */

.legal-card,
.psf-legal-modal-body{
    color:#334155;
}

.legal-card p,
.legal-card li,
.psf-legal-modal-body p,
.psf-legal-modal-body li{
    font-size:17px;
    line-height:1.78;
    color:#475569;
}

.legal-card h1,
.psf-legal-modal-body h1{
    color:#172033;
}

.legal-card h2,
.psf-legal-modal-body h2{
    font-size:23px;
    line-height:1.35;
    color:#24324a;
}

.legal-card h3,
.psf-legal-modal-body h3{
    font-size:18px;
    line-height:1.45;
    color:#334155;
}

.legal-updated{
    font-size:14px;
    color:#64748b;
}

.psf-legal-modal-dialog{
    background:#fbfcfd;
}

.psf-legal-modal-head{
    background:#f7f9fb;
}

.psf-legal-modal-head strong{
    font-size:18px;
    color:#24324a;
}

.psf-legal-modal-body .legal-card-modal{
    background:#fbfcfd;
}

.legal-important{
    color:#7f1d1d;
    background:#fff8f7;
    border-left-color:#dc6b64;
}

.legal-note{
    color:#475569;
    background:#f5f7fa;
}

.legal-card a,
.psf-legal-modal-body a{
    color:#365d8d;
    text-decoration-thickness:1px;
    text-underline-offset:2px;
}

@media(min-width:900px){
    .legal-main{
        max-width:1040px;
    }

    .legal-card{
        padding:36px 42px;
    }

    .psf-legal-modal-dialog{
        width:min(980px,calc(100% - 48px));
        max-height:min(90vh,940px);
    }

    .psf-legal-modal-body .legal-card-modal{
        padding:30px 38px 40px;
    }
}

@media(max-width:620px){
    .legal-card p,
    .legal-card li,
    .psf-legal-modal-body p,
    .psf-legal-modal-body li{
        font-size:16px;
        line-height:1.7;
    }

    .legal-card h2,
    .psf-legal-modal-body h2{
        font-size:21px;
    }
}


/* ============================================================
   PSF Marketplace Hero Banner
   Location-neutral artwork: Park. Stay. Fly.
   ============================================================ */

.marketplace-hero-with-banner{
    padding-top:20px;
}

.marketplace-hero-banner{
    width:100%;
    margin-bottom:20px;
    overflow:hidden;
    border:1px solid #dce5ee;
    border-radius:18px;
    background:#edf4fb;
    box-shadow:0 14px 38px rgba(25,45,70,.10);
}

.marketplace-hero-banner img{
    display:block;
    width:100%;
    height:auto;
}

/*
   The banner contains the visible desktop headline.
   Keep one real HTML H1 and description in the document for
   accessibility/SEO, then show that live text instead on phones.
*/
.marketplace-semantic-intro{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
}

.marketplace-hero-with-banner .marketplace-search-card{
    margin-top:0;
}

@media(max-width:620px){
    /*
       The desktop banner contains baked-in text that would become too
       small on a phone, so use the live HTML version on small screens.
    */
    .marketplace-hero-banner{
        display:none;
    }

    .marketplace-semantic-intro{
        position:static;
        width:auto;
        height:auto;
        padding:10px 0 18px;
        margin:0;
        overflow:visible;
        clip:auto;
        white-space:normal;
    }

    .marketplace-semantic-intro h1{
        margin:6px 0 10px;
        font-size:clamp(40px,14vw,58px);
        line-height:.96;
        letter-spacing:-.045em;
        color:var(--text);
    }

    .marketplace-semantic-intro p{
        max-width:520px;
        margin:0;
        font-size:17px;
        line-height:1.55;
        color:var(--muted);
    }

    .marketplace-hero-with-banner{
        padding-top:18px;
    }
}


/* ============================================================
   PSF Marketplace Banner Size Hotfix
   Keeps the hero from dominating laptop screens.
   ============================================================ */

@media(min-width:621px){
    .marketplace-hero-banner{
        width:min(100%,900px);
        margin-left:auto;
        margin-right:auto;
        margin-bottom:18px;
    }

    .marketplace-hero-banner img{
        width:100%;
        height:auto;
    }
}

@media(min-width:1200px){
    .marketplace-hero-banner{
        width:min(100%,960px);
    }
}
