/* =======================================================
   NUN TRAVEL - PREMIUM LIGHT THEME DESIGN SYSTEM (PRO MAX)
   ======================================================= */

@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700;800&family=Poppins:wght@300;400;500;600;700&display=swap');

:root {
    /* Logo-Based Color Palette */
    --primary: #0167b2;       /* Logo Royal Blue */
    --accent-orange: #f09221; /* Logo Gold/Orange */
    --accent-teal: #00a19b;   /* Logo Teal/Cyan */
    --primary-light: #1a81c3; /* Logo Sky Blue */
    --primary-dark: #0f4d85;
    
    /* Light Theme Styling */
    --bg-main: #f8fafc;
    --bg-card: #ffffff;
    --bg-card-hover: #ffffff;
    --bg-nav: rgba(255, 255, 255, 0.9);
    --text-main: #0f172a;
    --text-muted: #475569;
    --border: rgba(1, 103, 178, 0.1);
    --border-light: rgba(226, 232, 240, 0.8);
    
    /* Layout & Shadow Tokens */
    --font-heading: 'Montserrat', sans-serif;
    --font-body: 'Poppins', sans-serif;
    --shadow-premium: 0 10px 30px rgba(1, 103, 178, 0.04);
    --shadow-hover: 0 20px 45px rgba(1, 103, 178, 0.08);
    --shadow-gold: 0 0 25px rgba(240, 146, 33, 0.2);
    --shadow-teal: 0 0 20px rgba(0, 161, 155, 0.15);
    --glass-blur: blur(12px);
    --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    --border-radius: 16px;
}

/* Base Reset & Styling */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    scroll-behavior: smooth;
}

body {
    background-color: var(--bg-main);
    color: var(--text-main);
    font-family: var(--font-body);
    line-height: 1.6;
    overflow-x: hidden;
}

.container {
    width: 100%;
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 2rem;
}

section {
    padding: 6rem 0;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #0f172a;
}

a {
    color: var(--primary);
    text-decoration: none;
    transition: var(--transition);
}

/* Custom Scrollbar */
::-webkit-scrollbar {
    width: 8px;
}
::-webkit-scrollbar-track {
    background: #f1f5f9;
}
::-webkit-scrollbar-thumb {
    background: var(--primary-light);
    border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
    background: var(--primary);
}

/* Header & Navigation Bar (Light Mode Glassmorphism) */
header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
    background: var(--bg-nav);
    backdrop-filter: var(--glass-blur);
    -webkit-backdrop-filter: var(--glass-blur);
    border-bottom: 1px solid var(--border-light);
    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.02);
    transition: var(--transition);
}

header.scrolled {
    padding: 0.2rem 0;
    background: #ffffff;
    box-shadow: 0 10px 30px rgba(1, 103, 178, 0.05);
}

.nav-wrapper {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 80px;
}

.logo-container {
    display: flex;
    align-items: center;
    gap: 12px;
}

.logo-img {
    height: 45px;
    width: auto;
}

.logo-text {
    font-family: var(--font-heading);
    font-size: 1.4rem;
    font-weight: 800;
    color: var(--primary);
    letter-spacing: 0.5px;
}

.logo-text span {
    color: var(--accent-orange);
}

.nav-menu {
    display: flex;
    list-style: none;
    gap: 2.2rem;
    align-items: center;
}

.nav-link {
    color: var(--text-muted);
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 0.9rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    position: relative;
    padding: 0.5rem 0;
}

.nav-link::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 0;
    height: 3px;
    background: var(--primary);
    border-radius: 2px;
    transition: var(--transition);
}

.nav-link:hover {
    color: var(--primary);
}

.nav-link:hover::after {
    width: 100%;
}

.nav-buttons {
    display: flex;
    align-items: center;
    gap: 1rem;
}

/* UI-UX Pro Max Button Design */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.8rem 1.8rem;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    border-radius: 30px;
    cursor: pointer;
    transition: var(--transition);
    border: none;
}

.btn-primary {
    background: linear-gradient(135deg, var(--primary), var(--primary-light));
    color: #ffffff;
    box-shadow: 0 8px 20px rgba(1, 103, 178, 0.2);
}

.btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 25px rgba(1, 103, 178, 0.35);
    background: linear-gradient(135deg, var(--primary-light), var(--primary-dark));
}

.btn-accent {
    background: linear-gradient(135deg, var(--accent-orange), #d97706);
    color: #ffffff;
    box-shadow: var(--shadow-gold);
}

.btn-accent:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 25px rgba(240, 146, 33, 0.35);
    background: linear-gradient(135deg, #f59e0b, var(--accent-orange));
}

.btn-secondary {
    background: transparent;
    color: var(--primary);
    border: 2px solid var(--primary);
}

.btn-secondary:hover {
    background: var(--primary);
    color: #ffffff;
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(1, 103, 178, 0.15);
}

.btn-sm {
    padding: 0.5rem 1.2rem;
    font-size: 0.75rem;
}

.nav-toggle {
    display: none;
    flex-direction: column;
    gap: 6px;
    cursor: pointer;
    background: none;
    border: none;
}

.nav-toggle span {
    width: 28px;
    height: 3px;
    background-color: var(--text-main);
    border-radius: 2px;
    transition: var(--transition);
}

/* Hero Section (Light & Bright with strong background structure) */
.hero {
    min-height: 100vh;
    display: flex;
    align-items: center;
    position: relative;
    background: linear-gradient(90deg, rgba(255,255,255,0.9) 0%, rgba(255,255,255,0.5) 40%, rgba(255,255,255,0) 68%),
                url('asset/hero-bg.jpg');
    background-size: cover;
    background-position: center;
    padding-top: 100px;
    border-bottom: 1px solid var(--border-light);
}

.hero-content {
    max-width: 750px;
    z-index: 10;
}

.hero-subtitle {
    color: var(--accent-orange);
    font-family: var(--font-heading);
    font-size: 1.1rem;
    text-transform: uppercase;
    font-weight: 700;
    letter-spacing: 3px;
    margin-bottom: 1rem;
    display: inline-block;
    border-left: 4px solid var(--accent-orange);
    padding-left: 12px;
}

.hero h1 {
    font-size: 3.8rem;
    line-height: 1.15;
    margin-bottom: 1.5rem;
    color: #0f172a;
    font-weight: 800;
}

.hero h1 span {
    color: var(--primary);
    background: linear-gradient(120deg, var(--primary), var(--primary-light));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.hero-desc {
    font-size: 1.15rem;
    color: var(--text-muted);
    margin-bottom: 2.5rem;
    max-width: 650px;
}

.hero-cta {
    display: flex;
    gap: 1.5rem;
}

/* Accreditation Bar (Hooking element) */
/* Why Choose Us (Trust Badges) */
.why-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2.5rem;
    margin-top: 2rem;
}

.why-card {
    background: var(--bg-card);
    padding: 3rem 2.5rem;
    border-radius: var(--border-radius);
    border: 1px solid var(--border-light);
    box-shadow: var(--shadow-premium);
    transition: var(--transition);
    text-align: center;
    position: relative;
    overflow: hidden;
}

.why-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--primary);
    transition: var(--transition);
    transform: scaleX(0);
}

.why-card:hover::before {
    transform: scaleX(1);
}

.why-card:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-hover);
    border-color: var(--border);
}

.why-icon {
    width: 70px;
    height: 70px;
    background: rgba(1, 103, 178, 0.05);
    color: var(--primary);
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.8rem;
    margin-bottom: 2rem;
    transition: var(--transition);
}

.why-card:hover .why-icon {
    background: var(--primary);
    color: #ffffff;
}

.why-card h3 {
    font-size: 1.25rem;
    margin-bottom: 1rem;
}

.why-card p {
    color: var(--text-muted);
    font-size: 0.9rem;
}

/* Package Filter and Card (UI-UX Pro Max) */
.section-title {
    text-align: center;
    margin-bottom: 4rem;
}

.section-title span {
    color: var(--primary);
    text-transform: uppercase;
    font-size: 0.85rem;
    letter-spacing: 3px;
    display: inline-block;
    margin-bottom: 0.5rem;
    font-weight: 700;
}

.section-title h2 {
    font-size: 2.6rem;
    color: #0f172a;
    font-weight: 800;
}

.filter-container {
    display: flex;
    justify-content: center;
    gap: 1rem;
    margin-bottom: 4rem;
}

.filter-btn {
    padding: 0.7rem 1.8rem;
    background: #ffffff;
    border: 1px solid var(--border-light);
    color: var(--text-muted);
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 0.85rem;
    border-radius: 30px;
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(0,0,0,0.01);
    transition: var(--transition);
}

.filter-btn:hover, .filter-btn.active {
    background: var(--primary);
    color: #ffffff;
    border-color: var(--primary);
    box-shadow: 0 8px 20px rgba(1, 103, 178, 0.15);
}

.grid-layout {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
    gap: 3rem;
}

.package-card {
    background: var(--bg-card);
    border-radius: var(--border-radius);
    overflow: hidden;
    border: 1px solid var(--border-light);
    transition: var(--transition);
    display: flex;
    flex-direction: column;
    box-shadow: var(--shadow-premium);
}

.package-card:hover {
    transform: translateY(-8px);
    box-shadow: var(--shadow-hover);
    border-color: rgba(1, 103, 178, 0.15);
}

.card-img-wrapper {
    position: relative;
    height: 250px;
    overflow: hidden;
}

.card-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: var(--transition);
}

.package-card:hover .card-img {
    transform: scale(1.08);
}

.card-tag {
    position: absolute;
    top: 1.2rem;
    left: 1.2rem;
    background: rgba(255, 255, 255, 0.95);
    color: var(--primary);
    border: 1px solid var(--primary);
    padding: 0.3rem 1rem;
    border-radius: 20px;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.card-slots {
    position: absolute;
    bottom: 1.2rem;
    right: 1.2rem;
    background: rgba(0, 161, 155, 0.9); /* Logo Teal */
    color: #ffffff;
    padding: 0.3rem 0.8rem;
    border-radius: 8px;
    font-size: 0.8rem;
    font-weight: 700;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.card-content {
    padding: 2.2rem;
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}

.card-title {
    font-size: 1.3rem;
    margin-bottom: 1rem;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.4;
}

.card-desc {
    color: var(--text-muted);
    font-size: 0.9rem;
    margin-bottom: 2rem;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: auto;
    border-top: 1px solid var(--border-light);
    padding-top: 1.5rem;
}

.card-price {
    font-family: var(--font-heading);
}

.card-price span {
    font-size: 0.78rem;
    color: var(--text-muted);
    display: block;
}

.card-price-value {
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--accent-orange);
}

/* Mutawwif Bertauliah Section */
.team-section {
    background: #ffffff;
    border-top: 1px solid var(--border-light);
    border-bottom: 1px solid var(--border-light);
}

.team-wrapper {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 4rem;
    align-items: center;
}

.team-image-box {
    position: relative;
    border-radius: var(--border-radius);
    overflow: hidden;
    box-shadow: var(--shadow-hover);
    border: 5px solid #ffffff;
}

.team-image {
    width: 100%;
    height: auto;
    display: block;
    object-fit: cover;
}

.team-badge {
    position: absolute;
    bottom: 1.5rem;
    left: 1.5rem;
    background: var(--bg-nav);
    backdrop-filter: var(--glass-blur);
    padding: 1rem 2rem;
    border-radius: 12px;
    box-shadow: var(--shadow-premium);
    border: 1px solid var(--border);
}

.team-badge h4 {
    color: var(--primary);
    font-size: 1.1rem;
}

.team-badge p {
    font-size: 0.8rem;
    color: var(--text-muted);
}

.team-content h3 {
    font-size: 2.2rem;
    margin-bottom: 1.5rem;
}

.team-content p {
    color: var(--text-muted);
    font-size: 1rem;
    margin-bottom: 2rem;
}

.team-features {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
}

.team-feat-item {
    display: flex;
    gap: 12px;
    font-size: 0.9rem;
    font-weight: 600;
}

.team-feat-item i {
    color: var(--accent-teal);
    font-size: 1.2rem;
}

/* News Feed Section */
.feed-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
    gap: 2.5rem;
}

.feed-card {
    background: var(--bg-card);
    border-radius: var(--border-radius);
    overflow: hidden;
    border: 1px solid var(--border-light);
    box-shadow: var(--shadow-premium);
    transition: var(--transition);
}

.feed-card:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-hover);
    border-color: var(--border);
}

.feed-media {
    position: relative;
    height: 220px;
    width: 100%;
    background: #000;
}

.feed-media img, .feed-media iframe, .feed-media video {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border: none;
}

.feed-badge {
    position: absolute;
    top: 1rem;
    left: 1rem;
    background: var(--accent-orange);
    color: #ffffff;
    font-weight: 700;
    font-size: 0.75rem;
    padding: 0.3rem 0.8rem;
    border-radius: 4px;
    text-transform: uppercase;
}

.feed-content {
    padding: 2rem;
}

.feed-meta {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-bottom: 0.8rem;
}

.feed-title {
    font-size: 1.2rem;
    margin-bottom: 1rem;
    color: #0f172a;
    font-weight: 700;
    line-height: 1.4;
}

.feed-desc {
    color: var(--text-muted);
    font-size: 0.88rem;
}

/* Testimonial Section */
.testi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
    gap: 2rem;
}

.testi-card {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: var(--border-radius);
    padding: 2.5rem;
    box-shadow: var(--shadow-premium);
    position: relative;
    transition: var(--transition);
}

.testi-card:hover {
    box-shadow: var(--shadow-hover);
    border-color: var(--border);
}

.testi-stars {
    color: var(--accent-orange);
    margin-bottom: 1.2rem;
}

.testi-text {
    font-size: 0.95rem;
    color: var(--text-main);
    font-style: italic;
    margin-bottom: 2rem;
}

.testi-profile {
    display: flex;
    align-items: center;
    gap: 12px;
}

.testi-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--border-light);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    color: var(--primary);
    border: 2px solid var(--primary);
}

.testi-name {
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 0.95rem;
}

.testi-job {
    font-size: 0.75rem;
    color: var(--text-muted);
}

/* Accordion FAQ Component */
.faq-wrapper {
    max-width: 800px;
    margin: 0 auto;
}

.faq-item {
    background: #ffffff;
    border: 1px solid var(--border-light);
    border-radius: 12px;
    margin-bottom: 1.2rem;
    overflow: hidden;
    box-shadow: var(--shadow-premium);
    transition: var(--transition);
}

.faq-header {
    padding: 1.5rem 2rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    user-select: none;
}

.faq-header h4 {
    font-size: 1rem;
    color: #0f172a;
    font-weight: 700;
}

.faq-icon {
    font-size: 1.1rem;
    color: var(--primary);
    transition: var(--transition);
}

.faq-body {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s cubic-bezier(0, 1, 0, 1);
    padding: 0 2rem;
}

.faq-body p {
    color: var(--text-muted);
    font-size: 0.9rem;
    padding-bottom: 1.5rem;
}

.faq-item.active {
    border-color: var(--primary);
}

.faq-item.active .faq-icon {
    transform: rotate(180deg);
}

.faq-item.active .faq-body {
    max-height: 500px;
    transition: max-height 0.5s ease-in-out;
}

/* Modals System (Booking Wizard, Admin Forms) - UI/UX Pro Max */
.modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(15, 23, 42, 0.6);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: var(--transition);
    padding: 1.5rem;
}

.modal.active {
    opacity: 1;
    pointer-events: all;
}

.modal-content {
    background: #ffffff;
    border: 1px solid var(--border-light);
    width: 100%;
    max-width: 750px;
    max-height: 90vh;
    border-radius: var(--border-radius);
    overflow-y: auto;
    box-shadow: 0 20px 50px rgba(15, 23, 42, 0.15);
    position: relative;
    transform: scale(0.95);
    transition: var(--transition);
}

.modal.active .modal-content {
    transform: scale(1);
}

.modal-close {
    position: absolute;
    top: 1.5rem;
    right: 1.5rem;
    background: none;
    border: none;
    color: var(--text-muted);
    font-size: 1.8rem;
    cursor: pointer;
    transition: var(--transition);
    z-index: 10;
}

.modal-close:hover {
    color: var(--primary);
}

/* Booking Wizard Styling */
.wizard-header {
    padding: 3rem 3rem 1.5rem;
    border-bottom: 1px solid var(--border-light);
}

.wizard-title {
    font-size: 1.6rem;
    margin-bottom: 0.5rem;
    color: var(--primary);
    font-weight: 800;
}

.wizard-progress {
    display: flex;
    justify-content: space-between;
    margin-top: 2rem;
    position: relative;
}

.wizard-progress::before {
    content: '';
    position: absolute;
    top: 14px;
    left: 0;
    width: 100%;
    height: 3px;
    background: #e2e8f0;
    z-index: 1;
}

.progress-bar-fill {
    position: absolute;
    top: 14px;
    left: 0;
    width: 0%;
    height: 3px;
    background: var(--primary);
    z-index: 2;
    transition: var(--transition);
}

.progress-step {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid #e2e8f0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--text-muted);
    z-index: 3;
    transition: var(--transition);
    position: relative;
}

.progress-step.active {
    border-color: var(--primary);
    color: var(--primary);
    box-shadow: 0 0 15px rgba(1, 103, 178, 0.25);
}

.progress-step.completed {
    border-color: var(--primary);
    background: var(--primary);
    color: #ffffff;
}

.progress-label {
    position: absolute;
    top: 38px;
    font-size: 0.7rem;
    width: 80px;
    text-align: center;
    left: 50%;
    transform: translateX(-50%);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
    color: var(--text-muted);
}

.progress-step.active .progress-label {
    color: var(--primary);
}

.wizard-body {
    padding: 3rem;
}

.wizard-step {
    display: none;
}

.wizard-step.active {
    display: block;
    animation: fadeIn 0.4s ease;
}

.wizard-footer {
    padding: 1.5rem 3rem 3rem;
    border-top: 1px solid var(--border-light);
    display: flex;
    justify-content: space-between;
}

/* Form Input design */
.form-group {
    margin-bottom: 1.5rem;
}

.form-label {
    display: block;
    margin-bottom: 0.6rem;
    font-weight: 700;
    font-size: 0.8rem;
    color: var(--text-main);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.form-control {
    width: 100%;
    padding: 0.9rem 1.2rem;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    color: var(--text-main);
    font-family: var(--font-body);
    font-size: 0.95rem;
    border-radius: 10px;
    transition: var(--transition);
}

.form-control:focus {
    outline: none;
    border-color: var(--primary);
    background: #ffffff;
    box-shadow: 0 0 15px rgba(1, 103, 178, 0.08);
}

.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
}

/* Selection Cards (Room Selection) */
.selection-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.2rem;
    margin-bottom: 1.5rem;
}

.selection-card {
    background: #ffffff;
    border: 2px solid #e2e8f0;
    padding: 1.5rem 1.2rem;
    border-radius: 12px;
    cursor: pointer;
    text-align: center;
    transition: var(--transition);
    box-shadow: 0 4px 10px rgba(0,0,0,0.01);
}

.selection-card:hover {
    border-color: var(--primary-light);
    background: #f8fafc;
}

.selection-card.selected {
    border-color: var(--primary);
    background: rgba(1, 103, 178, 0.03);
    box-shadow: 0 8px 20px rgba(1, 103, 178, 0.08);
}

.selection-card .selection-title {
    font-family: var(--font-heading);
    font-size: 0.95rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
}

.selection-card .selection-price {
    font-size: 0.9rem;
    color: var(--accent-orange);
    font-weight: 700;
}

/* Checkbox Cards */
.checkbox-list {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.checkbox-card {
    display: flex;
    align-items: center;
    gap: 1.2rem;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    padding: 1.2rem 1.8rem;
    border-radius: 12px;
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(0,0,0,0.01);
    transition: var(--transition);
}

.checkbox-card:hover {
    border-color: var(--primary-light);
    background: #f8fafc;
}

.checkbox-card.selected {
    border-color: var(--primary);
    background: rgba(1, 103, 178, 0.02);
}

.checkbox-card input[type="checkbox"] {
    accent-color: var(--primary);
    width: 20px;
    height: 20px;
    cursor: pointer;
}

.checkbox-label {
    flex-grow: 1;
    font-weight: 600;
    font-size: 0.92rem;
    color: var(--text-main);
}

.checkbox-price {
    color: var(--accent-orange);
    font-weight: 700;
    font-size: 1rem;
}

/* Summary Box */
.summary-box {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    padding: 1.8rem;
    border-radius: 12px;
    margin-top: 1.5rem;
}

.summary-row {
    display: flex;
    justify-content: space-between;
    margin-bottom: 0.8rem;
    font-size: 0.9rem;
}

.summary-row.total {
    border-top: 1px solid #e2e8f0;
    padding-top: 1rem;
    font-weight: 700;
    font-size: 1.25rem;
    color: var(--primary);
}

/* Payment Section */
.payment-mockup {
    text-align: center;
    padding: 1rem 0;
}

.payment-gateway-logo {
    display: flex;
    justify-content: center;
    gap: 1.5rem;
    margin-bottom: 2rem;
}

.gateway-badge {
    background: #ffffff;
    padding: 0.6rem 1.8rem;
    border-radius: 8px;
    display: flex;
    align-items: center;
    height: 48px;
    border: 2px solid var(--primary);
    box-shadow: 0 4px 12px rgba(1, 103, 178, 0.08);
}

.gateway-badge i {
    font-size: 1.1rem;
    margin-right: 8px;
}

.payment-animation {
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2.5rem 0;
}

.success-circle {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: rgba(16, 185, 129, 0.08);
    border: 4px solid #10b981;
    color: #10b981;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 3rem;
    margin-bottom: 1.5rem;
    animation: scaleUp 0.5s ease-out;
}

/* Admin Dashboard Section (Light Modern Styling) */
.admin-section {
    padding-top: 120px;
    min-height: 100vh;
    background: #f1f5f9;
}

.admin-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 2px solid var(--border-light);
    padding-bottom: 1.5rem;
    margin-bottom: 2.5rem;
}

.admin-nav-tabs {
    display: flex;
    gap: 1.5rem;
}

.admin-tab-btn {
    background: none;
    border: none;
    color: var(--text-muted);
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 0.95rem;
    cursor: pointer;
    padding: 0.5rem 0;
    position: relative;
    transition: var(--transition);
}

.admin-tab-btn.active {
    color: var(--primary);
}

.admin-tab-btn.active::after {
    content: '';
    position: absolute;
    bottom: -1.75rem;
    left: 0;
    width: 100%;
    height: 3px;
    background: var(--primary);
    border-radius: 2px;
}

.admin-content-pane {
    display: none;
}

.admin-content-pane.active {
    display: block;
    animation: fadeIn 0.4s ease;
}

/* Tables System */
.table-responsive {
    overflow-x: auto;
    background: #ffffff;
    border: 1px solid var(--border-light);
    border-radius: var(--border-radius);
    box-shadow: 0 4px 20px rgba(0,0,0,0.015);
}

.admin-table {
    width: 100%;
    border-collapse: collapse;
    text-align: left;
}

.admin-table th {
    background: #f8fafc;
    color: var(--primary);
    padding: 1.3rem;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-bottom: 1px solid var(--border-light);
}

.admin-table td {
    padding: 1.3rem;
    border-bottom: 1px solid var(--border-light);
    font-size: 0.9rem;
    color: var(--text-main);
}

.admin-table tr:hover {
    background: #f8fafc;
}

.admin-actions {
    display: flex;
    gap: 0.5rem;
}

.badge-status {
    padding: 0.3rem 0.8rem;
    border-radius: 6px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    display: inline-block;
}

.badge-status.active {
    background: rgba(16, 185, 129, 0.08);
    color: #10b981;
}

.badge-status.draft {
    background: rgba(245, 158, 11, 0.08);
    color: #f59e0b;
}

.badge-status.confirmed {
    background: rgba(59, 130, 246, 0.08);
    color: #3b82f6;
}

.badge-status.pending {
    background: rgba(239, 68, 68, 0.08);
    color: #ef4444;
}

/* Footer Section */
.footer {
    background: #0f172a;
    padding: 6rem 0 2rem;
    color: #94a3b8;
    border-top: 5px solid var(--accent-orange);
}

.footer h3 {
    color: #ffffff;
    margin-bottom: 1.8rem;
    font-size: 1.1rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.footer-grid {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1.5fr;
    gap: 3.5rem;
    margin-bottom: 4rem;
}

.footer-col p {
    margin-bottom: 1.8rem;
    font-size: 0.9rem;
    line-height: 1.8;
}

.footer-links {
    list-style: none;
}

.footer-links li {
    margin-bottom: 0.9rem;
}

.footer-links a {
    color: #94a3b8;
    font-size: 0.9rem;
}

.footer-links a:hover {
    color: var(--primary-light);
    padding-left: 5px;
}

.footer-info {
    list-style: none;
}

.footer-info li {
    margin-bottom: 1.2rem;
    font-size: 0.9rem;
    display: flex;
    gap: 12px;
}

.footer-info i {
    color: var(--accent-orange);
    font-size: 1.1rem;
    margin-top: 3px;
}

.social-links {
    display: flex;
    gap: 1rem;
}

.social-link {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.05);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #ffffff;
    transition: var(--transition);
}

.social-link:hover {
    background: var(--primary);
    color: #ffffff;
    transform: translateY(-2px);
}

.footer-bottom {
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    padding-top: 2rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 0.85rem;
}

/* Animations */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes scaleUp {
    from { transform: scale(0.9); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

/* Responsive Styles */
@media (max-width: 991px) {
    .team-wrapper {
        grid-template-columns: 1fr;
        gap: 3rem;
    }
    
    .footer-grid {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 768px) {
    .nav-menu {
        position: fixed;
        top: 80px;
        left: -100%;
        width: 100%;
        height: calc(100vh - 80px);
        background: #ffffff;
        flex-direction: column;
        align-items: center;
        padding: 3rem 0;
        transition: var(--transition);
        border-top: 1px solid var(--border-light);
        z-index: 999;
        box-shadow: 0 10px 20px rgba(0,0,0,0.05);
    }
    
    .nav-menu.active {
        left: 0;
    }
    
    .nav-toggle {
        display: flex;
    }
    
    .hero h1 {
        font-size: 2.8rem;
    }
    
    .hero-cta {
        flex-direction: column;
        gap: 1rem;
    }
    
    .why-grid {
        grid-template-columns: 1fr;
    }
    
    .selection-grid {
        grid-template-columns: 1fr;
    }
    
    .form-row {
        grid-template-columns: 1fr;
        gap: 0;
    }
    
    .faq-header {
        padding: 1.2rem;
    }
    
    .footer-grid {
        grid-template-columns: 1fr;
    }
    
    .footer-bottom {
        flex-direction: column;
        gap: 1.5rem;
        text-align: center;
    }
    
    .admin-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 1rem;
    }
}

/* =======================================================
   3D COVERFLOW CAROUSEL & LIGHTBOX STYLING
   ======================================================= */
.carousel-section {
    background: #ffffff;
    border-bottom: 1px solid var(--border-light);
    overflow: hidden;
}

.carousel-container {
    position: relative;
    max-width: 1000px;
    margin: 3rem auto 0;
    height: 400px;
    perspective: 1200px;
    transform-style: preserve-3d;
}

.carousel-track {
    position: relative;
    width: 100%;
    height: 340px;
    transform-style: preserve-3d;
}

.carousel-slide {
    position: absolute;
    top: 0;
    left: 50%;
    width: 560px;
    height: 320px;
    margin-left: -280px; /* half width to center initially */
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.15);
    transition: all 0.5s cubic-bezier(0.25, 0.8, 0.25, 1);
    transform-style: preserve-3d;
    cursor: pointer;
    background: #ffffff;
    border: 3px solid #ffffff;
}

.carousel-slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    pointer-events: none;
}

/* Service title caption on each slide */
.carousel-slide-caption {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 2rem 1rem 0.9rem;
    background: linear-gradient(to top, rgba(4, 26, 48, 0.85) 0%, transparent 100%);
    color: #ffffff;
    font-family: var(--font-heading);
    font-size: 1rem;
    font-weight: 800;
    letter-spacing: 0.5px;
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
    pointer-events: none;
}
.carousel-slide-caption i {
    color: var(--accent-orange);
    font-size: 0.95rem;
}

/* 3D Slide States */
.carousel-slide.active {
    transform: translate3d(0, 0, 0) scale(1.1);
    z-index: 10;
    opacity: 1;
    box-shadow: 0 25px 50px rgba(1, 103, 178, 0.2);
    border-color: var(--primary);
}

.carousel-slide.active:hover {
    transform: translate3d(0, -10px, 0) scale(1.12);
    box-shadow: var(--shadow-gold);
}

.carousel-slide.prev {
    transform: translate3d(-300px, 0, -100px) rotateY(30deg) scale(0.85);
    z-index: 5;
    opacity: 0.7;
    filter: brightness(0.7);
    pointer-events: all;
}

