/* Airport Taxi Transfers — Global Styles */
:root {
    --primary:      #1a4a9f;
    --primary-dark: #0d2d6b;
    --primary-light:#2563eb;
    --accent:       #c9a84c;
    --dark:         #1a1a2e;
    --text:         #333;
    --text-muted:   #888;
    --border:       #e5e7eb;
    --bg-light:     #f8faff;
    --success:      #22c55e;
    --danger:       #ef4444;
    --warning:      #f59e0b;
    --radius:       12px;
    --radius-lg:    16px;
    --shadow:       0 4px 20px rgba(0,0,0,.09);
    --shadow-lg:    0 12px 40px rgba(0,0,0,.13);
}
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{font-family:'DM Sans',sans-serif;color:var(--text);line-height:1.6;margin:0;background:#fff;-webkit-font-smoothing:antialiased;}
h1,h2,h3,h4,h5,h6{font-family:'Playfair Display',Georgia,serif;font-weight:700;line-height:1.25;}
a{text-decoration:none;color:inherit;}
img{max-width:100%;height:auto;display:block;}
.container{max-width:1200px;margin:0 auto;padding:0 1.25rem;}
.section{padding:4rem 0;}
.section-alt{background:var(--bg-light);}
.section-title{text-align:center;font-size:1.9rem;font-weight:700;color:var(--dark);margin-bottom:.5rem;}
.section-sub{text-align:center;color:var(--text-muted);font-size:1rem;max-width:580px;margin:.5rem auto 2.5rem;}
.highlight{color:var(--primary);}
.text-primary{color:var(--primary)!important;}
.text-muted{color:var(--text-muted)!important;}
.text-success{color:var(--success)!important;}
.text-danger{color:var(--danger)!important;}
.fw-700{font-weight:700!important;}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.7rem 1.5rem;border:none;border-radius:var(--radius);font-weight:700;font-size:.9rem;cursor:pointer;transition:all .2s;text-decoration:none;white-space:nowrap;}
.btn-primary{background:var(--primary);color:white;}
.btn-primary:hover{background:var(--primary-dark);color:white;transform:translateY(-1px);}
.btn-outline{background:transparent;border:2px solid var(--primary);color:var(--primary);}
.btn-outline:hover{background:var(--primary);color:white;}
.btn-white{background:white;color:var(--primary);}
.btn-white:hover{background:#f0f4ff;}
.btn-block{width:100%;justify-content:center;}

/* Forms */
.form-group{margin-bottom:1.1rem;}
.form-label{display:block;font-size:.8rem;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.35rem;}
.form-control{width:100%;padding:.72rem 1rem;border:1.5px solid var(--border);border-radius:var(--radius);font-size:.93rem;font-family:inherit;background:#fafafa;color:var(--text);transition:border-color .2s;}
.form-control:focus{border-color:var(--primary);background:white;outline:none;box-shadow:0 0 0 3px rgba(26,74,159,.08);}
.form-control::placeholder{color:#bbb;}

/* Alerts */
.alert{padding:.875rem 1.1rem;border-radius:var(--radius);margin-bottom:1.25rem;font-size:.88rem;display:flex;align-items:flex-start;gap:.6rem;}
.alert-success{background:#d1fae5;color:#065f46;border:1px solid #a7f3d0;}
.alert-danger{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;}
.alert-warning{background:#fef3c7;color:#92400e;border:1px solid #fcd34d;}
.alert-info{background:#dbeafe;color:#1e3a8a;border:1px solid #93c5fd;}

/* Cards */
.card{background:white;border-radius:var(--radius-lg);box-shadow:var(--shadow);}
.card-body{padding:1.5rem;}

/* Badges */
.badge{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:50px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;}
.badge-success{background:#d1fae5;color:#065f46;}
.badge-danger{background:#fee2e2;color:#991b1b;}
.badge-warning{background:#fef3c7;color:#92400e;}
.badge-primary{background:#dbeafe;color:var(--primary);}

/* Page Banner */
.page-banner{background:linear-gradient(135deg,#0d1e3d 0%,var(--primary) 100%);color:white;padding:3rem 0;text-align:center;}
.page-banner h1{color:white;font-size:2rem;margin-bottom:.5rem;}
.page-banner p{color:rgba(255,255,255,.75);margin:0;}

/* Loader */
.loader-spinner{width:44px;height:44px;border:4px solid #e0e7ff;border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

/* Live dot */
.live-dot{width:10px;height:10px;background:var(--success);border-radius:50%;display:inline-block;animation:livePulse 1.5s ease-in-out infinite;}
@keyframes livePulse{0%,100%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}50%{box-shadow:0 0 0 6px rgba(34,197,94,0)}}

/* Dashboard */
.dash-nav-link{display:flex;align-items:center;gap:.65rem;padding:.65rem 1rem;border-radius:var(--radius);color:#555;font-size:.9rem;font-weight:500;text-decoration:none;transition:all .2s;margin-bottom:.2rem;}
.dash-nav-link:hover,.dash-nav-link.active{background:#eff4ff;color:var(--primary);}
.dash-nav-link i{width:18px;text-align:center;}

/* Invoice */
.invoice-wrap{background:white;padding:2.5rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:720px;margin:0 auto;}
.invoice-row{display:flex;justify-content:space-between;padding:.55rem 0;border-bottom:1px solid #f5f5f5;font-size:.9rem;}

/* Map */
.map-container{width:100%;height:400px;border-radius:var(--radius-lg);overflow:hidden;background:#e8ecf2;}

/* Stars */
.star-btn{background:none;border:none;font-size:1.8rem;cursor:pointer;color:#ddd;padding:0;line-height:1;transition:color .2s;}
.star-btn.active,.star-btn:hover{color:var(--accent);}

/* Status steps */
.status-step{display:flex;gap:1rem;align-items:flex-start;padding:.65rem 0;position:relative;}
.status-step:not(:last-child)::before{content:'';position:absolute;left:15px;top:42px;width:2px;height:calc(100% - 10px);background:#e0e0e0;}
.status-step.done::before{background:var(--success);}
.step-dot{width:32px;height:32px;border-radius:50%;background:#e0e0e0;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.8rem;color:#999;}
.status-step.done .step-dot{background:var(--success);color:white;}
.status-step.active .step-dot{background:var(--primary);color:white;animation:pulseStep 1.5s ease-in-out infinite;}
@keyframes pulseStep{0%,100%{box-shadow:0 0 0 0 rgba(26,74,159,.4)}50%{box-shadow:0 0 0 8px rgba(26,74,159,0)}}

/* Responsive */
@media(max-width:768px){
    .section{padding:2.5rem 0;}
    .section-title{font-size:1.6rem;}
    h1{font-size:1.8rem;}
}
@media print{
    .site-header,.site-footer,.no-print{display:none!important;}
    body{background:white;}
    .invoice-wrap{box-shadow:none;}
}
