:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#213547;background-color:#fff;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;min-width:320px;min-height:100vh}#root{width:100%;height:100%}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}button{background-color:#f9f9f9}.fullscreen-exit-btn{position:absolute!important;inset:auto auto 16px 16px!important;direction:ltr!important;transform:none;z-index:9999;width:40px;height:40px;border-radius:50%;border:none;cursor:pointer;font-size:18px;font-weight:500;display:flex;align-items:center;justify-content:center;transition:opacity .2s ease,background .2s ease;background:#dc3545b3;color:#fff;box-shadow:0 2px 8px #0003;opacity:.85}.fullscreen-exit-btn:hover,.fullscreen-exit-btn:focus{opacity:1;transform:scale(1.1);background:#dc3545e6}.fullscreen-exit-btn.light{background:#dc3545bf;color:#fff;box-shadow:0 2px 10px #00000040}.fullscreen-exit-btn.light:hover,.fullscreen-exit-btn.light:focus{background:#dc3545f2}.fullscreen-exit-btn.dark{background:#dc3545a6;color:#fff;box-shadow:0 2px 8px #00000026}.fullscreen-exit-btn.dark:hover,.fullscreen-exit-btn.dark:focus{background:#dc3545e6}@media(max-width:768px){.fullscreen-exit-btn{width:44px;height:44px;font-size:20px;bottom:12px!important;left:12px!important;right:auto!important}}.chords-fullscreen-header{position:fixed;top:0;left:0;right:0;z-index:100;padding:8px 60px;background:linear-gradient(180deg,#fffffff2,#ffffffd9 70%,#fff0);text-align:center;font-family:Rubik,Heebo,-apple-system,BlinkMacSystemFont,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chords-fullscreen-header.rtl{direction:rtl}.chords-fullscreen-header.ltr{direction:ltr}.chords-fs-title{font-size:.95rem;font-weight:600;color:#333}.chords-fs-separator{color:#999;margin:0 .15em}.chords-fs-artist{font-size:.9rem;font-weight:400;color:#555}.chords-fs-credits{font-size:.8rem;font-weight:400;color:#777}@media(max-width:600px){.chords-fullscreen-header{padding:8px 50px}.chords-fs-credits,.chords-fs-credits+.chords-fs-separator{display:none}}.sandbox-mobile-blocker{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem;text-align:center;background:linear-gradient(135deg,#f8f9fa,#e9ecef)}.blocker-content{background:#fff;padding:3rem 2rem;border-radius:16px;box-shadow:0 4px 20px #0000001a;max-width:400px}.blocker-icon{font-size:4rem;display:block;margin-bottom:1rem}.blocker-content h2{font-size:1.5rem;color:var(--text-primary);margin-bottom:.5rem}.blocker-content p{color:var(--text-secondary);margin-bottom:.5rem}.blocker-english{font-size:.9rem;color:#999;font-style:italic}.sandbox-view{position:fixed;inset:0;display:flex;flex-direction:column;background:#f5f5f5;overflow:hidden}.sandbox-toolbar{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#fff;border-bottom:1px solid var(--border-color);flex-shrink:0;gap:1rem}.toolbar-left{display:flex;align-items:center;gap:.75rem}.toolbar-right{display:flex;align-items:center;gap:.5rem}.toolbar-btn{width:36px;height:36px;border-radius:6px;border:1px solid var(--border-color);background:#fff;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.toolbar-btn:hover{background:var(--secondary-color)}.toolbar-btn.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.expand-btn.active{background:#e3f2fd;border-color:#90caf9;color:var(--text-primary)}.sandbox-toolbar .mode-toggle{display:flex;border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.sandbox-toolbar .mode-toggle button{padding:.4rem .75rem;border:none;background:#fff;cursor:pointer;font-size:.85rem;display:flex;align-items:center;gap:.3rem;transition:all .2s}.sandbox-toolbar .mode-toggle button:first-child{border-left:1px solid var(--border-color)}.sandbox-toolbar .mode-toggle button.active{background:var(--primary-color);color:#fff}.sandbox-toolbar .mode-toggle button:hover:not(.active){background:var(--secondary-color)}.sandbox-toolbar .direction-toggle{display:flex;border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.sandbox-toolbar .direction-toggle button{padding:.4rem .6rem;border:none;background:#fff;cursor:pointer;font-size:.75rem;font-weight:600;transition:all .2s}.sandbox-toolbar .direction-toggle button:first-child{border-left:1px solid var(--border-color)}.sandbox-toolbar .direction-toggle button.active{background:#8b5a00;color:#fff}.sandbox-toolbar .direction-toggle button:hover:not(.active){background:var(--secondary-color)}.sandbox-split-pane{flex:1;display:flex;flex-direction:row;direction:ltr;min-height:0;gap:1px;background:var(--border-color)}.sandbox-split-pane.expanded .sandbox-preview{flex:1}.sandbox-split-pane.expanded .sandbox-editor{display:none}.sandbox-preview{flex:1;display:flex;flex-direction:column;background:#fff;min-width:0;overflow:hidden}.sandbox-preview.expanded{flex:1}.preview-header{display:flex;align-items:center;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid var(--border-color);flex-shrink:0;gap:.75rem;min-height:44px}.preview-header.rtl{direction:rtl}.preview-header.ltr{direction:ltr}.preview-title{font-weight:600;font-size:.9rem;color:var(--text-secondary);flex-shrink:0}.preview-metadata{flex:1;font-size:.85rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-metadata .metadata-title{font-weight:600}.preview-metadata .metadata-artist{color:var(--text-secondary)}.preview-metadata .metadata-credits{color:#888;font-size:.8rem}.loading-indicator{animation:pulse 1s ease-in-out infinite;flex-shrink:0}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.preview-empty,.preview-error{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:1.1rem;padding:2rem;text-align:center}.preview-error{color:var(--error-color);background:#fff5f5}.sandbox-preview-container{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;position:relative;background:#fff}.sandbox-preview-container:has(.lyrics-container.lyrics){background-image:var(--viewer-bg, url(/backgrounds/bg1.webp));background-size:cover;background-position:center;background-repeat:no-repeat;background-color:#e8f0e3}.sandbox-preview-container:has(.lyrics-container.lyrics):before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#fffdf58c,#f8f6ee73,#fffdf58c);z-index:0;pointer-events:none}.sandbox-preview-container>*{position:relative;z-index:1}.sandbox-preview-container .lyrics-container{flex:1;min-height:0}.sandbox-preview-container .lyrics-container.lyrics{background:transparent}.sandbox-preview-container .lyrics-container.lyrics .line-lyric .lyric{color:#1a3a2a;font-family:Rubik,Heebo,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:600;text-shadow:0 1px 2px rgba(255,255,255,.8),0 0 20px rgba(255,255,255,.4)}.sandbox-preview-container .lyrics-container.lyrics .line-cue .cue{color:#8b4513;font-family:Rubik,Heebo,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:700;text-shadow:0 1px 2px rgba(255,255,255,.8),0 0 15px rgba(255,255,255,.3)}.sandbox-preview-container .line{cursor:pointer;transition:background-color .15s ease;border-radius:2px;padding:0 4px;margin:0 -4px}.sandbox-preview-container .line:hover{background-color:#4a90d91a}.sandbox-preview-container .line.sandbox-highlighted{background-color:#4a90d940!important}.sandbox-editor{flex:1;display:flex;flex-direction:column;background:#fff5e6;min-width:0;overflow:hidden}.sandbox-editor.hidden{display:none}.editor-header{display:flex;align-items:center;padding:.5rem 1rem;background:bisque;border-bottom:1px solid #ffcc99;flex-shrink:0;gap:.75rem;min-height:44px}.editor-header.rtl{direction:rtl}.editor-header.ltr{direction:ltr}.editor-title{font-weight:600;font-size:.9rem;color:#8b5a00;flex-shrink:0}.editor-metadata{flex:1;font-size:.85rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.editor-metadata .metadata-title{font-weight:600}.editor-metadata .metadata-artist{color:var(--text-secondary)}.editor-content-wrapper{flex:1;position:relative;display:flex;flex-direction:column;min-height:0;overflow:hidden}.sandbox-textarea{flex:1;width:100%;padding:1rem;border:none;outline:none;resize:none;font-family:Cousine,Courier New,Courier,monospace;font-size:.9rem;line-height:1.5;background:transparent;color:var(--text-primary);position:relative;z-index:2;overflow-y:auto}.sandbox-textarea.rtl{text-align:right}.sandbox-textarea.ltr{direction:ltr;text-align:left}.sandbox-textarea::placeholder{color:#c96}.editor-line-highlight{position:absolute;left:0;right:0;top:calc(1rem + var(--highlight-line, 0) * 1.35rem - var(--scroll-offset, 0px));height:1.35rem;background:#ffa50066;pointer-events:none;z-index:1;transition:top .05s ease-out}:root{--primary-color: #4a90d9;--primary-dark: #357abd;--secondary-color: #f8f9fa;--text-primary: #1a1a1a;--text-secondary: #666;--border-color: #e0e0e0;--success-color: #28a745;--error-color: #dc3545;--warning-color: #ffc107;--chord-color: #0000ff;--directive-color: #228b22;--cue-color: #dc143c;--header-height: 60px;--content-padding: 1rem}*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;height:100%;overflow:hidden}body{font-family:Heebo,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--secondary-color);color:var(--text-primary);height:100vh;height:100dvh;overflow:hidden;max-width:100vw;touch-action:pan-y pinch-zoom}.app{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow-y:auto;overflow-x:hidden;overscroll-behavior-x:none;padding-bottom:env(safe-area-inset-bottom,0)}.app-main{flex:1;width:100%;padding:var(--content-padding);padding-top:calc(var(--header-height) + var(--content-padding))}.rtl{direction:rtl;text-align:right}.ltr{direction:ltr;text-align:left}.app-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background:#fff;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:0 1rem;z-index:200}.header-left{display:flex;align-items:center;gap:1rem}.logo{font-size:1.25rem;font-weight:700;color:var(--primary-color);text-decoration:none}.connection-status{font-size:.75rem}.connection-status.connected{color:var(--success-color)}.connection-status.disconnected{color:var(--error-color)}.header-nav{display:flex;gap:.5rem}.header-nav a{padding:.5rem 1rem;text-decoration:none;color:var(--text-secondary);border-radius:4px;transition:all .2s}.header-nav a:hover{background:var(--secondary-color)}.header-nav a.active{color:var(--primary-color);background:#4a90d91a}.header-right{display:flex;align-items:center;gap:.5rem}.admin-info{display:flex;align-items:center;gap:.5rem;position:relative}.admin-menu-btn{padding:.25rem .5rem;font-size:1.25rem;background:transparent;border:1px solid var(--border-color);border-radius:4px;cursor:pointer;line-height:1}.admin-menu-btn:hover{background:var(--hover-bg)}.admin-menu-dropdown{position:absolute;top:100%;left:0;background:#fff;border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 12px #00000026;min-width:140px;z-index:200;overflow:hidden;margin-top:4px}.admin-menu-dropdown .menu-item{display:block;width:100%;padding:.75rem 1rem;text-align:right;background:transparent;border:none;cursor:pointer;font-size:.9rem;white-space:nowrap}.admin-menu-dropdown .menu-item:hover:not(:disabled){background:var(--hover-bg)}.admin-menu-dropdown .menu-item:disabled{opacity:.5;cursor:not-allowed}.admin-menu-dropdown .menu-item:not(:last-child){border-bottom:1px solid var(--border-color)}.login-link{color:var(--primary-color);text-decoration:none}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;gap:1rem}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-container{text-align:center;padding:2rem}.error-container button{margin-top:1rem;padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:4px;cursor:pointer}.search-view{width:100%;max-width:100%;padding:0}.search-header{position:sticky;top:var(--header-height);z-index:50;background:#fff;padding:1rem;margin-bottom:.5rem;border-bottom:1px solid var(--border-color);width:100%}.search-header h1{text-align:center;margin-bottom:1rem}.search-controls{display:flex;gap:.5rem;width:100%}.search-input{flex:1;padding:.75rem 1rem;font-size:1rem;border:1px solid var(--border-color);border-radius:8px;direction:rtl;background-color:#fff;color:var(--text-primary)}.search-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #4a90d91a}.search-clear-btn{padding:.75rem 1rem;background:var(--secondary-color);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:.4rem;font-size:.95rem;color:var(--text-color);flex-shrink:0;white-space:nowrap}.search-clear-btn:hover{background:#e8e8e8}.search-clear-btn .clear-icon{color:#dc3545;font-weight:700}.reload-btn{padding:.75rem;background:var(--secondary-color);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;font-size:1.1rem;flex-shrink:0}@media(max-width:480px){.search-header{padding:.75rem .5rem}.search-controls{gap:.35rem}.search-input{padding:.6rem .75rem;font-size:.95rem;min-width:0}.search-clear-btn{padding:.6rem .65rem;font-size:.85rem}.reload-btn{padding:.6rem;font-size:1rem}}.songs-list{display:grid;gap:.4rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));padding:0 .5rem 2rem;width:100%}.no-results{text-align:center;color:var(--text-secondary);padding:2rem;grid-column:1 / -1}.song-item{display:flex;align-items:center;justify-content:space-between;padding:.35rem .5rem;background:#fff;border:1px solid var(--border-color);border-radius:4px;direction:rtl;transition:background-color .3s ease;min-width:0;width:100%}.song-item.song-status-playing{background-color:#d4edda;border-color:#a3d9a5}.song-item.song-status-pending{background-color:#fff9c4;border-color:khaki}.song-item.song-status-played{background-color:#e9ecef;border-color:#ced4da}.song-info{flex:1;display:flex;flex-direction:column;cursor:pointer;min-width:0;overflow:hidden}.song-info:hover .song-name{color:var(--primary-color)}.song-name{font-weight:600;font-size:.8rem;line-height:1.2;transition:color .2s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-artist{font-size:.7rem;line-height:1.2;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.private-badge{font-size:.75rem;margin-right:.5rem}.song-actions{display:flex;gap:.5rem;flex-shrink:0}.present-btn,.queue-btn{padding:.2rem .35rem;border-radius:4px;border:none;cursor:pointer;font-size:.8rem;font-weight:600;transition:all .2s;min-width:24px;text-align:center}.present-btn{background:var(--primary-color);color:#fff}.present-btn:hover{background:var(--primary-dark)}.queue-btn{background:var(--success-color);color:#fff}.queue-form,.queue-form-inline{display:flex;gap:.25rem}.queue-form input,.queue-form-inline input{width:120px;padding:.5rem;border:1px solid var(--border-color);border-radius:4px}.queue-form button,.queue-form-inline button{padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background:#fff;cursor:pointer}.song-view{position:fixed;top:var(--header-height);left:0;right:0;bottom:0;display:flex;flex-direction:column;background:#fff;overflow:hidden}.song-view-fullscreen-container{flex:1;display:flex;flex-direction:column;min-height:0;position:relative}.song-view-fullscreen-container.fullscreen-container{background-image:var(--viewer-bg, url(/backgrounds/bg1.webp));background-size:cover;background-position:center;background-repeat:no-repeat;background-color:#e8f0e3}.song-view-fullscreen-container.fullscreen-container:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#fffdf58c,#f8f6ee73,#fffdf58c);z-index:0}.song-view-fullscreen-container.fullscreen-container .lyrics-container.lyrics{flex:1;position:relative;z-index:1;background:transparent}.song-view-fullscreen-container.fullscreen-container .lyrics-container.lyrics .line-lyric .lyric{color:#1a3a2a;font-family:Rubik,Heebo,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:600;text-shadow:0 1px 2px rgba(255,255,255,.8),0 0 20px rgba(255,255,255,.4);letter-spacing:.01em}.song-view-fullscreen-container.fullscreen-container .lyrics-container.lyrics .line-cue .cue{color:#8b4513;font-family:Rubik,Heebo,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:700;text-shadow:0 1px 2px rgba(255,255,255,.8),0 0 15px rgba(255,255,255,.3)}.song-view-fullscreen-container.fullscreen-container .lyrics-container.lyrics{column-rule:1px solid rgba(139,90,43,.2)}.song-view-fullscreen-container.fullscreen-container.is-fullscreen .lyrics-container.lyrics{padding-top:0}.action-buttons .fullscreen-btn.song-view-fullscreen{background:#2d8a6e;color:#fff;border:1px solid #247a5f;transition:background-color .2s ease;padding:0;width:32px;height:32px;border-radius:4px;display:flex;align-items:center;justify-content:center}.action-buttons .fullscreen-btn.song-view-fullscreen:before{content:"";display:block;width:16px;height:16px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cpolyline points='9 21 3 21 3 15'/%3E%3Cpolyline points='21 15 21 21 15 21'/%3E%3Cpolyline points='3 9 3 3 9 3'/%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.action-buttons .fullscreen-btn.song-view-fullscreen:hover{background:#236b55}.song-top-bar{display:flex;align-items:center;justify-content:space-between;padding:.35rem .5rem;background:#f5f5f5;border-bottom:1px solid var(--border-color);flex-shrink:0;gap:.5rem}.song-title-compact{font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:center}.song-title-compact .artist{font-weight:400;color:var(--text-secondary);margin-right:.5rem}.song-title-compact .credits-compact{font-weight:400;font-size:.85em;color:var(--text-secondary)}.back-btn{padding:.25rem .5rem;background:#fff;border:1px solid var(--border-color);border-radius:4px;cursor:pointer;font-size:.8rem;flex-shrink:0}.mode-toggle{display:flex;border:1px solid var(--border-color);border-radius:4px;overflow:hidden;flex-shrink:0}.mode-toggle button{padding:.25rem .6rem;border:none;background:#fff;cursor:pointer;font-size:.8rem}.mode-toggle button.active{background:var(--primary-color);color:#fff}.action-buttons{display:flex;gap:.25rem;flex-shrink:0}.action-buttons .present-btn,.action-buttons .queue-btn{padding:.25rem .5rem;font-size:.8rem}.song-header{display:none}.lyrics-container{flex:1;background:#fff;padding:.5rem;font-family:Heebo,-apple-system,BlinkMacSystemFont,sans-serif;white-space:pre-wrap;overflow:hidden;column-gap:1rem;column-rule:1px solid #ddd;column-fill:balance;font-size:var(--dynamic-font-size, 1rem);line-height:1.35}.lyrics-container.verse-single{transition:font-size 1s ease-in-out}.lyrics-container.verse-single.measuring{transition:none}.lyrics-container.chords{font-family:Cousine,Courier New,Courier,monospace;font-weight:700;padding:.25rem;line-height:1.2}.lyrics-container.chords .line{min-height:1em}.lyrics-container.lyrics{font-family:Heebo,-apple-system,BlinkMacSystemFont,sans-serif}.lyrics-container.lyrics .line{white-space:nowrap}.playing-now-view .lyrics-container.lyrics{background-image:var(--viewer-bg, url(/backgrounds/bg1.webp));background-size:cover;background-position:center;background-repeat:no-repeat;position:relative;background-color:#e8f0e3}.playing-now-view .lyrics-container.lyrics:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#fffdf58c,#f8f6ee73,#fffdf58c);z-index:0}.playing-now-view .lyrics-container.lyrics>*{position:relative;z-index:1}.playing-now-view .lyrics-container.lyrics .line-lyric .lyric{color:#1a3a2a;font-family:Rubik,Heebo,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:600;text-shadow:0 1px 2px rgba(255,255,255,.8),0 0 20px rgba(255,255,255,.4);letter-spacing:.01em}.playing-now-view .lyrics-container.lyrics .line-cue .cue{color:#8b4513;font-family:Rubik,Heebo,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:700;text-shadow:0 1px 2px rgba(255,255,255,.8),0 0 15px rgba(255,255,255,.3)}.playing-now-view .lyrics-container.lyrics .line-empty{min-height:.6em}.playing-now-view .lyrics-container.lyrics{column-rule:1px solid rgba(139,90,43,.2)}.playing-now-view .lyrics-container.lyrics.verse-single:before{background:radial-gradient(ellipse at center,#fffdf566,#f8f6ee8c 60%,#f5f3eba6)}.playing-now-view .lyrics-container.lyrics.verse-single .line-lyric .lyric{font-size:1.15em;text-shadow:0 1px 3px rgba(255,255,255,.9),0 0 25px rgba(255,255,255,.5)}.playing-now-view .lyrics-container.lyrics.verse-single .verse-transition-wrapper,.playing-now-view .lyrics-container.lyrics.verse-single .verse-partial-scroll{position:relative;z-index:1}.lyrics-container{column-count:1}@media(min-width:500px){.lyrics-container{column-count:2}}@media(min-width:700px){.lyrics-container{column-count:3}}@media(min-width:900px){.lyrics-container{column-count:4}}@media(min-width:1100px){.lyrics-container{column-count:5}}.lyrics-section{break-inside:avoid;page-break-inside:avoid;margin-bottom:.8em}.line{min-height:1.2em;white-space:pre}.line-chords .chords{color:#00f;font-weight:700}.rtl .line-chords{direction:ltr;text-align:right;unicode-bidi:bidi-override}.line-directive .directive,.line-chords .directive{color:var(--directive-color);font-weight:600;font-style:normal;font-size:1.1em}.line-cue .cue{color:var(--cue-color);font-weight:600;font-style:normal;font-size:1.1em}.line-lyric .lyric{color:#1a1a1a}.playing-now-view{position:fixed;top:var(--header-height);left:0;right:0;bottom:0;display:flex;flex-direction:column;background:#fff;overflow:hidden;overflow-x:hidden;-webkit-overflow-scrolling:touch;max-width:100vw;isolation:isolate}.playing-now-view .song-top-bar{display:flex;align-items:center;justify-content:space-between;padding:.35rem .5rem;background:#f5f5f5;border-bottom:1px solid var(--border-color);flex-shrink:0;gap:.5rem}.playing-now-splash{display:flex;align-items:center;justify-content:center;flex:1}.splash-content{text-align:center}.splash-content h1{font-size:2.5rem;margin-bottom:1rem}.qr-placeholder{width:200px;height:200px;margin:2rem auto;background:var(--border-color);display:flex;align-items:center;justify-content:center;border-radius:8px}.admin-controls{display:flex;gap:.25rem;flex-shrink:0}.admin-controls button{width:32px;height:32px;border-radius:4px;border:1px solid var(--border-color);background:#fff;cursor:pointer;font-size:.9rem;display:flex;align-items:center;justify-content:center}.admin-controls button:hover{background:var(--secondary-color)}.admin-controls button.disabled{opacity:.4;cursor:not-allowed}.admin-controls button.disabled:hover{background:#fff}.admin-controls button.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.verse-indicator{font-size:.75rem;color:var(--text-secondary);padding:.25rem .5rem;background:var(--secondary-color);border-radius:4px;margin-right:.25rem}.viewer-controls{display:flex;gap:.25rem;flex-shrink:0}.viewer-controls button{width:32px;height:32px;border-radius:4px;border:1px solid var(--border-color);background:#fff;cursor:pointer;font-size:.9rem;display:flex;align-items:center;justify-content:center}.viewer-controls button:hover{background:var(--secondary-color)}.viewer-controls button.active{background:var(--primary-color)}.fullscreen-container{display:flex;flex-direction:column;flex:1;min-height:0;position:relative;overflow:hidden;max-width:100%;width:100%}.fullscreen-container.is-fullscreen{background-image:var(--viewer-bg, url(/backgrounds/bg1.webp));background-size:cover;background-position:center;background-repeat:no-repeat}.fullscreen-song-header{flex-shrink:0;padding:1.25rem 2rem;text-align:center;background:linear-gradient(180deg,#fffdf5eb,#fffdf5bf 60%,#fffdf58c);box-shadow:0 2px 12px #00000014}.fullscreen-song-header.rtl{direction:rtl}.fullscreen-song-header.ltr{direction:ltr}.fullscreen-title{font-family:Rubik,Heebo,-apple-system,BlinkMacSystemFont,sans-serif;font-size:clamp(1.75rem,4vw,3rem);font-weight:700;color:#1a3a2a;margin:0 0 .2rem;text-shadow:0 1px 2px rgba(255,255,255,.9);letter-spacing:.01em}.fullscreen-artist{font-family:Rubik,Heebo,-apple-system,BlinkMacSystemFont,sans-serif;font-size:clamp(1.1rem,2.5vw,1.75rem);font-weight:500;color:#3d5c4a;margin-bottom:.4rem}.fullscreen-credits{font-family:Heebo,-apple-system,BlinkMacSystemFont,sans-serif;font-size:clamp(.85rem,1.5vw,1.1rem);font-weight:400;color:#5a4a3a;opacity:.85;line-height:1.4}.fullscreen-container.is-fullscreen .lyrics-container.lyrics{background-image:none;background-color:transparent}.fullscreen-container.is-fullscreen:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#fffdf559,#f8f6ee73,#fffdf559);z-index:0;pointer-events:none}.fullscreen-container.is-fullscreen>*:not(.fullscreen-exit-btn){position:relative;z-index:1}.chords-fullscreen-container{display:flex;flex-direction:column;flex:1;min-height:0;position:relative;overflow:hidden;max-width:100%;width:100%}.chords-fullscreen-container.is-fullscreen{background:#fff}.chords-fullscreen-container.is-fullscreen .lyrics-container.in-fullscreen{padding-top:40px}.admin-controls-fullscreen{position:fixed;bottom:12px;left:50%;transform:translate(-50%);z-index:200;display:flex;align-items:center;gap:6px;padding:6px 12px;background:#ffffffd9;border-radius:8px;box-shadow:0 2px 12px #00000026;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:.4;transition:opacity .3s ease}.admin-controls-fullscreen:hover{opacity:1}.admin-controls-fullscreen button{padding:4px 8px;font-size:.85rem;background:#f5f5f5;border:1px solid #ddd;border-radius:4px;cursor:pointer;transition:all .2s ease}.admin-controls-fullscreen button:hover:not(:disabled){background:#e0e0e0}.admin-controls-fullscreen button:disabled{opacity:.4;cursor:not-allowed}.admin-controls-fullscreen button.active{background:#e3f2fd;border-color:#90caf9}.admin-controls-fullscreen .verse-indicator{font-size:.8rem;color:#666;margin:0 4px}.admin-controls-fullscreen .exit-fullscreen-btn{background:#f8d7da;border-color:#f5c6cb;color:#721c24}.admin-controls-fullscreen .exit-fullscreen-btn:hover{background:#f1b0b7}.viewer-controls .fullscreen-btn,.admin-controls .fullscreen-btn{background:#2d8a6e;color:#fff;border:1px solid #247a5f;transition:background-color .2s ease;padding:0}.viewer-controls .fullscreen-btn:before,.admin-controls .fullscreen-btn:before{content:"";display:block;width:18px;height:18px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cpolyline points='9 21 3 21 3 15'/%3E%3Cpolyline points='21 15 21 21 15 21'/%3E%3Cpolyline points='3 9 3 3 9 3'/%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.viewer-controls .fullscreen-btn:hover,.admin-controls .fullscreen-btn:hover{background:#236b55;color:#fff;border-color:var(--primary-color)}.viewer-controls .lock-btn{background:#f5f5f5;color:#666;border:1px solid var(--border-color);transition:all .2s ease}.viewer-controls .lock-btn:hover{background:#e0e0e0}.viewer-controls .lock-btn.locked{background:#fff3cd;border-color:#ffc107}.viewer-controls .lock-btn.locked:hover{background:#ffe69c}.viewer-controls button:disabled{opacity:.6;cursor:default;background:#f0f0f0;border-color:#ddd}.viewer-controls button:disabled:hover{background:#f0f0f0}.viewer-controls button:disabled.active{background:#e3f2fd;border-color:#90caf9}.lyrics-container.with-verse-highlight .line{cursor:pointer;transition:background-color .2s ease}.lyrics-container.with-verse-highlight .line:hover{background-color:#8000800d}.line.verse-highlighted{background-color:#8000801f!important;border-radius:2px;margin-left:-4px;margin-right:-4px;padding-left:4px;padding-right:4px}.lyrics-container.verse-single{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:1rem 2rem;column-count:1!important;overflow:hidden;max-width:100%;width:100%;box-sizing:border-box}.lyrics-container.verse-single .line{white-space:nowrap;text-align:center}.verse-transition-wrapper{position:relative;width:100%;height:100%;overflow:hidden;max-width:100%}.verse-transition-wrapper .verse-content{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;max-width:100%;box-sizing:border-box}.verse-transition-wrapper.transition-up .verse-content.outgoing{animation:slideOutUp 1s ease-in-out forwards}.verse-transition-wrapper.transition-up .verse-content.incoming{animation:slideInFromBelow 1s ease-in-out forwards}@keyframes slideOutUp{0%{transform:translateY(0)}to{transform:translateY(calc(-1 * var(--scroll-percent, 100%)))}}@keyframes slideInFromBelow{0%{transform:translateY(var(--scroll-percent, 100%))}to{transform:translateY(0)}}.verse-transition-wrapper.transition-down .verse-content.outgoing{animation:slideOutDown 1s ease-in-out forwards}.verse-transition-wrapper.transition-down .verse-content.incoming{animation:slideInFromAbove 1s ease-in-out forwards}@keyframes slideOutDown{0%{transform:translateY(0)}to{transform:translateY(var(--scroll-percent, 100%))}}@keyframes slideInFromAbove{0%{transform:translateY(calc(-1 * var(--scroll-percent, 100%)))}to{transform:translateY(0)}}.verse-partial-scroll{display:flex;flex-direction:column;justify-content:flex-start;align-items:center}.verse-partial-scroll.partial-up{animation:partialScrollUp 1s ease-in-out forwards}@keyframes partialScrollUp{0%{transform:translateY(0)}to{transform:translateY(calc(-1 * var(--scroll-percent)))}}.verse-partial-scroll.partial-down{transform:translateY(calc(-1 * var(--scroll-percent)));animation:partialScrollDown 1s ease-in-out forwards}@keyframes partialScrollDown{0%{transform:translateY(calc(-1 * var(--scroll-percent)))}to{transform:translateY(0)}}.queue-view{max-width:800px;margin:0 auto}.queue-header{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1.5rem}.queue-view h1{margin:0;text-align:center}.truncate-btn{padding:.5rem 1rem;background:var(--error-color);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s}.truncate-btn:hover{background:#c82333}.empty-queue{text-align:center;padding:3rem;color:var(--text-secondary)}.queue-groups{display:flex;flex-direction:column;gap:1.5rem}.queue-group{background:#fff;border-radius:8px;overflow:hidden;border:1px solid var(--border-color)}.group-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--secondary-color);border-bottom:1px solid var(--border-color)}.group-info{display:flex;flex-direction:column}.requester-name{font-weight:600}.request-count{color:var(--text-secondary);font-size:.875rem}.delete-group-btn{width:28px;height:28px;border-radius:4px;border:1px solid var(--border-color);background:#fff;color:var(--error-color);cursor:pointer;font-size:.875rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.delete-group-btn:hover{background:var(--error-color);color:#fff;border-color:var(--error-color)}.group-entries{display:flex;flex-direction:column}.queue-entry{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border-color)}.queue-entry:last-child{border-bottom:none}.queue-entry.played{opacity:.5;background:var(--secondary-color)}.entry-info{display:flex;flex-direction:column;flex:1;gap:.15rem}.entry-notes{font-size:.8rem;color:var(--text-secondary);font-style:italic;padding-top:.25rem;border-top:1px dashed var(--border-color);margin-top:.25rem}.queue-entry.has-notes{padding-top:.85rem;padding-bottom:.85rem}.entry-actions{display:flex;gap:.5rem;align-items:center}.delete-entry-btn{width:28px;height:28px;border-radius:4px;border:1px solid var(--border-color);background:#fff;color:var(--text-secondary);cursor:pointer;font-size:.75rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.delete-entry-btn:hover{background:var(--error-color);color:#fff;border-color:var(--error-color)}.played-badge{color:var(--success-color);font-size:.875rem}.login-view{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - var(--header-height) - 2rem)}.login-card{background:#fff;padding:2rem;border-radius:12px;box-shadow:0 4px 20px #0000001a;width:100%;max-width:400px}.login-card h1{text-align:center;margin-bottom:1.5rem}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500}.form-group input{width:100%;padding:.75rem;font-size:1rem;border:1px solid var(--border-color);border-radius:6px}.form-group input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #4a90d91a}.error-message{padding:.75rem;margin-bottom:1rem;background:#ffebee;color:var(--error-color);border-radius:6px;text-align:center}.login-card button[type=submit]{width:100%;padding:.75rem;font-size:1rem;background:var(--primary-color);color:#fff;border:none;border-radius:6px;cursor:pointer;transition:background .2s}.login-card button[type=submit]:hover{background:var(--primary-dark)}.login-card button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.transpose-controls{display:flex;align-items:center;gap:.15rem;flex-shrink:0}.transpose-controls button{width:28px;height:28px;border-radius:4px;border:1px solid var(--border-color);background:#fff;cursor:pointer;font-size:.75rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.transpose-controls .transpose-btn{font-size:1rem;padding:0}.transpose-controls .transpose-btn .arrow-up,.transpose-controls .transpose-btn .arrow-down{display:block;font-size:.9rem;line-height:1;color:var(--text-primary)}.transpose-controls button:hover:not(.disabled){background:var(--secondary-color)}.transpose-controls button.disabled{opacity:.4;cursor:not-allowed}.transpose-controls button.disabled .arrow-up,.transpose-controls button.disabled .arrow-down{color:#999}.transpose-controls .transpose-value{min-width:28px;text-align:center;font-size:.8rem;font-weight:600;color:var(--text-primary);font-family:monospace}.transpose-controls .out-of-sync-indicator{color:var(--warning-color);font-size:.6rem;margin-right:2px;vertical-align:super}.transpose-controls .sync-button{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.transpose-controls .sync-button:hover{background:var(--primary-dark);border-color:var(--primary-dark)}@media(max-width:768px){.app-header{padding:0 .5rem}.header-nav a{padding:.5rem;font-size:.875rem}.song-top-bar{flex-wrap:wrap;gap:.5rem}.admin-controls{top:auto;bottom:1rem;left:1rem;flex-direction:row}}.toast-container{position:fixed;top:calc(var(--header-height) + 1rem);left:50%;transform:translate(-50%);z-index:1000;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.25rem;border-radius:12px;box-shadow:0 4px 20px #00000026;animation:toastSlideIn .3s ease-out;pointer-events:auto;min-width:280px;max-width:400px}.toast-success{background:linear-gradient(135deg,#d4edda,#c3e6cb);border:1px solid #a3d9a5;color:#155724}.toast-error{background:linear-gradient(135deg,#f8d7da,#f5c6cb);border:1px solid #f5c6cb;color:#721c24}.toast-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;flex-shrink:0}.toast-success .toast-icon{background:#28a745;color:#fff}.toast-error .toast-icon{background:#dc3545;color:#fff}.toast-content{display:flex;flex-direction:column;gap:.2rem}.toast-message{font-weight:600;font-size:.95rem}.toast-song-name{font-size:.85rem;opacity:.85}.toast-exit{animation:toastFadeOut .3s ease-in forwards}@keyframes toastSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes toastFadeOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-10px) scale(.95)}}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:500;padding:1rem;animation:modalOverlayFadeIn .2s ease-out}@keyframes modalOverlayFadeIn{0%{opacity:0}to{opacity:1}}.queue-modal{background:#fff;border-radius:16px;box-shadow:0 8px 40px #0003;width:100%;max-width:400px;padding:1.5rem;direction:rtl;animation:modalSlideIn .25s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.modal-header h2{margin:0;font-size:1.25rem;color:var(--text-primary)}.modal-close-btn{width:32px;height:32px;border:none;background:transparent;color:var(--text-secondary);font-size:1.25rem;cursor:pointer;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .2s}.modal-close-btn:hover{background:var(--secondary-color);color:var(--text-primary)}.modal-song-info{display:flex;flex-direction:column;padding:1rem;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:10px;margin-bottom:1.25rem;text-align:center}.modal-song-name{font-weight:700;font-size:1.1rem;color:var(--text-primary);margin-bottom:.25rem}.modal-song-artist{color:var(--text-secondary);font-size:.9rem}.queue-modal .form-group{margin-bottom:1rem;position:relative}.queue-modal .form-group label{display:block;margin-bottom:.4rem;font-weight:500;font-size:.9rem;color:var(--text-primary)}.queue-modal .form-group label .optional{font-weight:400;color:var(--text-secondary);font-size:.8rem}.queue-modal .form-group input{width:100%;padding:.75rem 1rem;font-size:1rem;border:1px solid var(--border-color);border-radius:8px;background:#fff;color:var(--text-primary);transition:all .2s}.queue-modal .form-group input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #4a90d926}.queue-modal .form-group input:disabled{background:#f5f5f5;cursor:not-allowed}.queue-modal .char-count{position:absolute;left:.5rem;bottom:-1.25rem;font-size:.75rem;color:var(--text-secondary)}.modal-error{padding:.75rem;margin-bottom:1rem;background:#ffebee;color:var(--error-color);border-radius:8px;text-align:center;font-size:.9rem}.modal-actions{display:flex;gap:.75rem;margin-top:1.5rem}.modal-cancel-btn,.modal-submit-btn{flex:1;padding:.75rem 1rem;font-size:1rem;font-weight:600;border-radius:8px;cursor:pointer;transition:all .2s}.modal-cancel-btn{background:#fff;border:1px solid var(--border-color);color:var(--text-secondary)}.modal-cancel-btn:hover:not(:disabled){background:var(--secondary-color);color:var(--text-primary)}.modal-submit-btn{background:var(--success-color);border:none;color:#fff}.modal-submit-btn:hover:not(:disabled){background:#218838}.modal-cancel-btn:disabled,.modal-submit-btn:disabled{opacity:.6;cursor:not-allowed}
