body,button{font-family:Comfortaa,sans-serif}.icon-button{background:none;border:0;margin:0;padding:0}.modal.react-modal-open{display:block}.modal-content>.close{background:none;border:0;margin:0;padding:0}.wave-letter{display:inline-block;animation:title-wave 2.5s ease-in-out infinite;animation-delay:calc(var(--letter) * -.1s)}@keyframes title-wave{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.error-message{color:#a33}.main-content,.text-center{text-align:center}.info-icon{position:absolute;top:24px;right:24px;font-size:1.5rem;color:#21b799;cursor:pointer;z-index:1001;transition:color .2s}.info-icon:hover{color:#178f6b}.page-navigation{position:absolute;top:24px;left:24px;z-index:1001}.page-info-icon,.network-info-icon,.page-menu-icon{isolation:isolate;display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#21b799;font-size:1.5rem;transition:color .2s ease}.page-info-icon,.network-info-icon{position:absolute;top:64px;right:auto;left:24px}.page-menu-icon{position:relative}.page-menu-icon:hover{color:#178f6b}.page-navigation-menu{position:fixed;z-index:2200;top:0;left:0;display:flex;flex-direction:column;gap:8px;width:min(180px,80vw);height:100vh;height:100dvh;box-sizing:border-box;padding:18px;border:0;background:#fff;visibility:hidden;transform:translate(-100%);pointer-events:none;transition:transform .25s ease,visibility .25s ease}.page-navigation-menu.open{visibility:visible;transform:translate(0);pointer-events:auto}.page-drawer-title{margin:0 36px 0 0;color:#333;font-size:18px;font-weight:700;line-height:28px}.page-navigation-backdrop{position:fixed;z-index:2100;top:0;right:0;bottom:0;left:0;margin:0;padding:0;border:0;background:#00000040;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s ease,visibility .25s ease}.page-navigation-backdrop.open{opacity:1;visibility:visible;pointer-events:auto}.page-navigation-menu .page-drawer-link{display:flex;align-items:center;gap:8px;margin:0;padding:8px 10px;border:3px solid #ccc;border-radius:5px;background:#fff;color:#21b799;font-size:16px;white-space:nowrap;text-align:left;transition:border-color .2s ease,background-color .2s ease,color .2s ease}.page-navigation-menu .page-drawer-link i{flex:0 0 18px;width:18px;text-align:center}.page-navigation-menu .page-drawer-link:hover{border-color:#21b799;background-color:#afe;color:#ff6b6b}.page-drawer-close{position:absolute;top:18px;right:20px;margin:0;padding:0;border:0;background:none;color:#aaa;font-size:28px;line-height:1}.page-drawer-close:hover{color:#333}.network-page{width:min(1200px,calc(100% - 40px));margin:0 auto 40px;text-align:left}.network-toolbar,.network-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;color:#68736f;font-size:13px}.network-toolbar{flex-direction:column;justify-content:center;gap:8px;margin-bottom:10px;text-align:center}.network-search-settings{position:relative;display:grid;grid-template-columns:minmax(0,250px) 43px;gap:12px;width:305px;max-width:100%}.network-search-settings>input{box-sizing:border-box;width:100%;height:43px;padding:10px 14px;border:3px solid #ccc;border-radius:8px;font:13px Comfortaa,sans-serif}.network-search-settings>input:focus{outline:none;border-color:#21b799}.network-settings-button{display:flex;align-items:center;justify-content:center;width:43px;height:43px;margin:0;padding:0;border:3px solid #ccc;border-radius:8px;background:#fff;color:#21b799;font-size:18px;line-height:1;transition:border-color .2s ease,background-color .2s ease,color .2s ease}.network-settings-button:hover,.network-settings-button.active{border-color:#21b799;background:#afe;color:#ff6b6b}.network-settings-panel{position:absolute;z-index:10;top:51px;left:50%;width:min(350px,calc(100vw - 32px));box-sizing:border-box;padding:12px;transform:translate(-50%);border:3px solid #ccc;border-radius:8px;background:#fff;text-align:left;font-size:13px}.network-settings-panel h3{margin:4px 5px 8px;color:#444;font-size:13px}.network-genre-buttons{display:flex;flex-wrap:wrap;justify-content:flex-start}.network-genre-buttons .filter-button{margin:4px;background:#fff;font-size:13px}.network-genre-buttons .filter-button.active,.network-genre-buttons .filter-button:hover{background:#afe}.network-other-options{margin-top:14px;padding-top:10px;border-top:1px solid #ddd}.network-other-options .network-highlight-option{justify-content:flex-start;width:calc(100% - 8px);margin:2px 4px 5px;font-size:13px}.network-legend{justify-content:center;margin:24px 2px 8px;text-align:center}.network-legend span{display:inline-flex;align-items:center;gap:6px}.network-highlight-option{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.network-highlight-option input{width:auto;max-width:none;margin:0;padding:0;accent-color:#21b799}.legend-dot{width:10px;height:10px;border-radius:50%}.artist-dot{background:#21b799}.song-dot{background:#ff6b6b}.legend-line{width:22px;border-top:2px dashed #ff6b6b}.network-stage{height:68vh;min-height:440px;position:relative;overflow:hidden;border:3px solid #ccc;border-radius:12px;background:transparent}.network-stage canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.network-stage.graph-fullscreen{position:fixed;z-index:1500;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;height:100dvh;min-height:0;border:0;border-radius:0;background:#fff}.graph-fullscreen-button{position:absolute;z-index:4;top:12px;right:12px;display:flex;align-items:center;justify-content:center;width:43px;height:43px;margin:0;padding:0;border:3px solid #ccc;border-radius:8px;background:#fffffff0;color:#21b799;font-size:16px;line-height:1;transition:border-color .2s ease,background-color .2s ease,color .2s ease}.graph-fullscreen-button:hover{border-color:#21b799;background-color:#afe;color:#ff6b6b}.graph-fullscreen-search{position:absolute;z-index:4;top:12px;left:50%;width:305px;max-width:calc(100% - 80px);transform:translate(-50%)}.graph-fullscreen-search .network-search-settings{width:100%}.graph-fullscreen-search .network-settings-panel{top:51px}.network-tooltip{position:absolute;top:67px;right:12px;display:flex;flex-direction:column;gap:4px;max-width:min(420px,calc(100% - 56px));padding:10px 12px;border:3px solid #ccc;border-radius:8px;background:#fffffff0;font-size:12px;pointer-events:none}.network-tooltip span{color:#68736f}.network-controls-list{padding-left:24px;list-style:disc outside;text-align:left;line-height:1.6}.network-controls-list li{display:list-item;margin:7px 0}.artist-text{color:#117b66;font-weight:700}.song-text{color:#c53c52;font-weight:700}@media(max-width:600px){.network-page{width:calc(100% - 20px)}.network-search-settings>input{font-size:16px}.graph-fullscreen-search{width:calc(100% - 134px);max-width:305px}}@media(hover:none){.filter-button:hover:not(.active){border-color:#ccc;background-color:#fff;color:inherit}.network-settings-button:hover:not(.active){border-color:#ccc;background:#fff;color:#21b799}}.modal{display:none;position:fixed;z-index:2000;left:0;top:0;width:100%;height:100%;background-color:#00000080}.modal-content{font-size:11pt;background-color:#fff;margin:0;padding:30px;border-radius:8px;width:80%;max-width:600px;max-height:80vh;overflow-y:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}p{line-height:1.5}#highlight{background-color:#a0f8e6}.close{position:absolute;top:10px;right:20px;font-size:28px;font-weight:700;cursor:pointer;color:#aaa;transition:color .2s ease}.close:hover{color:#000}.recent-song-content{max-width:600px;text-align:center}.recent-song-info{margin-bottom:20px}.recent-song-info h2{margin-bottom:10px;color:#333}.recent-song-info p{margin:5px 0;color:#666}#recent-song-player{margin-top:20px}#recent-song-player iframe{max-width:100%;border-radius:8px}.loading{color:#666;font-style:italic;padding:20px}h1{margin-top:40px;font-weight:1200;font-size:40px}button{margin:5px;padding:5px 10px;cursor:pointer}.filter-button{margin:5px;padding:8px 16px;cursor:pointer;border:3px solid #ccc;background-color:#f8f8f8;border-radius:8px;transition:all .2s ease}.filter-button:hover{border:3px solid #21b799;background-color:#afe;color:#ff6b6b}.filter-button.active{background-color:#afe;border-color:#21b799}#filter-buttons{margin:20px auto;width:95%;max-width:1200px}#search-container{margin:-5px auto 20px;width:95%;text-align:center}#search-input{width:100%;max-width:250px;padding:10px 15px;border:3px solid #ccc;border-radius:8px;font-size:14px;font-family:Comfortaa,sans-serif;transition:border-color .2s ease}#search-input:focus{outline:none;border-color:#21b799}#search-input::placeholder{color:#999}#results-counter{margin-top:8px;font-size:14px;color:#666}table{border-collapse:collapse;margin:20px auto 40px;width:95%;max-width:1200px;table-layout:fixed;border:3px solid #ccc}th,td{border:1px solid #ccc;padding:6px 12px;word-wrap:break-word;word-break:break-word;font-size:11pt;transition:background-color .2s ease}tr:hover td{background-color:#d0fff5}th:hover{background-color:#afe}th{cursor:pointer;border-width:1px solid #ccc;border-bottom-width:3px}th:nth-child(1),td:nth-child(1){width:20%;min-width:70px}th:nth-child(2),td:nth-child(2){width:22%;min-width:80px}th:nth-child(3),td:nth-child(3){width:30%}th:nth-child(4),td:nth-child(4){width:40%}th{background-color:#f2f2f2}a{color:#21b799;text-decoration:none;transition:color .2s ease}a:hover{color:#ff6b6b}a:active{color:#aeada7}.link-preview{position:fixed;z-index:3000;background:#fff;border:1px solid #ccc;border-radius:8px;box-shadow:0 4px 12px #00000026;padding:10px;max-width:320px;max-height:220px;overflow:hidden}.preview-content{text-align:right}.preview-content img{border-radius:4px;display:block;margin-left:auto;margin-right:0}.preview-fallback{color:#999;font-style:italic;padding:20px}.preview-date-arrows{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:10px}.preview-date-arrows h2{margin:0 8px;font-size:1.3em;font-weight:600}.arrow-btn{background:#f8f8f8;border:3px solid #ccc;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:18px;color:#21b799;cursor:pointer;transition:background .2s,border-color .2s,color .2s}.arrow-btn .fa-caret-left,.arrow-btn .fa-caret-right{font-size:24px}.arrow-btn:disabled{color:#ccc;border-color:#eee;cursor:not-allowed;background:#fafafa}.arrow-btn:hover:not(:disabled){background:#e8e8e8;border:3px solid #21b799;color:#ff6b6b}#calendar-container{max-width:1200px;margin:0 auto;padding:0 20px 20px}#calendar-navigation{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:0}#calendar-navigation .left-buttons,#calendar-navigation .right-buttons{display:flex;gap:4px}.calendar-date-picker{position:relative}.calendar-date-button{display:flex;align-items:center;margin:0;padding:5px 8px;border:0;border-radius:6px;background:transparent;color:#333;font:700 1.5em Comfortaa,sans-serif}.calendar-date-button:hover,.calendar-date-button[aria-expanded=true]{color:#178f6b}.calendar-date-menu{position:absolute;z-index:20;top:calc(100% + 8px);left:50%;width:250px;box-sizing:border-box;padding:12px;border:3px solid #ccc;border-radius:8px;background:#fff;transform:translate(-50%)}.calendar-date-menu select{width:100%;box-sizing:border-box;margin-bottom:10px;padding:7px 9px;border:2px solid #ccc;border-radius:5px;background:#fff;font:13px Comfortaa,sans-serif}.calendar-month-options{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.calendar-month-options button{margin:0;padding:7px 4px;border:2px solid #ccc;border-radius:5px;background:#fff;font-size:12px}.calendar-month-options button:hover:not(:disabled),.calendar-month-options button.active{border-color:#21b799;background:#afe;color:#ff6b6b}.calendar-month-options button:disabled{border-color:#eee;background:#fafafa;color:#ccc;cursor:not-allowed}#calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:20px}.calendar-day-header{text-align:center;font-weight:700;color:#666;padding:10px;font-size:.9em}.calendar-day{min-height:140px;border:1px solid #e0e0e0;border-radius:8px;padding:8px;background:#fff;transition:all .2s ease;position:relative;width:100%;min-width:0;box-sizing:border-box}.calendar-day:hover{border-color:#ccc;box-shadow:0 2px 8px #0000001a}.calendar-day.has-song{border:3px solid #ccc;cursor:pointer}.calendar-day.has-song:hover{border:3px solid #21b799;transform:translateY(-2px)}.calendar-day.most-recent{background:#afe!important}.calendar-day-number{font-size:.9em;color:#666;margin-bottom:4px;font-weight:500}.calendar-song{font-size:.75em;line-height:1.3;color:#333;cursor:pointer;transition:color .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-song:hover{color:#ff6b6b}.calendar-song:active{color:#aeada7}.calendar-song-artist{font-size:.7em;color:#888;margin-top:2px;font-style:italic}.calendar-song-icon{font-size:.8em;margin-right:4px;color:#666}.calendar-song-thumbnail{width:100%;height:60px;background-size:cover;background-position:center;background-repeat:no-repeat;border-radius:4px;margin-bottom:4px;background-color:#f0f0f0;transition:all .2s ease}.calendar-song-thumbnail.thumbnail-loaded{background-color:transparent}.calendar-day.has-song:hover .calendar-song-thumbnail{transform:scale(1.05);box-shadow:0 2px 8px #0003}.calendar-day.empty{border-color:#f0f0f0}.calendar-day.empty:hover{border-color:#e0e0e0}@media(max-width:768px){#calendar-grid{gap:4px}.calendar-day{min-height:120px;padding:4px}.calendar-song-thumbnail{height:45px}.calendar-song{font-size:.65em;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:1.2;white-space:normal}.calendar-song-artist{font-size:.6em;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.calendar-day-number{font-size:.8em}}@media(max-width:800px){#calendar-grid{grid-template-columns:repeat(7,1fr);gap:2px}.calendar-day{min-height:100px;padding:2px}.calendar-song-thumbnail{height:35px}.calendar-song{font-size:.6em;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:1.2;white-space:normal}.calendar-song-artist{font-size:.55em;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.calendar-song-icon{display:none}}