.carousel-slide.next {
    transform: translate3d(300px, 0, -100px) rotateY(-30deg) scale(0.85);
    z-index: 5;
    opacity: 0.7;
    filter: brightness(0.7);
    pointer-events: all;
}

.carousel-slide.hidden-left {
    transform: translate3d(-540px, 0, -200px) rotateY(45deg) scale(0.75);
    z-index: 2;
    opacity: 0.35;
    filter: brightness(0.5);
    pointer-events: none;
}

.carousel-slide.hidden-right {
    transform: translate3d(540px, 0, -200px) rotateY(-45deg) scale(0.75);
    z-index: 2;
    opacity: 0.35;
    filter: brightness(0.5);
    pointer-events: none;
}

.carousel-slide.hidden {
    transform: translate3d(0, 0, -300px) scale(0.6);
    z-index: 0;
    opacity: 0;
    pointer-events: none;
}

/* Glass Controls */
.carousel-control-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.9);
    border: 1px solid var(--border-light);
    color: var(--primary);
    font-size: 1.2rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.05);
    transition: var(--transition);
    z-index: 15;
}

.carousel-control-btn:hover {
    background: var(--primary);
    color: #ffffff;
    box-shadow: 0 10px 25px rgba(1, 103, 178, 0.25);
    transform: translateY(-50%) scale(1.1);
}

.carousel-control-btn.prev-btn {
    left: 20px;
}

.carousel-control-btn.next-btn {
    right: 20px;
}

/* Indicators */
.carousel-indicators {
    display: flex;
    justify-content: center;
    gap: 0.8rem;
    margin-top: 1.5rem;
}

.carousel-indicator-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #cbd5e1;
    cursor: pointer;
    transition: var(--transition);
}

.carousel-indicator-dot.active {
    background: var(--primary);
    width: 25px;
    border-radius: 5px;
}

/* Lightbox Modal */
.lightbox-modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(15, 23, 42, 0.95);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    z-index: 30000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: var(--transition);
}

.lightbox-modal.active {
    opacity: 1;
    pointer-events: all;
}

.lightbox-content {
    position: relative;
    max-width: 90vw;
    max-height: 85vh;
    transform: scale(0.9);
    transition: var(--transition);
}

.lightbox-modal.active .lightbox-content {
    transform: scale(1);
}

.lightbox-img {
    max-width: 100%;
    max-height: 85vh;
    object-fit: contain;
    border-radius: 12px;
    border: 4px solid #ffffff;
    box-shadow: 0 25px 60px rgba(0, 0, 0, 0.5);
    display: block;
}

.lightbox-close-btn {
    position: absolute;
    top: -2.5rem;
    right: 0;
    background: none;
    border: none;
    color: #ffffff;
    font-size: 2rem;
    cursor: pointer;
    transition: var(--transition);
}

.lightbox-close-btn:hover {
    color: var(--accent-orange);
}

/* Responsive adjustment for Carousel */
@media (max-width: 768px) {
    .carousel-container {
        height: 240px;
        margin-top: 1.5rem;
    }
    
    .carousel-track {
        height: 180px;
    }
    
    .carousel-slide {
        width: 260px;
        height: 150px;
        margin-left: -130px;
    }
    
    .carousel-slide.active {
        transform: translate3d(0, 0, 0) scale(1.1);
    }
    
    .carousel-slide.prev {
        transform: translate3d(-100px, 0, -50px) rotateY(20deg) scale(0.85);
    }
    
    .carousel-slide.next {
        transform: translate3d(100px, 0, -50px) rotateY(-20deg) scale(0.85);
    }
    
    .carousel-slide.hidden-left {
        transform: translate3d(-170px, 0, -80px) rotateY(30deg) scale(0.7);
    }
    
    .carousel-slide.hidden-right {
        transform: translate3d(170px, 0, -80px) rotateY(-30deg) scale(0.7);
    }
    
    .carousel-control-btn {
        width: 40px;
        height: 40px;
        font-size: 1rem;
    }
    
    .carousel-control-btn.prev-btn {
        left: 5px;
    }
    
    .carousel-control-btn.next-btn {
        right: 5px;
    }
}

/* =======================================================
   NUN TRAVEL - TRAVEL PLATFORM PORTAL STYLES (NEW)
   ======================================================= */

/* SPA Views Layout */
.spa-view {
    padding-top: 100px;
    min-height: calc(100vh - 200px);
}


/* Navigation Links Active State */
.nav-menu .nav-link.active {
    color: var(--primary);
    border-bottom: 2px solid var(--primary);
}

/* Wizard Steps (7 Steps) Adjustments */
.wizard-progress {
    display: flex;
    justify-content: space-between;
    position: relative;
    margin-bottom: 2rem;
}
.progress-bar-fill {
    position: absolute;
    top: 15px;
    left: 0;
    height: 4px;
    background: var(--primary);
    transition: var(--transition);
    z-index: 1;
}
.progress-step {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #cbd5e1;
    color: #64748b;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: bold;
    font-size: 0.85rem;
    position: relative;
    z-index: 2;
    transition: var(--transition);
    cursor: default;
}
.progress-step.active {
    background: var(--primary);
    color: #fff;
    box-shadow: 0 0 10px rgba(1, 103, 178, 0.4);
}
.progress-step.completed {
    background: var(--accent-teal);
    color: #fff;
}
.progress-label {
    position: absolute;
    top: 38px;
    font-size: 0.65rem;
    white-space: nowrap;
    font-weight: 500;
    color: var(--text-muted);
}
@media (max-width: 580px) {
    .progress-label {
        display: none;
    }
}

/* Badges for status */
.badge {
    display: inline-block;
    padding: 0.25rem 0.6rem;
    font-size: 0.75rem;
    font-weight: 600;
    border-radius: 50px;
    text-transform: uppercase;
}
.badge-success {
    background: rgba(16, 185, 129, 0.1);
    color: #10b981;
    border: 1px solid rgba(16, 185, 129, 0.2);
}
.badge-warning {
    background: rgba(245, 158, 11, 0.1);
    color: #f59e0b;
    border: 1px solid rgba(245, 158, 11, 0.2);
}
.badge-danger {
    background: rgba(239, 68, 68, 0.1);
    color: #ef4444;
    border: 1px solid rgba(239, 68, 68, 0.2);
}
.badge-info {
    background: rgba(59, 130, 246, 0.1);
    color: #3b82f6;
    border: 1px solid rgba(59, 130, 246, 0.2);
}

/* Dashboard Statistics Grid */
.dashboard-stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1.5rem;
    margin-bottom: 2.5rem;
}
.stat-card {
    background: #ffffff;
    border: 1px solid var(--border-light);
    border-radius: var(--border-radius);
    padding: 1.8rem;
    box-shadow: var(--shadow-premium);
    transition: var(--transition);
    border-bottom: 3px solid var(--primary-light);
}
.stat-card:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-hover);
}
.stat-card h3 {
    font-size: 0.85rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 0.5rem;
}
.stat-card p {
    font-size: 1.8rem;
    font-weight: 800;
    color: var(--text-main);
}

/* Dashboard Forms and UI elements */
.contact-grid {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 4rem;
    align-items: start;
}
@media (max-width: 900px) {
    .contact-grid {
        grid-template-columns: 1fr;
        gap: 2rem;
    }
}
.contact-info-card {
    padding: 3rem;
    border-color: var(--primary);
}
.contact-methods {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    margin-top: 1.5rem;
}
.contact-item {
    display: flex;
    gap: 15px;
    align-items: center;
}
.contact-item i {
    color: var(--primary);
    font-size: 1.3rem;
    width: 30px;
    text-align: center;
}
.contact-item .fa-whatsapp {
    color: #25d366;
    font-size: 1.6rem;
}
.contact-item div span {
    display: block;
    font-size: 0.8rem;
    color: var(--text-muted);
}
.contact-item div strong {
    color: var(--text-main);
    font-size: 0.95rem;
}

/* Table styling fixes */
.admin-table th {
    background: #f1f5f9;
    color: var(--text-main);
    font-weight: bold;
    padding: 1rem;
    font-size: 0.85rem;
    text-align: left;
}
.admin-table td {
    padding: 1rem;
    font-size: 0.85rem;
    border-bottom: 1px solid var(--border-light);
}

/* Hover scales for widgets & premium lists */
.checkbox-card {
    background: #ffffff;
    border: 1px solid var(--border-light);
    border-radius: 8px;
    padding: 1rem;
    display: flex;
    align-items: center;
    gap: 15px;
    cursor: pointer;
    transition: var(--transition);
}
.checkbox-card:hover {
    border-color: var(--primary);
    box-shadow: 0 4px 15px rgba(1, 103, 178, 0.05);
}
.checkbox-card.selected {
    border-color: var(--primary);
    background: rgba(1, 103, 178, 0.03);
}

.selection-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 1rem;
    margin-top: 0.5rem;
}
.selection-card {
    border: 1px solid var(--border-light);
    border-radius: 8px;
    padding: 1rem;
    text-align: center;
    cursor: pointer;
    transition: var(--transition);
}
.selection-card:hover {
    border-color: var(--primary);
}
.selection-card.selected {
    border-color: var(--primary);
    background: rgba(1, 103, 178, 0.03);
    box-shadow: 0 0 10px rgba(1, 103, 178, 0.1);
}
.selection-title {
    font-weight: bold;
    font-size: 0.85rem;
    color: var(--text-main);
}
.selection-price {
    font-size: 0.75rem;
    color: var(--text-muted);
    margin-top: 0.3rem;
}

/* Video embed responsive helper */
.video-container {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
}
.video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

/* =======================================================
   CORE SERVICES PREMIUM SHOWCASE (Perkhidmatan Utama)
   ======================================================= */
.core-services-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.5rem;
}

.core-service-card {
    display: flex;
    flex-direction: column;
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: var(--border-radius);
    overflow: hidden;
    box-shadow: var(--shadow-premium);
    transition: all 0.35s ease;
}
.core-service-card:hover {
    transform: translateY(-8px);
    border-color: var(--accent-orange);
    box-shadow: 0 25px 50px rgba(1, 103, 178, 0.12), var(--shadow-gold);
}

.core-service-media {
    position: relative;
    height: 200px;
    overflow: hidden;
}
.core-service-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.4s ease;
}
.core-service-card:hover .core-service-media img {
    transform: scale(1.05);
}
.core-service-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(4, 26, 48, 0.6) 0%, rgba(4, 26, 48, 0.05) 55%);
    transition: background 0.35s ease;
}
.core-service-card:hover .core-service-overlay {
    background: linear-gradient(to top, rgba(4, 26, 48, 0.78) 0%, rgba(4, 26, 48, 0.15) 55%);
}

.core-service-body {
    position: relative;
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 2.1rem 1.4rem 1.5rem;
}
.core-service-icon {
    position: absolute;
    top: -24px;
    left: 1.4rem;
    width: 48px;
    height: 48px;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--primary), var(--primary-light));
    color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.15rem;
    border: 2px solid rgba(255, 255, 255, 0.9);
    box-shadow: 0 8px 20px rgba(1, 103, 178, 0.35);
    transition: all 0.35s ease;
}
.core-service-card:hover .core-service-icon {
    background: linear-gradient(135deg, var(--accent-orange), #f7b055);
    box-shadow: 0 8px 20px rgba(240, 146, 33, 0.4);
}
.core-service-body h3 {
    font-family: var(--font-heading);
    font-size: 1.02rem;
    font-weight: 800;
    margin-bottom: 0.5rem;
    color: var(--text-main);
}
.core-service-body p {
    flex: 1;
    font-size: 0.84rem;
    color: var(--text-muted);
    line-height: 1.65;
}
.core-service-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1.2rem;
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--primary);
    text-decoration: none;
    transition: all 0.35s ease;
}
.core-service-btn i {
    transition: transform 0.35s ease;
}
.core-service-card:hover .core-service-btn {
    color: var(--accent-orange);
}
.core-service-card:hover .core-service-btn i {
    transform: translateX(6px);
}

@media (max-width: 1100px) and (min-width: 641px) {
    .core-services-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Mobile: horizontal swipe cards with snap scrolling */
@media (max-width: 640px) {
    .core-services-grid {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        gap: 1rem;
        padding: 0.5rem 0.25rem 1.25rem;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .core-services-grid::-webkit-scrollbar {
        display: none;
    }
    .core-service-card {
        flex: 0 0 82%;
        scroll-snap-align: center;
    }
}

/* =======================================================
   ADMIN SERVICE MODAL (Professional Form + Image Upload)
   ======================================================= */
.service-modal-header {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.8rem;
    padding-bottom: 1.2rem;
    border-bottom: 1px solid var(--border-light);
}
.service-modal-header-icon {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--primary), var(--primary-light));
    color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    box-shadow: 0 8px 20px rgba(1, 103, 178, 0.3);
}
.service-modal-header h2 {
    color: var(--primary);
    font-size: 1.25rem;
    margin: 0;
}
.service-modal-header p {
    color: var(--text-muted);
    font-size: 0.82rem;
    margin-top: 0.25rem;
}
.form-label .req {
    color: #e11d48;
}

.upload-zone {
    position: relative;
    border: 2px dashed #cbd5e1;
    border-radius: 12px;
    background: #f8fafc;
    cursor: pointer;
    transition: var(--transition);
    overflow: hidden;
}
.upload-zone:hover,
.upload-zone.drag-over {
    border-color: var(--primary);
    background: rgba(1, 103, 178, 0.04);
}
.upload-placeholder {
    text-align: center;
    padding: 2rem 1rem;
}
.upload-placeholder i {
    font-size: 2rem;
    color: var(--primary-light);
    margin-bottom: 0.6rem;
}
.upload-placeholder p {
    font-size: 0.88rem;
    color: var(--text-main);
}
.upload-placeholder small {
    font-size: 0.72rem;
    color: var(--text-muted);
}
.upload-preview {
    position: relative;
}
.upload-preview img {
    width: 100%;
    height: 190px;
    object-fit: cover;
    display: block;
}
.upload-change-btn {
    position: absolute;
    bottom: 10px;
    right: 10px;
    padding: 0.45rem 0.9rem;
    border: none;
    border-radius: 8px;
    background: rgba(15, 23, 42, 0.75);
    color: #ffffff;
    font-size: 0.75rem;
    font-weight: 600;
    font-family: var(--font-body);
    cursor: pointer;
    backdrop-filter: blur(6px);
    transition: var(--transition);
}
.upload-change-btn:hover {
    background: var(--primary);
}
.url-fallback {
    margin-top: 0.6rem;
}
.url-fallback summary {
    font-size: 0.78rem;
    color: var(--primary);
    cursor: pointer;
    font-weight: 600;
}

/* Package card image: locked height so any uploaded image (portrait,
   oversized, odd ratio) is always cropped neatly instead of stretching the card */
.package-img {
    width: 100%;
    aspect-ratio: 16 / 9;   /* match 16:9 uploads exactly — no side-crop */
    height: auto;
    object-fit: cover;
    display: block;
    background: #f1f5f9;
}

/* Sectioned admin forms (package modal etc.) */
.form-section {
    background: #fbfcfe;
    border: 1px solid var(--border-light);
    border-radius: 14px;
    padding: 1.4rem 1.4rem 0.4rem;
    margin-bottom: 1.4rem;
}
.form-section-title {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    font-family: var(--font-heading);
    font-size: 0.82rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--primary);
    margin-bottom: 1.2rem;
    padding-bottom: 0.8rem;
    border-bottom: 1px dashed var(--border-light);
}
.form-section-title i {
    color: var(--accent-orange);
}
.form-section .form-group {
    margin-bottom: 1.2rem;
}
.form-label small {
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
    color: var(--text-muted);
}
.form-grid-4 {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
}
@media (max-width: 640px) {
    .form-grid-4 {
        grid-template-columns: 1fr 1fr;
    }
}

.featured-toggle {
    display: flex;
    align-items: flex-start;
    gap: 0.8rem;
    padding: 1rem 1.1rem;
    background: rgba(240, 146, 33, 0.06);
    border: 1px solid rgba(240, 146, 33, 0.25);
    border-radius: 12px;
    cursor: pointer;
    margin-bottom: 1.2rem;
    transition: var(--transition);
}
.featured-toggle:hover {
    background: rgba(240, 146, 33, 0.1);
}
.featured-toggle input {
    margin-top: 0.25rem;
    width: 17px;
    height: 17px;
    accent-color: var(--accent-orange);
    cursor: pointer;
}
.featured-toggle-text strong {
    display: block;
    font-size: 0.88rem;
    color: var(--text-main);
}
.featured-toggle-text small {
    font-size: 0.75rem;
    color: var(--text-muted);
}

.icon-input-wrap {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}
.icon-live-preview {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: #f1f5f9;
    border: 1px solid #e2e8f0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--primary);
    font-size: 1.05rem;
}

/* =======================================================
   VISION & MISSION CARDS (Tentang Kami)
   ======================================================= */
.vm-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    margin-top: 1.5rem;
}
.vm-card {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-left: 4px solid var(--accent-orange);
    border-radius: 12px;
    padding: 1.2rem 1.3rem;
    box-shadow: var(--shadow-premium);
}
.vm-card h4 {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--primary);
    font-size: 0.95rem;
    font-weight: 800;
    margin-bottom: 0.4rem;
}
.vm-card p {
    font-size: 0.82rem;
    color: var(--text-muted);
    line-height: 1.6;
}
@media (max-width: 640px) {
    .vm-grid {
        grid-template-columns: 1fr;
    }
}

/* =======================================================
   GALLERY MASONRY (Rangkaian & Galeri)
   ======================================================= */
.gallery-masonry {
    columns: 3 300px;
    column-gap: 1.25rem;
}
.gallery-item {
    position: relative;
    display: block;
    break-inside: avoid;
    margin: 0 0 1.25rem;
    border-radius: var(--border-radius);
    overflow: hidden;
    cursor: pointer;
    box-shadow: var(--shadow-premium);
}
.gallery-item img {
    width: 100%;
    display: block;
    transition: transform 0.4s ease;
}
.gallery-item:hover img {
    transform: scale(1.05);
}
.gallery-item figcaption {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 2.2rem 1.2rem 1rem;
    background: linear-gradient(to top, rgba(4, 26, 48, 0.78) 0%, transparent 100%);
    color: #ffffff;
    font-size: 0.85rem;
    font-weight: 600;
    opacity: 0;
    transform: translateY(8px);
    transition: all 0.35s ease;
}
.gallery-item:hover figcaption {
    opacity: 1;
    transform: translateY(0);
}
.gallery-item figcaption i {
    color: var(--accent-orange);
    margin-right: 0.4rem;
}

/* =======================================================
   STRATEGIC PARTNERS (Rakan Strategik)
   ======================================================= */
.partners-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1.25rem;
}
/* Paksa pemisah baris: badan pengiktirafan (atas) vs rakan penerbangan (bawah) */
.partners-break { flex-basis: 100%; height: 0; margin: 0; padding: 0; border: 0; }
.partner-logo {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    min-width: 175px;
    padding: 1.6rem 1.8rem;
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-premium);
    transition: all 0.35s ease;
    cursor: default;
}
.partner-logo:hover {
    transform: translateY(-5px);
    border-color: var(--border);
    box-shadow: var(--shadow-hover);
}
.partner-logo i {
    font-size: 1.9rem;
    color: var(--primary);
}
.partner-logo span {
    font-family: var(--font-heading);
    font-weight: 800;
    letter-spacing: 0.5px;
    font-size: 0.95rem;
    color: var(--text-main);
    text-align: center;
}
.partner-logo span em {
    font-style: normal;
    color: var(--accent-teal);
}
.partner-logo small {
    font-size: 0.66rem;
    color: var(--text-muted);
    letter-spacing: 1.2px;
    text-transform: uppercase;
}


/* =======================================================
   NUN ADMIN DESIGN SYSTEM (ADM)
   Reusable premium modal shell: header + step nav + panes
   + live summary + sticky footer. Apply class "adm-modal"
   to a .modal and follow the adm-* structure inside.
   ======================================================= */

.adm-modal .modal-content {
    max-width: min(1200px, 96vw);
    height: min(760px, 90vh);
    border-radius: 20px;
    padding: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    box-shadow: 0 30px 80px rgba(15, 23, 42, 0.25);
}

/* The shell wraps header + body + footer. It must fill modal-content and be a
   flex column so .adm-body (flex:1; min-height:0) is bounded and .adm-panes can
   scroll internally — without this the shell grows to content and the page
   behind scrolls instead of the modal. */
.adm-shell {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    overflow: hidden;
}
/* Compact modals intentionally have auto-height content that scrolls the whole
   card (.modal-content overflow:auto), so the shell must not clip/bound them. */
.adm-modal.adm-compact .adm-shell {
    height: auto;
    overflow: visible;
}

/* --- Header --- */
.adm-header {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.3rem 1.8rem;
    border-bottom: 1px solid var(--border-light);
    flex-shrink: 0;
}
.adm-header-icon {
    flex-shrink: 0;
    width: 50px;
    height: 50px;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--primary), var(--primary-light));
    color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
    box-shadow: 0 8px 20px rgba(1, 103, 178, 0.3);
}
.adm-header-text h2 {
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--text-main);
    margin: 0;
}
.adm-header-text p {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-top: 0.15rem;
}
.adm-close {
    margin-left: auto;
    width: 38px;
    height: 38px;
    border-radius: 10px;
    border: 1px solid var(--border-light);
    background: #ffffff;
    color: var(--text-muted);
    font-size: 1.1rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: var(--transition);
}
.adm-close:hover {
    background: #fef2f2;
    color: #e11d48;
    border-color: #fecdd3;
}

/* --- Body: steps | panes | summary --- */
.adm-body {
    flex: 1;
    display: grid;
    grid-template-columns: 225px minmax(0, 1fr) 250px;
    min-height: 0;
}

.adm-steps {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 1.2rem 0.9rem;
    border-right: 1px solid var(--border-light);
    background: #fbfcfe;
    overflow-y: auto;
}
.adm-step {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.72rem 0.9rem;
    border: none;
    border-radius: 10px;
    background: none;
    font-family: var(--font-body);
    font-size: 0.84rem;
    font-weight: 600;
    color: var(--text-muted);
    text-align: left;
    cursor: pointer;
    transition: var(--transition);
    width: 100%;
}
.adm-step i:first-child {
    width: 18px;
    text-align: center;
    font-size: 0.85rem;
    opacity: 0.75;
}
.adm-step:hover {
    background: rgba(1, 103, 178, 0.05);
    color: var(--text-main);
}
.adm-step.active {
    background: rgba(1, 103, 178, 0.09);
    color: var(--primary);
}
.adm-step.active i:first-child {
    opacity: 1;
}
.adm-step-check {
    margin-left: auto;
    font-size: 0.7rem;
    color: var(--accent-teal);
    opacity: 0;
    transition: opacity 0.25s ease;
}
.adm-step.done .adm-step-check {
    opacity: 1;
}

.adm-panes {
    overflow-y: auto;
    padding: 1.6rem 1.8rem;
    min-width: 0;
}
.adm-pane {
    display: none;
}
.adm-pane.active {
    display: block;
    animation: admPaneIn 0.28s ease;
}
@keyframes admPaneIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

.adm-card {
    background: #ffffff;
    border: 1px solid var(--border-light);
    border-radius: 14px;
    padding: 1.4rem;
    margin-bottom: 1.1rem;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.03);
}
.adm-card-title {
    font-size: 0.78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--text-muted);
    margin-bottom: 1.1rem;
}
.adm-grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.1rem;
}
.adm-hint {
    font-size: 0.73rem;
    color: var(--text-muted);
    margin-top: 0.4rem;
}

/* --- Inline validation --- */
.adm-error {
    display: none;
    font-size: 0.73rem;
    font-weight: 600;
    color: #e11d48;
    margin-top: 0.4rem;
}
.form-group.invalid .adm-error {
    display: block;
}
.form-group.invalid .form-control,
.form-group.invalid .adm-tags {
    border-color: #fda4af;
    background: #fff1f2;
}

/* --- Live summary --- */
.adm-summary {
    border-left: 1px solid var(--border-light);
    background: #fbfcfe;
    padding: 1.3rem 1.2rem;
    overflow-y: auto;
}
.adm-summary-title {
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin-bottom: 0.9rem;
}
.adm-summary-thumb {
    width: 100%;
    height: 110px;
    border-radius: 10px;
    object-fit: cover;
    display: block;
    margin-bottom: 0.9rem;
    background: #eef2f7;
    border: 1px solid var(--border-light);
}
.adm-summary-item {
    padding: 0.55rem 0;
    border-bottom: 1px dashed var(--border-light);
}
.adm-summary-item span {
    display: block;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--text-muted);
}
.adm-summary-item strong {
    display: block;
    font-size: 0.85rem;
    color: var(--text-main);
    margin-top: 0.15rem;
    word-break: break-word;
}
.adm-summary-item strong .badge {
    font-size: 0.68rem;
}

/* --- Sticky footer --- */
.adm-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.7rem;
    padding: 1rem 1.8rem;
    border-top: 1px solid var(--border-light);
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(8px);
    flex-shrink: 0;
}
.adm-btn-ghost {
    padding: 0.75rem 1.4rem;
    border: none;
    background: none;
    border-radius: 10px;
    font-family: var(--font-body);
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--text-muted);
    cursor: pointer;
    transition: var(--transition);
}
.adm-btn-ghost:hover {
    background: #f1f5f9;
    color: var(--text-main);
}
.adm-footer .btn {
    padding: 0.75rem 1.6rem;
}
.btn .adm-spinner {
    display: inline-block;
    width: 14px;
    height: 14px;
    border: 2px solid rgba(255, 255, 255, 0.4);
    border-top-color: #ffffff;
    border-radius: 50%;
    animation: admSpin 0.7s linear infinite;
    vertical-align: -2px;
    margin-right: 6px;
}
@keyframes admSpin {
    to { transform: rotate(360deg); }
}

/* --- Toggle switch --- */
.adm-switch-row {
    display: flex;
    align-items: flex-start;
    gap: 0.9rem;
    padding: 1rem 1.1rem;
    border: 1px solid var(--border-light);
    border-radius: 12px;
    background: #ffffff;
    cursor: pointer;
    transition: var(--transition);
}
.adm-switch-row:hover {
    border-color: var(--border);
}
.adm-switch-row .adm-switch-text strong {
    display: block;
    font-size: 0.86rem;
    color: var(--text-main);
}
.adm-switch-row .adm-switch-text small {
    font-size: 0.74rem;
    color: var(--text-muted);
}
.adm-switch {
    position: relative;
    flex-shrink: 0;
    width: 44px;
    height: 24px;
    margin-top: 2px;
}
.adm-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}
.adm-switch-slider {
    position: absolute;
    inset: 0;
    border-radius: 999px;
    background: #cbd5e1;
    transition: background 0.25s ease;
}
.adm-switch-slider::before {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.25);
    transition: transform 0.25s ease;
}
.adm-switch input:checked + .adm-switch-slider {
    background: var(--accent-orange);
}
.adm-switch input:checked + .adm-switch-slider::before {
    transform: translateX(20px);
}

/* --- Tag input --- */
.adm-tags {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
    padding: 0.55rem 0.7rem;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    cursor: text;
    transition: var(--transition);
    min-height: 50px;
}
.adm-tags:focus-within {
    border-color: var(--primary);
    background: #ffffff;
}
.adm-tag {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.3rem 0.4rem 0.3rem 0.7rem;
    background: rgba(1, 103, 178, 0.08);
    color: var(--primary);
    border-radius: 8px;
    font-size: 0.78rem;
    font-weight: 600;
    animation: admPaneIn 0.2s ease;
}
.adm-tag button {
    border: none;
    background: none;
    color: inherit;
    cursor: pointer;
    font-size: 0.85rem;
    line-height: 1;
    padding: 2px;
    border-radius: 4px;
    opacity: 0.6;
}
.adm-tag button:hover {
    opacity: 1;
}
.adm-tags input {
    flex: 1;
    min-width: 130px;
    border: none;
    outline: none;
    background: transparent;
    font-family: var(--font-body);
    font-size: 0.88rem;
    color: var(--text-main);
    padding: 0.3rem 0;
}

