/*
Theme Name: Opera Theme
Theme URI: https://opera-tent.com
Description: Maßgeschneidertes Theme für Opera-Tent – Eventzelte mit Stil
Author: Kraftwerk Marketing
Author URI: https://kraftwerk-marketing.de
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: opera-theme
Requires at least: 6.0
Requires PHP: 8.0
*/

/* ==========================================================================
   CUSTOM FONTS
   ========================================================================== */

@font-face {
    font-family: 'GRIN3 Dramaturg';
    src: url('assets/fonts/GRIN3-Nowak---Dramaturg.woff2') format('woff2'),
         url('assets/fonts/GRIN3-Nowak---Dramaturg.woff') format('woff');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

/* ==========================================================================
   CSS CUSTOM PROPERTIES
   ========================================================================== */

:root {
    /* Colors */
    --color-primary: #332F2C;
    --color-secondary: #75151E;
    --color-white: #ffffff;
    --color-light: #F0EFE8;
    --color-gray: #6D6552;
    --color-gray-light: #D5D3C8;
    --color-dark: #1a1a1a;
    
    /* Typography */
    --font-primary: 'Work Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --font-script: 'GRIN3 Dramaturg', 'Georgia', serif;
    
    --font-size-base: 1rem;
    --font-size-sm: 0.875rem;
    --font-size-lg: 1.125rem;
    --font-size-xl: 1.25rem;
    --font-size-2xl: 1.5rem;
    --font-size-3xl: 2rem;
    --font-size-4xl: 2.5rem;
    --font-size-5xl: 3.5rem;
    
    --line-height-normal: 1.6;
    --line-height-tight: 1.3;
    
    /* Spacing */
    --space-xs: 0.25rem;
    --space-sm: 0.5rem;
    --space-md: 1rem;
    --space-lg: 1.5rem;
    --space-xl: 2rem;
    --space-2xl: 2.5rem;
    --space-3xl: 3rem;
    --space-4xl: 3.5rem;
    
    /* Layout */
    --container-width: 1200px;
    --container-narrow: 800px;
    --container-wide: 1400px;
    
    /* Effects */
    --radius: 4px;
    --radius-lg: 8px;
    --shadow: 0 2px 8px rgba(0,0,0,0.1);
    --shadow-lg: 0 8px 24px rgba(0,0,0,0.15);
    --transition: 0.3s ease;
}

/* ==========================================================================
   RESET & BASE
   ========================================================================== */

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

html {
    scroll-behavior: smooth;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    font-family: var(--font-primary);
    font-size: var(--font-size-base);
    line-height: var(--line-height-normal);
}

/* Site Content - no margin for front page */
.site-content {
    margin: 0;
    padding: 0;
}

/* Front page: no padding on main content (hero goes behind header) */
.home .site-content,
.home .site-main,
.home #content,
.home main {
    padding-top: 0 !important;
    margin-top: 0 !important;
}

/* Hero Slider: full width, no margin */
.opera-hero-slider {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

/* Remove WP block default top margins on front page */
.home .entry-content > *:first-child,
.home .wp-block-group:first-child {
    margin-top: 0 !important;
    margin-block-start: 0 !important;
}

body {
    color: var(--color-primary);
    background: var(--color-white);
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

a {
    color: var(--color-secondary);
    text-decoration: none;
    transition: color var(--transition);
}

a:hover {
    color: var(--color-primary);
}

h1, h2, h3, h4, h5, h6 {
    font-weight: 600;
    line-height: var(--line-height-tight);
    color: var(--color-primary);
}

h1 { font-size: clamp(2rem, 5vw, var(--font-size-5xl)); }
h2 { font-size: clamp(1.5rem, 4vw, var(--font-size-4xl)); }
h3 { font-size: var(--font-size-2xl); }
h4 { font-size: var(--font-size-xl); }

p {
    margin-bottom: var(--space-md);
}

p:last-child {
    margin-bottom: 0;
}

/* ==========================================================================
   LAYOUT
   ========================================================================== */

.site {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.site-content {
    flex: 1;
}

.container {
    width: 100%;
    max-width: var(--container-width);
    margin: 0 auto;
    padding: 0 var(--space-lg);
}

.container-narrow {
    max-width: var(--container-narrow);
}

.container-wide {
    max-width: var(--container-wide);
}

.section {
    padding: var(--space-4xl) 0;
}

.section-sm {
    padding: var(--space-2xl) 0;
}

.section-lg {
    padding: var(--space-4xl) 0;
}

/* Background variations */
.bg-primary { background-color: var(--color-primary); color: var(--color-white); }
.bg-secondary { background-color: var(--color-secondary); color: var(--color-white); }
.bg-light { background-color: var(--color-light); }
.bg-white { background-color: var(--color-white); }
.bg-dark { background-color: var(--color-dark); color: var(--color-white); }

.bg-primary h1, .bg-primary h2, .bg-primary h3,
.bg-secondary h1, .bg-secondary h2, .bg-secondary h3,
.bg-dark h1, .bg-dark h2, .bg-dark h3 {
    color: var(--color-white);
}

/* ==========================================================================
   BUTTONS
   ========================================================================== */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-sm);
    padding: 0.75rem 1.75rem;
    font-family: var(--font-primary);
    font-size: var(--font-size-base);
    font-weight: 500;
    text-decoration: none;
    border: 2px solid transparent;
    border-radius: var(--radius);
    cursor: pointer;
    transition: all var(--transition);
}

.btn-primary {
    background: var(--color-secondary);
    color: var(--color-white);
    border-color: var(--color-secondary);
}

.btn-primary:hover {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-white);
}

.btn-outline {
    background: transparent;
    color: var(--color-primary);
    border-color: var(--color-primary);
}

.btn-outline:hover {
    background: var(--color-primary);
    color: var(--color-white);
}

.btn-white {
    background: var(--color-white);
    color: var(--color-primary);
    border-color: var(--color-white);
}

.btn-white:hover {
    background: transparent;
    color: var(--color-white);
}

.btn-outline.btn-white {
    background: transparent;
    color: var(--color-white);
    border-color: var(--color-white);
}

.btn-outline.btn-white:hover {
    background: var(--color-white);
    color: var(--color-primary);
}

/* ==========================================================================
   TYPOGRAPHY UTILITIES
   ========================================================================== */

.text-center { text-align: center; }
.text-left { text-align: left; }
.text-right { text-align: right; }

.text-white { color: var(--color-white); }
.text-primary { color: var(--color-primary); }
.text-secondary { color: var(--color-secondary); }
.text-gray { color: var(--color-gray); }

.section-title {
    text-align: center;
    margin-bottom: var(--space-xl);
}

.section-subtitle {
    text-align: center;
    color: var(--color-gray);
    max-width: 700px;
    margin: 0 auto var(--space-2xl);
}

/* ==========================================================================
   FORMS
   ========================================================================== */

input, textarea, select {
    font-family: var(--font-primary);
    font-size: var(--font-size-base);
}

input[type="text"],
input[type="email"],
input[type="tel"],
input[type="number"],
textarea,
select {
    width: 100%;
    padding: 0.75rem 1rem;
    border: 2px solid var(--color-gray-light);
    border-radius: var(--radius);
    transition: border-color var(--transition);
}

input:focus,
textarea:focus,
select:focus {
    outline: none;
    border-color: var(--color-secondary);
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 1024px) {
    .section {
        padding: var(--space-3xl) 0;
    }
}

@media (max-width: 768px) {
    :root {
        --space-2xl: 2rem;
        --space-3xl: 2.5rem;
        --space-4xl: 3rem;
    }
    
    .section {
        padding: var(--space-2xl) 0;
    }
    
    .container {
        padding: 0 var(--space-md);
    }
}

/* ==========================================================================
   COVER BLOCK PARALLAX FIX
   WordPress Cover block mit "Fixierter Hintergrund" funktioniert nicht
   wenn transform auf body/parents liegt (Page Transitions).
   Lösung: clip-path + position:fixed auf dem Hintergrundbild.
   ========================================================================== */

.wp-block-cover.has-parallax {
    /* clip-path begrenzt das fixed-child auf diesen Container */
    clip-path: inset(0);
    -webkit-clip-path: inset(0);
    /* background-attachment:fixed abschalten, wir nutzen stattdessen das img */
    background-attachment: scroll !important;
    background-image: none !important;
}

.wp-block-cover.has-parallax > .wp-block-cover__image-background,
.wp-block-cover.has-parallax > video.wp-block-cover__video-background {
    position: fixed !important;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    object-fit: cover;
    z-index: 0;
}
