/*
Theme Name: Karkonoska Miejscówka
Theme URI: https://karkonoska-miejscowka.pl
Author: Karkonoska Miejscówka
Author URI: https://karkonoska-miejscowka.pl
Description: Premium dark luxury theme for Karkonoska Miejscówka apartment rental in Szklarska Poręba. Glassmorphism, smooth animations, multilingual (PL/EN/CZ).
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: karkonoska
Tags: one-page, custom-background, translation-ready
*/

/* ===== RESET & BASE ===== */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&display=swap');

:root {
  --bg: hsl(220,14%,6%);
  --fg: hsl(40,10%,92%);
  --card: hsl(220,12%,10%);
  --primary: hsl(36,60%,58%);
  --primary-fg: hsl(220,14%,6%);
  --secondary: hsl(220,10%,16%);
  --secondary-fg: hsl(40,10%,82%);
  --muted: hsl(220,10%,14%);
  --muted-fg: hsl(220,8%,55%);
  --border: hsl(220,10%,18%);
  --glass-border: hsl(220,10%,22%);
  --radius: 0.75rem;
}

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

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

body {
  font-family: 'DM Sans', system-ui, sans-serif;
  background: var(--bg);
  color: var(--fg);
  line-height: 1.6;
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; display: block; }
button { cursor: pointer; border: none; background: none; font: inherit; color: inherit; }

/* ===== UTILITIES ===== */
.container { max-width: 1200px; margin: 0 auto; padding: 0 1.5rem; }
.text-primary { color: var(--primary); }
.text-muted { color: var(--muted-fg); }
.text-center { text-align: center; }
.uppercase { text-transform: uppercase; }
.tracking-wide { letter-spacing: 0.2em; }

.glass-panel {
  background: hsla(220,12%,10%,0.6);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius);
}

.glass-nav {
  background: hsla(220,14%,6%,0.7);
  backdrop-filter: blur(48px);
  -webkit-backdrop-filter: blur(48px);
  border-bottom: 1px solid var(--glass-border);
}

.btn-primary {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  padding: 1rem 2rem; border-radius: 9999px;
  background: var(--primary); color: var(--primary-fg);
  font-weight: 600; font-size: 0.875rem; letter-spacing: 0.02em;
  transition: all 0.3s ease;
}
.btn-primary:hover { filter: brightness(1.1); }
.btn-primary:active { transform: scale(0.97); }

.btn-outline {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 1rem 2rem; border-radius: 9999px;
  border: 1px solid var(--glass-border); color: var(--fg);
  font-weight: 500; font-size: 0.875rem;
  transition: all 0.3s ease;
}
.btn-outline:hover { background: var(--secondary); }

.hover-lift {
  transition: all 0.5s ease;
}
.hover-lift:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 48px -12px hsla(36,60%,58%,0.15);
}

/* ===== ANIMATIONS ===== */
@keyframes revealUp {
  from { opacity:0; transform:translateY(20px); filter:blur(4px); }
  to { opacity:1; transform:translateY(0); filter:blur(0); }
}
@keyframes slideInBottom {
  from { opacity:0; transform:translateY(100%); }
  to { opacity:1; transform:translateY(0); }
}

.reveal { opacity:0; transform:translateY(20px); transition: opacity 0.7s cubic-bezier(0.16,1,0.3,1), transform 0.7s cubic-bezier(0.16,1,0.3,1), filter 0.7s; filter:blur(4px); }
.reveal.visible { opacity:1; transform:translateY(0); filter:blur(0); }
.reveal-delay-1 { transition-delay: 80ms; }
.reveal-delay-2 { transition-delay: 160ms; }
.reveal-delay-3 { transition-delay: 240ms; }
.reveal-delay-4 { transition-delay: 320ms; }
.reveal-delay-5 { transition-delay: 400ms; }
.reveal-delay-6 { transition-delay: 480ms; }
.reveal-delay-7 { transition-delay: 560ms; }
.reveal-delay-8 { transition-delay: 640ms; }

/* ===== NAVBAR ===== */
.navbar {
  position: fixed; top:0; left:0; right:0; z-index:50;
  transition: all 0.5s ease;
}
.navbar.scrolled { background: hsla(220,14%,6%,0.7); backdrop-filter: blur(48px); border-bottom: 1px solid var(--glass-border); }
.navbar-inner {
  max-width: 1280px; margin: 0 auto; padding: 0 1.5rem;
  display: flex; align-items: center; justify-content: space-between;
  height: 5rem;
}
.navbar-logo { font-size: 1.125rem; font-weight: 600; letter-spacing: -0.01em; }
.navbar-links { display: flex; align-items: center; gap: 2rem; }
.navbar-links a { font-size: 0.875rem; color: var(--muted-fg); transition: color 0.3s; }
.navbar-links a:hover { color: var(--primary); }

