/**
 * Vinora Venues — Mobile & Responsive Design System
 * File: public/css/vinora-mobile.css
 * Purpose: Ensures full mobile responsiveness, touch optimization, readable typography,
 *          and adaptive layouts for all viewports (Mobile, Tablet, Desktop).
 */

/* ==========================================================================
   1. GLOBAL VIEWPORT & RESET SAFEGUARDS
   ========================================================================== */
html, body {
    max-width: 100%;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
}

*, *::before, *::after {
    box-sizing: border-box;
}

img, svg, video, canvas, audio, iframe, embed, object {
    max-width: 100%;
    height: auto;
}

/* Prevent text overflow across all cards and elements */
h1, h2, h3, h4, h5, h6, p, span, strong, a, label, small, dt, dd {
    overflow-wrap: break-word;
    word-break: break-word;
}

/* Base button and input touch targets */
button, input, select, textarea, .button, a.button, .chip, .preset-pill {
    touch-action: manipulation;
}

/* ==========================================================================
   2. TOUCH & FORM ACCESSIBILITY (NO IOS AUTO-ZOOM)
   ========================================================================== */
@media screen and (max-width: 768px) {
    /* Font size >= 16px stops iOS Safari from auto-zooming on focus */
    input[type="text"],
    input[type="email"],
    input[type="password"],
    input[type="number"],
    input[type="search"],
    input[type="tel"],
    input[type="url"],
    select,
    textarea {
        font-size: 16px !important;
    }
}

/* ==========================================================================
   3. MOBILE NAVIGATION & HEADER ENHANCEMENTS
   ========================================================================== */
.site-header {
    z-index: 999 !important;
}

@media screen and (max-width: 920px) {
    .nav-toggle {
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        min-width: 42px !important;
        min-height: 42px !important;
        padding: 8px !important;
        border-radius: 6px !important;
        border: 1px solid rgba(214, 173, 92, 0.4) !important;
        background: rgba(23, 18, 18, 0.8) !important;
        cursor: pointer !important;
    }

    .nav-actions {
        display: flex !important;
        align-items: center !important;
        gap: 8px !important;
        margin-left: auto !important;
    }

    .nav-links {
        display: none;
        position: absolute !important;
        top: 100% !important;
        left: 0 !important;
        right: 0 !important;
        width: 100% !important;
        background: #171212 !important;
        border-bottom: 1px solid rgba(214, 173, 92, 0.3) !important;
        padding: 16px 20px 24px !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 6px !important;
        box-shadow: 0 20px 40px rgba(0, 0, 0, 0.8) !important;
        z-index: 998 !important;
    }

    .nav-links.is-active {
        display: flex !important;
    }

    .nav-links a {
        display: block !important;
        padding: 12px 14px !important;
        font-size: 15px !important;
        color: var(--cream) !important;
        border-bottom: 1px solid rgba(214, 173, 92, 0.12) !important;
        border-radius: 4px !important;
    }

    .nav-links a:hover, .nav-links a:focus {
        background: rgba(214, 173, 92, 0.1) !important;
        color: var(--gold) !important;
    }

    .nav-links .mobile-only-link {
        display: block !important;
        font-weight: 600 !important;
        color: var(--gold) !important;
    }
}

@media screen and (max-width: 560px) {
    .nav-wrap {
        height: 64px !important;
        gap: 8px !important;
    }

    .brand img {
        height: 26px !important;
        width: auto !important;
    }

    /* Keep header clean by moving secondary links into the drawer */
    .nav-actions .link-button,
    .nav-actions .quiet {
        display: none !important;
    }

    .nav-actions .button.gold {
        padding: 7px 12px !important;
        font-size: 13px !important;
        min-height: 36px !important;
    }

    .nav-toggle {
        min-width: 38px !important;
        min-height: 38px !important;
        padding: 6px !important;
    }
}

/* ==========================================================================
   4. WORKSPACE RESPONSIVE SUITE
   ========================================================================== */

/* 4.1 Tab Navigation — Touch-scrollable horizontally on mobile */
.tab-nav {
    display: flex !important;
    gap: 6px !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    white-space: nowrap !important;
    -webkit-overflow-scrolling: touch !important;
    scrollbar-width: none !important; /* Firefox */
    -ms-overflow-style: none !important;  /* IE/Edge */
    border-bottom: 1px solid rgba(214, 173, 92, 0.25) !important;
    margin-top: 18px !important;
    margin-bottom: 24px !important;
    padding: 2px 2px 0 2px !important;
}

.tab-nav::-webkit-scrollbar {
    display: none !important; /* Chrome / Safari */
}

