/* Hallmark · redesign · genre: playful · theme: custom "candy-violet Czech creative"
 * paper: oklch(20% 0.07 295) #131027 (dark default) · cream #FAF7F0 (light opt-in)
 * accents: violet #7C5CFF · pink #FF5CA8 · yellow #FFC940 · mint #3DDFA9
 * display: Syne 800 · body: Manrope · annotation: Caveat
 * axes: dark paper / geometric-sans display / multi-accent
 * pre-emit critique: P4 H4 E4 S4 R3 V4
 *
 * Dvojka Studio — shared theme system
 * Toggle themes via [data-theme] on <html>. DARK is the default:
 * an unattributed <html> renders dark; [data-theme="light"] opts in to light.
 */

:root,
:root[data-theme="dark"] {
  --bg:              #13102B;
  --bg-raised:       #1B163D;
  --bg-overlay:      #28205C;
  --bg-input:        #110E23;

  --text:            #F2EFFF;
  --text-strong:     #FFFFFF;
  --text-muted:      #A89FD6;
  --text-faint:      #6F66A3;

  --border:          rgba(157, 133, 255, 0.16);
  --border-strong:   rgba(157, 133, 255, 0.30);
  --border-faint:    rgba(157, 133, 255, 0.09);

  --accent:          #7C5CFF;
  --accent-hover:    #9D85FF;
  --accent-btn:      #6A48F0;
  --accent-soft:     rgba(124, 92, 255, 0.14);
  --accent-softer:   rgba(124, 92, 255, 0.07);

  /* Confetti accents — the happy part of the system */
  --pink:            #FF5CA8;
  --pink-soft:       rgba(255, 92, 168, 0.14);
  --yellow:          #FFC940;
  --yellow-soft:     rgba(255, 201, 64, 0.14);
  --mint:            #3DDFA9;
  --mint-soft:       rgba(61, 223, 169, 0.13);
  --coral:           #FF7A59;

  --success:         #6CE5B1;
  --success-strong:  #2ED594;

  --nav-bg:          rgba(19, 16, 39, 0.72);
  --nav-bg-scrolled: rgba(19, 16, 39, 0.92);
  --nav-border:      rgba(157, 133, 255, 0.14);

  --scrollbar-track: #110E23;
  --scrollbar-thumb: #332A6B;
  --scrollbar-hover: #4A3D99;
  --selection-bg:    rgba(255, 92, 168, 0.35);
  --shadow-sm:       0 1px 2px rgba(8, 5, 24, 0.5);
  --shadow-md:       0 8px 30px rgba(8, 5, 24, 0.45);
  --shadow-pop:      0 10px 32px rgba(124, 92, 255, 0.22);

  color-scheme:      dark;
}

:root[data-theme="light"] {
  --bg:              #FAF7F0;
  --bg-raised:       #FFFFFF;
  --bg-overlay:      #F1ECE1;
  --bg-input:        #FFFFFF;

  --text:            #251E4D;
  --text-strong:     #171138;
  --text-muted:      #5E5687;
  --text-faint:      #948CBD;

  --border:          rgba(37, 30, 77, 0.13);
  --border-strong:   rgba(37, 30, 77, 0.22);
  --border-faint:    rgba(37, 30, 77, 0.07);

  --accent:          #6A48F0;
  --accent-hover:    #7C5CFF;
  --accent-btn:      #5B3DE8;
  --accent-soft:     rgba(106, 72, 240, 0.10);
  --accent-softer:   rgba(106, 72, 240, 0.05);

  --pink:            #E83D8D;
  --pink-soft:       rgba(232, 61, 141, 0.10);
  --yellow:          #E8A200;
  --yellow-soft:     rgba(232, 162, 0, 0.12);
  --mint:            #0FA978;
  --mint-soft:       rgba(15, 169, 120, 0.10);
  --coral:           #E85B36;

  --success:         #0E8C5C;
  --success-strong:  #0FA978;

  --nav-bg:          rgba(250, 247, 240, 0.82);
  --nav-bg-scrolled: rgba(250, 247, 240, 0.95);
  --nav-border:      rgba(37, 30, 77, 0.10);

  --scrollbar-track: #EFEBE2;
  --scrollbar-thumb: #D4CDE8;
  --scrollbar-hover: #B3A8DD;
  --selection-bg:    rgba(232, 61, 141, 0.22);
  --shadow-sm:       0 1px 2px rgba(37, 30, 77, 0.07);
  --shadow-md:       0 8px 28px rgba(37, 30, 77, 0.10);
  --shadow-pop:      0 10px 30px rgba(106, 72, 240, 0.16);

  color-scheme:      light;
}

/* --------------------------------------------------------------------------
   Smooth theme transitions on color-bearing properties
   -------------------------------------------------------------------------- */
