@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";*{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #0c0c0c;--bg-secondary: #1a1a1a;--bg-sidebar: #0a0a0a;--bg-card: #111111;--bg-card-border: #1a1a1a;--bg-card-inner: #000000;--text-primary: #ffffff;--text-secondary: #888888;--border-color: #222222;--info-bg: #e0e0e0;--pill-bg: #e8e8e8;--accent-hover: #333333;--divider-color: rgba(255, 255, 255, .12);--accent-red: #ff3b30}[data-theme=light]{--bg-primary: #f5f5f7;--bg-secondary: #ffffff;--bg-sidebar: #ffffff;--bg-card: #ffffff;--bg-card-border: #e5e5e5;--bg-card-inner: #fafafa;--text-primary: #1a1a1a;--text-secondary: #666666;--border-color: #e0e0e0;--info-bg: #d9d9d9;--pill-bg: #e8e8e8;--accent-hover: #f0f0f0;--divider-color: rgba(0, 0, 0, .12);--accent-red: #ff3b30}body{font-family:Inter,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s ease,color .3s ease;zoom:.8}button,input{font-family:inherit}.login-container{height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--bg-primary) 100%);position:relative;overflow:hidden}.login-container:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at center,rgba(230,57,70,.05) 0%,transparent 50%);pointer-events:none}.login-card{background:var(--bg-card);border:1px solid var(--border-color);padding:3rem;border-radius:24px;width:100%;max-width:420px;box-shadow:0 20px 40px #0003;text-align:center;position:relative;z-index:1}.login-card .login-logo{font-size:1.8rem;font-weight:800;letter-spacing:2px;color:var(--text-primary);margin-bottom:2rem}.login-card .login-logo span.light{font-weight:300;color:var(--text-primary);opacity:.7}.login-card .slogan{font-size:1rem!important;color:var(--text-secondary);margin-top:-1.5rem;margin-bottom:2rem!important;font-style:italic;opacity:.9}.login-card h2{color:var(--text-primary);font-size:1.5rem;margin-bottom:.5rem;font-weight:600}.login-card p{color:var(--text-secondary);font-size:.95rem;margin-bottom:2.5rem}.login-form{display:flex;flex-direction:column;gap:1.5rem}.login-form .form-group{text-align:left}.login-form .form-group label{display:block;color:var(--text-secondary);font-size:.85rem;margin-bottom:.5rem;font-weight:500}.login-form .form-group input{width:100%;padding:.8rem 1rem;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);font-size:1rem;transition:all .3s ease}.login-form .form-group input:focus{outline:none;border-color:var(--accent-red);box-shadow:0 0 0 3px #e639461a}.login-form .form-group input::placeholder{color:var(--text-secondary);opacity:.5}.login-form .error-message{background:#e639461a;border:1px solid rgba(230,57,70,.2);color:#ff6b6b;padding:.8rem;border-radius:10px;font-size:.9rem;margin-top:-.5rem}.login-form .login-button{background:var(--accent-red);color:#fff;border:none;padding:1rem;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;margin-top:1rem;box-shadow:0 4px 12px #e6394633}.login-form .login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 16px #e639464d;filter:brightness(1.1)}.login-form .login-button:active:not(:disabled){transform:translateY(0)}.login-form .login-button:disabled{opacity:.7;cursor:not-allowed}@media(max-width:768px){.login-card{padding:2rem 1.5rem;width:90%}.login-card .login-logo{font-size:1.5rem}}.concerts-view .view-header{position:sticky;top:0;z-index:100;background:var(--bg-primary);padding:1.5rem 2rem;margin:0 -2rem 1.5rem;width:calc(100% + 4rem);border-bottom:1px solid var(--border-color);animation:none;transition:padding .3s ease}.concerts-view .view-header.scrolled{padding-bottom:1rem}.concerts-view .view-header.scrolled .total-count{opacity:0;max-height:0;margin-top:0;padding:0}.concerts-view .view-header .total-count{max-height:30px;margin-top:.25rem;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.concerts-view .view-header .header-top{display:flex;align-items:center;gap:2rem;margin-bottom:.25rem}.concerts-view .view-header .header-top h1{font-size:1.75rem;font-weight:700;color:var(--text-primary);margin:0}.concerts-view .view-header .header-top .sort-select{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-color);padding:.6rem 1.2rem;border-radius:12px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);outline:none;box-shadow:0 2px 8px #0000001a}.concerts-view .view-header .header-top .sort-select:hover{border-color:var(--accent-red);transform:translateY(-2px);box-shadow:0 4px 16px #ff3b3033}.concerts-view .view-header .header-top .sort-select:focus{border-color:var(--accent-red);box-shadow:0 0 0 3px #ff3b3026}.concerts-view .view-header .header-top .sort-select option{background:var(--bg-card);color:var(--text-primary)}.concerts-view .view-header .header-top .favorites-toggle{background:transparent;color:var(--text-secondary);border:1px solid var(--border-color);padding:.6rem 1.2rem;border-radius:12px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);outline:none;display:flex;align-items:center;gap:.4rem}.concerts-view .view-header .header-top .favorites-toggle svg{width:16px;height:16px}.concerts-view .view-header .header-top .favorites-toggle:hover{border-color:var(--accent-red);color:var(--accent-red)}.concerts-view .view-header .header-top .favorites-toggle.active{background:var(--accent-red);border-color:var(--accent-red);color:#fff}.concerts-view .view-header .header-top .hidden-toggle{background:transparent;color:var(--text-secondary);border:1px solid var(--border-color);padding:.6rem 1.2rem;border-radius:12px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);outline:none;display:flex;align-items:center;gap:.4rem}.concerts-view .view-header .header-top .hidden-toggle svg{width:16px;height:16px}.concerts-view .view-header .header-top .hidden-toggle:hover{border-color:var(--text-secondary);color:var(--text-primary)}.concerts-view .view-header .header-top .hidden-toggle.active{background:#8080804d;border-color:var(--text-secondary);color:var(--text-primary)}.concerts-view .view-header p{color:var(--text-secondary);font-size:.9rem}.concert-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}@media(max-width:1600px){.concert-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:1100px){.concert-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.concert-grid{grid-template-columns:1fr;gap:1rem}}.concert-grid{transition:opacity .15s ease,transform .15s ease}.concert-grid.resorting{opacity:.4;transform:scale(.98)}.concert-card{background-color:var(--bg-card-border);padding:1.25rem;border-radius:10px;transition:transform .15s ease,box-shadow .15s ease;border:none;cursor:pointer;will-change:transform}.concert-card:hover{transform:translateY(-4px) scale(1.01);box-shadow:0 12px 24px #0000004d}.concert-card:hover .image-section .concert-img{transform:scale(1.02)}.concert-card:hover .pill-container .pill{transform:translate(-3px)}.concert-card:hover .info-section{box-shadow:0 8px 20px #00000040}.concert-card .card-outer{background-color:var(--bg-card-inner);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;height:100%;position:relative}.concert-card .image-section{position:relative;height:250px;overflow:hidden;border-radius:10px 10px 0 0}.concert-card .image-section .concert-img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform .4s ease}.concert-card .image-section .favorite-btn{position:absolute;top:.75rem;left:.75rem;width:28px;height:28px;border-radius:50%;background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.2);color:#ffffffe6;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;padding:0;z-index:5}.concert-card .image-section .favorite-btn svg{width:14px;height:14px}.concert-card .image-section .favorite-btn:hover{background:#ff3b3066;transform:scale(1.1)}.concert-card .image-section .favorite-btn.is-favorite{background:var(--accent-red);border-color:var(--accent-red);color:#fff}.concert-card .image-section .hide-btn{position:absolute;top:.75rem;left:calc(.75rem + 32px);width:28px;height:28px;border-radius:50%;background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.2);color:#ffffffe6;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;padding:0;z-index:5}.concert-card .image-section .hide-btn svg{width:14px;height:14px}.concert-card .image-section .hide-btn:hover{background:#80808099;transform:scale(1.1)}.concert-card .image-section .hide-btn.is-hidden{background:#808080cc;border-color:#ffffff4d;color:#fff}.concert-card .image-section .pill-container{position:absolute;top:.75rem;right:calc(.75rem + 2px);display:flex;flex-direction:column;align-items:flex-end;gap:.4rem}.concert-card .image-section .pill-container .pill{background:#ffffffbf;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#000;padding:.35rem .9rem;border-radius:20px;font-size:.75rem;box-shadow:0 2px 8px #00000026;transition:transform .3s ease,background-color .3s ease;border:1px solid rgba(255,255,255,.3);display:flex;align-items:center;gap:.4rem}.concert-card .image-section .pill-container .pill .date-main{font-weight:600;letter-spacing:-.2px}.concert-card .image-section .pill-container .pill .time-sub{font-weight:400;opacity:.6;font-size:.7rem}.concert-card .image-section .pill-container .pill.source-pill{font-weight:500;font-size:.7rem;padding:.25rem .75rem}.concert-card .info-section{background:#d9d9d9d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:1rem 2rem;margin:-25px .75rem .75rem;position:relative;z-index:2;overflow:hidden;border-radius:20px;transform:skew(-5deg);box-shadow:0 8px 25px #0003;transition:box-shadow .3s ease;display:flex;align-items:stretch;min-height:90px}.concert-card .info-section .info-balls{position:absolute;inset:0;overflow:hidden;z-index:0;transform:skew(5deg)}.concert-card .info-section .info-balls .ball{position:absolute;border-radius:50%;filter:blur(10px)}.concert-card .info-section .info-balls .ball-1{width:60px;height:60px;background:radial-gradient(circle,rgba(255,59,48,.5) 0%,transparent 70%);top:-20px;left:5%;animation:infoBall1 4s ease-in-out infinite}.concert-card .info-section .info-balls .ball-2{width:40px;height:40px;background:radial-gradient(circle,rgba(255,59,48,.4) 0%,transparent 70%);bottom:-15px;right:25%;animation:infoBall2 5s ease-in-out infinite}.concert-card .info-section .info-balls .ball-3{width:30px;height:30px;background:radial-gradient(circle,rgba(255,59,48,.35) 0%,transparent 70%);top:60%;left:45%;animation:infoBall3 3.5s ease-in-out infinite}.concert-card .info-section .info-balls .ball-4{width:50px;height:50px;background:radial-gradient(circle,rgba(0,0,0,.25) 0%,transparent 70%);top:-15px;right:15%;animation:infoBall4 4.5s ease-in-out infinite}.concert-card .info-section .info-balls .ball-5{width:35px;height:35px;background:radial-gradient(circle,rgba(0,0,0,.2) 0%,transparent 70%);bottom:-10px;left:20%;animation:infoBall5 3.8s ease-in-out infinite}.concert-card .info-section .info-balls .ball-6{width:45px;height:45px;background:radial-gradient(circle,rgba(0,0,0,.15) 0%,transparent 70%);top:30%;right:50%;animation:infoBall6 5.5s ease-in-out infinite}.concert-card .info-section>*{transform:skew(5deg)}.concert-card .info-section .title-area{flex:1.4;display:flex;align-items:center;padding-right:1.5rem;position:relative;z-index:1}.concert-card .info-section .title-area p{color:#000;font-size:.95rem;font-weight:700;line-height:1.25;margin:0}.concert-card .info-section .vertical-divider{width:1px;background-color:#aaa;margin:.75rem 0;opacity:.4;transform:skew(5deg);position:relative;z-index:1}.concert-card .info-section .match-area{flex:.6;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding-left:1rem;position:relative;z-index:1}.concert-card .info-section .match-area .match-percentage{color:#ff3b30;font-size:2.5rem;font-weight:700;line-height:1}.concert-card .info-section .match-area .match-label{color:#000;font-size:.9rem;font-weight:600;margin-top:.25rem}@keyframes infoBall1{0%,to{transform:translate(0) scale(1)}50%{transform:translate(20px,8px) scale(1.1)}}@keyframes infoBall2{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-15px,-6px) scale(1.15)}}@keyframes infoBall3{0%,to{transform:translate(0) scale(1)}50%{transform:translate(12px,-8px) scale(1.1)}}@keyframes infoBall4{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-18px,5px) scale(1.2)}}@keyframes infoBall5{0%,to{transform:translate(0) scale(1)}50%{transform:translate(10px,-5px) scale(1.1)}}@keyframes infoBall6{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-8px,8px) scale(1.15)}}.concert-modal-overlay{position:fixed;inset:0;background:#000c;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease-out;padding:2rem}.concert-modal{background:var(--bg-card);border-radius:16px;width:100%;max-width:1300px;height:85vh;max-height:85vh;overflow:hidden;position:relative;animation:slideUp .3s cubic-bezier(.16,1,.3,1);box-shadow:0 40px 100px #00000080;display:flex}.concert-modal .modal-content-wrapper{display:flex;width:100%;height:100%;overflow:hidden}.concert-modal .modal-close{position:absolute;top:1rem;right:1.5rem;background:#0006;border:1px solid rgba(255,255,255,.15);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;width:32px;height:32px;border-radius:50%;font-size:1rem;cursor:pointer;z-index:20;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.concert-modal .modal-close:hover{background:#0009;border-color:#ffffff4d;transform:rotate(90deg)}.concert-modal .modal-left-column{position:relative;width:40%;height:100%;flex-shrink:0;overflow:hidden;padding:1.5rem;display:flex;align-items:stretch}.concert-modal .modal-left-column img{width:100%;height:100%;object-fit:cover;transition:transform .7s ease;border-radius:12px;border:1px solid var(--divider-color)}.concert-modal .modal-left-column .modal-match-badge{position:absolute;bottom:2rem;left:2rem;right:auto;background:#0009;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1);padding:.75rem 1.25rem;border-radius:12px;display:flex;flex-direction:column;align-items:center;box-shadow:0 10px 30px #0000004d}.concert-modal .modal-left-column .modal-match-badge .match-value{font-size:1.75rem;font-weight:800;color:#ff3b30;line-height:1;margin-bottom:.1rem}.concert-modal .modal-left-column .modal-match-badge .match-text{font-size:.7rem;color:#fffc;text-transform:uppercase;letter-spacing:1.5px;font-weight:600}.concert-modal .modal-right-column{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%}.concert-modal .modal-right-column .modal-header-sticky{padding:2rem 2.5rem 1rem;background:var(--bg-card);flex-shrink:0;border-bottom:1px solid var(--divider-color)}.concert-modal .modal-right-column .modal-header-sticky h2{font-size:1.875rem;font-weight:800;color:var(--text-primary);line-height:1.1;margin:0;letter-spacing:-.5px}.concert-modal .modal-right-column .modal-scrollable-content{flex:1;overflow-y:auto;padding:1.5rem 2.5rem;display:flex;flex-direction:column;gap:1.5rem}.concert-modal .modal-right-column .modal-scrollable-content::-webkit-scrollbar{width:4px}.concert-modal .modal-right-column .modal-scrollable-content::-webkit-scrollbar-track{background:transparent}.concert-modal .modal-right-column .modal-scrollable-content::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.concert-modal .modal-right-column .modal-scrollable-content::-webkit-scrollbar-thumb:hover{background:#fff3}.concert-modal .modal-right-column .modal-footer{padding:1.5rem 2.5rem;border-top:1px solid var(--divider-color);background:var(--bg-card);flex-shrink:0}.concert-modal .modal-right-column h2{font-size:1.875rem;font-weight:800;color:var(--text-primary);line-height:1.1;margin:0;letter-spacing:-.5px}.concert-modal .modal-right-column .modal-details{display:grid;grid-template-columns:1fr 1fr;gap:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--divider-color)}.concert-modal .modal-right-column .modal-details .detail-item{display:flex;align-items:flex-start;gap:1rem}.concert-modal .modal-right-column .modal-details .detail-item .detail-icon{font-size:1.5rem;opacity:.8}.concert-modal .modal-right-column .modal-details .detail-item .detail-content{display:flex;flex-direction:column;gap:.2rem}.concert-modal .modal-right-column .modal-details .detail-item .detail-content .detail-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;font-weight:600}.concert-modal .modal-right-column .modal-details .detail-item .detail-content .detail-value{font-size:1rem;color:var(--text-primary);font-weight:400}.concert-modal .modal-right-column .modal-program{padding-top:1rem;padding-bottom:1rem}.concert-modal .modal-right-column .modal-program h3{font-size:.75rem;color:var(--text-secondary);margin-bottom:1rem;text-transform:uppercase;letter-spacing:1px;font-weight:600}.concert-modal .modal-right-column .modal-program ul{list-style:none;padding:0;margin:0}.concert-modal .modal-right-column .modal-program ul li{display:flex;flex-direction:row;align-items:center;gap:.5rem;margin-bottom:.5rem}.concert-modal .modal-right-column .modal-program ul li:last-child{margin-bottom:0}.concert-modal .modal-right-column .modal-program ul li .composer{font-size:1rem;color:var(--text-primary);font-weight:400}.concert-modal .modal-right-column .modal-program ul li .bullet{color:var(--text-secondary);font-size:.6rem;opacity:.6}.concert-modal .modal-right-column .modal-program ul li .piece{font-size:1rem;color:var(--text-primary);font-weight:400}.concert-modal .modal-right-column .modal-program ul li .duration{font-size:1rem;color:var(--text-secondary);font-weight:400}.concert-modal .modal-right-column .modal-performers{padding-top:1.25rem;border-top:1px solid var(--divider-color);display:flex;flex-direction:column;gap:.75rem}.concert-modal .modal-right-column .modal-performers .performer-item{display:flex;flex-direction:column;gap:.2rem}.concert-modal .modal-right-column .modal-performers .performer-item .performer-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;font-weight:600}.concert-modal .modal-right-column .modal-performers .performer-item .performer-name{font-size:1rem;color:var(--text-primary);font-weight:400}.concert-modal .modal-right-column .modal-performers .performer-item .soloists-list{display:flex;flex-direction:column;gap:.25rem}.concert-modal .modal-right-column .modal-performers .performer-item .soloists-list .soloist{font-size:1rem;color:var(--text-primary);font-weight:400}.concert-modal .modal-right-column .modal-actions{display:flex;gap:.75rem;margin-bottom:1rem}.concert-modal .modal-right-column .modal-actions .modal-action-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1rem;border-radius:12px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease;border:1px solid var(--border-color);background:transparent;color:var(--text-secondary)}.concert-modal .modal-right-column .modal-actions .modal-action-btn svg{width:18px;height:18px}.concert-modal .modal-right-column .modal-actions .modal-action-btn:hover{background:#ffffff0d;color:var(--text-primary)}.concert-modal .modal-right-column .modal-actions .modal-action-btn.favorite:hover{border-color:var(--accent-red);color:var(--accent-red)}.concert-modal .modal-right-column .modal-actions .modal-action-btn.favorite.active{background:#ff3b3026;border-color:var(--accent-red);color:var(--accent-red)}.concert-modal .modal-right-column .modal-actions .modal-action-btn.hide:hover{border-color:var(--text-secondary)}.concert-modal .modal-right-column .modal-actions .modal-action-btn.hide.active{background:#80808033;border-color:var(--text-secondary);color:var(--text-primary)}.concert-modal .modal-right-column .buy-ticket-btn{position:relative;width:100%;background:#ff3b301f;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--text-primary);border:1px solid rgba(255,59,48,.25);padding:1rem;border-radius:20px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;transform:skew(-5deg);overflow:hidden;text-decoration:none;display:flex;justify-content:center;align-items:center}.concert-modal .modal-right-column .buy-ticket-btn .btn-balls{position:absolute;inset:0;overflow:hidden;z-index:0}.concert-modal .modal-right-column .buy-ticket-btn .btn-balls .ball{position:absolute;border-radius:50%;filter:blur(8px)}.concert-modal .modal-right-column .buy-ticket-btn .btn-balls .ball-1{width:50px;height:50px;background:radial-gradient(circle,rgba(255,59,48,.7) 0%,transparent 70%);top:-15px;left:5%;animation:floatBall1 3s ease-in-out infinite}.concert-modal .modal-right-column .buy-ticket-btn .btn-balls .ball-2{width:35px;height:35px;background:radial-gradient(circle,rgba(255,59,48,.6) 0%,transparent 70%);bottom:-10px;right:20%;animation:floatBall2 4s ease-in-out infinite}.concert-modal .modal-right-column .buy-ticket-btn .btn-balls .ball-3{width:25px;height:25px;background:radial-gradient(circle,rgba(255,59,48,.5) 0%,transparent 70%);top:50%;left:60%;animation:floatBall3 3.5s ease-in-out infinite}.concert-modal .modal-right-column .buy-ticket-btn .btn-balls .ball-4{width:40px;height:40px;background:radial-gradient(circle,rgba(0,0,0,.4) 0%,transparent 70%);top:-10px;right:10%;animation:floatBall4 4.5s ease-in-out infinite}.concert-modal .modal-right-column .buy-ticket-btn .btn-balls .ball-5{width:30px;height:30px;background:radial-gradient(circle,rgba(0,0,0,.35) 0%,transparent 70%);bottom:-8px;left:30%;animation:floatBall5 3.2s ease-in-out infinite}.concert-modal .modal-right-column .buy-ticket-btn .btn-balls .ball-6{width:45px;height:45px;background:radial-gradient(circle,rgba(0,0,0,.3) 0%,transparent 70%);top:40%;right:40%;animation:floatBall6 5s ease-in-out infinite}.concert-modal .modal-right-column .buy-ticket-btn span{display:inline-block;transform:skew(5deg);position:relative;z-index:2}.concert-modal .modal-right-column .buy-ticket-btn:hover{background:#ff3b3033;border-color:#ff3b3066;transform:skew(-5deg) translateY(-2px);box-shadow:0 8px 30px #ff3b3040}@keyframes floatBall1{0%,to{transform:translate(0) scale(1)}50%{transform:translate(25px,8px) scale(1.15)}}@keyframes floatBall2{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-20px,-6px) scale(1.2)}}@keyframes floatBall3{0%,to{transform:translate(0) scale(1)}50%{transform:translate(15px,-10px) scale(1.1)}}@keyframes floatBall4{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-15px,5px) scale(1.2)}}@keyframes floatBall5{0%,to{transform:translate(0) scale(1)}50%{transform:translate(10px,-8px) scale(1.15)}}@keyframes floatBall6{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-12px,6px) scale(1.1)}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.favs-view .tab-pane{animation:fadeIn .2s ease-out forwards}.favs-view .view-header{position:sticky;top:0;z-index:100;background:var(--bg-primary);margin:0 -2rem 1.5rem;padding:1.5rem 2rem;width:calc(100% + 4rem);border-bottom:1px solid var(--border-color);animation:none}.favs-view .view-header .header-content{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.favs-view .view-header h1{font-size:1.75rem;font-weight:700;margin:0;color:var(--text-primary)}.favs-view .view-header .sub-tabs{display:flex;gap:.25rem;background:var(--bg-card);padding:.25rem;border-radius:10px;border:1px solid var(--border-color)}.favs-view .view-header .sub-tabs .sub-tab-btn{background:transparent;border:none;color:var(--text-secondary);font-size:.85rem;font-weight:500;padding:.5rem 1rem;border-radius:8px;cursor:pointer;transition:all .2s ease}.favs-view .view-header .sub-tabs .sub-tab-btn:hover{color:var(--text-primary)}.favs-view .view-header .sub-tabs .sub-tab-btn.active{background:var(--bg-primary);color:var(--text-primary);font-weight:600;box-shadow:0 2px 8px #0000000d}.favs-view .view-header p{color:var(--text-secondary);font-size:.9rem}@keyframes headerFadeIn{0%{opacity:0}to{opacity:1}}.favs-section{margin-bottom:3rem}.favs-section .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.favs-section .section-header h2{font-size:1.25rem;font-weight:600;color:var(--text-primary)}.favs-section .section-header .add-btn{background:linear-gradient(135deg,#e63946,#d62839);color:#fff;border:none;padding:.5rem 1.25rem;border-radius:10px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .3s ease}.favs-section .section-header .add-btn:hover{transform:translateY(-2px);box-shadow:0 4px 15px #e6394666}.favs-section .add-form{background:#ffffff0d;padding:1.25rem;border-radius:10px;margin-bottom:1.5rem;display:flex;gap:1rem;flex-wrap:wrap}.favs-section .add-form input{flex:1;min-width:180px;padding:.75rem 1rem;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#0000004d;color:#fff;font-size:.9rem}.favs-section .add-form input::placeholder{color:#888}.favs-section .add-form input:focus{outline:none;border-color:#e63946}.favs-section .add-form button[type=submit]{background:#e63946;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:10px;font-weight:600;cursor:pointer;transition:all .3s ease}.favs-section .add-form button[type=submit]:hover{background:#d62839}.favs-section .add-form .input-with-suggestions{position:relative;flex:1;min-width:180px}.favs-section .add-form .input-with-suggestions input{width:100%}.favs-section .add-form .suggestions-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;margin-top:.25rem;z-index:100;overflow:hidden;box-shadow:0 8px 25px #0000004d}.favs-section .add-form .suggestions-dropdown .suggestion-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;transition:background .2s ease}.favs-section .add-form .suggestions-dropdown .suggestion-item:hover{background:var(--accent-hover)}.favs-section .add-form .suggestions-dropdown .suggestion-item img{width:36px;height:36px;border-radius:50%;object-fit:cover}.favs-section .add-form .suggestions-dropdown .suggestion-item span{color:var(--text-primary);font-size:.9rem}.favs-section .items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.favs-section .items-grid.music-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}@media(max-width:768px){.favs-section .items-grid,.favs-section .items-grid.music-grid{grid-template-columns:1fr}}.favs-section .items-grid .empty-state{grid-column:1/-1;text-align:center;padding:3rem;background:var(--bg-card);border-radius:16px;color:var(--text-secondary);font-size:1.1rem;border:2px dashed var(--border-color)}.favs-section .fav-card{background:#ffffff0d;border-radius:10px;padding:1rem 1.25rem;display:flex;justify-content:space-between;align-items:center;transition:all .3s ease;border:1px solid rgba(255,255,255,.05)}.favs-section .fav-card:hover{background:#ffffff14;transform:translateY(-2px);box-shadow:0 8px 25px #0003}.favs-section .fav-card .card-content{display:flex;align-items:center;gap:1rem}.favs-section .fav-card .card-content .icon{font-size:1.5rem;opacity:.8}.favs-section .fav-card .card-content .artist-img{width:48px;height:48px;min-width:48px;min-height:48px;border-radius:50%;object-fit:cover;border:2px solid var(--border-color);flex-shrink:0}.favs-section .fav-card .card-content .info h3{font-size:1rem;font-weight:600;color:var(--text-primary);margin-bottom:.2rem}.favs-section .fav-card .card-content .info p{font-size:.8rem;color:var(--text-secondary)}.favs-section .fav-card .remove-btn{background:transparent;border:none;color:var(--text-secondary);font-size:.9rem;cursor:pointer;width:32px;height:32px;min-width:32px;min-height:32px;border-radius:50%;transition:all .2s ease;opacity:0;display:flex;align-items:center;justify-content:center;flex-shrink:0}.favs-section .fav-card .remove-btn:hover{background:#e6394633;color:#e63946}.favs-section .fav-card:hover .remove-btn{opacity:1}.favs-section .fav-card.artist-card{background:linear-gradient(135deg,#e639461a,#0003)}.favs-section .fav-card.music-card{background:linear-gradient(135deg,#6464c81a,#0003)}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease-out}.modal-content{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;width:90%;max-width:450px;padding:1.5rem;box-shadow:0 25px 50px #00000080;animation:slideUp .3s ease-out}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.modal-header h3{font-size:1.25rem;font-weight:600;color:var(--text-primary)}.modal-header .modal-close{background:transparent;border:none;color:var(--text-secondary);font-size:1.25rem;cursor:pointer;padding:.25rem .5rem;border-radius:10px;transition:all .2s ease}.modal-header .modal-close:hover{background:var(--accent-hover);color:var(--text-primary)}.modal-form{display:flex;flex-direction:column;gap:1rem}.modal-form input{padding:.85rem 1rem;border-radius:10px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);font-size:.95rem;transition:border-color .2s ease}.modal-form input::placeholder{color:var(--text-secondary)}.modal-form input:focus{outline:none;border-color:#e63946}.modal-form .input-with-suggestions{position:relative}.modal-form .suggestions-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;margin-top:.25rem;z-index:100;overflow:hidden;box-shadow:0 8px 25px #0000004d}.modal-form .suggestions-dropdown .suggestion-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;transition:background .2s ease}.modal-form .suggestions-dropdown .suggestion-item:hover{background:var(--accent-hover)}.modal-form .suggestions-dropdown .suggestion-item img{width:40px;height:40px;border-radius:50%;object-fit:cover}.modal-form .suggestions-dropdown .suggestion-item span{color:var(--text-primary);font-size:.9rem}.modal-form .selected-artist-preview{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#e639461a;border-radius:10px;border:1px solid rgba(230,57,70,.3)}.modal-form .selected-artist-preview img{width:44px;height:44px;border-radius:50%;object-fit:cover}.modal-form .selected-artist-preview span{color:var(--text-primary);font-size:.9rem}.modal-form .save-btn{background:linear-gradient(135deg,#e63946,#d62839);color:#fff;border:none;padding:.85rem;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;margin-top:.5rem}.modal-form .save-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #e6394666}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.empty-state{text-align:center;padding:3rem;color:var(--text-secondary)}.dashboard-layout{display:flex;min-height:100vh;background-color:var(--bg-primary);transition:background-color .3s ease}.mobile-topbar{display:none;position:fixed;top:0;left:0;right:0;height:60px;background:var(--bg-sidebar);border-bottom:1px solid var(--border-color);z-index:1000;align-items:center;justify-content:space-between;padding:0 1.5rem}.mobile-topbar .mobile-logo{font-weight:800;color:var(--text-primary);font-size:1.1rem}.mobile-topbar .menu-btn{background:none;border:none;color:var(--text-primary);cursor:pointer}.mobile-topbar .menu-btn svg{width:24px;height:24px}@media(max-width:768px){.mobile-topbar{display:flex}}.main-content{flex-grow:1;margin-left:240px;padding:3rem}@media(max-width:768px){.main-content{margin-left:0;padding:1rem;padding-top:calc(60px + 1rem)}}.tab-content{animation:tabZoomFade .45s cubic-bezier(.25,.46,.45,.94)}@keyframes tabZoomFade{0%{opacity:0;transform:scale(.95);filter:blur(4px)}to{opacity:1;transform:scale(1);filter:blur(0)}}.sidebar{width:240px;position:fixed;top:0;left:0;bottom:0;background-color:var(--bg-sidebar);border-right:1px solid var(--border-color);display:flex;flex-direction:column;padding:2rem 1.5rem;transition:background-color .3s ease,border-color .3s ease;overflow:hidden}.sidebar-logo{margin-bottom:3rem}.sidebar-logo h2{font-size:1.2rem;font-weight:800;letter-spacing:2px;color:var(--text-primary)}.sidebar-logo h2 span.light{font-weight:300;color:var(--text-primary)}.sidebar-nav{display:flex;flex-direction:column;gap:.5rem;flex-grow:1;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin}.sidebar-nav::-webkit-scrollbar{width:4px}.sidebar-nav::-webkit-scrollbar-track{background:transparent}.sidebar-nav::-webkit-scrollbar-thumb{background-color:#ffffff1a;border-radius:4px}.sidebar-nav button{background:none;border:none;border-left:3px solid transparent;color:var(--text-secondary);text-align:left;padding:.75rem 1rem;font-size:.9rem;font-weight:500;border-radius:0 10px 10px 0;cursor:pointer;transition:all .15s}.sidebar-nav button:hover{color:var(--text-primary);background-color:#ffffff0d;transform:translate(4px)}.sidebar-nav button.active{color:var(--text-primary);background-color:#ffffff14;border-left-color:var(--accent-red);box-shadow:none}.sidebar-footer{padding-top:2rem;border-top:1px solid var(--border-color)}.user-section{display:flex;align-items:center;justify-content:space-between}.user-profile{display:flex;align-items:center;gap:.75rem}.user-profile .avatar{width:32px;height:32px;background-color:var(--text-primary);color:var(--bg-primary);border-radius:50%;display:flex;justify-content:center;align-items:center;font-weight:700;font-size:.8rem;transition:background-color .3s ease,color .3s ease}.user-profile span{font-size:.85rem;color:var(--text-primary);font-weight:500}.theme-toggle{background:transparent;border:none;padding:.5rem;border-radius:10px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.theme-toggle img{width:22px;height:22px;transition:transform .3s ease}.theme-toggle:hover{background:var(--accent-hover)}.theme-toggle:hover img{transform:rotate(15deg) scale(1.1)}@media(max-width:768px){.sidebar{transform:translate(-100%);width:80%;max-width:300px;z-index:1002;box-shadow:4px 0 15px #00000080;transition:transform .3s cubic-bezier(.4,0,.2,1),background-color .3s ease}.sidebar.mobile-open{transform:translate(0)}}
