 :root {
     --loveloom-main-font:
         "Noto Sans", "Noto Sans", -apple-system, BlinkMacSystemFont,
         "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif,
         "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
 }

 html,
 body,
 input,
 button,
 select,
 textarea {
     font-family: var(--loveloom-main-font) !important;
     font-synthesis: weight;
 }

 .fas,
 .far,
 .fab,
 .fa,
 .bi,
 [class^="bi-"],
 [class*=" bi-"],
 .material-icons,
 i,
 svg text {
     font-family:
         "Font Awesome 6 Free", "Font Awesome 6 Brands", "bootstrap-icons",
         "Material Icons" !important;
 }

 body {
     -webkit-font-smoothing: antialiased;
     -moz-osx-font-smoothing: grayscale;
     text-rendering: optimizeLegibility;
 }

 html {
     width: 100dvw !important;
     height: 100%;
     overflow: hidden;
 }

 body {
     margin: 0;
     padding: 0;
     overflow: hidden;
     background-color: #000;
     color: white;
     font-family:
         "Noto Sans", "Noto Sans JP", "Noto Sans KR", "Noto Sans SC",
         "Noto Sans TC", "Noto Sans Arabic", "Noto Sans Devanagari",
         "Noto Sans Hebrew", "Noto Sans Thai", sans-serif;
     cursor: grab;
     overflow: hidden;
     width: 100dvw !important;
     height: 100vh;
 }

 canvas {
     width: 100%;
     height: 100vh;
     display: block;
 }

 #love-container {
     position: absolute;
     top: 0;
     left: 0;
     width: 100%;
     height: 100%;
     z-index: 1000;
     perspective: 800px;
     -webkit-perspective: 800px;
     pointer-events: none;
     touch-action: none;
     contain: strict;
 }

 .orbiting-item {
     position: absolute;
     top: 0;
     left: 0;
     will-change: transform, opacity;
     pointer-events: auto;
     cursor: pointer;
     transform-style: preserve-3d;
     -webkit-transform-style: preserve-3d;
 }

 .orbiting-item.focused {
     z-index: 9999 !important;
 }

 .orbiting-item.focused img {
     width: 150px;
     height: 150px;
     border-radius: 5px;
     transition:
         width 0.4s ease,
         height 0.4s ease,
         border-radius 0.4s ease;
 }

 .orbiting-item img,
 .orbiting-item p {
     will-change: transform;
     filter: drop-shadow(0 0 10px var(--item-shadow-color, rgba(255, 105, 180, 0.7)));
     -webkit-filter: drop-shadow(0 0 10px var(--item-shadow-color, rgba(255, 105, 180, 0.7)));
     transition: filter 0.3s ease-out;
     transform-origin: center center;
     transform-style: preserve-3d;
     -webkit-transform-style: preserve-3d;
 }

 .orbiting-item:hover img,
 .orbiting-item:hover p {
     filter: drop-shadow(0 0 18px var(--item-highlight-color, rgba(255, 182, 193, 1)));
     -webkit-filter: drop-shadow(0 0 18px var(--item-highlight-color, rgba(255, 182, 193, 1)));
     transform: scale(1.1);
 }

 .orbiting-item img {
     width: 36px;
     height: 36px;
     border-radius: 9px;
     object-fit: cover;
 }

 .orbiting-item p {
     font-size: 12px;
     font-weight: 700;
     color: #fff;
     text-shadow:
         0 0 4px #fff,
         0 0 8px rgba(255, 105, 180, 0.8),
         0 0 5px rgba(255, 21, 147, 0.6);
     padding: 2px 4px;
     white-space: nowrap;
     border-radius: 4px;
     font-family:
         "Noto Sans", "Noto Sans JP", "Noto Sans KR", "Noto Sans SC",
         "Noto Sans TC", "Noto Sans Arabic", "Noto Sans Devanagari",
         "Noto Sans Hebrew", "Noto Sans Thai", sans-serif;
 }

 @keyframes pulse-item {
     50% {
         transform: scale(1.06);
     }
 }

 #theme-selector {
     position: fixed;
     bottom: 20px;
     left: 20px;
     transform: translateX(0);
     padding: 10px;
     background: rgba(255, 255, 255, 0.1);
     border: 1px solid rgba(255, 255, 255, 0.2);
     border-radius: 20px;
     backdrop-filter: blur(12px);
     -webkit-backdrop-filter: blur(12px);
     box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
     display: flex;
     gap: 12px;
     z-index: 10;
 }

 .theme-swatch {
     width: 30px;
     height: 30px;
     border-radius: 50%;
     cursor: pointer;
     border: 2px solid rgba(255, 255, 255, 0.3);
     transition:
         transform 0.2s ease,
         box-shadow 0.2s ease;
 }

 .theme-swatch:hover {
     transform: scale(1.15);
     box-shadow: 0 0 15px rgba(255, 255, 255, 0.5);
 }

 .theme-swatch.active {
     border-color: #ffffff;
     box-shadow: 0 0 20px #ffffff;
     transform: scale(1.15);
 }

 .control-btn {
     width: 30px;
     height: 30px;
     border-radius: 50%;
     cursor: pointer;
     border: 2px solid rgba(255, 255, 255, 0.3);
     display: flex;
     justify-content: center;
     align-items: center;
     color: #fff;
     transition:
         transform 0.2s ease,
         box-shadow 0.2s ease,
         background 0.3s ease;
 }

 .control-btn:hover {
     transform: scale(1.15);
     box-shadow: 0 0 15px rgba(255, 255, 255, 0.5);
 }

 #fullscreen-btn {
     background: linear-gradient(45deg, #ffffff, #cccccc);
     color: #000;
     font-size: 12px;
     font-weight: bold;
     font-family:
         "Noto Sans", "Noto Sans JP", "Noto Sans KR", "Noto Sans SC",
         "Noto Sans TC", "Noto Sans Arabic", "Noto Sans Devanagari",
         "Noto Sans Hebrew", "Noto Sans Thai", sans-serif;
 }

 #explode-btn {
     background: linear-gradient(45deg, #ff8c00, #ff0080);
 }

 #explode-btn.active {
     box-shadow: 0 0 20px #ff6347;
     transform: scale(1.15);
     pointer-events: none;
     background: linear-gradient(45deg, #ff4500, #d30061);
 }

 #theme-selector::before {
     content: "";
     position: absolute;
     top: -5px;
     left: -5px;
     right: -5px;
     bottom: -5px;
     z-index: -1;
     background: linear-gradient(45deg,
             #ff1493,
             #ff69b4,
             #ff8c00,
             #ff1493,
             #ff69b4);
     background-size: 400% 400%;
     animation: gradientBorder 15s ease infinite;
     border-radius: 25px;
     filter: blur(8px);
     opacity: 0.7;
 }

 @keyframes gradientBorder {
     0% {
         background-position: 0% 50%;
     }

     50% {
         background-position: 100% 50%;
     }

     100% {
         background-position: 0% 50%;
     }
 }

 @media (max-width: 768px) {
     #theme-selector {
         left: 50%;
         transform: translateX(-50%);
         bottom: 15px;
         padding: 8px;
         gap: 8px;
     }

     .theme-swatch,
     .control-btn {
         width: 28px;
         height: 28px;
     }

     .orbiting-item img {
         width: 30px;
         height: 30px;
     }

     .orbiting-item p {
         font-size: 10px;
         font-family:
             "Noto Sans", "Noto Sans JP", "Noto Sans KR", "Noto Sans SC",
             "Noto Sans TC", "Noto Sans Arabic", "Noto Sans Devanagari",
             "Noto Sans Hebrew", "Noto Sans Thai", sans-serif;
     }
 }

 /* #orientation-overlay {
     position: fixed;
     top: 0;
     left: 0;
     width: 100%;
     height: 100%;
     background-color: #000;
     z-index: 9999;
     display: none;
     flex-direction: column;
     justify-content: center;
     align-items: center;
     text-align: center;
     color: #fff;
     font-family:
         "Noto Sans", "Noto Sans JP", "Noto Sans KR", "Noto Sans SC",
         "Noto Sans TC", "Noto Sans Arabic", "Noto Sans Devanagari",
         "Noto Sans Hebrew", "Noto Sans Thai", sans-serif;
 }

 #orientation-overlay svg {
     animation: rotate-icon 2s linear infinite;
 }

 #orientation-overlay p {
     margin-top: 20px;
     font-size: 16px;
     max-width: 250px;
     font-family:
         "Noto Sans", "Noto Sans JP", "Noto Sans KR", "Noto Sans SC",
         "Noto Sans TC", "Noto Sans Arabic", "Noto Sans Devanagari",
         "Noto Sans Hebrew", "Noto Sans Thai", sans-serif;
 } */

 @keyframes rotate-icon {
     from {
         transform: rotate(0deg);
     }

     to {
         transform: rotate(90deg);
     }
 }

 /* @media screen and (max-width: 768px) and (orientation: portrait) {
     #orientation-overlay {
         display: flex;
     }

     body>canvas,
     #love-container,
     #theme-selector {
         display: none !important;
     }
 }

 .orbiting-item.unfocused {
     opacity: 0.1 !important;
     pointer-events: none;
     transition: opacity 0.5s ease-in-out;
 }

 .text-white {
     color: white !important;
 }

 .btn-audio-toggle,
 .btn-fullscreen-toggle {
     background-color: rgba(0, 0, 0, 0.356);
     padding: 10px;
     border-radius: 50%;
     border: none;
     cursor: pointer;
 }

 .music-status {
     display: flex;
     position: fixed;
     top: 15px;
     left: 50%;
     transform: translateX(-50%);
     background-color: rgba(0, 0, 0, 0.7);
     color: white;
     padding: 8px 15px;
     border-radius: 20px;
     z-index: 9999;
     align-items: center;
     font-family: sans-serif;
     font-size: 14px;
 }

 .music-status .spinner {
     border: 3px solid #f3f3f3;
     border-top: 3px solid #a259f7;
     border-radius: 50%;
     width: 18px;
     height: 18px;
     animation: spin 1s linear infinite;
     margin-right: 10px;
 } */