html,
body,
nav,
.nav-glass,
.service-card,
.contact-form-card,
.contact-input,
.mobile-menu,
.ty-overlay,
.ty-card,
.gradient-line,
footer,
a,
button,
input,
textarea,
.nav-link,
[class*="bg-surface"],
[class*="bg-white"],
[class*="border-white"] {
  transition:
    background-color 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease;
}

/* --------------------------------------------------------------------------
   Base — body / scrollbars / selection
   These use !important so they override per-page inline <style> blocks.
   -------------------------------------------------------------------------- */
body {
  background: var(--bg) !important;
  color: var(--text) !important;
}

::-webkit-scrollbar-track { background: var(--scrollbar-track) !important; }
::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb) !important; }
::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-hover) !important; }

::selection { background: var(--selection-bg) !important; color: var(--text-strong) !important; }

:focus-visible {
  outline: 2px solid var(--accent-hover);
  outline-offset: 2px;
}

/* --------------------------------------------------------------------------
   Wordmark — the text logo lockup (replaces the old PNG logo everywhere)
   -------------------------------------------------------------------------- */
.wordmark {
  display: inline-flex;
  align-items: center;
  line-height: 1;
  text-decoration: none;
  user-select: none;
}
.wordmark-name {
  font-family: 'Syne', sans-serif;
  font-weight: 800;
  font-size: 1.45rem;
  letter-spacing: -0.02em;
  color: var(--text-strong);
  white-space: nowrap;
}
.wordmark-name em {
  font-style: normal;
  color: var(--pink);
  transition: color 0.25s ease;
}
a:hover .wordmark-name em,
.wordmark:hover .wordmark-name em {
  color: var(--yellow);
}
.wordmark--footer .wordmark-name { font-size: 1.15rem; }
@media (max-width: 480px) {
  .wordmark-name { font-size: 1.25rem; }
}

/* --------------------------------------------------------------------------
   Playful shared ingredients — stickers, annotations, squiggles
   -------------------------------------------------------------------------- */
.sticker {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.5rem 1rem;
  border-radius: 999px;
  font-family: 'Syne', sans-serif;
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.01em;
  transform: rotate(var(--tilt, -3deg));
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.sticker:hover { transform: rotate(0deg) scale(1.05); }
.sticker--yellow {
  background: var(--yellow);
  color: #1A1430;
  box-shadow: 0 4px 16px rgba(255, 201, 64, 0.30);
}
.sticker--pink {
  background: var(--pink);
  color: #fff;
  box-shadow: 0 4px 16px rgba(255, 92, 168, 0.30);
}
.sticker--mint {
  background: var(--mint);
  color: #0D2B1F;
  box-shadow: 0 4px 16px rgba(61, 223, 169, 0.28);
}
.sticker--outline {
  background: transparent;
  color: var(--accent-hover);
  border: 2px dashed currentColor;
}

.annotation {
  font-family: 'Caveat', cursive;
  font-weight: 700;
  font-size: 1.4rem;
  line-height: 1.1;
  color: var(--yellow);
  display: inline-block;
  transform: rotate(-2deg);
}

/* Hand-drawn squiggle underline */
.squiggle {
  position: relative;
  display: inline-block;
}
.squiggle::after {
  content: '';
  position: absolute;
  left: -0.02em;
  right: -0.02em;
  bottom: -0.14em;
  height: 0.3em;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 12' preserveAspectRatio='none'%3E%3Cpath d='M2 8 C 18 2, 32 11, 48 6 S 80 2, 96 7 S 112 9, 118 5' fill='none' stroke='%23FF5CA8' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
  pointer-events: none;
}
.squiggle--yellow::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 12' preserveAspectRatio='none'%3E%3Cpath d='M2 8 C 18 2, 32 11, 48 6 S 80 2, 96 7 S 112 9, 118 5' fill='none' stroke='%23FFC940' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* --------------------------------------------------------------------------
   Decorative language — colourful, not sterile
   -------------------------------------------------------------------------- */

/* Divider line → a thin confetti gradient */
.gradient-line {
  height: 2px !important;
  border-radius: 2px;
  background: linear-gradient(90deg,
    transparent,
    var(--accent) 22%,
    var(--pink) 50%,
    var(--yellow) 78%,
    transparent) !important;
  opacity: 0.55 !important;
}

/* --------------------------------------------------------------------------
   Components — re-skinned with variables
   -------------------------------------------------------------------------- */

/* Navigation glass */
.nav-glass {
  background: var(--nav-bg) !important;
  backdrop-filter: blur(14px) saturate(150%) !important;
  -webkit-backdrop-filter: blur(14px) saturate(150%) !important;
  border: 1px solid var(--nav-border) !important;
}

/* Keep the floating nav — and its hamburger/close button + theme toggle —
   ABOVE the mobile menu overlay (z-index:100), so the menu can always be
   dismissed. Without this the open overlay hides the ✕ on phones. */
nav.nav-glass { z-index: 110 !important; }

/* Scrolled-state override (per-page JS pins inline background-color on
   the <nav>; we override with attribute selector + !important). */
nav[style] {
  background: var(--nav-bg-scrolled) !important;
  border-color: var(--nav-border) !important;
}

/* Nav links — thicker, happier underline */
.nav-link { color: var(--text-muted) !important; }
.nav-link:hover { color: var(--text-strong) !important; }
.nav-link::after {
  height: 2px !important;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--accent), var(--pink)) !important;
}