/* --- Toasts --- */
.adm-toast-wrap {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 20000;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    pointer-events: none;
}
.adm-toast {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.9rem 1.2rem;
    background: #0f172a;
    color: #f1f5f9;
    border-radius: 12px;
    font-size: 0.85rem;
    font-weight: 600;
    box-shadow: 0 15px 40px rgba(15, 23, 42, 0.35);
    animation: admToastIn 0.3s cubic-bezier(0.21, 1.02, 0.73, 1);
    pointer-events: auto;
}
.adm-toast.leaving {
    transition: all 0.3s ease;
    opacity: 0;
    transform: translateY(10px);
}
.adm-toast i {
    font-size: 1rem;
}
.adm-toast.success i { color: #34d399; }
.adm-toast.error i { color: #fb7185; }
@keyframes admToastIn {
    from { opacity: 0; transform: translateY(16px) scale(0.97); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* --- Responsive --- */
@media (max-width: 1024px) {
    .adm-body {
        grid-template-columns: 200px minmax(0, 1fr);
    }
    .adm-summary {
        display: none;
    }
}
@media (max-width: 700px) {
    .adm-modal .modal-content {
        height: 92vh;
        max-height: 92vh;
    }
    .adm-body {
        grid-template-columns: 1fr;
        grid-template-rows: auto minmax(0, 1fr);
    }
    .adm-steps {
        flex-direction: row;
        overflow-x: auto;
        border-right: none;
        border-bottom: 1px solid var(--border-light);
        padding: 0.7rem 0.9rem;
    }
    .adm-step {
        white-space: nowrap;
        width: auto;
    }
    .adm-step-check {
        display: none;
    }
    .adm-grid-2 {
        grid-template-columns: 1fr;
    }
}

/* Compact variant: small single-step admin modals (no step nav / summary) */
.adm-modal.adm-compact .modal-content {
    max-width: 620px;
    height: auto;
    max-height: 90vh;
    /* v1.5.1 — compact modals have auto height, so the flex/grid inner
       panes can't establish a scroll context; let the whole card scroll. */
    overflow: hidden auto;
    overscroll-behavior: contain;
}
#admin-staff-modal.adm-compact .modal-content {
    max-width: min(880px, 96vw);
}
#admin-new-booking-modal.adm-compact .modal-content {
    max-width: min(900px, 96vw);
}
#agent-new-booking-modal.adm-compact .modal-content {
    max-width: min(900px, 96vw);
}
#admin-new-booking-modal .adm-panes,
#agent-new-booking-modal .adm-panes {
    padding: 1.4rem 1.6rem 5.5rem;
}
.booking-sales-owner {
    display: inline-block;
    margin-top: 0.3rem;
    color: var(--primary);
    font-size: 0.68rem;
    font-weight: 700;
    line-height: 1.35;
}
.agent-booking-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}
.agent-booking-heading h3 {
    margin-bottom: 0.2rem;
}
.agent-booking-owner {
    margin: -0.25rem 0 1rem;
    padding: 0.65rem 0.8rem;
    border-radius: 10px;
    background: rgba(0, 113, 188, 0.07);
    color: var(--primary);
}
.agent-booking-heading p {
    margin: 0;
    color: var(--text-muted);
    font-size: 0.8rem;
}
@media (max-width: 700px) {
    .agent-booking-heading {
        align-items: stretch;
        flex-direction: column;
    }
    .agent-booking-heading .btn {
        width: 100%;
    }
}
.anb-flow-note {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    margin-bottom: 1.25rem;
    padding: 0.8rem 0.95rem;
    border-radius: 12px;
    background: #eef7fd;
    color: var(--text-main);
    font-size: 0.76rem;
}
.anb-flow-note span {
    color: var(--primary);
    font-weight: 800;
}
.anb-flow-note strong {
    font-size: 0.76rem;
}
.anb-flow-note > i {
    color: var(--text-muted);
}
@media (max-width: 700px) {
    .anb-flow-note {
        align-items: flex-start;
        flex-direction: column;
    }
    .anb-flow-note > i {
        transform: rotate(90deg);
    }
}
.anb-section {
    padding: 0 0 1.35rem;
    margin-bottom: 1.35rem;
    border-bottom: 1px solid var(--border-light);
}
.anb-section .adm-card-title {
    margin-bottom: 0.9rem;
    color: var(--primary);
}
.anb-section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.9rem;
}
.anb-section-head .adm-card-title {
    margin-bottom: 0;
}
.payment-receipt-preview {
    min-height: 34px;
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin-top: 0.45rem;
    padding: 0.55rem 0.7rem;
    border-radius: 9px;
    background: #f1f5f9;
    color: #475569;
    font-size: 0.72rem;
    font-weight: 600;
}
.payment-receipt-preview.has-file {
    background: #ecfdf5;
    color: #047857;
}
.anb-payment-choice {
    display: inline-flex;
    gap: 0.25rem;
    padding: 0.25rem;
    border: 1px solid var(--border-light);
    border-radius: 10px;
    background: #f8fafc;
}
.anb-payment-choice label {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.45rem 0.75rem;
    border-radius: 8px;
    color: var(--text-main);
    font-size: 0.8rem;
    font-weight: 700;
    cursor: pointer;
}
.anb-payment-choice label:has(input:checked) {
    background: #ffffff;
    color: var(--primary);
    box-shadow: 0 1px 4px rgba(15, 23, 42, 0.12);
}
.anb-payment-choice input {
    accent-color: var(--primary);
}
.anb-payment-summary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
    margin-top: 1rem;
    padding: 1rem;
    border: 1px solid #bfdbfe;
    border-radius: 12px;
    background: #eff6ff;
}
.anb-payment-summary > div {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
.anb-payment-summary span {
    color: var(--text-muted);
    font-size: 0.72rem;
}
.anb-payment-summary strong {
    color: var(--text-main);
    font-size: 0.95rem;
    font-variant-numeric: tabular-nums;
}
.anb-payment-summary .anb-balance strong {
    color: #b45309;
}
.anb-payment-summary.is-paid {
    border-color: #a7f3d0;
    background: #ecfdf5;
}
.anb-payment-summary.is-paid strong {
    color: #047857;
}
.anb-advanced {
    border: 1px solid var(--border-light);
    border-radius: 12px;
    background: #fbfcfe;
}
.anb-advanced summary {
    min-height: 46px;
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.75rem 1rem;
    color: var(--primary);
    font-size: 0.82rem;
    font-weight: 700;
    cursor: pointer;
}
.anb-advanced[open] summary {
    border-bottom: 1px solid var(--border-light);
}
.anb-advanced .adm-grid-2 {
    padding: 1rem;
}
.anb-full {
    grid-column: 1 / -1;
}
.balance-alert {
    display: inline-flex;
    align-items: center;
    gap: 0.28rem;
    margin-top: 0.3rem;
    padding: 0.22rem 0.45rem;
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 800;
}
.balance-alert.due-soon {
    background: #fff7ed;
    color: #c2410c;
}
.balance-alert.overdue {
    background: #fff1f2;
    color: #be123c;
}
.balance-alert.on-track {
    background: #eff6ff;
    color: #1d4ed8;
}
.staff-role-preview {
    margin-top: 0.25rem;
    padding: 0.9rem 1rem;
    border-radius: 10px;
    background: rgba(1, 103, 178, 0.07);
    color: var(--text-main);
    font-size: 0.8rem;
    line-height: 1.55;
}
.staff-role-preview strong {
    color: var(--primary);
}
/* .modal-content ialah flex column, jadi .adm-shell/.adm-body (flex:1) akan
   DIMAMPATKAN bila kandungan melebihi max-height. Kerana .adm-panes compact
   ialah overflow:visible, kandungan yang tumpah itu dilukis menembusi footer
   (butang Simpan/Batal nampak bertindih dengan medan borang). Kunci kedua-dua
   pada tinggi semula jadi supaya kad penuh yang menatal, seperti direka. */
.adm-modal.adm-compact .adm-shell,
.adm-modal.adm-compact .adm-body {
    flex: 0 0 auto;
}
.adm-modal.adm-compact .adm-body {
    grid-template-columns: 1fr;
    overflow: visible;
    min-height: auto;
}
/* Butang sentiasa dalam capaian semasa menatal borang yang panjang. */
.adm-modal.adm-compact .adm-footer {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #ffffff;
}
.adm-modal.adm-compact .adm-panes {
    overflow: visible;
    /* Ruang bawah setinggi footer melekat, supaya medan terakhir sentiasa
       boleh ditatal keluar dari bawah butang Simpan/Batal. */
    padding-bottom: 5.5rem;
    min-height: 0;
}
@media (max-width: 640px) {
    #admin-new-booking-modal .adm-header {
        align-items: flex-start;
        padding: 1rem;
    }
    #admin-new-booking-modal .adm-header-icon {
        width: 42px;
        height: 42px;
        border-radius: 12px;
    }
    #admin-new-booking-modal .adm-panes {
        padding: 1rem 1rem 5.5rem;
    }
    .anb-section-head {
        align-items: stretch;
        flex-direction: column;
    }
    .anb-payment-choice {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }
    .anb-payment-choice label {
        justify-content: center;
    }
    .anb-payment-summary {
        grid-template-columns: 1fr 1fr;
    }
    .anb-payment-summary .anb-balance {
        grid-column: 1 / -1;
    }
    .anb-full {
        grid-column: auto;
    }
}

/* Neutralise global element selectors (header/section) inside admin modals.
   The site's bare `header { position: fixed }` and `section { padding: 6rem 0 }`
   rules were leaking into the modal shell and hiding the step nav. */
.adm-modal header.adm-header {
    position: static;
    top: auto;
    left: auto;
    width: auto;
    z-index: auto;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    box-shadow: none;
    border-bottom: 1px solid var(--border-light);
}
.adm-modal section.adm-pane {
    padding: 0;
}

/* Hidden modals should be fully inert (not just transparent) */
.modal {
    visibility: hidden;
}
.modal.active {
    visibility: visible;
}

/* =======================================================
   EVENTS MODULE (Kursus & Taklimat)
   ======================================================= */

/* --- Homepage event cards: 3 col desktop / 2 tablet / swipe mobile --- */
.events-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
    gap: 1.5rem;
}

.event-card {
    display: flex;
    flex-direction: column;
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: var(--border-radius);
    overflow: hidden;
    box-shadow: var(--shadow-premium);
    transition: all 0.35s ease;
}
.event-card:hover {
    transform: translateY(-8px);
    box-shadow: var(--shadow-hover);
    border-color: var(--border);
}

.event-card-media {
    position: relative;
    height: 190px;
    overflow: hidden;
}
.event-card-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.4s ease;
}
.event-card:hover .event-card-media img {
    transform: scale(1.05);
}
.event-card-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(4, 26, 48, 0.55) 0%, rgba(4, 26, 48, 0.05) 55%);
}

.event-date-badge {
    position: absolute;
    top: 14px;
    left: 14px;
    background: rgba(255, 255, 255, 0.95);
    border-radius: 12px;
    padding: 0.4rem 0.7rem;
    text-align: center;
    line-height: 1.1;
    box-shadow: 0 6px 16px rgba(15, 23, 42, 0.18);
}
.event-date-badge strong {
    display: block;
    font-family: var(--font-heading);
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--primary);
}
.event-date-badge span {
    font-size: 0.66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.event-featured-badge {
    position: absolute;
    top: 14px;
    right: 14px;
    background: linear-gradient(135deg, var(--accent-orange), #f7b055);
    color: #fff;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.5px;
    padding: 0.35rem 0.7rem;
    border-radius: 999px;
    box-shadow: 0 6px 16px rgba(240, 146, 33, 0.35);
}

.event-status-badge {
    position: absolute;
    bottom: 12px;
    left: 14px;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.4px;
    padding: 0.32rem 0.75rem;
    border-radius: 999px;
    backdrop-filter: blur(6px);
}
.event-status-badge.open   { background: rgba(16, 185, 129, 0.92); color: #fff; }
.event-status-badge.almost { background: rgba(240, 146, 33, 0.94); color: #fff; }
.event-status-badge.closed { background: rgba(225, 29, 72, 0.92); color: #fff; }

.event-card-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 1.3rem 1.4rem 1.4rem;
}
.event-card-cat {
    font-size: 0.68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--accent-teal);
    margin-bottom: 0.4rem;
}
.event-card-body h3 {
    font-size: 1.02rem;
    font-weight: 800;
    line-height: 1.4;
    margin-bottom: 0.5rem;
}
.event-card-body > p {
    font-size: 0.82rem;
    color: var(--text-muted);
    line-height: 1.6;
    margin-bottom: 0.9rem;
}
.event-card-meta {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin-bottom: 1.1rem;
    flex: 1;
}
.event-card-meta span {
    font-size: 0.78rem;
    color: var(--text-muted);
    display: flex;
    gap: 0.5rem;
    align-items: baseline;
}
.event-card-meta i {
    color: var(--primary);
    width: 14px;
    text-align: center;
    flex-shrink: 0;
}
.event-card-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
}

@media (max-width: 1024px) and (min-width: 641px) {
    .events-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 640px) {
    .events-grid {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        gap: 1rem;
        padding: 0.5rem 0.25rem 1.25rem;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .events-grid::-webkit-scrollbar { display: none; }
    .event-card {
        flex: 0 0 84%;
        scroll-snap-align: center;
    }
}

/* --- Event detail page --- */
.event-hero {
    position: relative;
    min-height: 380px;
    background-size: cover;
    background-position: center;
    display: flex;
    align-items: flex-end;
}
.event-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(4, 26, 48, 0.88) 0%, rgba(4, 26, 48, 0.35) 60%, rgba(4, 26, 48, 0.45) 100%);
}
.event-hero-content {
    position: relative;
    z-index: 2;
    color: #fff;
    padding-top: 7rem;
    padding-bottom: 2.5rem;
}
.event-back-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: rgba(255, 255, 255, 0.85);
    text-decoration: none;
    font-size: 0.82rem;
    font-weight: 600;
    margin-bottom: 1rem;
    transition: var(--transition);
}
.event-back-link:hover { color: #fff; }
.event-hero-cat {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    border: 1px solid rgba(255, 255, 255, 0.3);
    backdrop-filter: blur(6px);
    padding: 0.3rem 0.9rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 1px;
    text-transform: uppercase;
    margin-bottom: 0.9rem;
}
.event-hero-content h1 {
    color: #fff;
    font-size: clamp(1.5rem, 3.5vw, 2.4rem);
    max-width: 800px;
    margin-bottom: 1rem;
}
.event-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 1.2rem;
    align-items: center;
    font-size: 0.85rem;
}
.event-hero-meta i { color: var(--accent-orange); margin-right: 0.4rem; }
.event-hero-meta .event-status-badge { position: static; }

.event-detail-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 1.5rem;
    align-items: start;
}
.event-detail-main .adm-card,
.event-detail-side .adm-card {
    margin-bottom: 1.5rem;
}
.event-objectives {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
}
.event-objectives li {
    display: flex;
    gap: 0.7rem;
    align-items: baseline;
    font-size: 0.9rem;
    color: var(--text-muted);
}
.event-objectives i { color: var(--accent-teal); }
.event-map-wrap {
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--border-light);
}
.event-map-wrap iframe {
    width: 100%;
    height: 320px;
    border: none;
    display: block;
}

.event-info-row {
    display: flex;
    gap: 0.9rem;
    align-items: flex-start;
    padding: 0.6rem 0;
    border-bottom: 1px dashed var(--border-light);
}
.event-info-row i {
    color: var(--primary);
    width: 18px;
    text-align: center;
    margin-top: 3px;
}
.event-info-row span {
    display: block;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--text-muted);
}
.event-info-row strong {
    font-size: 0.88rem;
    color: var(--text-main);
}
.event-seats-bar { margin-top: 1rem; }
.event-seats-label {
    display: flex;
    justify-content: space-between;
    font-size: 0.78rem;
    margin-bottom: 0.4rem;
}
.event-seats-label span { color: var(--text-muted); }
.event-seats-track {
    height: 8px;
    background: #e2e8f0;
    border-radius: 999px;
    overflow: hidden;
}
.event-seats-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--accent-teal), var(--primary));
    border-radius: 999px;
    transition: width 0.4s ease;
}

.event-speaker-card { text-align: center; }
.event-speaker-photo {
    width: 110px;
    height: 110px;
    border-radius: 50%;
    object-fit: cover;
    object-position: top;
    margin: 0 auto 0.8rem;
    display: block;
    border: 3px solid var(--border-light);
    background: #f1f5f9;
}
.event-speaker-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #cbd5e1;
    font-size: 2.2rem;
}
.event-speaker-card strong { font-size: 0.95rem; }

.event-reg-closed {
    text-align: center;
    padding: 1.2rem 0.5rem;
    color: var(--text-muted);
}
.event-reg-closed i {
    font-size: 1.8rem;
    color: #e11d48;
    margin-bottom: 0.6rem;
}

@media (max-width: 900px) {
    .event-detail-grid {
        grid-template-columns: 1fr;
    }
    .event-hero-content { padding-top: 8rem; }
}

/* --- Admin: sub-tabs --- */
.adm-subtabs {
    display: flex;
    gap: 0.4rem;
    border-bottom: 1px solid var(--border-light);
    margin-bottom: 1.6rem;
    flex-wrap: wrap;
}
.adm-subtab {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.65rem 1.1rem;
    border: none;
    background: none;
    font-family: var(--font-body);
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--text-muted);
    cursor: pointer;
    border-bottom: 2.5px solid transparent;
    transition: var(--transition);
}
.adm-subtab:hover { color: var(--text-main); }
.adm-subtab.active {
    color: var(--primary);
    border-bottom-color: var(--primary);
}
.events-subpane { display: none; }
.events-subpane.active {
    display: block;
    animation: admPaneIn 0.25s ease;
}

/* --- Admin: category chips --- */
.event-cats-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.7rem;
}
.event-cat-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.6rem 0.9rem;
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    font-size: 0.85rem;
    box-shadow: var(--shadow-premium);
}
.event-cat-chip i { color: var(--primary); font-size: 0.8rem; }
.event-cat-chip small { color: var(--text-muted); font-size: 0.7rem; }
.event-cat-chip button {
    border: none;
    background: none;
    color: #cbd5e1;
    font-size: 1rem;
    cursor: pointer;
    line-height: 1;
    padding: 2px 4px;
    border-radius: 6px;
    transition: var(--transition);
}
.event-cat-chip button:hover { color: #e11d48; background: #fff1f2; }

/* --- Admin: gallery thumbs in event modal --- */
.event-gallery-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.7rem;
}
.event-gallery-thumb {
    position: relative;
    width: 96px;
    height: 68px;
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid var(--border-light);
}
.event-gallery-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.event-gallery-thumb button {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 20px;
    height: 20px;
    border: none;
    border-radius: 50%;
    background: rgba(15, 23, 42, 0.7);
    color: #fff;
    font-size: 0.8rem;
    line-height: 1;
    cursor: pointer;
}
.event-gallery-thumb button:hover { background: #e11d48; }

/* =======================================================
   ACADEMY MODULE (E-Learning)
   ======================================================= */

/* --- Academy hero --- */
.academy-hero {
    background: linear-gradient(135deg, #023a63 0%, var(--primary) 55%, #0a83d8 100%);
    color: #fff;
    padding: 9rem 0 3.5rem;
    text-align: center;
}
.academy-hero-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: rgba(255, 255, 255, 0.14);
    border: 1px solid rgba(255, 255, 255, 0.28);
    padding: 0.35rem 1rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 1px;
    text-transform: uppercase;
    margin-bottom: 1.1rem;
}
.academy-hero-eyebrow i { color: var(--accent-orange); }
.academy-hero h1 {
    color: #fff;
    font-size: clamp(1.7rem, 4vw, 2.6rem);
    margin-bottom: 0.9rem;
}
.academy-hero p {
    color: rgba(255, 255, 255, 0.85);
    max-width: 560px;
    margin: 0 auto;
    font-size: 0.95rem;
}

/* --- Course cards (extends .event-card) --- */
.course-level-badge {
    position: absolute;
    bottom: 12px;
    left: 14px;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.4px;
    padding: 0.32rem 0.75rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.92);
    color: var(--primary);
    backdrop-filter: blur(6px);
}

/* --- Course player page --- */
.course-hero .event-hero-content { padding-bottom: 2rem; }

.course-player-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 1.5rem;
    align-items: start;
}
.course-player-main .adm-card { margin-bottom: 1.5rem; }
.course-player-side .adm-card { margin-bottom: 1.5rem; }

.course-video-wrap {
    position: relative;
    aspect-ratio: 16 / 9;
    background: #04101c;
    border-radius: 14px;
    overflow: hidden;
    margin-bottom: 1.5rem;
    box-shadow: var(--shadow-premium);
}
.course-video-wrap iframe {
    width: 100%;
    height: 100%;
    border: none;
    display: block;
}
.course-video-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.3rem;
    color: #7d90a3;
    text-align: center;
    padding: 1rem;
}
.course-video-placeholder i { font-size: 2.6rem; margin-bottom: 0.6rem; color: #33506b; }
.course-video-placeholder p { color: #b9c8d6; margin: 0; }
.course-video-placeholder small { font-size: 0.78rem; max-width: 320px; }

.course-lesson-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 0.5rem;
    flex-wrap: wrap;
}
.course-lesson-head h3 { font-size: 1.05rem; margin: 0; }

.course-progress-wrap { margin-bottom: 1.1rem; }

.course-lesson-list {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}
.course-lesson-item {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    width: 100%;
    text-align: left;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--border-light);
    border-radius: 12px;
    background: var(--bg-card);
    cursor: pointer;
    font-family: var(--font-body);
    transition: var(--transition);
}
.course-lesson-item:hover {
    border-color: var(--primary);
    background: #f4f9fd;
}
.course-lesson-item.active {
    border-color: var(--primary);
    background: #eef6fc;
    box-shadow: 0 4px 12px rgba(1, 103, 178, 0.12);
}
.course-lesson-num {
    flex: 0 0 30px;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: #e2e8f0;
    color: var(--text-muted);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 800;
}
.course-lesson-num.done {
    background: var(--accent-teal);
    color: #fff;
}
.course-lesson-text {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.course-lesson-text strong {
    font-size: 0.85rem;
    line-height: 1.35;
    color: var(--text-main);
}
.course-lesson-text small {
    font-size: 0.72rem;
    color: var(--text-muted);
    margin-top: 1px;
}
.course-lesson-icon {
    color: var(--primary);
    font-size: 0.85rem;
    flex-shrink: 0;
}

@media (max-width: 900px) {
    .course-player-grid { grid-template-columns: 1fr; }
    .academy-hero { padding-top: 7.5rem; }
}

/* --- Admin: lesson manager rows in course modal --- */
.course-lessons-admin-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.course-lesson-admin-row {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--border-light);
    border-radius: 12px;
    background: var(--bg-card);
}
.course-lesson-admin-row .course-lesson-text strong { font-size: 0.85rem; }
.course-lesson-admin-row .course-lesson-text small i { color: #e11d48; }
.course-lesson-admin-actions {
    display: inline-flex;
    gap: 0.25rem;
}
.course-lesson-admin-actions button {
    border: 1px solid var(--border-light);
    background: none;
    color: var(--text-muted);
    width: 28px;
    height: 28px;
    border-radius: 8px;
    cursor: pointer;
    font-size: 0.72rem;
    transition: var(--transition);
}
.course-lesson-admin-actions button:hover:not(:disabled) {
    border-color: var(--primary);
    color: var(--primary);
}
.course-lesson-admin-actions button.danger:hover {
    border-color: #e11d48;
    color: #e11d48;
    background: #fff1f2;
}
.course-lesson-admin-actions button:disabled {
    opacity: 0.35;
    cursor: default;
}

/* =======================================================
   BRAND MARK & TEAM PLACEHOLDER (replaces dead hotlinks)
   ======================================================= */
.logo-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--primary), #0a83d8);
    color: #fff;
    font-size: 1.1rem;
    flex-shrink: 0;
    box-shadow: 0 4px 12px rgba(1, 103, 178, 0.3);
}
.team-image-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 320px;
    background: linear-gradient(160deg, #eef4f9, #dbe7f0);
    color: #9fb3c4;
    font-size: 5rem;
    border-radius: inherit;
}

/* Partner tiles with real logo images */
.partner-logo img {
    height: 52px;
    width: auto;
    max-width: 150px;
    object-fit: contain;
}

/* =======================================================
   AFFILIATE SYSTEM (CTA, portal ejen, bahan marketing)
   ======================================================= */
.affiliate-cta-strip {
    background: linear-gradient(120deg, #023a63 0%, var(--primary) 60%, #0a83d8 100%);
    color: #fff;
    padding: 3.5rem 0;
}
.affiliate-cta-inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 2rem;
    flex-wrap: wrap;
}
.affiliate-cta-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: rgba(255, 255, 255, 0.14);
    border: 1px solid rgba(255, 255, 255, 0.28);
    padding: 0.3rem 0.9rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 1px;
    text-transform: uppercase;
    margin-bottom: 0.8rem;
}
.affiliate-cta-inner h2 {
    color: #fff;
    font-size: clamp(1.4rem, 3vw, 2rem);
    margin-bottom: 0.5rem;
}
.affiliate-cta-inner p {
    color: rgba(255, 255, 255, 0.85);
    font-size: 0.92rem;
    max-width: 560px;
}
.affiliate-cta-actions {
    display: flex;
    gap: 0.8rem;
    flex-wrap: wrap;
}

.agent-avatar {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #e8f1f8;
    color: var(--primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
    overflow: hidden;
    flex-shrink: 0;
    border: 2px solid var(--border-light);
}
.agent-share-btn {
    border: none;
    font-weight: 700;
    font-size: 0.78rem;
    padding: 0.45rem 0.9rem;
    border-radius: 8px;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    transition: var(--transition);
}
.agent-share-btn:hover { opacity: 0.85; transform: translateY(-2px); }

.mkt-assets-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1.2rem;
}
.mkt-asset-card {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 14px;
    overflow: hidden;
    box-shadow: var(--shadow-premium);
    display: flex;
    flex-direction: column;
}
.mkt-asset-preview {
    height: 160px;
    background: #f1f5f9;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.mkt-asset-preview img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.mkt-asset-icon {
    font-size: 2.4rem;
    color: #cbd5e1;
}
.mkt-asset-body {
    padding: 1rem 1.2rem 1.2rem;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    flex: 1;
}
.mkt-asset-type {
    font-size: 0.66rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--accent-teal);
}
.mkt-asset-body strong { font-size: 0.92rem; }
.mkt-asset-body p { font-size: 0.8rem; color: var(--text-muted); }
.mkt-asset-actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-top: auto;
    padding-top: 0.8rem;
}

/* =======================================================
   BOOKING WORKFLOW (timeline, pendaftaran, operasi)
   ======================================================= */

/* --- Timeline 8 peringkat --- */
.bk-timeline {
    display: flex;
    align-items: flex-start;
    overflow-x: auto;
    padding: 0.4rem 0.2rem 0.6rem;
    gap: 0;
    scrollbar-width: thin;
}
.bk-stage {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.4rem;
    min-width: 86px;
    text-align: center;
    flex-shrink: 0;
}
.bk-stage-dot {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: #e9eff4;
    color: #9fb3c4;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.85rem;
    border: 2px solid transparent;
    transition: var(--transition);
}
.bk-stage-label {
    font-size: 0.66rem;
    font-weight: 700;
    color: var(--text-muted);
    line-height: 1.25;
    max-width: 84px;
}
.bk-stage.done .bk-stage-dot {
    background: var(--accent-teal);
    color: #fff;
}
.bk-stage.done .bk-stage-label { color: var(--accent-teal); }
.bk-stage.current .bk-stage-dot {
    background: var(--primary);
    color: #fff;
    border-color: rgba(1, 103, 178, 0.25);
    box-shadow: 0 0 0 4px rgba(1, 103, 178, 0.12);
}
.bk-stage.current .bk-stage-label { color: var(--primary); }
.bk-stage-line {
    flex: 1;
    min-width: 14px;
    height: 2px;
    background: var(--border-light);
    margin-top: 19px;
}

