:root{--bg-deep: #0a0a0a;--bg-surface: #111111;--bg-surface-hover: #1a1a1a;--text-primary: #e8e8e8;--text-secondary: #888888;--text-muted: #555555;--accent: #8b0000;--accent-bright: #cc1100;--accent-glow: rgba(204, 17, 0, .3);--font-display: "Metal Mania", cursive;--font-heading: "Oswald", sans-serif;--font-mono: "IBM Plex Mono", monospace;--max-width: 720px;--card-radius: 2px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{border:none;background:none;cursor:pointer;font:inherit;color:inherit}body{background:var(--bg-deep);color:var(--text-primary);font-family:var(--font-mono);font-size:14px;line-height:1.6;min-height:100vh}::selection{background:var(--accent);color:var(--text-primary)}a:hover{color:var(--accent-bright)}h1,h2,h3{line-height:1.2}.site-header{text-align:center;padding:2.5rem 1rem 1.5rem;border-bottom:1px solid #1a1a1a}.site-logo{font-family:var(--font-display);font-size:3rem;color:var(--text-primary);text-shadow:0 0 10px rgba(139,0,0,.6),0 0 20px rgba(139,0,0,.3),0 0 40px rgba(139,0,0,.15);letter-spacing:2px}.site-logo a,.site-logo a:hover{color:inherit}.site-tagline{font-family:var(--font-mono);font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:3px;margin-top:.25rem}.site-main{max-width:var(--max-width);margin:0 auto;padding:1.5rem 1rem 3rem}.site-footer{text-align:center;padding:2rem 1rem;border-top:1px solid #1a1a1a;font-size:.7rem;color:var(--text-muted)}.site-footer .kofi-link{margin-top:.5rem}.site-footer a{color:var(--text-secondary);border-bottom:1px solid var(--text-muted)}.site-footer a:hover{color:var(--accent-bright)}.lang-switcher{margin-top:.75rem}.lang-btn{font-family:var(--font-mono);font-size:.7rem;color:var(--text-muted);background:none;border:none;cursor:pointer;padding:0}.lang-btn:hover{color:var(--text-secondary)}.lang-btn--active{color:var(--accent-bright)}.lang-separator{color:var(--text-muted)}.month-divider{display:flex;align-items:center;gap:1rem;margin:2rem 0 1rem}.month-divider:first-child{margin-top:0}.month-name{font-family:var(--font-display);font-size:1.6rem;color:var(--text-primary);white-space:nowrap;text-shadow:0 0 8px rgba(139,0,0,.4),0 0 16px rgba(139,0,0,.2)}.month-line{flex:1;height:1px;background:linear-gradient(to right,var(--accent),transparent)}.event-card{display:flex;gap:1rem;padding:.75rem;border-radius:var(--card-radius);background:var(--bg-surface);border:1px solid #1a1a1a;transition:background .2s,box-shadow .2s;margin-bottom:.5rem}.event-card:hover{background:var(--bg-surface-hover);box-shadow:0 0 15px var(--accent-glow)}.event-card-flyer{width:80px;height:80px;flex-shrink:0;overflow:hidden;border-radius:var(--card-radius);position:relative;background:#0d0d0d}.event-card-flyer img{width:100%;height:100%;object-fit:cover;filter:saturate(.7);transition:filter .2s}.event-card:hover .event-card-flyer img{filter:saturate(1)}.event-card-flyer-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:1.5rem;color:var(--text-muted)}.event-card-info{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:.15rem}.event-card-date{font-family:var(--font-mono);font-size:.75rem;font-weight:600;color:var(--accent);text-transform:uppercase}.event-card-title{font-family:var(--font-heading);font-weight:700;font-size:1rem;text-transform:uppercase;color:var(--text-primary);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-card-venue{font-size:.75rem;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-card-bands{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.25rem}.band-pill{font-size:.65rem;padding:.1rem .4rem;border:1px solid #333;border-radius:2px;color:var(--text-secondary);white-space:nowrap}.band-pill-more{color:var(--text-muted);border-color:transparent}.empty-state{text-align:center;padding:4rem 1rem;color:var(--text-muted);font-size:.9rem}.event-card{animation:card-in .3s ease-out both}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.city-filter{display:flex;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:.4rem;padding:1rem 0 1.25rem;position:relative}.city-filter::-webkit-scrollbar{display:none}.city-filter:after{content:"";position:sticky;right:0;flex-shrink:0;width:2rem;margin-left:-2rem;background:linear-gradient(to right,transparent,var(--bg-deep));pointer-events:none}.city-pill{font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:1px;padding:.3rem .75rem;border:1px solid #333;border-radius:2px;color:var(--text-secondary);background:transparent;white-space:nowrap;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.city-pill:hover{border-color:var(--accent);color:var(--text-primary)}.city-pill--active{border-color:var(--accent);color:var(--accent-bright);background:#8b00001f}@media(min-width:640px){.city-filter{flex-wrap:wrap;overflow-x:visible}.city-filter:after{display:none}.event-card-flyer{width:120px;height:120px}.event-card-title{font-size:1.15rem}}.modal-overlay{position:fixed;inset:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal-dialog{background:var(--bg-surface);border:1px solid #2a2a2a;border-radius:var(--card-radius);padding:2rem;width:100%;max-width:480px;position:relative}.modal-close{position:absolute;top:.75rem;right:.75rem;background:none;border:none;color:var(--text-muted);font-size:1.25rem;cursor:pointer;line-height:1;padding:.25rem}.modal-close:hover{color:var(--text-primary)}.modal-title{font-family:var(--font-heading);font-size:1rem;text-transform:uppercase;letter-spacing:2px;color:var(--text-primary);margin-bottom:1.5rem}.contact-form{display:flex;flex-direction:column;gap:1rem}.contact-label{display:flex;flex-direction:column;gap:.35rem;font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted)}.contact-input,.contact-textarea{font-family:var(--font-mono);font-size:.85rem;color:var(--text-primary);background:var(--bg-deep);border:1px solid #2a2a2a;border-radius:var(--card-radius);padding:.5rem .75rem;resize:vertical;transition:border-color .15s}.contact-input:focus,.contact-textarea:focus{outline:none;border-color:var(--accent)}.contact-submit{align-self:flex-end;font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:1px;color:var(--accent-bright);background:none;border:1px solid var(--accent);border-radius:var(--card-radius);padding:.4rem 1rem;cursor:pointer;transition:background .15s,color .15s}.contact-submit:hover:not(:disabled){background:#8b000033}.contact-submit:disabled{opacity:.5;cursor:default}.contact-success{font-family:var(--font-mono);font-size:.85rem;color:var(--text-secondary);text-align:center;padding:1rem 0}.contact-error{font-family:var(--font-mono);font-size:.7rem;color:var(--accent-bright)}.detail-back{display:inline-block;font-family:var(--font-mono);font-size:.8rem;color:var(--text-secondary);margin-bottom:1.5rem;transition:color .2s}.detail-back:hover{color:var(--accent-bright)}.detail-flyer{position:relative;margin-bottom:1.5rem;border-radius:var(--card-radius);overflow:hidden;background:#0d0d0d}.detail-flyer img{width:100%;max-height:50vh;object-fit:contain;display:block;margin:0 auto}.detail-flyer:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 50%,var(--bg-deep) 100%);pointer-events:none}.detail-title{font-family:var(--font-heading);font-size:2rem;color:var(--text-primary);text-shadow:0 0 10px rgba(139,0,0,.6),0 0 20px rgba(139,0,0,.3),0 0 40px rgba(139,0,0,.15);margin-bottom:.75rem;line-height:1.3}.detail-meta{font-family:var(--font-mono);font-size:.85rem;color:var(--text-secondary);margin-bottom:.25rem}.detail-meta-label{color:var(--text-muted)}.detail-date{color:var(--accent);font-weight:600}.detail-section{margin-top:2rem}.detail-section-title{font-family:var(--font-heading);font-size:.85rem;text-transform:uppercase;letter-spacing:2px;color:var(--text-muted);margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid #1a1a1a}.band-row{display:flex;align-items:center;gap:.5rem;padding:.4rem 0;border-bottom:1px solid #141414;font-size:.85rem}.band-row:last-child{border-bottom:none}.band-avatar{width:2rem;height:2rem;border-radius:50%;object-fit:cover;flex-shrink:0;filter:saturate(.8)}.band-flag{font-size:.85rem;margin-left:.6rem}.band-name{font-family:var(--font-heading);font-weight:500;font-size:.95rem;color:var(--text-primary);transition:color .2s}.band-name:hover{color:var(--accent)}.band-links-wrapper{position:relative;flex-shrink:0;display:flex;align-items:center;margin-left:auto}.band-links-trigger{background:none;border:none;padding:0;cursor:pointer;color:var(--text-muted);display:flex;align-items:center;transition:color .2s}.band-links-trigger:hover{color:var(--accent)}.band-links-trigger svg{width:1.25rem;height:1.25rem}.band-links-backdrop{display:none}.band-links-menu{position:absolute;top:calc(100% + .4rem);left:50%;transform:translate(-50%);background:var(--bg-surface);border:1px solid #333;border-radius:var(--card-radius);padding:.25rem 0;z-index:10;min-width:10rem;animation:band-links-fade-in .12s ease-out}@keyframes band-links-fade-in{0%{opacity:0;transform:translate(-50%) translateY(-4px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.band-links-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary);background:transparent;border:none;text-align:left;cursor:pointer;text-decoration:none;white-space:nowrap;transition:color .15s,background .15s}.band-links-item:hover{color:var(--text-primary);background:#ffffff0d}.band-links-item-icon{display:flex;align-items:center;flex-shrink:0}.band-links-item-icon svg{width:.85rem;height:.85rem}.band-info{flex:1;min-width:0}.band-genre{color:var(--text-muted);font-size:.75rem;display:block}.band-additional{font-size:.8rem;color:var(--text-muted);padding-top:.5rem;font-style:italic}.detail-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:2rem;justify-content:flex-end}.detail-action-btn{font-family:var(--font-mono);font-size:.8rem;color:var(--text-secondary);border:1px solid #333;padding:.5rem 1rem;border-radius:var(--card-radius);background:transparent;cursor:pointer;transition:border-color .2s,color .2s}.detail-action-btn:hover{border-color:var(--accent);color:var(--text-primary)}.calendar-menu-wrapper{position:relative}.calendar-menu{position:absolute;bottom:calc(100% + .4rem);left:0;background:var(--bg-surface);border:1px solid #333;border-radius:var(--card-radius);padding:.25rem 0;z-index:10;min-width:10rem}.calendar-menu-item{display:block;width:100%;padding:.5rem .75rem;font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary);background:transparent;border:none;text-align:left;cursor:pointer;text-decoration:none;transition:color .15s,background .15s}.calendar-menu-item:hover{color:var(--text-primary);background:#ffffff0d}.detail-action-icon{display:inline-block;width:1em;height:1em;vertical-align:-.125em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.detail-action-label{display:none}@media(max-width:639px){.band-links-backdrop{display:block;position:fixed;inset:0;background:#00000080;z-index:9}.band-links-menu{position:fixed;inset:auto 0 0;transform:none;border-radius:var(--card-radius) var(--card-radius) 0 0;padding:.5rem 0;padding-bottom:env(safe-area-inset-bottom,.5rem);min-width:unset;animation:band-links-slide-up .2s ease-out}@keyframes band-links-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}}@media(min-width:640px){.detail-title{font-size:2.5rem}.detail-actions{justify-content:flex-start}.detail-action-icon{display:none}.detail-action-label{display:inline}}.grain-overlay{position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.03}.grain-overlay svg{width:100%;height:100%}
