:root{
  --bg:#0b0a0d;
  --bg-panel:#17141a;
  --bg-panel-hover:#1e1a22;
  --border:#2b2530;
  --text:#f1ece3;
  --text-dim:#a89fae;
  --text-faint:#6e6577;
  --accent:#d44719;
  --accent-hover:#ef5b28;
  --accent-soot:#3a1f14;
  --teal:#4fb3c9;
  --sick:#4fb3c9;
  --radius:14px;
}

*{box-sizing:border-box;}

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:"Archivo",sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

::-webkit-scrollbar{width:10px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px;}
::-webkit-scrollbar-thumb:hover{background:var(--text-faint);}

html{scrollbar-color:var(--border) var(--bg);scrollbar-width:thin;}

.grain{
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:999;
  opacity:.05;
  mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%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");
}

/* Header */
.site-header{
  text-align:center;
  padding:64px 20px 28px;
  border-bottom:1px solid var(--border);
  background:
    radial-gradient(ellipse 80% 90% at 50% 0%, rgba(212,71,25,.2), transparent 70%),
    var(--bg);
}

.eyebrow{
  margin:0 0 18px;
  font-family:"Cinzel Decorative",serif;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  font-size:18px;
  color:var(--text);
}

.wordmark{
  margin:0;
  font-family:"Metal Mania",cursive;
  font-weight:400;
  font-size:clamp(44px,10vw,100px);
  line-height:1.05;
  letter-spacing:.02em;
  text-transform:uppercase;
  color:var(--teal);
  text-shadow:0 0 40px rgba(212,71,25,.35);
}

.wordmark span{
  display:block;
  font-family:"Cinzel",serif;
  font-weight:600;
  font-size:.24em;
  letter-spacing:.5em;
  text-transform:uppercase;
  color:var(--teal);
  margin:10px 0;
}

.dates{
  margin:18px 0 0;
  font-family:"Archivo Narrow",sans-serif;
  font-weight:600;
  letter-spacing:.15em;
  color:var(--text-dim);
  font-size:14px;
}

/* Tabs */
.install-banner{
  display:flex;
  align-items:center;
  justify-content:center;
  flex-wrap:wrap;
  gap:12px;
  padding:12px 20px;
  background:var(--accent-soot);
  border-bottom:1px solid var(--border);
  font-family:"Archivo Narrow",sans-serif;
  font-size:13px;
}

.install-banner[hidden]{display:none;}

.install-banner-text{color:var(--text-dim);}

.install-action{
  background:var(--accent);
  color:#fff;
  border:none;
  border-radius:999px;
  padding:7px 16px;
  font-family:"Archivo Narrow",sans-serif;
  font-weight:700;
  font-size:12px;
  letter-spacing:.04em;
  text-transform:uppercase;
  text-decoration:none;
  cursor:pointer;
}

.install-action:hover{background:var(--accent-hover);}

.install-hint{color:var(--text-faint);font-size:12px;}

.install-dismiss{
  background:transparent;
  border:none;
  color:var(--text-faint);
  font-size:18px;
  line-height:1;
  cursor:pointer;
  padding:4px 8px;
}

.install-dismiss:hover{color:var(--text);}

.tabs{
  display:flex;
  justify-content:center;
  gap:6px;
  flex-wrap:wrap;
  padding:22px 16px;
  position:sticky;
  top:0;
  z-index:50;
  background:rgba(11,10,13,.9);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);
  will-change:transform;
}

.tab-btn{
  font-family:"Archivo Narrow",sans-serif;
  font-weight:600;
  letter-spacing:.08em;
  text-transform:uppercase;
  font-size:13px;
  color:var(--text-dim);
  background:transparent;
  border:1px solid var(--border);
  border-radius:999px;
  padding:10px 20px;
  min-height:44px;
  display:inline-flex;
  align-items:center;
  cursor:pointer;
  transition:.15s ease;
}

.tab-btn:hover{
  color:var(--text);
  border-color:var(--text-faint);
}