/* --- Timeline kerja staf: setiap langkah boleh dibuka tanpa approval gate --- */
.adm-workflow-steps {
    gap: 0.35rem;
}
.adm-workflow-steps .adm-step {
    min-height: 58px;
    align-items: center;
    padding: 0.65rem 0.7rem;
}
.adm-workflow-steps .workflow-step-num {
    flex: 0 0 28px;
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #e8eef4;
    color: #64748b;
    font-size: 0.72rem;
    font-weight: 800;
}
.adm-workflow-steps .workflow-step-copy {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
}
.adm-workflow-steps .workflow-step-copy strong {
    color: inherit;
    font-size: 0.8rem;
    line-height: 1.25;
}
.adm-workflow-steps .workflow-step-copy small {
    color: var(--text-muted);
    font-size: 0.65rem;
    font-weight: 600;
}
.adm-workflow-steps .adm-step.done .workflow-step-num {
    background: var(--accent-teal);
    color: #ffffff;
}
.adm-workflow-steps .adm-step.current .workflow-step-num,
.adm-workflow-steps .adm-step.active .workflow-step-num {
    background: var(--primary);
    color: #ffffff;
}
.adm-workflow-steps .adm-step.attention .workflow-step-num {
    background: #fff7ed;
    color: #c2410c;
}
.abk-section-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.1rem;
}
.abk-section-heading .adm-card-title {
    margin-bottom: 0.2rem;
}
.abk-section-heading p {
    margin: 0;
    max-width: 58ch;
    color: var(--text-muted);
    font-size: 0.8rem;
}
.abk-section-heading select {
    width: min(280px, 100%);
    flex: 0 0 auto;
}
.abk-staff-doc-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 0.75rem;
    margin-bottom: 0.8rem;
}
.abk-staff-doc {
    position: relative;
    min-height: 132px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 0.65rem;
    padding: 0.9rem;
    border: 1px solid var(--border-light);
    border-radius: 12px;
    background: #fbfcfe;
}
.abk-staff-doc.has-file {
    border-color: #86d9c5;
    background: #f0fdf9;
}
.abk-staff-doc-head {
    display: flex;
    align-items: center;
    gap: 0.55rem;
}
.abk-staff-doc-head i {
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 9px;
    background: #e8f2fa;
    color: var(--primary);
}
.abk-staff-doc-head strong {
    display: block;
    font-size: 0.8rem;
}
.abk-staff-doc-head small {
    display: block;
    margin-top: 0.1rem;
    color: var(--text-muted);
    font-size: 0.66rem;
}
.abk-staff-doc-actions {
    display: flex;
    gap: 0.45rem;
}
.abk-staff-doc-actions label,
.abk-staff-doc-actions a,
.abk-staff-doc-actions button {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.45rem 0.65rem;
    border: 1px solid var(--border-light);
    border-radius: 9px;
    background: #ffffff;
    color: var(--primary);
    font-family: var(--font-body);
    font-size: 0.72rem;
    font-weight: 800;
    text-decoration: none;
    cursor: pointer;
}
.abk-staff-doc-actions label:hover,
.abk-staff-doc-actions a:hover,
.abk-staff-doc-actions button:hover {
    border-color: var(--primary);
}
.abk-staff-doc-actions .doc-remove {
    color: #be123c;
}
.abk-progress-meter {
    height: 8px;
    overflow: hidden;
    margin: 0.5rem 0 1rem;
    border-radius: 999px;
    background: #e5edf4;
}
.abk-progress-meter span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: var(--accent-teal);
    transition: width 0.2s ease-out;
}
.abk-progress-stat {
    display: flex;
    justify-content: space-between;
    gap: 0.8rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--border-light);
    font-size: 0.74rem;
}
.abk-progress-stat:last-child {
    border-bottom: none;
}
.abk-progress-stat strong {
    color: var(--text-main);
}
.abk-progress-stat span {
    color: var(--text-muted);
}

/* --- CTA pendaftaran dalam portal --- */
.reg-cta-card {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-left: 5px solid var(--primary);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-premium);
    padding: 1.3rem 1.8rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}
.reg-cta-card strong { font-size: 1rem; }
.reg-cta-card p { font-size: 0.85rem; color: var(--text-muted); margin-top: 0.25rem; max-width: 560px; }

/* --- Kad kesihatan boleh pilih --- */
.health-cards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 0.7rem;
}
.health-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.45rem;
    padding: 1rem 0.6rem;
    border: 1.5px solid var(--border-light);
    border-radius: 12px;
    background: var(--bg-card);
    cursor: pointer;
    text-align: center;
    transition: var(--transition);
    user-select: none;
}
.health-card i { font-size: 1.3rem; color: #9fb3c4; transition: var(--transition); }
.health-card span { font-size: 0.8rem; font-weight: 700; color: var(--text-muted); }
.health-card:hover { border-color: var(--primary); }
.health-card.selected {
    border-color: var(--primary);
    background: #eef6fc;
}
.health-card.selected i, .health-card.selected span { color: var(--primary); }

/* --- Tandatangan digital --- */
.signature-pad {
    width: 100%;
    max-width: 560px;
    height: 160px;
    border: 1.5px dashed var(--border);
    border-radius: 12px;
    background: #fff;
    cursor: crosshair;
    touch-action: none;
    display: block;
}

/* --- Perakuan --- */
.reg-decl-row {
    display: flex;
    gap: 0.7rem;
    align-items: flex-start;
    padding: 0.8rem 1rem;
    border: 1px solid var(--border-light);
    border-radius: 10px;
    margin-bottom: 0.7rem;
    cursor: pointer;
    font-size: 0.88rem;
    color: var(--text-muted);
}
.reg-decl-row input { margin-top: 3px; width: 16px; height: 16px; flex-shrink: 0; }

/* --- Ringkasan bayaran --- */
.pay-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 0.8rem;
}
.pay-summary-item {
    background: var(--bg-main);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    padding: 0.8rem 1rem;
}
.pay-summary-item span {
    display: block;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--text-muted);
    margin-bottom: 0.2rem;
}
.pay-summary-item strong { font-size: 1.02rem; }

/* --- Admin: paparan pendaftaran & dokumen --- */
.abk-reg-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 0.7rem 1.2rem;
}
.abk-reg-grid > div span {
    display: block;
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--text-muted);
}
.abk-reg-grid > div strong { font-size: 0.86rem; }
.abk-docs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 0.8rem;
}
.abk-doc-tile {
    text-align: center;
    border: 1px solid var(--border-light);
    border-radius: 10px;
    padding: 0.6rem;
    background: var(--bg-main);
}
.abk-doc-tile img {
    width: 100%;
    height: 80px;
    object-fit: cover;
    border-radius: 6px;
    cursor: pointer;
}
.abk-doc-empty {
    height: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #cbd5e1;
    font-size: 1.6rem;
}
.abk-doc-tile span { display: block; font-size: 0.72rem; font-weight: 700; margin-top: 0.4rem; }
.abk-doc-tile small { font-size: 0.64rem; color: var(--text-muted); }
.abk-doc-tile.has-doc small { color: var(--accent-teal); font-weight: 700; }

#abk-review-info .adm-summary-item { padding: 0.45rem 0; }

@media (max-width: 700px) {
    .adm-workflow-steps .adm-step {
        flex: 0 0 220px;
        min-height: 56px;
    }
    .abk-section-heading {
        flex-direction: column;
    }
    .abk-section-heading select {
        width: 100%;
    }
    .abk-staff-doc-grid {
        grid-template-columns: 1fr;
    }
}

@media (prefers-reduced-motion: reduce) {
    .abk-progress-meter span {
        transition: none;
    }
}

/* =======================================================
   NAV DROPDOWN (Pelancongan / Lain-Lain Khidmat / Ejen)
   Desktop: hover/klik. Mobile: akordion dalam menu hamburger.
   ======================================================= */
.nav-item-drop { position: relative; }

.nav-drop-btn {
    background: none;
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.nav-caret {
    font-size: 0.6rem;
    transition: var(--transition);
}

.nav-item-drop:hover .nav-caret,
.nav-item-drop.open .nav-caret { transform: rotate(180deg); }

.nav-dropdown {
    position: absolute;
    top: calc(100% + 6px);
    left: 50%;
    transform: translateX(-50%) translateY(10px);
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 14px;
    box-shadow: 0 20px 45px rgba(9, 30, 54, 0.14);
    padding: 0.5rem;
    min-width: 250px;
    list-style: none;
    opacity: 0;
    visibility: hidden;
    transition: var(--transition);
    z-index: 1200;
}

.nav-item-umrah .nav-dropdown {
    width: min(330px, calc(100vw - 24px));
}

/* Jambatan hover supaya dropdown tak tertutup semasa kursor melintasi ruang kosong */
.nav-item-drop::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    height: 10px;
}

.nav-item-drop:hover .nav-dropdown,
.nav-item-drop.open .nav-dropdown {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
}

.nav-drop-link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0.68rem 0.9rem;
    border-radius: 10px;
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 0.82rem;
    color: var(--text-main);
    white-space: nowrap;
    transition: var(--transition);
}

.nav-drop-link i {
    color: var(--primary);
    width: 18px;
    text-align: center;
    font-size: 0.85rem;
}

.nav-drop-link:hover {
    background: rgba(1, 103, 178, 0.07);
    color: var(--primary);
}

/* Nota fokus perkhidmatan (placeholder 'akan datang') */
.service-focus-note {
    max-width: 640px;
    margin: 0 auto 1.5rem;
    background: rgba(240, 146, 33, 0.08);
    border: 1px solid rgba(240, 146, 33, 0.35);
    border-radius: 12px;
    padding: 0.9rem 1.2rem;
    font-size: 0.88rem;
    text-align: center;
}

/* Nun Shoppe — Coming Soon */
.shoppe-hero {
    min-height: 62vh;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 4rem 1.5rem;
}

.shoppe-hero .shoppe-icon {
    width: 92px;
    height: 92px;
    border-radius: 50%;
    background: rgba(1, 103, 178, 0.08);
    color: var(--primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2.4rem;
    margin: 0 auto 1.6rem;
}

@media (max-width: 768px) {
    /* Mobile: dropdown jadi akordion dalam menu penuh */
    .nav-item-drop { width: 100%; text-align: center; }

    .nav-item-drop::after { display: none; }

    .nav-drop-btn { justify-content: center; width: 100%; }

    .nav-dropdown {
        position: static;
        transform: none;
        opacity: 1;
        visibility: hidden;
        display: none;
        box-shadow: none;
        border: none;
        background: var(--bg-main);
        border-radius: 12px;
        margin-top: 0.4rem;
        padding: 0.4rem;
        min-width: 0;
    }

    /* Mobile: hover tidak relevan — hanya klik (.open) membuka akordion */
    .nav-item-drop.open .nav-dropdown {
        display: block;
        visibility: visible;
        transform: none;
    }

    .nav-drop-link { justify-content: center; }
    .nav-item-umrah .nav-dropdown { width: 100%; }
}

/* Empat filter Umrah kekal mudah dibaca dan membalut tanpa overflow halaman. */
.umrah-filter-container {
    flex-wrap: wrap;
    gap: 0.75rem;
}

@media (max-width: 768px) {
    .umrah-filter-container {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        width: 100%;
        gap: 0.6rem;
    }
    .umrah-filter-container .filter-btn {
        width: 100%;
        min-width: 0;
        min-height: 46px;
        padding: 0.65rem 0.5rem;
        white-space: normal;
        line-height: 1.25;
    }
    .package-section-message {
        padding-right: 5.5rem !important;
        padding-left: 1rem !important;
    }
}

/* =======================================================
   PACKAGE EXPLORER — penapis utama + sekunder beranimasi
   ======================================================= */
/* Kepala explorer — jarak spec: subtitle -> 24px -> label */
.pkg-explorer-head {
    margin-bottom: 24px;
}

#pkg-explorer-heading {
    transition: opacity 180ms ease;
}

.pkg-explorer-subtitle {
    color: var(--text-muted);
    font-size: 1rem;
    margin-top: 16px; /* spec: heading -> 16px -> subtitle */
    max-width: 620px;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.6;
    transition: opacity 180ms ease;
}

/* Label konteks penapis — kecil, huruf besar, biru-kelabu */
.pkg-filter-label {
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 2.5px;
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--text-muted);
    font-family: var(--font-heading);
    margin-bottom: 12px; /* spec: label -> 12px -> primary */
}

/* PENAPIS UTAMA — navigasi kategori utama, keutamaan visual tinggi */
.pkg-filter-primary {
    gap: 0.8rem;
    margin-bottom: 18px; /* spec: primary -> 18px -> secondary */
}

.pkg-filter-primary.solo {
    margin-bottom: 32px; /* Semua aktif (tiada secondary): primary -> 32px -> grid */
}

.pkg-primary-btn {
    min-height: 54px;
    padding: 0 2.4rem;
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 200ms ease, color 200ms ease, border-color 200ms ease, box-shadow 200ms ease, transform 200ms ease;
}

.pkg-primary-btn.active {
    box-shadow: 0 10px 26px rgba(1, 103, 178, 0.28);
    transform: translateY(-1px);
}

/* PENAPIS SEKUNDER — subkategori, keutamaan visual lebih ringan */
.pkg-filter-secondary {
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    transform: translateY(-8px);
    transition: max-height 200ms ease, opacity 200ms ease, transform 200ms ease, margin-bottom 200ms ease;
    margin-bottom: 0;
}

.pkg-filter-secondary.open {
    max-height: 90px;
    opacity: 1;
    transform: translateY(0);
    margin-bottom: 32px; /* spec: secondary -> 32px -> grid */
}

.pkg-filter-secondary-row {
    display: flex;
    justify-content: center;
    gap: 0.6rem;
    padding: 4px 2px; /* elak bayang pill terpotong oleh overflow hidden */
}

.pkg-sub-btn {
    min-height: 38px;
    padding: 0 1.3rem;
    font-size: 0.78rem;
    font-weight: 600;
    background: transparent;
    border: 1px solid var(--border-light);
    color: var(--text-muted);
    font-family: var(--font-heading);
    border-radius: 30px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    transition: background 180ms ease, color 180ms ease, border-color 180ms ease;
    white-space: nowrap;
}

.pkg-sub-btn:hover {
    color: var(--primary);
    border-color: var(--primary);
}

.pkg-sub-btn.active {
    background: rgba(1, 103, 178, 0.10);
    color: var(--primary);
    border-color: var(--primary);
    font-weight: 700;
}

/* Kad memudar sedikit semasa penapisan (tiada reload) */
#packages-grid {
    transition: opacity 180ms ease;
}

@media (max-width: 768px) {
    /* Mobile: kedua-dua baris penapis skrol mendatar, tidak membalut, tiada overflow */
    .pkg-filter-primary,
    .pkg-filter-secondary-row {
        justify-content: flex-start;
        flex-wrap: nowrap;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        padding-bottom: 6px;
    }
    .pkg-filter-primary::-webkit-scrollbar,
    .pkg-filter-secondary-row::-webkit-scrollbar { display: none; }
    .pkg-primary-btn, .pkg-sub-btn { flex: 0 0 auto; }
}

/* Ibadah admin sub-panes */
.ibadah-subpane { display: none; }
.ibadah-subpane.active { display: block; }

/* =======================================================
   FLOATING CONSULTATION CTA (gantian butang navbar)
   ======================================================= */
.floating-consult {
    position: fixed;
    right: 24px;
    bottom: 24px;
    height: 56px;
    padding: 0 22px;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--primary);
    color: #fff;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 0.9rem;
    text-decoration: none;
    border-radius: 999px;
    box-shadow: 0 10px 28px rgba(1, 103, 178, 0.34);
    z-index: 900;               /* atas kandungan, bawah overlay modal (10000) */
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.floating-consult:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(1, 103, 178, 0.42);
    color: #fff;
}
.floating-consult i { font-size: 1.1rem; }
.floating-consult-label { white-space: nowrap; }

/* Maskot ustaz "berdiri" di atas pil konsultasi. Diletak dalam <a> supaya
   ia sebahagian kawasan boleh klik, dan bertindih sedikit dengan pil supaya
   nampak seperti berdiri di belakangnya. */
.floating-consult-mascot {
    position: absolute;
    right: 8px;
    bottom: calc(100% - 10px);
    width: 88px;
    height: auto;
    filter: drop-shadow(0 8px 14px rgba(4, 26, 48, 0.3));
    animation: consultMascotBob 3.4s ease-in-out infinite;
    transform-origin: bottom center;
}
@keyframes consultMascotBob {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-5px); }
}
@media (prefers-reduced-motion: reduce) {
    .floating-consult-mascot { animation: none; }
}

@media (max-width: 768px) {
    /* Mobile: butang bulat; label muncul bila hover/tap (focus) */
    .floating-consult {
        right: 18px;
        bottom: 18px;
        width: 56px;
        height: 56px;
        padding: 0;
        justify-content: center;
        border-radius: 50%;
    }
    .floating-consult-label {
        position: absolute;
        right: 66px;
        background: var(--primary);
        padding: 0.4rem 0.8rem;
        border-radius: 8px;
        font-size: 0.8rem;
        opacity: 0;
        pointer-events: none;
        transform: translateX(6px);
        transition: opacity 0.2s ease, transform 0.2s ease;
        box-shadow: 0 6px 16px rgba(1, 103, 178, 0.3);
    }
    .floating-consult:hover .floating-consult-label,
    .floating-consult:focus .floating-consult-label {
        opacity: 1;
        transform: translateX(0);
    }
    .floating-consult-mascot {
        width: 66px;
        right: -2px;
        bottom: calc(100% - 8px);
    }
}

/* ============ v1.4.4 — FLOATING CONSULTATION ENQUIRY MODAL ============ */
.consult-enquiry-content {
    max-width: 760px;
    width: 100%;
    /* overflow-y auto = boleh skrol dalam modal; hidden-x kekal bulat sudut header */
    overflow: hidden auto;
    overscroll-behavior: contain;   /* halang skrol merebak ke halaman belakang */
}
.consult-enquiry-head {
    background: linear-gradient(135deg, var(--primary), #0a4a7a);
    color: #fff;
    padding: 2rem 2rem 1.6rem;
    text-align: center;
    position: sticky;   /* kekal di atas semasa borang diskrol — butang tutup sentiasa nampak */
    top: 0;
    z-index: 3;
}
.ce-close {
    position: absolute;
    top: 14px;
    right: 16px;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: none;
    background: rgba(255, 255, 255, 0.18);
    color: #fff;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 4;
    transition: background 0.2s ease;
}
.ce-close:hover { background: rgba(255, 255, 255, 0.34); }
.consult-enquiry-icon {
    width: 58px;
    height: 58px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.16);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    margin: 0 auto 0.9rem;
}
.consult-enquiry-head h3 {
    color: #fff;
    margin: 0 0 0.4rem;
    font-size: 1.35rem;
}
.consult-enquiry-head p {
    color: rgba(255, 255, 255, 0.86);
    font-size: 0.86rem;
    line-height: 1.55;
    max-width: 440px;
    margin: 0 auto;
}
.consult-enquiry-body {
    padding: 1.6rem 2rem 0.5rem;
}
.consult-enquiry-foot {
    padding: 1.2rem 0 1.6rem;
    display: flex;
    gap: 0.8rem;
    align-items: center;
}
@media (max-width: 768px) {
    .consult-enquiry-content { max-width: 100%; }
    .consult-enquiry-head { padding: 1.6rem 1.3rem 1.3rem; }
    .consult-enquiry-body { padding: 1.3rem 1.3rem 0.4rem; }
    .consult-enquiry-body .adm-grid-2 { grid-template-columns: 1fr; }
}

/* ============ v1.4.5 — CRM WORK QUEUE ============ */
.crm-filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin-bottom: 1rem;
    align-items: center;
}
.crm-filter-bar .form-control { width: auto; min-width: 150px; flex: 0 1 auto; padding: 0.45rem 0.7rem; font-size: 0.82rem; }
.crm-filter-bar #crm-search { flex: 1 1 220px; min-width: 180px; }
.crm-table-wrap { overflow-x: auto; }
.crm-work-table { min-width: 940px; }
.crm-work-table td { vertical-align: middle; }