/* Mobile menu */
.mobile-menu {
  background: var(--nav-bg-scrolled) !important;
  backdrop-filter: blur(18px) saturate(150%) !important;
  -webkit-backdrop-filter: blur(18px) saturate(150%) !important;
}
.mobile-menu a { color: var(--text) !important; }
.mobile-menu a:hover { color: var(--pink) !important; }

/* Hamburger bars */
#bar1, #bar2, #bar3 { background: var(--text) !important; }

/* Service / generic cards */
.service-card {
  background: var(--bg-raised) !important;
  border: 1px solid var(--border) !important;
}
.service-card:hover {
  border-color: var(--accent) !important;
  transform: translateY(-4px);
  box-shadow: var(--shadow-pop);
}

/* Pricing tier cards (sprava.html) */
.tier-card,
.tier-card--featured,
.tier-card--hero {
  background: var(--bg-raised) !important;
}
.tier-card--featured,
.tier-card--hero {
  border-color: color-mix(in srgb, var(--accent) 45%, transparent) !important;
  box-shadow: var(--shadow-pop);
}

/* Portfolio project cards — overlay lives over a colour photo/mockup, so
   the gradient + text must stay dark/white in BOTH themes. */
.project-card .project-overlay {
  background: linear-gradient(
    to top,
    rgba(10, 7, 25, 0.94) 0%,
    rgba(10, 7, 25, 0.55) 35%,
    rgba(10, 7, 25, 0.18) 70%,
    rgba(10, 7, 25, 0)   100%
  ) !important;
}
.project-card .project-info,
.project-card .project-info h3,
.project-card .project-info p,
.project-card .project-info span {
  color: #ffffff !important;
}
.project-card .project-info .text-accent {
  color: var(--yellow) !important;
}

/* Contact card */
.contact-form-card {
  background: var(--bg-raised) !important;
  border: 1px solid var(--border) !important;
  box-shadow: var(--shadow-md);
}

.contact-input {
  background: var(--bg-input) !important;
  border: 1px solid var(--border) !important;
  color: var(--text) !important;
}
.contact-input::placeholder { color: var(--text-faint) !important; }
.contact-input:focus {
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 3px var(--accent-soft) !important;
}

/* Primary CTAs that sit on the accent background — text stays white in
   BOTH themes. Deep candy violet, pink-tinted pop on hover. */
.magnetic-btn,
.tier-btn--solid,
.tier-btn--solid:hover,
.cta-primary {
  color: #ffffff !important;
}
.magnetic-btn {
  background: var(--accent-btn) !important;
  box-shadow: 0 4px 18px rgba(124, 92, 255, 0.30) !important;
}
.magnetic-btn:hover {
  background: var(--accent) !important;
  box-shadow: 0 8px 28px rgba(255, 92, 168, 0.35) !important;
  transform: translateY(-2px) scale(1.02);
}
.magnetic-btn:active { transform: translateY(0) scale(0.99); }
.tier-btn--solid { background: var(--accent-btn) !important; }
.tier-btn--solid:hover { background: var(--accent) !important; }

/* Thank-you modal */
.ty-overlay {
  background: rgba(8, 5, 24, 0.6) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
}
:root[data-theme="light"] .ty-overlay {
  background: rgba(23, 17, 56, 0.35) !important;
}
.ty-card {
  background: var(--bg-raised) !important;
  border: 1px solid var(--border) !important;
  color: var(--text) !important;
}
.ty-card h3 { color: var(--text-strong) !important; }
.ty-card p  { color: var(--text-muted) !important; }
.ty-close { background: var(--bg-overlay) !important; }
.ty-close:hover { background: var(--pink) !important; }

/* Confetti — full burst, palette colours. It's a celebration, let it rain. */
.ty-confetti span:nth-child(odd) { display: inline-block !important; }
.ty-confetti span:nth-child(1) { background: var(--accent) !important; }
.ty-confetti span:nth-child(2) { background: var(--yellow) !important; }
.ty-confetti span:nth-child(3) { background: var(--pink) !important; }
.ty-confetti span:nth-child(4) { background: var(--mint) !important; }
.ty-confetti span:nth-child(5) { background: var(--accent-hover) !important; }
.ty-confetti span:nth-child(6) { background: var(--yellow) !important; }
.ty-confetti span:nth-child(7) { background: var(--pink) !important; }
.ty-confetti span:nth-child(8) { background: var(--coral) !important; }

