/* ==========================================================
   Zippy Travel & Tours - Quotation System
   Custom styles (brand extras that Tailwind utilities do not cover)
   ========================================================== */

:root {
    --zp-ink: #152d27;
    --zp-accent: #fa4f13;
    --zp-canvas: #f8fafc;
}

html,
body {
    -webkit-tap-highlight-color: transparent;
}

body {
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

::selection {
    background: rgba(250, 79, 19, 0.18);
    color: var(--zp-ink);
}

/* Alpine.js: hide elements until initialised */
[x-cloak] {
    display: none !important;
}

/* ----------------------------------------------------------
   Form controls
   ---------------------------------------------------------- */
.zp-input {
    width: 100%;
    padding: 0.75rem 0.875rem;
    font-size: 0.875rem;
    line-height: 1.35rem;
    color: var(--zp-ink);
    background-color: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 0.875rem;
    transition: border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease;
}

.zp-input::placeholder {
    color: #94a3b8;
}

.zp-input:hover {
    border-color: #cbd5e1;
}

.zp-input:focus {
    outline: none;
    border-color: var(--zp-accent);
    box-shadow: 0 0 0 4px rgba(250, 79, 19, 0.12);
}

.zp-input:-webkit-autofill {
    -webkit-text-fill-color: var(--zp-ink);
    box-shadow: 0 0 0 60px #ffffff inset;
}

/* ----------------------------------------------------------
   Boarding-pass decorations
   ---------------------------------------------------------- */

/* Subtle blueprint grid used on the dark brand panel */
.zp-grid-pattern {
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);
    background-size: 44px 44px;
}

/* Animated dashed flight route */
.zp-route-dash {
    background-image: repeating-linear-gradient(
        90deg,
        rgba(255, 255, 255, 0.45) 0,
        rgba(255, 255, 255, 0.45) 8px,
        transparent 8px,
        transparent 20px
    );
    background-size: 40px 1px;
    animation: zp-dash 1.6s linear infinite;
}

@keyframes zp-dash {
    from { background-position: 0 0; }
    to   { background-position: 40px 0; }
}

/* Decorative barcode strip */
.zp-barcode {
    background-image: repeating-linear-gradient(
        90deg,
        #152d27 0,
        #152d27 2px,
        transparent 2px,
        transparent 5px,
        #152d27 5px,
        #152d27 6px,
        transparent 6px,
        transparent 10px,
        #152d27 10px,
        #152d27 13px,
        transparent 13px,
        transparent 16px
    );
}

/* ----------------------------------------------------------
   Accessibility
   ---------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}