.crm-next-badge {
    display: inline-block;
    padding: 0.25rem 0.55rem;
    font-size: 0.72rem;
    font-weight: 600;
    border-radius: 6px;
    background: rgba(1, 103, 178, 0.1);
    color: var(--primary);
    border: 1px solid rgba(1, 103, 178, 0.2);
    white-space: nowrap;
}
.crm-actions { display: flex; gap: 0.35rem; }
.crm-act-btn {
    width: 32px; height: 32px;
    border-radius: 8px;
    border: 1px solid var(--border-light);
    background: #fff;
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 0.85rem;
    transition: transform 0.15s ease, background 0.15s ease, color 0.15s ease;
}
.crm-act-btn:hover { transform: translateY(-1px); }
.crm-act-btn.wa { color: #25D366; }
.crm-act-btn.wa:hover { background: #25D366; color: #fff; }
.crm-act-btn.call { color: var(--primary); }
.crm-act-btn.call:hover { background: var(--primary); color: #fff; }
.crm-act-btn.view { color: var(--text-muted); }
.crm-act-btn.view:hover { background: var(--primary); color: #fff; }
.crm-act-btn[disabled] { opacity: 0.4; cursor: not-allowed; }

/* Lead detail drawer */
.crm-drawer-overlay {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(3px);
    z-index: 10001;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease;
}
.crm-drawer-overlay.active { opacity: 1; pointer-events: all; }
.crm-drawer {
    position: absolute;
    top: 0; right: 0;
    height: 100%;
    width: 460px;
    max-width: 92vw;
    background: #fff;
    box-shadow: -10px 0 40px rgba(15, 23, 42, 0.2);
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 0.28s ease;
}
.crm-drawer-overlay.active .crm-drawer { transform: translateX(0); }
.crm-drawer-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 1.2rem 1.4rem;
    background: linear-gradient(135deg, var(--primary), #0a4a7a);
    color: #fff;
}
.crm-drawer-head h3 { margin: 0; color: #fff; font-size: 1.15rem; }
.crm-drawer-close {
    background: rgba(255, 255, 255, 0.18); border: none; color: #fff;
    width: 32px; height: 32px; border-radius: 50%; font-size: 1.4rem; line-height: 1;
    cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.crm-drawer-close:hover { background: rgba(255, 255, 255, 0.34); }
.crm-drawer-body { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 1.2rem 1.4rem; }
.crm-drawer-section { padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-light); }
.crm-drawer-section:last-child { border-bottom: none; margin-bottom: 0; }
.crm-drawer-section h4 { margin: 0 0 0.7rem; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--primary); }
.crm-kv { display: flex; justify-content: space-between; gap: 1rem; padding: 0.3rem 0; font-size: 0.85rem; }
.crm-kv span:first-child { color: var(--text-muted); flex: 0 0 auto; }
.crm-kv strong, .crm-kv span:last-child { text-align: right; word-break: break-word; }
.crm-drawer-quick { display: flex; gap: 0.6rem; margin-top: 0.8rem; }
.crm-drawer-statusbtns { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.crm-drawer-foot {
    display: flex; gap: 0.8rem; justify-content: flex-end;
    padding: 1rem 1.4rem; border-top: 1px solid var(--border-light);
    background: #fff;
}
@media (max-width: 768px) {
    .crm-filter-bar .form-control { min-width: 0; flex: 1 1 45%; }
    .crm-drawer { width: 100%; max-width: 100%; }
}

/* ============ v1.4.6 — TERMS & CONDITIONS ============ */
.terms-content { font-size: 0.88rem; line-height: 1.7; color: var(--text-main); }
.terms-content p { margin: 0 0 0.8rem; }
.terms-content p:last-child { margin-bottom: 0; }
.terms-content .terms-list { margin: 0 0 0.8rem; padding-left: 1.4rem; }
.terms-content .terms-list li { padding: 0.15rem 0; }
.terms-collapse {
    border: 1px solid var(--border-light);
    border-radius: 10px;
    padding: 0.4rem 1rem;
    background: var(--bg-soft, #f8fafc);
}
.terms-collapse > summary {
    cursor: pointer;
    font-weight: 700;
    color: var(--primary);
    padding: 0.6rem 0;
    list-style: none;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.terms-collapse > summary::-webkit-details-marker { display: none; }
.terms-collapse > summary::after {
    content: "\f078";
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    margin-left: auto;
    font-size: 0.7rem;
    transition: transform 0.2s ease;
}
.terms-collapse[open] > summary::after { transform: rotate(180deg); }
.terms-collapse .terms-content { padding: 0.4rem 0 0.8rem; }

.terms-agree-wrap {
    background: rgba(1, 103, 178, 0.05);
    border: 1px solid rgba(1, 103, 178, 0.18);
    border-radius: 8px;
    padding: 0.8rem 1rem;
    margin-bottom: 1rem;
}
.terms-agree {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    font-size: 0.85rem;
    color: var(--text-main);
    cursor: pointer;
    margin: 0;
}
.terms-agree input[type="checkbox"] {
    margin-top: 0.15rem;
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
    accent-color: var(--primary);
    cursor: pointer;
}
.terms-agree a { color: var(--primary); font-weight: 700; text-decoration: underline; }

/* v1.4.7 — terms templates + admin live preview */
.terms-template-row { display: flex; gap: 0.6rem; align-items: center; }
.terms-template-row select { flex: 1 1 auto; }
.terms-template-row .btn { flex: 0 0 auto; white-space: nowrap; }
.terms-preview {
    border: 1px solid var(--border-light);
    border-radius: 8px;
    background: #ffffff;
    padding: 0.9rem 1.1rem;
    max-height: 240px;
    overflow-y: auto;
    overscroll-behavior: contain;
}
.terms-preview-empty { color: var(--text-muted); font-style: italic; font-size: 0.85rem; }
@media (max-width: 768px) {
    .terms-template-row { flex-wrap: wrap; }
    .terms-template-row .btn { width: 100%; }
}

/* ============ v1.5.0 — PAYMENT ENGINE ============ */
.pg-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 1.5rem; }
.pg-url { display: flex; flex-direction: column; gap: 2px; margin-bottom: 0.7rem; }
.pg-url span { font-size: 0.72rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.03em; }
.pg-url code { background: rgba(1,103,178,0.06); border: 1px solid var(--border-light); border-radius: 6px; padding: 0.4rem 0.6rem; font-size: 0.76rem; word-break: break-all; }
@media (max-width: 768px) { .pg-grid { grid-template-columns: 1fr; } }

/* Payment result page */
.pay-result-icon { width: 88px; height: 88px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 2.6rem; margin: 0 auto 1.2rem; }
.pay-result-icon.ok { background: rgba(16,185,129,0.12); color: #10b981; }
.pay-result-icon.fail { background: rgba(239,68,68,0.12); color: #ef4444; }
.pay-result-icon.warn { background: rgba(245,158,11,0.12); color: #f59e0b; }
.pay-result-card h2 { margin: 0 0 0.5rem; }
.pay-result-amount { font-size: 2rem; font-weight: 800; color: var(--primary); margin: 0.6rem 0; }

/* Receipt — premium redesign */
.receipt-modal-content { padding: 0 !important; overflow: hidden auto; overscroll-behavior: contain; }
.receipt-close { color: #fff !important; z-index: 6; opacity: 0.9; }
.receipt-close:hover { opacity: 1; color: #fff !important; }
.rcpt { text-align: left; }
.rcpt-head {
    background: linear-gradient(135deg, var(--primary), #0a4a7a);
    color: #fff; text-align: center; padding: 2rem 1.5rem 1.6rem;
}
.rcpt-check {
    width: 60px; height: 60px; border-radius: 50%;
    background: rgba(255,255,255,0.18); color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.6rem; margin: 0 auto 0.8rem;
    box-shadow: 0 0 0 6px rgba(255,255,255,0.10);
}
.rcpt-head h3 { color: #fff; margin: 0 0 0.2rem; font-size: 1.3rem; }
.rcpt-head p { color: rgba(255,255,255,0.85); font-size: 0.8rem; margin: 0 0 0.9rem; }
.rcpt-no {
    display: inline-block; font-family: monospace; font-weight: 700; letter-spacing: 0.5px;
    background: rgba(255,255,255,0.16); border: 1px dashed rgba(255,255,255,0.5);
    padding: 0.35rem 1rem; border-radius: 8px; font-size: 0.9rem;
}
.rcpt-amount {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    padding: 1.3rem 1.5rem; background: var(--bg-soft, #f8fafc);
    border-bottom: 1px dashed var(--border-light);
    position: relative;
}
/* perforated ticket edge */
.rcpt-amount::before, .rcpt-amount::after {
    content: ""; position: absolute; bottom: -11px; width: 22px; height: 22px;
    border-radius: 50%; background: rgba(15,23,42,0.5);
}
.rcpt-amount::before { left: -11px; }
.rcpt-amount::after { right: -11px; }
.rcpt-amount span { font-size: 0.78rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; }
.rcpt-amount strong { font-size: 2rem; font-weight: 800; color: var(--primary); }
.rcpt-body { padding: 1.2rem 1.6rem 0.6rem; }
.rcpt-row { display: flex; justify-content: space-between; gap: 1rem; padding: 0.5rem 0; border-bottom: 1px solid var(--border-light); font-size: 0.88rem; }
.rcpt-row:last-child { border-bottom: none; }
.rcpt-row span { color: var(--text-muted); flex: 0 0 auto; }
.rcpt-row b { text-align: right; word-break: break-word; }
.rcpt-foot { font-size: 0.72rem; color: var(--text-muted); text-align: center; padding: 0.4rem 1.5rem 1.2rem; margin: 0; }
.rcpt-foot i { color: var(--accent-teal, #10b981); }
.receipt-actions { display: flex; gap: 0.6rem; justify-content: center; flex-wrap: wrap; padding: 0 1.5rem 1.5rem; }

/* Pay button used across portal/detail */
.btn-pay-online { background: #10b981; color: #fff; border-color: #10b981; }
.btn-pay-online:hover { background: #0ea371; color: #fff; }

/* ============================================================
   NUN SHOPPE v2.0 — Premium storefront
   ============================================================ */
.btn-lg { padding: 0.85rem 1.8rem; font-size: 0.95rem; }
.btn-ghost-light { background: rgba(255,255,255,0.14); color: #fff; border: 1px solid rgba(255,255,255,0.5); }
.btn-ghost-light:hover { background: rgba(255,255,255,0.24); color: #fff; }

/* Hero slider */
.shop-hero { position: relative; height: 62vh; min-height: 420px; max-height: 640px; overflow: hidden; background: #0a2540; }
.shop-hero-track { position: absolute; inset: 0; }
.shop-hero-slide { position: absolute; inset: 0; opacity: 0; transition: opacity 0.8s ease; display: flex; align-items: center; }
.shop-hero-slide.active { opacity: 1; }
.shop-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.shop-hero-slide::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(4,20,40,calc(var(--ov, 0.5) + 0.15)), rgba(4,20,40,calc(var(--ov, 0.5) - 0.15))); }
.shop-hero-inner { position: relative; z-index: 2; color: #fff; max-width: 620px; }
.shop-hero-slide.active .shop-hero-inner { animation: shopHeroIn 0.8s ease both; }
@keyframes shopHeroIn { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
.shop-hero-eyebrow { display: inline-block; font-size: 0.75rem; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: var(--accent-orange, #f09221); margin-bottom: 1rem; }
.shop-hero-inner h1 { font-size: clamp(2rem, 5vw, 3.4rem); line-height: 1.08; margin: 0 0 1rem; color: #fff; }
.shop-hero-inner p { font-size: 1.05rem; line-height: 1.6; opacity: 0.92; margin: 0 0 1.8rem; max-width: 520px; }
.shop-hero-btns { display: flex; gap: 0.8rem; flex-wrap: wrap; }
.shop-hero-dots { position: absolute; bottom: 20px; left: 0; right: 0; display: flex; gap: 8px; justify-content: center; z-index: 3; }
.shop-hero-dots button { width: 10px; height: 10px; border-radius: 50%; border: none; background: rgba(255,255,255,0.45); cursor: pointer; transition: all 0.2s; }
.shop-hero-dots button.active { background: #fff; width: 28px; border-radius: 6px; }

/* Sections */
.shop-section { padding: 3rem 0 1rem; }
.shop-section-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 1.5rem; gap: 1rem; }
.shop-section-head h2 { font-size: 1.6rem; margin: 0; color: var(--text-main, #0f172a); }
.shop-viewall { font-size: 0.86rem; font-weight: 600; color: var(--primary); white-space: nowrap; }

/* Category grid */
.shop-cat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 1rem; }
.shop-cat-card { display: flex; flex-direction: column; align-items: center; gap: 0.7rem; padding: 1.6rem 1rem; border: 1px solid var(--border-light); border-radius: 16px; background: #fff; text-align: center; transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s; }
.shop-cat-card:hover { transform: translateY(-4px); box-shadow: 0 14px 34px rgba(1,103,178,0.12); border-color: var(--primary); }
.shop-cat-card img { width: 66px; height: 66px; border-radius: 50%; object-fit: cover; }
.shop-cat-icon { width: 66px; height: 66px; border-radius: 50%; background: rgba(1,103,178,0.08); color: var(--primary); display: flex; align-items: center; justify-content: center; font-size: 1.6rem; }
.shop-cat-card span { font-weight: 600; font-size: 0.92rem; color: var(--text-main); }

/* Product grid + card */
.shop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1.4rem; }
.shop-card { border: 1px solid var(--border-light); border-radius: 16px; overflow: hidden; background: #fff; cursor: pointer; transition: transform 0.22s ease, box-shadow 0.22s ease; display: flex; flex-direction: column; }
.shop-card:hover { transform: translateY(-6px); box-shadow: 0 20px 44px rgba(15,23,42,0.13); }
.shop-card-media { position: relative; aspect-ratio: 1/1; background: #f1f5f9; overflow: hidden; }
.shop-card-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; }
.shop-card:hover .shop-card-media img { transform: scale(1.06); }
.shop-card-noimg { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-size: 2rem; }
.shop-card-labels { position: absolute; top: 10px; left: 10px; display: flex; flex-direction: column; gap: 5px; align-items: flex-start; }
.shop-label { font-size: 0.64rem; font-weight: 800; letter-spacing: 0.5px; padding: 3px 8px; border-radius: 5px; color: #fff; text-transform: uppercase; }
.shop-label-new { background: #10b981; } .shop-label-best { background: #f09221; } .shop-label-promo { background: #ef4444; }
.shop-label-limited { background: #8b5cf6; } .shop-label-excl { background: #0f172a; } .shop-label-pre { background: #0ea5e9; } .shop-label-low { background: #eab308; }
.shop-card-oos { position: absolute; inset: 0; background: rgba(255,255,255,0.72); display: flex; align-items: center; justify-content: center; font-weight: 700; color: #64748b; }
.shop-card-body { padding: 0.9rem 1rem 1.1rem; display: flex; flex-direction: column; gap: 0.3rem; flex: 1; }
.shop-card-brand { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-muted); }
.shop-card-name { font-size: 0.92rem; font-weight: 600; line-height: 1.35; margin: 0; color: var(--text-main); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.shop-card-price { display: flex; align-items: baseline; gap: 0.5rem; margin-top: auto; padding-top: 0.4rem; }
.shop-card-price strong { font-size: 1.05rem; color: var(--primary); }
.shop-card-price s { font-size: 0.82rem; color: var(--text-muted); }
.shop-card-add { margin-top: 0.6rem; border: 1px solid var(--primary); background: #fff; color: var(--primary); border-radius: 8px; padding: 0.5rem; font-weight: 600; font-size: 0.82rem; cursor: pointer; transition: background 0.2s, color 0.2s; }
.shop-card-add:hover { background: var(--primary); color: #fff; }
.shop-card-add[disabled] { opacity: 0.4; cursor: not-allowed; }

/* Promo banner */
.shop-promo { border-radius: 20px; padding: 3rem; color: #fff; background-size: cover; background-position: center; }
.shop-promo-tag { display: inline-block; font-size: 0.72rem; font-weight: 800; letter-spacing: 2px; background: var(--accent-orange, #f09221); padding: 4px 12px; border-radius: 20px; margin-bottom: 0.8rem; }
.shop-promo h2 { color: #fff; font-size: 2rem; margin: 0 0 0.4rem; }
.shop-promo p { opacity: 0.92; margin: 0 0 1.4rem; }

/* Listing */
.shop-listing-head { display: flex; justify-content: space-between; align-items: flex-end; flex-wrap: wrap; gap: 1rem; margin-bottom: 1.5rem; }
.shop-listing-head h1 { margin: 0; font-size: 1.8rem; }
.shop-listing-head p { margin: 4px 0 0; color: var(--text-muted); font-size: 0.85rem; }
.shop-listing-tools { display: flex; gap: 0.6rem; flex-wrap: wrap; }
.shop-listing-tools .form-control { width: auto; }
.shop-listing-wrap { display: grid; grid-template-columns: 220px 1fr; gap: 2rem; align-items: start; }
.shop-filters { position: sticky; top: 100px; }
.shop-filters h4 { margin: 0 0 0.7rem; font-size: 0.9rem; }
.shop-filter-link { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 0.7rem; border-radius: 8px; color: var(--text-main); font-size: 0.88rem; margin-bottom: 2px; }
.shop-filter-link:hover { background: rgba(1,103,178,0.06); }
.shop-filter-link.active { background: var(--primary); color: #fff; }
.shop-filter-link.active i { color: #fff; }
.shop-filter-link i { color: var(--primary); width: 18px; }

/* Detail */
.shop-detail { padding: 2rem 0 4rem; }
.shop-back { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.85rem; color: var(--text-muted); margin-bottom: 1.2rem; }
.shop-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem; align-items: start; }
.shop-gallery-main { aspect-ratio: 1/1; border-radius: 18px; overflow: hidden; background: #f1f5f9; }
.shop-gallery-main img { width: 100%; height: 100%; object-fit: cover; }
.shop-gallery-thumbs { display: flex; gap: 0.6rem; margin-top: 0.8rem; flex-wrap: wrap; }
.shop-gallery-thumbs img { width: 70px; height: 70px; object-fit: cover; border-radius: 10px; cursor: pointer; border: 2px solid transparent; }
.shop-gallery-thumbs img.active { border-color: var(--primary); }
.shop-detail-labels { display: flex; gap: 6px; margin-bottom: 0.6rem; }
.shop-detail-brand { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 1px; color: var(--text-muted); }
.shop-detail-info h1 { font-size: 1.8rem; margin: 0.2rem 0 0.8rem; }
.shop-detail-price { display: flex; align-items: baseline; gap: 0.7rem; margin-bottom: 1rem; }
.shop-detail-price strong { font-size: 1.9rem; color: var(--primary); }
.shop-detail-price s { color: var(--text-muted); }
.shop-off { background: #fee2e2; color: #ef4444; font-weight: 700; font-size: 0.8rem; padding: 2px 8px; border-radius: 6px; }
.shop-detail-short { color: var(--text-muted); line-height: 1.7; margin-bottom: 1.2rem; }
.shop-variant { margin-bottom: 1rem; }
.shop-variant label { display: block; font-size: 0.82rem; font-weight: 600; margin-bottom: 0.4rem; }
.shop-variant-opts { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.shop-variant-opt { padding: 0.45rem 1rem; border: 1px solid var(--border-light); border-radius: 8px; background: #fff; cursor: pointer; font-size: 0.85rem; }
.shop-variant-opt.active { border-color: var(--primary); background: rgba(1,103,178,0.06); color: var(--primary); font-weight: 600; }
.shop-detail-buy { display: flex; gap: 0.8rem; align-items: center; margin: 1.2rem 0; }
.shop-qty { display: inline-flex; align-items: center; border: 1px solid var(--border-light); border-radius: 8px; overflow: hidden; }
.shop-qty button { width: 40px; height: 44px; border: none; background: #f8fafc; font-size: 1.1rem; cursor: pointer; }
.shop-qty input { width: 52px; height: 44px; border: none; text-align: center; font-weight: 600; }
.shop-qty.sm button { width: 28px; height: 28px; font-size: 0.9rem; }
.shop-qty.sm span { padding: 0 0.6rem; font-weight: 600; }
.shop-detail-meta { display: flex; flex-direction: column; gap: 0.4rem; font-size: 0.85rem; color: var(--text-muted); border-top: 1px solid var(--border-light); padding-top: 1rem; }
.shop-detail-tabs { margin-top: 2.5rem; max-width: 800px; }
.shop-acc { border-bottom: 1px solid var(--border-light); }
.shop-acc > summary { cursor: pointer; padding: 1rem 0; font-weight: 700; list-style: none; display: flex; justify-content: space-between; }
.shop-acc > summary::-webkit-details-marker { display: none; }
.shop-acc > summary::after { content: "\f078"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: 0.7rem; }
.shop-acc[open] > summary::after { transform: rotate(180deg); }
.shop-acc > div { padding: 0 0 1rem; color: var(--text-main); line-height: 1.7; font-size: 0.9rem; }
.shop-spec { width: 100%; border-collapse: collapse; }
.shop-spec td { padding: 0.5rem 0; border-bottom: 1px solid var(--border-light); font-size: 0.88rem; }
.shop-spec td:first-child { color: var(--text-muted); width: 40%; }

/* Cart FAB */
.shop-cart-fab { position: fixed; right: 24px; bottom: 90px; width: 58px; height: 58px; border-radius: 50%; background: var(--primary); color: #fff; border: none; cursor: pointer; box-shadow: 0 10px 28px rgba(1,103,178,0.4); z-index: 905; display: flex; align-items: center; justify-content: center; font-size: 1.3rem; }
.shop-cart-count { position: absolute; top: -4px; right: -4px; background: var(--accent-orange, #f09221); color: #fff; font-size: 0.72rem; font-weight: 700; min-width: 20px; height: 20px; border-radius: 10px; display: flex; align-items: center; justify-content: center; padding: 0 5px; }

/* Cart drawer — true 3-row grid (header / scrollable items / summary).
   NOTE: the drawer header is a semantic <header>, so the global
   `header { position:fixed }` rule leaks in — it is explicitly neutralised
   below so the header never floats over the first cart item. */
.shop-drawer-overlay { position: fixed; inset: 0; width: 100vw; height: 100dvh; background: rgba(15,23,42,0.5); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); z-index: 10050; opacity: 0; pointer-events: none; transition: opacity 0.25s; overflow: hidden; }
.shop-drawer-overlay.active { opacity: 1; pointer-events: all; }
.shop-drawer { position: fixed; inset: 0 0 0 auto; height: 100dvh; width: min(460px, 100vw); max-width: 100vw; background: #fff; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; overflow: hidden; z-index: 10051; transform: translateX(100%); transition: transform 0.28s ease; box-shadow: -10px 0 40px rgba(15,23,42,0.2); }
.shop-drawer-overlay.active .shop-drawer { transform: none; }
/* header row — reset the leaked global website header styles */
.shop-drawer > header.shop-drawer-head, .shop-drawer-head {
    position: relative !important; top: auto !important; left: auto !important; width: auto !important;
    z-index: 2; background: #fff; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; box-shadow: none;
    display: flex; align-items: center; justify-content: space-between; padding: 1.1rem 1.4rem; border-bottom: 1px solid var(--border-light);
}
.shop-drawer-head h3 { margin: 0; font-size: 1.1rem; color: var(--primary); }
.shop-drawer-close { background: none; border: none; font-size: 1.6rem; cursor: pointer; color: var(--text-muted); line-height: 1; padding: 0; }
.shop-drawer-body { min-height: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; padding: 16px 24px; }
.shop-drawer-foot { position: relative; z-index: 2; border-top: 1px solid var(--border-light); padding: 1.1rem 1.4rem; background: #fff; }
.shop-drawer-foot:empty { display: none; }
.shop-cart-empty { text-align: center; padding: 3rem 1rem; color: var(--text-muted); }
.shop-cart-empty i { font-size: 2.4rem; margin-bottom: 1rem; opacity: 0.5; }
.shop-cart-item { display: flex; gap: 0.8rem; padding: 0.9rem 0; border-bottom: 1px solid var(--border-light); }
.shop-cart-item img { width: 64px; height: 64px; object-fit: cover; border-radius: 10px; flex: 0 0 auto; }
.shop-cart-item-info { flex: 1; display: flex; flex-direction: column; gap: 0.3rem; }
.shop-cart-item-info strong { font-size: 0.88rem; }
.shop-cart-var { font-size: 0.75rem; color: var(--text-muted); }
.shop-cart-item-bottom { display: flex; align-items: center; justify-content: space-between; margin-top: 0.2rem; }
.shop-cart-remove { background: none; border: none; color: #cbd5e1; cursor: pointer; align-self: flex-start; }
.shop-cart-remove:hover { color: #ef4444; }
.shop-cart-line { display: flex; justify-content: space-between; padding: 0.35rem 0; font-size: 0.9rem; }
.shop-cart-line.total { border-top: 1px solid var(--border-light); margin-top: 0.4rem; padding-top: 0.7rem; font-size: 1.05rem; }
.shop-cart-line.total strong { color: var(--primary); }

/* Checkout modal — centered, never overflows the viewport, internal scroll only */
.shop-checkout-overlay.modal { padding: 24px; align-items: center; justify-content: center; }
.shop-checkout-modal { position: relative; width: min(1180px, calc(100vw - 48px)); max-width: 1180px; max-height: calc(100dvh - 48px); background: #fff; border-radius: 24px; overflow: hidden; box-sizing: border-box; display: flex; flex-direction: column; box-shadow: 0 30px 80px rgba(15,23,42,0.28); transform: scale(0.97); transition: transform 0.2s ease; }
.shop-checkout-overlay.active .shop-checkout-modal { transform: none; }
/* reset the leaked global `header { position:fixed }` for the checkout header */
.shop-checkout-modal > header.shop-checkout-header, .shop-checkout-header {
    position: relative !important; top: auto !important; left: auto !important; width: auto !important;
    z-index: 2; background: #fff; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; box-shadow: none;
    flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; padding: 1.1rem 1.8rem; border-bottom: 1px solid var(--border-light);
}
.shop-checkout-header h3 { margin: 0; color: var(--primary); }
.shop-checkout-close { background: none; border: none; font-size: 1.7rem; line-height: 1; cursor: pointer; color: var(--text-muted); }
.shop-checkout-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; padding: 1.8rem; }
.shop-checkout-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(320px, 0.8fr); gap: 32px; align-items: start; }
.shop-checkout-grid > * { min-width: 0; }
.shop-checkout-form { min-width: 0; }
.shop-checkout-form h4 { margin: 0 0 0.8rem; font-size: 1rem; }
.shop-checkout-form .form-control, .shop-checkout-form input, .shop-checkout-form textarea, .shop-checkout-form select { width: 100%; box-sizing: border-box; }
.shop-checkout-summary { background: var(--bg-soft, #f8fafc); border-radius: 16px; padding: 1.4rem; position: sticky; top: 0; align-self: start; min-width: 0; }
.shop-checkout-summary h4 { margin: 0 0 1rem; }
.shop-sum-item { display: flex; gap: 0.7rem; align-items: center; padding: 0.5rem 0; border-bottom: 1px solid var(--border-light); }
.shop-sum-item img { width: 44px; height: 44px; object-fit: cover; border-radius: 8px; flex: 0 0 auto; }
.shop-sum-item div { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.shop-sum-item span { font-size: 0.84rem; }
.shop-sum-item small { color: var(--text-muted); font-size: 0.75rem; }
.shop-pay-opt { display: flex; align-items: center; gap: 0.6rem; border: 1px solid var(--border-light); border-radius: 10px; padding: 0.7rem 0.9rem; margin-bottom: 0.5rem; cursor: pointer; font-size: 0.9rem; }
.shop-pay-opt input { accent-color: var(--primary); }
.field-error { border-color: #ef4444 !important; }
.field-error-msg { color: #ef4444; font-size: 0.74rem; margin-top: 3px; }
/* Preparing-payment loading overlay */
.shop-pay-loading { position: absolute; inset: 0; background: rgba(255,255,255,0.96); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.6rem; border-radius: 24px; z-index: 3; }
.shop-pay-loading .spin { font-size: 2rem; color: var(--primary); }
.shop-pay-step { font-size: 0.9rem; color: var(--text-muted); display: flex; align-items: center; gap: 0.5rem; }
.shop-pay-step.done { color: #10b981; }

@media (max-width: 980px) {
    .shop-detail-grid { grid-template-columns: 1fr; }
    .shop-listing-wrap { grid-template-columns: 1fr; }
    .shop-filters { position: static; display: flex; gap: 0.5rem; overflow-x: auto; padding-bottom: 0.5rem; }
    .shop-filters h4 { display: none; }
    .shop-filter-link { white-space: nowrap; border: 1px solid var(--border-light); }
    .shop-checkout-grid { grid-template-columns: 1fr; }
    .shop-checkout-summary { position: static; }
}
@media (max-width: 640px) {
    .shop-checkout-overlay.modal { padding: 8px; }
    .shop-checkout-modal { width: calc(100vw - 16px); max-height: calc(100dvh - 16px); border-radius: 16px; }
    .shop-checkout-header { padding: 1rem 1.2rem; }
    .shop-checkout-scroll { padding: 1.1rem; }
    .shop-checkout-form .adm-grid-2 { grid-template-columns: 1fr; }
    .shop-pay-loading { border-radius: 16px; }
}
@media (max-width: 600px) {
    .shop-hero { height: 78vh; min-height: 460px; }
    .shop-grid { grid-template-columns: repeat(2, 1fr); gap: 0.8rem; }
    .shop-card-add { font-size: 0.74rem; }
    .shop-cat-grid { grid-template-columns: repeat(3, 1fr); }
    .shop-promo { padding: 2rem 1.4rem; }
    .shop-section-head h2 { font-size: 1.3rem; }
}

/* Nun Shoppe admin CMS */
.shop-subpane { display: none; }
.shop-subpane.active { display: block; }
.shop-admin-slide { display: flex; align-items: center; gap: 1rem; border: 1px solid var(--border-light); border-radius: 12px; padding: 0.7rem 1rem; }
.shop-admin-slide img { width: 90px; height: 52px; object-fit: cover; border-radius: 8px; flex: 0 0 auto; }
.shop-admin-block { display: flex; align-items: center; gap: 0.8rem; border: 1px solid var(--border-light); border-radius: 12px; padding: 0.7rem 1rem; background: #fff; }
.shop-block-move { display: flex; flex-direction: column; }
.shop-block-move button { border: none; background: none; cursor: pointer; color: var(--text-muted); padding: 1px 4px; }
.shop-block-move button:disabled { opacity: 0.3; cursor: default; }

/* ============ NUN SHOPPE — PHASE 2 (wishlist / ratings / reviews / coupons) ============ */
.shop-wish { position: absolute; top: 10px; right: 10px; width: 34px; height: 34px; border-radius: 50%; background: rgba(255,255,255,0.92); border: none; color: #94a3b8; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 0.95rem; box-shadow: 0 2px 8px rgba(15,23,42,0.12); transition: transform 0.15s, color 0.15s; z-index: 2; }
.shop-wish:hover { transform: scale(1.1); }
.shop-wish.active { color: #ef4444; }
.shop-wish.detail { position: static; width: 52px; height: 52px; border: 1px solid var(--border-light); font-size: 1.2rem; flex: 0 0 auto; }
.shop-stars { color: #f59e0b; font-size: 0.78rem; letter-spacing: 1px; }
.shop-stars.lg { font-size: 1.1rem; }
.shop-card-rating { display: flex; align-items: center; gap: 0.35rem; font-size: 0.72rem; color: var(--text-muted); }
.shop-detail-rating { display: inline-flex; align-items: center; gap: 0.5rem; margin-bottom: 0.6rem; font-size: 0.85rem; color: var(--text-muted); }
.shop-wish-fab { position: fixed; right: 24px; bottom: 158px; width: 52px; height: 52px; border-radius: 50%; background: #fff; color: #ef4444; border: 1px solid var(--border-light); cursor: pointer; box-shadow: 0 8px 22px rgba(15,23,42,0.15); z-index: 905; display: flex; align-items: center; justify-content: center; font-size: 1.15rem; }
.shop-reviews { margin-top: 2.5rem; max-width: 800px; }
.shop-reviews-summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: 1rem 0 1.4rem; border-bottom: 1px solid var(--border-light); margin-bottom: 1.2rem; }
.shop-reviews-avg { display: flex; align-items: center; gap: 0.6rem; }
.shop-reviews-avg strong { font-size: 2rem; color: var(--primary); }
.shop-reviews-avg span { color: var(--text-muted); font-size: 0.85rem; }
.shop-review-form { background: var(--bg-soft, #f8fafc); border-radius: 12px; padding: 1.2rem; margin-bottom: 1.4rem; }
.shop-review { padding: 1rem 0; border-bottom: 1px solid var(--border-light); }
.shop-review-head { display: flex; align-items: center; gap: 0.7rem; }
.shop-review-title { font-weight: 600; margin-top: 0.3rem; }
.shop-review p { color: var(--text-main); line-height: 1.6; margin: 0.3rem 0; font-size: 0.9rem; }
.shop-review-date { font-size: 0.72rem; color: var(--text-muted); }
.shop-coupon-row { display: flex; gap: 0.5rem; margin: 0.8rem 0 0.3rem; }
.shop-coupon-row input { flex: 1; }

/* v2.2 — mobile responsive polish (production hardening) */
@media (max-width: 640px) {
    .testi-card { padding: 1.6rem; }
    .event-card-body { padding: 1.1rem; }
    /* filter button rows must wrap, never overflow the page */
    .filter-container { flex-wrap: wrap; }
    .pkg-filter-primary, .pkg-filter-secondary { flex-wrap: wrap; }
}
/* global hard safety: no element may force the page wider than the viewport */
html, body { max-width: 100%; overflow-x: clip; }

/* ============ NUN SHOPPE — MOBILE APP CHROME (bottom nav + buy bar) ============ */
.shop-bottom-nav { position: fixed; left: 0; right: 0; bottom: 0; z-index: 930; background: #fff; border-top: 1px solid var(--border-light); display: flex; padding-bottom: env(safe-area-inset-bottom); box-shadow: 0 -4px 16px rgba(0,0,0,0.05); }
.shop-bottom-nav > * { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 0.5rem 0; background: none; border: none; cursor: pointer; color: var(--text-muted); font-size: 0.66rem; position: relative; text-decoration: none; font-family: inherit; }
.shop-bottom-nav > *.active { color: var(--primary); }
.shop-bottom-nav i { font-size: 1.15rem; }
.shop-bnav-badge { position: absolute; top: 1px; right: calc(50% - 22px); background: var(--accent-orange, #f09221); color: #fff; font-size: 0.6rem; min-width: 16px; height: 16px; border-radius: 8px; display: flex; align-items: center; justify-content: center; padding: 0 4px; font-weight: 700; }

/* mobile sticky purchase bar (product detail) */
.shop-buybar { display: none; }

@media (max-width: 900px) {
    .shop-buybar {
        display: flex; gap: 0.6rem; position: fixed; left: 0; right: 0; bottom: 0; z-index: 935;
        padding: 0.7rem 1rem calc(0.7rem + env(safe-area-inset-bottom)); background: #fff;
        border-top: 1px solid var(--border-light); box-shadow: 0 -6px 20px rgba(0,0,0,0.06);
    }
    .shop-buybar button { flex: 1; padding: 0.85rem; border-radius: 12px; font-weight: 700; border: none; cursor: pointer; font-size: 0.9rem; }
    .shop-buybar-cart { background: #fff; border: 1.5px solid var(--primary); color: var(--primary); flex: 0 0 40%; }
    .shop-buybar-buy { background: var(--primary); color: #fff; }
    .shop-buybar button[disabled] { opacity: 0.5; cursor: not-allowed; }
    /* the inline desktop buy row is hidden on mobile; the sticky bar replaces it */
    .shop-detail-buy { display: none; }
    /* leave room so content is never hidden behind the fixed bottom nav / buy bar */
    #shoppe-view { padding-bottom: 68px; }
    #shoppe-view .shop-detail { padding-bottom: 88px; }
}
@media (min-width: 901px) {
    .shop-bottom-nav { display: none !important; }
}

/* ============ NUN SHOPPE — customer account / orders ============ */
.shop-acct-login { text-align: center; border: 1px solid var(--border-light); border-radius: 18px; padding: 2.2rem 1.6rem; background: #fff; }
.shop-acct-login-icon { width: 60px; height: 60px; border-radius: 50%; background: rgba(1,103,178,0.08); color: var(--primary); display: flex; align-items: center; justify-content: center; font-size: 1.6rem; margin: 0 auto 1rem; }
.shop-acct-login h2 { margin: 0 0 0.4rem; font-size: 1.3rem; }
.shop-acct-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.4rem; flex-wrap: wrap; }
.shop-acct-head h1 { margin: 0; font-size: 1.6rem; }
.shop-acct-logout { background: none; border: 1px solid var(--border-light); border-radius: 20px; padding: 0.4rem 0.9rem; font-size: 0.8rem; color: var(--text-muted); cursor: pointer; display: inline-flex; align-items: center; gap: 0.4rem; }
.shop-orders-loading { text-align: center; padding: 3rem; color: var(--text-muted); }
.shop-empty { text-align: center; padding: 3.5rem 1rem; color: var(--text-muted); }
.shop-empty i { font-size: 2.6rem; opacity: 0.4; margin-bottom: 1rem; }
.shop-empty h3 { margin: 0 0 0.4rem; color: var(--text-main); }
.shop-empty .btn { margin-top: 1.2rem; }

.shop-order-list { display: flex; flex-direction: column; gap: 0.9rem; }
.shop-order-card { display: block; border: 1px solid var(--border-light); border-radius: 14px; padding: 1rem 1.1rem; background: #fff; text-decoration: none; color: inherit; transition: box-shadow 0.2s, transform 0.2s; }
.shop-order-card:hover { box-shadow: 0 12px 30px rgba(15,23,42,0.08); transform: translateY(-2px); }
.shop-order-card-top { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; }
.shop-order-card-top strong { font-family: monospace; }
.shop-order-card-mid { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 0.7rem; }
.shop-order-thumbs { display: flex; }
.shop-order-thumbs img { width: 42px; height: 42px; object-fit: cover; border-radius: 8px; border: 2px solid #fff; margin-left: -8px; }
.shop-order-thumbs img:first-child { margin-left: 0; }
.shop-order-meta { display: flex; flex-direction: column; align-items: flex-end; }
.shop-order-meta span { font-size: 0.76rem; color: var(--text-muted); }
.shop-order-meta strong { color: var(--primary); }
.shop-order-card-cta { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; margin-top: 0.8rem; padding-top: 0.7rem; border-top: 1px dashed var(--border-light); font-size: 0.82rem; color: var(--text-muted); }

.shop-od-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin: 0.5rem 0 1.2rem; }
.shop-od-head h1 { margin: 0; font-size: 1.4rem; font-family: monospace; }
.shop-od-card { border: 1px solid var(--border-light); border-radius: 14px; padding: 1.1rem 1.2rem; margin-bottom: 1rem; background: #fff; }
.shop-od-card h4 { margin: 0 0 0.8rem; font-size: 0.95rem; }
.shop-od-item { display: flex; gap: 0.8rem; align-items: center; padding: 0.5rem 0; border-bottom: 1px solid var(--border-light); }
.shop-od-item:last-child { border-bottom: none; }
.shop-od-item img { width: 48px; height: 48px; object-fit: cover; border-radius: 8px; }
.shop-od-item div { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.shop-od-item small { color: var(--text-muted); font-size: 0.75rem; }
.shop-od-line { display: flex; justify-content: space-between; padding: 0.3rem 0; font-size: 0.9rem; }
.shop-od-line.total { border-top: 1px solid var(--border-light); margin-top: 0.4rem; padding-top: 0.6rem; font-size: 1.05rem; }
.shop-od-line.total strong { color: var(--primary); }
.shop-od-actions { display: flex; gap: 0.7rem; flex-wrap: wrap; margin-top: 0.5rem; }

.shop-acct-hero { display: flex; align-items: center; gap: 1rem; border: 1px solid var(--border-light); border-radius: 16px; padding: 1.2rem; margin-bottom: 1.4rem; background: #fff; }
.shop-acct-avatar { width: 52px; height: 52px; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 1.3rem; flex: 0 0 auto; }
.shop-acct-hero > div { flex: 1; min-width: 0; }
.shop-acct-section-title { margin: 1.4rem 0 0.8rem; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-muted); }
.shop-acct-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 0.8rem; }
.shop-acct-tile { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 0.3rem; padding: 1.2rem 0.8rem; border: 1px solid var(--border-light); border-radius: 14px; background: #fff; text-decoration: none; color: inherit; transition: transform 0.2s, box-shadow 0.2s; }
.shop-acct-tile:hover { transform: translateY(-3px); box-shadow: 0 12px 28px rgba(1,103,178,0.1); }
.shop-acct-tile-ic { position: relative; width: 46px; height: 46px; border-radius: 12px; background: rgba(1,103,178,0.08); color: var(--primary); display: flex; align-items: center; justify-content: center; font-size: 1.25rem; }
.shop-acct-tile-badge { position: absolute; top: -5px; right: -5px; background: var(--accent-orange,#f09221); color: #fff; font-size: 0.62rem; font-weight: 700; min-width: 18px; height: 18px; border-radius: 9px; display: flex; align-items: center; justify-content: center; padding: 0 4px; }
.shop-acct-tile span { font-weight: 600; font-size: 0.9rem; }
.shop-acct-tile small { color: var(--text-muted); font-size: 0.72rem; }

/* ============================================================
   AI PACKAGE IMPORTER — Import & Analisis tab (v2.5.0)
   ============================================================ */
.pkgimp-notice { background: #fff7ed; border: 1px solid #fed7aa; color: #9a3412; padding: .7rem .9rem; border-radius: 10px; font-size: .82rem; margin-bottom: .9rem; display: flex; gap: .5rem; align-items: flex-start; }
.pkgimp-notice.err { background:#fef2f2; border-color:#fecaca; color:#b91c1c; }
.pkgimp-notice i { margin-top: .1rem; }
.pkgimp-dropzone { border: 2px dashed var(--border, #d9e2ec); border-radius: 12px; padding: 1.8rem 1rem; text-align: center; cursor: pointer; transition: border-color .15s, background .15s; background: var(--bg-subtle, #f8fafc); }
.pkgimp-dropzone:hover, .pkgimp-dropzone:focus-visible, .pkgimp-dropzone.drag { border-color: var(--primary, #0167b2); background: #eff6ff; outline: none; }
.pkgimp-dropzone i { font-size: 1.7rem; color: var(--primary, #0167b2); }
.pkgimp-dropzone p { margin: .5rem 0 .2rem; font-size: .9rem; }
.pkgimp-dropzone small { color: var(--text-muted, #64748b); font-size: .74rem; }
.pkgimp-files { display: flex; flex-direction: column; gap: .55rem; margin-top: .9rem; }
.pkgimp-file { display: flex; align-items: center; gap: .6rem; padding: .55rem .7rem; border: 1px solid var(--border, #e2e8f0); border-radius: 10px; background: #fff; font-size: .82rem; }
.pkgimp-file .fico { width: 30px; height: 30px; border-radius: 7px; display: flex; align-items: center; justify-content: center; background: #eff6ff; color: var(--primary,#0167b2); flex: none; }
.pkgimp-file .fmeta { flex: 1; min-width: 0; }
.pkgimp-file .fname { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pkgimp-file .fsub { color: var(--text-muted,#64748b); font-size: .72rem; }
.pkgimp-file .fprimary { display: flex; align-items: center; gap: .3rem; font-size: .72rem; color: var(--text-muted,#475569); cursor: pointer; white-space: nowrap; }
.pkgimp-file .fremove { background: none; border: none; color: #ef4444; cursor: pointer; font-size: .95rem; padding: .2rem .35rem; }
.pkgimp-file.err { border-color: #fecaca; background: #fef2f2; }
.pkgimp-actions { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: 1rem; }
.pkgimp-bar { height: 8px; border-radius: 5px; background: #e2e8f0; overflow: hidden; }
.pkgimp-bar span { display: block; height: 100%; width: 0; background: linear-gradient(90deg,#0167b2,#0a86d6); transition: width .35s ease; }
.pkgimp-progress-status { margin-top: .6rem; font-size: .82rem; color: var(--text-muted,#475569); }
.pkgimp-chip { display: inline-flex; align-items: center; gap: .3rem; font-size: .68rem; font-weight: 600; padding: .12rem .45rem; border-radius: 999px; margin-left: .4rem; vertical-align: middle; }
.pkgimp-chip.hi { background:#dcfce7; color:#15803d; } .pkgimp-chip.mid { background:#fef9c3; color:#a16207; }
.pkgimp-chip.lo { background:#fee2e2; color:#b91c1c; } .pkgimp-chip.man { background:#e2e8f0; color:#475569; }
.pkgimp-conf-summary { display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; margin:.3rem 0 .8rem; }
.pkgimp-block { border:1px solid var(--border,#e2e8f0); border-radius:10px; padding:.7rem .85rem; margin-top:.7rem; }
.pkgimp-block h6 { margin:0 0 .45rem; font-size:.78rem; text-transform:uppercase; letter-spacing:.03em; color:var(--text-muted,#64748b); }
.pkgimp-block.warn { border-color:#fed7aa; background:#fff7ed; }
.pkgimp-block.danger { border-color:#fecaca; background:#fef2f2; }
.pkgimp-kv { font-size:.8rem; padding:.15rem 0; }
.pkgimp-kv b { color:var(--text-strong,#0f172a); }
.pkgimp-conflict { font-size:.8rem; padding:.5rem 0; border-top:1px dashed #fed7aa; }
.pkgimp-conflict:first-of-type { border-top:none; }
.pkgimp-conflict .opt { display:inline-block; margin:.25rem .4rem .25rem 0; }
.pkgimp-src { cursor:help; color:var(--text-muted,#94a3b8); font-size:.7rem; margin-left:.3rem; }
@media (max-width: 640px) {
  .pkgimp-actions { flex-direction: column; } .pkgimp-actions .btn { width: 100%; justify-content: center; }
}

/* ============================================================
   PACKAGE BUILDER — repeaters, forms, diff, public (v2.6.0)
   ============================================================ */
.pkgb-rep { display: flex; flex-direction: column; gap: .7rem; }
.pkgb-item { border: 1px solid var(--border, #e2e8f0); border-radius: 10px; background: var(--bg-subtle, #f8fafc); padding: .7rem .8rem; }
.pkgb-item-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .55rem; }
.pkgb-item-title { font-weight: 700; font-size: .82rem; color: var(--primary, #0167b2); }
.pkgb-item-actions { display: flex; align-items: center; gap: .25rem; }
.pkgb-icon { background: #fff; border: 1px solid var(--border, #e2e8f0); border-radius: 7px; width: 28px; height: 28px; cursor: pointer; color: var(--text-muted, #475569); display: inline-flex; align-items: center; justify-content: center; font-size: .78rem; }
.pkgb-icon:hover { background: #eff6ff; color: var(--primary, #0167b2); }
.pkgb-icon.danger:hover { background: #fef2f2; color: #ef4444; }
.pkgb-primary { display: inline-flex; align-items: center; gap: .25rem; font-size: .72rem; color: var(--text-muted, #475569); cursor: pointer; margin-right: .3rem; }
.pkgb-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .55rem; }
.pkgb-field { display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.pkgb-field > label { font-size: .68rem; font-weight: 600; color: var(--text-muted, #64748b); text-transform: uppercase; letter-spacing: .02em; }
.pkgb-field .form-control { padding: .35rem .5rem; font-size: .82rem; }
.pkgb-field textarea.form-control { min-height: 2.2rem; }
.pkgb-field-check { justify-content: flex-end; }
.pkgb-check { display: inline-flex; align-items: center; gap: .35rem; font-size: .8rem; color: var(--text-main, #334155); cursor: pointer; }
.pkgb-empty { font-size: .82rem; color: var(--text-muted, #94a3b8); padding: .6rem; text-align: center; border: 1px dashed var(--border, #e2e8f0); border-radius: 8px; }
.pkgb-add { align-self: flex-start; margin-top: .1rem; }
.pkgb-sub { font-size: .74rem; text-transform: uppercase; letter-spacing: .03em; color: var(--text-muted, #64748b); margin: 1rem 0 .4rem; }
.pkgb-copy-row { display: flex; gap: .5rem; margin-bottom: .7rem; }
.pkgb-copy-row .form-control { flex: 1; }
.pkgb-starting-wrap { font-size: .74rem; font-weight: 500; color: var(--text-muted, #64748b); margin-left: .5rem; }
.pkgb-starting-wrap strong { color: var(--primary, #0167b2); }
.pkgb-block { border: 1px solid var(--border, #e2e8f0); border-radius: 10px; padding: .7rem .85rem; margin-top: .7rem; font-size: .82rem; }
.pkgb-block.warn { border-color: #fed7aa; background: #fff7ed; }
.pkgb-block h6 { margin: 0 0 .5rem; font-size: .8rem; }
.pkgb-diff-actions { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: .6rem; }
.pkgb-diff-head, .pkgb-diff-row { display: grid; grid-template-columns: 1.2fr 1.4fr 1.4fr auto; gap: .5rem; align-items: center; padding: .3rem 0; font-size: .78rem; border-bottom: 1px solid var(--border, #eef2f6); }
.pkgb-diff-head { font-weight: 700; color: var(--text-muted, #64748b); text-transform: uppercase; font-size: .68rem; }
.pkgb-diff-row.chg { background: #fffbeb; }
.pkgb-diff-same { color: #16a34a; font-size: .72rem; }
/* public structured sections */
.pkgb-pub { margin-top: 1.4rem; display: flex; flex-direction: column; gap: 1.3rem; }
.pkgb-pub-h { font-size: 1rem; color: var(--primary, #0167b2); margin: 0 0 .6rem; display: flex; align-items: center; gap: .5rem; }
.pkgb-pub-scroll { overflow-x: auto; }
.pkgb-pub-table { width: 100%; border-collapse: collapse; font-size: .82rem; min-width: 340px; }
.pkgb-pub-table th, .pkgb-pub-table td { text-align: left; padding: .45rem .6rem; border-bottom: 1px solid var(--border, #eef2f6); }
.pkgb-pub-table th { background: var(--bg-subtle, #f8fafc); font-size: .72rem; text-transform: uppercase; color: var(--text-muted, #64748b); }
.pkgb-pub-badge { background: #dbeafe; color: #1d4ed8; font-size: .64rem; font-weight: 700; padding: .1rem .35rem; border-radius: 999px; }
.pkgb-pub-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: .7rem; }
.pkgb-pub-card { border: 1px solid var(--border, #e2e8f0); border-radius: 10px; padding: .7rem .8rem; font-size: .84rem; background: #fff; }
.pkgb-pub-muted { color: var(--text-muted, #64748b); font-size: .76rem; margin-top: .2rem; }
.pkgb-pub-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); gap: .5rem; }
.pkgb-pub-fact { border: 1px solid var(--border, #eef2f6); border-radius: 8px; padding: .45rem .6rem; display: flex; flex-direction: column; }
.pkgb-pub-fact span { font-size: .68rem; text-transform: uppercase; color: var(--text-muted, #94a3b8); }
.pkgb-pub-fact strong { font-size: .86rem; }
.pkgb-pub-timeline { display: flex; flex-direction: column; gap: .4rem; }
.pkgb-pub-day { border: 1px solid var(--border, #e2e8f0); border-radius: 10px; overflow: hidden; }
.pkgb-pub-day > summary { cursor: pointer; padding: .6rem .8rem; font-size: .86rem; font-weight: 600; list-style: none; display: flex; align-items: center; gap: .5rem; background: var(--bg-subtle, #f8fafc); }
.pkgb-pub-day > summary::-webkit-details-marker { display: none; }
.pkgb-pub-daynum { background: var(--primary, #0167b2); color: #fff; font-size: .68rem; font-weight: 700; padding: .12rem .45rem; border-radius: 6px; }
.pkgb-pub-daybody { padding: .7rem .9rem; font-size: .84rem; line-height: 1.6; }
.pkgb-pub-list { margin: 0; padding-left: 1.1rem; font-size: .84rem; line-height: 1.7; }
@media (max-width: 720px) {
  .pkgb-grid { grid-template-columns: repeat(2, 1fr); }
  .pkgb-diff-head, .pkgb-diff-row { grid-template-columns: 1fr 1fr 1fr auto; font-size: .72rem; }
}
@media (max-width: 420px) {
  .pkgb-grid { grid-template-columns: 1fr; }
  .pkgb-copy-row { flex-direction: column; }
}

/* Package builder — true per-field diff */
.pkgb-dsec { margin-top: .8rem; border: 1px solid var(--border,#e2e8f0); border-radius: 10px; overflow: hidden; }
.pkgb-dsec-h { background: var(--bg-subtle,#f8fafc); padding: .45rem .7rem; font-size: .78rem; font-weight: 700; color: var(--text-strong,#0f172a); display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.pkgb-dsec-accept { background: none; border: 1px solid var(--primary,#0167b2); color: var(--primary,#0167b2); border-radius: 6px; font-size: .68rem; font-weight: 600; padding: .15rem .45rem; cursor: pointer; }
.pkgb-dsec-accept:hover { background: var(--primary,#0167b2); color: #fff; }
.pkgb-dsec .pkgb-diff-row { padding: .3rem .7rem; }
.pkgb-drow-wrap { border-top: 1px dashed var(--border,#eef2f6); padding: .3rem 0; }
.pkgb-drow-wrap.added { background: #f0fdf4; } .pkgb-drow-wrap.removed { background: #fef2f2; } .pkgb-drow-wrap.changed { background: #fffbeb; }
.pkgb-drow-head { display: flex; align-items: center; gap: .5rem; font-size: .72rem; font-weight: 700; color: var(--text-muted,#475569); padding: .25rem .7rem; }
.pkgb-dstat { font-size: .6rem; font-weight: 700; padding: .08rem .35rem; border-radius: 999px; text-transform: uppercase; letter-spacing: .02em; }
.pkgb-dstat.added { background:#dcfce7; color:#15803d; } .pkgb-dstat.removed { background:#fee2e2; color:#b91c1c; }
.pkgb-dstat.chg { background:#fef9c3; color:#a16207; } .pkgb-dstat.same { background:#e2e8f0; color:#64748b; }
.pkgb-dsame { font-size: .74rem; color: var(--text-muted,#94a3b8); padding: .3rem .7rem; }

/* ============================================================
   PACKAGE DETAIL MODAL — full responsive refactor (v2.6.4)
   ============================================================ */
.pkgdetail-overlay {
    padding: 24px;
    background: rgba(15, 23, 42, 0.65);
    align-items: center;
    justify-content: center;
}
.pkgdetail-modal {
    width: min(1000px, calc(100vw - 48px));
    max-height: calc(100dvh - 48px);
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.28);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    transform: scale(0.96);
    transition: transform 0.2s ease;
}
.modal.active .pkgdetail-modal { transform: scale(1); }
.pkgdetail-header {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 24px;
    border-bottom: 1px solid #e2e8f0;
}
.pkgdetail-header h3 {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--primary, #0167b2);
    min-width: 0;
    line-height: 1.3;
}
.pkgdetail-close {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border: none;
    background: #f1f5f9;
    border-radius: 10px;
    font-size: 1.5rem;
    line-height: 1;
    color: var(--text-muted, #64748b);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s, color 0.15s;
}
.pkgdetail-close:hover { background: #e2e8f0; color: var(--text-strong, #0f172a); }
.pkgdetail-body {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior: contain;
    padding: 24px;
}
.pkgdetail-footer {
    flex-shrink: 0;
    background: #fff;
    border-top: 1px solid #e2e8f0;
    padding: 16px 24px;
    display: flex;
    justify-content: flex-end;
    gap: 12px;
}
.pkgdetail-footer .btn {
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}
.pkgdetail-poster {
    width: 100%;
    max-width: 720px;              /* portrait 2:3 poster, comfortable readable width, centered */
    aspect-ratio: 2 / 3;
    height: auto;
    object-fit: contain;           /* never crop the poster */
    object-position: top center;
    display: block;
    background: #f8fafc;
    border-radius: 14px;
    margin: 0 auto 20px;
}
.pkgdetail-info {
    display: grid;
    grid-template-columns: 1fr;    /* single column on all viewports */
    gap: 14px;
    margin: 16px 0 4px;
    font-size: 0.88rem;
}
.pkgdetail-info > div { min-width: 0; }
.pkgdetail-info strong { color: var(--primary, #0167b2); }
@media (max-width: 640px) {
    .pkgdetail-overlay { padding: 12px; }
    .pkgdetail-modal { width: calc(100vw - 24px); max-height: calc(100dvh - 24px); border-radius: 16px; }
    .pkgdetail-header { padding: 16px; }
    .pkgdetail-body { padding: 16px; }
    .pkgdetail-footer { padding: 12px 16px; flex-direction: column; }
    .pkgdetail-footer .btn { width: 100%; }
}

/* ============================================================
   TEMPAHAN (Booking Requests) — customer forms + admin dashboard
   Guna identiti visual Nun Travel (biru jenama, radius, shadow).
   ============================================================ */
.tbook-hero {
    background: linear-gradient(135deg, var(--primary, #0167b2), #0a4a7a);
    color: #fff;
    padding: calc(90px + 3rem) 0 3rem;
    text-align: center;
}
.tbook-hero-inner { max-width: 760px; }
.tbook-hero-eyebrow {
    display: inline-block; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.14em;
    text-transform: uppercase; opacity: 0.9; margin-bottom: 0.8rem;
}
.tbook-hero h1 { font-size: clamp(1.8rem, 5vw, 2.8rem); font-weight: 800; margin: 0 0 1rem; color: #fff; line-height: 1.15; }
.tbook-hero-desc { font-size: 1.02rem; line-height: 1.7; opacity: 0.94; margin: 0 auto 1.4rem; max-width: 640px; }
.tbook-note {
    display: inline-flex; align-items: flex-start; gap: 0.5rem; text-align: left;
    background: rgba(255, 255, 255, 0.12); border: 1px solid rgba(255, 255, 255, 0.25);
    padding: 0.7rem 1rem; border-radius: 12px; font-size: 0.85rem; max-width: 620px; margin: 0 auto 1.6rem;
}
.tbook-note i { margin-top: 0.15rem; }
.tbook-hero-cta { font-size: 1rem; padding: 0.9rem 1.8rem; }

.tbook-form-section { padding: 2.5rem 0 4rem; background: var(--bg-main, #f8fafc); }
.tbook-form-wrap {
    max-width: 1000px; margin: -4rem auto 0; position: relative;
    background: #fff; border: 1px solid var(--border-light, #e2e8f0);
    border-radius: 20px; padding: 2rem 2.2rem; box-shadow: 0 20px 50px rgba(15, 23, 42, 0.10);
}

/* stepper */
.tbook-stepper { display: flex; gap: 0.5rem; margin-bottom: 1.8rem; }
.tbook-step { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 0.45rem; position: relative; padding-top: 0.2rem; }
.tbook-step:not(:last-child)::after {
    content: ""; position: absolute; top: 18px; left: calc(50% + 20px); right: calc(-50% + 20px);
    height: 2px; background: var(--border-light, #e2e8f0);
}
.tbook-step.done:not(:last-child)::after { background: var(--accent-teal, #14b8a6); }
.tbook-step-num {
    width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
    background: #eef2f7; color: var(--text-muted, #64748b); font-weight: 800; font-size: 0.95rem; z-index: 1;
    border: 2px solid transparent; transition: all 0.25s ease;
}
.tbook-step.active .tbook-step-num { background: var(--primary, #0167b2); color: #fff; box-shadow: 0 6px 16px rgba(1, 103, 178, 0.35); }
.tbook-step.done .tbook-step-num { background: var(--accent-teal, #14b8a6); color: #fff; }
.tbook-step-label { font-size: 0.78rem; font-weight: 600; color: var(--text-muted, #64748b); text-align: center; }
.tbook-step.active .tbook-step-label { color: var(--primary, #0167b2); }

.tbook-pane { display: none; }
.tbook-pane.active { display: block; animation: tbookFade 0.28s ease; }
@keyframes tbookFade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.tbook-pane-title { font-size: 1.25rem; font-weight: 800; color: var(--text-main, #0f172a); margin: 0 0 1.2rem; }

.tbook-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 1rem; }
.tbook-req { color: #ef4444; }
.tbook-hint { color: var(--text-muted, #94a3b8); font-weight: 400; font-size: 0.82em; }

/* chip radios */
.tbook-radio-group { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.tbook-chip-radio { position: relative; cursor: pointer; }
.tbook-chip-radio input { position: absolute; opacity: 0; pointer-events: none; }
.tbook-chip-radio span {
    display: inline-block; padding: 0.6rem 1.1rem; border-radius: 30px; border: 1.5px solid var(--border-light, #e2e8f0);
    font-size: 0.88rem; font-weight: 600; color: var(--text-main, #334155); transition: all 0.2s ease; background: #fff;
}
.tbook-chip-radio input:checked + span { border-color: var(--primary, #0167b2); background: rgba(1, 103, 178, 0.08); color: var(--primary, #0167b2); }
.tbook-chip-radio input:focus-visible + span { outline: 2px solid var(--primary, #0167b2); outline-offset: 2px; }

/* check grid */
.tbook-check-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0.6rem; }
.tbook-check { display: flex; align-items: center; gap: 0.55rem; padding: 0.65rem 0.9rem; border: 1.5px solid var(--border-light, #e2e8f0); border-radius: 10px; cursor: pointer; font-size: 0.86rem; transition: all 0.2s ease; }
.tbook-check input { width: 18px; height: 18px; accent-color: var(--primary, #0167b2); }
.tbook-check:has(input:checked) { border-color: var(--primary, #0167b2); background: rgba(1, 103, 178, 0.06); }

/* segments (multi-city) */
.tbook-seg { display: flex; align-items: flex-start; gap: 0.6rem; background: #f8fafc; border: 1px solid var(--border-light, #e2e8f0); border-radius: 12px; padding: 0.9rem; margin-bottom: 0.7rem; }
.tbook-seg-fields { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0 0.8rem; flex: 1; }
.tbook-seg-fields .form-group { margin-bottom: 0; }
.tbook-seg-remove { flex-shrink: 0; margin-top: 1.9rem; width: 34px; height: 34px; border-radius: 8px; border: 1px solid var(--border-light, #e2e8f0); background: #fff; color: #ef4444; cursor: pointer; }
.tbook-seg-remove:hover { background: #fef2f2; }

/* conditional block */
.tbook-conditional { background: rgba(1, 103, 178, 0.04); border: 1px dashed rgba(1, 103, 178, 0.35); border-radius: 14px; padding: 1.2rem; margin: 0.4rem 0 1rem; }
.tbook-cond-title { font-size: 1rem; font-weight: 700; color: var(--primary, #0167b2); margin: 0 0 1rem; display: flex; align-items: center; gap: 0.5rem; }

/* consent + errors */
.tbook-consent { display: flex; align-items: flex-start; gap: 0.6rem; margin: 0.4rem 0 0.2rem; font-size: 0.88rem; line-height: 1.5; cursor: pointer; }
.tbook-consent input { width: 20px; height: 20px; margin-top: 0.1rem; accent-color: var(--primary, #0167b2); flex-shrink: 0; }
.tbook-field-error { color: #ef4444; font-size: 0.78rem; margin-top: 0.35rem; min-height: 0; }
.form-control.tbook-invalid { border-color: #ef4444 !important; box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.12); }
.tbook-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }

/* footer actions */
.tbook-actions { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-top: 1.8rem; padding-top: 1.4rem; border-top: 1px solid var(--border-light, #e2e8f0); }
.tbook-submit.tbook-loading { opacity: 0.75; pointer-events: none; }
.tbook-submit.tbook-loading i { animation: tbookSpin 0.8s linear infinite; }
@keyframes tbookSpin { to { transform: rotate(360deg); } }

/* success */
.tbook-success-card { text-align: center; padding: 1rem 0.5rem 0.5rem; animation: tbookFade 0.4s ease; }
.tbook-success-icon { font-size: 3.4rem; color: var(--accent-teal, #14b8a6); margin-bottom: 0.8rem; }
.tbook-success-card h2 { font-size: 1.7rem; font-weight: 800; color: var(--text-main, #0f172a); margin: 0 0 0.6rem; }
.tbook-success-desc { color: var(--text-muted, #64748b); max-width: 520px; margin: 0 auto 1.6rem; line-height: 1.7; }
.tbook-success-ref { display: inline-flex; flex-direction: column; gap: 0.2rem; background: rgba(1, 103, 178, 0.07); border: 1px solid rgba(1, 103, 178, 0.2); border-radius: 14px; padding: 1rem 2rem; margin-bottom: 1.6rem; }
.tbook-success-ref span { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-muted, #64748b); }
.tbook-success-ref strong { font-size: 1.5rem; color: var(--primary, #0167b2); font-weight: 800; letter-spacing: 0.02em; }
.tbook-success-meta { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; max-width: 560px; margin: 0 auto 1.8rem; text-align: left; }
.tbook-success-meta > div { background: #f8fafc; border: 1px solid var(--border-light, #e2e8f0); border-radius: 12px; padding: 0.8rem 1rem; }
.tbook-success-meta span { display: block; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-muted, #94a3b8); margin-bottom: 0.2rem; }
.tbook-success-meta strong { font-size: 0.92rem; color: var(--text-main, #0f172a); }
.tbook-success-actions { display: flex; flex-wrap: wrap; gap: 0.8rem; justify-content: center; }

/* toast */
.tbook-toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(20px); background: #0f172a; color: #fff; padding: 0.9rem 1.4rem; border-radius: 12px; font-size: 0.9rem; box-shadow: 0 12px 30px rgba(0, 0, 0, 0.25); opacity: 0; pointer-events: none; transition: all 0.25s ease; z-index: 100000; max-width: calc(100vw - 32px); }
.tbook-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ---- admin dashboard ---- */
.brq-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0.9rem; }
.brq-card { display: flex; align-items: center; gap: 0.9rem; background: #fff; border: 1px solid var(--border-light, #e2e8f0); border-radius: 14px; padding: 1rem 1.2rem; }
.brq-card-icon { width: 44px; height: 44px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 1.1rem; color: #fff; flex-shrink: 0; }
.brq-c-new .brq-card-icon { background: #f59e0b; }
.brq-c-rev .brq-card-icon { background: #0167b2; }
.brq-c-wait .brq-card-icon { background: #8b5cf6; }
.brq-c-ok .brq-card-icon { background: #10b981; }
.brq-c-done .brq-card-icon { background: #14b8a6; }
.brq-card-meta strong { display: block; font-size: 1.5rem; font-weight: 800; line-height: 1; color: var(--text-main, #0f172a); }
.brq-card-meta span { font-size: 0.78rem; color: var(--text-muted, #64748b); }
.brq-wa { color: #16a34a; font-weight: 600; text-decoration: none; white-space: nowrap; }
.brq-wa:hover { text-decoration: underline; }

.brq-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.6rem; }
.brq-sec-title { font-size: 0.95rem; font-weight: 800; color: var(--primary, #0167b2); margin: 0 0 0.8rem; padding-bottom: 0.4rem; border-bottom: 1px solid var(--border-light, #e2e8f0); }
.brq-dl-row { display: grid; grid-template-columns: 130px 1fr; gap: 0.6rem; padding: 0.4rem 0; font-size: 0.85rem; border-bottom: 1px dashed var(--border-light, #eef2f7); }
.brq-dl-row > span { color: var(--text-muted, #64748b); font-weight: 600; }
.brq-seg-line { font-size: 0.82rem; padding: 0.1rem 0; }
.brq-hist-wrap { display: flex; flex-direction: column; gap: 0.6rem; }
.brq-hist { font-size: 0.82rem; }
.brq-hist-note { color: var(--text-muted, #64748b); margin-top: 0.2rem; padding-left: 0.4rem; border-left: 2px solid var(--border-light, #e2e8f0); }
.brq-doc-row { display: flex; justify-content: space-between; align-items: center; gap: 0.6rem; padding: 0.5rem 0; font-size: 0.85rem; }
.brq-doc-actions { display: flex; gap: 0.4rem; align-items: center; }
.brq-upload-btn { cursor: pointer; }

@media (max-width: 768px) {
    .tbook-form-wrap { padding: 1.4rem 1.1rem; margin-top: -3rem; border-radius: 16px; }
    .tbook-grid-3 { grid-template-columns: 1fr; }
    .tbook-seg-fields { grid-template-columns: 1fr; }
    .tbook-seg-remove { margin-top: 0; }
    .tbook-step-label { font-size: 0.68rem; }
    .tbook-step-num { width: 32px; height: 32px; font-size: 0.85rem; }
    .tbook-step:not(:last-child)::after { top: 15px; left: calc(50% + 18px); right: calc(-50% + 18px); }
    .tbook-actions { flex-direction: column-reverse; }
    .tbook-actions .btn { width: 100%; }
    .tbook-success-meta { grid-template-columns: 1fr; }
    .tbook-success-actions .btn { width: 100%; }
    .brq-detail-grid { grid-template-columns: 1fr; }
}
.brq-delete-btn { background:#fef2f2; color:#dc2626; border:1px solid #fecaca; }
.brq-delete-btn:hover { background:#dc2626; color:#fff; border-color:#dc2626; }

/* === NUN ABOUT / VALUES / TRUST (scoped homepage sections) === */
/* Sticky-header offset so anchor scroll doesn't hide the section title. */
#tentang-kami, #pengiktirafan { scroll-margin-top: 96px; }

/* -- Person column (photo + name + role + quote) -- */
.nun-about-person { display: flex; flex-direction: column; gap: 1.25rem; }
.nun-about-person-meta { text-align: left; }
.nun-about-name {
    font-size: 1.5rem; font-weight: 800; color: var(--text-main);
    margin: 0.4rem 0 0.15rem; line-height: 1.2;
}
.nun-about-role { font-size: 0.9rem; color: var(--text-muted); margin: 0 0 0.9rem; }
.nun-about-quote {
    position: relative; margin: 0; padding: 0.9rem 1.1rem;
    border-left: 4px solid var(--primary);
    background: rgba(1, 103, 178, 0.05); border-radius: 0 12px 12px 0;
    font-size: 1.02rem; font-style: italic; font-weight: 600; color: var(--primary);
    line-height: 1.5;
}
.nun-about-quote i { margin-right: 0.5rem; opacity: 0.55; }

/* -- Company content column -- */
/* Top-align the columns so the welcome text starts level with the photo top
   (overrides .team-wrapper's align-items:center). */
.nun-about-wrapper { align-items: start; }
.nun-about-content { max-width: 640px; }
.nun-about-heading { font-size: 2rem !important; margin-bottom: 0.4rem !important; line-height: 1.2; }
.nun-about-tagline {
    font-size: 1.05rem !important; font-weight: 700; font-style: italic;
    color: var(--accent-teal, #0d9488); margin-bottom: 1.4rem !important;
}
.nun-about-text { font-size: 0.98rem !important; line-height: 1.75; margin-bottom: 1rem !important; }
.nun-about-cta { display: flex; flex-wrap: wrap; gap: 0.9rem; margin-top: 1.6rem; }

/* -- Vision & Mission (below the two columns) -- */
.nun-about-vm { margin-top: 3rem; }

/* -- Nilai Kami -- */
.nun-values { margin-top: 3.5rem; }
.nun-values-title {
    text-align: center; font-size: 1.6rem; font-weight: 800;
    color: var(--text-main); margin-bottom: 1.8rem;
}
.nun-values-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.4rem;
}
.nun-values-card {
    background: #ffffff; border: 1px solid var(--border-light);
    border-radius: 16px; padding: 1.6rem 1.4rem; text-align: center;
    transition: var(--transition);
}
.nun-values-card:hover { box-shadow: var(--shadow-hover); transform: translateY(-4px); }
.nun-values-icon {
    width: 58px; height: 58px; margin: 0 auto 1rem; border-radius: 16px;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.5rem; color: #ffffff;
    background: linear-gradient(135deg, var(--primary), var(--primary-light, #0a84d6));
    box-shadow: 0 8px 20px rgba(1, 103, 178, 0.28);
}
.nun-values-card h4 { font-size: 1.05rem; font-weight: 800; color: var(--text-main); margin-bottom: 0.5rem; }
.nun-values-card p { font-size: 0.88rem; color: var(--text-muted); line-height: 1.65; margin: 0; }

/* -- Dipercayai & Diiktiraf -- */
.nun-trust-lead {
    color: var(--text-muted); font-size: 0.95rem; margin-top: 1rem;
    max-width: 620px; margin-left: auto; margin-right: auto; text-align: center;
}
.nun-trust-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.6rem;
    align-items: stretch; margin-top: 2.5rem;
}
.nun-trust-logo {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 0.7rem; padding: 1.6rem 1.2rem; background: #f8fafc;
    border: 1px solid var(--border-light); border-radius: 16px; min-height: 150px;
}
.nun-trust-logo img {
    max-width: 100%; max-height: 74px; width: auto; height: auto;
    object-fit: contain; display: block;
}
.nun-trust-logo span {
    font-size: 0.82rem; font-weight: 700; color: var(--text-muted);
    letter-spacing: 0.02em; text-align: center;
}
.nun-trust-logo--placeholder {
    background: repeating-linear-gradient(135deg, #f1f5f9, #f1f5f9 10px, #eef2f7 10px, #eef2f7 20px);
    border-style: dashed;
}
.nun-trust-ph-name { font-size: 1.35rem !important; font-weight: 800 !important; color: var(--primary) !important; letter-spacing: 0.04em; }
.nun-trust-license {
    display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 2rem;
    margin-top: 2rem; font-size: 0.9rem; color: var(--text-muted); text-align: center;
}
.nun-trust-license strong { color: var(--text-main); }

/* Responsive */
@media (max-width: 991px) {
    .nun-about-content { max-width: 100%; }
    .nun-values-grid { grid-template-columns: repeat(2, 1fr); }
    .nun-trust-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .nun-values-grid { grid-template-columns: 1fr; }
    .nun-about-heading { font-size: 1.6rem !important; }
    .nun-about-cta .btn { flex: 1 1 auto; text-align: center; justify-content: center; }
    .nun-trust-logo { min-height: 128px; padding: 1.2rem 0.9rem; }
    .nun-trust-logo img { max-height: 60px; }
    .nun-values-title { font-size: 1.4rem; }
}

/* === Lesen MOTAC credential modal (scoped) === */
.nun-lesen-modal { padding: 2rem; }
.nun-lesen-head { display: flex; align-items: center; gap: 1rem; padding-right: 2rem; margin-bottom: 1.4rem; }
.nun-lesen-logo {
    width: 72px; height: 72px; object-fit: contain; flex-shrink: 0;
    background: #fff; border: 1px solid var(--border-light); border-radius: 12px; padding: 6px;
}
.nun-lesen-eyebrow { display: block; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--primary); margin-bottom: 0.25rem; }
.nun-lesen-title { font-size: 1.05rem; font-weight: 800; color: var(--text-main); line-height: 1.35; margin: 0; }
.nun-lesen-grid { border: 1px solid var(--border-light); border-radius: 14px; overflow: hidden; }
.nun-lesen-row { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 0.85rem 1.1rem; border-bottom: 1px solid var(--border-light); font-size: 0.9rem; }
.nun-lesen-row:last-child { border-bottom: none; }
.nun-lesen-row span { color: var(--text-muted); }
.nun-lesen-row strong { color: var(--text-main); text-align: right; }
.nun-lesen-note { display: flex; gap: 0.5rem; font-size: 0.82rem; color: var(--text-muted); line-height: 1.6; margin: 1.1rem 0 0; }
.nun-lesen-note i { color: var(--accent-teal, #0d9488); margin-top: 0.15rem; }
.nun-lesen-actions { display: flex; flex-wrap: wrap; gap: 0.7rem; justify-content: flex-end; margin-top: 1.6rem; }
@media (max-width: 560px) {
    .nun-lesen-modal { padding: 1.4rem; }
    .nun-lesen-head { flex-direction: column; text-align: center; align-items: center; padding-right: 0; }
    .nun-lesen-actions { justify-content: stretch; }
    .nun-lesen-actions .btn { flex: 1 1 auto; justify-content: center; }
}

/* Embedded PDF certificate inside the Lesen MOTAC modal */
.nun-lesen-doc { margin: 1.3rem 0; border: 1px solid var(--border-light); border-radius: 12px; overflow: hidden; background: #f1f5f9; }
.nun-lesen-doc iframe { width: 100%; height: 480px; border: 0; display: block; }
@media (max-width: 560px) { .nun-lesen-doc iframe { height: 340px; } }

/* === Nav items: icon-on-top compact style === */
.nav-link { display: inline-flex; align-items: center; gap: 8px; }
.nav-ico { font-size: 1rem; line-height: 1; color: inherit; flex-shrink: 0; }
.nav-txt { white-space: nowrap; }

@media (min-width: 769px) {
    .nav-menu { gap: 1.25rem; }
    .nav-link, .nav-drop-btn {
        flex-direction: column;
        gap: 5px;
        padding: 0.3rem 0.15rem;
        text-align: center;
    }
    .nav-ico { font-size: 1.2rem; }
    .nav-txt { font-size: 0.62rem; letter-spacing: 0.3px; line-height: 1; }
    .nav-caret { font-size: 0.5rem; margin-left: 3px; }
    .nav-link::after { height: 2px; }
    /* active underline hugs the item instead of a full border shift */
    .nav-menu .nav-link.active { border-bottom: none; }
    .nav-menu .nav-link.active::after { width: 100%; }
}

/* Rakan Strategik: kecilkan sedikit kad supaya 6 rakan penerbangan muat satu baris (badan pengiktirafan di baris atas) */
#rakan-strategik .partner-logo { min-width: 156px; padding: 1.5rem 1.2rem; }
#rakan-strategik .partner-logo img { height: 46px; max-width: 128px; }

/* ============================================================
   MOBILE PUBLIC POLISH (<=767px) — swipe carousels & compaction
   for the long homepage sections. Desktop (>=768px) UNTOUCHED.
   Scoped to homepage IDs so listing pages (#umrah/#pelancongan/
   #ibadah-services) keep their readable 1-column layout.
   ============================================================ */
@media (max-width: 767px) {
    /* Shared horizontal carousel behaviour */
    #packages-grid,
    #ibadah-home-grid,
    .gallery-masonry,
    .testi-grid,
    .nun-values-grid,
    #rakan-strategik .partners-grid {
        display: flex;
        flex-wrap: nowrap;
        justify-content: flex-start;  /* start at first item (was centered → clipped start of overflow strip) */
        gap: 14px;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-x: contain;
        padding-bottom: 10px;
        columns: auto;               /* reset gallery CSS multi-column */
        column-gap: 0;
        grid-template-columns: none; /* reset grid */
        scrollbar-width: none;
    }
    #packages-grid::-webkit-scrollbar,
    #ibadah-home-grid::-webkit-scrollbar,
    .gallery-masonry::-webkit-scrollbar,
    .testi-grid::-webkit-scrollbar,
    .nun-values-grid::-webkit-scrollbar,
    #rakan-strategik .partners-grid::-webkit-scrollbar { display: none; }

    /* Package + Badal cards: ~87% wide, next card peeks */
    #packages-grid > *,
    #ibadah-home-grid > * {
        flex: 0 0 87%;
        scroll-snap-align: center;
        margin: 0;
    }
    /* Gallery slides + captions visible (no hover on touch) */
    .gallery-item { flex: 0 0 82%; scroll-snap-align: center; margin: 0; }
    .gallery-item figcaption { opacity: 1; transform: none; }
    /* Testimonials */
    .testi-card { flex: 0 0 86%; scroll-snap-align: center; }
    /* Nilai Kami cards */
    .nun-values-grid > .nun-values-card { flex: 0 0 78%; scroll-snap-align: center; }
    /* Rakan Strategik: single swipe strip (drop the forced row break) */
    #rakan-strategik .partners-break { display: none; }
    #rakan-strategik .partners-grid > .partner-logo { flex: 0 0 44%; scroll-snap-align: center; }

    /* Subtle hint that these rows are swipeable */
    .gallery-masonry, .testi-grid, #packages-grid, #ibadah-home-grid,
    .nun-values-grid, #rakan-strategik .partners-grid { scroll-padding-left: 16px; }
}

/* Soft advisory shown only on phones for the desktop-first admin portal */
.admin-mobile-note { display: none; }
@media (max-width: 767px) {
    .admin-mobile-note {
        display: flex; align-items: center; gap: 0.6rem;
        background: #fff7ed; border: 1px solid #fed7aa; color: #9a3412;
        border-radius: 12px; padding: 0.85rem 1rem; margin-bottom: 1.2rem;
        font-size: 0.85rem; line-height: 1.4;
    }
    .admin-mobile-note i { color: #ea580c; }
}

/* === MOBILE POLISH PART 2 (<=767px) === */
@media (max-width: 767px) {
    /* Package Explorer primary filter: 2 kolum sama lebar — kemas & seimbang (bukan skrol) */
    .pkg-filter-primary {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        justify-content: stretch;
        overflow: visible;
        margin-bottom: 12px;
    }
    .pkg-filter-primary.solo { margin-bottom: 16px; }
    .pkg-filter-primary::-webkit-scrollbar { display: none; }
    .pkg-filter-primary .pkg-primary-btn {
        flex: initial;
        width: 100%;
        min-height: 44px;
        padding: 0 0.7rem;
        font-size: 0.85rem;
        letter-spacing: 0.2px;
    }
    /* Keep gallery slides a comfortable height */
    .gallery-item img { max-height: 340px; object-fit: cover; }
}

/* === KURSUS MOBILE CAROUSEL (<=767px) — one card at a time + arrows + counter.
   Desktop: wrapper transparent, controls hidden (grid unchanged). === */
.kursus-carousel { position: relative; }
.kursus-arrow, .kursus-hint, .kursus-nav { display: none; }

@media (max-width: 767px) {
    /* One card per view, no peek. #id beats the existing .events-grid rules. */
    #events-grid {
        display: flex;
        flex-wrap: nowrap;
        align-items: stretch;
        gap: 12px;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-x: contain;
        grid-template-columns: none;
        padding: 0.4rem 0 0.6rem;
        scrollbar-width: none;
        scroll-behavior: smooth;
    }
    #events-grid::-webkit-scrollbar { display: none; }
    #events-grid > .event-card {
        flex: 0 0 100%;
        scroll-snap-align: center;
    }
    /* Clamp title (2) + description (3), full-width button, consistent height via stretch */
    #events-grid .event-card-body h3 {
        display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
    }
    #events-grid .event-card-body > p {
        display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
    }
    #events-grid .event-card-btn { width: 100%; justify-content: center; }

    /* Navigation row under the card: [ < ]   1 / 3   [ > ] */
    .kursus-nav {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 18px;
        margin-top: 14px;
    }
    .kursus-arrow {
        display: inline-flex; align-items: center; justify-content: center;
        width: 42px; height: 42px; border-radius: 999px;
        border: none; cursor: pointer; flex-shrink: 0;
        background: var(--primary); color: #fff;
        box-shadow: 0 6px 16px rgba(1, 103, 178, 0.32);
        font-size: 0.95rem;
        transition: opacity 0.2s ease, transform 0.15s ease;
    }
    .kursus-arrow:active { transform: scale(0.94); }
    .kursus-arrow:disabled { opacity: 0.32; cursor: default; box-shadow: none; }
    .kursus-counter {
        min-width: 48px; text-align: center;
        font-weight: 800; color: var(--primary); font-size: 0.95rem;
    }

    /* Swipe hint under the navigation row */
    .kursus-hint {
        display: flex; justify-content: center;
        margin-top: 8px; text-align: center;
    }
    .kursus-hint-text { font-size: 0.78rem; color: var(--text-muted); line-height: 1.4; }
}

/* === PACKAGE EXPLORER MOBILE CAROUSEL (<=767px) — one full card + nav below.
   Same standard as the kursus carousel. Desktop untouched. === */
.pkg-nav, .pkg-swipe-hint { display: none; }

@media (max-width: 767px) {
    /* One full package card per view (override the 87% peek from the general block) */
    #packages-grid { gap: 16px; scroll-padding-left: 0; }
    #packages-grid > * {
        flex: 0 0 100%;
        min-width: 100%;
        scroll-snap-align: start;
        scroll-snap-stop: always;
        box-sizing: border-box;
    }
    /* Title max 3 lines */
    #packages-grid .package-title {
        display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
    }
    /* Two CTAs share the row, wrap text instead of overflowing */
    #packages-grid .package-card-cta .btn {
        flex: 1 1 0; justify-content: center; min-height: 44px;
    }

    /* Navigation row below the card: [ < ]  1 / N  [ > ] */
    .pkg-nav {
        display: flex; align-items: center; justify-content: center;
        gap: 18px; margin-top: 14px;
    }
    .pkg-nav[hidden] { display: none; }
    .pkg-arrow {
        display: inline-flex; align-items: center; justify-content: center;
        width: 42px; height: 42px; border-radius: 999px;
        border: none; cursor: pointer; flex-shrink: 0;
        background: var(--primary); color: #fff;
        box-shadow: 0 6px 16px rgba(1, 103, 178, 0.32);
        font-size: 0.95rem;
        transition: opacity 0.2s ease, transform 0.15s ease;
    }
    .pkg-arrow:active { transform: scale(0.94); }
    .pkg-arrow:disabled { opacity: 0.32; cursor: default; box-shadow: none; }
    .pkg-counter {
        min-width: 52px; text-align: center;
        font-weight: 800; color: var(--primary); font-size: 0.95rem;
    }
    .pkg-swipe-hint { display: flex; justify-content: center; margin-top: 8px; text-align: center; }
    .pkg-swipe-hint[hidden] { display: none; }
    .pkg-swipe-hint span { font-size: 0.78rem; color: var(--text-muted); line-height: 1.4; }
}

/* Very small phones: stack the two CTAs */
@media (max-width: 360px) {
    #packages-grid .package-card-cta { flex-direction: column; }
    #packages-grid .package-card-cta .btn { width: 100%; }
}

/* === PACKAGE SUBCATEGORY FILTER — semua pilihan kelihatan tanpa page overflow === */
@media (max-width: 767px) {
    /* Beri ruang cukup untuk grid (label boleh turun 2 baris) tanpa terpotong */
    .pkg-filter-secondary.open { max-height: 150px; margin-bottom: 18px; }

    /* Tiga pilihan sebaris; empat pilihan Umrah membalut sebagai grid 2×2. */
    .pkg-filter-secondary-row {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        align-items: stretch;
        width: 100%;
        gap: 6px;
        padding: 8px 2px;
        overflow: visible;
        flex-wrap: initial;
        box-sizing: border-box;
    }
    .pkg-filter-secondary-row[data-count="4"] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .pkg-filter-secondary-row .pkg-sub-btn {
        flex: initial;
        width: 100%;
        min-width: 0;
        min-height: 40px;
        padding: 4px 8px;
        border-radius: 999px;
        display: flex;
        align-items: center;
        justify-content: center;
        text-align: center;
        white-space: normal;       /* benarkan label 2 baris (cth Umrah + Ziarah) */
        overflow-wrap: normal;
        word-break: normal;
        font-size: clamp(11px, 3vw, 12.5px);
        line-height: 1.2;
    }
}
/* Telefon paling kecil: gap dan padding lebih rapat. */
@media (max-width: 360px) {
    .pkg-filter-secondary-row { gap: 5px; padding: 6px 2px; }
    .pkg-filter-secondary-row .pkg-sub-btn { padding: 4px 4px; min-height: 42px; }
    .pkg-filter-primary { gap: 6px; }
    .pkg-filter-primary .pkg-primary-btn { padding: 0 0.4rem; font-size: 0.8rem; }
}

/* === BADAL HOMEPAGE MOBILE (<=767px) — 3-up category tabs + one full card + nav.
   Same standard as kursus & pakej carousels. Desktop untouched. === */
.badal-nav, .badal-swipe-hint { display: none; }

@media (max-width: 767px) {
    /* Category tabs: show Semua / Umrah / Haji at once (3-col grid, no scroll) */
    #ibadah-home-filter {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        width: 100%;
        gap: 6px;
        padding: 8px 0;
        overflow: visible;
        flex-wrap: initial;
        box-sizing: border-box;
    }
    #ibadah-home-filter .pkg-primary-btn {
        flex: initial;
        width: 100%;
        min-width: 0;
        min-height: 44px;
        padding: 6px 4px;
        display: flex; align-items: center; justify-content: center;
        text-align: center;
        white-space: normal;
        font-size: clamp(11px, 3vw, 13px);
        line-height: 1.15;
        border-radius: 999px;
    }

    /* One full Badal card per view (override the 87% peek from the general block) */
    #ibadah-home-grid { gap: 16px; }
    #ibadah-home-grid > * {
        flex: 0 0 100%;
        min-width: 100%;
        scroll-snap-align: start;
        scroll-snap-stop: always;
        box-sizing: border-box;
    }
    #ibadah-home-grid .package-title {
        display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
    }
    #ibadah-home-grid .package-details > p:first-of-type {
        display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden;
    }
    #ibadah-home-grid .package-card-cta .btn { flex: 1 1 0; justify-content: center; min-height: 44px; }

    /* Navigation row below the card: [ < ]  1 / N  [ > ] */
    .badal-nav {
        display: flex; align-items: center; justify-content: center;
        gap: 18px; margin-top: 14px;
    }
    .badal-nav[hidden] { display: none; }
    .badal-arrow {
        display: inline-flex; align-items: center; justify-content: center;
        width: 42px; height: 42px; border-radius: 999px;
        border: none; cursor: pointer; flex-shrink: 0;
        background: var(--primary); color: #fff;
        box-shadow: 0 6px 16px rgba(1, 103, 178, 0.32);
        font-size: 0.95rem;
        transition: opacity 0.2s ease, transform 0.15s ease;
    }
    .badal-arrow:active { transform: scale(0.94); }
    .badal-arrow:disabled { opacity: 0.32; cursor: default; box-shadow: none; }
    .badal-counter {
        min-width: 52px; text-align: center;
        font-weight: 800; color: var(--primary); font-size: 0.95rem;
    }
    .badal-swipe-hint { display: flex; justify-content: center; margin-top: 8px; text-align: center; }
    .badal-swipe-hint[hidden] { display: none; }
    .badal-swipe-hint span { font-size: 0.78rem; color: var(--text-muted); line-height: 1.4; }
}

/* Smallest phones: stack Badal CTAs + tighter tabs */
@media (max-width: 360px) {
    #ibadah-home-grid .package-card-cta { flex-direction: column; }
    #ibadah-home-grid .package-card-cta .btn { width: 100%; }
    #ibadah-home-filter { gap: 4px; }
    #ibadah-home-filter .pkg-primary-btn { padding: 5px 2px; }
}

/* === KHIDMAT BADAL FINAL REPAIR === */
@media (min-width: 1024px) {
    #ibadah-home-grid,
    #ibadah-catalog-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
}
@media (min-width: 768px) and (max-width: 1023px) {
    #ibadah-home-grid,
    #ibadah-catalog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
}
.ibadah-service-card { height: 100%; min-width: 0; }
.ibadah-service-card .package-img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; flex: 0 0 auto; }
.ibadah-service-card .package-details { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.ibadah-service-card .ibadah-card-price { margin-top: auto; padding-top: 0.75rem; }
.ibadah-service-card .package-card-cta { margin-top: 0.85rem !important; align-items: stretch; }
.ibadah-service-card .package-card-cta .btn { min-width: 0; text-align: center; }
.ibadah-card-fallback {
    background: #e8f3f7;
    color: var(--primary-dark);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
}
.ibadah-card-fallback[hidden] { display: none; }
.ibadah-card-fallback i { font-size: 2.5rem; color: var(--accent-teal); }
.ibadah-card-fallback span { font-family: var(--font-heading); font-weight: 700; }
.ibadah-price-pending { font-size: 0.95rem; line-height: 1.4; }
.ibadah-price-pending i { margin-right: 0.35rem; }
.ibr-fidyah-estimate {
    margin-top: 0.9rem;
    padding: 0.9rem 1rem;
    background: rgba(1, 103, 178, 0.06);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    font-size: 0.86rem;
}
.ibr-fidyah-row,
.ibr-fidyah-total { display: flex; justify-content: space-between; gap: 1rem; padding: 0.35rem 0; }
.ibr-fidyah-row strong { text-align: right; }
.ibr-fidyah-total { border-top: 1px solid var(--border-light); margin-top: 0.35rem; padding-top: 0.7rem; color: var(--primary); }
.ibr-fidyah-note { color: var(--text-muted); font-size: 0.76rem; margin-top: 0.45rem; }
.ibr-review-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; margin-top: 1rem; }
.ibr-review-summary > div { background: var(--bg-main); border-radius: 10px; padding: 0.75rem 0.85rem; min-width: 0; }
.ibr-review-summary span { display: block; color: var(--text-muted); font-size: 0.72rem; margin-bottom: 0.2rem; }
.ibr-review-summary strong { display: block; overflow-wrap: anywhere; font-size: 0.84rem; }
.ibr-no-docs { color: var(--text-muted); font-size: 0.85rem; margin: 0; }
@media (max-width: 767px) {
    #ibadah-home-grid { width: 100%; }
    #ibadah-home-grid > .ibadah-service-card { flex-basis: 100%; max-width: 100%; }
    .ibr-review-summary { grid-template-columns: 1fr; }
    .ibr-fidyah-row,
    .ibr-fidyah-total { align-items: flex-start; flex-direction: column; gap: 0.1rem; }
    .ibr-fidyah-row strong { text-align: left; }
}

/* === GALLERY MOBILE CAROUSEL (<=767px) — one full image + nav below.
   Same standard as kursus/pakej/badal. Desktop untouched. === */
.gallery-nav, .gallery-swipe-hint { display: none; }

@media (max-width: 767px) {
    /* Tajuk seksyen jelas dari sticky header */
    #galeri { scroll-margin-top: 90px; }

    /* One full gallery image per view (override 82% peek + 340px cap) */
    .gallery-masonry { gap: 16px; }
    .gallery-item {
        flex: 0 0 100%;
        min-width: 100%;
        scroll-snap-align: start;
        scroll-snap-stop: always;
        box-sizing: border-box;
    }
    .gallery-item img {
        width: 100%;
        aspect-ratio: 4 / 5;
        max-height: none;
        object-fit: cover;
        object-position: center;
    }
    .gallery-item figcaption { opacity: 1; transform: none; }  /* caption sentiasa nampak pada sentuh */

    /* Navigation row below the image: [ < ]  1 / N  [ > ] */
    .gallery-nav {
        display: flex; align-items: center; justify-content: center;
        gap: 18px; margin-top: 14px;
    }
    .gallery-nav[hidden] { display: none; }
    .gallery-arrow {
        display: inline-flex; align-items: center; justify-content: center;
        width: 42px; height: 42px; border-radius: 999px;
        border: none; cursor: pointer; flex-shrink: 0;
        background: var(--primary); color: #fff;
        box-shadow: 0 6px 16px rgba(1, 103, 178, 0.32);
        font-size: 0.95rem;
        transition: opacity 0.2s ease, transform 0.15s ease;
    }
    .gallery-arrow:active { transform: scale(0.94); }
    .gallery-arrow:disabled { opacity: 0.32; cursor: default; box-shadow: none; }
    .gallery-counter {
        min-width: 52px; text-align: center;
        font-weight: 800; color: var(--primary); font-size: 0.95rem;
    }
    .gallery-swipe-hint { display: flex; justify-content: center; margin-top: 8px; text-align: center; }
    .gallery-swipe-hint[hidden] { display: none; }
    .gallery-swipe-hint span { font-size: 0.78rem; color: var(--text-muted); line-height: 1.4; }
}

/* === RAKAN STRATEGIK 2-COL GRID (mobile) — bukan carousel; semua logo nampak === */
@media (max-width: 767px) {
    #rakan-strategik .partners-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
        width: 100%;
        overflow: visible;
        flex-wrap: initial;
        scroll-snap-type: none;
    }
    #rakan-strategik .partners-break { display: none; }
    #rakan-strategik .partners-grid > .partner-logo {
        flex: initial;
        width: 100%;
        min-width: 0;
        min-height: 108px;
        padding: 14px 10px;
        scroll-snap-align: none;
    }
    #rakan-strategik .partners-grid > .partner-logo img {
        width: 100%;
        max-width: 110px;
        height: 46px;
        object-fit: contain;
    }
    #rakan-strategik .partner-logo small { white-space: normal; line-height: 1.2; }
}

/* === TESTIMONI MOBILE CAROUSEL (<=767px) — one full card + nav below === */
.testi-nav, .testi-swipe-hint { display: none; }

@media (max-width: 767px) {
    #testimonials-container { gap: 16px; }
    #testimonials-container > .testi-card {
        flex: 0 0 100%;
        min-width: 100%;
        scroll-snap-align: start;
        scroll-snap-stop: always;
        box-sizing: border-box;
    }
    #testimonials-container .testi-text {
        display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden;
    }

    .testi-nav {
        display: flex; align-items: center; justify-content: center;
        gap: 18px; margin-top: 14px;
    }
    .testi-nav[hidden] { display: none; }
    .testi-arrow {
        display: inline-flex; align-items: center; justify-content: center;
        width: 42px; height: 42px; border-radius: 999px;
        border: none; cursor: pointer; flex-shrink: 0;
        background: var(--primary); color: #fff;
        box-shadow: 0 6px 16px rgba(1, 103, 178, 0.32);
        font-size: 0.95rem;
        transition: opacity 0.2s ease, transform 0.15s ease;
    }
    .testi-arrow:active { transform: scale(0.94); }
    .testi-arrow:disabled { opacity: 0.32; cursor: default; box-shadow: none; }
    .testi-counter {
        min-width: 52px; text-align: center;
        font-weight: 800; color: var(--primary); font-size: 0.95rem;
    }
    .testi-swipe-hint { display: flex; justify-content: center; margin-top: 8px; text-align: center; }
    .testi-swipe-hint[hidden] { display: none; }
    .testi-swipe-hint span { font-size: 0.78rem; color: var(--text-muted); line-height: 1.4; }
}

/* === NILAI KAMI MOBILE — vertical stack of 4 compact icon-left cards (no carousel) === */
@media (max-width: 767px) {
    .nun-values-grid {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
        width: 100%;
        overflow: visible;
        flex-wrap: initial;
        scroll-snap-type: none;
    }
    .nun-values-grid > .nun-values-card {
        flex: initial;
        width: 100%;
        min-width: 0;
        scroll-snap-align: none;
        display: grid;
        grid-template-columns: 44px minmax(0, 1fr);
        grid-template-rows: auto auto;
        column-gap: 14px;
        row-gap: 4px;
        align-items: start;
        text-align: left;
        padding: 16px;
    }
    .nun-values-grid > .nun-values-card:hover { transform: none; }
    .nun-values-grid > .nun-values-card .nun-values-icon {
        grid-column: 1;
        grid-row: 1 / span 2;
        width: 44px; height: 44px; margin: 0;
        border-radius: 12px;
        font-size: 1.15rem;
        align-self: start;
    }
    .nun-values-grid > .nun-values-card h4 {
        grid-column: 2; grid-row: 1;
        margin: 0 0 2px;
        line-height: 1.25;
        text-align: left;
    }
    .nun-values-grid > .nun-values-card p {
        grid-column: 2; grid-row: 2;
        margin: 0;
        line-height: 1.55;
        text-align: left;
    }
}

/* =======================================================
   LAIN-LAIN KHIDMAT v3.0
   Satu sistem visual untuk hub, detail, wizard dan status.
   ======================================================= */
/* Menu Khidmat: senarai satu lajur seperti menu lain. Kategori yang mempunyai
   lebih daripada satu pilihan membuka flyout di tepi, bukan mega menu grid. */
.nav-item-services .nav-dropdown { min-width: 268px; }
.khidmat-divider {
    height: 1px;
    margin: 0.35rem 0.55rem;
    background: var(--border-light);
}
.khidmat-sub { position: relative; }
.khidmat-sub-toggle {
    width: 100%;
    border: 0;
    background: none;
    cursor: pointer;
    text-align: left;
    justify-content: flex-start;
}
.khidmat-sub-toggle > span { flex: 1; min-width: 0; }
.khidmat-sub-caret {
    font-size: 0.62rem;
    opacity: 0.5;
    transition: transform 160ms ease, opacity 160ms ease;
}
.khidmat-sub:hover > .khidmat-sub-toggle .khidmat-sub-caret { opacity: 1; transform: translateX(2px); }

.khidmat-flyout {
    position: absolute;
    top: -0.5rem;
    left: calc(100% + 6px);
    min-width: 230px;
    max-width: min(340px, 46vw);
    padding: 0.5rem;
    margin: 0;
    list-style: none;
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 14px;
    box-shadow: 0 20px 45px rgba(9, 30, 54, 0.14);
    opacity: 0;
    visibility: hidden;
    transform: translateX(-6px);
    transition: var(--transition);
    z-index: 2;
}
.khidmat-sub:hover > .khidmat-flyout,
.khidmat-sub:focus-within > .khidmat-flyout {
    opacity: 1;
    visibility: visible;
    transform: translateX(0);
}
/* Dibalikkan oleh JS bila flyout akan terkeluar dari tepi kanan viewport. */
.khidmat-sub.flip-left > .khidmat-flyout {
    left: auto;
    right: calc(100% + 6px);
    transform: translateX(6px);
}
.khidmat-sub.flip-left:hover > .khidmat-flyout,
.khidmat-sub.flip-left:focus-within > .khidmat-flyout { transform: translateX(0); }

/* Biar flyout mengikut lebar kandungan supaya nama + badge kekal satu baris. */
.khidmat-flyout .nav-drop-link { white-space: nowrap; }
.khidmat-flyout .nav-drop-link > span { display: inline-flex; align-items: center; }
/* Isyarat bahawa pautan ini keluar dari laman Nun Travel. */
.khidmat-ext {
    margin-left: 0.4rem;
    font-size: 0.6rem;
    opacity: 0.45;
    vertical-align: middle;
}
.nav-drop-link:hover .khidmat-ext { opacity: 0.85; }
.khidmat-tag {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0.1rem 0.35rem;
    border-radius: 4px;
    background: #fff3dd;
    color: #9a5200;
    font-size: 0.56rem;
    font-weight: 800;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    vertical-align: middle;
}
.nav-drop-btn:focus-visible,
.nav-drop-link:focus-visible { outline: 3px solid rgba(1, 103, 178, 0.32); outline-offset: 2px; }

.llk-hero,
.llk-wizard-hero,
.llk-detail-hero {
    background: linear-gradient(135deg, #073b66 0%, #0167b2 62%, #087f8c 100%);
    color: #fff;
}
.llk-hero { padding: 5rem 0 4.5rem; text-align: center; }
.llk-hero .container,
.llk-wizard-hero .container { max-width: 860px; }
.llk-kicker { display: block; font-weight: 700; color: #d8f3ff; margin-bottom: 0.7rem; }
.llk-hero h1,
.llk-wizard-hero h1,
.llk-detail-hero h1 { color: #fff; font-size: 2.75rem; line-height: 1.12; letter-spacing: -0.025em; text-wrap: balance; margin: 0 0 1rem; }
.llk-hero p,
.llk-wizard-hero p,
.llk-detail-hero p { color: #eef9ff; font-size: 1rem; line-height: 1.7; max-width: 70ch; }
.llk-hero p { margin: 0 auto; }
.llk-hero-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.5rem; }
.llk-hero .llk-hero-actions { justify-content: center; }
.llk-hero .btn-secondary,
.llk-detail-hero .btn-secondary { background: #fff; color: #073b66; border-color: #fff; }
.btn-whatsapp { background: linear-gradient(135deg, #25d366, #1da851); color: #fff; box-shadow: 0 8px 20px rgba(29, 168, 81, 0.25); }
.btn-whatsapp:hover,
.btn-whatsapp:focus-visible { background: linear-gradient(135deg, #1da851, #128c3e); color: #fff; transform: translateY(-2px); box-shadow: 0 12px 25px rgba(29, 168, 81, 0.35); }
.btn-whatsapp i { margin-right: 7px; font-size: 1.05em; }
.llk-section { padding: 4rem 0; background: #f8fafc; }
.llk-category-section + .llk-category-section { margin-top: 3rem; }
.llk-category-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; border-bottom: 1px solid #d9e2ec; padding-bottom: 0.75rem; }
.llk-category-heading h2 { margin: 0; color: #102a43; font-size: 1.35rem; }
.llk-category-heading span { color: #627d98; font-size: 0.78rem; font-weight: 700; white-space: nowrap; }
.llk-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; }
.llk-card { background: #fff; border-radius: 14px; overflow: hidden; box-shadow: 0 4px 8px rgba(9, 30, 54, 0.08); display: flex; flex-direction: column; min-width: 0; }
.llk-media { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: #dcebf5; display: grid; place-items: center; }
.llk-media > i { position: absolute; font-size: 3rem; color: #0167b2; opacity: 0.75; }
.llk-media img { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: cover; }
.llk-badge { position: absolute; z-index: 2; top: 0.75rem; left: 0.75rem; padding: 0.28rem 0.55rem; border-radius: 5px; background: #fff3dd; color: #8a4b00; box-shadow: 0 2px 8px rgba(9, 30, 54, 0.14); font-size: 0.68rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.03em; }
.llk-badge-inline { position: static; display: inline-flex; box-shadow: none; margin: 0 0 0.75rem 0.75rem; vertical-align: middle; }
.llk-media.fallback { background: linear-gradient(145deg, #e3f2fb, #c9e7ef); }
.llk-card-body { padding: 1.25rem; display: flex; flex-direction: column; flex: 1; }
.llk-card-title { display: flex; align-items: flex-start; gap: 0.7rem; }
.llk-card-title > i { color: var(--primary); margin-top: 0.2rem; }
.llk-card h2 { font-size: 1.05rem; color: #102a43; margin: 0 0 0.6rem; line-height: 1.35; }
.llk-card p { color: #486581; line-height: 1.6; font-size: 0.87rem; margin: 0 0 1rem; }
.llk-price { color: #075985; display: block; font-size: 0.9rem; margin-top: auto; }
/* Hero berlatar gelap — warna kad (#075985) hampir hilang di atasnya. */
.llk-detail-hero .llk-price { color: #bde8ff; font-size: 1.05rem; margin: 0 0 1.1rem; }
.llk-card-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 0.55rem; margin-top: 1rem; }
.llk-card-actions .btn { min-width: 0; white-space: normal; line-height: 1.25; }
.llk-process { padding: 3.5rem 0 4rem; background: #fff; }
.llk-process h2 { text-align: center; color: #102a43; margin-bottom: 1.5rem; }
.llk-process-grid { display: grid; grid-template-columns: repeat(3, 1fr); max-width: 900px; margin: 0 auto 1.5rem; }
.llk-process-grid > div { display: flex; align-items: center; gap: 0.8rem; padding: 1rem 1.4rem; }
.llk-process-grid > div + div { border-left: 1px solid #d9e2ec; }
.llk-process-grid span { flex: 0 0 36px; width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: #0167b2; color: #fff; font-weight: 800; }
.llk-process-grid p { margin: 0; color: #334e68; font-weight: 600; line-height: 1.45; }
.llk-disclaimer { max-width: 900px; margin: 1rem auto; padding: 0.9rem 1rem; border: 1px solid #f2c46d; background: #fff8e8; color: #744210; border-radius: 12px; line-height: 1.55; font-size: 0.88rem; }
.llk-disclaimer i { margin-right: 0.45rem; }

.llk-detail-hero { padding: 4rem 0; }
.llk-detail-hero-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(280px, 0.85fr); align-items: center; gap: 3rem; }
.llk-detail-media { border-radius: 14px; }
.llk-partner-notice { margin-top: 1rem; padding: 0.9rem 1rem; border: 1px solid rgba(255,255,255,0.28); background: rgba(4,30,51,0.28); display: flex; gap: 0.75rem; align-items: flex-start; border-radius: 10px; max-width: 680px; }
.llk-partner-notice > i { margin-top: 0.2rem; color: #bde8ff; }
.llk-partner-notice strong { display: block; color: #fff; font-size: 0.86rem; }
.llk-partner-notice p { margin: 0.25rem 0 0; font-size: 0.78rem; line-height: 1.5; color: #e0f2fe; }
.llk-back { color: #e0f2fe; display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 700; margin-bottom: 1.25rem; text-decoration: none; }
.llk-back:hover { color: #fff; text-decoration: underline; }
.llk-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.llk-detail-block { background: #fff; border-radius: 14px; padding: 1.5rem; box-shadow: 0 4px 8px rgba(9, 30, 54, 0.06); }
.llk-detail-block h2 { display: flex; align-items: center; gap: 0.65rem; font-size: 1.05rem; color: #102a43; margin: 0 0 1rem; }
.llk-detail-block h2 i { color: var(--primary); }
.llk-detail-block ul { margin: 0; padding-left: 1.2rem; color: #486581; line-height: 1.75; }
.llk-faq { grid-column: 1 / -1; }
.llk-faq details { border-top: 1px solid #d9e2ec; padding: 0.9rem 0; }
.llk-faq summary { cursor: pointer; color: #102a43; font-weight: 700; }
.llk-faq p { color: #486581; line-height: 1.6; margin: 0.6rem 0 0; }

.llk-wizard-hero { padding: 3.2rem 0 5rem; }
.llk-form-wrap { max-width: 980px; margin: -6.5rem auto 0; position: relative; }
.llk-stepper { margin-bottom: 2rem; }
.llk-pane { display: none; }
.llk-pane.active { display: block; animation: tbookFade 180ms ease-out; }
.llk-pane > h2 { color: #102a43; font-size: 1.3rem; margin: 0 0 1.25rem; }
.llk-pane-copy { color: #486581; margin: -0.7rem 0 1.25rem; }
.llk-service-picker { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.7rem; }
.llk-service-option { cursor: pointer; min-width: 0; }
.llk-service-option input { position: absolute; opacity: 0; pointer-events: none; }
.llk-service-option span { display: flex; align-items: center; gap: 0.75rem; min-height: 52px; padding: 0.75rem 0.9rem; border: 1px solid #bcccdc; border-radius: 12px; color: #334e68; font-weight: 650; line-height: 1.3; }
.llk-service-option span i { width: 20px; color: #0167b2; text-align: center; }
.llk-service-option input:checked + span { border: 2px solid #0167b2; padding: calc(0.75rem - 1px) calc(0.9rem - 1px); background: #edf7ff; color: #075985; }
.llk-service-option input:focus-visible + span { outline: 3px solid rgba(1, 103, 178, 0.25); outline-offset: 2px; }
.llk-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
.llk-span-2 { grid-column: 1 / -1; }
.llk-doc-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.llk-doc-field { min-width: 0; padding: 1rem; background: #f5f9fc; border-radius: 12px; }
.llk-doc-field small { display: block; color: #526d82; margin-top: 0.45rem; }
.llk-empty-doc { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 2rem; background: #f5f9fc; border-radius: 12px; color: #486581; }
.llk-empty-doc i { font-size: 2rem; color: #07876f; margin-bottom: 0.7rem; }
.llk-empty-doc strong { color: #102a43; }
.llk-review-head { display: flex; align-items: center; gap: 1rem; padding-bottom: 1rem; border-bottom: 1px solid #d9e2ec; }
.llk-review-head > i { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: #edf7ff; color: #0167b2; }
.llk-review-head span { color: #526d82; font-size: 0.8rem; }
.llk-review-head h3 { margin: 0.15rem 0 0; color: #102a43; }
.llk-review-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; margin: 1rem 0; }
.llk-review-grid > div { padding: 0.75rem; border-bottom: 1px solid #e6edf2; min-width: 0; }
.llk-review-grid span { display: block; color: #526d82; font-size: 0.75rem; margin-bottom: 0.2rem; }
.llk-review-grid strong { display: block; color: #102a43; overflow-wrap: anywhere; }
.llk-review-docs { padding: 0.75rem; background: #f5f9fc; border-radius: 10px; }
.llk-review-docs p { margin: 0.3rem 0 0; color: #486581; overflow-wrap: anywhere; }
.llk-status-form { max-width: 680px; margin: -6.5rem auto 0; position: relative; }
#llk-status-result { margin-top: 1.3rem; }
.llk-status-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: #d9e2ec; border-radius: 12px; overflow: hidden; }
.llk-status-card > div { background: #f8fbfd; padding: 1rem; }
.llk-status-card span { display: block; color: #526d82; font-size: 0.75rem; margin-bottom: 0.25rem; }
.llk-status-card strong { color: #102a43; overflow-wrap: anywhere; }
.llk-status-card p { grid-column: 1 / -1; background: #fff8e8; color: #744210; margin: 0; padding: 1rem; line-height: 1.5; }
.llk-status-error { color: #b42318; background: #fff1f0; padding: 0.85rem; border-radius: 10px; }
.llk-status-loading { color: #486581; }
#brq-dynamic-service-tabs { display: contents; }

@media (max-width: 980px) {
    .llk-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .llk-detail-hero-grid { grid-template-columns: 1fr; }
    .llk-detail-media { max-width: 620px; width: 100%; }
}
@media (max-width: 768px) {
    .nav-item-services .nav-dropdown { width: 100%; min-width: 0; max-height: min(52vh, 440px); overflow-y: auto; }
    /* Mobile: flyout menjadi accordion sebaris — tiada panel melayang. */
    .khidmat-sub-toggle { min-height: 46px; }
    .khidmat-sub-caret { transform: rotate(90deg); opacity: 0.8; }
    .khidmat-sub.open > .khidmat-sub-toggle .khidmat-sub-caret { transform: rotate(-90deg); }
    .khidmat-sub:hover > .khidmat-sub-toggle .khidmat-sub-caret { transform: rotate(90deg); }
    .khidmat-sub.open:hover > .khidmat-sub-toggle .khidmat-sub-caret { transform: rotate(-90deg); }
    .khidmat-flyout {
        position: static;
        display: none;
        min-width: 0;
        max-width: none;              /* had desktop 46vw menghimpit teks di telefon */
        padding: 0.15rem 0 0.15rem 0.45rem;
        margin: 0 0 0.2rem 0.75rem;
        border: 0;
        border-left: 2px solid var(--border-light);
        border-radius: 0;
        background: none;
        box-shadow: none;
        opacity: 1;
        visibility: visible;
        transform: none;
    }
    .khidmat-sub.open > .khidmat-flyout { display: block; }
    /* Hover tidak boleh membuka apa-apa pada skrin sentuh — ketukan sahaja. */
    .khidmat-sub:hover > .khidmat-flyout,
    .khidmat-sub:focus-within > .khidmat-flyout { display: none; }
    .khidmat-sub.open:hover > .khidmat-flyout,
    .khidmat-sub.open:focus-within > .khidmat-flyout { display: block; }
    .nav-item-services .nav-drop-link { justify-content: flex-start; min-height: 46px; padding: 0.75rem; white-space: normal; text-align: left; }
    .llk-hero { padding: 3.5rem 0; }
    .llk-hero h1, .llk-wizard-hero h1, .llk-detail-hero h1 { font-size: 2rem; }
    .llk-section { padding: 2.5rem 0; }
    .llk-detail-grid, .llk-form-grid, .llk-doc-grid { grid-template-columns: 1fr; }
    .llk-span-2, .llk-faq { grid-column: auto; }
    .llk-process-grid { grid-template-columns: 1fr; }
    .llk-process-grid > div + div { border-left: 0; border-top: 1px solid #d9e2ec; }
    .llk-wizard-hero { padding: 2.6rem 0 4.6rem; }
    .llk-form-wrap, .llk-status-form { margin-top: -5.4rem; }
    .llk-service-picker { grid-template-columns: 1fr; }
    .llk-review-grid, .llk-status-card { grid-template-columns: 1fr; }
    .llk-status-card p { grid-column: auto; }
}
@media (max-width: 480px) {
    .llk-grid { grid-template-columns: 1fr; }
    .llk-card-actions { grid-template-columns: 1fr; }
    .llk-card-actions .btn { width: 100%; }
    .llk-detail-hero { padding: 3rem 0; }
    .llk-hero-actions .btn { width: 100%; }
    .llk-form-wrap { padding: 1.2rem 1rem; }
    .llk-stepper { gap: 0.2rem; }
    .llk-stepper .tbook-step-label { font-size: 0.62rem; }
}
@media (prefers-reduced-motion: reduce) {
    .llk-pane.active { animation: none; }
    .nav-caret { transition: none; }
}


/* --- Komisen Ejen (modal pakej) --- */
.pkgcom-preview { margin-top: 0.9rem; border-radius: 12px; padding: 1rem 1.1rem; font-size: 0.85rem; line-height: 1.6; }
.pkgcom-global { background: #f1f5f9; color: var(--text-muted); border: 1px dashed #cbd5e1; }
.pkgcom-global i { color: #64748b; margin-right: 6px; }
.pkgcom-active { background: linear-gradient(135deg, #ecfdf5, #f0fdf4); border: 1px solid #a7f3d0; display: flex; flex-direction: column; gap: 0.15rem; }
.pkgcom-label { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.6px; color: #047857; font-weight: 700; }
.pkgcom-amount { font-size: 1.6rem; font-weight: 800; color: #065f46; line-height: 1.2; }
.pkgcom-formula { font-size: 0.78rem; color: #047857; }
.pkgcom-rules { margin: 0; padding-left: 1.1rem; font-size: 0.82rem; line-height: 1.85; color: var(--text-muted); }
.pkgcom-rules strong { color: var(--text-dark, #0f172a); }
@media (prefers-color-scheme: dark) {
    .pkgcom-global { background: rgba(148,163,184,0.12); border-color: rgba(148,163,184,0.35); }
    .pkgcom-active { background: rgba(16,185,129,0.12); border-color: rgba(16,185,129,0.35); }
    .pkgcom-amount { color: #6ee7b7; }
    .pkgcom-label, .pkgcom-formula { color: #34d399; }
}

/* --- Galeri: kapsyen tajuk + info ringkas --- */
.gallery-item figcaption strong { display: block; font-size: 0.9rem; font-weight: 700; line-height: 1.35; }
.gallery-item figcaption span { display: block; margin-top: 0.25rem; font-size: 0.78rem; font-weight: 400; line-height: 1.5; color: rgba(255,255,255,0.88); }

/* --- Testimoni: avatar gambar + susun atur profil --- */
.testi-profile { display: flex; gap: 12px; align-items: center; margin-top: 1.5rem; }
.testi-avatar { width: 44px; height: 44px; flex: 0 0 44px; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 0.85rem; }
.testi-avatar-img { width: 44px; height: 44px; flex: 0 0 44px; border-radius: 50%; object-fit: cover; display: block; box-shadow: 0 2px 8px rgba(4,26,48,0.18); }
.testi-job { font-size: 0.75rem; color: var(--text-muted); margin: 0; }
.testi-name { margin: 0; }

/* --- Trip & Berita: pautan berita sebenar --- */
.feed-link { display: inline-flex; align-items: center; gap: 6px; margin-top: 0.9rem; font-size: 0.82rem; font-weight: 700; color: var(--primary); text-decoration: none; }
.feed-link:hover { text-decoration: underline; }
.feed-link i { font-size: 0.72rem; }

/* =======================================================
   PENGURUSAN KHIDMAT (Portal Admin) + matriks harga
   Ditambah untuk katalog Khidmat dinamik. Tidak menyentuh
   gaya modul lain.
   ======================================================= */
.llk-admin-head { display: flex; justify-content: space-between; align-items: flex-end; flex-wrap: wrap; gap: 0.8rem; margin-bottom: 1.1rem; }
.llk-admin-filters { display: flex; gap: 0.6rem; flex-wrap: wrap; align-items: center; margin-bottom: 1rem; }
.llk-admin-filters .form-control { max-width: 320px; margin: 0; }
.llk-admin-filters select.form-control { max-width: 250px; }
.llk-admin-count { font-size: 0.78rem; color: var(--text-muted); }
.llk-admin-crosslink { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin: 0 0 1.2rem; padding: 0.7rem 0.9rem; border-radius: 8px; background: #eef6fc; border: 1px solid #d3e6f5; font-size: 0.82rem; color: #12496f; }
.adm-btn-link { border: 0; background: none; padding: 0; color: var(--primary); font-weight: 700; font-size: 0.82rem; cursor: pointer; text-decoration: underline; }

.llk-admin-table td { vertical-align: top; font-size: 0.8rem; }
.llk-admin-service { display: flex; gap: 0.6rem; align-items: flex-start; }
.llk-admin-thumb { width: 52px; height: 34px; flex: 0 0 52px; border-radius: 5px; object-fit: cover; background: #e8eef4; }
.llk-admin-thumb-fallback { display: inline-flex; align-items: center; justify-content: center; color: var(--primary); }
.llk-admin-slug { font-size: 0.68rem; color: var(--text-muted); font-family: monospace; word-break: break-all; }
.llk-admin-row-archived { opacity: 0.62; }
.llk-admin-order { display: flex; align-items: center; gap: 0.25rem; }
.llk-admin-actions { display: flex; flex-wrap: wrap; gap: 0.25rem; }
.llk-icon-btn { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid #d9e2ec; border-radius: 6px; background: #fff; color: #334e68; cursor: pointer; font-size: 0.76rem; transition: background 140ms ease, color 140ms ease, border-color 140ms ease; }
.llk-icon-btn:hover:not(:disabled) { background: var(--primary); border-color: var(--primary); color: #fff; }
.llk-icon-btn:disabled { opacity: 0.35; cursor: not-allowed; }
.llk-icon-danger:hover:not(:disabled) { background: #dc2626; border-color: #dc2626; }
.llk-cta-chips { display: flex; flex-wrap: wrap; gap: 0.25rem; }
.llk-cta-chip { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.15rem 0.4rem; border-radius: 4px; background: #eef2f7; color: #334e68; font-size: 0.66rem; font-weight: 700; white-space: nowrap; }
.llk-cta-whatsapp { background: #e4f8ec; color: #12683d; }
.llk-cta-affiliate { background: #fff3dd; color: #8a4b00; }

.llk-cta-toggles { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 0.5rem; }
.llk-matrix-editor { display: flex; flex-direction: column; gap: 1rem; margin-top: 0.8rem; }
.llk-matrix-group { border: 1px solid #dde5ed; border-radius: 8px; padding: 0.8rem; background: #fbfdff; }
.llk-matrix-group-head { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; margin-bottom: 0.6rem; }
.llk-matrix-group-head .form-control { margin: 0; flex: 1 1 220px; }
.llk-matrix-inline { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.78rem; white-space: nowrap; }
.llk-matrix-order { flex: 0 0 80px !important; }
.llk-matrix-table td { padding: 0.3rem; }
.llk-matrix-table .form-control { margin: 0; min-width: 90px; font-size: 0.78rem; padding: 0.3rem 0.45rem; }

/* Kalkulator harga terletak terus di bawah hero — ia keputusan pertama
   pelanggan. Kad diangkat sedikit ke atas hero supaya kelihatan bersambung. */
/* Padding bawah 0 — seksyen berikutnya (.llk-section) sudah beri 4rem sendiri. */
.llk-estimator-section { padding: 0; background: #f8fafc; }
.llk-estimator-section > .container { margin-top: -2.25rem; position: relative; z-index: 1; }
.llk-estimator { border: 1px solid #dbe7f1; border-radius: 14px; padding: 1.4rem; background: #fff; box-shadow: 0 18px 40px rgba(9, 30, 54, 0.10); }
.llk-estimator h2 { display: flex; align-items: center; gap: 0.5rem; margin: 0 0 0.9rem; font-size: 1.1rem; color: var(--primary); }
.llk-estimator-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 0.7rem; }
.llk-estimator-grid .form-group { margin: 0; }
.llk-estimator-result { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; margin-top: 1rem; padding-top: 1rem; border-top: 1px dashed #cddbe8; }
.llk-estimator-price { display: flex; flex-direction: column; gap: 0.15rem; }
.llk-estimator-price > span { font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-muted); font-weight: 700; }
.llk-estimator-price > strong { font-size: 1.6rem; color: #075985; line-height: 1.1; }
.llk-estimator-price > small { font-size: 0.75rem; color: var(--text-muted); }
.llk-estimator-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.llk-estimator-empty { margin: 0 0 0.6rem; font-size: 0.85rem; color: var(--text-muted); }
.llk-estimator-note { margin: 0.9rem 0 0; display: flex; gap: 0.45rem; font-size: 0.76rem; line-height: 1.6; color: #486581; }
.llk-estimator-note i { margin-top: 0.2rem; }

@media (max-width: 768px) {
    .llk-admin-filters .form-control, .llk-admin-filters select.form-control { max-width: 100%; width: 100%; }
    .llk-estimator-result { flex-direction: column; align-items: stretch; }
    .llk-estimator-actions .btn { width: 100%; justify-content: center; }
    /* Hero bertindan pada mobile — jangan tarik kad ke atasnya. */
    .llk-estimator-section > .container { margin-top: 0; }
    .llk-estimator-section { padding: 1.5rem 0 2rem; }
}

/* Urus Khidmat: sub-pane permohonan / katalog (corak sama dgn .ibadah-subpane) */
.khidmat-subpane { display: none; }
.khidmat-subpane.active { display: block; }