.tab-btn.is-active{
  color:var(--bg);
  background:var(--accent);
  border-color:var(--accent);
}

.tickets-btn{
  font-family:"Archivo Narrow",sans-serif;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  font-size:13px;
  color:#fff;
  background:var(--accent);
  border:1px solid var(--accent);
  border-radius:999px;
  padding:10px 20px;
  min-height:44px;
  display:inline-flex;
  align-items:center;
  cursor:pointer;
  text-decoration:none;
  transition:.15s ease;
}

.tickets-btn:hover{
  background:var(--accent-hover);
  border-color:var(--accent-hover);
}

.tab-btn:focus-visible,.ticket:focus-visible,.filter-chip:focus-visible{
  outline:2px solid var(--accent-hover);
  outline-offset:2px;
}

main{max-width:1080px;margin:0 auto;padding:8px 20px 80px;}

.view{display:none;}
.view.is-active{display:block;}

.loading{
  text-align:center;
  color:var(--text-faint);
  font-family:"Archivo Narrow",sans-serif;
  letter-spacing:.06em;
  padding:60px 0;
}

/* Day filter */
.day-filter{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  justify-content:center;
  padding:24px 0 8px;
}

.filter-chip{
  font-family:"Archivo Narrow",sans-serif;
  font-weight:600;
  font-size:13px;
  letter-spacing:.04em;
  color:var(--text-dim);
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:8px;
  padding:8px 16px;
  cursor:pointer;
}

.filter-chip.is-active{
  color:var(--text);
  border-color:var(--accent);
  background:var(--accent-soot);
}

/* Day divider — ticket-stub signature element */
.day-divider{
  display:flex;
  align-items:center;
  gap:14px;
  margin:40px 0 20px;
  position:sticky;
  top:var(--tabs-height, 89px);
  z-index:40;
  background:var(--bg);
  padding:8px 0;
  will-change:transform;
}

.day-divider:first-child{margin-top:24px;}

.day-divider .stub{
  font-family:"Cinzel",serif;
  font-weight:600;
  font-size:20px;
  letter-spacing:.03em;
  text-transform:uppercase;
  color:var(--bg);
  background:var(--accent);
  padding:8px 18px;
  border-radius:6px;
  position:relative;
  white-space:nowrap;
}

.day-divider .stub::before,
.day-divider .stub::after{
  content:"";
  position:absolute;
  top:50%;
  width:10px;
  height:10px;
  background:var(--bg);
  border-radius:50%;
  transform:translateY(-50%);
}

.day-divider .stub::before{left:-5px;}
.day-divider .stub::after{right:-5px;}

.day-divider .rule{
  flex:1;
  height:0;
  border-top:1px dashed var(--border);
}

/* Event card */
.schedule-list{padding-bottom:20px;}

.card{
  display:flex;
  gap:22px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:20px;
  margin-bottom:16px;
  transition:.15s ease;
  cursor:pointer;
}

.card:hover{
  border-color:var(--accent);
  background:var(--bg-panel-hover);
  transform:translateY(-2px);
}

.poster{
  width:120px;
  min-width:120px;
  height:170px;
  background:linear-gradient(160deg,#232028,#151217);
  border-radius:8px;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--text-faint);
  font-family:"Archivo Narrow",sans-serif;
  font-size:11px;
  text-align:center;
  padding:8px;
}

.poster-grid{
  width:100%;
  height:100%;
  display:grid;
  gap:2px;
}

.poster-grid.count-2{
  grid-template-columns:1fr 1fr;
  grid-template-rows:1fr;
}

.poster-grid.count-3{
  grid-template-columns:1fr 1fr;
  grid-template-rows:1fr 1fr;
}

.poster-grid.count-3 img:first-child{
  grid-row:1 / 3;
}

.poster-grid.count-4{
  grid-template-columns:1fr 1fr;
  grid-template-rows:1fr 1fr;
}