/* Success icon inside the modal — violet→pink burst */
.ty-icon {
  background: linear-gradient(135deg, var(--accent) 0%, var(--pink) 100%) !important;
}

/* Accent text on dark needs the lighter tone for contrast */
.text-accent { color: var(--accent-hover) !important; }

/* --------------------------------------------------------------------------
   Tailwind utility-class overrides for LIGHT mode (so existing dark-built
   markup recolours cleanly when the visitor opts into light).
   -------------------------------------------------------------------------- */

:root[data-theme="light"] .bg-surface,
:root[data-theme="light"] [class*="bg-surface-DEFAULT"] {
  background-color: var(--bg) !important;
}
:root[data-theme="light"] .bg-surface-raised {
  background-color: var(--bg-raised) !important;
}
:root[data-theme="light"] .bg-surface-overlay {
  background-color: var(--bg-overlay) !important;
}

/* Text utilities */
:root[data-theme="light"] .text-white { color: var(--text-strong) !important; }
:root[data-theme="light"] .text-muted { color: var(--text-muted) !important; }
:root[data-theme="light"] .text-accent { color: var(--accent) !important; }
:root[data-theme="light"] .text-accent-light { color: var(--accent-hover) !important; }

/* Hover-state text colors */
:root[data-theme="light"] .hover\:text-white:hover,
:root[data-theme="light"] [class*="hover:text-white"]:hover {
  color: var(--text-strong) !important;
}
:root[data-theme="light"] [class*="hover:text-accent"]:hover {
  color: var(--accent) !important;
}

/* Generic white/* and border-white/* opacity-based utilities */
:root[data-theme="light"] [class*="text-white/"] { color: var(--text-muted) !important; }
:root[data-theme="light"] [class*="bg-white/"] { background-color: var(--bg-overlay) !important; }
:root[data-theme="light"] [class*="border-white/"] { border-color: var(--border) !important; }
:root[data-theme="light"] [class*="hover:bg-white/"]:hover { background-color: var(--bg-overlay) !important; }
:root[data-theme="light"] [class*="hover:border-white/"]:hover { border-color: var(--border-strong) !important; }

/* Accent variants in light mode */
:root[data-theme="light"] [class*="bg-accent/"] {
  background-color: var(--accent-soft) !important;
}
:root[data-theme="light"] [class*="border-accent/"] {
  border-color: color-mix(in srgb, var(--accent) 35%, transparent) !important;
}

/* Subtle grid background — visible on cream */
:root[data-theme="light"] .grid-bg {
  background-image:
    linear-gradient(rgba(37, 30, 77, 0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(37, 30, 77, 0.05) 1px, transparent 1px) !important;
}

/* Typewriter cursor */
.typed-cursor { color: var(--pink) !important; }

/* --------------------------------------------------------------------------
   Theme toggle button (injected by theme.js)
   -------------------------------------------------------------------------- */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 9999px;
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-muted);
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
  padding: 0;
  flex-shrink: 0;
}
.theme-toggle:hover {
  background: var(--accent-soft);
  color: var(--accent-hover);
  border-color: var(--accent);
  transform: rotate(15deg);
}
.theme-toggle:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.theme-toggle svg {
  width: 16px;
  height: 16px;
  display: block;
}
/* Show sun in dark mode, moon in light mode */
.theme-toggle .icon-sun  { display: block; }
.theme-toggle .icon-moon { display: none; }
:root[data-theme="light"] .theme-toggle .icon-sun  { display: none; }
:root[data-theme="light"] .theme-toggle .icon-moon { display: block; }

/* Mobile size tweak */
@media (max-width: 767px) {
  .theme-toggle {
    width: 34px;
    height: 34px;
  }
  .theme-toggle svg { width: 14px; height: 14px; }
}

/* --------------------------------------------------------------------------
   Density — laptop+ viewports render the design at 80% scale so the default
   matches what the user previously got by manually zooming the browser out.
   -------------------------------------------------------------------------- */
@media (min-width: 1024px) {
  html { font-size: 80%; }
}

/* --------------------------------------------------------------------------
   Reduced motion
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  html, body, nav, .nav-glass, .service-card, .contact-form-card,
  .contact-input, .mobile-menu, .ty-overlay, .ty-card, .gradient-line,
  footer, a, button, input, textarea, .nav-link, .theme-toggle,
  .wordmark-name em, .sticker, .magnetic-btn {
    transition: none !important;
  }
  .theme-toggle:hover { transform: none; }
}
