:root { --navy:#082d66; --blue:#1459a3; --gold:#f4d000; --ink:#12233f; --soft:#f4f7fb; --green:#16845b; }
body { min-height:100vh; color:var(--ink); background:#fff; overflow-x:hidden; }
a { color:var(--blue); }
.institutional-navbar { background:var(--navy); border-bottom:3px solid var(--gold); }
.navbar-brand small { font-size:.68rem; opacity:.78; letter-spacing:.06em; text-transform:uppercase; }
.hero-section { position:relative; color:#fff; background:linear-gradient(135deg, #082d66, #1459a3); overflow:hidden; }
.hero-section .carousel,.hero-section .carousel-inner,.hero-section .carousel-item { min-height:620px; }
.hero-slide-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.hero-overlay { position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,rgba(3,24,59,.96) 0%,rgba(4,37,79,.86) 48%,rgba(4,37,79,.45) 100%); }
.hero-content { position:absolute; z-index:2; inset:0; display:flex; align-items:center; pointer-events:none; }
.hero-content .row { width:100%; }
.hero-content a { pointer-events:auto; }
.hero-logos { display:flex; align-items:center; justify-content:center; gap:.8rem; margin-left:auto; width:max-content; max-width:100%; padding:.8rem; border:1px solid rgba(255,255,255,.22); border-radius:1rem; background:rgba(255,255,255,.12); backdrop-filter:blur(10px); }
.hero-logos img:first-child { width:88px; height:88px; object-fit:contain; background:#fff; border-radius:.65rem; }
.hero-logos img:last-child { width:145px; }
.hero-section .carousel-control-prev,.hero-section .carousel-control-next { z-index:3; width:5%; }
.hero-section .carousel-indicators { z-index:3; }
.eyebrow,.section-kicker { color:var(--gold); font-size:.76rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.section-kicker { color:var(--blue); }
.btn-gold { background:var(--gold); border-color:var(--gold); color:#17223b; font-weight:700; }
.btn-gold:hover { background:#ffe648; border-color:#ffe648; color:#17223b; }
.section-space { padding-top:5rem; padding-bottom:5rem; }
.soft-section { background:var(--soft); }
.empty-state { padding:2rem; border:1px dashed #bac8da; border-radius:1rem; color:#627089; background:#fff; }
.process-card,.event-card { height:100%; padding:1.25rem; background:#fff; border:1px solid #e2e9f2; border-radius:1rem; transition:transform .18s ease, box-shadow .18s ease; }
.process-card { position:relative; overflow:hidden; }
.process-card::after { position:absolute; right:-1.5rem; bottom:-2.5rem; width:6rem; height:6rem; content:""; border-radius:50%; background:#edf3fb; }
.process-card span { color:var(--blue); font-weight:800; letter-spacing:.08em; }
.process-card p { color:#64748b; margin-bottom:0; }
.event-card { position:relative; display:flex; flex-direction:column; }
.event-card:hover { transform:translateY(-4px); box-shadow:0 .75rem 1.5rem rgba(8,45,102,.1); }
.event-card-image,.event-hero-image { width:100%; object-fit:cover; border-radius:.75rem; background:#dfe8f4; }
.event-card-image { height:180px; }
.event-image-fallback { display:grid; place-items:center; color:#4a6386; background:linear-gradient(135deg,#dfe8f4,#f5f8fc); font-weight:700; }
.badge-soft { padding:.45rem .65rem; color:var(--navy); background:#e4edf8; border-radius:20rem; font-size:.72rem; font-weight:700; }
.badge-free { color:#0b6847; background:#e0f4eb; }
.badge-paid { color:#765900; background:#fff5c4; }
.event-meta { color:#526783; font-size:.86rem; }
.event-summary { font-size:.94rem; }
.event-link { font-size:.86rem; font-weight:700; }
.registration-state { color:#65758b; font-size:.76rem; font-weight:700; }
.registration-state.is-open { color:#0b6847; }
.public-page-hero,.event-detail-head { padding:4rem 0; color:#fff; background:linear-gradient(115deg,#082d66,#1459a3); }
.public-page-hero .section-kicker { color:var(--gold); }
.public-page-hero .lead { max-width:760px; margin-bottom:0; color:#dbeafe; }
.event-filters { padding:.85rem; border:1px solid #e2e9f2; border-radius:.9rem; background:#fff; }
.event-hero-image { max-height:520px; }
.event-info-card { position:sticky; top:6rem; }
.practical-item { display:flex; flex-direction:column; gap:.2rem; padding:.8rem 0; border-bottom:1px solid #e6edf6; }
.practical-item span { color:#526783; }
.digital-ticket { height:100%; padding:1.25rem; text-align:center; border:1px solid #dce6f2; border-top:4px solid var(--gold); border-radius:1rem; background:#fff; box-shadow:0 .5rem 1.5rem rgba(8,45,102,.08); }
.ticket-type { color:var(--blue); font-size:.78rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.ticket-qr { display:block; width:190px; max-width:100%; margin:1rem auto; }
.ticket-code { margin-bottom:0; color:var(--navy); font-size:.84rem; font-weight:800; letter-spacing:.06em; }
.scanner-frame { min-height:280px; overflow:hidden; border:1px solid #dce6f2; border-radius:.75rem; background:#f4f7fb; }
.admin-body { min-height:100vh; background:#f3f6fb; }
.admin-topbar { position:sticky; top:0; z-index:1030; min-height:68px; padding:.8rem 0; color:#fff; background:var(--navy); border-bottom:3px solid var(--gold); }
.admin-brand,.admin-profile-link { display:flex; align-items:center; gap:.7rem; color:#fff; text-decoration:none; }
.admin-brand img { object-fit:contain; border-radius:.45rem; background:#fff; }
.admin-brand small { display:block; color:#cbd8ea; font-size:.64rem; letter-spacing:.08em; text-transform:uppercase; }
.admin-shell { display:grid; grid-template-columns:240px minmax(0,1fr); min-height:calc(100vh - 68px); }
.admin-sidebar { padding:1.25rem 1rem; color:#d8e4f4; background:#071f48; }
.admin-nav { display:flex; flex-direction:column; gap:.3rem; }
.admin-nav a { padding:.68rem .8rem; color:#d8e4f4; border-radius:.65rem; text-decoration:none; font-size:.92rem; font-weight:600; }
.admin-nav a:hover,.admin-nav a.is-active { color:#fff; background:rgba(255,255,255,.11); }
.admin-sidebar-footer { padding-top:1rem; margin-top:1rem; border-top:1px solid rgba(255,255,255,.14); }
.admin-main { min-width:0; padding:1.5rem; }
.admin-page-header { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; margin-bottom:1.5rem; }
.admin-page-header h1 { margin:.2rem 0; font-size:1.75rem; }
.admin-page-header p { margin:0; color:#64748b; }
.admin-kicker { color:var(--blue); font-size:.68rem; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.admin-card,.stat-card,.form-section { overflow:hidden; border:1px solid #e1e8f2; border-radius:.9rem; background:#fff; box-shadow:0 .35rem 1rem rgba(23,48,83,.05); }
.stat-card { height:100%; padding:1.15rem; }
.stat-card p { margin-bottom:.45rem; color:#64748b; font-size:.78rem; font-weight:700; }
.stat-card strong { color:var(--navy); font-size:1.55rem; }
.admin-card-header { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem 1.1rem; border-bottom:1px solid #e8eef6; }
.admin-card-header h2 { margin:.15rem 0 0; font-size:1.05rem; }
.admin-table > :not(caption) > * > * { padding:.85rem 1rem; vertical-align:middle; border-color:#e8eef6; }
.admin-table thead th { color:#64748b; background:#f8fafc; font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; }
.admin-list-item { display:flex; justify-content:space-between; align-items:center; gap:.75rem; padding:.85rem 1.1rem; color:var(--ink); border-bottom:1px solid #edf1f6; text-decoration:none; }
.admin-list-item:last-child { border-bottom:0; }
.admin-list-item small { display:block; margin-top:.2rem; color:#64748b; }
.admin-empty-state { padding:1rem 1.1rem; margin:0; color:#64748b; }
.status-badge,.ticket-badge { display:inline-flex; align-items:center; width:max-content; max-width:100%; padding:.32rem .55rem; border-radius:999px; font-size:.72rem; font-weight:800; }
.status-draft,.status-pending { color:#765900; background:#fff5c4; }
.status-published,.status-confirmed,.status-valid,.status-paid,.status-not_required { color:#0b6847; background:#e0f4eb; }
.status-used,.status-present { color:#164e8d; background:#e2eefb; }
.status-cancelled,.status-failed { color:#a22929; background:#fde8e8; }
.status-absent,.status-archived { color:#526173; background:#e8edf3; }
.ticket-badge-standard { color:#164e8d; background:#e2eefb; }
.ticket-badge-vip { color:#725700; background:#fff2b5; }
.ticket-vip-note { width:max-content; padding:.25rem .55rem; margin-bottom:0; color:#725700; border:1px solid #e1c34a; border-radius:999px; background:#fffaf0; font-size:.7rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.ticket-category-option { display:flex; justify-content:space-between; align-items:center; gap:1rem; height:100%; padding:1rem; border:1px solid #e1e8f2; border-radius:.9rem; background:#fff; }
.ticket-category-option small,.ticket-category-option span { display:block; color:#64748b; font-size:.85rem; }
.ticket-category-option input { max-width:96px; }
.form-section { padding:1.1rem; margin-bottom:1rem; }
.form-section h2 { margin-bottom:1rem; font-size:1rem; }
.digital-ticket.ticket-standard { border-top-color:var(--blue); }
.digital-ticket.ticket-vip { border-color:#e1c34a; border-top-color:#c59b00; background:linear-gradient(145deg,#fff,#fffaf0); }
.ticket-detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.6rem; margin-top:1rem; text-align:left; }
.ticket-detail-grid span { display:block; color:#64748b; font-size:.72rem; }
.scanner-card { max-width:640px; margin:auto; }
.scanner-frame { min-height:320px; }
.cta-panel { display:flex; justify-content:space-between; align-items:center; gap:2rem; padding:2rem; color:#fff; background:var(--navy); border-radius:1.25rem; }
.site-footer { color:#d9e6f6; background:#061f47; }
.site-footer a { display:block; margin-bottom:.35rem; color:#d9e6f6; text-decoration:none; font-size:.9rem; }
.cookie-banner { position:fixed; z-index:1100; right:1rem; bottom:1rem; max-width:430px; padding:1rem; color:#fff; background:#082d66; border:1px solid rgba(255,255,255,.3); border-radius:1rem; }
.content-page { max-width:880px; }
.card { border-radius:1rem; }
dt { color:#6c757d; font-size:.875rem; }
@media (max-width:767px) {
  .hero-section .carousel,.hero-section .carousel-inner,.hero-section .carousel-item{min-height:610px}
  .hero-overlay{background:linear-gradient(90deg,rgba(3,24,59,.96),rgba(4,37,79,.8))}
  .hero-content{padding:2.75rem 1rem 3.5rem}
  .hero-content .lead{font-size:1.05rem}
  .hero-section .carousel-control-prev,.hero-section .carousel-control-next{display:none}
  .section-space{padding-top:3.5rem;padding-bottom:3.5rem}
  .public-page-hero,.event-detail-head{padding:3rem 0}
  .cta-panel{display:block}.cta-panel .btn{margin-top:1rem}
  .cookie-banner{left:1rem}
  .display-4{font-size:2.45rem}
  .admin-main{padding:1rem}
  .admin-page-header{display:block}.admin-page-header .btn{width:100%;margin-top:1rem}
  .ticket-detail-grid{grid-template-columns:1fr}
}
@media (max-width:991px) {
  .admin-shell{display:block}
  .admin-sidebar{position:sticky;top:68px;z-index:1020}
}
@media print {
  .institutional-navbar,.site-footer,.cookie-banner,.print-hide{display:none!important}
  .section-space{padding:1rem 0}
  .digital-ticket{break-inside:avoid;box-shadow:none}
}
