/* Nirvan Studio – base styles ported from src/index.css (plain CSS, loaded after Tailwind). */
:root {
  --font-sans: 'Plus Jakarta Sans', 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-logo: 'Nunito Sans', 'Outfit', 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-code: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  --color-nirvan-rose: #EF4444;
  --color-nirvan-plum: #645678;
}

::selection { background-color: rgba(239, 68, 68, 0.22); color: inherit; }

html {
  scrollbar-gutter: stable;
  overflow-anchor: none;
  font-size: 16.5px;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
@media (max-width: 640px) { html { font-size: 16px; } }

body {
  font-family: var(--font-sans);
  overflow-x: hidden;
  background-color: #ffffff;
  color: #0f172a;
  font-weight: 400;
  line-height: 1.6;
}
html.dark body { background-color: #0c0c0e; color: #f8fafc; }

h1, h2, h3, h4, h5, h6, .font-logo, .font-heading { font-family: var(--font-logo) !important; }
h1, h2, h3, h4, h5, h6 { color: #000000; }

#hero h1, #hero h2, #hero h3, #hero h4, #hero h5, #hero h6,
#blog h1, #blog h2, #blog h3, #blog h4, #blog h5, #blog h6,
footer h1, footer h2, footer h3, footer h4, footer h5, footer h6,
.footer-brand-title,
.bg-\[\#0b0b0d\] h1, .bg-\[\#0b0b0d\] h2, .bg-\[\#0b0b0d\] h3,
.bg-\[\#070709\] h1, .bg-\[\#070709\] h2, .bg-\[\#070709\] h3,
#portfolio .portfolio-hero-headline, #portfolio .coverflow-hero-title,
.portfolio-hero-headline, .coverflow-hero-title,
.nv-dark-section h1, .nv-dark-section h2, .nv-dark-section h3, .nv-dark-section h4 {
  color: #ffffff !important;
}

html.dark main section:not(#hero):not(#blog) h1,
html.dark main section:not(#hero):not(#blog) h2,
html.dark main section:not(#hero):not(#blog) h3,
html.dark main section:not(#hero):not(#blog) h4 { color: #ffffff; }

.font-serif, .font-sans { font-family: var(--font-sans); font-style: normal; }
.font-mono { font-family: var(--font-sans); font-variant-numeric: tabular-nums; }
code, pre, kbd, samp, .font-code { font-family: var(--font-code) !important; }

/* Zero-curve discipline */
.rounded-3xl, .rounded-2xl, .rounded-xl, .rounded-lg, .rounded-md, .rounded-sm, .rounded, .rounded-xs, .rounded-2xs { border-radius: 0 !important; }
button:not(.status-dot):not([data-keep-round="true"]),
input:not([type="checkbox"]):not([type="radio"]),
select, textarea, article, dialog, .card, .badge, .pill, .block-card,
button.rounded-full, a.rounded-full,
div.rounded-full:not(.status-dot):not([data-keep-round="true"]),
span.rounded-full:not(.status-dot):not([data-keep-round="true"]) { border-radius: 0 !important; }
.status-dot, [data-keep-round="true"] { border-radius: 9999px !important; }

/* Accessibility suite */
html.a11y-text-lg { font-size: 112.5%; }
html.a11y-text-xl { font-size: 125%; }
html.a11y-dyslexia, html.a11y-dyslexia * { letter-spacing: .04em !important; word-spacing: .12em !important; line-height: 1.75 !important; }
html.a11y-high-contrast body { background-color: #000 !important; color: #fff !important; filter: contrast(1.25); }
html.a11y-grayscale { filter: grayscale(100%); }
html.a11y-highlight-links a, html.a11y-highlight-links button { outline: 2px solid #EF4444 !important; outline-offset: 2px !important; }
html.a11y-reduce-motion *, html.a11y-reduce-motion *::before, html.a11y-reduce-motion *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
html.a11y-big-cursor, html.a11y-big-cursor * { cursor: pointer; }
html.a11y-big-cursor *:focus-visible { outline: 3px solid #EF4444 !important; outline-offset: 4px !important; }

/* Scrollbar */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(160,160,160,.25); border-radius: 9999px; }
::-webkit-scrollbar-thumb:hover { background: rgba(160,160,160,.45); }
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }

/* Link underline */
.hover-underline-link { position: relative; display: inline-block; }
.hover-underline-link::after { content: ''; position: absolute; width: 0; height: 1.5px; bottom: -2px; left: 0; background-color: currentColor; transition: width .25s cubic-bezier(.16,1,.3,1); }
.hover-underline-link:hover::after { width: 100%; }

/* Marquees */
@keyframes marquee-rtl { 0% { transform: translate3d(0,0,0); } 100% { transform: translate3d(-50%,0,0); } }
.animate-marquee-rtl { display: flex; width: max-content; animation: marquee-rtl 48s linear infinite; will-change: transform; backface-visibility: hidden; user-select: none; }
.animate-marquee-rtl:hover { animation-play-state: paused; }
.animate-testimonials-marquee { display: flex; width: max-content; animation: marquee-rtl 52s linear infinite; will-change: transform; backface-visibility: hidden; }
.animate-testimonials-marquee:hover, .animate-testimonials-marquee[data-paused="true"], .testimonials-marquee-paused .animate-testimonials-marquee { animation-play-state: paused !important; }

@keyframes slideInRight { 0% { opacity: 0; transform: translate3d(28px,0,0); } 100% { opacity: 1; transform: none; } }
@keyframes slideInLeft { 0% { opacity: 0; transform: translate3d(-28px,0,0); } 100% { opacity: 1; transform: none; } }
.animate-slide-in-right { animation: slideInRight .42s cubic-bezier(.16,1,.3,1) both; }
.animate-slide-in-left { animation: slideInLeft .42s cubic-bezier(.16,1,.3,1) both; }
@keyframes floatSlow { 0%,100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-9px) rotate(1.2deg); } }
.animate-float-slow { animation: floatSlow 6s ease-in-out infinite; }

/* Scroll reveal (replaces framer-motion whileInView). Add class "nv-reveal"; optional data-delay="150" (ms). */
.nv-reveal { opacity: 0; transform: translate3d(0, 18px, 0); transition: opacity .6s cubic-bezier(.16,1,.3,1), transform .6s cubic-bezier(.16,1,.3,1); }
.nv-reveal.is-visible { opacity: 1; transform: none; }
.nv-reveal-left { opacity: 0; transform: translate3d(-24px, 0, 0); transition: opacity .6s cubic-bezier(.16,1,.3,1), transform .6s cubic-bezier(.16,1,.3,1); }
.nv-reveal-left.is-visible { opacity: 1; transform: none; }
.no-js .nv-reveal, .no-js .nv-reveal-left { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .nv-reveal, .nv-reveal-left { opacity: 1; transform: none; transition: none; } }

/* Generic hidden toggling used by vanilla JS components */
[hidden] { display: none !important; }

/* Rich text (post content / ACF wysiwyg) */
.nv-prose > * + * { margin-top: 1.1em; }
.nv-prose h2 { font-size: 1.6rem; font-weight: 700; margin-top: 2em; line-height: 1.25; }
.nv-prose h3 { font-size: 1.3rem; font-weight: 700; margin-top: 1.6em; line-height: 1.3; }
.nv-prose p { line-height: 1.8; }
.nv-prose a { color: #EF4444; text-decoration: underline; text-underline-offset: 3px; }
.nv-prose ul { list-style: disc; padding-left: 1.4em; }
.nv-prose ol { list-style: decimal; padding-left: 1.4em; }
.nv-prose blockquote { border-left: 3px solid #EF4444; padding-left: 1em; font-style: italic; }
.nv-prose img { max-width: 100%; height: auto; }
.nv-prose pre { background: #0b0b0d; color: #f4f4f5; padding: 1rem; overflow-x: auto; font-size: .85rem; }

/* WordPress core alignment / screen reader classes */
.screen-reader-text { border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important; }
.screen-reader-text:focus { background: #fff; clip: auto !important; clip-path: none; color: #000; display: block; height: auto; left: 5px; padding: 15px 23px 14px; top: 5px; width: auto; z-index: 100000; }
.alignleft { float: left; margin-right: 1.5em; }
.alignright { float: right; margin-left: 1.5em; }
.aligncenter { display: block; margin-left: auto; margin-right: auto; }
.wp-caption-text { font-size: .85rem; opacity: .7; }
body.admin-bar .nv-sticky-header { top: 32px; }
@media (max-width: 782px) { body.admin-bar .nv-sticky-header { top: 46px; } }
