@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

html {
    -webkit-tap-highlight-color: transparent;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    overflow-x: hidden;
    scroll-behavior: smooth;
}

body {
    background-color: theme('colors.background');
    color: theme('colors.on-background');
    font-family: 'Inter', sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
    max-width: 100vw;
}

/* Eliminate tap delay and accidental long-press text selection on interactive controls */
button,
a,
[role="button"],
input[type="submit"],
input[type="button"] {
    touch-action: manipulation;
}

button,
[role="button"],
.no-select {
    -webkit-user-select: none;
    user-select: none;
}

/* Prevent iOS Safari from auto-zooming the page when focusing form inputs */
@media (pointer: coarse) {
    input[type="text"],
    input[type="email"],
    input[type="tel"],
    input[type="number"],
    input[type="search"],
    input[type="password"],
    textarea,
    select {
        font-size: 16px !important;
    }
}

/* Safe-area bottom padding utility for notched phones */
.pb-safe {
    padding-bottom: env(safe-area-inset-bottom, 0px);
}

.material-symbols-outlined {
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}

.icon-fill {
    font-variation-settings: 'FILL' 1;
}

/* Ambient shadow utility for elevated states */
.ambient-shadow {
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
}

/* Numeric stability for prices, timers, badges, and quantities */
.tabular-nums,
[id*="price"],
[id*="subtotal"],
[id*="total"],
[id*="timer"],
[id*="count"] {
    font-variant-numeric: tabular-nums;
}

/* Tactile button press feedback (Emil Kowalski principle) */
button:not(:disabled):active,
.btn-press:active {
    transform: scale(0.98);
}

/* Hide scrollbar for clean horizontal scrolls if needed */
.hide-scrollbar::-webkit-scrollbar {
    display: none;
}
.hide-scrollbar {
    -ms-overflow-style: none;
    scrollbar-width: none;
}

/* Kinetic Orbital Hero Showcase Animations (GPU-composited transform & opacity only) */
@keyframes orbitSpinCW {
    from { transform: translate(-50%, -50%) rotate(0deg); }
    to { transform: translate(-50%, -50%) rotate(360deg); }
}

@keyframes orbitSpinCCW {
    from { transform: translate(-50%, -50%) rotate(360deg); }
    to { transform: translate(-50%, -50%) rotate(0deg); }
}

@keyframes orbitNodeFloatA {
    0%, 100% { transform: translate(-50%, -50%) translateY(0px); }
    50% { transform: translate(-50%, -50%) translateY(-7px); }
}

@keyframes orbitNodeFloatB {
    0%, 100% { transform: translate(-50%, -50%) translateY(0px); }
    50% { transform: translate(-50%, -50%) translateY(7px); }
}

@keyframes orbitCorePulse {
    0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.55; }
    50% { transform: translate(-50%, -50%) scale(1.06); opacity: 0.85; }
}

.orbit-ring-cw {
    animation: orbitSpinCW 34s linear infinite;
    will-change: transform;
}

.orbit-ring-ccw {
    animation: orbitSpinCCW 46s linear infinite;
    will-change: transform;
}

.orbit-core-aura {
    animation: orbitCorePulse 6s ease-in-out infinite;
    will-change: transform, opacity;
}

.orbit-float-a {
    animation: orbitNodeFloatA 4.5s ease-in-out infinite;
    will-change: transform;
}

.orbit-float-b {
    animation: orbitNodeFloatB 5.2s ease-in-out infinite;
    will-change: transform;
}

.orbit-node-active {
    box-shadow: 0 0 0 3px #008093, 0 14px 28px -6px rgba(0, 101, 117, 0.38) !important;
}

/* Subtle, fast page entry without artificial link-click lag */
@keyframes fadeInPage {
    from { opacity: 0.92; }
    to { opacity: 1; }
}
body {
    animation: fadeInPage 0.15s cubic-bezier(0.23, 1, 0.32, 1) forwards;
}

@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;
    }
}