.poster-grid img{
  width:100%;
  height:100%;
  min-width:0;
  min-height:0;
  object-fit:cover;
  display:block;
}

.modal-poster-grid{
  width:100%;
  display:flex !important;
  grid-template-columns:none !important;
  grid-template-rows:none !important;
  gap:2px;
  border-radius:10px;
  overflow:hidden;
  margin-bottom:18px;
}

.modal-poster-grid img{
  flex:1;
  min-width:0;
  aspect-ratio:2/3;
  grid-row:auto !important;
}

.poster img{width:100%;height:100%;object-fit:cover;display:block;}

.card .poster > img{object-fit:contain;}

.card-body{flex:1;min-width:0;}

.card-top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  flex-wrap:wrap;
}

.card-top-right{
  display:flex;
  align-items:center;
  gap:10px;
}

.fav-btn{
  background:transparent;
  border:none;
  color:var(--text-faint);
  font-size:22px;
  line-height:1;
  cursor:pointer;
  padding:8px;
  min-width:44px;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:.15s ease;
}

.fav-btn:hover{color:var(--accent-hover);}

.fav-btn.is-favorited{color:var(--accent);}

.fav-count-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:18px;
  height:18px;
  padding:0 5px;
  margin-left:6px;
  background:var(--accent);
  color:#fff;
  border-radius:999px;
  font-size:11px;
  font-weight:700;
}

.fav-count-badge[hidden]{display:none;}

.modal-title-row{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding-right:44px;
}

.modal-title-row h2{margin:0;}

.modal-title-row .fav-btn{margin-top:-8px;}

.my-schedule-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:center;
  padding:24px 0 8px;
}

.my-schedule-actions[hidden]{display:none;}

.export-btn{
  margin-top:0;
}

.export-btn-outline{
  background:transparent;
  border:1px solid var(--accent);
  color:var(--accent);
}

.export-btn-outline:hover{background:var(--accent-soot);}

.export-btn:disabled{opacity:.6;cursor:default;}

.card-time{
  font-family:"Archivo Narrow",sans-serif;
  font-weight:600;
  letter-spacing:.05em;
  color:var(--accent);
  font-size:17px;
  white-space:nowrap;
  padding-top:4px;
}

.card h2, .card h3{
  margin:0 0 6px;
  font-family:"Cinzel",serif;
  font-weight:600;
  font-size:22px;
  letter-spacing:.01em;
  text-transform:uppercase;
  color:var(--text);
}

.tag{
  display:inline-block;
  font-family:"Archivo Narrow",sans-serif;
  font-weight:600;
  font-size:11px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--sick);
  border:1px solid rgba(79,179,201,.4);
  border-radius:999px;
  padding:3px 10px;
  margin:2px 6px 8px 0;
}

.meta{
  color:var(--text-dim);
  font-size:14px;
  line-height:1.7;
  margin:0 0 10px;
}

.meta b{color:var(--text);font-weight:600;}

.guest-names{
  color:var(--text);
  font-weight:600;
  font-style:italic;
}

.guest-role{
  color:var(--teal);
  font-size:10px;
  font-style:normal;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  vertical-align:middle;
  margin-left:2px;
}

.desc{
  color:#cfc7d6;
  font-size:14px;
  line-height:1.6;
  margin:0;
}

.premiere-label{
  color:var(--teal);
  font-family:"Cinzel",serif;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:13px;
}

.ticket{
  display:inline-block;
  margin-top:14px;
  background:var(--accent);
  color:#fff;
  padding:10px 18px;
  border-radius:8px;
  text-decoration:none;
  font-weight:700;
  font-family:"Archivo Narrow",sans-serif;
  letter-spacing:.04em;
  font-size:13px;
  text-transform:uppercase;
}

.ticket:hover{background:var(--accent-hover);}

.ticket-outline{
  background:transparent;
  border:1px solid var(--accent);
  color:var(--accent);
  margin-left:10px;
}

.ticket-outline:hover{background:var(--accent-soot);color:var(--accent-hover);}