.tab-nav a {
    flex-shrink: 0 !important;
    white-space: nowrap !important;
    padding: 10px 16px !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    color: #a89c90 !important;
    border-bottom: 2px solid transparent !important;
    transition: all 0.2s ease !important;
}

.tab-nav a.selected {
    color: var(--gold) !important;
    border-bottom-color: var(--gold) !important;
    font-weight: 600 !important;
}

/* 4.2 Workspace Header & Venue Switcher */
@media screen and (max-width: 768px) {
    .workspace {
        padding: 20px 0 40px !important;
    }

    .workspace-header {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 14px !important;
    }

    .workspace-header h1 {
        font-size: 1.85rem !important;
        line-height: 1.25 !important;
        margin: 4px 0 !important;
    }

    .workspace-actions {
        display: flex !important;
        align-items: center !important;
        justify-content: space-between !important;
        flex-wrap: wrap !important;
        gap: 10px !important;
        width: 100% !important;
    }

    .workspace-actions .button {
        flex: 1 1 auto !important;
        text-align: center !important;
        justify-content: center !important;
    }

    .venue-switcher {
        display: flex !important;
        align-items: center !important;
        flex-wrap: wrap !important;
        gap: 6px !important;
        margin-top: 14px !important;
    }

    .venue-switcher span {
        width: 100% !important;
        margin-bottom: 2px !important;
    }
}

/* 4.3 Cellar Stats Grid */
@media screen and (max-width: 768px) {
    .cellar-stats-grid {
        display: grid !important;
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 10px !important;
        margin-bottom: 20px !important;
    }

    .cellar-stat-card {
        padding: 14px 14px !important;
        border-radius: 8px !important;
    }

    .cellar-stat-val {
        font-size: 1.6rem !important;
    }

    .cellar-stat-label {
        font-size: 0.7rem !important;
    }
}

@media screen and (max-width: 380px) {
    .cellar-stats-grid {
        grid-template-columns: 1fr !important;
    }
}

/* 4.4 Automated Wine-List Import & History */
@media screen and (max-width: 840px) {
    .upload-dropzone {
        padding: 20px 14px !important;
    }

    .upload-dropzone input[type="file"] {
        font-size: 13px !important;
    }

    .history-item {
        padding: 10px 4px !important;
        gap: 8px !important;
    }
}

/* 4.5 Manager Wine Review Extracted Cards */
@media screen and (max-width: 920px) {
    #reviewApprovalForm .card-grid.three {
        grid-template-columns: 1fr !important;
        gap: 14px !important;
    }

    #reviewApprovalForm article.card {
        padding: 16px !important;
    }

    #reviewApprovalForm select {
        width: 100% !important;
    }
}

/* 4.6 Cellar-Aware Waiter Assistant Copilot */
@media screen and (max-width: 840px) {
    .preset-pills-wrap {
        display: flex !important;
        gap: 6px !important;
        flex-wrap: wrap !important;
        margin: 8px 0 14px !important;
    }

    .preset-pill {
        padding: 6px 12px !important;
        font-size: 0.8rem !important;
        min-height: 34px !important;
        display: inline-flex !important;
        align-items: center !important;
    }

    #waiterRecommendForm label {
        margin-bottom: 12px !important;
    }

    .result {
        padding: 16px !important;
        margin-top: 20px !important;
    }

    .result h2 {
        font-size: 1.45rem !important;
        line-height: 1.25 !important;
    }

    .speech-quote {
        padding: 12px 14px !important;
        font-size: 0.875rem !important;
        line-height: 1.5 !important;
        margin: 12px 0 !important;
    }
}

/* 4.7 Venue Cellar Inventory & Filters */
@media screen and (max-width: 840px) {
    .wine-filter-bar {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 12px !important;
        padding: 14px !important;
    }

    .wine-filter-bar > div {
        width: 100% !important;
    }

    .wine-search-input {
        width: 100% !important;
        min-width: 0 !important;
        display: block !important;
    }

    #cellarCatalogueGrid {
        grid-template-columns: 1fr !important;
        gap: 14px !important;
    }

    .cellar-wine-card {
        padding: 16px !important;
    }

    .cellar-wine-card h3 {
        font-size: 1.25rem !important;
    }
}

