/* FESTIAB — identidad visual
   Paleta principal:
   #33150F café profundo · #EFE1C1 crema · #F1AE2E amarillo
   #4EA1D9 azul · #E83C3E rojo
*/
@font-face{
    font-family:"Mayan Square";
    src:url("mayan square.ttf") format("truetype");
    font-style:normal;
    font-weight:100 900;
    font-display:swap;
}
@font-face{
    font-family:"Quicksand";
    src:url("Quicksand-VariableFont_wght.ttf") format("truetype");
    font-style:normal;
    font-weight:300 700;
    font-display:swap;
}
:root{
  --brown:#33150F; --brown-2:#4A2117; --cream:#EFE1C1; --yellow:#F1AE2E;
  --blue:#4EA1D9; --red:#E83C3E; --ink:#1E0E0A; --paper:#F7F0DF;
  --line:rgba(51,21,15,.22); --shadow:0 22px 60px rgba(51,21,15,.14);
  --ease:cubic-bezier(.2,.75,.25,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--brown);font-family:"Quicksand",sans-serif;overflow-x:hidden}
.site-intro{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:var(--brown);animation:site-intro-exit .55s ease 1.35s forwards;pointer-events:none}
.site-intro img{width:min(360px,72vw);height:auto;display:block;object-fit:contain;animation:site-logo-enter .55s cubic-bezier(.2,.75,.25,1) both}
@keyframes site-logo-enter{from{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}
@keyframes site-intro-exit{to{opacity:0;visibility:hidden}}
@media(prefers-reduced-motion:reduce){.site-intro{animation-delay:.1s;animation-duration:.2s}.site-intro img{animation:none}}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.055;background-image:radial-gradient(#33150F .55px,transparent .55px);background-size:7px 7px;z-index:20}
.grain{position:fixed;inset:-50%;width:200%;height:200%;pointer-events:none;z-index:19;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E")}
@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(-2%,1%)}50%{transform:translate(1%,-2%)}75%{transform:translate(2%,2%)}100%{transform:translate(-1%,0)}}
.cursor-glow{position:fixed;width:280px;height:280px;border-radius:50%;pointer-events:none;z-index:2;background:radial-gradient(circle,rgba(241,174,46,.10),transparent 65%);transform:translate(-50%,-50%)}
a::after{}

a{text-decoration:none;color:inherit}
button,input,select,textarea{font:inherit}
.site-header{height:78px;position:fixed;top:0;left:0;right:0;z-index:1000;display:flex;align-items:center;padding:10px 4vw;background:rgba(51,21,15,.96);color:var(--cream);box-shadow:0 8px 30px rgba(0,0,0,.12);backdrop-filter:blur(18px)}
.brand{display:flex;align-items:center;gap:12px;min-width:270px}
.brand-logo{width:48px;height:48px;border:1px solid rgba(239,225,193,.35);border-radius:11px;display:grid;place-items:center;overflow:hidden;background:#24100c;position:relative}
.brand-logo img{width:100%;height:100%;object-fit:contain;display:none}
.brand-logo.has-image img{display:block}.brand-logo.has-image .logo-placeholder{display:none}
.logo-placeholder{font-size:9px;letter-spacing:.18em;opacity:.7}
.brand-name{display:flex;flex-direction:column;line-height:1}
.brand-name strong{font-family:"Playfair Display",serif;font-size:23px;letter-spacing:.04em}.brand-name span{font-size:8px;letter-spacing:.16em;margin-top:6px;opacity:.72}
.main-nav{display:flex;justify-content:center;align-items:center;gap:5px;flex:1}
.nav-link{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.055em;padding:11px 12px;border-radius:999px;transition:.3s var(--ease);white-space:nowrap}
.nav-link:hover,.nav-link.active{background:var(--yellow);color:var(--brown);transform:translateY(-1px)}
.header-actions{display:flex;align-items:center;gap:8px;min-width:100px;justify-content:flex-end}
.upload-mini{cursor:pointer;border:1px solid rgba(239,225,193,.28);padding:9px 12px;border-radius:999px;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.upload-mini:hover{border-color:var(--yellow);color:var(--yellow)}
.menu-toggle{display:none;background:none;border:0;color:var(--cream);font-size:24px}
.section{padding:130px 6vw 110px;position:relative}
.hero{min-height:100vh;padding-top:160px;display:flex;align-items:center;background:var(--brown);color:var(--cream);overflow:hidden}
.hero-image-layer{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.3;mix-blend-mode:screen}
.hero-pattern{position:absolute;inset:0;background:radial-gradient(circle at 78% 35%,rgba(241,174,46,.35),transparent 18%),linear-gradient(90deg,rgba(51,21,15,.98) 0%,rgba(51,21,15,.84) 48%,rgba(51,21,15,.28) 100%)}
.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 70%,var(--brown) 100%);pointer-events:none}
.hero-content{position:relative;z-index:3;max-width:900px}
.eyebrow{font-size:10px;letter-spacing:.17em;text-transform:uppercase;font-weight:800;display:flex;align-items:center;gap:10px;margin:0 0 20px}.eyebrow span{width:32px;height:2px;background:var(--yellow);display:inline-block}
.hero-kicker{font-size:13px;letter-spacing:.24em;text-transform:uppercase;color:var(--yellow);font-weight:800;margin:0 0 18px}
.hero h1{font-family:"Playfair Display",serif;font-size:clamp(62px,8.6vw,140px);line-height:.84;letter-spacing:-.055em;margin:0;max-width:1000px}.hero h1 em{font-weight:500;color:var(--yellow)}
.hero-copy{max-width:610px;font-size:17px;line-height:1.65;opacity:.85;margin:32px 0}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap}
.btn{border:0;display:inline-flex;align-items:center;justify-content:center;gap:18px;cursor:pointer;padding:14px 20px;border-radius:999px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;transition:.35s var(--ease)}
.btn-primary{background:var(--yellow);color:var(--brown)}.btn-primary:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(241,174,46,.22)}
.btn-ghost{border:1px solid rgba(239,225,193,.4);color:var(--cream)}.btn-ghost:hover{background:var(--cream);color:var(--brown)}
.btn-outline{border:1px solid var(--brown);background:transparent;color:var(--brown)}.btn-outline:hover{background:var(--brown);color:var(--cream)}
.hero-meta{display:flex;gap:30px;margin-top:80px;font-size:10px;letter-spacing:.08em;text-transform:uppercase}.hero-meta b{color:var(--yellow);margin-right:7px}
.hero-side-note{position:absolute;z-index:3;right:5vw;bottom:14%;font-size:10px;line-height:1.6;letter-spacing:.25em;writing-mode:vertical-rl;opacity:.55}.hero-scroll{position:absolute;z-index:3;bottom:25px;left:50%;font-size:9px;letter-spacing:.25em;transform:translateX(-50%);opacity:.65}.hero-scroll span{margin-left:10px;color:var(--yellow)}
.intro-strip{display:grid;grid-template-columns:1fr 1.8fr 60px;gap:30px;align-items:center;padding:26px 6vw;background:var(--yellow);color:var(--brown);border-top:1px solid var(--brown);border-bottom:1px solid var(--brown)}
.intro-strip div:first-child{display:flex;align-items:center;gap:15px;text-transform:uppercase;font-size:11px;letter-spacing:.08em}.intro-strip div:first-child span{font-weight:800}.intro-strip p{margin:0;font-family:"Playfair Display",serif;font-size:21px}.strip-mark{font-size:30px;text-align:right}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:40px;margin-bottom:55px}.section-heading h2{font-family:"Playfair Display",serif;font-size:clamp(48px,6vw,86px);line-height:.9;letter-spacing:-.05em;margin:0}.section-heading h2 em{color:var(--red);font-style:normal}.section-lead{max-width:430px;line-height:1.65;font-size:14px;margin:0 0 3px;opacity:.75}
.about{background:var(--cream)}.about-grid{display:grid;grid-template-columns:1.35fr .85fr;gap:22px}.feature-card{background:rgba(247,240,223,.72);border:1px solid var(--line);border-radius:24px;padding:24px;box-shadow:var(--shadow)}.card-top{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.14em;text-transform:uppercase;opacity:.65}.history-card h3{font-family:"Playfair Display",serif;font-size:39px;line-height:1;margin:32px 0 12px}.history-card>p{font-size:13px;line-height:1.6;max-width:650px}.map{position:relative;z-index:0;isolation:isolate;contain:paint;border-radius:18px;overflow:hidden;border:2px solid var(--brown);background:var(--blue);box-shadow:0 18px 34px rgba(51,21,15,.16),inset 0 0 0 5px rgba(239,225,193,.72)}.map-colombia{height:410px;margin-top:22px;box-shadow:0 18px 34px rgba(51,21,15,.16),inset 0 0 0 5px rgba(239,225,193,.72),8px 8px 0 var(--yellow)}.map-legend{font-size:9px;display:flex;align-items:center;gap:7px;margin-top:12px;text-transform:uppercase;letter-spacing:.08em;opacity:.65}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-yellow{background:var(--yellow)}.dot-red{background:var(--red);margin-left:14px}
.about-stack{display:grid;gap:12px}.info-card{display:grid;grid-template-columns:55px 1fr;gap:16px;padding:23px;border-radius:20px;border:1px solid var(--line);transition:.35s var(--ease)}.info-card:hover{transform:translateX(6px);box-shadow:var(--shadow)}.info-card .number{font-size:10px;font-weight:800;opacity:.55}.info-card h3{margin:0 0 7px;font-family:"Playfair Display",serif;font-size:25px}.info-card p{margin:0;font-size:12px;line-height:1.55}.info-card.yellow{background:#f7dfab}.info-card.red{background:#f2b7b3}.info-card.blue{background:#c8e1f0}.info-card.cream{background:#f7f0df}
.programming{background:var(--paper)}.tickets{display:grid;gap:14px}.ticket{display:grid;grid-template-columns:120px 1fr 130px;min-height:190px;background:var(--cream);border-radius:20px;overflow:hidden;border:1px solid rgba(51,21,15,.12);box-shadow:0 14px 40px rgba(51,21,15,.07);transition:.4s var(--ease)}.ticket:hover{transform:translateY(-5px) rotate(.1deg);box-shadow:var(--shadow)}.ticket-stub{background:var(--yellow);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--brown);position:relative}.ticket-stub:after{content:"";position:absolute;right:-7px;top:0;bottom:0;border-right:2px dashed rgba(51,21,15,.35)}.ticket-stub span{font-size:8px;letter-spacing:.16em;writing-mode:vertical-rl}.ticket-stub strong{font-family:"Playfair Display",serif;font-size:48px;line-height:1}.ticket-stub small{font-size:8px;letter-spacing:.1em}.ticket-main{padding:26px 32px}.ticket-tag{font-size:9px;letter-spacing:.12em;font-weight:800;opacity:.65}.ticket h3{font-family:"Playfair Display",serif;font-size:32px;margin:10px 0 7px}.ticket p{font-size:12px;line-height:1.55;max-width:680px;margin:0 0 20px;opacity:.75}.ticket-details{display:flex;gap:22px;font-size:9px;text-transform:uppercase;letter-spacing:.07em;opacity:.65}.ticket-action{border-left:1px dashed rgba(51,21,15,.2);display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:25px 15px 20px}.ticket-action>span{font-size:11px;font-weight:800;letter-spacing:.12em;transform:rotate(-90deg);margin-bottom:30px}.ticket-btn{border:1px solid var(--brown);background:transparent;border-radius:999px;padding:9px 13px;font-size:9px;text-transform:uppercase;font-weight:800;cursor:pointer}.red-ticket .ticket-stub{background:var(--red);color:var(--cream)}.blue-ticket .ticket-stub{background:var(--blue)}.yellow-ticket .ticket-stub{background:var(--yellow)}.program-note{display:grid;grid-template-columns:150px 1fr auto;align-items:center;gap:25px;margin-top:30px;padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.program-note>span{font-size:9px;font-weight:800;letter-spacing:.14em}.program-note p{margin:0;font-size:12px}.program-note a{font-size:10px;font-weight:800;text-transform:uppercase}
.participants{background:var(--brown);color:var(--cream)}.participants .section-lead{color:var(--cream)}.category-switch{display:flex;border:1px solid rgba(239,225,193,.3);border-radius:999px;padding:4px}.category-switch span{padding:9px 13px;border-radius:999px;font-size:9px;text-transform:uppercase;letter-spacing:.07em}.category-switch .active{background:var(--yellow);color:var(--brown)}
.participant-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.participant-card{border:1px solid rgba(239,225,193,.16);border-radius:22px;overflow:hidden;background:#422018;transition:.4s var(--ease)}.participant-card:hover{transform:translateY(-6px);border-color:rgba(241,174,46,.55)}.participant-card.afro{background:#3b1b16}.image-upload{display:block;height:250px;position:relative;cursor:pointer;background:linear-gradient(135deg,rgba(241,174,46,.14),rgba(78,161,217,.12));overflow:hidden}.image-upload:after{content:"";position:absolute;inset:15px;border:1px dashed rgba(239,225,193,.28);border-radius:15px}.image-upload span{position:absolute;inset:0;display:grid;place-items:center;font-size:10px;letter-spacing:.08em;text-transform:uppercase;z-index:2;opacity:.7}.image-upload img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:3}.participant-info{padding:20px 21px 24px}.participant-info span{font-size:8px;letter-spacing:.14em;color:var(--yellow)}.participant-info h3{font-family:"Playfair Display",serif;font-size:26px;margin:8px 0}.participant-info p{font-size:11px;line-height:1.6;opacity:.7;margin:0}
.gallery-section{background:var(--cream)}.gallery-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:105px;gap:12px}.gallery-item{position:relative;overflow:hidden;border-radius:15px;background:linear-gradient(135deg,#4a2117,#7a3a24);border:1px solid rgba(51,21,15,.15);background-size:cover;background-position:center;transition:.5s var(--ease)}.gallery-item:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(51,21,15,.82));opacity:.7}.gallery-item:hover{transform:scale(1.012);z-index:2;box-shadow:var(--shadow)}.g1{grid-column:span 5;grid-row:span 3}.g2{grid-column:span 3;grid-row:span 2}.g3{grid-column:span 4;grid-row:span 4}.g4{grid-column:span 3;grid-row:span 3}.g5{grid-column:span 5;grid-row:span 3}.g6{grid-column:span 4;grid-row:span 2}.g7{grid-column:span 4;grid-row:span 3}.g8{grid-column:span 3;grid-row:span 3}.g9{grid-column:span 5;grid-row:span 2}.g10{grid-column:span 4;grid-row:span 3}.g11{grid-column:span 3;grid-row:span 2}.g12{grid-column:span 5;grid-row:span 2}.gallery-upload{position:absolute;inset:0;z-index:4;cursor:pointer}.gallery-upload span{position:absolute;right:12px;top:12px;background:rgba(239,225,193,.9);color:var(--brown);padding:7px 10px;border-radius:999px;font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.gallery-caption{position:absolute;z-index:5;left:16px;right:16px;bottom:13px;color:var(--cream);display:flex;gap:12px;align-items:start}.gallery-caption b{color:var(--yellow);font-size:9px}.gallery-caption span{font-size:10px;line-height:1.3;max-width:190px}.video-block{margin-top:45px;background:var(--brown);color:var(--cream);border-radius:26px;padding:32px;display:grid;grid-template-columns:.7fr 1.3fr;gap:35px;align-items:center}.video-copy h3{font-family:"Playfair Display",serif;font-size:52px;line-height:.88;margin:0 0 20px}.video-copy h3 em{color:var(--yellow);font-weight:500}.video-copy p:last-child{font-size:12px;line-height:1.65;opacity:.72;max-width:400px}.video-upload{height:360px;background:#1e0e0a;border-radius:18px;overflow:hidden;display:block;position:relative;cursor:pointer}.video-upload video{width:100%;height:100%;object-fit:cover;display:none}.video-upload.has-video video{display:block}.video-upload.has-video .video-placeholder{display:none}.video-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:radial-gradient(circle at center,rgba(241,174,46,.18),transparent 40%)}.video-placeholder span{width:55px;height:55px;border:1px solid rgba(239,225,193,.4);border-radius:50%;display:grid;place-items:center;color:var(--yellow)}.video-placeholder b{font-size:12px}.video-placeholder small{font-size:8px;letter-spacing:.14em;opacity:.5}
.location-section{background:var(--paper)}.location-layout{display:grid;grid-template-columns:1.6fr .7fr;gap:15px}.map-bogota{height:610px}.venue-panel{background:var(--brown);color:var(--cream);border-radius:20px;padding:28px;min-height:610px}.venue-panel .eyebrow{color:var(--cream)}.venue-default{display:flex;height:500px;align-items:center;justify-content:center;flex-direction:column;text-align:center;opacity:.7;padding:30px}.venue-default strong{font-family:"Playfair Display",serif;font-size:30px}.venue-default p{font-size:11px;line-height:1.6}.venue-details.hidden{display:none}.venue-type{font-size:8px;letter-spacing:.14em;color:var(--yellow);font-weight:800}.venue-details h3{font-family:"Playfair Display",serif;font-size:35px;line-height:1;margin:9px 0}.venue-details>p{font-size:10px;opacity:.6}.venue-event{border-top:1px solid rgba(239,225,193,.18);border-bottom:1px solid rgba(239,225,193,.18);padding:18px 0;margin:24px 0;display:flex;flex-direction:column;gap:6px}.venue-event small,.nearby small{font-size:8px;letter-spacing:.13em;color:var(--yellow);font-weight:800}.venue-event strong{font-size:13px}.venue-event span{font-size:10px;opacity:.65}.venue-buttons{display:flex;flex-wrap:wrap;gap:8px}.venue-buttons .btn-outline{color:var(--cream);border-color:rgba(239,225,193,.4)}.venue-buttons .btn-outline:hover{background:var(--cream);color:var(--brown)}.nearby{margin-top:25px}.nearby div{display:grid;gap:7px;margin-top:9px}.nearby-item{font-size:10px;padding:9px 10px;border-radius:9px;background:rgba(239,225,193,.08);border-left:2px solid var(--yellow)}.interest-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:18px}.interest-grid article{padding:19px;border:1px solid var(--line);border-radius:15px;background:var(--cream)}.interest-grid span{font-size:9px;color:var(--red);font-weight:800}.interest-grid h3{font-family:"Playfair Display",serif;font-size:20px;margin:18px 0 5px}.interest-grid p{font-size:10px;line-height:1.55;opacity:.68;margin:0}
.contact-section{background:var(--red);color:var(--cream);padding-bottom:130px}.contact-wrap{display:grid;grid-template-columns:.85fr 1.15fr;gap:100px;align-items:start}.contact-intro h2{font-family:"Playfair Display",serif;font-size:clamp(60px,7vw,100px);line-height:.8;letter-spacing:-.06em;margin:0 0 30px}.contact-intro h2 em{color:var(--yellow);font-weight:500}.contact-intro>p:not(.eyebrow){max-width:430px;font-size:14px;line-height:1.65;opacity:.82}.socials{display:grid;margin-top:45px;border-top:1px solid rgba(239,225,193,.25)}.socials a{padding:15px 0;border-bottom:1px solid rgba(239,225,193,.25);display:flex;justify-content:space-between;font-size:10px;text-transform:uppercase;letter-spacing:.12em}.socials a:hover{color:var(--yellow);padding-left:8px}.contact-form{background:var(--cream);color:var(--brown);border-radius:24px;padding:35px;box-shadow:var(--shadow);display:grid;gap:18px}.contact-form label{display:grid;gap:7px;font-size:9px;text-transform:uppercase;letter-spacing:.12em;font-weight:800}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.contact-form input,.contact-form select,.contact-form textarea{width:100%;border:0;border-bottom:1px solid rgba(51,21,15,.28);background:transparent;padding:12px 0;outline:none;color:var(--brown);resize:vertical}.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{border-color:var(--red)}.contact-form .btn{justify-self:start}.contact-form small{min-height:14px;font-size:10px}
.footer{background:var(--brown);color:var(--cream);padding:32px 6vw;display:grid;grid-template-columns:65px 1fr auto auto;gap:18px;align-items:center}.footer-symbol{width:50px;height:50px;border-radius:50%;background:var(--yellow);color:var(--brown);display:grid;place-items:center;font-family:"Playfair Display",serif;font-size:28px}.footer div:nth-child(2){display:flex;flex-direction:column;gap:5px}.footer div:nth-child(2) strong{font-family:"Playfair Display",serif;font-size:20px}.footer div:nth-child(2) span,.footer p,.back-top{font-size:9px;opacity:.65}.footer p{margin:0;text-transform:uppercase;letter-spacing:.12em}.back-top{opacity:1;color:var(--yellow);text-transform:uppercase;letter-spacing:.1em}
.modal{position:fixed;inset:0;z-index:1100;display:none;place-items:center;padding:20px}.modal.open{display:grid}.modal-backdrop{position:absolute;inset:0;background:rgba(30,14,10,.75);backdrop-filter:blur(10px)}.modal-card{position:relative;z-index:2;width:min(520px,100%);background:var(--cream);color:var(--brown);border-radius:24px;padding:35px;box-shadow:0 30px 100px rgba(0,0,0,.35)}.modal-close{position:absolute;right:15px;top:12px;border:0;background:none;font-size:30px;color:var(--brown);cursor:pointer}.modal-card h3{font-family:"Playfair Display",serif;font-size:48px;line-height:.95;margin:0 0 12px}.modal-card>p{font-size:12px}.modal-venue{padding:16px;border-radius:12px;background:#f5d58e;font-size:11px;margin:20px 0}.modal-actions{display:flex;gap:8px}.modal-actions .btn-outline{background:transparent}
.reveal{opacity:0;transform:translateY(25px);transition:opacity .8s var(--ease),transform .8s var(--ease)}.reveal.visible{opacity:1;transform:none}
.leaflet-container{z-index:0;font-family:"Quicksand",sans-serif}.leaflet-control-zoom,.leaflet-control-layers{border:0!important;box-shadow:0 8px 20px rgba(51,21,15,.18)!important}.leaflet-control-zoom a,.leaflet-control-layers-toggle{background:var(--cream)!important;color:var(--brown)!important;border:0!important}.leaflet-control-zoom a:hover{background:var(--yellow)!important;color:var(--brown)!important}.leaflet-control-attribution{background:rgba(239,225,193,.9)!important;color:var(--brown)!important;font-size:8px}.leaflet-control-attribution a{color:var(--red)!important}.leaflet-tooltip.venue-number{border:2px solid var(--cream);border-radius:50%;background:var(--red);color:var(--cream);font-weight:800;box-shadow:0 4px 12px rgba(51,21,15,.3)}.leaflet-popup-content-wrapper{border-radius:13px;background:var(--cream);color:var(--brown);border-top:3px solid var(--yellow)}.leaflet-popup-tip{background:var(--cream)}.map-popup h4{font-family:"Playfair Display",serif;margin:0 0 4px;font-size:18px}.map-popup p{margin:4px 0;font-size:10px;line-height:1.4}.map-popup b{color:var(--red)}

h1,h2,h3,h4,
h1 *,h2 *,h3 *,h4 *,
.programacion-header h2 em,
.boleto-content h3 span,
.brand-name strong,
.intro-strip p,
.venue-default strong,
.footer div:nth-child(2) strong,
.footer-symbol{
    font-family:"Mayan Square",sans-serif !important;
    letter-spacing:0;
    max-width:100%;
    overflow-wrap:break-word;
    hyphens:auto;
}
body *{
    font-family:"Quicksand",sans-serif;
}
h1,h2,h3,h4,
h1 *,h2 *,h3 *,h4 *,
.programacion-header h2 em,
.boleto-content h3 span,
.brand-name strong,
.intro-strip p,
.venue-default strong,
.footer div:nth-child(2) strong,
.footer-symbol{
    font-family:"Mayan Square",sans-serif !important;
}
.ticket-main,
.info-card>div,
.participant-info,
.video-copy,
.venue-panel,
.contact-intro,
.modal-card,
.interest-grid article{
    min-width:0;
}

/* Fondos simples con variaciones suaves de la paleta FESTIAB. */
.intro-strip{
    background-color:var(--yellow);
    background-image:linear-gradient(90deg,rgba(255,255,255,.14),rgba(241,174,46,.14));
}
.about{
    background-color:var(--cream);
    background-image:linear-gradient(180deg,rgba(255,255,255,.24),rgba(239,225,193,.08));
}
.programming{
    background-color:var(--paper);
    background-image:linear-gradient(180deg,rgba(78,161,217,.08),rgba(247,240,223,0));
}
.participants{
    background-color:var(--brown);
    background-image:linear-gradient(180deg,rgba(78,161,217,.12),rgba(51,21,15,.08));
}
.gallery-section{
    background-color:var(--cream);
    background-image:linear-gradient(180deg,rgba(241,174,46,.13),rgba(239,225,193,.06));
}
.location-section{
    background-color:var(--paper);
    background-image:linear-gradient(90deg,rgba(78,161,217,.08),rgba(247,240,223,0) 55%,rgba(241,174,46,.08));
}
.contact-section{
    background-color:var(--red);
    background-image:linear-gradient(180deg,rgba(241,174,46,.16),rgba(232,60,62,.04));
}
@media(max-width:1100px){.main-nav{gap:0}.nav-link{padding:10px 7px;font-size:9px}.brand{min-width:210px}.header-actions{min-width:70px}.upload-mini{display:none}.participant-grid{grid-template-columns:repeat(2,1fr)}.location-layout{grid-template-columns:1fr}.venue-panel{min-height:auto}.venue-default{height:auto}.interest-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){.site-header{height:70px}.main-nav{position:absolute;top:70px;left:10px;right:10px;display:none;flex-direction:column;align-items:stretch;padding:10px;background:rgba(51,21,15,.98);border-radius:16px}.main-nav.open{display:flex}.nav-link{text-align:center;padding:13px}.menu-toggle{display:block}.brand-name span{display:none}.brand{min-width:auto}.hero{min-height:850px}.hero h1{font-size:65px}.hero-side-note{display:none}.section{padding:100px 5vw 80px}.section-heading{display:block}.section-lead{margin-top:25px}.about-grid,.contact-wrap{grid-template-columns:1fr}.contact-wrap{gap:45px}.tickets .ticket{grid-template-columns:75px 1fr}.ticket-action{display:none}.ticket-main{padding:23px}.ticket h3{font-size:27px}.gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:190px}.gallery-item{grid-column:span 1!important;grid-row:span 1!important}.g1,.g5,.g9,.g12{grid-column:span 2!important}.video-block{grid-template-columns:1fr}.video-upload{height:280px}.interest-grid{grid-template-columns:1fr 1fr}.footer{grid-template-columns:50px 1fr}.footer p,.back-top{display:none}.form-row{grid-template-columns:1fr}}
@media(max-width:520px){.hero h1{font-size:53px}.hero-copy{font-size:14px}.hero-meta{gap:12px;margin-top:50px}.intro-strip{grid-template-columns:1fr 35px}.intro-strip p{grid-column:1/-1;grid-row:2;font-size:18px}.strip-mark{grid-column:2;grid-row:1}.participant-grid{grid-template-columns:1fr}.map-colombia,.map-bogota{height:400px}.gallery-grid{grid-template-columns:1fr;grid-auto-rows:230px}.gallery-item,.g1,.g5,.g9,.g12{grid-column:span 1!important}.contact-form{padding:24px}.contact-intro h2{font-size:65px}}

/* Contenido administrado por la persona propietaria de la web */
.asset-path{font-size:8px;letter-spacing:.04em;opacity:.55;max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.image-upload{cursor:default}
.image-upload .asset-address,.gallery-address{position:absolute;z-index:6;left:12px;bottom:12px;background:rgba(51,21,15,.78);color:var(--cream);padding:6px 8px;border-radius:7px;font-size:7px;letter-spacing:.02em}
.image-upload img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:3}
.gallery-item .gallery-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.gallery-item .gallery-address{left:auto;right:10px;bottom:10px;opacity:.9}
.video-upload video{display:block}
.video-upload .video-placeholder{display:none}
@media(max-width:800px){.asset-path{display:none}}

/* Ocultar rutas y textos superpuestos en imágenes y dejar la foto libre */
.asset-path,
.image-upload .asset-address,
.gallery-address,
.gallery-caption {
  display: none !important;
}

/* Composición tipo collage: las áreas encajan entre sí y evitan huecos. */
.gallery-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-rows: repeat(6, minmax(105px, 145px));
    grid-template-areas:
        "g1 g1 g2 g3"
        "g1 g1 g2 g3"
        "g4 g5 g5 g6"
        "g4 g7 g8 g6"
        "g9 g7 g8 g10"
        "g9 g11 g12 g10";
    gap: 8px;
    grid-auto-flow: initial;
}
.gallery-item,
.g1,.g2,.g3,.g4,.g5,.g6,.g7,.g8,.g9,.g10,.g11,.g12 {
    grid-column: auto;
    grid-row: auto;
}
.g1{grid-area:g1}.g2{grid-area:g2}.g3{grid-area:g3}.g4{grid-area:g4}
.g5{grid-area:g5}.g6{grid-area:g6}.g7{grid-area:g7}.g8{grid-area:g8}
.g9{grid-area:g9}.g10{grid-area:g10}.g11{grid-area:g11}.g12{grid-area:g12}
.gallery-item:nth-child(3n){border-radius:24px 8px 24px 8px}
.gallery-item:nth-child(3n + 1){border-radius:8px 24px 8px 24px}

@media(max-width:800px){
    .gallery-grid {
        grid-template-columns:repeat(2, minmax(0, 1fr));
        grid-template-rows:repeat(10, minmax(105px, 135px));
        grid-template-areas:
            "g1 g1"
            "g2 g3"
            "g2 g3"
            "g4 g5"
            "g6 g5"
            "g6 g7"
            "g8 g8"
            "g9 g10"
            "g9 g10"
            "g11 g12";
    }
}

@media(max-width:520px){
    .gallery-grid {
        grid-template-rows:repeat(10, 100px);
        gap:6px;
    }
}

/* Fondos escenograficos de las secciones interiores. */
.about,
.programming,
.participants,
.gallery-section,
.location-section,
.contact-section {
    isolation:isolate;
    overflow:hidden;
}
.about {
    background-color:var(--cream);
    background-image:
        linear-gradient(135deg,rgba(78,161,217,.16) 0 1px,transparent 1px 34px),
        linear-gradient(45deg,rgba(241,174,46,.12) 0 1px,transparent 1px 34px),
        radial-gradient(circle at 88% 12%,rgba(232,60,62,.2),transparent 24%),
        linear-gradient(180deg,#f8efd7,var(--cream));
    background-size:34px 34px,34px 34px,auto,auto;
}
.about::before,
.programming::after,
.location-section::before {
    content:"";
    position:absolute;
    pointer-events:none;
    z-index:-1;
}
.about::before {
    width:360px;
    height:360px;
    right:-130px;
    top:90px;
    border:1px solid rgba(232,60,62,.28);
    border-radius:50%;
    box-shadow:0 0 0 22px rgba(232,60,62,.06),0 0 0 44px rgba(232,60,62,.05);
}
.programming {
    background-color:var(--paper);
    background-image:
        radial-gradient(circle at 12% 18%,rgba(78,161,217,.25) 0 2px,transparent 3px),
        radial-gradient(circle at 85% 78%,rgba(241,174,46,.3) 0 2px,transparent 3px),
        linear-gradient(115deg,rgba(78,161,217,.08) 0 14%,transparent 14% 50%,rgba(232,60,62,.08) 50% 64%,transparent 64%),
        linear-gradient(180deg,#f8f0df,#f0e4c8);
    background-size:170px 170px,230px 230px,100% 100%,auto;
}
.programming::after {
    width:240px;
    height:240px;
    left:-100px;
    bottom:130px;
    border:34px solid rgba(78,161,217,.1);
    border-radius:50%;
}
.participants {
    isolation:isolate;
    overflow:hidden;
    background-color:var(--brown);
    background-image:
        radial-gradient(circle at 86% 18%,rgba(239,225,193,.08),transparent 28%),
        linear-gradient(135deg,rgba(241,174,46,.08),transparent 42%),
        linear-gradient(180deg,#432018,var(--brown));
    background-size:auto,auto,auto;
}
.participants::before {
    content:"";
    position:absolute;
    pointer-events:none;
    z-index:-1;
    width:380px;
    height:380px;
    right:-190px;
    top:150px;
    border:1px solid rgba(239,225,193,.12);
    border-radius:50%;
    box-shadow:0 0 0 20px rgba(239,225,193,.035),0 0 0 40px rgba(241,174,46,.025);
}
.gallery-section {
    background-color:var(--cream);
    background-image:
        linear-gradient(90deg,rgba(232,60,62,.07) 1px,transparent 1px),
        linear-gradient(rgba(78,161,217,.08) 1px,transparent 1px),
        radial-gradient(circle at 92% 18%,rgba(241,174,46,.28),transparent 28%),
        linear-gradient(180deg,#fff3d2,var(--cream));
    background-size:42px 42px,42px 42px,auto,auto;
}
.gallery-section::after {
    content:"";
    position:absolute;
    pointer-events:none;
    z-index:-1;
    width:260px;
    height:260px;
    right:-80px;
    bottom:80px;
    background:var(--blue);
    opacity:.12;
    transform:rotate(18deg);
    border-radius:28% 72% 38% 62%;
}
.location-section {
    background-color:var(--paper);
    background-image:
        linear-gradient(115deg,transparent 0 45%,rgba(78,161,217,.14) 45% 46%,transparent 46% 100%),
        linear-gradient(25deg,transparent 0 62%,rgba(241,174,46,.16) 62% 63%,transparent 63% 100%),
        radial-gradient(circle at 8% 88%,rgba(232,60,62,.16),transparent 25%),
        linear-gradient(180deg,#f8f1e3,#e9e5d7);
}
.location-section::before {
    width:460px;
    height:460px;
    left:-250px;
    top:220px;
    border:1px solid rgba(78,161,217,.24);
    border-radius:50%;
    box-shadow:0 0 0 22px rgba(78,161,217,.06),0 0 0 44px rgba(78,161,217,.04);
}
.contact-section {
    background-color:var(--brown);
    background-image:
        linear-gradient(120deg,rgba(51,21,15,.38),transparent 48%,rgba(78,161,217,.26)),
        linear-gradient(180deg,#4a2117,var(--brown));
    background-size:100% 100%,auto;
}
.contact-section::before {
    content:"";
    position:absolute;
    pointer-events:none;
    z-index:-1;
    width:420px;
    height:420px;
    right:-170px;
    top:80px;
    border:1px solid rgba(239,225,193,.35);
    border-radius:50%;
    box-shadow:0 0 0 28px rgba(239,225,193,.08),0 0 0 56px rgba(232,60,62,.08);
}


/* Quitar overlay oscuro que oscurece las fotos */
.gallery-item:after {
  display: none !important;
}

/* El video conserva su proporcion original y no se recorta. */
.video-upload{
    height:auto !important;
    min-height:0;
    overflow:hidden;
    align-self:start;
}
.video-upload video{
    display:block;
    width:100%;
    height:auto;
    max-width:100%;
    object-fit:contain;
}
/* =========================================================
   FESTIAB
   PROGRAMACIÓN — BOLETAS DE TEATRO
========================================================= */

.festiab-programacion {
    position: relative;
    background: #efe1c1;
    color: #33150f;
    padding: 140px 7vw;
    overflow: hidden;
}


/* textura decorativa */

.festiab-programacion::before {
    content: "";
    position: absolute;
    width: 450px;
    height: 450px;
    border: 1px solid rgba(51, 21, 15, .12);
    border-radius: 50%;
    right: -180px;
    top: 80px;
}

.festiab-programacion::after {
    content: "";
    position: absolute;
    width: 250px;
    height: 250px;
    background: rgba(241, 174, 46, .12);
    border-radius: 50%;
    left: -120px;
    bottom: 100px;
    filter: blur(30px);
}


/* =========================================================
   ENCABEZADO
========================================================= */

.programacion-header {
    position: relative;
    z-index: 2;
    max-width: 800px;
    margin-bottom: 55px;
}

.programacion-kicker {
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .2em;
    margin-bottom: 22px;
    color: #e83c3e;
}

.programacion-header h2 {
    margin: 0;
    font-size: clamp(45px, 6vw, 90px);
    line-height: .9;
    text-transform: uppercase;
    letter-spacing: -.05em;
}

.programacion-header h2 em {
    font-family: Georgia, serif;
    font-weight: 400;
    text-transform: none;
    color: #e83c3e;
}

.programacion-header p {
    max-width: 600px;
    margin-top: 30px;
    font-size: 16px;
    line-height: 1.7;
}


/* =========================================================
   FILTROS
========================================================= */

.programacion-filtros {
    position: relative;
    z-index: 3;

    display: flex;
    gap: 10px;

    margin-bottom: 40px;
}

.filtro-programacion {
    border: 1px solid #33150f;
    background: transparent;
    color: #33150f;

    padding: 11px 20px;

    border-radius: 50px;

    font-size: 10px;
    font-weight: 700;
    letter-spacing: .12em;

    cursor: pointer;

    transition:
        background .3s ease,
        color .3s ease,
        transform .3s ease;
}

.filtro-programacion:hover {
    transform: translateY(-2px);
}

.filtro-programacion.activo {
    background: #33150f;
    color: #efe1c1;
}


/* =========================================================
   CONTENEDOR
========================================================= */

.boletos-container {
    position: relative;
    z-index: 2;

    display: flex;
    flex-direction: column;
    gap: 28px;

    max-width: 1200px;
    margin: auto;
}


/* =========================================================
   BOLETO
========================================================= */

.boleto-teatro {
    position: relative;

    background: #33150f;
    color: #efe1c1;

    border-radius: 18px;

    overflow: hidden;

    box-shadow:
        0 20px 45px rgba(51, 21, 15, .18);

    transition:
        transform .5s cubic-bezier(.2,.8,.2,1),
        box-shadow .5s ease;
}

.boleto-teatro:hover {
    transform: translateY(-6px);

    box-shadow:
        0 30px 60px rgba(51, 21, 15, .28);
}


/* =========================================================
   COLORES DE LOS BOLETOS
========================================================= */

.boleto-rojo {
    background: #e83c3e;
}

.boleto-azul {
    background: #4ea1d9;
    color: #33150f;
}


/* =========================================================
   PARTE PRINCIPAL
========================================================= */

.boleto-main {
    min-height: 230px;

    display: grid;

    grid-template-columns: 100px 1fr 130px;

    align-items: center;

    padding: 35px 45px;
}


/* número */

.boleto-number {
    font-family: Georgia, serif;

    font-size: 55px;

    opacity: .35;

    align-self: start;
}


/* contenido */

.boleto-content {
    padding: 0 30px;
}

.boleto-type {
    display: block;

    font-size: 10px;

    font-weight: 700;

    letter-spacing: .16em;

    margin-bottom: 12px;

    opacity: .7;
}

.boleto-content h3 {
    margin: 0;

    font-size: clamp(32px, 4vw, 55px);

    line-height: .9;

    letter-spacing: -.04em;
}

.boleto-content h3 span {
    font-family: Georgia, serif;
    font-style: italic;
    font-weight: 400;
}


/* =========================================================
   INFORMACIÓN
========================================================= */

.boleto-info {
    display: flex;

    gap: 35px;

    margin-top: 30px;
}

.boleto-info div {
    display: flex;
    flex-direction: column;

    gap: 5px;
}

.boleto-info small {
    font-size: 8px;

    letter-spacing: .16em;

    opacity: .6;
}

.boleto-info strong {
    font-size: 11px;
}


/* =========================================================
   FLECHA
========================================================= */

.boleto-arrow {
    display: flex;
    flex-direction: column;

    align-items: center;
    justify-content: center;

    gap: 8px;

    border-left: 1px solid rgba(239, 225, 193, .3);

    height: 100%;
}

.boleto-arrow span {
    width: 50px;
    height: 50px;

    border: 1px solid currentColor;

    border-radius: 50%;

    display: grid;
    place-items: center;

    font-size: 25px;

    transition:
        transform .4s ease,
        background .4s ease;
}

.boleto-teatro:hover .boleto-arrow span {
    transform: translateX(8px);
}

.boleto-arrow small {
    font-size: 8px;

    letter-spacing: .12em;

    opacity: .7;
}


/* =========================================================
   PERFORACIÓN
========================================================= */

.boleto-perforacion {
    position: relative;

    height: 1px;

    border-top: 2px dashed rgba(239, 225, 193, .45);
}


/*
   Círculos que simulan las perforaciones
*/

.boleto-perforacion::before,
.boleto-perforacion::after {
    content: "";

    position: absolute;

    top: 50%;

    width: 30px;
    height: 30px;

    background: #efe1c1;

    border-radius: 50%;

    transform: translateY(-50%);
}

.boleto-perforacion::before {
    left: -15px;
}

.boleto-perforacion::after {
    right: -15px;
}


/* =========================================================
   PARTE EXTRA
========================================================= */

.boleto-extra {
    display: grid;

    grid-template-columns: 42% 58%;

    max-height: 0;

    overflow: hidden;

    opacity: 0;

    transition:
        max-height .7s cubic-bezier(.2,.8,.2,1),
        opacity .45s ease;
}


/*
   AL PASAR EL CURSOR
*/

.boleto-teatro:hover .boleto-extra {
    max-height: 550px;

    opacity: 1;
}


/* =========================================================
   IMAGEN
========================================================= */

.boleto-image {
    position: relative;

    min-height: 390px;

    overflow: hidden;
}

.boleto-image img {
    width: 100%;
    height: 100%;

    object-fit: cover;

    display: block;

    filter: saturate(.9);

    transition:
        transform .8s cubic-bezier(.2,.8,.2,1);
}

.boleto-teatro:hover .boleto-image img {
    transform: scale(1.05);
}

.imagen-label {
    position: absolute;

    left: 20px;
    bottom: 20px;

    background: #33150f;

    color: #efe1c1;

    padding: 8px 12px;

    font-size: 8px;

    letter-spacing: .15em;
}


/* =========================================================
   INFORMACIÓN EXTRA
========================================================= */

.boleto-details {
    padding: 40px;

    display: grid;

    grid-template-columns: repeat(3, 1fr);

    gap: 25px;
}

.detalle-superior {
    display: flex;
    flex-direction: column;

    gap: 7px;
}

.detalle-superior span,
.detalle-sinopsis span,
.detalle-accesibilidad span {
    font-size: 8px;

    letter-spacing: .15em;

    opacity: .6;
}

.detalle-superior strong {
    font-size: 13px;
}


/* =========================================================
   SINOPSIS
========================================================= */

.detalle-sinopsis {
    grid-column: span 2;
}

.detalle-sinopsis p {
    font-size: 13px;

    line-height: 1.6;

    margin: 8px 0 0;
}


/* =========================================================
   ACCESIBILIDAD
========================================================= */

.detalle-accesibilidad {
    grid-column: span 1;
}

.detalle-accesibilidad p {
    font-size: 11px;

    line-height: 1.5;

    margin-top: 8px;
}


/* =========================================================
   BOTONES
========================================================= */

.boleto-actions {
    grid-column: 1 / -1;

    display: flex;

    gap: 12px;

    margin-top: 10px;
}

.btn-quiero-ir,
.btn-compartir-obra {

    padding: 13px 20px;

    border-radius: 50px;

    font-size: 9px;

    font-weight: 700;

    letter-spacing: .12em;

    cursor: pointer;

    transition:
        transform .3s ease,
        background .3s ease;
}

.btn-quiero-ir {
    border: 1px solid #efe1c1;

    background: #efe1c1;

    color: #33150f;
}

.btn-compartir-obra {
    border: 1px solid rgba(239,225,193,.5);

    background: transparent;

    color: #efe1c1;
}

.btn-quiero-ir:hover,
.btn-compartir-obra:hover {
    transform: translateY(-3px);
}

.btn-quiero-ir span {
    margin-left: 10px;
}


/* =========================================================
   FILTROS
========================================================= */

.boleto-teatro.oculto {
    display: none;
}


/* =========================================================
   RESPONSIVE
========================================================= */

@media (max-width: 850px) {

    .festiab-programacion {
        padding: 100px 5vw;
    }

    .boleto-main {
        grid-template-columns: 60px 1fr;
        padding: 30px;
    }

    .boleto-arrow {
        display: none;
    }

    .boleto-content {
        padding: 0 15px;
    }

    .boleto-info {
        flex-wrap: wrap;
        gap: 20px;
    }

    .boleto-extra {
        grid-template-columns: 1fr;
    }

    .boleto-image {
        min-height: 300px;
    }

    .boleto-details {
        grid-template-columns: 1fr 1fr;
        padding: 30px;
    }

    .detalle-sinopsis {
        grid-column: 1 / -1;
    }

    .detalle-accesibilidad {
        grid-column: 1 / -1;
    }

}


@media (max-width: 500px) {

    .programacion-header h2 {
        font-size: 44px;
    }

    .programacion-filtros {
        overflow-x: auto;
        padding-bottom: 8px;
    }

    .boleto-main {
        padding: 25px 20px;
    }

    .boleto-number {
        font-size: 38px;
    }

    .boleto-content {
        padding: 0 5px;
    }

    .boleto-content h3 {
        font-size: 31px;
    }

    .boleto-info {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .boleto-details {
        grid-template-columns: 1fr;
    }

    .boleto-actions {
        flex-direction: column;
    }

    .btn-quiero-ir,
    .btn-compartir-obra {
        width: 100%;
    }
}
