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

:root{
  --bg:#fff;
  --fg:#111;
  --fg-muted:#888;
  --fg-light:#bbb;
  --border:rgba(0,0,0,.08);
  --radius:100px;
  --serif:'Instrument Serif',Georgia,serif;
  --sans:'DM Sans',system-ui,sans-serif;
}

html{font-size:16px;scroll-behavior:smooth;-webkit-font-smoothing:antialiased}

body{
  background:#111;color:var(--fg);
  font-family:var(--sans);font-weight:300;line-height:1.6;overflow-x:hidden;
}

::selection{background:#111;color:#fff}

/* Navigation */
.main-nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  padding:1.25rem 1.5rem;
  display:flex;align-items:center;justify-content:space-between;
  background:#fff;transition:background .8s ease;
  border:none;outline:none;box-shadow:none;
}
.main-nav.dark{background:#111}
.main-nav.dark .nav-logo{color:#fff}
.main-nav.dark .nav-contact-link{color:rgba(255,255,255,.5)}
.main-nav.dark .nav-contact-link:hover{color:#fff}

.nav-logo{
  font-family:var(--sans);font-weight:500;font-size:.85rem;
  letter-spacing:.08em;text-transform:lowercase;transition:color .8s;
}
.nav-contact-link{
  font-size:.75rem;font-weight:400;color:var(--fg-muted);
  text-decoration:none;letter-spacing:.03em;transition:color .3s;
  cursor:pointer;background:none;border:none;font-family:var(--sans);
}
.nav-contact-link:hover{color:var(--fg)}

/* HERO Section */
.hero-section{
  min-height:100vh;min-height:100dvh;
  display:flex;flex-direction:column;
  justify-content:flex-end;align-items:flex-start;
  padding:0 1.5rem 3rem;
  position:relative;overflow:hidden;
  background:var(--bg);
  margin-top:-1px;
  border-top:1px solid #fff;
}

.hero-image-container{
  position:absolute;top:50%;left:50%;
  transform:translate(-50%,-38%);
  width:min(88vw,520px);
  pointer-events:none;z-index:1;
  opacity:0;animation:heroFadeIn 2.5s ease-out .3s forwards;
}

.hero-image{
  width:100%;height:auto;display:block;
  filter:grayscale(1) contrast(1.06) brightness(1.02);
  mask-image: radial-gradient(ellipse 100% 80% at 50% 42%, black 40%, transparent 70%);
  -webkit-mask-image: radial-gradient(ellipse 100% 80% at 50% 42%, black 40%, transparent 70%);
}

@keyframes heroFadeIn{
  from{opacity:0;transform:translate(-50%,-38%) scale(1.03)}
  to{opacity:1;transform:translate(-50%,-38%) scale(1)}
}

.hero-content{
  position:relative;z-index:3;
  opacity:0;animation:slideUp .8s ease-out .8s forwards;
}

@keyframes slideUp{
  from{opacity:0;transform:translateY(20px)}
  to{opacity:1;transform:translateY(0)}
}

.hero-label-text{
  font-family:var(--sans);font-weight:500;font-size:.75rem;
  letter-spacing:.1em;text-transform:lowercase;margin-bottom:.75rem;
}

.hero-main-title{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(1.75rem,5vw,2.5rem);
  line-height:1.2;min-height:2.4em;margin-bottom:.6rem;
}

.typewriter-cursor{
  display:inline-block;width:2px;height:1.1em;
  background:var(--fg);margin-left:2px;vertical-align:text-bottom;
  animation:blink .7s step-end infinite;
}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}

.hero-tag-list{display:flex;gap:.5rem;flex-wrap:wrap}

.tag-item{
  font-size:.7rem;font-weight:400;letter-spacing:.04em;
  padding:.4rem 1rem;border:1px solid var(--border);
  border-radius:var(--radius);color:var(--fg-muted);
  transition:all .3s;cursor:default;
}
.tag-item:hover{border-color:var(--fg);color:var(--fg)}

.scroll-indicator{
  position:absolute;bottom:1.25rem;left:1.5rem;
  font-size:.7rem;color:var(--fg-light);z-index:3;
  opacity:0;animation:slideUp .6s ease-out 1.5s forwards;
}
.scroll-indicator span{display:inline-block;animation:bounce 2s ease-in-out infinite}
@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}

/* CONTACT Section */
.contact-section{
  min-height:100vh;min-height:100dvh;
  background:transparent;color:#fff;
  padding:6rem 1.5rem;
  display:flex;flex-direction:column;justify-content:center;
  position:relative;overflow:hidden;
}

.contact-bg-canvas{
  position:absolute;top:0;left:0;
  width:100%;height:100%;z-index:0;pointer-events:none;
}

.contact-container{position:relative;z-index:1}

.contact-small-label{
  font-size:.7rem;font-weight:500;letter-spacing:.12em;
  text-transform:uppercase;color:rgba(255,255,255,.25);
  margin-bottom:2rem;
  opacity:0;transform:translateY(20px);transition:all .8s ease-out;
}

.contact-main-heading{
  font-family:var(--serif);
  font-size:clamp(1.5rem,4vw,2.25rem);
  font-weight:400;line-height:1.25;margin-bottom:3rem;
  opacity:0;transform:translateY(20px);transition:all .8s ease-out .1s;
}

.contact-form-wrapper{
  display:flex;flex-direction:column;gap:2rem;max-width:480px;
  opacity:0;transform:translateY(20px);transition:all .8s ease-out .2s;
}

.contact-section.visible .contact-small-label,
.contact-section.visible .contact-main-heading,
.contact-section.visible .contact-form-wrapper{opacity:1;transform:translateY(0)}

.form-input-group{position:relative}

.form-input-group input{
  width:100%;background:transparent;border:none;
  border-bottom:1px solid rgba(255,255,255,.22);
  color:#fff;font-family:var(--sans);font-size:.9rem;font-weight:300;
  padding:.85rem 0;outline:none;transition:border-color .3s;
}
.form-input-group input::placeholder{color:rgba(255,255,255,.35);font-weight:300}
.form-input-group input:focus{border-bottom-color:rgba(255,255,255,.45)}

.form-input-group label{
  position:absolute;top:-.6rem;left:0;
  font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(255,255,255,.25);
  opacity:0;transform:translateY(8px);transition:all .3s;pointer-events:none;
}
.form-input-group input:focus ~ label,
.form-input-group input:not(:placeholder-shown) ~ label{opacity:1;transform:translateY(0)}

.submit-action-btn{
  align-self:flex-start;font-family:var(--sans);
  font-size:.75rem;font-weight:400;letter-spacing:.08em;
  text-transform:lowercase;color:#fff;background:transparent;
  border:1px solid rgba(255,255,255,.12);
  padding:.75rem 2.25rem;border-radius:var(--radius);
  cursor:pointer;transition:all .4s;margin-top:.5rem;
}
.submit-action-btn:hover{background:#fff;color:#111;border-color:#fff}

/* Success State */
.form-success{
  display:flex;flex-direction:row;align-items:center;gap:1.75rem;
  opacity:0;transform:translateY(14px);
  animation:successIn .7s cubic-bezier(.22,1,.36,1) forwards;
}
@keyframes successIn{
  to{opacity:1;transform:translateY(0)}
}
.success-check{
  width:56px;height:56px;flex-shrink:0;
}
.success-check circle{
  fill:none;stroke:rgba(255,255,255,.1);stroke-width:1;
}
.success-check path{
  fill:none;stroke:#fff;stroke-width:1.2;
  stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:38;stroke-dashoffset:38;
  animation:drawCheck .6s cubic-bezier(.22,1,.36,1) .35s forwards;
}
@keyframes drawCheck{to{stroke-dashoffset:0}}
.success-text{display:flex;flex-direction:column;gap:.5rem}
.success-title{
  font-family:var(--serif);
  font-size:clamp(1.15rem,3vw,1.5rem);
  font-weight:400;color:#fff;line-height:1.35;
}
.success-note{
  font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;
  color:rgba(255,255,255,.2);
}
/* Footer */
.site-footer{
  background:transparent;border-top:1px solid rgba(255,255,255,.04);
  padding:1.5rem;text-align:center;
  color:rgba(255,255,255,.12);font-size:.6rem;letter-spacing:.06em;
  display:flex;align-items:center;justify-content:center;gap:.6rem;flex-wrap:wrap;
}
.footer-sep{color:rgba(255,255,255,.08)}
.footer-link{
  background:none;border:none;cursor:pointer;
  font-family:var(--sans);font-size:.6rem;letter-spacing:.06em;
  color:rgba(255,255,255,.12);transition:color .3s;padding:0;
}
.footer-link:hover{color:rgba(255,255,255,.4)}

/* Legal Modals */
.legal-modal{
  display:none;position:fixed;inset:0;z-index:200;
  background:rgba(0,0,0,.7);backdrop-filter:blur(6px);
  align-items:center;justify-content:center;padding:1.5rem;
}
.legal-modal.open{display:flex}
.legal-modal-box{
  background:#111;border:1px solid rgba(255,255,255,.07);
  border-radius:4px;max-width:540px;width:100%;
  max-height:80vh;overflow-y:auto;padding:2.5rem;
  position:relative;
  animation:modalIn .35s cubic-bezier(.22,1,.36,1);
}
@keyframes modalIn{
  from{opacity:0;transform:translateY(16px)}
  to{opacity:1;transform:translateY(0)}
}
.legal-modal-close{
  position:absolute;top:1.25rem;right:1.25rem;
  background:none;border:none;cursor:pointer;
  color:rgba(255,255,255,.25);font-size:.8rem;
  transition:color .3s;padding:0;
}
.legal-modal-close:hover{color:#fff}
.legal-label{
  font-size:.65rem;font-weight:500;letter-spacing:.12em;
  text-transform:uppercase;color:rgba(255,255,255,.25);margin-bottom:1rem;
}
.legal-heading{
  font-family:var(--serif);font-size:1.4rem;font-weight:400;
  color:#fff;margin-bottom:2rem;line-height:1.3;
}
.legal-body{display:flex;flex-direction:column;gap:1.25rem}
.legal-body p{
  font-family:var(--sans);font-size:.8rem;font-weight:300;
  line-height:1.8;color:rgba(255,255,255,.45);margin:0;
}
.legal-body strong{color:rgba(255,255,255,.7);font-weight:500}

/* Responsive */
@media(min-width:768px){
  .main-nav{padding:1.5rem 3rem}
  .hero-section{padding:0 3rem 4rem}
  .hero-image-container{width:min(50vw,540px)}
  .contact-section{padding:8rem 3rem}
  .scroll-indicator{left:3rem}
  .site-footer{padding:1.5rem 3rem}
}
@media(min-width:1200px){
  .main-nav{padding:1.5rem 5rem}
  .hero-section{padding:0 5rem 5rem}
  .hero-image-container{width:min(38vw,560px)}
  .contact-section{padding:10rem 5rem}
  .scroll-indicator{left:5rem}
  .site-footer{padding:1.5rem 5rem}
}
