:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.spotify-auth{display:flex;align-items:center;justify-content:center;min-height:80vh;padding:2rem}.auth-container{max-width:500px;width:100%;text-align:center;background:var(--card-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:24px;padding:3rem 2rem;box-shadow:var(--card-shadow);border:1px solid var(--border-color);position:relative;overflow:hidden}.auth-container:before{content:"";position:absolute;inset:0;background:var(--card-gradient);opacity:.05;pointer-events:none}.auth-header{margin-bottom:2.5rem;position:relative;z-index:1}.auth-title{font-size:2.5rem;font-weight:800;margin:0 0 1rem;color:var(--text-primary);display:flex;align-items:center;justify-content:center;gap:.5rem}.spotify-icon{font-size:2.8rem;animation:bounce 2s infinite;filter:drop-shadow(0 4px 8px var(--shadow-color))}.auth-subtitle{color:var(--text-secondary);font-size:1.1rem;margin:0;opacity:.9;line-height:1.5}.auth-features{display:flex;flex-direction:column;gap:1rem;margin-bottom:2.5rem;position:relative;z-index:1}[data-theme=light] .auth-disclaimer{color:#222;opacity:.8}.feature{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.75rem 1.5rem;background:var(--feature-bg);border-radius:12px;color:var(--text-secondary);font-weight:500;border:1px solid var(--feature-border);transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.feature:hover{transform:translateY(-2px);background:var(--feature-bg-hover);border-color:var(--feature-border-hover);box-shadow:0 8px 16px var(--feature-shadow)}.feature-icon{font-size:1.2rem;filter:drop-shadow(0 2px 4px var(--shadow-color))}.spotify-login-btn{width:100%;background:var(--spotify-bg);color:var(--spotify-text);border:none;padding:1rem 2rem;border-radius:50px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.25,.46,.45,.94);position:relative;overflow:hidden;margin-bottom:1.5rem;border:2px solid var(--spotify-border);box-shadow:var(--spotify-shadow)}.spotify-login-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .6s ease}.spotify-login-btn:hover:before{left:100%}.spotify-login-btn:hover{background:var(--spotify-bg-hover);transform:translateY(-3px);box-shadow:var(--spotify-shadow-hover);border-color:var(--spotify-border-hover)}.spotify-login-btn:active{transform:translateY(-1px)}.spotify-login-btn.loading{cursor:not-allowed;opacity:.8}.btn-content{display:flex;align-items:center;justify-content:center;gap:.75rem;position:relative;z-index:1}.spotify-logo{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.spotify-logo svg{width:100%;height:100%;transition:transform .3s ease}.spotify-login-btn:hover .spotify-logo svg{transform:scale(1.1) rotate(5deg)}.loading-spinner{position:absolute;right:1rem;top:50%;transform:translateY(-50%)}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top:2px solid currentColor;border-radius:50%;animation:spin 1s linear infinite}.auth-disclaimer{color:var(--text-tertiary);font-size:.9rem;margin:0;opacity:.7;position:relative;z-index:1}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}@media (max-width: 768px){.spotify-auth{padding:1rem;min-height:70vh}.auth-container{padding:2rem 1.5rem}.auth-title{font-size:2rem}.spotify-icon{font-size:2.2rem}.auth-subtitle{font-size:1rem}}@media (max-width: 480px){.auth-container{padding:1.5rem 1rem}.auth-title{font-size:1.8rem;flex-direction:column;gap:.25rem}.feature{padding:.6rem 1rem;font-size:.9rem}.spotify-login-btn{padding:.9rem 1.5rem;font-size:1rem}}.brand-logo-wrapper{display:flex;justify-content:center;margin-bottom:.5rem}.brand-logo{width:120px;height:auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}[data-theme=dark] .brand-logo{background:#fff;border-radius:8px;padding:0}.app-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:var(--header-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:15px 15px 0 0;margin:-2rem -2rem 2rem;border-bottom:1px solid var(--border-color);box-shadow:0 4px 12px var(--shadow-color);position:relative;overflow:hidden}.app-header:before{content:"";position:absolute;inset:0;background:var(--header-gradient);opacity:.1;pointer-events:none}.header-left{display:flex;align-items:center;z-index:1}.app-title{margin:0;font-size:1.8rem;font-weight:700;color:var(--text-primary);display:flex;align-items:center;gap:.5rem;background:var(--title-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;transition:all .3s ease}.header-right{display:flex;align-items:center;gap:1rem;z-index:1}.user-info{display:flex;align-items:center;margin-right:1rem}.welcome-text{color:var(--text-secondary);font-size:.9rem;font-weight:500;opacity:.8;transition:opacity .3s ease}.header-controls{display:flex;align-items:center;gap:1rem}.logout-btn{background:var(--logout-bg);border:none;padding:.6rem 1.2rem;border-radius:12px;color:var(--logout-text);cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--logout-border);transition:all .3s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;gap:.5rem;font-weight:500;font-size:.9rem;position:relative;overflow:hidden}.logout-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease}.logout-btn:hover:before{left:100%}.logout-btn:hover{background:var(--logout-bg-hover);transform:translateY(-2px);box-shadow:0 8px 16px var(--logout-shadow);border-color:var(--logout-border-hover)}.logout-btn:active{transform:translateY(0);box-shadow:0 4px 8px var(--logout-shadow)}.logout-icon{font-size:1rem;transition:transform .3s ease}.logout-btn:hover .logout-icon{transform:rotate(-10deg) scale(1.1)}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@media (max-width: 768px){.app-header{padding:1rem;margin:-1.5rem -1.5rem 1.5rem;flex-direction:column;gap:1rem}.header-right{width:100%;justify-content:space-between}.welcome-text{display:none}.app-title{font-size:1.5rem}}@media (max-width: 480px){.logout-btn{padding:.5rem .8rem;font-size:.8rem}.logout-btn span:not(.logout-icon){display:none}}.theme-toggle{background:none;border:none;padding:0;cursor:pointer;position:relative;width:70px;height:35px;border-radius:25px;transition:all .4s cubic-bezier(.25,.46,.45,.94);overflow:hidden}.theme-toggle-track{position:relative;width:100%;height:100%;border-radius:25px;background:linear-gradient(135deg,#667eea,#764ba2);transition:all .4s cubic-bezier(.25,.46,.45,.94);box-shadow:inset 0 2px 4px #0003,0 4px 8px #00000026}.theme-toggle.light .theme-toggle-track{background:linear-gradient(135deg,#ffeaa7,#fab1a0);box-shadow:inset 0 2px 4px #0000001a,0 4px 8px #0000001a}.theme-toggle-thumb{position:absolute;top:3px;left:3px;width:29px;height:29px;background:linear-gradient(135deg,#fff,#f8f9fa);border-radius:50%;transition:all .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0003,0 0 0 1px #ffffff4d;z-index:2}.theme-toggle.light .theme-toggle-thumb{transform:translate(35px);background:linear-gradient(135deg,#2d3436,#636e72)}.theme-icon{font-size:14px;transition:all .3s ease;transform:scale(1);filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}.theme-toggle:hover .theme-icon{transform:scale(1.1) rotate(10deg)}.theme-toggle-background{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden;border-radius:25px}.stars{position:absolute;width:100%;height:100%;opacity:1;transition:opacity .4s ease}.theme-toggle.light .stars{opacity:0}.star{position:absolute;font-size:8px;animation:twinkle 2s infinite}.star-1{top:8px;left:15px;animation-delay:0s}.star-2{top:20px;left:50px;animation-delay:.7s}.star-3{top:12px;left:35px;animation-delay:1.4s}.clouds{position:absolute;width:100%;height:100%;opacity:0;transition:opacity .4s ease}.theme-toggle.light .clouds{opacity:1}.cloud{position:absolute;font-size:10px;animation:float 3s ease-in-out infinite}.cloud-1{top:8px;left:10px;animation-delay:0s}.cloud-2{top:15px;left:45px;animation-delay:1.5s}@keyframes twinkle{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.theme-toggle:hover{transform:scale(1.05)}.theme-toggle:active{transform:scale(.95)}.theme-toggle:focus{outline:none;box-shadow:0 0 0 3px #667eea66}.theme-toggle.light:focus{box-shadow:0 0 0 3px #ffeaa766}.loading-container{display:flex;align-items:center;justify-content:center;min-height:300px;padding:2rem}.loading-spinner-wrapper{text-align:center;position:relative}.music-loading-animation{position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:2rem}.vinyl-record{width:80px;height:80px;background:linear-gradient(135deg,#2c2c2c,#1a1a1a);border-radius:50%;position:relative;animation:spin 3s linear infinite;box-shadow:0 0 20px #0000004d,inset 0 0 20px #ffffff1a}.vinyl-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:16px;height:16px;background:var(--text-primary);border-radius:50%;box-shadow:0 0 10px #00000080}.vinyl-grooves{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:60px;height:60px;border:2px solid rgba(255,255,255,.1);border-radius:50%}.vinyl-grooves:before,.vinyl-grooves:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:50%;border:1px solid rgba(255,255,255,.05)}.vinyl-grooves:before{width:45px;height:45px}.vinyl-grooves:after{width:30px;height:30px}.sound-waves{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:120px;height:120px}.wave{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border:2px solid var(--text-secondary);border-radius:50%;opacity:0;animation:pulse 2s ease-out infinite}.wave-1{width:100px;height:100px;animation-delay:0s}.wave-2{width:120px;height:120px;animation-delay:.5s}.wave-3{width:140px;height:140px;animation-delay:1s}.wave-4{width:160px;height:160px;animation-delay:1.5s}.loading-message{color:var(--text-secondary);font-size:1rem;font-weight:500;margin:0;opacity:.8;animation:fade 2s ease-in-out infinite alternate}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}50%{opacity:.6}to{opacity:0;transform:translate(-50%,-50%) scale(1.2)}}@keyframes fade{0%,to{opacity:.6}50%{opacity:1}}@media (max-width: 768px){.vinyl-record{width:60px;height:60px}.vinyl-center{width:12px;height:12px}.vinyl-grooves{width:45px;height:45px}.vinyl-grooves:before{width:35px;height:35px}.vinyl-grooves:after{width:25px;height:25px}.sound-waves{width:100px;height:100px}.wave-1{width:80px;height:80px}.wave-2{width:100px;height:100px}.wave-3{width:120px;height:120px}.wave-4{width:140px;height:140px}.loading-message{font-size:.9rem}}.data-toggles{border:1px solid var(--border-color);padding:.5rem .75rem;border-radius:8px;background:var(--bg-secondary);margin-bottom:.75rem;color:var(--text-primary)}[data-theme=dark] .data-toggles{color:var(--text-primary)}.data-toggles input[type=checkbox]{accent-color:#1db954}.toggle-group{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:.5rem}.toggle-group label{display:flex;align-items:center;gap:.25rem;font-size:.9rem}.time-range-group{margin-bottom:.5rem}.time-range-group select{padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:.9rem}.font-group{margin-bottom:.5rem}.font-group label{display:flex;align-items:center;gap:.25rem;font-size:.9rem}.font-group select{padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:.9rem}.canvas-group{margin-bottom:.5rem}.canvas-group label{display:flex;align-items:center;gap:.25rem;font-size:.9rem}.canvas-group select{padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:.9rem}.export-group{display:flex;gap:.5rem;margin-top:.5rem}.export-group .btn{flex:1;background:#1db954;color:#fff;border-color:#1db954;transition:all .2s ease}.export-group .btn:hover:not(:disabled){background:#1ed760;border-color:#1ed760;transform:translateY(-1px)}.export-group .btn:disabled{background:var(--bg-secondary);color:var(--text-secondary);border-color:var(--border-color);cursor:not-allowed;opacity:.6}.action-buttons{display:flex;gap:.5rem;margin-top:.5rem}.action-buttons .btn{flex:1}.receipt-wrapper .paper a{text-decoration:underline}[data-theme=dark] .paper{color:#000!important;background:url(../paper.png) center/cover no-repeat,#fff}[data-theme=dark] .paper .barcode span{background:#000}.receipt-section{margin-bottom:.6rem}.receipt-section .sec-title{text-align:center;font-size:.55rem;margin:.25rem 0 .35rem;opacity:.8}.f5{font-family:JetBrains Mono,monospace}.f6{font-family:Fira Code,monospace}.f7{font-family:Ubuntu Mono,monospace;font-size:.65rem}.receipt-controls{display:flex;justify-content:center;margin-bottom:1rem}.receipt-controls label{font-size:.9rem;display:flex;align-items:center;gap:.5rem}.receipt-controls select{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;padding:.25rem .5rem;font-size:.8rem}:root{--bg-primary-light: #ffffff;--bg-secondary-light: #f8f9fa;--text-primary-light: #1a1a1a;--text-secondary-light: #6c757d;--text-tertiary-light: #adb5bd;--border-light: rgba(0, 0, 0, .1);--shadow-light: rgba(0, 0, 0, .1);--card-bg-light: rgba(255, 255, 255, .8);--header-bg-light: rgba(255, 255, 255, .9);--bg-primary-dark: #0a0a0a;--bg-secondary-dark: #1a1a1a;--text-primary-dark: #ffffff;--text-secondary-dark: #e9ecef;--text-tertiary-dark: #adb5bd;--border-dark: rgba(255, 255, 255, .1);--shadow-dark: rgba(0, 0, 0, .5);--card-bg-dark: rgba(255, 255, 255, .05);--header-bg-dark: rgba(0, 0, 0, .8);--gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--gradient-secondary: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);--gradient-accent: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);--gradient-warm: linear-gradient(135deg, #fa709a 0%, #fee140 100%)}[data-theme=light]{--bg-primary: var(--bg-primary-light);--bg-secondary: var(--bg-secondary-light);--text-primary: var(--text-primary-light);--text-secondary: var(--text-secondary-light);--text-tertiary: var(--text-tertiary-light);--border-color: var(--border-light);--shadow-color: var(--shadow-light);--card-bg: var(--card-bg-light);--header-bg: var(--header-bg-light);--body-gradient: #ffffff;--card-gradient: none;--header-gradient: none;--title-gradient: linear-gradient( 90deg, var(--text-primary) 0%, var(--text-secondary) 100% );--card-shadow: 0 8px 32px rgba(0, 0, 0, .15);--feature-bg: rgba(255, 255, 255, .6);--feature-border: rgba(0, 0, 0, .1);--feature-bg-hover: rgba(255, 255, 255, .8);--feature-border-hover: rgba(0, 0, 0, .2);--feature-shadow: rgba(0, 0, 0, .15);--spotify-bg: #1db954;--spotify-text: #ffffff;--spotify-border: #1ed760;--spotify-bg-hover: #1ed760;--spotify-border-hover: #1ed760;--spotify-shadow: 0 8px 16px rgba(29, 185, 84, .3);--spotify-shadow-hover: 0 12px 24px rgba(29, 185, 84, .4);--logout-bg: rgba(220, 53, 69, .1);--logout-text: #dc3545;--logout-border: rgba(220, 53, 69, .2);--logout-bg-hover: rgba(220, 53, 69, .2);--logout-border-hover: rgba(220, 53, 69, .3);--logout-shadow: rgba(220, 53, 69, .2)}[data-theme=dark]{--bg-primary: var(--bg-primary-dark);--bg-secondary: var(--bg-secondary-dark);--text-primary: var(--text-primary-dark);--text-secondary: var(--text-secondary-dark);--text-tertiary: var(--text-tertiary-dark);--border-color: var(--border-dark);--shadow-color: var(--shadow-dark);--card-bg: var(--card-bg-dark);--header-bg: var(--header-bg-dark);--body-gradient: #000000;--card-gradient: none;--header-gradient: none;--title-gradient: linear-gradient( 90deg, var(--text-primary) 0%, var(--text-secondary) 100% );--card-shadow: 0 8px 32px rgba(0, 0, 0, .5);--feature-bg: rgba(255, 255, 255, .05);--feature-border: rgba(255, 255, 255, .1);--feature-bg-hover: rgba(255, 255, 255, .1);--feature-border-hover: rgba(255, 255, 255, .2);--feature-shadow: rgba(0, 0, 0, .3);--spotify-bg: #1db954;--spotify-text: #ffffff;--spotify-border: #1ed760;--spotify-bg-hover: #1ed760;--spotify-border-hover: #1ed760;--spotify-shadow: 0 8px 16px rgba(29, 185, 84, .3);--spotify-shadow-hover: 0 12px 24px rgba(29, 185, 84, .4);--logout-bg: rgba(255, 75, 75, .1);--logout-text: #ff6b6b;--logout-border: rgba(255, 75, 75, .2);--logout-bg-hover: rgba(255, 75, 75, .2);--logout-border-hover: rgba(255, 75, 75, .3);--logout-shadow: rgba(255, 75, 75, .2)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--body-gradient);min-height:100vh;display:flex;align-items:center;justify-content:center;transition:all .6s cubic-bezier(.25,.46,.45,.94);position:relative;overflow-x:hidden}body:before{content:none}.app{background:var(--card-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:24px;padding:0;box-shadow:var(--card-shadow);border:1px solid var(--border-color);max-width:900px;width:95%;min-height:80vh;position:relative;overflow:hidden;transition:all .6s cubic-bezier(.25,.46,.45,.94);animation:slideInUp .8s cubic-bezier(.25,.46,.45,.94)}.auth-wrapper{position:relative;min-height:80vh;display:flex;flex-direction:column}.theme-toggle-container{position:absolute;top:1rem;right:1rem;z-index:10}.main-content{padding:2rem;min-height:80vh;display:flex;flex-direction:column}.content{flex:1;display:flex;flex-direction:column}.section-title{color:var(--text-primary);font-size:1.4rem;font-weight:600;margin:1.5rem 0 .75rem}.section-title.plain{background:none;-webkit-text-fill-color:initial}.tracks-container{display:grid;gap:.5rem}.tracks-container.minimal{grid-template-columns:1fr}.track-row{display:flex;gap:.75rem;align-items:center;padding:.5rem .75rem;border:1px solid var(--border-color);border-radius:6px;text-decoration:none;color:var(--text-primary);background:var(--bg-secondary);transition:background .2s ease}.track-row:hover{background:var(--bg-primary)}.track-row .thumb{width:48px;height:48px;border-radius:4px;object-fit:cover}.track-row .t-meta{display:flex;flex-direction:column;min-width:0}.track-row .t-name{font-size:.95rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-row .t-artist{font-size:.75rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-row .index{width:1.5rem;font-size:.75rem;opacity:.7}.track-row .grow{flex:1}.track-row .duration{font-size:.7rem;opacity:.6}.track-card:nth-child(1){animation-delay:.1s}.track-card:nth-child(2){animation-delay:.2s}.track-card:nth-child(3){animation-delay:.3s}.track-card:nth-child(4){animation-delay:.4s}.track-card:nth-child(5){animation-delay:.5s}.track-card:nth-child(6){animation-delay:.6s}.track-card:nth-child(7){animation-delay:.7s}.track-card:nth-child(8){animation-delay:.8s}.track-card:nth-child(9){animation-delay:.9s}.track-card:nth-child(10){animation-delay:1s}.track-card:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);transition:left .6s ease}.track-card:hover:before{left:100%}.track-card:hover{transform:translateY(-8px) scale(1.02);box-shadow:var(--card-shadow),0 16px 40px var(--shadow-color);border-color:var(--border-color)}.track-image{width:70px;height:70px;border-radius:12px;object-fit:cover;transition:all .4s ease;box-shadow:0 4px 12px var(--shadow-color)}.track-card:hover .track-image{transform:scale(1.1) rotate(5deg);box-shadow:0 8px 20px var(--shadow-color)}.track-info{flex:1;text-align:left;min-width:0}.track-info h3{margin:0 0 .5rem;font-size:1.1rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .3s ease}.track-info p{margin:0;color:var(--text-secondary);font-size:.9rem;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .3s ease}.track-card:hover .track-info p{opacity:1;color:var(--text-primary)}@keyframes slideInUp{0%{opacity:0;transform:translateY(60px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.data-toggles{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.5rem}.data-toggles .toggle-group{display:flex;gap:.75rem}.data-toggles label{font-size:.75rem;display:flex;gap:.25rem;align-items:center;cursor:pointer}.data-toggles select{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;padding:.35rem .5rem;font-size:.75rem}.btn.small{font-size:.7rem;padding:.4rem .7rem;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer}.btn.small.active{background:#1db954;color:#fff;border-color:#1db954}.btn.small.active:hover{background:#1ed760;border-color:#1ed760}.btn.small:hover{background:var(--bg-primary)}.btn.small:disabled{opacity:.6;cursor:not-allowed}.artists-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.75rem}.artist-card{text-decoration:none;color:var(--text-primary);border:1px solid var(--border-color);padding:.5rem;border-radius:8px;display:flex;flex-direction:column;align-items:center;gap:.5rem;background:var(--bg-secondary)}.artist-card img{width:80px;height:80px;object-fit:cover;border-radius:50%}.artist-name{font-size:.7rem;text-align:center;font-weight:600}.artist-genres{font-size:.6rem;text-align:center;opacity:.7;color:var(--text-secondary)}.artist-popularity{font-size:.6rem;text-align:center;opacity:.8;color:var(--text-primary)}.playlists-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem}.playlist-card{text-decoration:none;color:var(--text-primary);border:1px solid var(--border-color);padding:.5rem;border-radius:8px;display:flex;flex-direction:column;gap:.5rem;background:var(--bg-secondary)}.playlist-card img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:4px}.playlist-name{font-size:.75rem;font-weight:600}.playlist-total{font-size:.65rem;opacity:.7;color:var(--text-secondary)}.receipt-wrapper{margin-top:1rem;display:flex;justify-content:center}.paper{background:url(../paper.png) center/cover no-repeat,#fff;width:320px;min-height:500px;padding:1.25rem .9rem 2rem;color:#111;font-family:Courier New,monospace;box-shadow:0 4px 12px #0003;border:1px solid #ccc}[data-theme=dark] .paper{background:url(../paper.png) center/cover no-repeat,#111;color:#eee}.r-head{text-align:center;border-bottom:1px dashed #999;padding-bottom:.5rem;margin-bottom:.75rem}.r-head .store{letter-spacing:2px;margin:0 0 .25rem;font-size:1rem}.meta{font-size:.55rem;line-height:1.2}.r-body{display:flex;flex-direction:column;gap:.35rem}.line{display:flex;gap:.4rem;font-size:.6rem;align-items:baseline}.line .idx{opacity:.6;width:1.1rem}.line .t{flex:1;text-decoration:none;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.line .artist{opacity:.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:45%}.line .duration{opacity:.6;font-size:.5rem;margin-left:auto;white-space:nowrap}.r-foot{margin-top:1rem;border-top:1px dashed #999;padding-top:.5rem;font-size:.55rem;text-align:center}.barcode{display:flex;justify-content:center;gap:2px;margin:.4rem 0}.barcode span{display:block;width:2px;background:#111;height:24px}[data-theme=dark] .barcode span{background:#eee}.f1{font-family:Courier New,monospace}.f2{font-family:monospace;font-weight:500}.f3{font-family:Courier New,monospace;font-style:italic}.f4{font-family:Courier New,monospace;letter-spacing:1px}[data-theme]{transition:all .6s cubic-bezier(.25,.46,.45,.94)}@media (max-width: 768px){.app{width:98%;min-height:90vh;border-radius:16px}.main-content{padding:1.5rem}.tracks-container{grid-template-columns:1fr;gap:1rem}.section-title{font-size:1.5rem}.track-card{padding:1rem}.track-image{width:60px;height:60px}}@media (max-width: 480px){.app{width:100%;border-radius:0;min-height:100vh}.main-content{padding:1rem}.track-card{padding:.75rem;gap:.75rem}.track-image{width:50px;height:50px}.track-info h3{font-size:1rem}.track-info p{font-size:.85rem}}
