.concert-details{background:var(--surface);flex-direction:column;gap:2rem;max-width:1200px;margin:1rem auto;padding:2rem;display:flex}.concert-title{color:var(--color-text);text-align:center;min-height:42px;font-size:3.5rem;line-height:1.2;position:relative}.concert-content{grid-template-columns:1fr 1fr;align-items:start;gap:2rem;display:grid}.detail-image{aspect-ratio:1;width:100%;max-width:100%;top:calc(var(--space-16) + 85px);border-radius:12px;align-self:start;position:sticky;overflow:hidden}.detail-image .square-container{border-radius:inherit;width:100%;height:100%;position:absolute;top:0;left:0}.detail-image .concert-card__placeholder{z-index:2;visibility:hidden;opacity:0;pointer-events:none;justify-content:center;align-items:center;transition:opacity .24s,visibility .24s;display:block;position:absolute;inset:0}.detail-image .concert-card__placeholder.visible{visibility:visible;opacity:1;pointer-events:auto}.detail-image img{width:100%;height:100%;display:block}.detail-placeholder{visibility:hidden;opacity:0;pointer-events:none;background:#222;border-radius:6px;transition:opacity .24s,visibility .24s;display:block}.detail-placeholder.loading{background:linear-gradient(110deg,#2a2a2a 8%,#3a3a3a 18%,#2a2a2a 33%) 0 0/200% 100%;animation:1.5s linear infinite shimmer}.detail-placeholder.visible{visibility:visible;opacity:1;pointer-events:auto}#concertTitlePlaceholder.detail-placeholder{position:absolute;top:0;left:0;width:100%!important;height:100%!important}#concertTitleText{display:block}#detailVenuePlaceholder{display:none}#detailVenuePlaceholder.visible{display:block}.detail-placeholder:not(.visible){width:0!important;height:0!important;margin:0!important;padding:0!important;display:none!important}.detail-info{flex-direction:column;gap:1.5rem;display:flex}.detail-artists{color:var(--color-text);flex-direction:column;font-size:1.5rem;font-weight:500;line-height:1.6;display:flex}.artist-link{color:var(--color-text);align-items:center;text-decoration:none;transition:color .2s;display:inline-flex}.artist-link:hover{color:var(--color-primary)}.artist-link-icon{fill:currentColor;flex-shrink:0;width:16px;height:16px;margin-left:6px}.artist-name{color:var(--color-text)}.artist-divider{vertical-align:middle;opacity:.6;width:100%;height:2px;color:var(--color-text-secondary);background-color:currentColor;display:inline-block}.detail-section{flex-direction:column;gap:1rem;display:flex}.detail-tag-block{align-items:center;gap:.5rem;display:flex}.detail-tag-block .tag-group{align-items:center;gap:.5rem;min-width:100px;display:flex}.detail-tag-block .city-group{align-items:center;gap:.5rem;display:flex}.detail-tag-block .tag-icon{width:20px;height:20px;fill:var(--color-primary);flex-shrink:0}.detail-tag-block .tag-text{color:var(--color-primary);font-size:1rem;font-weight:600}.detail-tag-block .tag-item{color:var(--color-primary);cursor:pointer;font-weight:600;text-decoration:none;transition:color .2s,opacity .2s}.detail-tag-block .tag-item:hover{color:var(--color-primary-hover);opacity:.9}.detail-item{flex-wrap:wrap;flex:calc(50% - 12px);align-items:baseline;gap:.5rem;display:flex}.detail-item.price-item{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:16px 8px}.price-info{flex-wrap:wrap;flex:auto;align-items:baseline;gap:.5rem;min-width:0;display:flex}.price-tickets{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:flex}@media (width<=640px){.detail-item.price-item{flex-direction:column;align-items:flex-start;gap:10px}.price-tickets{justify-content:flex-start;width:100%;margin-left:0}.price-tickets .ticket-link{flex:auto;min-width:max-content}}.ticket-link{background:var(--color-primary);color:var(--color-btn-primary-text);border-color:var(--color-primary)}.ticket-link:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:var(--color-btn-primary-text)}.detail-label{color:var(--color-text-secondary);min-width:100px;font-weight:500}.detail-genres-list{flex-wrap:wrap;gap:3px;display:flex}.detail-value{color:var(--color-text)}.detail-description{color:var(--color-text-secondary);line-height:1.6;font-size:var(--font-size-base)}.detail-description .ql-size-small{font-size:var(--font-size-sm)}.detail-description .ql-size-large{font-size:var(--font-size-3xl)}.detail-description .ql-size-huge{font-size:var(--font-size-4xl)}.media-embeds{flex-direction:column;gap:16px;margin-top:16px;display:flex}.media-embeds iframe{border:none;border-radius:12px;box-shadow:0 2px 8px #0000001a}.social-links{margin-top:16px}.social-links-wrapper{flex-wrap:wrap;gap:8px;display:flex}.detail-actions{gap:1rem;margin-top:2rem;display:flex}.detail-link{color:var(--color-btn-primary-text);background:linear-gradient(135deg, var(--color-primary), var(--color-primary-hover));border:none;border-radius:8px;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:1.1rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.detail-link.primary{color:var(--color-btn-primary-text);background:linear-gradient(135deg, var(--color-primary), var(--color-primary-hover));border:none;font-size:1.1rem}.detail-link.primary:hover{background:linear-gradient(303deg, var(--color-primary-hover), var(--color-primary));transform:translateY(-2px);box-shadow:0 0 20px 2px #899e95bd}.detail-link:not(.primary):hover{color:var(--color-btn-primary-text);background:linear-gradient(303deg, var(--color-primary-hover), var(--color-primary));transform:translateY(-2px);box-shadow:0 0 20px 2px #899e95bd}.detail-link:hover{background:var(--color-primary-active)}.empty-state{text-align:center;max-width:400px;margin:2rem auto;padding:4rem 1rem}.empty-icon{margin-bottom:1rem;font-size:4rem}@media (width>=481px) and (width<=767px){.concert-content{grid-template-columns:1fr}}@media (width<=480px){.concert-content{grid-template-columns:1fr}.concert-title{text-align:center;font-size:1.5rem}}@media (width<=768px){.concert-details{gap:1.5rem;padding:1.5rem 1.25rem}.concert-title{padding:0 .25rem;font-size:clamp(1.6rem,7vw,2.2rem);line-height:1.25}.concert-content{flex-direction:column;gap:1.75rem;display:flex}.detail-image{order:1}.detail-info{order:2}.detail-image{aspect-ratio:1;max-width:100%;margin:0 auto;position:relative;top:auto}.detail-info{gap:1.25rem;width:100%}.detail-section{flex-direction:column;gap:.75rem}.detail-item{flex:100%}.detail-label .tag-group{min-width:80px}.detail-actions{flex-wrap:wrap}.detail-link{text-align:center;flex:100%}#concertTitlePlaceholder.detail-placeholder{height:42px!important}}@media (width<=480px){.concert-details{padding:1.25rem 1rem}.concert-title{font-size:clamp(1.4rem,8vw,2rem)}.detail-actions{gap:.75rem}.concert-heart{width:44px;height:44px;font-size:22px}}#concertPageHeart{z-index:5;justify-content:center;align-items:center;position:absolute;bottom:8px;right:8px}.hero-bg-wrapper{z-index:0;height:420px;max-height:100vh;position:absolute;top:0;left:0;right:0;overflow:hidden}.hero-bg-layer{background:var(--color-background);filter:blur(18px)saturate(120%);opacity:.25;pointer-events:none;background-position:50%;background-size:cover;position:absolute;inset:0;transform:scale(1.08)}.hero-bg-layer:before{content:"";mix-blend-mode:normal;pointer-events:none;background:linear-gradient(#0d0d0d00 0%,#0d0d0d3d 35%,#0d0d0d8c 60%,#0d0d0db8 78%,#0d0d0ddb 90%,#0d0d0df2 100%);position:absolute;inset:0}.hero-bg-layer:after{content:"";filter:blur(60px);opacity:.55;pointer-events:none;background:linear-gradient(#00000040,#0000008c);height:55%;position:absolute;bottom:-18%;left:-8%;right:-8%}@supports ((-webkit-mask-image:linear-gradient(#000,#000)) or (mask-image:linear-gradient(#000,#000))){.hero-bg-layer{-webkit-mask-image:linear-gradient(#000 5%,#000000bf 70%,#00000059 85%,#0000 100%);mask-image:linear-gradient(#000 5%,#000000bf 70%,#00000059 85%,#0000 100%)}}@media (width>=768px){.hero-bg-wrapper{height:900px}.hero-bg-layer{filter:blur(10px)saturate(130%);opacity:.3}.hero-bg-layer:after{filter:blur(80px);opacity:.6}}.concert-page .concert-details,.concert-page .concert-title{z-index:2;position:relative}.venue-row{flex-direction:column;gap:8px;display:flex}.address-group{align-items:center;gap:6px;max-width:100%;display:inline-flex;position:relative}.address-group .venue-address{text-overflow:ellipsis;min-width:0;overflow:hidden}.copy-toast{border:1px solid var(--color-border);background:var(--color-surface-container);color:var(--color-primary);opacity:0;pointer-events:none;white-space:nowrap;z-index:10;border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:.95rem;line-height:1.2;transition:opacity .15s,transform .15s;display:inline-flex;position:absolute;top:calc(100% + 8px);right:0;transform:translateY(4px)}.copy-toast.show{opacity:1;transform:translateY(0)}.venue-name{color:var(--color-text);cursor:pointer;font-weight:500;text-decoration:none;transition:color .2s}.venue-name:hover{color:var(--color-primary)}.venue-address{color:var(--color-text)}.map-link,.genre-item{border:1px solid var(--color-border);width:fit-content;color:var(--color-primary);background:0 0;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:4px 8px;font-size:.95rem;text-decoration:none;transition:border-color .2s,color .2s,background .2s;display:inline-flex}.map-link:hover,.genre-item:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-secondary)}.map-link svg{fill:currentColor;width:16px;height:16px;display:block}.map-link-text{font-size:.95rem;line-height:1}.copy-address-btn{border:1px solid var(--color-border);width:28px;height:28px;color:var(--color-primary);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;margin-left:6px;transition:border-color .2s,background .2s,color .2s;display:inline-flex}.copy-address-btn:hover{border-color:var(--color-primary);background:var(--color-secondary)}.copy-address-btn svg{fill:currentColor;width:16px;height:16px;display:block}.past-event{opacity:.6;background-color:var(--color-surface-container);transition:opacity .5s ease-in-out}.past-event:hover{opacity:1}.past-event:after{content:"Archiviert";background:var(--color-primary);color:var(--color-btn-primary-text);font-size:var(--font-size-xl);z-index:10;border-radius:4px;padding:4px 8px;position:absolute;top:18px;right:18px}.past-event-banner{background:var(--color-primary);color:var(--color-btn-primary-text);text-align:center;border-radius:8px;margin-bottom:1rem;padding:1rem}