.tap-hint{
  display:block;
  margin-top:14px;
  font-family:"Archivo Narrow",sans-serif;
  font-weight:600;
  letter-spacing:.06em;
  text-transform:uppercase;
  font-size:12px;
  color:var(--teal);
}

/* Grids for films/guests/venues */
.card-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:20px;
  padding:24px 0;
}

.grid-card{
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  overflow:hidden;
  cursor:pointer;
  transition:.15s ease;
}

.grid-card:hover{border-color:var(--accent);transform:translateY(-2px);}

.grid-card .poster{width:100%;aspect-ratio:2/3;height:auto;border-radius:0;position:relative;}

.film-fav-btn{
  position:absolute;
  top:6px;
  right:6px;
  background:rgba(11,10,13,.65);
  border-radius:50%;
  min-width:36px;
  min-height:36px;
  backdrop-filter:blur(2px);
}

.fav-btn:disabled{
  opacity:.35;
  cursor:default;
}

.fav-btn:disabled:hover{color:var(--text-faint);}

.grid-card .body{padding:16px;}

.grid-card h3{font-size:17px;margin:0 0 4px;}

.grid-card .meta{margin:0;font-size:13px;}

.guests-grid .grid-card .poster{aspect-ratio:4/5;height:auto;}
.venues-grid .grid-card .poster{aspect-ratio:3/2;height:auto;}

/* Modal */
.modal-backdrop{
  display:none;
  position:fixed;
  inset:0;
  background:rgba(6,5,7,.8);
  backdrop-filter:blur(3px);
  z-index:200;
  padding:24px;
  overflow-y:auto;
}

.modal-backdrop.is-open{display:flex;align-items:flex-start;justify-content:center;}

.modal{
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  max-width:640px;
  width:100%;
  margin-top:40px;
  padding:28px;
  position:relative;
}

.modal .close-btn{
  position:absolute;
  top:16px;
  right:16px;
  background:rgba(11,10,13,.75);
  backdrop-filter:blur(3px);
  border:1px solid rgba(255,255,255,.25);
  color:var(--text);
  border-radius:8px;
  width:32px;
  height:32px;
  cursor:pointer;
  font-size:16px;
  box-shadow:0 2px 6px rgba(0,0,0,.35);
}

.modal .close-btn:hover{color:var(--accent-hover);border-color:rgba(255,255,255,.4);}

.modal .back-btn{
  position:absolute;
  top:16px;
  left:16px;
  background:rgba(11,10,13,.75);
  backdrop-filter:blur(3px);
  border:1px solid rgba(255,255,255,.25);
  color:var(--text);
  border-radius:8px;
  width:32px;
  height:32px;
  cursor:pointer;
  font-size:16px;
  box-shadow:0 2px 6px rgba(0,0,0,.35);
  z-index:1;
}

.modal .back-btn:hover{color:var(--accent-hover);border-color:rgba(255,255,255,.4);}

.modal .modal-poster{
  width:100%;
  max-height:360px;
  object-fit:cover;
  border-radius:10px;
  margin-bottom:18px;
}

.modal h2{
  font-family:"Cinzel",serif;
  font-weight:600;
  font-size:28px;
  text-transform:uppercase;
  margin:0 0 10px;
}

.modal .meta{margin-bottom:14px;}

.voting-block{
  margin-top:18px;
  padding-top:18px;
  border-top:1px solid var(--border);
}

.voting-heading{
  font-family:"Cinzel",serif;
  font-weight:600;
  font-size:15px;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--text);
  margin:0 0 8px;
}

.vote-average{
  color:var(--text-dim);
  font-size:14px;
  margin:0 0 12px;
}

.star-row{
  display:flex;
  flex-direction:row-reverse;
  justify-content:flex-end;
  gap:4px;
  margin-bottom:8px;
}

.star-btn{
  background:transparent;
  border:none;
  color:var(--text-faint);
  font-size:30px;
  line-height:1;
  cursor:pointer;
  padding:6px;
  min-width:44px;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:.1s ease;
}