.lang-switcher {
  display: flex; align-items: center; gap: 0.25rem; margin-left: 1rem;
  background: var(--secondary); border-radius: 9999px; padding: 0.25rem;
}
.lang-btn {
  font-size: 0.75rem; padding: 0.375rem 0.75rem; border-radius: 9999px;
  color: var(--muted-fg); transition: all 0.3s;
}
.lang-btn:hover { color: var(--fg); }
.lang-btn.active { background: var(--primary); color: var(--primary-fg); font-weight: 600; }

.mobile-toggle { display: none; color: var(--fg); }
.mobile-menu { display: none; }

@media (max-width:768px) {
  .navbar-links, .lang-switcher { display: none; }
  .mobile-toggle { display: block; }
  .mobile-menu.open {
    display: flex; flex-direction: column; gap: 1rem;
    padding: 1rem 1.5rem 1.5rem;
    border-top: 1px solid var(--glass-border);
    animation: revealUp 0.4s cubic-bezier(0.16,1,0.3,1) forwards;
  }
  .mobile-menu a { font-size: 0.875rem; color: var(--muted-fg); transition: color 0.3s; }
  .mobile-menu a:hover { color: var(--primary); }
  .mobile-menu .lang-switcher { display: flex; width: fit-content; }
}

/* ===== HERO ===== */
.hero {
  position: relative; height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden;
}
.hero-bg {
  position: absolute; inset: 0;
}
.hero-bg img { width:100%; height:100%; object-fit:cover; }
.hero-overlay {
  position:absolute; inset:0;
  background: linear-gradient(to bottom, hsla(220,14%,6%,0.8), hsla(220,14%,6%,0.5), var(--bg));
}
.hero-content {
  position:relative; z-index:10; text-align:center; max-width:48rem; padding:0 1.5rem;
}
.hero-location {
  color:var(--primary); font-size:0.875rem; font-weight:500;
  letter-spacing:0.3em; text-transform:uppercase; margin-bottom:1.5rem;
}
.hero h1 {
  font-size: clamp(2.25rem, 6vw, 4.5rem); font-weight:700;
  letter-spacing:-0.02em; line-height:0.95; margin-bottom:1.5rem;
  text-wrap: balance;
}
.hero-subtitle {
  font-size: clamp(1rem,2vw,1.125rem); color:var(--muted-fg);
  max-width:36rem; margin:0 auto 2.5rem; text-wrap:pretty;
}
.hero-cta { display:flex; flex-wrap:wrap; gap:1rem; justify-content:center; }
.hero-scroll {
  position:absolute; bottom:2rem; left:50%; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:0.5rem;
}
.hero-scroll-line { width:1px; height:3rem; background:linear-gradient(to bottom, transparent, hsla(36,60%,58%,0.6)); }

/* ===== SECTIONS ===== */
.section { padding: 6rem 1.5rem; }
.section-sm { padding: 4rem 1.5rem; }
.section-alt { background: hsla(220,10%,16%,0.3); }
@media (min-width:768px) {
  .section { padding: 8rem 3rem; }
  .section-sm { padding: 6rem 3rem; }
}
.section-label {
  color:var(--primary); font-size:0.875rem; font-weight:500;
  letter-spacing:0.2em; text-transform:uppercase; text-align:center;
  margin-bottom:1rem;
}

/* ===== ABOUT ===== */
.about-desc {
  font-size:1.125rem; color:var(--muted-fg); line-height:1.7;
  max-width:40rem; margin:0 auto 4rem; text-align:center; text-wrap:pretty;
}
.about-grid {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:1.5rem;
  max-width:48rem; margin:0 auto;
}
.about-card {
  padding:2rem; display:flex; flex-direction:column; align-items:center; gap:1rem; text-align:center;
}
.about-card svg { color:var(--primary); width:28px; height:28px; stroke-width:1.5; }
.about-card .value { font-size:1.875rem; font-weight:700; }
.about-card .label { font-size:0.875rem; color:var(--muted-fg); }

