/**
 * CSS variables, reset, and page layout.
 *
 * Split from public/css/cashier.css (2,091 lines). Cascade order matters:
 * load these in the numbered order, exactly as the original file was ordered.
 */

@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300..900&family=Noto+Sans+Armenian:wght@300..900&display=swap');

/* Cashier Page Styles */

/* ===== CSS VARIABLES ===== */
:root {
    /* Shared with every other admin stylesheet (people, performances, stats,
       partners, hall-plans). Keep the values in step with those - the screens are
       read side by side, and a grey or a blue that is a few points off reads as a
       different product rather than a different page. */
    --primary-color: #007bff;
    --primary-gradient: linear-gradient(135deg, #764ba2, #667eea);
    --secondary-gradient: linear-gradient(135deg, #667eea, #764ba2);
    --success-color: #28a745;
    --error-color: #dc3545;
    --text-primary: #2c3e50;
    --text-secondary: #6c757d;
    --bg-light: #f8f9fa;
    --bg-white: #ffffff;
    --border-color: #dee2e6;
    --shadow: 0 10px 30px rgba(0,0,0,0.1);
    --transition: all 0.3s ease;

    /* Seat statuses. Deliberately NOT the house --success/--error/--warning: these
       are the legend's colours, they have to stay separable from each other at 20px
       across a hall of several hundred, and the same greens and reds are what the
       hall-plans screen draws. Changing one of these changes what a seat means. */
    --seat-status-available: #27ae60;
    --seat-status-sold: #e74c3c;
    --seat-status-reserved: #f39c12;
    --seat-status-selected: #9b59b6;
    --seat-status-default: #3498db;
}

/* ===== RESET & BASE STYLES ===== */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    /* Montserrat is the base face everywhere. It ships no Armenian glyphs, so Noto Sans
       Armenian sits behind it and the browser falls back per character: Latin and
       Cyrillic in Montserrat, Armenian in Noto. Without that second face Armenian drops
       to whatever the system happens to pick, which is what made it render wrong. */
    font-family: 'Montserrat', 'Noto Sans Armenian', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    background: var(--bg-light);
    color: var(--text-primary);
    min-height: 100vh;
}

/* ===== LAYOUT STYLES ===== */
.container {
    margin: 0 auto;
    padding: 20px;
}

/* ===== HEADER (shared shell) =====
   Kept in step with people.css / performances.css / stats.css: a full-width gradient
   card above the page's content, left column for who you are and where you are, centre
   for the title, right for the page's own controls. */
.header {
    background: var(--primary-gradient);
    color: white;
    padding: 20px;
    border-radius: 15px;
    margin-bottom: 20px;
    box-shadow: var(--shadow);
    display: flex;
    align-items: center;
    gap: 30px;
}

.header-left {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

/* Between the identity block and the title: these two act on the event named to their
   right, so they sit beside it rather than across the header from it. */
.header-view-controls {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: none;
}

.header-content {
    flex: 1;
    text-align: center;
    min-width: 0;
}

.header-content h1 {
    font-size: 2.2em;
    font-weight: 300;
    margin-bottom: 8px;
}

.header-content h1 i {
    font-size: 0.85em;
    opacity: 0.85;
    margin-right: 6px;
}

/* The subtitle line other pages fill with a static description. Here it carries the
   selected event's date and its remaining seat count, both written by JS. */
.header-content p {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 10px;
    font-size: 1.05em;
    opacity: 0.9;
    min-height: 1.4em;
}

.header-right {
    display: flex;
    align-items: center;
    gap: 12px;
    justify-content: flex-end;
    min-width: 230px;
}

