@keyframes kenburns { from { transform: scale(1) } to { transform: scale(1.1) } }
@keyframes grain-drift { 0%,100%{transform:translate(0,0)} 25%{transform:translate(-1.5px,1.5px)} 75%{transform:translate(1.5px,-1.5px)} }
@keyframes loader-shine { 0%{left:-70%} 100%{left:130%} }
@keyframes pulse-line { 0%,100%{opacity:0.15} 50%{opacity:0.55} }
*, *::before, *::after { box-sizing:border-box; margin:0; padding:0; }
body { background:#090909; color:#eeeeee; font-family:'Geist',system-ui,sans-serif; font-size:18px; line-height:1.65; -webkit-font-smoothing:antialiased; overflow-x:hidden; }
a { color:inherit; text-decoration:none; }
img { display:block; }
button { cursor:pointer; font-family:inherit; }
body::after { content:''; position:fixed; inset:0; pointer-events:none; z-index:9990; opacity:0.04; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E"); background-size:200px; animation:grain-drift 8s steps(4) infinite; }
body.dyslexia, body.dyslexia * { font-family:'Lexend','Comic Sans MS',sans-serif !important; }
.reveal { opacity:0; transform:translateY(30px); transition:opacity 0.8s cubic-bezier(0.22,1,0.36,1), transform 0.8s cubic-bezier(0.22,1,0.36,1); }
.reveal.in { opacity:1; transform:none; }
#site-header { transition:box-shadow 0.4s ease; }
#site-header::before { content:''; position:absolute; inset:0; z-index:-1; background:linear-gradient(to bottom, rgba(9,9,9,0.55), rgba(9,9,9,0)); transition:background 0.4s ease, backdrop-filter 0.4s ease, -webkit-backdrop-filter 0.4s ease; }
#site-header.scrolled::before { background:rgba(9,9,9,0.93); backdrop-filter:blur(24px); -webkit-backdrop-filter:blur(24px); }
#site-header.scrolled { box-shadow:0 1px 0 rgba(255,255,255,0.06); }
/* Luxe polish */
::selection { background:rgba(201,164,68,0.28); color:#fff; }
body { -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
.nav-link { position:relative; transition:color 0.35s ease; }
.nav-link::after { content:''; position:absolute; left:0; bottom:-6px; width:100%; height:1px; background:#c9a444; transform:scaleX(0); transform-origin:right; transition:transform 0.45s cubic-bezier(0.22,1,0.36,1); }
.nav-link:hover { color:#eeeeee !important; }
.nav-link:hover::after { transform:scaleX(1); transform-origin:left; }
.cta-btn { transition:transform 0.35s cubic-bezier(0.22,1,0.36,1), box-shadow 0.35s ease; }
.cta-btn:hover { transform:translateY(-2px); box-shadow:0 14px 36px -10px rgba(226,226,226,0.28); }
.cta-btn:active { transform:translateY(0); transition-duration:0.12s; }
.scard { transition:transform 0.55s cubic-bezier(0.22,1,0.36,1), border-color 0.55s ease, box-shadow 0.55s ease; }
.scard:hover { transform:translateY(-5px); border-color:rgba(201,164,68,0.22) !important; box-shadow:0 28px 56px -24px rgba(0,0,0,0.7); }
.scard div[style*="overflow"] img, .scard img { transition:transform 0.9s cubic-bezier(0.22,1,0.36,1); }
.scard:hover img { transform:scale(1.035); }
.gitem img { transition:transform 0.9s cubic-bezier(0.22,1,0.36,1), filter 0.9s ease; }
.gitem:hover img { transform:scale(1.045); filter:brightness(1.06); }
.footer-link { display:inline-block; transition:color 0.3s ease, transform 0.35s cubic-bezier(0.22,1,0.36,1); }
.footer-link:hover { color:#eeeeee !important; transform:translateX(3px); }
.svc-img-hover { transition:transform 0.6s cubic-bezier(0.22,1,0.36,1), box-shadow 0.6s ease; }
.svc-img-hover:hover { transform:translateY(-4px); box-shadow:0 32px 64px -28px rgba(0,0,0,0.75); }
header .icon-btn, #contact-toggle, #search-btn, #settings-btn, #hamburger-btn { transition:transform 0.3s cubic-bezier(0.22,1,0.36,1), background 0.3s ease, color 0.3s ease; }
#contact-toggle:hover, #search-btn:hover, #settings-btn:hover, #hamburger-btn:hover { transform:translateY(-1px); color:#fff; }
#tc-prev, #tc-next { transition:transform 0.3s cubic-bezier(0.22,1,0.36,1), background 0.25s ease, border-color 0.25s ease; }
#tc-prev:hover, #tc-next:hover { border-color:rgba(201,164,68,0.5) !important; }
#tc-prev:hover { transform:translateY(-50%) translateX(-2px); }
#tc-next:hover { transform:translateY(-50%) translateX(2px); }
#contact-dropdown { transition:opacity 0.2s ease, transform 0.2s ease; }
#contact-dropdown.open { opacity:1 !important; pointer-events:auto !important; transform:translateY(0) !important; }
#search-panel { transition:opacity 0.25s ease, transform 0.25s ease; }
#search-panel.open { opacity:1 !important; pointer-events:auto !important; transform:translateY(0) !important; }
#settings-panel { transition:transform 0.4s cubic-bezier(0.22,1,0.36,1); }
#settings-panel.open { transform:translateX(0) !important; }
#mobile-drawer { display:flex; flex-direction:column; position:fixed; top:0; right:0; bottom:0; z-index:950; width:min(340px,90vw); background:#111; border-left:1px solid rgba(255,255,255,0.07); overflow-y:auto; transform:translateX(110%); transition:transform 0.4s cubic-bezier(0.22,1,0.36,1); }
#mobile-drawer.open { transform:translateX(0); }
#drawer-overlay { transition:opacity 0.3s ease; }
#drawer-overlay.active { opacity:1 !important; pointer-events:auto !important; }
.nav-link { position:relative; }
.nav-link::after { content:''; position:absolute; bottom:-3px; left:0; width:0; height:1px; background:#e0e0e0; transition:width 0.3s cubic-bezier(0.22,1,0.36,1); }
.nav-link:hover::after, .nav-link.active-nav::after { width:100%; }
.footer-link { position:relative; }
.footer-link::after { content:''; position:absolute; bottom:-1px; left:0; width:0; height:1px; background:currentColor; transition:width 0.28s ease; }
.footer-link:hover::after { width:100%; }
.scard { transition:transform 0.35s cubic-bezier(0.22,1,0.36,1), box-shadow 0.35s cubic-bezier(0.22,1,0.36,1), border-color 0.35s cubic-bezier(0.22,1,0.36,1); }
.scard:hover { transform:translateY(-6px); box-shadow:0 28px 80px rgba(0,0,0,0.7) !important; border-color:rgba(255,255,255,0.14) !important; }
.scard .cimg { transition:transform 0.75s cubic-bezier(0.22,1,0.36,1); }
.scard:hover .cimg { transform:scale(1.06); }
.sarrow { display:inline-block; transition:transform 0.25s ease; }
.scard:hover .sarrow { transform:translateX(4px); }
.ibtn { transition:background 0.18s ease; }
.ibtn:hover { background:rgba(255,255,255,0.07) !important; }
.cta-btn { transition:background 0.2s ease, transform 0.15s ease; }
.cta-btn:hover { background:#ffffff !important; }
.cta-btn:active { transform:scale(0.98); }
.outline-btn { transition:background 0.2s ease, border-color 0.2s ease; }
.outline-btn:hover { background:rgba(255,255,255,0.06) !important; border-color:rgba(255,255,255,0.4) !important; }
#ttrack { transition:transform 0.6s cubic-bezier(0.22,1,0.36,1); }
.tdot { transition:background 0.2s ease, transform 0.2s ease; }
.tdot.active { background:#e0e0e0 !important; transform:scale(1.25) !important; }
#page-loader { transition:opacity 0.5s ease; }
#page-loader.gone { opacity:0; pointer-events:none; }
.tog { position:relative; width:44px; height:24px; flex-shrink:0; }
.tog input { opacity:0; position:absolute; width:0; height:0; }
.tog span { position:absolute; inset:0; background:rgba(255,255,255,0.1); border-radius:12px; transition:background 0.2s ease; cursor:pointer; }
.tog span::before { content:''; position:absolute; width:18px; height:18px; background:#888; border-radius:50%; top:3px; left:3px; transition:transform 0.2s ease, background 0.2s ease; }
.tog input:checked + span { background:rgba(220,220,220,0.22); }
.tog input:checked + span::before { transform:translateX(20px); background:#e0e0e0; }
.fi { background:rgba(255,255,255,0.05); border:1px solid rgba(255,255,255,0.1); border-radius:10px; padding:14px 18px; color:#eeeeee; font-family:inherit; font-size:16px; width:100%; transition:border-color 0.2s ease, background 0.2s ease; outline:none; }
.fi:focus { border-color:rgba(220,220,220,0.4); background:rgba(255,255,255,0.07); }
.fi::placeholder { color:rgba(238,238,238,0.28); }
@media (max-width:768px) { #desktop-nav, #desktop-right { display:none !important; } #hamburger-btn { display:flex !important; } }
@media (min-width:769px) { #hamburger-btn { display:none !important; } }
@media (max-width:900px) { #about-grid { grid-template-columns:1fr !important; } #about-badge { display:none !important; } }
@media (max-width:680px) { #footer-grid { grid-template-columns:1fr !important; gap:36px !important; } #hero-cta-row { flex-direction:column !important; align-items:stretch !important; } #hero-cta-row a { text-align:center; justify-content:center; } }
@media (max-width:440px) { #wordmark { display:none; } }
@media (prefers-reduced-motion:reduce) { *, *::before, *::after { animation:none !important; transition:none !important; } .reveal { opacity:1 !important; transform:none !important; } .tc-card { transition:opacity 0.2s linear !important; } }
@media (max-width:640px) { .tc-side-vis { opacity:0.2 !important; } }
.tc-arrow:hover { background:rgba(255,255,255,0.15) !important; }
@media (max-width:680px) {
  main section { padding-left:22px !important; padding-right:22px !important; }
  footer { padding-left:24px !important; padding-right:24px !important; }
}
@media (max-width:768px) {
  .nav-link, .footer-link { min-height:44px; display:inline-flex; align-items:center; }
@keyframes kenburns { from{transform:scale(1)} to{transform:scale(1.1)} }
.outline-btn:hover { background:rgba(255,255,255,0.06) !important; }
.fi { background:rgba(255,255,255,0.05); border:1px solid rgba(255,255,255,0.1); border-radius:10px; padding:14px 18px; color:#eeeeee; font-family:inherit; font-size:16px; width:100%; transition:border-color 0.2s ease; outline:none; }
.fi:focus { border-color:rgba(220,220,220,0.4); }
.value-card { transition:transform 0.3s ease, border-color 0.3s ease; }
.value-card:hover { transform:translateY(-4px); border-color:rgba(255,255,255,0.14) !important; }
@media (max-width:900px) { #about-split { grid-template-columns:1fr !important; } }
@media (prefers-reduced-motion:reduce) { *, *::before, *::after { animation:none !important; transition:none !important; } .reveal { opacity:1 !important; transform:none !important; } }
a { color:inherit; text-decoration:none; } img { display:block; } button { cursor:pointer; font-family:inherit; }
@media (max-width:900px) { .svc-grid { grid-template-columns:1fr !important; } .svc-grid-rev { grid-template-columns:1fr !important; } .svc-img-col { order:-1 !important; } }
@media (max-width:680px) { #footer-grid { grid-template-columns:1fr !important; gap:36px !important; } }
.outline-btn { transition:background 0.2s ease; }
.contact-method { transition:background 0.2s ease, border-color 0.2s ease; }
.contact-method:hover { background:rgba(255,255,255,0.04) !important; border-color:rgba(255,255,255,0.14) !important; }
@media (max-width:960px) { #contact-grid { grid-template-columns:1fr !important; } }
@media (max-width:680px) { #footer-grid { grid-template-columns:1fr !important; gap:36px !important; } #form-row { grid-template-columns:1fr !important; } }
@keyframes lb-in { from{opacity:0;transform:scale(0.94)} to{opacity:1;transform:scale(1)} }
/* Gallery grid items */
.gitem { overflow:hidden; border-radius:14px; cursor:zoom-in; transition:transform 0.35s cubic-bezier(0.22,1,0.36,1), box-shadow 0.35s ease, opacity 0.3s ease; }
.gitem:hover { transform:scale(1.02); box-shadow:0 16px 52px rgba(0,0,0,0.65); }
.gitem img { width:100%; height:100%; object-fit:cover; transition:transform 0.65s cubic-bezier(0.22,1,0.36,1); display:block; }
.gitem:hover img { transform:scale(1.07); }
/* Lightbox */
#lb-overlay { transition:opacity 0.3s ease; }
#lb-overlay.open { opacity:1 !important; pointer-events:auto !important; }
#lb-img { animation:lb-in 0.3s cubic-bezier(0.22,1,0.36,1); }
@media (max-width:768px) { #desktop-nav, #desktop-right { display:none !important; } #hamburger-btn { display:flex !important; } #gallery-grid { grid-template-columns:repeat(2,1fr) !important; } }
@media (max-width:520px) { #gallery-grid { grid-template-columns:1fr !important; } }
.nav-active::after { transform:scaleX(1) !important; transform-origin:left; }