/* ===== AMENITIES ===== */
.amenities-grid {
  display:grid; grid-template-columns:repeat(2,1fr); gap:1rem;
  max-width:64rem; margin:3rem auto 0;
}
@media (min-width:768px) { .amenities-grid { grid-template-columns:repeat(4,1fr); } }
.amenity-card {
  padding:1.5rem; display:flex; flex-direction:column; align-items:center; gap:0.75rem; text-align:center;
}
.amenity-card svg { color:var(--primary); width:24px; height:24px; stroke-width:1.5; }
.amenity-card span { font-size:0.875rem; font-weight:500; }

/* ===== GALLERY ===== */
.gallery-wrapper { position:relative; max-width:72rem; margin:0 auto; }
.gallery-grid {
  display:grid; grid-template-columns:repeat(2,1fr); gap:0.75rem;
}
@media (min-width:768px) { .gallery-grid { grid-template-columns:repeat(3,1fr); gap:1rem; } }
.gallery-grid .featured { grid-column:span 2; grid-row:span 2; }
.gallery-item {
  overflow:hidden; border-radius:var(--radius); aspect-ratio:4/3;
}
.gallery-item.featured { aspect-ratio:auto; }
.gallery-item img {
  width:100%; height:100%; object-fit:cover;
  transition:transform 0.7s ease;
}
.gallery-item:hover img { transform:scale(1.05); }

.gallery-nav {
  position:absolute; top:50%; transform:translateY(-50%); z-index:10;
  width:2.5rem; height:2.5rem; border-radius:50%;
  background:hsla(220,10%,16%,0.8); backdrop-filter:blur(8px);
  border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center;
  color:var(--fg); transition:all 0.3s;
}
@media (min-width:768px) { .gallery-nav { width:3rem; height:3rem; } }
.gallery-nav:hover { background:var(--secondary); }
.gallery-nav:disabled { opacity:0.3; cursor:not-allowed; }
.gallery-nav.prev { left:-1rem; }
.gallery-nav.next { right:-1rem; }
@media (min-width:768px) { .gallery-nav.prev { left:-3rem; } .gallery-nav.next { right:-3rem; } }

.gallery-dots {
  display:flex; justify-content:center; gap:0.5rem; margin-top:2rem;
}
.gallery-dot {
  width:0.625rem; height:0.625rem; border-radius:9999px;
  background:hsla(220,8%,55%,0.3); transition:all 0.3s;
}
.gallery-dot:hover { background:hsla(220,8%,55%,0.5); }
.gallery-dot.active { background:var(--primary); width:2rem; }

/* ===== REVIEWS ===== */
.reviews-card {
  padding:2.5rem; max-width:48rem; margin:0 auto; text-align:center;
}
@media (min-width:768px) { .reviews-card { padding:3.5rem; } }
.stars { display:flex; justify-content:center; gap:0.25rem; margin-bottom:1.5rem; }
.stars svg { fill:var(--primary); color:var(--primary); width:16px; height:16px; }
.review-text {
  font-size:1.125rem; line-height:1.7; margin-bottom:2rem; font-style:italic; text-wrap:pretty;
}
@media (min-width:768px) { .review-text { font-size:1.25rem; } }
.review-author { color:var(--primary); font-weight:600; font-size:0.875rem; }
.review-nav { display:flex; justify-content:center; gap:0.75rem; margin-top:2rem; }
.review-btn {
  width:2.5rem; height:2.5rem; border-radius:50%;
  border:1px solid var(--glass-border);
  display:flex; align-items:center; justify-content:center;
  color:var(--muted-fg); transition:all 0.3s;
}
.review-btn:hover { color:var(--primary); border-color:var(--primary); }
.review-btn:active { transform:scale(0.95); }

/* ===== BOOKING ===== */
.booking-grid {
  display:grid; gap:2rem; max-width:56rem; margin:0 auto;
}
@media (min-width:768px) { .booking-grid { grid-template-columns:1fr 1fr; } }
.booking-cta {
  padding:2.5rem; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; gap:1.5rem;
}
.booking-cta h3 { font-size:1.125rem; font-weight:600; }
.booking-contact { font-size:0.875rem; color:var(--muted-fg); }
.booking-contact a { display:block; transition:color 0.3s; }
.booking-contact a:hover { color:var(--primary); }

.contact-form { padding:2rem; }
.contact-form .field { margin-bottom:1.25rem; }
.contact-form label {
  display:block; font-size:0.75rem; text-transform:uppercase;
  letter-spacing:0.1em; color:var(--muted-fg); margin-bottom:0.5rem;
}
.contact-form input,
.contact-form textarea {
  width:100%; background:var(--secondary); border:1px solid var(--glass-border);
  border-radius:0.5rem; padding:0.75rem 1rem; font-size:0.875rem;
  color:var(--fg); font-family:inherit; transition:all 0.3s; outline:none;
}
.contact-form input:focus,
.contact-form textarea:focus {
  border-color:var(--primary); box-shadow:0 0 0 3px hsla(36,60%,58%,0.2);
}
.contact-form textarea { resize:none; min-height:6rem; }
.contact-form .submit-btn { width:100%; margin-top:0.5rem; }