/* 4.8 Food Menu Library & Review Workflow */
@media screen and (max-width: 920px) {
    .menu-layout {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 20px !important;
    }

    .menu-library,
    .review-panel,
    .control-panel {
        width: 100% !important;
        height: auto !important;
        min-height: auto !important;
        padding: 18px 16px !important;
    }

    .review-panel h2 {
        font-size: 1.6rem !important;
    }

    .dish {
        padding: 16px 12px !important;
        margin-bottom: 14px !important;
        background: rgba(0, 0, 0, 0.18) !important;
        border-radius: 6px !important;
    }

    .dish-head {
        display: flex !important;
        flex-direction: column !important;
        gap: 12px !important;
        align-items: stretch !important;
    }

    .dish-head h3 {
        font-size: 1.25rem !important;
    }

    .approval {
        display: flex !important;
        align-items: center !important;
        gap: 8px !important;
        padding: 10px 12px !important;
        background: rgba(214, 173, 92, 0.08) !important;
        border-radius: 6px !important;
        font-size: 0.85rem !important;
        cursor: pointer !important;
        min-height: 44px !important;
    }

    .dish-details {
        grid-template-columns: 1fr !important;
        gap: 8px !important;
        margin: 12px 0 !important;
    }

    .review-actions-bar {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 10px !important;
        padding: 14px !important;
    }

    .review-actions-bar .button {
        width: 100% !important;
        min-height: 40px !important;
    }
}

/* 4.9 Team Access & Members Tab */
@media screen and (max-width: 768px) {
    .member {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 10px !important;
        padding: 14px !important;
    }

    .member > div:last-child {
        display: flex !important;
        justify-content: space-between !important;
        align-items: center !important;
        width: 100% !important;
        border-top: 1px solid rgba(214, 173, 92, 0.1) !important;
        padding-top: 8px !important;
    }
}

/* 4.10 Billing Tab & Plans */
@media screen and (max-width: 768px) {
    .plan-line {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 10px !important;
        padding: 14px 0 !important;
    }

    .plan-line form,
    .plan-line .button {
        width: 100% !important;
    }
}

/* ==========================================================================
   5. MARKETING, PRICING & PUBLIC PAGES
   ========================================================================== */

/* 5.1 Hero & General Grids */
@media screen and (max-width: 920px) {
    .hero {
        padding: 36px 0 44px !important;
    }

    .page-hero {
        padding: 32px 0 36px !important;
    }

    .hero-grid,
    .two-col,
    .dashboard-grid,
    .card-grid.two,
    .card-grid.three,
    .pilot {
        grid-template-columns: 1fr !important;
        gap: 20px !important;
    }

    .section {
        padding: 40px 0 !important;
    }

    .pilot > div,
    .form-card {
        padding: 22px 18px !important;
    }
}