@media (hover:hover) and (pointer:fine){
  .star-btn:hover,
  .star-btn:hover ~ .star-btn{
    color:var(--accent-hover);
  }
}

.star-btn.is-filled{color:var(--accent);}

.star-static{
  font-size:22px;
  color:var(--text-faint);
  line-height:1;
}

.star-static.is-filled{color:var(--accent);}

.vote-prompt,.vote-thanks,.vote-locked{
  color:var(--text-faint);
  font-size:13px;
  margin:0;
}

.vote-thanks{color:var(--sick);}

.remove-vote-btn{
  background:transparent;
  border:none;
  color:var(--text-faint);
  text-decoration:underline;
  font-size:13px;
  cursor:pointer;
  padding:0;
  margin-left:4px;
}

.remove-vote-btn:hover{color:var(--accent-hover);}

.block-films{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin:14px 0;
}

.block-film-item{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:12px 14px;
  background:var(--bg-panel-hover);
  border:1px solid var(--border);
  border-radius:10px;
  cursor:pointer;
  transition:.15s ease;
}

.block-film-item:hover{border-color:var(--accent);}

.block-film-title{
  font-family:"Cinzel",serif;
  font-weight:600;
  font-size:15px;
  color:var(--text);
}

.block-film-meta{
  font-size:12px;
  color:var(--text-dim);
  white-space:nowrap;
}

.empty-state{
  text-align:center;
  color:var(--text-faint);
  padding:60px 20px;
  font-family:"Archivo Narrow",sans-serif;
}

.site-footer{
  text-align:center;
  padding:30px 20px 50px;
  color:var(--text-faint);
  font-family:"Archivo Narrow",sans-serif;
  font-size:12px;
  letter-spacing:.05em;
  border-top:1px solid var(--border);
}

@media (max-width:640px){
  .card{flex-direction:column;}
  .poster{width:100%;height:220px;font-size:13px;}
  .card-time{padding-top:0;}
  .tag{font-size:12px;}
  .wordmark span{font-size:.28em;}
  .filter-chip{min-height:40px;display:inline-flex;align-items:center;}
  .block-film-item{flex-direction:column;align-items:flex-start;gap:4px;min-height:44px;justify-content:center;}
  .block-film-meta{white-space:normal;}
  .day-divider{gap:10px;}
  .day-divider .stub{
    font-size:15px;
    padding:7px 12px;
    letter-spacing:.01em;
    white-space:normal;
    max-width:calc(100vw - 90px);
  }
}

@media (prefers-reduced-motion:reduce){
  .card,.grid-card,.tab-btn{transition:none;}
}

@media print{
  .view:not(#view-myschedule){display:none !important;}
  .grain,.tabs,.site-footer,.modal-backdrop,.my-schedule-actions,.day-filter{display:none !important;}

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

  .site-header{background:none;padding:16px 0;border-bottom:1px solid #ccc;}
  .eyebrow{color:#111;}
  .wordmark{color:#111;text-shadow:none;}
  .wordmark span{color:#111;}
  .dates{color:#333;}

  .day-divider{position:static;background:#fff;}
  .day-divider .stub{background:#111;color:#fff;}
  .day-divider .rule{border-color:#999;}

  .card{
    background:#fff;
    border:1px solid #999;
    page-break-inside:avoid;
    break-inside:avoid;
  }
  .card:hover{transform:none;border-color:#999;}

  .meta{color:#222;}
  .meta b{color:#000;}
  .desc{color:#333;}
  .guest-names{color:#000;}
  .guest-role{color:#444;}
  .tag{color:#111;border-color:#111;}
  .premiere-label{color:#111;}
  .card-time{color:#111;}

  .card h2,.card h3,.modal h2,.block-film-title{color:#000;}
  .poster{background:#eee;color:#555;}
  .block-film-item{background:#f7f7f7;border-color:#999;}
  .fav-btn,.ticket{display:none;}
}