/* ===== MAP ===== */
.map-frame {
  border-radius:var(--radius); overflow:hidden; border:1px solid var(--glass-border);
}
.map-frame iframe {
  width:100%; height:400px; border:0;
  filter:invert(0.9) hue-rotate(180deg) saturate(0.3) brightness(0.8);
}

/* ===== FOOTER ===== */
.site-footer {
  border-top:1px solid var(--glass-border); padding:3rem 1.5rem;
}
@media (min-width:768px) { .site-footer { padding:4rem 1.5rem; } }
.footer-inner {
  max-width:64rem; margin:0 auto;
  display:flex; flex-direction:column; align-items:center; gap:2rem;
}
@media (min-width:768px) { .footer-inner { flex-direction:row; justify-content:space-between; } }
.footer-brand { text-align:center; }
@media (min-width:768px) { .footer-brand { text-align:left; } }
.footer-brand .name { font-size:1.125rem; font-weight:600; }
.footer-brand .address { font-size:0.75rem; color:var(--muted-fg); margin-top:0.25rem; }
.footer-contact { display:flex; flex-wrap:wrap; gap:0.75rem; margin-top:0.75rem; font-size:0.875rem; color:var(--muted-fg); }
.footer-contact a { display:inline-flex; align-items:center; gap:0.375rem; transition:color 0.3s; }
.footer-contact a:hover { color:var(--primary); }
.footer-links { display:flex; gap:1.5rem; font-size:0.875rem; color:var(--muted-fg); }
.footer-links a { transition:color 0.3s; }
.footer-links a:hover { color:var(--primary); }
.footer-social { display:flex; gap:1rem; }
.footer-social a {
  width:2.5rem; height:2.5rem; border-radius:50%;
  border:1px solid var(--glass-border);
  display:flex; align-items:center; justify-content:center;
  color:var(--muted-fg); transition:all 0.3s;
}
.footer-social a:hover { color:var(--primary); border-color:var(--primary); }
.footer-social a:active { transform:scale(0.95); }
.footer-copy { font-size:0.75rem; color:var(--muted-fg); text-align:center; margin-top:2.5rem; }

/* ===== COOKIE CONSENT ===== */
.cookie-banner {
  position:fixed; bottom:0; left:0; right:0; z-index:90; padding:1rem;
  animation: slideInBottom 0.5s ease forwards;
}
.cookie-inner {
  max-width:32rem; margin:0 auto;
  background:var(--card); border:1px solid var(--border); border-radius:1rem;
  padding:1.25rem; box-shadow:0 10px 40px rgba(0,0,0,0.4); backdrop-filter:blur(8px);
}
.cookie-inner p { font-size:0.875rem; color:var(--muted-fg); line-height:1.6; margin-bottom:1rem; }
.cookie-inner a { color:var(--primary); text-decoration:underline; text-underline-offset:2px; }
.cookie-btns { display:flex; gap:0.75rem; }
.cookie-btns button { flex:1; padding:0.625rem 1rem; border-radius:9999px; font-size:0.875rem; font-weight:600; transition:all 0.3s; }
.cookie-accept { background:var(--primary); color:var(--primary-fg); }
.cookie-accept:hover { filter:brightness(1.1); }
.cookie-decline { border:1px solid var(--border); }
.cookie-decline:hover { background:var(--secondary); }

/* ===== LEGAL PAGES ===== */
.legal-page { max-width:48rem; margin:0 auto; padding:8rem 1.5rem 4rem; }
.legal-page h1 { font-size:1.75rem; font-weight:700; margin-bottom:2rem; }
.legal-page h2 { font-size:1.125rem; font-weight:600; margin-top:2rem; margin-bottom:0.75rem; }
.legal-page p, .legal-page li { font-size:0.875rem; color:var(--muted-fg); line-height:1.8; }
.legal-page ul { list-style:none; padding-left:0; }
.legal-page ul li::before { content:"– "; color:var(--primary); }
.legal-back { display:inline-flex; align-items:center; gap:0.5rem; color:var(--primary); font-size:0.875rem; margin-bottom:2rem; transition:opacity 0.3s; }
.legal-back:hover { opacity:0.8; }

/* ===== HIDDEN ===== */
.hidden { display:none !important; }