@media screen and (max-width: 640px) {
    .container {
        width: calc(100% - 32px) !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    .hero h1 {
        font-size: 2.1rem !important;
        line-height: 1.2 !important;
    }

    .page-hero h1 {
        font-size: 2rem !important;
        line-height: 1.22 !important;
    }

    .action-row {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 10px !important;
        width: 100% !important;
    }

    .action-row .button {
        width: 100% !important;
        text-align: center !important;
        justify-content: center !important;
    }

    .stat-row {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }

    .card,
    .hero-card,
    .plan-card,
    .form-card {
        padding: 20px 16px !important;
        border-radius: 8px !important;
    }

    .input-pair {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }
}

@media screen and (max-width: 380px) {
    .container {
        width: calc(100% - 24px) !important;
    }

    .hero h1 {
        font-size: 1.85rem !important;
    }
}

/* 5.2 Pricing Page Tables */
.plan-card table {
    width: 100% !important;
    border-collapse: collapse !important;
}

@media screen and (max-width: 640px) {
    .plan-card table th,
    .plan-card table td {
        padding: 10px 4px !important;
        font-size: 13px !important;
    }
}

/* ==========================================================================
   6. AUTHENTICATION & ONBOARDING FORMS
   ========================================================================== */
.auth-section {
    padding: 36px 16px !important;
    min-height: auto !important;
}

.auth-card {
    border-radius: 8px !important;
    padding: 28px 20px !important;
    max-width: 480px !important;
    margin: 0 auto !important;
}

.auth-card.wide {
    max-width: 580px !important;
}

@media screen and (max-width: 540px) {
    .auth-card {
        padding: 22px 16px !important;
    }

    .auth-card h1 {
        font-size: 2rem !important;
    }

    .auth-card .input-pair {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }
}

/* Password Toggle Wrapper */
.input-password-wrap {
    position: relative !important;
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
}

.input-password-wrap input {
    width: 100% !important;
    padding-right: 42px !important;
}

.toggle-password-btn {
    position: absolute !important;
    right: 8px !important;
    top: calc(50% + 2px) !important;
    transform: translateY(-50%) !important;
    background: transparent !important;
    border: none !important;
    color: #a89b8d !important;
    cursor: pointer !important;
    padding: 8px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    transition: color 0.2s ease !important;
    min-width: 36px !important;
    min-height: 36px !important;
}

.toggle-password-btn:hover, .toggle-password-btn:focus {
    color: var(--gold) !important;
}

/* Field Group & Validation Error Styles */
.field-group {
    display: flex !important;
    flex-direction: column !important;
    width: 100% !important;
}

.field-error {
    color: #e3a398 !important;
    font-size: 12px !important;
    margin-top: 4px !important;
    display: block !important;
    min-height: 16px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

input.input-error,
select.input-error,
textarea.input-error {
    border-color: #e3a398 !important;
    background-color: rgba(227, 163, 152, 0.05) !important;
}

/* ==========================================================================
   7. FOOTER RESPONSIVE ADJUSTMENTS
   ========================================================================== */
@media screen and (max-width: 768px) {
    .footer {
        padding: 32px 0 28px !important;
    }

    .footer-inner {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 16px !important;
    }

    .footer nav {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 16px !important;
    }
}

/* ==========================================================================
   8. ROLE BADGES & LOGGED-IN USER IDENTITY
   ========================================================================== */
.role-badge,
.user-role-badge {
    display: inline-flex !important;
    align-items: center !important;
    gap: 5px !important;
    padding: 3px 9px !important;
    border-radius: 12px !important;
    font-size: 0.7rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.07em !important;
    text-transform: uppercase !important;
    line-height: 1.2 !important;
    white-space: nowrap !important;
}

.role-badge-owner,
.user-role-badge.role-owner {
    background: rgba(214, 173, 92, 0.2) !important;
    border: 1px solid var(--gold) !important;
    color: #f7d688 !important;
}

.role-badge-manager,
.user-role-badge.role-manager {
    background: rgba(168, 120, 220, 0.2) !important;
    border: 1px solid #b78fed !important;
    color: #d6b8ff !important;
}

.role-badge-sommelier,
.user-role-badge.role-sommelier {
    background: rgba(52, 211, 153, 0.2) !important;
    border: 1px solid #34d399 !important;
    color: #6ee7b7 !important;
}

.role-badge-staff,
.user-role-badge.role-staff {
    background: rgba(56, 189, 248, 0.2) !important;
    border: 1px solid #38bdf8 !important;
    color: #7dd3fc !important;
}

.role-badge-member,
.user-role-badge.role-member {
    background: rgba(255, 255, 255, 0.1) !important;
    border: 1px solid rgba(255, 255, 255, 0.25) !important;
    color: #e5e7eb !important;
}

.nav-user-pill {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    background: rgba(255, 255, 255, 0.05) !important;
    border: 1px solid rgba(214, 173, 92, 0.25) !important;
    border-radius: 20px !important;
    padding: 3px 12px 3px 6px !important;
    margin-right: 4px !important;
}

.nav-user-name {
    font-size: 0.8125rem !important;
    color: var(--cream) !important;
    font-weight: 500 !important;
}

@media screen and (max-width: 680px) {
    .nav-user-pill .nav-user-name {
        display: none !important;
    }
    .nav-user-pill {
        padding: 3px 6px !important;
        margin-right: 0 !important;
    }
}


/* ==========================================================================
   UNIFIED BUTTON STANDARDIZATION & HARMONIZED SPACING (OCT 2026)
   Consistent font-family, sizes, styles, and rhythm across the entire platform
   ========================================================================== */

/* 1. Global Button Typography & Structure */
button,
.button,
a.button,
input[type="submit"],
input[type="button"] {
    font-family: var(--font-sans) !important;
    font-weight: 600 !important;
    letter-spacing: 0.02em !important;
    text-transform: none !important;
    border-radius: 6px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    transition: all 0.18s ease-in-out !important;
    cursor: pointer !important;
    line-height: 1.2 !important;
    box-sizing: border-box !important;
    text-decoration: none !important;
}

/* Standard Button Height & Padding (Universal 42px) */
button,
.button,
a.button,
input[type="submit"] {
    min-height: 42px !important;
    padding: 10px 20px !important;
    font-size: 0.875rem !important; /* 14px */
}

/* Small Button Variant (Universal 34px) */
.button.small,
button.small,
.link-button.small {
    min-height: 34px !important;
    padding: 6px 14px !important;
    font-size: 0.8125rem !important; /* 13px */
}

/* Large Button Variant (Universal 48px) */
.button.large,
button.large {
    min-height: 48px !important;
    padding: 14px 28px !important;
    font-size: 0.9375rem !important; /* 15px */
}

/* Full Width Variant */
.button.full,
button.full {
    width: 100% !important;
}

/* 2. Button Themes */
/* Gold Primary Button */
.button.gold,
button.gold,
a.button.gold {
    background: #d6ad5c !important;
    color: #120d0d !important;
    border: 1px solid #d6ad5c !important;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25) !important;
}
.button.gold:hover,
button.gold:hover,
a.button.gold:hover {
    background: #e3bd6d !important;
    border-color: #e3bd6d !important;
    color: #120d0d !important;
    box-shadow: 0 4px 12px rgba(214, 173, 92, 0.3) !important;
    transform: translateY(-1px) !important;
}

/* Quiet Secondary Button */
.button.quiet,
button.quiet,
a.button.quiet {
    background: rgba(214, 173, 92, 0.08) !important;
    color: #f5eedd !important;
    border: 1px solid rgba(214, 173, 92, 0.32) !important;
}
.button.quiet:hover,
button.quiet:hover,
a.button.quiet:hover {
    background: rgba(214, 173, 92, 0.16) !important;
    border-color: #d6ad5c !important;
    color: #ffffff !important;
}

/* Danger Button (e.g. Sign out, Withdraw, Remove) */
.button.danger,
button.danger,
.link-button.danger {
    background: rgba(239, 68, 68, 0.12) !important;
    color: #fca5a5 !important;
    border: 1px solid rgba(239, 68, 68, 0.35) !important;
}
.button.danger:hover,
button.danger:hover,
.link-button.danger:hover {
    background: rgba(239, 68, 68, 0.22) !important;
    border-color: #ef4444 !important;
    color: #ffffff !important;
}

/* Green Success Button */
.button.green,
button.green,
.link-button.green {
    background: rgba(34, 197, 94, 0.15) !important;
    color: #86efac !important;
    border: 1px solid rgba(34, 197, 94, 0.35) !important;
}
.button.green:hover,
button.green:hover,
.link-button.green:hover {
    background: rgba(34, 197, 94, 0.25) !important;
    border-color: #22c55e !important;
    color: #ffffff !important;
}

/* Link-button baseline */
.link-button {
    font-family: var(--font-sans) !important;
    font-weight: 500 !important;
    background: none !important;
    border: none !important;
    padding: 4px 8px !important;
    cursor: pointer !important;
}

/* 3. Harmonized Spacing Rhythm */
.card {
    padding: 24px !important;
    border-radius: 8px !important;
    margin-bottom: 20px !important;
}

.two-col,
.card-grid,
.dashboard-grid {
    gap: 20px !important;
}

@media (max-width: 768px) {
    .card {
        padding: 18px !important;
        margin-bottom: 16px !important;
    }
    .two-col,
    .card-grid,
    .dashboard-grid {
        gap: 16px !important;
    }
}
.nav-user-pill {
    max-width: 320px;
}
.nav-user-name {
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: inline-block;
}
.user-active-identity-bar {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
@media (max-width: 640px) {
    .user-active-identity-bar {
        flex-direction: column;
        align-items: flex-start !important;
        gap: 6px !important;
        width: 100% !important;
    }
}


/* ==========================================================================
   DESKTOP HEADER LAYOUT INTEGRITY (PREVENT OVERFLOW & MULTILINE WRAPPING)
   ========================================================================== */
.mobile-user-profile,
.mobile-only-block,
.mobile-only-link {
    display: none !important;
}

@media screen and (min-width: 921px) {
    .nav-toggle {
        display: none !important;
    }
    .mobile-user-profile,
    .mobile-only-block,
    .mobile-only-link {
        display: none !important;
    }
    .site-header .container.nav-wrap {
        display: flex !important;
        align-items: center !important;
        justify-content: space-between !important;
        flex-wrap: nowrap !important;
        gap: 16px !important;
    }
    .site-header .brand {
        flex-shrink: 0 !important;
    }
    .nav-links {
        display: flex !important;
        align-items: center !important;
        gap: 20px !important;
        flex-shrink: 0 !important;
    }
    .nav-links a {
        white-space: nowrap !important;
        font-size: 14px !important;
    }
    .nav-actions {
        display: inline-flex !important;
        align-items: center !important;
        gap: 12px !important;
        flex-shrink: 0 !important;
        margin-left: auto !important;
    }
    .nav-actions a,
    .nav-actions button,
    .nav-actions form,
    .workspace-nav-btn {
        white-space: nowrap !important;
        flex-shrink: 0 !important;
    }
}

@media screen and (max-width: 920px) {
    .mobile-user-profile,
    .mobile-only-block,
    .mobile-only-link {
        display: block !important;
    }
}
