/* ================================================
   Calvin Wright Giuseppe — Custom Styles
   Editorial / architectural / no-line philosophy
   ================================================ */

html { scroll-behavior: smooth; scroll-padding-top: 96px; }

body {
    background-color: #f9f9f9;
    color: #1a1c1c;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Material Symbols base */
.material-symbols-outlined {
    font-variation-settings: 'FILL' 0, 'wght' 300, 'GRAD' 0, 'opsz' 24;
    vertical-align: middle;
}

/* Watermark text behind content */
.watermark {
    pointer-events: none;
    user-select: none;
    opacity: 0.04;
    line-height: 0.8;
    color: #1a1c1c;
}

/* Outlined text effect */
.stroke-on-background {
    -webkit-text-stroke: 1px #1a1c1c;
    color: transparent;
}

/* ===== Scrollbar ===== */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: #f9f9f9; }
::-webkit-scrollbar-thumb { background: #c5a059; }
::-webkit-scrollbar-thumb:hover { background: #775a19; }

/* ===== Screen reader only ===== */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.focus\:not-sr-only:focus {
    position: static;
    width: auto;
    height: auto;
    padding: inherit;
    margin: inherit;
    overflow: visible;
    clip: auto;
    white-space: normal;
}

/* ===== Reveal on scroll ===== */
.reveal {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 1s ease, transform 1s ease;
}
.reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}
.reveal-stagger {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.9s ease var(--delay, 0ms), transform 0.9s ease var(--delay, 0ms);
}
.reveal-stagger.is-visible {
    opacity: 1;
    transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
    .reveal, .reveal-stagger { opacity: 1; transform: none; transition: none; }
    html { scroll-behavior: auto; }
    .marquee-track { animation: none !important; }
}

/* ===== Marquee for identity watermark ===== */
.marquee {
    overflow: hidden;
    white-space: nowrap;
}
.marquee-track {
    display: inline-flex;
    gap: 4rem;
    animation: marquee 40s linear infinite;
    will-change: transform;
}
.marquee-track:hover { animation-play-state: paused; }
@keyframes marquee {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

/* ===== Gallery slider ===== */
#gallery-slider { user-select: none; }
#gallery-slider:focus { outline: none; }
#gallery-track { cursor: grab; }
#gallery-track:active { cursor: grabbing; }
.gallery-slide { transition: opacity 0.4s ease; }

/* ===== Parallax base ===== */
[data-parallax] {
    will-change: transform;
}

/* ===== Hover lift for cards ===== */
.lift {
    transition: transform 0.4s ease, box-shadow 0.4s ease;
}
.lift:hover {
    transform: translateY(-4px);
    box-shadow: 0 30px 60px rgba(26, 28, 28, 0.08);
}

/* ===== Active nav link ===== */
.nav-link.is-active {
    color: #775a19;
    border-bottom: 2px solid #775a19;
    padding-bottom: 4px;
}

/* ===== Form focus ===== */
input:focus, textarea:focus { outline: none; box-shadow: none; }

/* ===== Section spacing on small screens ===== */
@media (max-width: 768px) {
    section { padding-left: 1.5rem; padding-right: 1.5rem; }
}

/* ===== Header shrink on scroll ===== */
#site-header.is-scrolled {
    box-shadow: 0 10px 30px rgba(26,28,28,0.08);
}
#site-header.is-scrolled > div {
    padding-top: 1rem;
    padding-bottom: 1rem;
    transition: padding 0.3s ease;
}

/* ===== Print ===== */
@media print {
    #site-header, footer, .watermark { display: none; }
    section { page-break-inside: avoid; }
}
