{"id":297,"date":"2026-04-25T13:20:09","date_gmt":"2026-04-25T13:20:09","guid":{"rendered":"https:\/\/gamingwithdaopa.ellatha.com\/music\/?p=297"},"modified":"2026-04-28T10:29:00","modified_gmt":"2026-04-28T10:29:00","slug":"roots-and-wings-lyrics","status":"publish","type":"post","link":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/","title":{"rendered":"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026"},"content":{"rendered":"\r\n<article id=\"custom-article\" style=\"line-height: 1.6; color: #e6e6e6; background: #0a0a0f; padding: 0; border-radius: 0; max-width: 100%; margin: 0; font-family: Arial, system-ui, sans-serif;\">\r\n<!-- ==================== JSON-LD SCHEMA ==================== -->\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"MusicRecording\",\r\n  \"name\": \"Roots and Wings\",\r\n  \"byArtist\": {\r\n    \"@type\": \"MusicGroup\",\r\n    \"name\": \"DaOpa\"\r\n  },\r\n  \"duration\": \"PT5M04S\",\r\n  \"inLanguage\": \"en-US\",\r\n  \"isPartOf\": {\r\n    \"@type\": \"MusicAlbum\",\r\n    \"name\": \"Heartland Country Pop\"\r\n  },\r\n  \"lyrics\": {\r\n    \"@type\": \"CreativeWork\",\r\n    \"text\": \"Roots and Wings - Official Lyrics by DaOpa\\n\\nI stand in the doorway watching the sunrise glow\\nOn the faces of my children as they laugh and grow\\nTheir tiny hands in mine, pure and true\\nIn this old farmhouse, our dreams come into view\\n\\nDays may bring their struggles, nights their silent fears\\nBut together we face them, year after year\\n\\nRoots and wings, that's what family brings\\nDeep roots to hold us through life's hardest things\\nWings to chase the dreams beyond the hill\\nBut always returning to this love that fills\\n\\nSunday dinners steaming with love on every plate\\nGrandma's wisdom shared as the hour grows late\\nThrough harvests and hard times, we've planted and we've grown\\nIn the circle of our kin, we've never been alone\\n\\nWhen the winds of change blow cold and strong\\nOur family fire keeps us warm all along\\n\\nRoots and wings, that's what family brings\\nDeep roots to hold us through life's hardest things\\nWings to chase the dreams beyond the hill\\nBut always returning to this love that fills\\n\\nSometimes the path gets rocky, shadows fall so deep\\nBut your hands reach out and pull me from the steep\\nNo burden too heavy when carried side by side\\nIn this family bond, we take it all in stride\\n\\nRoots and wings, that's what family brings\\nDeep roots to hold us through life's hardest things\\nWings to chase the dreams beyond the hill\\nBut always returning to this love that fills\\nForever and always, through the years we roam\\nThis family is my country, this family is home\"\r\n  },\r\n  \"url\": \"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/\"\r\n}\r\n<\/script>\r\n<style>\r\n    :root {\r\n        --red: #ef4444;\r\n        --gold: #fbbf24;\r\n        --blue: #3b82f6;\r\n    }\r\n    #custom-article {\r\n        font-family: Arial, system-ui, -apple-system, sans-serif;\r\n        color: #f1f5f9;\r\n        background: #0a0a0f;\r\n        max-width: 1200px;\r\n        margin: 0 auto;\r\n        padding: 0;\r\n        line-height: 1.6;\r\n    }\r\n    .heartland-container {\r\n        max-width: 1200px;\r\n        margin: 0 auto;\r\n    }\r\n    .fa-heart.heart-favorited {\r\n        animation: heartBeat 0.8s infinite;\r\n    }\r\n    @keyframes heartBeat {\r\n        0%, 100% { transform: scale(1); }\r\n        50% { transform: scale(1.35); }\r\n    }\r\n    .hero {\r\n        position: relative;\r\n        height: 55vh;\r\n        min-height: 460px;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        overflow: hidden;\r\n        background-size: cover;\r\n        background-position: center;\r\n    }\r\n    .hero-overlay {\r\n        position: absolute;\r\n        inset: 0;\r\n        background: linear-gradient(to bottom, rgba(0,0,0,0.65), rgba(0,0,0,0.35), rgba(0,0,0,0.75));\r\n        z-index: 2;\r\n    }\r\n    .hero-content {\r\n        position: relative;\r\n        z-index: 10;\r\n        text-align: center;\r\n        padding: 0 20px;\r\n        max-width: 900px;\r\n    }\r\n    .patriot-badge {\r\n        display: inline-flex;\r\n        align-items: center;\r\n        gap: 8px;\r\n        background: rgba(255,255,255,0.1);\r\n        border: 1px solid rgba(255,255,255,0.2);\r\n        padding: 6px 16px;\r\n        border-radius: 9999px;\r\n        font-size: 11px;\r\n        letter-spacing: 2px;\r\n        margin-bottom: 24px;\r\n    }\r\n    .gradient-text {\r\n        background: linear-gradient(90deg, #ef4444, #fbbf24, #3b82f6);\r\n        -webkit-background-clip: text;\r\n        -webkit-text-fill-color: transparent;\r\n        background-size: 200% 100%;\r\n        animation: patriot-shift 4s linear infinite;\r\n    }\r\n    @keyframes patriot-shift {\r\n        0% { background-position: 0% 50%; }\r\n        100% { background-position: 200% 50%; }\r\n    }\r\n    .subtitle {\r\n        font-size: 26px;\r\n        color: #94a3b8;\r\n        margin-bottom: 32px;\r\n    }\r\n    .hero-buttons {\r\n        display: flex;\r\n        gap: 16px;\r\n        justify-content: center;\r\n        flex-wrap: wrap;\r\n    }\r\n    .btn-primary {\r\n        background: transparent;\r\n        color: #fff;\r\n        border: 2px solid #fbbf24;\r\n        padding: 16px 36px;\r\n        border-radius: 9999px;\r\n        font-weight: 700;\r\n        font-size: 17px;\r\n        display: inline-flex;\r\n        align-items: center;\r\n        gap: 10px;\r\n        text-decoration: none;\r\n        transition: all 0.2s;\r\n        box-shadow: 0 10px 30px rgba(0,0,0,0.3);\r\n    }\r\n    .btn-primary:hover {\r\n        background: #fbbf24;\r\n        color: #000;\r\n        transform: translateY(-2px);\r\n    }\r\n    .btn-secondary {\r\n        background: transparent;\r\n        color: #fff;\r\n        border: 1px solid rgba(255,255,255,0.3);\r\n        padding: 16px 28px;\r\n        border-radius: 9999px;\r\n        font-weight: 600;\r\n        display: inline-flex;\r\n        align-items: center;\r\n        gap: 10px;\r\n        transition: all 0.2s;\r\n    }\r\n    .btn-secondary:hover {\r\n        background: rgba(255,255,255,0.1);\r\n    }\r\n    .smart-player {\r\n        position: sticky;\r\n        top: 0;\r\n        z-index: 100;\r\n        background: rgba(18, 18, 24, 0.92);\r\n        backdrop-filter: blur(16px);\r\n        border-bottom: 1px solid rgba(255,255,255,0.1);\r\n        padding: 14px 24px;\r\n        box-shadow: 0 8px 30px rgba(0,0,0,0.4);\r\n    }\r\n    .player-inner {\r\n        max-width: 1200px;\r\n        margin: 0 auto;\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 20px;\r\n        flex-wrap: wrap;\r\n    }\r\n    .song-info {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 14px;\r\n        min-width: 220px;\r\n    }\r\n    .album-art {\r\n        width: 46px;\r\n        height: 46px;\r\n        background: linear-gradient(135deg, #ef4444, #fbbf24);\r\n        border-radius: 12px;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        color: white;\r\n        font-size: 22px;\r\n    }\r\n    .waveform {\r\n        display: flex;\r\n        align-items: flex-end;\r\n        height: 42px;\r\n        gap: 3px;\r\n        margin-left: 12px;\r\n    }\r\n    .waveform-bar {\r\n        width: 4px;\r\n        background: linear-gradient(to top, #ef4444, #fbbf24);\r\n        border-radius: 9999px;\r\n        animation: waveform-dance 1.1s infinite ease-in-out;\r\n        box-shadow: 0 0 6px rgba(239, 68, 68, 0.5);\r\n    }\r\n    .waveform-bar:nth-child(2) { animation-delay: 120ms; }\r\n    .waveform-bar:nth-child(3) { animation-delay: 280ms; }\r\n    .waveform-bar:nth-child(4) { animation-delay: 90ms; }\r\n    .waveform-bar:nth-child(5) { animation-delay: 410ms; }\r\n    @keyframes waveform-dance {\r\n        0%, 100% { height: 22%; }\r\n        50% { height: 100%; }\r\n    }\r\n    .progress-container {\r\n        flex: 1;\r\n        min-width: 220px;\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 12px;\r\n    }\r\n    .time {\r\n        font-family: monospace;\r\n        font-size: 12px;\r\n        color: #64748b;\r\n        width: 42px;\r\n        text-align: center;\r\n    }\r\n    .progress-bar {\r\n        flex: 1;\r\n        height: 5px;\r\n        background: rgba(255,255,255,0.15);\r\n        border-radius: 9999px;\r\n        position: relative;\r\n        cursor: pointer;\r\n    }\r\n    .progress-fill {\r\n        height: 100%;\r\n        background: linear-gradient(to right, #ef4444, #fbbf24);\r\n        border-radius: 9999px;\r\n        transition: width 0.1s linear;\r\n    }\r\n    .lyrics-wrapper {\r\n        background: #121218;\r\n        border-radius: 20px;\r\n        padding: 32px;\r\n        margin: 24px 0;\r\n        box-shadow: 0 25px 50px -12px rgb(0 0 0 \/ 0.4);\r\n        border: 1px solid rgba(255,255,255,0.06);\r\n    }\r\n    .lyric-line {\r\n        display: flex;\r\n        align-items: flex-start;\r\n        gap: 16px;\r\n        padding: 14px 20px;\r\n        border-radius: 16px;\r\n        margin-bottom: 6px;\r\n        transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\r\n        cursor: pointer;\r\n    }\r\n    .lyric-line:hover {\r\n        background: rgba(239, 68, 68, 0.07);\r\n        transform: translateX(6px);\r\n    }\r\n    .lyric-line.active {\r\n        background: linear-gradient(90deg, rgba(239,68,68,0.18), rgba(251,191,36,0.08));\r\n        box-shadow: 0 0 0 1px rgba(239, 68, 68, 0.35);\r\n        transform: scale(1.015);\r\n    }\r\n    .lyric-line.chorus {\r\n        background: rgba(239, 68, 68, 0.13);\r\n        border-left: 6px solid #ef4444;\r\n        font-weight: 700;\r\n        color: #fecaca;\r\n    }\r\n    .lyric-number {\r\n        font-family: monospace;\r\n        font-size: 12px;\r\n        color: #64748b;\r\n        width: 26px;\r\n        flex-shrink: 0;\r\n        padding-top: 3px;\r\n    }\r\n    .lyric-text {\r\n        flex: 1;\r\n        font-size: 1.05rem;\r\n        line-height: 1.5;\r\n    }\r\n    .lyric-note-preview {\r\n        margin-top: 10px;\r\n        padding: 10px 14px;\r\n        background: rgba(16, 185, 129, 0.12);\r\n        border-left: 4px solid #10b981;\r\n        border-radius: 8px;\r\n        font-size: 14.5px;\r\n        line-height: 1.45;\r\n        color: #a7f3d0;\r\n        white-space: pre-wrap;\r\n    }\r\n    .lyric-actions {\r\n        display: flex;\r\n        gap: 4px;\r\n        opacity: 0;\r\n        transition: opacity 0.2s;\r\n    }\r\n    .lyric-line:hover .lyric-actions {\r\n        opacity: 1;\r\n    }\r\n    .action-btn {\r\n        width: 32px;\r\n        height: 32px;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        color: #64748b;\r\n        border-radius: 9999px;\r\n        transition: all 0.2s;\r\n    }\r\n    .action-btn:hover {\r\n        color: #ef4444;\r\n        background: rgba(239,68,68,0.1);\r\n    }\r\n    .annotation-view {\r\n        background: #1a1a20;\r\n        border-radius: 16px;\r\n        padding: 20px;\r\n        margin-bottom: 16px;\r\n    }\r\n    .annotation-note {\r\n        margin-top: 12px;\r\n        padding: 12px 16px;\r\n        background: rgba(16, 185, 129, 0.12);\r\n        border-left: 4px solid #10b981;\r\n        border-radius: 8px;\r\n        font-size: 15px;\r\n        color: #a7f3d0;\r\n        white-space: pre-wrap;\r\n    }\r\n    .annotation-input {\r\n        width: 100%;\r\n        background: rgba(255,255,255,0.08);\r\n        border: 1px solid rgba(255,255,255,0.15);\r\n        border-radius: 12px;\r\n        padding: 12px 16px;\r\n        color: #e2e8f0;\r\n        font-size: 15px;\r\n        resize: vertical;\r\n        min-height: 68px;\r\n        margin-top: 8px;\r\n    }\r\n    .annotation-saved {\r\n        font-size: 13px;\r\n        color: #10b981;\r\n        margin-top: 4px;\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 6px;\r\n    }\r\n    .tabs {\r\n        display: flex;\r\n        border-bottom: 1px solid rgba(255,255,255,0.1);\r\n        margin-bottom: 24px;\r\n        gap: 8px;\r\n    }\r\n    .tab-btn {\r\n        padding: 14px 26px;\r\n        font-weight: 600;\r\n        color: #94a3b8;\r\n        background: transparent;\r\n        border: none;\r\n        cursor: pointer;\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 8px;\r\n        font-size: 15px;\r\n        transition: all 0.2s;\r\n    }\r\n    .tab-btn.active {\r\n        color: #ef4444;\r\n        border-bottom: 3px solid #ef4444;\r\n        margin-bottom: -1px;\r\n    }\r\n    .karaoke-modal {\r\n        position: fixed;\r\n        inset: 0;\r\n        background: rgba(0,0,0,0.96);\r\n        z-index: 200;\r\n        display: none;\r\n        align-items: center;\r\n        justify-content: center;\r\n        padding: 20px;\r\n    }\r\n    .karaoke-content {\r\n        max-width: 820px;\r\n        width: 100%;\r\n        text-align: center;\r\n        position: relative;\r\n    }\r\n    .karaoke-text {\r\n        font-size: 42px;\r\n        line-height: 1.15;\r\n        font-weight: 800;\r\n        color: white;\r\n        min-height: 110px;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        padding: 0 30px;\r\n        text-shadow: 0 4px 30px rgba(0,0,0,0.6);\r\n    }\r\n    .karaoke-annotation {\r\n        margin-top: 24px;\r\n        font-size: 18px;\r\n        color: #a7f3d0;\r\n        background: rgba(16, 185, 129, 0.15);\r\n        padding: 16px 24px;\r\n        border-radius: 16px;\r\n        border-left: 5px solid #10b981;\r\n        max-width: 620px;\r\n        margin-left: auto;\r\n        margin-right: auto;\r\n    }\r\n    .toast {\r\n        position: fixed;\r\n        bottom: 24px;\r\n        right: 24px;\r\n        background: #1e2937;\r\n        color: white;\r\n        padding: 14px 22px;\r\n        border-radius: 16px;\r\n        box-shadow: 0 10px 40px rgba(0,0,0,0.4);\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 12px;\r\n        z-index: 300;\r\n        max-width: 320px;\r\n        font-size: 14px;\r\n        border: 1px solid rgba(255,255,255,0.1);\r\n    }\r\n<\/style>\r\n<!-- INTRO PARAGRAPH -->\r\n<div style=\"margin-bottom: 48px; padding: 0 20px; max-width: 820px; margin-left: auto; margin-right: auto;\">\r\n    <p style=\"font-size: 1.15rem; line-height: 1.7; color: #cbd5e1; text-align:center;\"><br>\r\n        <strong>Roots and Wings<\/strong> is a heartfelt family ballad by DaOpa from the Heartland Country Pop album (2026). This touching track celebrates the beautiful balance between deep roots that ground us and the wings that let us soar \u2014 all within the love of family and home.\r\n        Read the full lyrics below, sync them with the official music video, enter karaoke mode, or add your own personal notes.\r\n    <\/p>\r\n<\/div>\r\n<!-- HERO -->\r\n<div class=\"hero\" id=\"hero-section\">\r\n    <div class=\"hero-overlay\"><\/div>\r\n    <div class=\"hero-content\">\r\n        <div class=\"patriot-badge\">\r\n            <i class=\"fa fa-flag\" style=\"color:#ef4444;\"><\/i>\r\n            <span style=\"letter-spacing:2.5px; font-size:10px;\">HEARTLAND COUNTRY POP<\/span>\r\n        <\/div>\r\n        <h1 id=\"hero-title\" style=\"font-size:72px; font-weight:900; line-height:0.92; letter-spacing:-3.5px; margin-bottom:8px;\"><\/h1>\r\n        <p id=\"hero-subtitle\" class=\"subtitle\"><\/p>\r\n        <div class=\"hero-buttons\">\r\n            <button onclick=\"enterKaraokeMode()\" class=\"btn-primary\" aria-label=\"Enter karaoke mode\">\r\n                <i class=\"fa fa-play\" style=\"margin-right:6px;\"><\/i> ENTER KARAOKE MODE\r\n            <\/button>\r\n            <button onclick=\"startPlayback()\" class=\"btn-secondary\" aria-label=\"Start playback\">\r\n                <i class=\"fa fa-headset\"><\/i> <span>Play Along<\/span>\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n<!-- STICKY SMART PLAYER -->\r\n<div class=\"smart-player\">\r\n    <div class=\"player-inner\">\r\n        <div class=\"song-info\">\r\n            <div class=\"album-art\"><i class=\"fa fa-music\"><\/i><\/div>\r\n            <div>\r\n                <div id=\"player-song-title\" style=\"font-weight:700; font-size:17px;\"><\/div>\r\n                <div id=\"player-artist\" style=\"font-size:12px; color:#64748b;\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <div style=\"display:flex; align-items:center; gap:12px; flex:1; min-width:280px;\">\r\n            <button onclick=\"togglePlayback()\" id=\"play-btn\"\r\n                    style=\"width:48px;height:48px;background:transparent;border:2px solid #f1f5f9;color:#f1f5f9;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 15px rgba(0,0,0,0.3);\"\r\n                    aria-label=\"Play or pause song\">\r\n                <i class=\"fa fa-play\" id=\"play-icon\" style=\"font-size:20px;margin-left:3px;\"><\/i>\r\n            <\/button>\r\n            <button onclick=\"restartPlayback()\" style=\"width:36px;height:36px;background:transparent;border:none;color:#64748b;cursor:pointer;\" aria-label=\"Restart song\">\r\n                <i class=\"fa fa-repeat\"><\/i>\r\n            <\/button>\r\n            <div class=\"progress-container\">\r\n                <div class=\"time\" id=\"current-time\" aria-live=\"polite\">0:00<\/div>\r\n                <div class=\"progress-bar\" id=\"progress-bar\" onclick=\"seekFromClick(event)\" role=\"slider\" aria-label=\"Seek through song\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"0\">\r\n                    <div class=\"progress-fill\" id=\"progress-fill\" style=\"width:0%\"><\/div>\r\n                    <input type=\"range\" id=\"progress-slider\" min=\"0\" max=\"100\" step=\"0.1\" value=\"0\" style=\"position:absolute;top:-6px;left:0;width:100%;height:18px;opacity:0;cursor:pointer;\" oninput=\"seekTo(this.value)\" aria-label=\"Song progress slider\">\r\n                <\/div>\r\n                <div class=\"time\" id=\"total-time\">4:10<\/div>\r\n            <\/div>\r\n            <div class=\"waveform\" id=\"waveform\">\r\n                <div class=\"waveform-bar\" style=\"height:28%\"><\/div>\r\n                <div class=\"waveform-bar\" style=\"height:65%\"><\/div>\r\n                <div class=\"waveform-bar\" style=\"height:92%\"><\/div>\r\n                <div class=\"waveform-bar\" style=\"height:48%\"><\/div>\r\n                <div class=\"waveform-bar\" style=\"height:78%\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <div style=\"display:flex;align-items:center;gap:12px;\">\r\n            <div style=\"display:flex;background:rgba(255,255,255,0.08);border-radius:9999px;padding:2px;font-size:12px;\">\r\n                <button onclick=\"setPlaybackSpeed(0.75)\" id=\"speed-075\" style=\"padding:5px 11px;border-radius:9999px;border:none;background:transparent;color:#94a3b8;cursor:pointer;\">0.75\u00d7<\/button>\r\n                <button onclick=\"setPlaybackSpeed(1)\" id=\"speed-1\" style=\"padding:5px 11px;border-radius:9999px;border:none;background:rgba(255,255,255,0.2);color:white;font-weight:700;cursor:pointer;\">1\u00d7<\/button>\r\n                <button onclick=\"setPlaybackSpeed(1.25)\" id=\"speed-125\" style=\"padding:5px 11px;border-radius:9999px;border:none;background:transparent;color:#94a3b8;cursor:pointer;\">1.25\u00d7<\/button>\r\n            <\/div>\r\n            <button onclick=\"toggleKaraoke()\" style=\"padding:8px 14px;border:1px solid rgba(255,255,255,0.2);background:transparent;color:white;border-radius:9999px;font-size:13px;display:flex;align-items:center;gap:6px;\" aria-label=\"Toggle karaoke mode\">\r\n                <i class=\"fa fa-microphone\"><\/i> <span style=\"font-size:13px;\">Karaoke<\/span>\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n<div class=\"heartland-container\" style=\"padding:0 20px 80px;\">\r\n    <!-- TABS -->\r\n    <div class=\"tabs\" role=\"tablist\">\r\n        <button onclick=\"switchTab(0)\" class=\"tab-btn active\" id=\"tab-0\" role=\"tab\" aria-selected=\"true\"><i class=\"fa fa-align-left\"><\/i> FULL LYRICS<\/button>\r\n        <button onclick=\"switchTab(1)\" class=\"tab-btn\" id=\"tab-1\" role=\"tab\"><i class=\"fa fa-microphone\"><\/i> KARAOKE<\/button>\r\n        <button onclick=\"switchTab(2)\" class=\"tab-btn\" id=\"tab-2\" role=\"tab\"><i class=\"fa fa-book\"><\/i> ANNOTATED<\/button>\r\n    <\/div>\r\n    <!-- LYRICS WRAPPER -->\r\n    <div class=\"lyrics-wrapper\">\r\n        <div id=\"lyrics-full\"><\/div>\r\n        <div id=\"lyrics-karaoke\" style=\"display:none;\"><\/div>\r\n        <div id=\"lyrics-annotated\" style=\"display:none;\"><\/div>\r\n    <\/div>\r\n    <!-- YOUTUBE PLAYER -->\r\n    <div style=\"max-width:1200px; margin:40px auto 20px; padding:0 20px;\">\r\n        <div style=\"font-size:13px; letter-spacing:1px; color:#64748b; margin-bottom:12px; text-align:center;\">OFFICIAL MUSIC PLAYER<\/div>\r\n        <div id=\"yt-player\" style=\"width:100%; aspect-ratio:16\/9; background:#000; border-radius:12px; overflow:hidden;\"><\/div>\r\n    <\/div>\r\n    <!-- LINKS -->\r\n    <div style=\"text-align:center; margin-top:56px;\">\r\n        <a id=\"youtube-link\" href=\"#\" target=\"_blank\" style=\"display:inline-flex;align-items:center;gap:10px;background:#ef4444;color:white;padding:14px 32px;border-radius:9999px;text-decoration:none;font-weight:600;margin-right:12px;\" aria-label=\"Watch on YouTube\"><i class=\"fa fa-youtube-play\" style=\"font-size:18px;\"><\/i> WATCH ON YOUTUBE<\/a>\r\n        <a id=\"spotify-link\" href=\"#\" target=\"_blank\" style=\"display:inline-flex;align-items:center;gap:10px;background:#1DB954;color:white;padding:14px 32px;border-radius:9999px;text-decoration:none;font-weight:600;\" aria-label=\"Listen on Spotify\"><i class=\"fa fa-spotify\" style=\"font-size:18px;\"><\/i> LISTEN ON SPOTIFY<\/a>\r\n    <\/div>\r\n    <noscript>\r\n        <div style=\"margin-top: 40px; padding-top: 30px; border-top: 1px dashed rgba(255,255,255,0.2); font-size: 1.05rem; line-height: 1.7; color: #cbd5e1;\">\r\n            <strong>\ud83d\udccb JavaScript is disabled.<\/strong> Here are the full official lyrics for you:<br><br>\r\nI stand in the doorway watching the sunrise glow<br>\r\nOn the faces of my children as they laugh and grow<br>\r\nTheir tiny hands in mine, pure and true<br>\r\nIn this old farmhouse, our dreams come into view<br><br>\r\n\r\nDays may bring their struggles, nights their silent fears<br>\r\nBut together we face them, year after year<br><br>\r\n\r\nRoots and wings, that&#8217;s what family brings<br>\r\nDeep roots to hold us through life&#8217;s hardest things<br>\r\nWings to chase the dreams beyond the hill<br>\r\nBut always returning to this love that fills<br><br>\r\n\r\nSunday dinners steaming with love on every plate<br>\r\nGrandma&#8217;s wisdom shared as the hour grows late<br>\r\nThrough harvests and hard times, we&#8217;ve planted and we&#8217;ve grown<br>\r\nIn the circle of our kin, we&#8217;ve never been alone<br><br>\r\n\r\nWhen the winds of change blow cold and strong<br>\r\nOur family fire keeps us warm all along<br><br>\r\n\r\nRoots and wings, that&#8217;s what family brings<br>\r\nDeep roots to hold us through life&#8217;s hardest things<br>\r\nWings to chase the dreams beyond the hill<br>\r\nBut always returning to this love that fills<br><br>\r\n\r\nSometimes the path gets rocky, shadows fall so deep<br>\r\nBut your hands reach out and pull me from the steep<br>\r\nNo burden too heavy when carried side by side<br>\r\nIn this family bond, we take it all in stride<br><br>\r\n\r\nRoots and wings, that&#8217;s what family brings<br>\r\nDeep roots to hold us through life&#8217;s hardest things<br>\r\nWings to chase the dreams beyond the hill<br>\r\nBut always returning to this love that fills<br>\r\nForever and always, through the years we roam<br>\r\nThis family is my country, this family is home\r\n        <\/div>\r\n    <\/noscript>\r\n    <p style=\"text-align:center; margin-top:32px; font-size:13px; color:#64748b;\">\r\n        Official Roots and Wings lyrics by DaOpa \u2022\r\n        <a href=\"#lyrics-full\" style=\"color:#3b82f6;\">Jump to interactive synced version \u2191<\/a>\r\n    <\/p>\r\n<\/div>\r\n<!-- KARAOKE MODAL -->\r\n<div id=\"karaoke-modal\" class=\"karaoke-modal\" onclick=\"if (event.target.id === 'karaoke-modal') closeKaraoke()\" aria-hidden=\"true\">\r\n    <div class=\"karaoke-content\" onclick=\"event.stopImmediatePropagation()\">\r\n        <button onclick=\"closeKaraoke()\" style=\"position:absolute;top:-12px;right:-12px;background:#1e2937;border:none;color:#94a3b8;width:42px;height:42px;border-radius:50%;font-size:24px;cursor:pointer;\" aria-label=\"Close karaoke mode\">\u00d7<\/button>\r\n        <div id=\"karaoke-current\" class=\"karaoke-text\"><\/div>\r\n        <div id=\"karaoke-annotation-display\" class=\"karaoke-annotation\" style=\"display:none;\"><\/div>\r\n        <div style=\"margin:32px 0;display:flex;justify-content:center;gap:40px;font-size:13px;color:#64748b;\">\r\n            <div>PREV: <span id=\"karaoke-prev\" style=\"color:#475569;\"><\/span><\/div>\r\n            <div>NEXT: <span id=\"karaoke-next\" style=\"color:#94a3b8;\"><\/span><\/div>\r\n        <\/div>\r\n        <div>\r\n            <button onclick=\"togglePlayback()\" style=\"padding:12px 32px;border:1px solid rgba(255,255,255,0.3);background:transparent;color:white;border-radius:9999px;margin-right:12px;\">PLAY \/ PAUSE<\/button>\r\n            <button onclick=\"closeKaraoke()\" style=\"padding:12px 32px;background:transparent;color:#fff;border:1px solid rgba(255,255,255,0.3);border-radius:9999px;font-weight:700;\">EXIT KARAOKE<\/button>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n<!-- TOAST CONTAINER -->\r\n<div id=\"toast-container\" style=\"position:fixed; bottom:24px; right:24px; z-index:300; display:flex; flex-direction:column; gap:10px;\"><\/div>\r\n<script>\r\n\/\/ ==================== CONFIG ====================\r\nconst CONFIG = {\r\n    songTitle: \"Roots and Wings\",\r\n    artist: \"DaOpa\",\r\n    youtubeVideoId: \"a6uDZMJdncU\",\r\n    spotifyUrl: \"https:\/\/open.spotify.com\/playlist\/2fUfJae1YkyYE9BHltB5ps\",\r\n    appleMusicUrl: \"\",\r\n    srtUrl: \"https:\/\/gamingwithdaopa.ellatha.com\/media\/music\/Roots-and-Wings.txt\",\r\n    heroBackgroundImage: \"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2026\/04\/Roots-and-Wings.jpg\"  \/\/ Update with your actual hero image URL\r\n};\r\n\/\/ ==================== GLOBAL VARIABLES ====================\r\nlet player;\r\nlet isPlaying = false;\r\nlet currentTime = 0;\r\nlet currentLyricIndex = -1;\r\nlet favorites = JSON.parse(localStorage.getItem(CONFIG.songTitle.replace(\/\\s+\/g, '-') + 'Favorites') || '[]');\r\nlet lyricsData = [];\r\nlet annotations = {};\r\nlet annotationMode = 'view';\r\n\/\/ ==================== SECURITY ====================\r\nfunction escapeHtml(unsafe) {\r\n    if (!unsafe) return '';\r\n    return unsafe\r\n        .replace(\/&\/g, \"&amp;\")\r\n        .replace(\/<\/g, \"&lt;\")\r\n        .replace(\/>\/g, \"&gt;\")\r\n        .replace(\/\"\/g, \"&quot;\")\r\n        .replace(\/'\/g, \"&#039;\");\r\n}\r\n\/\/ ==================== LOAD SRT ====================\r\nasync function loadSRT() {\r\n    try {\r\n        const response = await fetch(CONFIG.srtUrl);\r\n        if (!response.ok) throw new Error(\"Failed to fetch SRT\");\r\n        const srtText = await response.text();\r\n        lyricsData = parseSRT(srtText);\r\n        console.log(`\u2705 Loaded ${lyricsData.length} timed lyrics`);\r\n    } catch (e) {\r\n        console.error(\"SRT load failed\", e);\r\n        alert(\"Could not load the SRT file. Please make sure the SRT file is uploaded.\");\r\n    }\r\n}\r\nfunction parseSRT(srtText) {\r\n    const blocks = srtText.trim().split(\/\\n\\s*\\n\/);\r\n    const lyrics = [];\r\n    blocks.forEach((block, index) => {\r\n        const lines = block.trim().split('\\n');\r\n        if (lines.length < 3) return;\r\n        const timeLine = lines[1];\r\n        const [startStr] = timeLine.split(' --> ');\r\n        if (!startStr) return;\r\n        const [h, m, s] = startStr.split(':');\r\n        const [sec, ms] = (s || '0,0').split(',');\r\n        const timeMs = (parseInt(h||0)*3600000) + (parseInt(m||0)*60000) + (parseInt(sec||0)*1000) + parseInt(ms||0);\r\n        const text = lines.slice(2).join(' ').trim();\r\n        lyrics.push({\r\n            id: `l${index+1}`,\r\n            time: timeMs,\r\n            text: text,\r\n            type: (text.toLowerCase().includes(\"roots and wings\")) ? \"chorus\" : \"verse\"\r\n        });\r\n    });\r\n    return lyrics;\r\n}\r\n\/\/ ==================== ANNOTATIONS ====================\r\nfunction loadAnnotations() {\r\n    const key = `annotations-${CONFIG.songTitle.replace(\/\\s+\/g, '-')}`;\r\n    const saved = localStorage.getItem(key);\r\n    if (saved) annotations = JSON.parse(saved);\r\n}\r\nfunction saveAnnotations() {\r\n    const key = `annotations-${CONFIG.songTitle.replace(\/\\s+\/g, '-')}`;\r\n    localStorage.setItem(key, JSON.stringify(annotations));\r\n}\r\nfunction updateAnnotation(id, value) {\r\n    annotations[id] = value.trim();\r\n    saveAnnotations();\r\n    renderFullLyrics();\r\n    renderKaraokeList();\r\n    const indicator = document.getElementById(`saved-${id}`);\r\n    if (indicator) {\r\n        indicator.style.display = 'flex';\r\n        setTimeout(() => indicator.style.display = 'none', 1400);\r\n    }\r\n}\r\nfunction exportAnnotations() {\r\n    const dataStr = JSON.stringify(annotations, null, 2);\r\n    const dataUri = 'data:application\/json;charset=utf-8,'+ encodeURIComponent(dataStr);\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', dataUri);\r\n    link.setAttribute('download', `${CONFIG.songTitle}-annotations.json`);\r\n    link.click();\r\n    showToast(\"\u2705 Annotations exported\", \"success\");\r\n}\r\nfunction clearAllAnnotations() {\r\n    if (confirm(\"Clear ALL notes for this song?\")) {\r\n        annotations = {};\r\n        saveAnnotations();\r\n        renderAnnotatedTab();\r\n        renderFullLyrics();\r\n        renderKaraokeList();\r\n        showToast(\"All notes cleared\", \"success\");\r\n    }\r\n}\r\n\/\/ ==================== SHARE LYRIC LINE ====================\r\nfunction shareLyricLine(idx) {\r\n    const line = lyricsData[idx];\r\n    const timestamp = Math.floor(line.time \/ 1000);\r\n    const shareUrl = `${window.location.origin}${window.location.pathname}?t=${timestamp}#${line.id}`;\r\n    navigator.clipboard.writeText(shareUrl).then(() => {\r\n        showToast(\"\u2705 Link copied with timestamp!\", \"success\");\r\n    }).catch(() => {\r\n        showToast(\"Could not copy link\", \"info\");\r\n    });\r\n    const tweetText = encodeURIComponent(`\"${line.text}\" \u2014 ${CONFIG.songTitle} by ${CONFIG.artist}`);\r\n    const xUrl = `https:\/\/x.com\/intent\/tweet?text=${tweetText}&url=${encodeURIComponent(shareUrl)}`;\r\n    setTimeout(() => {\r\n        if (confirm(\"Also share this line on X?\")) {\r\n            window.open(xUrl, '_blank');\r\n        }\r\n    }, 800);\r\n}\r\n\/\/ ==================== YOUTUBE PLAYER ====================\r\nfunction loadYouTubeAPI() {\r\n    const tag = document.createElement('script');\r\n    tag.src = \"https:\/\/www.youtube.com\/iframe_api\";\r\n    document.head.appendChild(tag);\r\n}\r\nwindow.onYouTubeIframeAPIReady = function() {\r\n    player = new YT.Player('yt-player', {\r\n        videoId: CONFIG.youtubeVideoId,\r\n        playerVars: { 'autoplay': 0, 'controls': 1, 'rel': 0, 'modestbranding': 1, 'playsinline': 1 },\r\n        events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange }\r\n    });\r\n};\r\nfunction onPlayerReady(event) {\r\n    const checkDuration = setInterval(() => {\r\n        if (player.getDuration() > 0) {\r\n            const totalSec = Math.floor(player.getDuration());\r\n            document.getElementById('total-time').textContent = `${Math.floor(totalSec\/60)}:${(totalSec%60).toString().padStart(2,'0')}`;\r\n            clearInterval(checkDuration);\r\n        }\r\n    }, 500);\r\n}\r\nfunction onPlayerStateChange(event) {\r\n    if (event.data === YT.PlayerState.PLAYING) {\r\n        isPlaying = true;\r\n        const btn = document.getElementById('play-btn');\r\n        btn.style.background = '#ef4444';\r\n        btn.style.color = 'white';\r\n        document.getElementById('play-icon').classList.replace('fa-play', 'fa-pause');\r\n    } else {\r\n        isPlaying = false;\r\n        const btn = document.getElementById('play-btn');\r\n        btn.style.background = 'transparent';\r\n        btn.style.color = '#f1f5f9';\r\n        document.getElementById('play-icon').classList.replace('fa-pause', 'fa-play');\r\n    }\r\n}\r\n\/\/ Real-time sync\r\nsetInterval(() => {\r\n    if (!player || !isPlaying) return;\r\n    currentTime = Math.floor(player.getCurrentTime() * 1000);\r\n    updateProgressUI();\r\n    updateLyricHighlight();\r\n}, 150);\r\n\/\/ ==================== RENDER FUNCTIONS ====================\r\nfunction init() {\r\n    document.getElementById('hero-title').innerHTML = `${CONFIG.songTitle}<br><span class=\"gradient-text\">${CONFIG.artist}<\/span>`;\r\n    document.getElementById('hero-subtitle').innerHTML = `${CONFIG.artist} \u2022 ${CONFIG.songTitle}`;\r\n    document.getElementById('player-song-title').textContent = CONFIG.songTitle;\r\n    document.getElementById('player-artist').textContent = CONFIG.artist;\r\n    document.getElementById('hero-section').style.backgroundImage = `url('${CONFIG.heroBackgroundImage}')`;\r\n    document.getElementById('youtube-link').href = `https:\/\/www.youtube.com\/watch?v=${CONFIG.youtubeVideoId}`;\r\n    document.getElementById('spotify-link').href = CONFIG.spotifyUrl;\r\n    loadSRT().then(() => {\r\n        loadAnnotations();\r\n        renderAllLyrics();\r\n    });\r\n    loadFavorites();\r\n    document.addEventListener('keydown', function(e) {\r\n        if (e.key === \" \" && document.activeElement.tagName === \"BODY\") { e.preventDefault(); togglePlayback(); }\r\n        if (e.key.toLowerCase() === \"k\") { e.preventDefault(); enterKaraokeMode(); }\r\n    });\r\n    console.log('%c\u2705 Lyrics page loaded \u2013 fully accessible & shareable', 'color:#fbbf24;font-weight:700');\r\n}\r\nfunction renderAllLyrics() {\r\n    renderFullLyrics();\r\n    renderKaraokeList();\r\n    renderAnnotatedTab();\r\n}\r\nfunction renderFullLyrics() {\r\n    const full = document.getElementById('lyrics-full');\r\n    let html = '';\r\n    lyricsData.forEach((line, idx) => {\r\n        const isChorus = line.type === 'chorus';\r\n        const fav = favorites.includes(line.id);\r\n        const note = annotations[line.id] || '';\r\n        const escapedNote = escapeHtml(note);\r\n        html += `\r\n            <div class=\"lyric-line ${isChorus ? 'chorus' : ''}\"\r\n                 data-id=\"${line.id}\"\r\n                 data-index=\"${idx}\"\r\n                 onclick=\"highlightLine(${idx}, true)\"\r\n                 role=\"button\"\r\n                 aria-label=\"Lyric line ${idx+1}: ${line.text}\">\r\n                <div class=\"lyric-number\">${(idx+1).toString().padStart(2,'0')}<\/div>\r\n                <div style=\"flex:1;\">\r\n                    <div class=\"lyric-text\" style=\"${isChorus ? 'color:#fecaca;font-weight:700;' : ''}\">${line.text}<\/div>\r\n                    ${note ? `<div class=\"lyric-note-preview\">${escapedNote}<\/div>` : ''}\r\n                <\/div>\r\n                <div class=\"lyric-actions\">\r\n                    <button onclick=\"event.stopImmediatePropagation(); toggleFavorite('${line.id}', this)\" class=\"action-btn\" style=\"color:${fav ? '#ef4444' : '#64748b'};\" aria-label=\"Favorite this line\">\r\n                        <i class=\"fa fa-heart ${fav ? 'heart-favorited' : ''}\"><\/i>\r\n                    <\/button>\r\n                    <button onclick=\"event.stopImmediatePropagation(); singThisLine(${idx})\" class=\"action-btn\" aria-label=\"Sing this line\">\r\n                        <i class=\"fa fa-microphone\"><\/i>\r\n                    <\/button>\r\n                    <button onclick=\"event.stopImmediatePropagation(); shareLyricLine(${idx})\" class=\"action-btn\" aria-label=\"Share this lyric line\">\r\n                        <i class=\"fa fa-share-alt\"><\/i>\r\n                    <\/button>\r\n                    <button onclick=\"event.stopImmediatePropagation(); editNoteFromFullLyrics('${line.id}')\" class=\"action-btn\" title=\"Edit personal note\" aria-label=\"Edit note for this line\">\r\n                        <i class=\"fa fa-edit\"><\/i>\r\n                    <\/button>\r\n                <\/div>\r\n            <\/div>\r\n        `;\r\n    });\r\n    full.innerHTML = html;\r\n}\r\nfunction renderKaraokeList() {\r\n    const kar = document.getElementById('lyrics-karaoke');\r\n    kar.innerHTML = `<div style=\"max-width:620px;margin:0 auto;text-align:center;padding:20px 10px;\">\r\n        <div style=\"font-size:11px;letter-spacing:2px;color:#fbbf24;margin-bottom:16px;\">TAP ANY LINE TO JUMP \u2022 Personal notes shown below<\/div>\r\n        ${lyricsData.map((l,i) => {\r\n            const note = annotations[l.id] || '';\r\n            const escapedNote = escapeHtml(note);\r\n            return `\r\n            <div onclick=\"jumpToLineInKaraoke(${i})\" style=\"padding:12px 18px;margin:6px 0;border-radius:12px;cursor:pointer;background:#1a1a20;color:${l.type==='chorus'?'#fecaca':'#e2e8f0'};font-size:17px;${l.type==='chorus'?'font-weight:700;':''}\">\r\n                ${l.text}\r\n                ${note ? `<div style=\"margin-top:8px;font-size:14px;color:#a7f3d0;padding:8px 12px;background:rgba(16,185,129,0.1);border-left:3px solid #10b981;border-radius:6px;\">${escapedNote}<\/div>` : ''}\r\n            <\/div>`;\r\n        }).join('')}\r\n    <\/div>`;\r\n}\r\nfunction renderAnnotatedTab() {\r\n    const ann = document.getElementById('lyrics-annotated');\r\n    let html = `\r\n        <div style=\"margin-bottom:24px; display:flex; gap:12px; justify-content:space-between; flex-wrap:wrap; align-items:center;\">\r\n            <div style=\"font-size:13px; color:#64748b;\">Your personal notes \u2022 Saved in your browser<\/div>\r\n            <div style=\"display:flex; gap:8px;\">\r\n                <button onclick=\"toggleAnnotationMode()\" id=\"mode-toggle-btn\"\r\n                        style=\"padding:10px 20px; background:#27272e; color:#f1f5f9; border:none; border-radius:9999px; font-weight:600; cursor:pointer;\">\r\n                    ${annotationMode === 'edit' ? '\u2705 Switch to View Mode' : '\u270f\ufe0f Switch to Edit Mode'}\r\n                <\/button>\r\n                <button onclick=\"exportAnnotations()\" style=\"padding:10px 20px; background:#10b981; color:white; border:none; border-radius:9999px; font-weight:600; cursor:pointer;\">\r\n                    <i class=\"fa fa-download\"><\/i> Export\r\n                <\/button>\r\n                <button onclick=\"clearAllAnnotations()\" style=\"padding:10px 20px; background:#ef4444; color:white; border:none; border-radius:9999px; font-weight:600; cursor:pointer;\">\r\n                    <i class=\"fa fa-trash\"><\/i> Clear All\r\n                <\/button>\r\n            <\/div>\r\n        <\/div>\r\n    `;\r\n    lyricsData.forEach((line, idx) => {\r\n        const note = annotations[line.id] || '';\r\n        const escapedNote = escapeHtml(note);\r\n        if (annotationMode === 'edit') {\r\n            html += `\r\n                <div style=\"background:#1a1a20; border-radius:16px; padding:20px; margin-bottom:16px;\">\r\n                    <div style=\"display:flex; gap:12px;\">\r\n                        <div class=\"lyric-number\" style=\"background:#27272e; padding:4px 10px; border-radius:8px;\">${(idx+1).toString().padStart(2,'0')}<\/div>\r\n                        <div style=\"flex:1;\">\r\n                            <div style=\"font-size:1.05rem; line-height:1.5; color:#e2e8f0;\">${line.text}<\/div>\r\n                            <textarea class=\"annotation-input\" placeholder=\"Write your personal note here...\" oninput=\"updateAnnotation('${line.id}', this.value)\">${note}<\/textarea>\r\n                            <div class=\"annotation-saved\" id=\"saved-${line.id}\" style=\"display:none;\"><i class=\"fa fa-check-circle\"><\/i> Saved to browser<\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>`;\r\n        } else {\r\n            html += `\r\n                <div class=\"annotation-view\">\r\n                    <div style=\"display:flex; gap:12px;\">\r\n                        <div class=\"lyric-number\" style=\"background:#27272e; padding:4px 10px; border-radius:8px;\">${(idx+1).toString().padStart(2,'0')}<\/div>\r\n                        <div style=\"flex:1;\">\r\n                            <div style=\"font-size:1.05rem; line-height:1.5; color:#e2e8f0;\">${line.text}<\/div>\r\n                            ${note ? `<div class=\"annotation-note\">${escapedNote}<\/div>` : '<div style=\"font-size:13px;color:#64748b;margin-top:8px;\">No note yet<\/div>'}\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>`;\r\n        }\r\n    });\r\n    ann.innerHTML = html;\r\n}\r\nfunction editNoteFromFullLyrics(id) {\r\n    switchTab(2);\r\n    annotationMode = 'edit';\r\n    renderAnnotatedTab();\r\n    setTimeout(() => {\r\n        const el = document.getElementById(`saved-${id}`);\r\n        if (el) el.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n    }, 300);\r\n}\r\nfunction toggleAnnotationMode() {\r\n    annotationMode = annotationMode === 'edit' ? 'view' : 'edit';\r\n    renderAnnotatedTab();\r\n}\r\n\/\/ ==================== LYRIC & PLAYER FUNCTIONS ====================\r\nfunction highlightLine(index, manual = false) {\r\n    document.querySelectorAll('.lyric-line').forEach(el => el.classList.remove('active'));\r\n    const el = document.querySelector(`.lyric-line[data-index=\"${index}\"]`);\r\n    if (el) {\r\n        el.classList.add('active');\r\n        el.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n    }\r\n    currentLyricIndex = index;\r\n    if (manual && player) player.seekTo(lyricsData[index].time \/ 1000);\r\n}\r\nfunction toggleFavorite(id, btn) {\r\n    const i = favorites.indexOf(id);\r\n    const heart = btn.querySelector('i');\r\n    if (i === -1) {\r\n        favorites.push(id);\r\n        heart.classList.add('heart-favorited');\r\n        showToast(\"Line favorited \u2764\ufe0f\", \"success\");\r\n    } else {\r\n        favorites.splice(i, 1);\r\n        heart.classList.remove('heart-favorited');\r\n    }\r\n    localStorage.setItem(CONFIG.songTitle.replace(\/\\s+\/g, '-') + 'Favorites', JSON.stringify(favorites));\r\n}\r\nfunction loadFavorites() {\r\n    favorites.forEach(id => {\r\n        const heart = document.querySelector(`[data-id=\"${id}\"] .fa-heart`);\r\n        if (heart) heart.classList.add('heart-favorited');\r\n    });\r\n}\r\nfunction singThisLine(idx) {\r\n    highlightLine(idx, true);\r\n    showToast(`Singing: \"${lyricsData[idx].text}\"`, \"info\");\r\n}\r\nfunction startPlayback() { if (player) player.playVideo(); }\r\nfunction pausePlayback() { if (player) player.pauseVideo(); }\r\nfunction togglePlayback() { if (player) isPlaying ? pausePlayback() : startPlayback(); }\r\nfunction restartPlayback() { if (player) { player.seekTo(0); player.playVideo(); } }\r\nfunction updateProgressUI() {\r\n    if (!player) return;\r\n    const pct = (player.getCurrentTime() \/ (player.getDuration() || 250)) * 100;\r\n    document.getElementById('progress-slider').value = pct;\r\n    document.getElementById('progress-fill').style.width = pct + '%';\r\n    document.getElementById('progress-bar').setAttribute('aria-valuenow', Math.round(pct));\r\n    const sec = Math.floor(player.getCurrentTime());\r\n    document.getElementById('current-time').textContent = `${Math.floor(sec\/60)}:${(sec%60).toString().padStart(2,'0')}`;\r\n}\r\nfunction updateLyricHighlight() {\r\n    let newIdx = -1;\r\n    for (let i = 0; i < lyricsData.length; i++) {\r\n        if (currentTime >= lyricsData[i].time) newIdx = i;\r\n        else break;\r\n    }\r\n    if (newIdx !== currentLyricIndex && newIdx !== -1) {\r\n        currentLyricIndex = newIdx;\r\n        highlightLine(newIdx);\r\n        if (lyricsData[newIdx].type === 'chorus') launchConfetti(12);\r\n        const modal = document.getElementById('karaoke-modal');\r\n        if (modal.style.display === 'flex') updateKaraokeDisplay(newIdx);\r\n    }\r\n}\r\nfunction seekTo(pct) {\r\n    if (!player) return;\r\n    const duration = player.getDuration() || 250;\r\n    player.seekTo((pct \/ 100) * duration);\r\n}\r\nfunction seekFromClick(e) {\r\n    const bar = document.getElementById('progress-bar');\r\n    const pct = ((e.clientX - bar.getBoundingClientRect().left) \/ bar.offsetWidth) * 100;\r\n    document.getElementById('progress-slider').value = pct;\r\n    seekTo(pct);\r\n}\r\nfunction setPlaybackSpeed(sp) {\r\n    document.querySelectorAll('[id^=\"speed-\"]').forEach(el => el.style.background = 'transparent');\r\n    let id = 'speed-1';\r\n    if (sp === 0.75) id = 'speed-075';\r\n    if (sp === 1.25) id = 'speed-125';\r\n    const b = document.getElementById(id);\r\n    if (b) b.style.background = 'rgba(255,255,255,0.2)';\r\n    if (player) player.setPlaybackRate(sp);\r\n}\r\n\/\/ ==================== KARAOKE ====================\r\nfunction enterKaraokeMode() {\r\n    const m = document.getElementById('karaoke-modal');\r\n    m.style.display = 'flex';\r\n    if (player && !isPlaying) player.playVideo();\r\n    updateKaraokeDisplay(currentLyricIndex >= 0 ? currentLyricIndex : 0);\r\n}\r\nfunction closeKaraoke() {\r\n    document.getElementById('karaoke-modal').style.display = 'none';\r\n}\r\nfunction updateKaraokeDisplay(idx) {\r\n    const cur = document.getElementById('karaoke-current');\r\n    const annDisplay = document.getElementById('karaoke-annotation-display');\r\n    const prv = document.getElementById('karaoke-prev');\r\n    const nxt = document.getElementById('karaoke-next');\r\n    cur.innerHTML = `<span style=\"color:#ef4444;\">${lyricsData[idx].text}<\/span>`;\r\n    const note = annotations[lyricsData[idx].id] || '';\r\n    if (note) {\r\n        annDisplay.innerHTML = `<strong style=\"color:#10b981;\">YOUR NOTE:<\/strong><br>${escapeHtml(note)}`;\r\n        annDisplay.style.display = 'block';\r\n    } else {\r\n        annDisplay.style.display = 'none';\r\n    }\r\n    prv.textContent = idx > 0 ? lyricsData[idx-1].text : '\u2014';\r\n    nxt.textContent = idx < lyricsData.length-1 ? lyricsData[idx+1].text : '\u2014';\r\n}\r\nfunction jumpToLineInKaraoke(idx) {\r\n    if (player) player.seekTo(lyricsData[idx].time \/ 1000);\r\n    highlightLine(idx, true);\r\n    const m = document.getElementById('karaoke-modal');\r\n    if (m.style.display === 'flex') updateKaraokeDisplay(idx);\r\n}\r\nfunction toggleKaraoke() {\r\n    const m = document.getElementById('karaoke-modal');\r\n    m.style.display === 'flex' ? closeKaraoke() : enterKaraokeMode();\r\n}\r\nfunction switchTab(tab) {\r\n    document.getElementById('lyrics-full').style.display = 'none';\r\n    document.getElementById('lyrics-karaoke').style.display = 'none';\r\n    document.getElementById('lyrics-annotated').style.display = 'none';\r\n    document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));\r\n    document.getElementById('tab-' + tab).classList.add('active');\r\n    document.getElementById('tab-' + tab).setAttribute('aria-selected', 'true');\r\n    if (tab === 0) document.getElementById('lyrics-full').style.display = 'block';\r\n    else if (tab === 1) document.getElementById('lyrics-karaoke').style.display = 'block';\r\n    else if (tab === 2) {\r\n        document.getElementById('lyrics-annotated').style.display = 'block';\r\n        renderAnnotatedTab();\r\n    }\r\n}\r\n\/\/ ==================== UTILS ====================\r\nfunction showToast(msg, type = \"info\") {\r\n    const c = document.getElementById('toast-container');\r\n    const t = document.createElement('div');\r\n    t.className = 'toast';\r\n    t.innerHTML = `<i class=\"fa fa-${type==='success'?'check-circle':'info-circle'}\" style=\"margin-right:8px;\"><\/i> <span>${msg}<\/span>`;\r\n    c.appendChild(t);\r\n    setTimeout(() => t.remove(), 2800);\r\n}\r\nfunction launchConfetti(count = 12) {\r\n    for (let i = 0; i < count; i++) {\r\n        setTimeout(() => {\r\n            const c = document.createElement('div');\r\n            c.style.cssText = `position:fixed;left:${Math.random()*100}vw;top:-20px;font-size:28px;z-index:400;pointer-events:none;`;\r\n            c.textContent = ['\ud83c\udf89','\u2764\ufe0f','\ud83c\udf3e'][Math.floor(Math.random()*3)];\r\n            document.body.appendChild(c);\r\n            setTimeout(() => c.remove(), 3000);\r\n        }, i * 30);\r\n    }\r\n}\r\n\/\/ Boot\r\nwindow.onload = function() {\r\n    loadYouTubeAPI();\r\n    init();\r\n};\r\n<\/script>\r\n<\/article>\r\n","protected":false},"excerpt":{"rendered":"<p>Roots and Wings is a heartfelt family ballad by DaOpa from the Heartland Country Pop album (2026). This touching track celebrates the beautiful balance between deep roots that ground us and the wings that let us soar \u2014 all within the love of family and home. Read the full lyrics below, sync them with the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":315,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-297","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-lyrics"],"yoast_head":"<title>Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026 - DaOpa&#039;s Music<\/title>\r\n<meta name=\"description\" content=\"Roots and Wings is a heartfelt family ballad by DaOpa from the Heartland Country Pop album (2026). This touching track celebrates the beautiful balance\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026 - DaOpa&#039;s Music\" \/>\r\n<meta property=\"og:description\" content=\"Roots and Wings is a heartfelt family ballad by DaOpa from the Heartland Country Pop album (2026). This touching track celebrates the beautiful balance\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/\" \/>\r\n<meta property=\"og:site_name\" content=\"DaOpa&#039;s Music\" \/>\r\n<meta property=\"article:publisher\" content=\"facebook.com\/gamingwithdaopa\/\" \/>\r\n<meta property=\"article:author\" content=\"facebook.com\/gamingwithdaopa\/\" \/>\r\n<meta property=\"article:published_time\" content=\"2026-04-25T13:20:09+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-04-28T10:29:00+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2026\/04\/Roots-and-Wings-lyrics.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"400\" \/>\r\n\t<meta property=\"og:image:height\" content=\"263\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"daopa\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@gamingwithdaopa\" \/>\r\n<meta name=\"twitter:site\" content=\"@gamingwithdaopa\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"daopa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/\"},\"author\":{\"name\":\"daopa\",\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/#\\\/schema\\\/person\\\/fb03a927907d90f409fac550ba375638\"},\"headline\":\"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026\",\"datePublished\":\"2026-04-25T13:20:09+00:00\",\"dateModified\":\"2026-04-28T10:29:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/\"},\"wordCount\":394,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/#\\\/schema\\\/person\\\/fb03a927907d90f409fac550ba375638\"},\"image\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/wp-content\\\/uploads\\\/sites\\\/31\\\/2026\\\/04\\\/Roots-and-Wings-lyrics.jpg\",\"articleSection\":[\"Lyrics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/\",\"url\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/\",\"name\":\"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026 - DaOpa&#039;s Music\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/wp-content\\\/uploads\\\/sites\\\/31\\\/2026\\\/04\\\/Roots-and-Wings-lyrics.jpg\",\"datePublished\":\"2026-04-25T13:20:09+00:00\",\"dateModified\":\"2026-04-28T10:29:00+00:00\",\"description\":\"Roots and Wings is a heartfelt family ballad by DaOpa from the Heartland Country Pop album (2026). This touching track celebrates the beautiful balance\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/#primaryimage\",\"url\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/wp-content\\\/uploads\\\/sites\\\/31\\\/2026\\\/04\\\/Roots-and-Wings-lyrics.jpg\",\"contentUrl\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/wp-content\\\/uploads\\\/sites\\\/31\\\/2026\\\/04\\\/Roots-and-Wings-lyrics.jpg\",\"width\":400,\"height\":263,\"caption\":\"Roots and Wings lyrics\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/roots-and-wings-lyrics\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/#website\",\"url\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/\",\"name\":\"DaOpa&#039;s Music\",\"description\":\"Welcome to DaOpa&#039;s Music, where I share my original songs, lyrics, and musical journey. Dive into the sounds and stories behind my music, and experience the creative process that shapes each track. This is my personal space to connect through music, straight from my heart to your ears.\",\"publisher\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/#\\\/schema\\\/person\\\/fb03a927907d90f409fac550ba375638\"},\"alternateName\":\"daopa music\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/#\\\/schema\\\/person\\\/fb03a927907d90f409fac550ba375638\",\"name\":\"daopa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/wp-content\\\/uploads\\\/sites\\\/31\\\/2024\\\/09\\\/90-90-Logo.png\",\"url\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/wp-content\\\/uploads\\\/sites\\\/31\\\/2024\\\/09\\\/90-90-Logo.png\",\"contentUrl\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/wp-content\\\/uploads\\\/sites\\\/31\\\/2024\\\/09\\\/90-90-Logo.png\",\"width\":90,\"height\":90,\"caption\":\"daopa\"},\"logo\":{\"@id\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/wp-content\\\/uploads\\\/sites\\\/31\\\/2024\\\/09\\\/90-90-Logo.png\"},\"description\":\"DaOpa has been variety streamer since 2009 with game focuses on primarily MMOs, Sandbox, RPG and FPS genres. For inquires comment in the comments sections. This channel is syndicated across various micro niche gaming related blogs operated by DaOpa. He creates fansites, guides, tools for gamers\",\"sameAs\":[\"https:\\\/\\\/gamingwithdaopa.ellatha.com\",\"facebook.com\\\/gamingwithdaopa\\\/\",\"https:\\\/\\\/x.com\\\/gamingwithdaopa\",\"youtube.com\\\/@daopa\"],\"url\":\"https:\\\/\\\/gamingwithdaopa.ellatha.com\\\/music\\\/author\\\/daopa\\\/\"}]}<\/script>","yoast_head_json":{"title":"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026 - DaOpa&#039;s Music","description":"Roots and Wings is a heartfelt family ballad by DaOpa from the Heartland Country Pop album (2026). This touching track celebrates the beautiful balance","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/","og_locale":"en_US","og_type":"article","og_title":"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026 - DaOpa&#039;s Music","og_description":"Roots and Wings is a heartfelt family ballad by DaOpa from the Heartland Country Pop album (2026). This touching track celebrates the beautiful balance","og_url":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/","og_site_name":"DaOpa&#039;s Music","article_publisher":"facebook.com\/gamingwithdaopa\/","article_author":"facebook.com\/gamingwithdaopa\/","article_published_time":"2026-04-25T13:20:09+00:00","article_modified_time":"2026-04-28T10:29:00+00:00","og_image":[{"width":400,"height":263,"url":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2026\/04\/Roots-and-Wings-lyrics.jpg","type":"image\/jpeg"}],"author":"daopa","twitter_card":"summary_large_image","twitter_creator":"@gamingwithdaopa","twitter_site":"@gamingwithdaopa","twitter_misc":{"Written by":"daopa","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/#article","isPartOf":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/"},"author":{"name":"daopa","@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/#\/schema\/person\/fb03a927907d90f409fac550ba375638"},"headline":"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026","datePublished":"2026-04-25T13:20:09+00:00","dateModified":"2026-04-28T10:29:00+00:00","mainEntityOfPage":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/"},"wordCount":394,"commentCount":0,"publisher":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/#\/schema\/person\/fb03a927907d90f409fac550ba375638"},"image":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/#primaryimage"},"thumbnailUrl":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2026\/04\/Roots-and-Wings-lyrics.jpg","articleSection":["Lyrics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/","url":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/","name":"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026 - DaOpa&#039;s Music","isPartOf":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/#primaryimage"},"image":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/#primaryimage"},"thumbnailUrl":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2026\/04\/Roots-and-Wings-lyrics.jpg","datePublished":"2026-04-25T13:20:09+00:00","dateModified":"2026-04-28T10:29:00+00:00","description":"Roots and Wings is a heartfelt family ballad by DaOpa from the Heartland Country Pop album (2026). This touching track celebrates the beautiful balance","breadcrumb":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/#primaryimage","url":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2026\/04\/Roots-and-Wings-lyrics.jpg","contentUrl":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2026\/04\/Roots-and-Wings-lyrics.jpg","width":400,"height":263,"caption":"Roots and Wings lyrics"},{"@type":"BreadcrumbList","@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/roots-and-wings-lyrics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gamingwithdaopa.ellatha.com\/music\/"},{"@type":"ListItem","position":2,"name":"Roots and Wings Lyrics by DaOpa | Heartland Country Pop 2026"}]},{"@type":"WebSite","@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/#website","url":"https:\/\/gamingwithdaopa.ellatha.com\/music\/","name":"DaOpa&#039;s Music","description":"Welcome to DaOpa&#039;s Music, where I share my original songs, lyrics, and musical journey. Dive into the sounds and stories behind my music, and experience the creative process that shapes each track. This is my personal space to connect through music, straight from my heart to your ears.","publisher":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/#\/schema\/person\/fb03a927907d90f409fac550ba375638"},"alternateName":"daopa music","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gamingwithdaopa.ellatha.com\/music\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/#\/schema\/person\/fb03a927907d90f409fac550ba375638","name":"daopa","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2024\/09\/90-90-Logo.png","url":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2024\/09\/90-90-Logo.png","contentUrl":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2024\/09\/90-90-Logo.png","width":90,"height":90,"caption":"daopa"},"logo":{"@id":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-content\/uploads\/sites\/31\/2024\/09\/90-90-Logo.png"},"description":"DaOpa has been variety streamer since 2009 with game focuses on primarily MMOs, Sandbox, RPG and FPS genres. For inquires comment in the comments sections. This channel is syndicated across various micro niche gaming related blogs operated by DaOpa. He creates fansites, guides, tools for gamers","sameAs":["https:\/\/gamingwithdaopa.ellatha.com","facebook.com\/gamingwithdaopa\/","https:\/\/x.com\/gamingwithdaopa","youtube.com\/@daopa"],"url":"https:\/\/gamingwithdaopa.ellatha.com\/music\/author\/daopa\/"}]}},"_links":{"self":[{"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/posts\/297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/comments?post=297"}],"version-history":[{"count":3,"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/posts\/297\/revisions"}],"predecessor-version":[{"id":433,"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/posts\/297\/revisions\/433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/media\/315"}],"wp:attachment":[{"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/media?parent=297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/categories?post=297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gamingwithdaopa.ellatha.com\/music\/wp-json\/wp\/v2\/tags?post=297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}