:root{
    color-scheme: light only;
    --paper:#E7E2D6;
    --paper-alt:#DCD6C6;
    --ink:#1B1A17;
    --ink-soft:#514E44;
    --safelight:#8C3B26;
    --safelight-dark:#6B2C1B;
    --silver-line:#C7C1AE;
    --highlight:#D9A05B;
    --dark-bg:#17140F;
    --dark-paper:#221D16;
    --dark-line:#3A3327;
    --font-display:'Fraunces', serif;
    --font-body:'Archivo', sans-serif;
    --font-mono:'IBM Plex Mono', monospace;
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;color-scheme:light only;}
  body{
    background:var(--paper);
    color:var(--ink);
    font-family:var(--font-body);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  img{display:block;max-width:100%;}
  a{color:inherit;text-decoration:none;}
  ul{list-style:none;}
  button{
    font-family:inherit;cursor:pointer;background:none;border:none;color:inherit;
    appearance:none;-webkit-appearance:none;-moz-appearance:none;
  }
  input,select,textarea{
    font-family:inherit;color:inherit;
    appearance:none;-webkit-appearance:none;-moz-appearance:none;
  }
  .wrap{max-width:1180px;margin:0 auto;padding:0 32px;}
  .eyebrow{
    font-family:var(--font-mono);
    font-size:12.5px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--safelight);
  }
  .dark .eyebrow{color:var(--highlight);}
  h1,h2,h3{font-family:var(--font-display);font-weight:500;color:var(--ink);}
  .dark h1,.dark h2,.dark h3{color:var(--paper);}

  /* grain overlay */
  .grain{
    position:fixed;inset:0;pointer-events:none;z-index:200;
    opacity:0.05;mix-blend-mode:multiply;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  }

  /* nav */
  nav{
    position:fixed;top:0;left:0;right:0;z-index:100;
    background:rgba(231,226,214,0.92);
    border-bottom:1px solid transparent;
    transition:border-color .3s ease, box-shadow .3s ease;
  }
  nav.scrolled{border-bottom-color:var(--silver-line);box-shadow:0 6px 18px rgba(27,26,23,0.06);}
  .nav-inner{display:flex;align-items:center;justify-content:space-between;padding:18px 32px;max-width:1180px;margin:0 auto;}
  .brand{display:flex;align-items:center;gap:9px;font-family:var(--font-mono);font-weight:500;font-size:14.5px;letter-spacing:0.045em;white-space:nowrap;color:var(--ink);text-decoration:none;}
  .brand svg{flex-shrink:0;}
  .nav-links{display:flex;gap:26px;font-size:14px;}
  .nav-links a{position:relative;padding:4px 0;color:var(--ink);text-decoration:none;}
  .nav-links a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--safelight);transition:width .25s ease;}
  .nav-links a:hover::after{width:100%;}
  .nav-cta{
    font-family:var(--font-mono);font-size:13px;letter-spacing:0.03em;
    border:1px solid var(--ink);border-radius:3px;padding:9px 16px;
    background:transparent;color:var(--ink);text-decoration:none;
    transition:background .2s ease, color .2s ease;
  }
  .nav-cta:hover{background:var(--ink);color:var(--paper);}
  .burger{display:none;flex-direction:column;gap:5px;padding:6px;}
  .burger span{width:22px;height:2px;background:var(--ink);display:block;transition:transform .25s ease, opacity .25s ease;}

  /* hero */
  .hero{position:relative;height:100vh;min-height:560px;overflow:hidden;}
  .hero-media{position:absolute;inset:0;}
  .hero-media img{width:100%;height:100%;object-fit:cover;
    filter:contrast(0.25) brightness(1.7) grayscale(1) blur(3px);opacity:0.5;
    transition:filter 1.6s ease-out, opacity 1.6s ease-out;
  }
  .hero-media.is-developed img{filter:grayscale(0.85) sepia(0.12) contrast(1.08) brightness(0.94);opacity:1;}
  .hero-scrim{position:absolute;inset:0;background:linear-gradient(0deg, rgba(10,9,7,0.82) 0%, rgba(10,9,7,0.15) 46%, rgba(10,9,7,0.05) 65%);}
  .light-leak{position:absolute;top:-20%;right:-10%;width:60%;height:140%;
    background:linear-gradient(115deg, transparent 40%, rgba(217,160,91,0.35) 50%, rgba(140,59,38,0.25) 58%, transparent 68%);
    mix-blend-mode:screen;pointer-events:none;
  }
  .hero-content{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding:0 32px 64px;max-width:1180px;margin:0 auto;}
  .hero-content .eyebrow{color:var(--highlight);margin-bottom:18px;}
  .hero h1{
    font-size:clamp(34px, 5.4vw, 66px);
    color:var(--paper);
    max-width:14ch;
    font-style:italic;
    font-weight:400;
    line-height:1.08;
    margin-bottom:22px;
  }
  .hero p{color:rgba(231,226,214,0.82);max-width:46ch;font-size:16.5px;margin-bottom:34px;}
  .hero-actions{display:flex;gap:16px;flex-wrap:wrap;align-items:center;}
  .btn{
    font-family:var(--font-mono);font-size:13.5px;letter-spacing:0.03em;
    padding:13px 22px;border-radius:3px;border:1px solid var(--highlight);
    text-decoration:none;transition:background .2s ease, color .2s ease, transform .15s ease;
    display:inline-block;
  }
  .btn-solid{background:var(--highlight);color:var(--dark-bg);}
  .btn-solid:hover{transform:translateY(-1px);}
  .btn-line{background:transparent;color:var(--paper);}
  .btn-line:hover{background:rgba(231,226,214,0.1);}
  .frame-data{
    position:absolute;bottom:28px;right:32px;z-index:2;
    font-family:var(--font-mono);font-size:11.5px;color:rgba(231,226,214,0.7);
    letter-spacing:0.04em;text-align:right;
  }

  section{padding:104px 0;}
  .section-head{max-width:640px;margin-bottom:52px;}
  .section-head h2{font-size:clamp(26px,3.4vw,38px);margin-top:10px;}
  .section-head p{color:var(--ink-soft);margin-top:14px;font-size:15.5px;max-width:52ch;}

  /* portfolio */
  .filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:40px;}
  .chip{
    font-family:var(--font-mono);font-size:12.5px;letter-spacing:0.03em;
    padding:8px 16px;border:1px solid var(--silver-line);border-radius:20px;
    background:var(--paper);color:var(--ink-soft);transition:all .2s ease;
  }
  .chip:hover{border-color:var(--ink);}
  .chip.active{background:var(--ink);border-color:var(--ink);color:var(--paper);}
  .gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;}
  .photo{position:relative;overflow:hidden;aspect-ratio:4/5;background:var(--paper-alt);cursor:pointer;}
  .photo img{
    width:100%;height:100%;object-fit:cover;
    filter:contrast(0.2) brightness(1.7) grayscale(1) blur(2px);opacity:0.45;
    transition:filter 1.3s ease-out, opacity 1.3s ease-out, transform .5s ease;
  }
  .photo.is-developed img{filter:grayscale(0.85) sepia(0.12) contrast(1.08) brightness(0.95);opacity:1;}
  .photo:hover img{transform:scale(1.04);}
  .photo-tag{
    position:absolute;top:10px;left:10px;font-family:var(--font-mono);font-size:11px;
    color:var(--paper);background:rgba(23,20,15,0.55);padding:3px 8px;border-radius:2px;
    letter-spacing:0.03em;
  }
  .photo-cap{
    position:absolute;left:0;right:0;bottom:0;padding:14px 14px 12px;
    background:linear-gradient(0deg, rgba(23,20,15,0.85), transparent);
    color:var(--paper);font-size:13px;opacity:0;transition:opacity .25s ease;
  }
  .photo:hover .photo-cap{opacity:1;}
  .photo-cap span{display:block;font-family:var(--font-mono);font-size:10.5px;color:var(--highlight);margin-top:3px;}
  .af-corner{
    position:absolute;width:18px;height:18px;border-color:var(--paper);
    opacity:0;transform:scale(1.35);z-index:3;pointer-events:none;
    transition:opacity .22s ease, transform .22s ease, border-color .5s ease .18s;
  }
  .af-corner.tl{top:10px;left:10px;border-top:1.5px solid;border-left:1.5px solid;}
  .af-corner.tr{top:10px;right:10px;border-top:1.5px solid;border-right:1.5px solid;}
  .af-corner.bl{bottom:10px;left:10px;border-bottom:1.5px solid;border-left:1.5px solid;}
  .af-corner.br{bottom:10px;right:10px;border-bottom:1.5px solid;border-right:1.5px solid;}
  .photo:hover .af-corner{opacity:0.9;transform:scale(1);border-color:var(--highlight);}

  /* about */
  .about-grid{display:grid;grid-template-columns:0.85fr 1.15fr;gap:64px;align-items:start;}
  .about-photo{aspect-ratio:3/4;overflow:hidden;background:var(--paper-alt);}
  .about-photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(0.85) sepia(0.12) contrast(1.08) brightness(0.95);transition:filter .7s ease;}
  .about-bio p{color:var(--ink-soft);margin-bottom:18px;font-size:15.5px;max-width:56ch;}
  .about-bio p:first-of-type{font-family:var(--font-display);font-size:19px;color:var(--ink);font-style:italic;}
  .specs{
    margin-top:34px;border-top:1px solid var(--silver-line);padding-top:22px;
  }
  .specs-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--silver-line);font-size:14px;}
  .specs-row span:first-child{font-family:var(--font-mono);font-size:11.5px;letter-spacing:0.04em;color:var(--ink-soft);text-transform:uppercase;}
  .specs-row span:last-child{text-align:right;max-width:60%;}

  /* services */
  .services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
  .service-card{
    border:1px solid var(--silver-line);border-radius:6px;padding:30px 26px;
    display:flex;flex-direction:column;gap:16px;background:var(--paper-alt);
    transition:border-color .2s ease, transform .2s ease;
  }
  .service-card:hover{border-color:var(--safelight);transform:translateY(-3px);}
  .service-iso{font-family:var(--font-mono);font-size:11px;color:var(--safelight);letter-spacing:0.06em;}
  .service-card h3{font-size:22px;}
  .service-price{font-family:var(--font-mono);font-size:15px;color:var(--ink-soft);}
  .service-card ul{margin-top:4px;display:flex;flex-direction:column;gap:8px;}
  .service-card li{font-size:14px;color:var(--ink-soft);padding-left:16px;position:relative;}
  .service-card li::before{content:"—";position:absolute;left:0;color:var(--safelight);}
  .service-card .btn{margin-top:auto;align-self:flex-start;border-color:var(--ink);color:var(--ink);}
  .service-card .btn:hover{background:var(--ink);color:var(--paper);}

  /* process */
  .process-strip{display:flex;gap:2px;margin:0 0 60px;background:var(--ink);padding:2px;border-radius:4px;overflow:hidden;}
  .process-strip span{flex:1;height:14px;background:repeating-linear-gradient(90deg, var(--paper) 0 6px, transparent 6px 10px);opacity:0.35;}
  .process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;}
  .process-step{position:relative;padding-top:20px;}
  .process-step .num{font-family:var(--font-mono);font-size:13px;color:var(--safelight);letter-spacing:0.04em;}
  .process-step h3{font-size:18px;margin:10px 0 8px;}
  .process-step p{font-size:14px;color:var(--ink-soft);}

  /* testimonials */
  .dark{background:var(--dark-bg);color:var(--paper);}

  /* servicio de galería colaborativa para invitados */
  .event-grid{display:grid;grid-template-columns:1.1fr 0.9fr;gap:64px;align-items:center;}
  .event-copy p{color:rgba(231,226,214,0.75);font-size:15.5px;margin:16px 0 24px;max-width:52ch;}
  .event-steps{display:flex;flex-direction:column;gap:14px;margin-bottom:28px;}
  .event-steps li{display:flex;gap:14px;font-size:14.5px;color:rgba(231,226,214,0.85);align-items:baseline;}
  .event-steps .num{font-family:var(--font-mono);font-size:12px;color:var(--highlight);flex-shrink:0;}
  .event-price{display:flex;align-items:baseline;gap:10px;margin-bottom:24px;font-size:14px;color:rgba(231,226,214,0.7);}
  .event-price-tag{font-family:var(--font-display);font-style:italic;font-size:26px;color:var(--paper);}
  .event-visual{display:flex;justify-content:center;}
  .phone-mock{
    width:230px;background:#0e0c09;border:6px solid #201c16;border-radius:34px;
    box-shadow:0 30px 70px rgba(0,0,0,0.55);overflow:hidden;position:relative;
  }
  .phone-notch{position:absolute;top:0;left:50%;transform:translateX(-50%);width:70px;height:18px;background:#201c16;border-radius:0 0 12px 12px;z-index:2;}
  .phone-screen{padding:34px 14px 18px;}
  .phone-title{font-family:var(--font-mono);font-size:11px;color:var(--paper);text-align:center;margin-bottom:14px;letter-spacing:0.03em;}
  .phone-upload{
    border:1.5px dashed var(--dark-line);border-radius:8px;padding:16px 10px;
    display:flex;flex-direction:column;align-items:center;gap:8px;
    color:var(--highlight);font-family:var(--font-mono);font-size:10.5px;text-align:center;margin-bottom:14px;
  }
  .phone-thumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;}
  .phone-thumbs img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:4px;filter:grayscale(0.85) sepia(0.1) contrast(1.05) brightness(0.95);}
  .testimonials-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
  .review-card{
    background:var(--dark-paper);border:1px solid var(--dark-line);border-radius:6px;
    padding:24px 24px;display:flex;flex-direction:column;gap:14px;
    opacity:1;transform:translateY(0);
    transition:opacity .4s ease, transform .4s ease;
  }
  .review-card.is-swapping{opacity:0;transform:translateY(6px);}
  .review-top{display:flex;align-items:center;gap:10px;}
  .review-avatar{
    width:34px;height:34px;border-radius:50%;flex-shrink:0;
    background:var(--dark-line);color:var(--highlight);
    display:flex;align-items:center;justify-content:center;
    font-family:var(--font-mono);font-size:12px;letter-spacing:0.02em;
  }
  .review-who{flex:1;min-width:0;}
  .review-name{font-size:14px;color:var(--paper);}
  .review-stars{color:var(--highlight);font-size:12px;letter-spacing:2px;margin-top:2px;}
  .review-text{font-family:var(--font-display);font-style:italic;font-size:16.5px;color:var(--paper);line-height:1.5;}
  .review-meta{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;color:rgba(231,226,214,0.55);letter-spacing:0.02em;}
  .review-verified{display:inline-flex;align-items:center;gap:4px;color:var(--highlight);}
  .rating-summary{display:flex;align-items:baseline;gap:8px;margin-top:18px;font-family:var(--font-mono);}
  .rating-stars{color:var(--highlight);font-size:15px;letter-spacing:2px;}
  .rating-score{color:var(--paper);font-size:16px;font-weight:500;}
  .rating-count{color:rgba(231,226,214,0.6);font-size:12.5px;}
  .review-verified svg{flex-shrink:0;}

  /* contact */
  .contact{background:var(--dark-bg);color:var(--paper);position:relative;}
  .contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;}
  .contact-info p{color:rgba(231,226,214,0.72);font-size:15.5px;margin:16px 0 30px;max-width:44ch;}
  .contact-links{display:flex;flex-direction:column;gap:14px;}
  .contact-links a{display:flex;align-items:center;gap:10px;font-size:14.5px;color:rgba(231,226,214,0.85);text-decoration:none;transition:color .2s ease;}
  .contact-links a:hover{color:var(--highlight);}
  .contact-links svg{flex-shrink:0;}
  .field{margin-bottom:18px;}
  .field label{display:block;font-family:var(--font-mono);font-size:11.5px;letter-spacing:0.04em;text-transform:uppercase;color:rgba(231,226,214,0.6);margin-bottom:8px;}
  .field input,.field select,.field textarea{
    width:100%;background:transparent;border:none;border-bottom:1px solid var(--dark-line);
    color:var(--paper);font-family:var(--font-body);font-size:15px;padding:10px 2px;
    transition:border-color .2s ease;
  }
  .field select option{background:var(--dark-bg);}
  .field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--highlight);}
  .field textarea{resize:vertical;min-height:80px;}
  .confirm-box{padding:40px 0;}
  .confirm-box .eyebrow{color:var(--highlight);}
  .confirm-box h3{font-size:24px;margin:14px 0 10px;color:var(--paper);}
  .confirm-box p{color:rgba(231,226,214,0.75);font-size:15px;}

  footer{background:var(--dark-bg);border-top:1px solid var(--dark-line);padding:26px 0;}
  .footer-inner{display:flex;justify-content:space-between;align-items:center;color:rgba(231,226,214,0.5);font-size:12.5px;font-family:var(--font-mono);flex-wrap:wrap;gap:10px;}

  /* intro: diafragma que abre al cargar la página */
  .shutter-intro{position:fixed;inset:0;z-index:600;pointer-events:none;}
  .shutter-intro.is-done{display:none;}
  #irisHole{
    transform-box:fill-box;transform-origin:50% 50%;transform:scale(0);
    transition:transform 1.05s cubic-bezier(.64,.01,.28,1);
  }
  .shutter-intro.is-open #irisHole{transform:scale(18);}

  /* destello + parpadeo al "disparar" (abrir/cambiar foto en el lightbox) */
  .shutter-fx{position:fixed;inset:0;z-index:550;pointer-events:none;opacity:0;background:#000;}
  .shutter-fx.fire{animation:shutterFire .5s ease-out;}
  @keyframes shutterFire{
    0%{opacity:0;background:#0c0b09;}
    10%{opacity:1;background:#0c0b09;}
    28%{opacity:0.92;background:#f7f3e8;}
    62%{opacity:0;background:#f7f3e8;}
    100%{opacity:0;}
  }

  /* botón de sonido */
  .sound-toggle{
    position:fixed;left:20px;bottom:20px;z-index:120;
    width:38px;height:38px;border-radius:50%;
    background:var(--paper);border:1px solid var(--silver-line);
    display:flex;align-items:center;justify-content:center;color:var(--ink-soft);
    transition:border-color .2s ease, color .2s ease;
  }
  .sound-toggle:hover{border-color:var(--safelight);color:var(--safelight);}
  .sound-toggle.is-muted{color:var(--silver-line);}
  .sound-toggle.is-muted::after{
    content:"";position:absolute;top:50%;left:50%;width:26px;height:1.5px;background:currentColor;
    transform:translate(-50%,-50%) rotate(-45deg);
  }
  .music-toggle{bottom:66px;}
  .music-toggle.is-on{color:var(--safelight);border-color:var(--safelight);}

  .music-label{
    position:fixed;left:66px;bottom:66px;z-index:120;
    font-family:var(--font-mono);font-size:11.5px;color:var(--ink-soft);
    background:var(--paper);border:1px solid var(--silver-line);border-radius:20px;
    padding:6px 14px;opacity:0;transform:translateX(-6px);white-space:nowrap;
    transition:opacity .3s ease, transform .3s ease;pointer-events:none;
  }
  .music-label.is-visible{opacity:1;transform:translateX(0);}

  /* sala de exposición: telón + focos que revelan una galería en mosaico */
  .expo-room{
    position:relative;overflow:hidden;border-radius:8px;
    background:#0b0906;padding:80px 24px 24px;
  }
  .expo-scrim{position:absolute;inset:0;z-index:1;background:#0b0906;opacity:0.9;transition:opacity 1.1s ease;pointer-events:none;}
  .spotlight{
    position:absolute;top:-25%;width:42%;height:150%;z-index:3;
    background:radial-gradient(ellipse at top, rgba(255,244,214,0.95) 0%, rgba(255,224,170,0.35) 32%, transparent 68%);
    opacity:0;mix-blend-mode:screen;pointer-events:none;
    transition:opacity 1.2s ease;transform-origin:top center;
  }
  .spotlight-a{left:2%;transform:rotate(-10deg);}
  .spotlight-b{right:2%;transform:rotate(10deg);}
  .expo-room.is-lit .expo-scrim{opacity:0.18;}
  .expo-room.is-lit .spotlight{opacity:1;}
  .expo-room.is-lit .spotlight-a{animation:swingA 6s ease-in-out infinite;}
  .expo-room.is-lit .spotlight-b{animation:swingB 7s ease-in-out infinite;}
  @keyframes swingA{0%,100%{transform:rotate(-10deg);}50%{transform:rotate(-5deg);}}
  @keyframes swingB{0%,100%{transform:rotate(10deg);}50%{transform:rotate(5deg);}}

  /* telón: dos paneles de terciopelo que se abren al iluminar */
  .curtain{
    position:absolute;top:0;bottom:0;width:52%;z-index:4;
    background:
      repeating-linear-gradient(90deg,
        rgba(0,0,0,0.28) 0px, rgba(0,0,0,0.28) 3px,
        transparent 3px, transparent 11px,
        rgba(255,255,255,0.05) 11px, transparent 18px),
      linear-gradient(180deg, #D9A05B 0%, #8A5A24 45%, #221A10 100%);
    box-shadow:inset 0 0 70px rgba(0,0,0,0.65);
    transition:transform 1.15s cubic-bezier(.65,0,.35,1);
  }
  .curtain-left{left:0;}
  .curtain-right{right:0;}
  .expo-room.is-lit .curtain-left{transform:translateX(-104%);}
  .expo-room.is-lit .curtain-right{transform:translateX(104%);}

  .expo-switch{position:absolute;top:22px;left:50%;transform:translateX(-50%);z-index:5;}
  .expo-switch .btn{border-color:var(--highlight);}

  .expo-grid{
    position:relative;z-index:2;display:grid;
    grid-template-columns:repeat(4,1fr);grid-auto-rows:150px;
    grid-auto-flow:dense;gap:14px;perspective:800px;
  }
  .expo-photo{
    position:relative;background:#000;overflow:hidden;cursor:pointer;
    box-shadow:0 22px 50px rgba(0,0,0,0.5);
    transition:transform .2s ease-out;
  }
  .expo-photo.span-a{grid-column:span 2;grid-row:span 2;}
  .expo-photo.span-b{grid-row:span 2;}
  .expo-photo.span-c{grid-column:span 2;}
  .expo-photo img{
    width:100%;height:100%;object-fit:cover;
    filter:grayscale(0.85) sepia(0.1) contrast(1.08) brightness(0.95);
    transition:transform .5s ease;
  }
  .expo-photo:hover img{transform:scale(1.05);}
  .expo-photo::after{
    content:"";position:absolute;inset:0;
    background:linear-gradient(0deg, rgba(0,0,0,0.35), transparent 45%);
    opacity:0;transition:opacity .25s ease;
  }
  .expo-photo:hover::after{opacity:1;}


  /* cursor con forma de cámara sobre imágenes */
  .cursor-camera{
    position:fixed;top:0;left:0;width:38px;height:38px;
    pointer-events:none;z-index:700;color:#fff;mix-blend-mode:difference;
    opacity:0;transform:translate(-50%,-50%) scale(0.5);
    transition:opacity .2s ease, transform .28s cubic-bezier(.34,1.4,.64,1);
  }
  .cursor-camera.is-visible{opacity:1;transform:translate(-50%,-50%) scale(1);}
  .cursor-camera.is-snapping{animation:cursorSnap .3s ease;}
  @keyframes cursorSnap{
    0%{transform:translate(-50%,-50%) scale(1) rotate(0deg);}
    35%{transform:translate(-50%,-50%) scale(0.7) rotate(-9deg);}
    70%{transform:translate(-50%,-50%) scale(1.1) rotate(5deg);}
    100%{transform:translate(-50%,-50%) scale(1) rotate(0deg);}
  }
  @media (pointer:fine){
    body.js-cursor-ready .photo,
    body.js-cursor-ready .hero-media,
    body.js-cursor-ready .about-photo,
    body.js-cursor-ready .lightbox-figure img{cursor:none;}
  }

  /* lightbox */
  .lightbox{
    position:fixed;inset:0;z-index:400;background:rgba(16,13,9,0.96);
    display:flex;align-items:center;justify-content:center;padding:60px 32px;
    opacity:0;visibility:hidden;transition:opacity .3s ease, visibility .3s ease;
  }
  .lightbox.is-open{opacity:1;visibility:visible;}
  .lightbox-figure{max-width:820px;width:100%;text-align:center;}
  .lightbox-figure img{
    max-height:72vh;width:auto;margin:0 auto;
    filter:grayscale(0.85) sepia(0.12) contrast(1.08) brightness(0.95);
    box-shadow:0 30px 60px rgba(0,0,0,0.45);
    transition:filter .7s ease;
  }
  .lightbox-figure figcaption{margin-top:18px;color:var(--paper);font-size:15px;}
  .lightbox-meta{display:block;font-family:var(--font-mono);font-size:12px;color:var(--highlight);margin-top:6px;}
  .lightbox-close,.lightbox-nav{
    position:fixed;display:flex;align-items:center;justify-content:center;
    width:42px;height:42px;border-radius:50%;color:var(--paper);
    border:1px solid rgba(231,226,214,0.3);transition:border-color .2s ease, background .2s ease;
  }
  .lightbox-close:hover,.lightbox-nav:hover{border-color:var(--highlight);background:rgba(231,226,214,0.06);}
  .lightbox-close{top:24px;right:24px;z-index:410;}
  .lightbox-nav{top:50%;transform:translateY(-50%);z-index:410;}
  .lightbox-nav.prev{left:24px;}
  .lightbox-nav.next{right:24px;}

  @media (max-width:860px){
    .nav-links,.nav-cta{display:none;}
    .burger{display:flex;}
    nav.open .nav-links{
      display:flex;position:fixed;top:60px;left:0;right:0;background:var(--paper);
      flex-direction:column;padding:20px 32px;gap:20px;border-bottom:1px solid var(--silver-line);
    }
    .about-grid,.contact-grid{grid-template-columns:1fr;gap:36px;}
    .event-grid{grid-template-columns:1fr;gap:40px;}
    .event-visual{order:-1;}
    .services-grid{grid-template-columns:1fr;}
    .process-grid{grid-template-columns:1fr 1fr;row-gap:34px;}
    .testimonials-grid{grid-template-columns:1fr;}
    .gallery{grid-template-columns:repeat(2,1fr);}
    .expo-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:130px;gap:12px;}
    .expo-room{padding:64px 14px 14px;}
    .spotlight{width:60%;}
    section{padding:72px 0;}
    .lightbox{padding:88px 16px 24px;}
    .lightbox-nav{width:36px;height:36px;}
    .lightbox-nav.prev{left:10px;}
    .lightbox-nav.next{right:10px;}
    .lightbox-close{top:16px;right:16px;}
    .sound-toggle{left:14px;bottom:14px;}
    .music-toggle{bottom:58px;}
    .music-label{left:14px;bottom:102px;}
  }
  @media (max-width:520px){
    .gallery{grid-template-columns:1fr;}
    .expo-grid{grid-template-columns:1fr;}
    .process-grid{grid-template-columns:1fr;}
    .hero-content{padding-bottom:44px;}
    .frame-data{display:none;}
  }
  @media (prefers-reduced-motion: reduce){
    *{transition-duration:0.01ms !important; scroll-behavior:auto !important;}
    .shutter-fx.fire{animation:none !important;opacity:0 !important;}
    #irisHole{transition-duration:0.01ms !important;}
    .cursor-camera.is-snapping{animation:none !important;}
    .expo-room.is-lit .spotlight-a,
    .expo-room.is-lit .spotlight-b{animation:none !important;}
  }
