{"id":1516,"date":"2026-05-29T08:59:36","date_gmt":"2026-05-29T08:59:36","guid":{"rendered":"https:\/\/fujestudio.ro\/?page_id=1516"},"modified":"2026-06-01T12:34:58","modified_gmt":"2026-06-01T12:34:58","slug":"melodii-personalizate","status":"publish","type":"page","link":"https:\/\/fujestudio.ro\/ro\/melodii-personalizate\/","title":{"rendered":"Melodii Personalizate"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1516\" class=\"elementor elementor-1516\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9fb1548 elementor-section-full_width elementor-section-height-default elementor-section-height-default exad-glass-effect-no exad-sticky-section-no\" data-id=\"9fb1548\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bc15596 exad-glass-effect-no exad-sticky-section-no\" data-id=\"bc15596\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4b05f22 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-spacer\" data-id=\"4b05f22\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6215162 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-html\" data-id=\"6215162\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<?php\n\/* ============================================================\n   FUJESTUDIO \u2014 Melodii Personalizate\n   Fi\u0219ier: fujestudio-melodii.php\n\n   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n   CONFIGURARE (completeaz\u0103 cele 2 chei de mai jos):\n\n   1. CLAUDE API KEY\n      \u2192 Mergi pe: console.anthropic.com\n      \u2192 \u00cenregistrare gratuit\u0103 (prime\u0219ti $5 credit gratuit)\n      \u2192 API Keys \u2192 Create Key \u2192 copiaz-o mai jos\n\n   2. SUNOAPI KEY\n      \u2192 Mergi pe: sunoapi.org\n      \u2192 \u00cenregistrare gratuit\u0103 (prime\u0219ti credite de test)\n      \u2192 API Key \u2192 Create \u2192 copiaz-o mai jos\n\n   COSTURI REALE (pl\u0103te\u0219ti DOAR c\u00e2nd un client comand\u0103):\n      Claude API:  ~$0.01 per melodie (versuri)\n      SunoAPI:     ~$0.03 per melodie (audio)\n      TOTAL:       ~$0.04 per comand\u0103 (din ~6$ \u00eencasa\u021bi)\n   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 *\/\n\ndefine('CLAUDE_API_KEY',  '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');\ndefine('SUNOAPI_KEY',     'b377f93f509e087e41605ff6ee235cdf');\ndefine('SUNO_MODEL',      'V4_5');\n\n\/* \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n   NU MODIFICA NIMIC DE MAI JOS\n   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 *\/\n\nif ($_SERVER['REQUEST_METHOD'] === 'POST') {\n    header('Content-Type: application\/json; charset=utf-8');\n    header('Access-Control-Allow-Origin: *');\n\n    \/\/ Verificare chei configurate\n    if (CLAUDE_API_KEY === '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') {\n        http_response_code(500);\n        echo json_encode(['error' => 'claude_missing', 'mesaj' => 'Cheia Claude API lipse\u0219te. Adaug-o la CLAUDE_API_KEY \u00een fi\u0219ier.']);\n        exit;\n    }\n    if (SUNOAPI_KEY === 'b377f93f509e087e41605ff6ee235cdf') {\n        http_response_code(500);\n        echo json_encode(['error' => 'suno_missing', 'mesaj' => 'Cheia SunoAPI lipse\u0219te. Adaug-o la SUNOAPI_KEY \u00een fi\u0219ier.']);\n        exit;\n    }\n\n    $input    = json_decode(file_get_contents('php:\/\/input'), true);\n    $ocazie   = trim($input['ocazie']   ?? '');\n    $persoana = trim($input['persoana'] ?? '');\n    $relatie  = trim($input['relatie']  ?? '');\n    $poveste  = trim($input['poveste']  ?? '');\n    $gen      = trim($input['gen']      ?? 'pop');\n    $extra    = trim($input['extra']    ?? '');\n    $ofertant = trim($input['ofertant'] ?? 'cineva drag');\n\n    if (empty($poveste)) {\n        http_response_code(400);\n        echo json_encode(['error' => 'Date incomplete']);\n        exit;\n    }\n\n    \/* \u2500\u2500 PASUL 1: Claude genereaz\u0103 versurile \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    $prompt = \"E\u0219ti un compozitor profesionist de muzic\u0103 rom\u00e2neasc\u0103.\nCreeaz\u0103 versuri personalizate complete pentru o melodie special\u0103.\n\nDETALII:\n- Ocazie: {$ocazie}\n- Persoana dedicat\u0103: {$persoana}\" . ($relatie ? \" ({$relatie})\" : \"\") . \"\n- Cel care ofer\u0103 cadoul: {$ofertant}\n- Poveste \/ detalii: {$poveste}\n- Gen muzical: {$gen}\" . ($extra ? \" \u2014 {$extra}\" : \"\") . \"\n\nINSTRUC\u021aIUNI:\n- Scrie versuri complete \u00een rom\u00e2n\u0103\n- Include natural numele \\\"{$persoana}\\\" \u00een versuri\n- Structura: [Intro], [Vers 1], [Refren], [Vers 2], [Refren], [Outro]\n- Ton emo\u021bionant, cald \u0219i personal \u2014 reflect\u00e2nd povestea de mai sus\n- Maxim 280 cuvinte\n- Returneaz\u0103 DOAR versurile, f\u0103r\u0103 alte explica\u021bii sau etichete de structur\u0103\";\n\n    $claude_payload = json_encode([\n        'model'      => 'claude-haiku-4-5-20251001',\n        'max_tokens' => 1000,\n        'messages'   => [['role' => 'user', 'content' => $prompt]]\n    ]);\n\n    $ch = curl_init('https:\/\/api.anthropic.com\/v1\/messages');\n    curl_setopt_array($ch, [\n        CURLOPT_POST           => true,\n        CURLOPT_POSTFIELDS     => $claude_payload,\n        CURLOPT_RETURNTRANSFER => true,\n        CURLOPT_SSL_VERIFYPEER => false,\n        CURLOPT_TIMEOUT        => 30,\n        CURLOPT_HTTPHEADER     => [\n            'x-api-key: '       . CLAUDE_API_KEY,\n            'anthropic-version: 2023-06-01',\n            'Content-Type: application\/json',\n        ],\n    ]);\n\n    $claude_body = curl_exec($ch);\n    $claude_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    $claude_err  = curl_error($ch);\n    curl_close($ch);\n\n    if ($claude_err) {\n        http_response_code(500);\n        echo json_encode(['error' => 'Eroare conexiune Claude: ' . $claude_err]);\n        exit;\n    }\n    if ($claude_code === 401) {\n        http_response_code(401);\n        echo json_encode(['error' => 'claude_invalid', 'mesaj' => 'Cheia Claude API este invalid\u0103. Verific\u0103 la console.anthropic.com']);\n        exit;\n    }\n    if ($claude_code !== 200) {\n        http_response_code(500);\n        echo json_encode(['error' => 'Claude a returnat eroarea: ' . $claude_code, 'detalii' => $claude_body]);\n        exit;\n    }\n\n    $claude_data = json_decode($claude_body, true);\n    $versuri     = trim($claude_data['content'][0]['text'] ?? '');\n\n    if (empty($versuri)) {\n        http_response_code(500);\n        echo json_encode(['error' => 'Claude nu a returnat versuri.']);\n        exit;\n    }\n\n    \/* \u2500\u2500 PASUL 2: SunoAPI genereaz\u0103 melodia \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    $titlu        = \"Melodie pentru {$persoana} \u2014 FujeStudio\";\n    $suno_payload = json_encode([\n        'customMode'   => true,\n        'instrumental' => false,\n        'lyrics'       => $versuri,\n        'style'        => $gen . ', romanian music, emotional, heartfelt, vocal',\n        'title'        => $titlu,\n        'model'        => SUNO_MODEL,\n        'callBackUrl'  => '',\n    ]);\n\n    $ch = curl_init('https:\/\/api.sunoapi.org\/api\/v1\/generate');\n    curl_setopt_array($ch, [\n        CURLOPT_POST           => true,\n        CURLOPT_POSTFIELDS     => $suno_payload,\n        CURLOPT_RETURNTRANSFER => true,\n        CURLOPT_SSL_VERIFYPEER => false,\n        CURLOPT_TIMEOUT        => 30,\n        CURLOPT_HTTPHEADER     => [\n            'Authorization: Bearer ' . SUNOAPI_KEY,\n            'Content-Type: application\/json',\n        ],\n    ]);\n\n    $suno_body = curl_exec($ch);\n    $suno_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    curl_close($ch);\n\n    if ($suno_code === 401) {\n        http_response_code(401);\n        echo json_encode(['error' => 'suno_invalid', 'mesaj' => 'Cheia SunoAPI este invalid\u0103. Verific\u0103 la sunoapi.org\/api-key']);\n        exit;\n    }\n    if ($suno_code !== 200 && $suno_code !== 201) {\n        http_response_code(500);\n        echo json_encode(['error' => 'SunoAPI a returnat eroarea: ' . $suno_code, 'detalii' => $suno_body]);\n        exit;\n    }\n\n    $suno_data = json_decode($suno_body, true);\n    $task_id   = $suno_data['data']['taskId'] ?? ($suno_data['taskId'] ?? null);\n\n    if (!$task_id) {\n        http_response_code(500);\n        echo json_encode(['error' => 'SunoAPI nu a returnat un task ID.', 'raspuns' => $suno_body]);\n        exit;\n    }\n\n    \/* \u2500\u2500 PASUL 3: A\u0219tept\u0103m finalizarea melodiei \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    $melodii_gata = [];\n\n    for ($i = 0; $i < 40; $i++) {\n        sleep(5);\n\n        $ch = curl_init('https:\/\/api.sunoapi.org\/api\/v1\/generate\/' . $task_id);\n        curl_setopt_array($ch, [\n            CURLOPT_RETURNTRANSFER => true,\n            CURLOPT_SSL_VERIFYPEER => false,\n            CURLOPT_TIMEOUT        => 20,\n            CURLOPT_HTTPHEADER     => [\n                'Authorization: Bearer ' . SUNOAPI_KEY,\n            ],\n        ]);\n        $feed_body = curl_exec($ch);\n        $feed_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n        curl_close($ch);\n\n        if ($feed_code !== 200) continue;\n\n        $feed   = json_decode($feed_body, true);\n        $status = $feed['data']['status'] ?? ($feed['status'] ?? 'pending');\n\n        if (in_array($status, ['failed', 'error'])) {\n            http_response_code(500);\n            echo json_encode(['error' => 'SunoAPI a \u00eent\u00e2mpinat o eroare la generare.']);\n            exit;\n        }\n\n        if (in_array($status, ['complete', 'completed', 'success'])) {\n            $clips = $feed['data']['clips'] ?? $feed['data']['data'] ?? [];\n            foreach ($clips as $clip) {\n                $url = $clip['audioUrl'] ?? $clip['audio_url'] ?? $clip['url'] ?? '';\n                if ($url) {\n                    $melodii_gata[] = [\n                        'titlu'  => $clip['title'] ?? $titlu,\n                        'url'    => $url,\n                    ];\n                }\n            }\n            if (!empty($melodii_gata)) break;\n        }\n    }\n\n    if (empty($melodii_gata)) {\n        http_response_code(500);\n        echo json_encode(['error' => 'Timeout \u2014 generarea a durat prea mult. \u00cencearc\u0103 din nou.']);\n        exit;\n    }\n\n    \/\/ Return\u0103m versurile + melodiile\n    echo json_encode([\n        'succes'  => true,\n        'versuri' => $versuri,\n        'melodii' => $melodii_gata,\n    ]);\n    exit;\n}\n\n$proxy_url = $_SERVER['PHP_SELF'];\n?>\n<!DOCTYPE html>\n<html lang=\"ro\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Melodii Personalizate | FujeStudio.ro<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300;1,400&family=DM+Sans:wght@300;400;500;600&display=swap\" rel=\"stylesheet\">\n<style>\n:root{--gold:#C9A165;--gold-l:#E8C882;--gold-d:#8A6530;--bg:#080808;--bg2:#0f0f0f;--bg3:#161616;--text:#F0EDE8;--muted:#7A7870;--border:#252520;--r:12px;}\n*{margin:0;padding:0;box-sizing:border-box;}html{scroll-behavior:smooth;}\nbody{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text);line-height:1.6;}\n.ann{background:linear-gradient(90deg,var(--gold-d),var(--gold),var(--gold-d));color:#000;text-align:center;padding:9px 20px;font-size:13px;font-weight:600;letter-spacing:.04em;}\nnav{position:sticky;top:0;z-index:200;background:rgba(8,8,8,.97);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);padding:0 6%;display:flex;align-items:center;justify-content:space-between;height:64px;}\n.nav-logo{font-family:'Cormorant Garamond',serif;font-size:22px;font-weight:300;color:var(--gold);letter-spacing:.12em;cursor:pointer;user-select:none;}\n.nav-links{display:flex;gap:26px;list-style:none;}\n.nav-links a{color:var(--muted);font-size:14px;transition:color .2s;text-decoration:none;}\n.nav-links a:hover{color:var(--gold);}\n.btn{background:var(--gold);color:#000;border:none;padding:11px 26px;border-radius:6px;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:700;cursor:pointer;transition:all .2s;display:inline-block;text-decoration:none;}\n.btn:hover{background:var(--gold-l);transform:translateY(-1px);box-shadow:0 8px 24px rgba(201,161,101,.3);}\n.btn-o{background:transparent;color:var(--gold);border:1px solid var(--gold);padding:11px 26px;border-radius:6px;font-family:'DM Sans',sans-serif;font-size:14px;cursor:pointer;transition:all .2s;display:inline-block;text-decoration:none;}\n.btn-o:hover{background:rgba(201,161,101,.08);}\n.hero{min-height:88vh;display:flex;align-items:center;justify-content:center;text-align:center;padding:80px 6%;position:relative;overflow:hidden;}\n.hero-bg{position:absolute;inset:0;background:radial-gradient(ellipse 80% 55% at 50% 0%,rgba(201,161,101,.13) 0%,transparent 60%);}\n.hero-content{position:relative;max-width:820px;}\n.hero-pill{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(201,161,101,.4);border-radius:100px;padding:6px 18px;font-size:12px;color:var(--gold);letter-spacing:.1em;text-transform:uppercase;margin-bottom:28px;}\n.hero h1{font-family:'Cormorant Garamond',serif;font-size:clamp(42px,7vw,80px);font-weight:300;line-height:1.08;margin-bottom:22px;letter-spacing:-.02em;}\n.hero h1 em{font-style:italic;color:var(--gold);}\n.hero-sub{font-size:18px;color:var(--muted);margin-bottom:40px;max-width:560px;margin-left:auto;margin-right:auto;font-weight:300;line-height:1.75;}\n.hero-btns{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-bottom:52px;}\n.hero-btns .btn,.hero-btns .btn-o{padding:14px 38px;font-size:16px;}\n.stats{display:flex;gap:36px;justify-content:center;flex-wrap:wrap;}\n.stat{display:flex;flex-direction:column;align-items:center;gap:2px;}\n.stat-v{font-family:'Cormorant Garamond',serif;font-size:30px;font-weight:600;color:var(--gold);}\n.stat-l{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.09em;}\n.sec{padding:90px 6%;}\n.sec-alt{padding:90px 6%;background:var(--bg2);}\n.sec-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.2em;color:var(--gold);margin-bottom:10px;}\n.sec-h{font-family:'Cormorant Garamond',serif;font-size:clamp(28px,4vw,50px);font-weight:300;line-height:1.15;margin-bottom:14px;}\n.sec-sub{color:var(--muted);font-size:16px;max-width:540px;font-weight:300;}\n.demo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;margin-top:44px;}\n.demo-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;transition:transform .2s,border-color .2s;}\n.demo-card:hover{transform:translateY(-4px);border-color:rgba(201,161,101,.35);}\n.demo-thumb{height:120px;background:linear-gradient(135deg,#1a160e,#0d0d0d);display:flex;align-items:center;justify-content:center;position:relative;}\n.genre-tag{position:absolute;top:10px;left:10px;background:rgba(201,161,101,.15);color:var(--gold);font-size:10px;padding:3px 10px;border-radius:100px;border:1px solid rgba(201,161,101,.3);letter-spacing:.06em;}\n.play-btn{width:46px;height:46px;border-radius:50%;background:var(--gold);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s;}\n.play-btn:hover{transform:scale(1.1);}\n.demo-info{padding:14px;}\n.demo-title{font-size:14px;font-weight:600;margin-bottom:3px;}\n.demo-sub{font-size:12px;color:var(--muted);margin-bottom:10px;}\n.bar{height:3px;background:var(--border);border-radius:99px;overflow:hidden;}\n.bar-fill{height:100%;background:linear-gradient(90deg,var(--gold-d),var(--gold));border-radius:99px;}\n.feat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px;margin-top:44px;}\n.feat-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:24px;transition:border-color .2s;}\n.feat-card:hover{border-color:rgba(201,161,101,.28);}\n.feat-icon{width:40px;height:40px;border-radius:10px;background:rgba(201,161,101,.1);border:1px solid rgba(201,161,101,.2);display:flex;align-items:center;justify-content:center;font-size:18px;margin-bottom:12px;}\n.feat-title{font-size:14px;font-weight:600;margin-bottom:6px;}\n.feat-desc{font-size:13px;color:var(--muted);line-height:1.65;}\n.steps-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:18px;margin-top:44px;}\n.step-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:24px;}\n.step-no{font-family:'Cormorant Garamond',serif;font-size:52px;font-weight:300;color:rgba(201,161,101,.15);line-height:1;margin-bottom:2px;}\n.step-title{font-size:14px;font-weight:600;margin-bottom:7px;}\n.step-desc{font-size:13px;color:var(--muted);line-height:1.65;}\n.rev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px;margin-top:44px;}\n.rev-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:20px;}\n.stars{color:var(--gold);font-size:13px;letter-spacing:2px;margin-bottom:11px;}\n.rev-text{font-family:'Cormorant Garamond',serif;font-size:17px;font-weight:300;font-style:italic;color:var(--text);line-height:1.7;margin-bottom:14px;}\n.rev-author{display:flex;align-items:center;gap:10px;}\n.avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--gold-d),var(--gold));display:flex;align-items:center;justify-content:center;font-weight:700;color:#000;font-size:12px;flex-shrink:0;}\n.rev-name{font-size:13px;font-weight:600;}\n.rev-city{font-size:11px;color:var(--muted);}\n.price-wrap{max-width:440px;margin:44px auto 0;background:var(--bg3);border:1px solid rgba(201,161,101,.35);border-radius:20px;padding:42px;text-align:center;position:relative;box-shadow:0 0 80px rgba(201,161,101,.07);}\n.price-badge{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--gold);color:#000;font-size:11px;font-weight:700;padding:4px 18px;border-radius:100px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;}\n.price-old{font-size:14px;color:var(--muted);text-decoration:line-through;margin-bottom:2px;}\n.price-big{font-family:'Cormorant Garamond',serif;font-size:70px;font-weight:300;color:var(--gold);line-height:1;margin-bottom:2px;}\n.price-period{font-size:12px;color:var(--muted);margin-bottom:28px;}\n.price-list{list-style:none;text-align:left;margin-bottom:30px;}\n.price-list li{display:flex;align-items:center;gap:10px;font-size:14px;padding:8px 0;border-bottom:1px solid var(--border);}\n.price-list li:last-child{border:none;}\n.price-list li::before{content:'\u2713';color:var(--gold);font-weight:700;flex-shrink:0;}\n.cta-sec{text-align:center;padding:90px 6%;position:relative;overflow:hidden;}\n.cta-sec::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 60% at 50% 50%,rgba(201,161,101,.09) 0%,transparent 70%);}\n.cta-sec>*{position:relative;}\nfooter{background:var(--bg2);border-top:1px solid var(--border);padding:56px 6% 26px;}\n.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;margin-bottom:40px;}\n.foot-logo{font-family:'Cormorant Garamond',serif;font-size:20px;font-weight:300;color:var(--gold);letter-spacing:.12em;}\n.foot-brand p{font-size:13px;color:var(--muted);line-height:1.7;margin:12px 0;max-width:230px;}\n.foot-col h4{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:16px;}\n.foot-col ul{list-style:none;}\n.foot-col ul li{margin-bottom:8px;}\n.foot-col ul li a{color:var(--text);font-size:13px;transition:color .2s;text-decoration:none;}\n.foot-col ul li a:hover{color:var(--gold);}\n.foot-bottom{border-top:1px solid var(--border);padding-top:18px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;}\n.foot-bottom p,.foot-bottom a{font-size:12px;color:var(--muted);text-decoration:none;}\n.overlay{position:fixed;inset:0;background:rgba(0,0,0,.88);backdrop-filter:blur(10px);z-index:9999;display:none;align-items:center;justify-content:center;padding:16px;}\n.overlay.on{display:flex;}\n.modal{background:var(--bg2);border:1px solid var(--border);border-radius:20px;width:100%;max-width:540px;max-height:92vh;overflow-y:auto;}\n.mhead{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border);}\n.mtitle{font-family:'Cormorant Garamond',serif;font-size:21px;font-weight:300;}\n.mx{background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer;line-height:1;}\n.prog{height:3px;background:var(--border);}\n.prog-fill{height:100%;background:linear-gradient(90deg,var(--gold-d),var(--gold));transition:width .4s;}\n.mbody{padding:24px;}\n.mfoot{padding:16px 24px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px;}\n.slbl{font-size:11px;text-transform:uppercase;letter-spacing:.15em;color:var(--gold);margin-bottom:5px;}\n.sh{font-family:'Cormorant Garamond',serif;font-size:24px;font-weight:300;margin-bottom:3px;}\n.ssub{font-size:13px;color:var(--muted);margin-bottom:22px;}\n.opts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px;}\n.opt{background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:13px 8px;text-align:center;cursor:pointer;transition:all .18s;color:var(--text);}\n.opt:hover,.opt.sel{border-color:var(--gold);background:rgba(201,161,101,.08);color:var(--gold);}\n.opt-i{font-size:20px;display:block;margin-bottom:4px;}\n.opt-l{font-size:12px;font-weight:500;}\n.fg{margin-bottom:16px;}\n.fl{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:var(--text);}\n.fi,.ft{width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--text);font-family:'DM Sans',sans-serif;font-size:14px;outline:none;transition:border-color .2s;}\n.fi:focus,.ft:focus{border-color:rgba(201,161,101,.5);}\n.ft{resize:vertical;min-height:90px;}\n.cc{font-size:11px;color:var(--muted);text-align:right;margin-top:3px;}\n.bbk{background:none;border:1px solid var(--border);color:var(--muted);padding:9px 16px;border-radius:6px;font-family:'DM Sans',sans-serif;font-size:13px;cursor:pointer;}\n.bnx{background:var(--gold);color:#000;border:none;padding:10px 28px;border-radius:6px;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:700;cursor:pointer;flex:1;max-width:220px;transition:all .2s;}\n.bnx:hover{background:var(--gold-l);}\n.bnx:disabled{opacity:.45;cursor:not-allowed;}\n.sum-box{background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:12px;}\n.sum-row{display:flex;justify-content:space-between;font-size:13px;padding:5px 0;border-bottom:1px solid var(--border);}\n.sum-row:last-child{border:none;padding-top:8px;}\n.sum-row span:first-child{color:var(--muted);}\n.err-box{color:#ff6b6b;font-size:12px;padding:8px 12px;background:rgba(255,107,107,.1);border-radius:6px;border:1px solid rgba(255,107,107,.3);margin-bottom:10px;}\n.load-wrap{padding:44px 0;text-align:center;}\n.spin{width:48px;height:48px;border:3px solid var(--border);border-top-color:var(--gold);border-radius:50%;animation:sp .8s linear infinite;margin:0 auto 20px;}\n@keyframes sp{to{transform:rotate(360deg)}}\n.load-h{font-family:'Cormorant Garamond',serif;font-size:22px;font-weight:300;color:var(--text);margin-bottom:6px;}\n.load-s{font-size:13px;color:var(--muted);}\n.load-steps{list-style:none;text-align:left;max-width:300px;margin:24px auto 0;}\n.load-steps li{font-size:13px;color:var(--muted);padding:7px 0;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border);}\n.load-steps li:last-child{border:none;}\n.load-steps li.done{color:#2ecc71;}\n.load-steps li.act{color:var(--text);font-weight:600;}\n.load-steps li::before{content:'\u25cb';font-size:11px;flex-shrink:0;color:var(--muted);}\n.load-steps li.done::before{content:'\u2713';color:#2ecc71;}\n.load-steps li.act::before{content:'\u25cf';color:var(--gold);}\n.song-card{background:var(--bg3);border:1px solid rgba(201,161,101,.3);border-radius:12px;padding:18px;margin-bottom:12px;}\n.song-card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}\n.song-card-title{font-size:14px;font-weight:600;}\n.song-var{font-size:11px;color:var(--gold);background:rgba(201,161,101,.1);padding:2px 10px;border-radius:100px;border:1px solid rgba(201,161,101,.2);}\n.song-dl{display:inline-flex;align-items:center;gap:6px;color:var(--gold);font-size:13px;font-weight:600;text-decoration:none;margin-top:6px;}\n.lyr-box{background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:16px;font-size:13px;line-height:1.85;color:var(--muted);white-space:pre-wrap;max-height:190px;overflow-y:auto;font-style:italic;margin-bottom:16px;}\n#adm{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.93);backdrop-filter:blur(12px);display:none;overflow-y:auto;}\n#adm.open{display:block;}\n.adm-w{max-width:860px;margin:0 auto;padding:32px 24px 100px;}\n.adm-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid #333;}\n.adm-ttl{font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:300;color:var(--gold);}\n.adm-ttl small{font-size:13px;color:var(--muted);font-family:'DM Sans',sans-serif;display:block;margin-top:2px;}\n.adm-x{background:none;border:1px solid #444;color:#aaa;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:13px;font-family:'DM Sans',sans-serif;}\n.adm-tabs{display:flex;gap:4px;margin-bottom:24px;flex-wrap:wrap;}\n.adm-tab{background:none;border:1px solid #333;color:#888;padding:9px 18px;border-radius:8px;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:13px;transition:all .2s;}\n.adm-tab.act{background:var(--gold);color:#000;border-color:var(--gold);font-weight:700;}\n.adm-sec{display:none;}\n.adm-sec.act{display:block;}\n.adm-card{background:#111;border:1px solid #2a2a2a;border-radius:12px;padding:24px;margin-bottom:18px;}\n.adm-card h3{font-size:14px;font-weight:600;color:var(--gold);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid #2a2a2a;}\n.adm-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}\n.af{margin-bottom:14px;}\n.af label{display:block;font-size:12px;font-weight:600;color:#aaa;margin-bottom:6px;text-transform:uppercase;letter-spacing:.06em;}\n.af input,.af textarea{width:100%;background:#1a1a1a;border:1px solid #333;border-radius:7px;padding:10px 12px;color:#f0f0f0;font-family:'DM Sans',sans-serif;font-size:14px;outline:none;transition:border-color .2s;}\n.af input:focus,.af textarea:focus{border-color:var(--gold);}\n.af textarea{resize:vertical;min-height:80px;}\n.af small{display:block;color:#555;font-size:11px;margin-top:4px;}\n.di{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:10px;padding:18px;margin-bottom:12px;}\n.di-g{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;}\n.di label,.ri label{font-size:11px;font-weight:600;color:#888;display:block;margin-bottom:5px;text-transform:uppercase;letter-spacing:.05em;}\n.di input{width:100%;background:#111;border:1px solid #333;border-radius:6px;padding:8px 10px;color:#f0f0f0;font-family:'DM Sans',sans-serif;font-size:13px;outline:none;}\n.di input:focus{border-color:var(--gold);}\n.urow{display:flex;gap:8px;align-items:center;}\n.urow input{flex:1;background:#111;border:1px solid #333;border-radius:6px;padding:8px 10px;color:#f0f0f0;font-family:'DM Sans',sans-serif;font-size:13px;outline:none;}\n.urow input:focus{border-color:var(--gold);}\n.del-btn{background:#c0392b;color:#fff;border:none;border-radius:6px;padding:7px 13px;cursor:pointer;font-size:12px;font-family:'DM Sans',sans-serif;flex-shrink:0;}\n.add-btn{background:transparent;border:1px dashed #444;color:#888;padding:12px;border-radius:10px;width:100%;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:13px;transition:all .2s;margin-top:4px;}\n.add-btn:hover{border-color:var(--gold);color:var(--gold);}\n.ri{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:10px;padding:16px;margin-bottom:12px;}\n.ri-g{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;}\n.ri input,.ri textarea{width:100%;background:#111;border:1px solid #333;border-radius:6px;padding:8px 10px;color:#f0f0f0;font-family:'DM Sans',sans-serif;font-size:13px;outline:none;}\n.ri textarea{resize:vertical;min-height:70px;}\n.ri input:focus,.ri textarea:focus{border-color:var(--gold);}\n.save-fab{position:fixed;bottom:24px;right:24px;background:var(--gold);color:#000;border:none;padding:14px 32px;border-radius:10px;font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 8px 32px rgba(201,161,101,.4);z-index:999999;transition:all .2s;}\n.save-fab:hover{background:var(--gold-l);transform:translateY(-2px);}\n.save-fab.ok{background:#27ae60;color:#fff;}\n.adm-tip{background:rgba(201,161,101,.08);border:1px solid rgba(201,161,101,.2);border-radius:8px;padding:12px 16px;font-size:13px;color:#aaa;margin-bottom:20px;line-height:1.7;}\n.adm-tip strong{color:var(--gold);}\n.hint{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.9);border:1px solid rgba(201,161,101,.4);color:var(--gold);font-size:13px;padding:8px 20px;border-radius:100px;pointer-events:none;opacity:0;transition:opacity .3s;z-index:300;font-family:'DM Sans',sans-serif;white-space:nowrap;}\n.hint.show{opacity:1;}\n.setup-box{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:10px;padding:18px;margin-top:12px;}\n.setup-box h4{font-size:13px;font-weight:600;color:var(--gold);margin-bottom:10px;}\n.setup-box ol{font-size:13px;color:#aaa;padding-left:18px;line-height:2.3;}\n.setup-box a{color:var(--gold);text-decoration:none;}\n.setup-box strong{color:#f0f0f0;}\n@media(max-width:768px){.nav-links{display:none;}.foot-grid{grid-template-columns:1fr 1fr;}.opts{grid-template-columns:repeat(2,1fr);}.adm-grid,.di-g,.ri-g{grid-template-columns:1fr;}}\n<\/style>\n<\/head>\n<body>\n\n<div class=\"ann\" id=\"ann-bar\"><\/div>\n<nav>\n  <div class=\"nav-logo\" id=\"nav-logo\">FujeStudio<\/div>\n  <ul class=\"nav-links\">\n    <li><a href=\"#demo\">Demo<\/a><\/li>\n    <li><a href=\"#cum\">Cum Func\u021bioneaz\u0103<\/a><\/li>\n    <li><a href=\"#recenzii\">Recenzii<\/a><\/li>\n    <li><a href=\"#preturi\">Pre\u021buri<\/a><\/li>\n  <\/ul>\n  <button class=\"btn\" onclick=\"openModal()\" id=\"nav-cta\">Creeaz\u0103 Melodia<\/button>\n<\/nav>\n\n<section class=\"hero\">\n  <div class=\"hero-bg\"><\/div>\n  <div class=\"hero-content\">\n    <div class=\"hero-pill\">\u2728 Melodii Personalizate cu AI<\/div>\n    <h1 id=\"hero-title\">Transform\u0103 <em>Emo\u021biile<\/em> \u00een Melodii Unice<\/h1>\n    <p class=\"hero-sub\" id=\"hero-sub\">Creeaz\u0103 o melodie personalizat\u0103 cu versuri unice, compuse special pentru persoana drag\u0103. Cadoul perfect care va r\u0103m\u00e2ne \u00een suflet pentru totdeauna.<\/p>\n    <div class=\"hero-btns\">\n      <button class=\"btn\" onclick=\"openModal()\" id=\"btn-hero\">Creeaz\u0103 Melodia<\/button>\n      <a href=\"#demo\" class=\"btn-o\">\u25b6 Ascult\u0103 Demo<\/a>\n    <\/div>\n    <div class=\"stats\">\n      <div class=\"stat\"><span class=\"stat-v\" id=\"s-rating\">4.9\/5<\/span><span class=\"stat-l\">Rating<\/span><\/div>\n      <div class=\"stat\"><span class=\"stat-v\" id=\"s-del\">~3 min<\/span><span class=\"stat-l\">Livrare<\/span><\/div>\n      <div class=\"stat\"><span class=\"stat-v\" id=\"s-var\">2<\/span><span class=\"stat-l\">Varia\u021bii<\/span><\/div>\n      <div class=\"stat\"><span class=\"stat-v\" id=\"s-sat\">99%<\/span><span class=\"stat-l\">Satisfac\u021bie<\/span><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"sec-alt\" id=\"demo\">\n  <div class=\"sec-lbl\">Exemple Reale<\/div>\n  <h2 class=\"sec-h\">Descoper\u0103 Magia Melodiilor<\/h2>\n  <p class=\"sec-sub\">Ascult\u0103 melodii create pentru clien\u021bii no\u0219tri<\/p>\n  <div class=\"demo-grid\" id=\"demo-grid\"><\/div>\n  <div style=\"text-align:center;margin-top:32px;\"><button class=\"btn\" onclick=\"openModal()\">Creeaz\u0103 Propria Ta Melodie<\/button><\/div>\n<\/section>\n\n<section class=\"sec\">\n  <div class=\"sec-lbl\">De ce FujeStudio<\/div>\n  <h2 class=\"sec-h\">Tot ce ai nevoie pentru cadoul perfect<\/h2>\n  <div class=\"feat-grid\">\n    <div class=\"feat-card\"><div class=\"feat-icon\">\ud83c\udfb5<\/div><div class=\"feat-title\">Versuri Personalizate<\/div><p class=\"feat-desc\">Versuri unice create special pentru persoana drag\u0103, cu numele \u0219i povestea voastr\u0103.<\/p><\/div>\n    <div class=\"feat-card\"><div class=\"feat-icon\">\ud83c\udf9b\ufe0f<\/div><div class=\"feat-title\">2 Varia\u021bii Unice<\/div><p class=\"feat-desc\">Prime\u0219ti 2 varia\u021bii ale melodiei tale pentru a alege cea care \u00ee\u021bi place cel mai mult.<\/p><\/div>\n    <div class=\"feat-card\"><div class=\"feat-icon\">\u26a1<\/div><div class=\"feat-title\">Gata Rapid<\/div><p class=\"feat-desc\">Melodia ta personalizat\u0103 este livrat\u0103 rapid, direct pe email-ul t\u0103u.<\/p><\/div>\n    <div class=\"feat-card\"><div class=\"feat-icon\">\ud83d\udd12<\/div><div class=\"feat-title\">Sigur \u0219i Privat<\/div><p class=\"feat-desc\">Povestea ta r\u0103m\u00e2ne confiden\u021bial\u0103. Melodia este creat\u0103 exclusiv pentru tine.<\/p><\/div>\n    <div class=\"feat-card\"><div class=\"feat-icon\">\ud83c\udfa7<\/div><div class=\"feat-title\">Calitate Audio HD<\/div><p class=\"feat-desc\">Fi\u0219iere audio de \u00eenalt\u0103 calitate, gata de partajat sau desc\u0103rcat pe orice dispozitiv.<\/p><\/div>\n    <div class=\"feat-card\"><div class=\"feat-icon\">\ud83c\udfbc<\/div><div class=\"feat-title\">Orice Gen Muzical<\/div><p class=\"feat-desc\">Pop, romantic, reggaeton, muzic\u0103 popular\u0103, manea \u2014 orice stil dore\u0219ti.<\/p><\/div>\n  <\/div>\n<\/section>\n\n<section class=\"sec-alt\" id=\"cum\">\n  <div class=\"sec-lbl\">Simplu ca 1-2-3-4<\/div>\n  <h2 class=\"sec-h\">Cum Func\u021bioneaz\u0103<\/h2>\n  <p class=\"sec-sub\">De la idee la melodie \u00een doar c\u00e2teva minute<\/p>\n  <div class=\"steps-grid\">\n    <div class=\"step-card\"><div class=\"step-no\">01<\/div><div class=\"step-title\">Spune-ne Povestea<\/div><p class=\"step-desc\">Completezi un formular simplu cu detalii despre persoana drag\u0103 \u0219i ocazia special\u0103.<\/p><\/div>\n    <div class=\"step-card\"><div class=\"step-no\">02<\/div><div class=\"step-title\">Plat\u0103 Securizat\u0103<\/div><p class=\"step-desc\">Checkout rapid \u0219i sigur. Plata ta este 100% protejat\u0103.<\/p><\/div>\n    <div class=\"step-card\"><div class=\"step-no\">03<\/div><div class=\"step-title\">Cre\u0103m Magia<\/div><p class=\"step-desc\">Compunem versuri unice \u0219i gener\u0103m 2 melodii personalizate special pentru tine.<\/p><\/div>\n    <div class=\"step-card\"><div class=\"step-no\">04<\/div><div class=\"step-title\">Prime\u0219ti Melodiile<\/div><p class=\"step-desc\">\u00cen c\u00e2teva minute prime\u0219ti pe email cele 2 varia\u021bii ale melodiei tale.<\/p><\/div>\n  <\/div>\n<\/section>\n\n<section class=\"sec\" id=\"recenzii\">\n  <div class=\"sec-lbl\">Pove\u0219ti Reale<\/div>\n  <h2 class=\"sec-h\">Ce spun clien\u021bii no\u0219tri<\/h2>\n  <p class=\"sec-sub\">Sute de clien\u021bi ferici\u021bi au creat momente de neuitat<\/p>\n  <div class=\"rev-grid\" id=\"rev-grid\"><\/div>\n<\/section>\n\n<section class=\"sec-alt\" id=\"preturi\">\n  <div style=\"text-align:center;\">\n    <div class=\"sec-lbl\">Ofert\u0103 Limitat\u0103<\/div>\n    <h2 class=\"sec-h\">Un pre\u021b, zero surprize<\/h2>\n    <p class=\"sec-sub\" style=\"margin:0 auto;\">Totul inclus. F\u0103r\u0103 taxe ascunse.<\/p>\n  <\/div>\n  <div class=\"price-wrap\">\n    <div class=\"price-badge\" id=\"price-badge\">-70% REDUCERE<\/div>\n    <p class=\"price-old\"><span id=\"price-old\">100<\/span> Lei<\/p>\n    <div class=\"price-big\" id=\"price-display\">29<sup style=\"font-size:28px;\">.99<\/sup><\/div>\n    <p class=\"price-period\">lei \u00b7 plat\u0103 unic\u0103 \u00b7 prime\u0219ti totul imediat<\/p>\n    <ul class=\"price-list\">\n      <li>2 varia\u021bii muzicale unice<\/li><li>Versuri personalizate AI<\/li>\n      <li>Calitate audio HD<\/li><li>Livrare rapid\u0103 pe email<\/li>\n      <li>Desc\u0103rcare nelimitat\u0103<\/li><li>Suport prioritar<\/li>\n    <\/ul>\n    <button class=\"btn\" style=\"width:100%;padding:15px;font-size:16px;border-radius:10px;\" onclick=\"openModal()\">Creeaz\u0103 Melodia Acum<\/button>\n    <p style=\"font-size:11px;color:var(--muted);margin-top:12px;\">Plat\u0103 securizat\u0103 \u00b7 4.9\/5 rating<\/p>\n  <\/div>\n<\/section>\n\n<section class=\"cta-sec\">\n  <div class=\"sec-lbl\">Cadoul Perfect<\/div>\n  <h2 class=\"sec-h\">Un Cadou care Vorbe\u0219te Direct la Suflet<\/h2>\n  <button class=\"btn\" style=\"padding:16px 50px;font-size:17px;margin-top:28px;\" onclick=\"openModal()\">Creeaz\u0103 Melodia Acum<\/button>\n<\/section>\n\n<footer>\n  <div class=\"foot-grid\">\n    <div class=\"foot-brand\"><div class=\"foot-logo\">FujeStudio<\/div><p>Creeaz\u0103 melodii personalizate unice pentru cei dragi. Cadoul perfect pentru orice ocazie.<\/p><\/div>\n    <div class=\"foot-col\"><h4>Produs<\/h4><ul>\n      <li><a href=\"#cum\">Cum Func\u021bioneaz\u0103<\/a><\/li><li><a href=\"#preturi\">Pre\u021buri<\/a><\/li>\n      <li><a href=\"#demo\">Demo<\/a><\/li><li><a href=\"#recenzii\">Recenzii<\/a><\/li>\n    <\/ul><\/div>\n    <div class=\"foot-col\"><h4>Suport<\/h4><ul>\n      <li><a href=\"https:\/\/fujestudio.ro\/contact\/\">Contact<\/a><\/li>\n      <li><a href=\"https:\/\/fujestudio.ro\/privacy-policy\/\">Confiden\u021bialitate<\/a><\/li>\n    <\/ul><\/div>\n    <div class=\"foot-col\"><h4>Contact<\/h4><ul>\n      <li><a href=\"#\" id=\"f-email\">contact@fujestudio.ro<\/a><\/li>\n      <li><a href=\"#\" id=\"f-phone\">+40 723 279 230<\/a><\/li>\n    <\/ul><\/div>\n  <\/div>\n  <div class=\"foot-bottom\">\n    <p>\u00a9 <span id=\"yr\"><\/span> FujeStudio.ro \u00b7 Toate drepturile rezervate<\/p>\n    <a href=\"https:\/\/fujestudio.ro\/privacy-policy\/\">Politica de Confiden\u021bialitate<\/a>\n  <\/div>\n<\/footer>\n\n<!-- ORDER MODAL -->\n<div class=\"overlay\" id=\"overlay\" onclick=\"if(event.target===this)closeModal()\">\n  <div class=\"modal\">\n    <div class=\"mhead\"><span class=\"mtitle\">Creeaz\u0103 Melodia Ta<\/span><button class=\"mx\" onclick=\"closeModal()\">\u2715<\/button><\/div>\n    <div class=\"prog\"><div class=\"prog-fill\" id=\"prog\" style=\"width:25%\"><\/div><\/div>\n    <div class=\"mbody\" id=\"mbody\"><\/div>\n    <div class=\"mfoot\" id=\"mfoot\">\n      <button class=\"bbk\" id=\"bbk\" onclick=\"prevStep()\" style=\"display:none\">\u2190 \u00cenapoi<\/button>\n      <button class=\"bnx\" id=\"bnx\" onclick=\"nextStep()\">Continu\u0103 \u2192<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- ADMIN PANEL -->\n<div id=\"adm\">\n  <div class=\"adm-w\">\n    <div class=\"adm-hdr\">\n      <div class=\"adm-ttl\">\u2699\ufe0f Panou de Administrare <small>Modific\u0103 orice element al paginii \u2014 f\u0103r\u0103 cod<\/small><\/div>\n      <button class=\"adm-x\" onclick=\"closeAdm()\">\u2715 \u00cenchide<\/button>\n    <\/div>\n    <div class=\"adm-tip\"><strong>\ud83d\udca1 Cum func\u021bioneaz\u0103:<\/strong> Modific\u0103 orice c\u00e2mp, apas\u0103 <strong>\"\ud83d\udcbe Salveaz\u0103\"<\/strong> din dreapta-jos. Modific\u0103rile r\u0103m\u00e2n permanente.<\/div>\n    <div class=\"adm-tabs\">\n      <button class=\"adm-tab act\" onclick=\"tab('general',this)\">\ud83c\udff7\ufe0f Texte<\/button>\n      <button class=\"adm-tab\" onclick=\"tab('demo',this)\">\ud83c\udfb5 Demo Melodii<\/button>\n      <button class=\"adm-tab\" onclick=\"tab('reviews',this)\">\u2b50 Recenzii<\/button>\n      <button class=\"adm-tab\" onclick=\"tab('pricing',this)\">\ud83d\udcb0 Pre\u021buri<\/button>\n      <button class=\"adm-tab\" onclick=\"tab('setup',this)\">\ud83d\udd11 Configurare API<\/button>\n    <\/div>\n\n    <div class=\"adm-sec act\" id=\"tab-general\">\n      <div class=\"adm-card\"><h3>\ud83d\udcdd Texte Principale<\/h3>\n        <div class=\"af\"><label>Bara promo\u021bional\u0103 de sus<\/label><input id=\"c-promo\" type=\"text\"><\/div>\n        <div class=\"af\"><label>Titlul mare Hero<\/label><input id=\"c-title\" type=\"text\"><\/div>\n        <div class=\"af\"><label>Descrierea Hero<\/label><textarea id=\"c-sub\"><\/textarea><\/div>\n        <div class=\"af\"><label>Text Buton Principal<\/label><input id=\"c-btn\" type=\"text\"><\/div>\n      <\/div>\n      <div class=\"adm-card\"><h3>\ud83d\udcca Statistici<\/h3>\n        <div class=\"adm-grid\">\n          <div class=\"af\"><label>Rating<\/label><input id=\"c-rating\" type=\"text\"><\/div>\n          <div class=\"af\"><label>Timp Livrare<\/label><input id=\"c-del\" type=\"text\"><\/div>\n          <div class=\"af\"><label>Varia\u021bii<\/label><input id=\"c-var\" type=\"text\"><\/div>\n          <div class=\"af\"><label>Satisfac\u021bie<\/label><input id=\"c-sat\" type=\"text\"><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"adm-card\"><h3>\ud83d\udcde Contact<\/h3>\n        <div class=\"adm-grid\">\n          <div class=\"af\"><label>Email<\/label><input id=\"c-email\" type=\"email\"><\/div>\n          <div class=\"af\"><label>Telefon<\/label><input id=\"c-phone\" type=\"text\"><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"adm-sec\" id=\"tab-demo\">\n      <div class=\"adm-card\"><h3>\ud83c\udfb5 Melodii Demo<\/h3>\n        <div id=\"di-list\"><\/div>\n        <button class=\"add-btn\" onclick=\"addDemo()\">+ Adaug\u0103 melodie demo<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"adm-sec\" id=\"tab-reviews\">\n      <div class=\"adm-card\"><h3>\u2b50 Recenzii Clien\u021bi<\/h3>\n        <div id=\"ri-list\"><\/div>\n        <button class=\"add-btn\" onclick=\"addRev()\">+ Adaug\u0103 recenzie<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"adm-sec\" id=\"tab-pricing\">\n      <div class=\"adm-card\"><h3>\ud83d\udcb0 Pre\u021buri<\/h3>\n        <div class=\"adm-grid\">\n          <div class=\"af\"><label>Pre\u021bul actual<\/label><input id=\"c-price\" type=\"text\"><small>ex: 29.99<\/small><\/div>\n          <div class=\"af\"><label>Pre\u021bul vechi (t\u0103iat)<\/label><input id=\"c-price-old\" type=\"text\"><\/div>\n          <div class=\"af\"><label>Moneda<\/label><input id=\"c-curr\" type=\"text\"><\/div>\n          <div class=\"af\"><label>Badge reducere<\/label><input id=\"c-badge\" type=\"text\"><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"adm-sec\" id=\"tab-setup\">\n      <div class=\"adm-card\">\n        <h3>\ud83d\udd11 Configurare Chei API<\/h3>\n        <div class=\"adm-tip\">Ambele chei se adaug\u0103 \u00een fi\u0219ierul PHP (primele 2 linii de configurare). Cheile sunt complet ascunse \u2014 clien\u021bii nu le pot vedea niciodat\u0103.<\/div>\n\n        <div class=\"setup-box\" style=\"margin-bottom:16px;\">\n          <h4>1\ufe0f\u20e3 Claude API Key (~$0.01\/melodie \u00b7 $5 credit gratuit la \u00eenregistrare)<\/h4>\n          <ol>\n            <li>Mergi pe <a href=\"https:\/\/console.anthropic.com\" target=\"_blank\"><strong>console.anthropic.com<\/strong><\/a><\/li>\n            <li>\u00cenregistrare gratuit\u0103 \u2192 prime\u0219ti <strong>$5 credit gratuit<\/strong> (~500 teste)<\/li>\n            <li>Click <strong>API Keys<\/strong> \u2192 <strong>Create Key<\/strong><\/li>\n            <li>Copiaz-o \u0219i adaug-o \u00een fi\u0219ier la <strong>CLAUDE_API_KEY<\/strong><\/li>\n          <\/ol>\n        <\/div>\n\n        <div class=\"setup-box\">\n          <h4>2\ufe0f\u20e3 SunoAPI Key (~$0.03\/melodie \u00b7 credite gratuite la \u00eenregistrare)<\/h4>\n          <ol>\n            <li>Mergi pe <a href=\"https:\/\/sunoapi.org\" target=\"_blank\"><strong>sunoapi.org<\/strong><\/a><\/li>\n            <li>\u00cenregistrare gratuit\u0103 \u2192 prime\u0219ti <strong>credite de test<\/strong><\/li>\n            <li>Mergi la <a href=\"https:\/\/sunoapi.org\/api-key\" target=\"_blank\"><strong>sunoapi.org\/api-key<\/strong><\/a><\/li>\n            <li>Click <strong>Create API Key<\/strong> \u2192 copiaz-o<\/li>\n            <li>Adaug-o \u00een fi\u0219ier la <strong>SUNOAPI_KEY<\/strong><\/li>\n          <\/ol>\n        <\/div>\n\n        <div style=\"background:rgba(39,174,96,.08);border:1px solid rgba(39,174,96,.25);border-radius:8px;padding:14px;margin-top:14px;font-size:13px;color:#aaa;line-height:1.7;\">\n          \u2705 <strong style=\"color:#2ecc71;\">Pl\u0103te\u0219ti DOAR c\u00e2nd un client comand\u0103<\/strong> \u2014 navigarea pe pagin\u0103 \u0219i testele tale cu creditele gratuite nu cost\u0103 nimic extra.\n        <\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n  <button class=\"save-fab\" id=\"save-fab\" onclick=\"saveAll()\">\ud83d\udcbe Salveaz\u0103 Modific\u0103rile<\/button>\n<\/div>\n<div class=\"hint\" id=\"hint\"><\/div>\n\n<script>\nconst PROXY='<?php echo htmlspecialchars($proxy_url);?>';\nconst D={\n  promo:'\u2728 PROMO\u021aIE: La fiecare melodie comandat\u0103 primi\u021bi una GRATIS! \u00b7 Livrare \u00een ~3 minute pe email!',\n  title:'Transform\u0103 <em>Emo\u021biile<\/em> \u00een Melodii Unice',\n  sub:'Creeaz\u0103 o melodie personalizat\u0103 cu versuri unice, compuse special pentru persoana drag\u0103. Cadoul perfect care va r\u0103m\u00e2ne \u00een suflet pentru totdeauna.',\n  btn:'Creeaz\u0103 Melodia',rating:'4.9\/5',del:'~3 min',var:'2',sat:'99%',\n  email:'contact@fujestudio.ro',phone:'+40 723 279 230',\n  price:'29.99',priceOld:'100',curr:'Lei',badge:'-70% REDUCERE',\n  demos:[\n    {title:'Pentru Maria',occ:'Zi de Na\u0219tere',genre:'Pop',pct:42,url:''},\n    {title:'Dragostea Noastr\u0103',occ:'Aniversare',genre:'Romantic',pct:65,url:''},\n    {title:'Pentru mama, Elena',occ:'8 Martie',genre:'Popular\u0103',pct:78,url:''},\n    {title:'Surpriz\u0103 pentru Cristi',occ:'Petrecere',genre:'Manea',pct:30,url:''},\n  ],\n  reviews:[\n    {name:'Maria I.',city:'Bucure\u0219ti',text:'Am comandat o melodie pentru so\u021bul meu. A pl\u00e2ns de emo\u021bie! Cel mai frumos cadou pe care l-am oferit vreodat\u0103.'},\n    {name:'Andrei P.',city:'Cluj-Napoca',text:'Calitatea este incredibil\u0103! Am primit 2 varia\u021bii superbe \u0219i am ales-o pe cea perfect\u0103. Recomand cu \u00eencredere!'},\n    {name:'Elena M.',city:'Timi\u0219oara',text:'Pentru nunta noastr\u0103 am comandat o melodie special\u0103. A fost momentul cel mai emo\u021bionant din toat\u0103 ziua!'},\n    {name:'Alexandru D.',city:'Ia\u0219i',text:'Am surprins-o pe mama de ziua ei cu o melodie personalizat\u0103. Nu am v\u0103zut-o niciodat\u0103 at\u00e2t de fericit\u0103!'},\n    {name:'Cristina S.',city:'Constan\u021ba',text:'Serviciu rapid \u0219i profesional. Melodia a fost gata \u00een c\u00e2teva minute \u0219i calitatea vocii este uimitoare.'},\n    {name:'Mihai R.',city:'Bra\u0219ov',text:'Am comandat pentru aniversarea de 10 ani cu so\u021bia. Cadoul perfect care ne-a f\u0103cut pe am\u00e2ndoi s\u0103 l\u0103crim\u0103m.'},\n  ]\n};\nfunction lc(){try{return JSON.parse(localStorage.getItem('fsm')||'{}')}catch(e){return{}}}\nfunction sc(c){localStorage.setItem('fsm',JSON.stringify(c))}\nfunction g(k){const s=lc();return s[k]!==undefined?s[k]:D[k]}\nfunction applyPage(){\n  document.getElementById('ann-bar').textContent=g('promo');\n  document.getElementById('hero-title').innerHTML=g('title');\n  document.getElementById('hero-sub').textContent=g('sub');\n  document.getElementById('s-rating').textContent=g('rating');\n  document.getElementById('s-del').textContent=g('del');\n  document.getElementById('s-var').textContent=g('var');\n  document.getElementById('s-sat').textContent=g('sat');\n  document.getElementById('price-old').textContent=g('priceOld');\n  document.getElementById('price-badge').textContent=g('badge');\n  const fe=document.getElementById('f-email');fe.textContent=g('email');fe.href='mailto:'+g('email');\n  const fp=document.getElementById('f-phone');fp.textContent=g('phone');fp.href='tel:'+g('phone').replace(\/\\s\/g,'');\n  document.getElementById('yr').textContent=new Date().getFullYear();\n  const pr=g('price').toString().split('.');\n  document.getElementById('price-display').innerHTML=pr[0]+(pr[1]?'<sup style=\"font-size:28px;\">.'+pr[1]+'<\/sup>':'');\n  document.getElementById('btn-hero').textContent=g('btn')+' \u2014 '+g('price')+' '+g('curr');\n  document.getElementById('nav-cta').textContent=g('btn');\n  renderDemos();renderRevs();\n}\nfunction renderDemos(){\n  const svgP='<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"#000\"><polygon points=\"5,3 19,12 5,21\"\/><\/svg>';\n  document.getElementById('demo-grid').innerHTML=g('demos').map((d,i)=>`\n    <div class=\"demo-card\">\n      <div class=\"demo-thumb\">\n        <div class=\"genre-tag\">${d.genre||'Pop'}<\/div>\n        <button class=\"play-btn\" data-url=\"${d.url||''}\" data-idx=\"${i}\" onclick=\"togglePlay(this)\">${svgP}<\/button>\n      <\/div>\n      ${d.url?`<audio id=\"aud-${i}\" src=\"${d.url}\" preload=\"none\"><\/audio>`:''}\n      <div class=\"demo-info\">\n        <div class=\"demo-title\">${d.title}<\/div>\n        <div class=\"demo-sub\">${d.occ}<\/div>\n        <div class=\"bar\"><div class=\"bar-fill\" style=\"width:${d.pct||50}%\" id=\"bar-${i}\"><\/div><\/div>\n      <\/div>\n    <\/div>`).join('');\n}\nfunction renderRevs(){\n  document.getElementById('rev-grid').innerHTML=g('reviews').map(r=>`\n    <div class=\"rev-card\">\n      <div class=\"stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n      <p class=\"rev-text\">\"${r.text}\"<\/p>\n      <div class=\"rev-author\">\n        <div class=\"avatar\">${(r.name||'').split(' ').map(w=>w[0]||'').join('').toUpperCase().slice(0,2)}<\/div>\n        <div><div class=\"rev-name\">${r.name}<\/div><div class=\"rev-city\">${r.city}<\/div><\/div>\n      <\/div>\n    <\/div>`).join('');\n}\nlet curAud=null;\nfunction togglePlay(btn){\n  const svgP='<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"#000\"><polygon points=\"5,3 19,12 5,21\"\/><\/svg>';\n  const svgS='<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"#000\"><rect x=\"6\" y=\"3\" width=\"4\" height=\"18\"\/><rect x=\"14\" y=\"3\" width=\"4\" height=\"18\"\/><\/svg>';\n  const idx=btn.dataset.idx,url=btn.dataset.url,aud=document.getElementById('aud-'+idx);\n  document.querySelectorAll('.play-btn').forEach(b=>{b.innerHTML=svgP;b.dataset.pl='';});\n  if(curAud){curAud.pause();curAud.currentTime=0;}\n  if(!url)return;\n  if(aud&&btn.dataset.pl!=='true'){\n    aud.play();btn.innerHTML=svgS;btn.dataset.pl='true';curAud=aud;\n    const bar=document.getElementById('bar-'+idx);\n    if(bar){aud.ontimeupdate=()=>{if(aud.duration)bar.style.width=(aud.currentTime\/aud.duration*100)+'%';};aud.onended=()=>{btn.innerHTML=svgP;btn.dataset.pl='';};}\n  }\n}\ndocument.querySelectorAll('a[href^=\"#\"]').forEach(a=>a.addEventListener('click',e=>{\n  const t=document.querySelector(a.getAttribute('href'));\n  if(t){e.preventDefault();t.scrollIntoView({behavior:'smooth',block:'start'});}\n}));\nlet clicks=0,timer;\ndocument.getElementById('nav-logo').addEventListener('click',()=>{\n  clicks++;const h=document.getElementById('hint'),left=5-clicks;\n  if(left>0){h.textContent=left===4?'\ud83d\udd12 Acces Admin Panel':left+' click-uri r\u0103mase\u2026';h.classList.add('show');clearTimeout(timer);timer=setTimeout(()=>{h.classList.remove('show');clicks=0;},2000);}\n  else{h.classList.remove('show');clicks=0;openAdm();}\n});\nfunction openAdm(){\n  document.getElementById('c-promo').value=g('promo');\n  document.getElementById('c-title').value=g('title').replace(\/<[^>]+>\/g,'');\n  document.getElementById('c-sub').value=g('sub');\n  document.getElementById('c-btn').value=g('btn');\n  document.getElementById('c-rating').value=g('rating');\n  document.getElementById('c-del').value=g('del');\n  document.getElementById('c-var').value=g('var');\n  document.getElementById('c-sat').value=g('sat');\n  document.getElementById('c-email').value=g('email');\n  document.getElementById('c-phone').value=g('phone');\n  document.getElementById('c-price').value=g('price');\n  document.getElementById('c-price-old').value=g('priceOld');\n  document.getElementById('c-curr').value=g('curr');\n  document.getElementById('c-badge').value=g('badge');\n  renderDemoItems();renderRevItems();\n  document.getElementById('adm').classList.add('open');document.body.style.overflow='hidden';\n}\nfunction closeAdm(){document.getElementById('adm').classList.remove('open');document.body.style.overflow='';}\nfunction tab(id,btn){\n  document.querySelectorAll('.adm-sec').forEach(s=>s.classList.remove('act'));\n  document.querySelectorAll('.adm-tab').forEach(b=>b.classList.remove('act'));\n  document.getElementById('tab-'+id).classList.add('act');btn.classList.add('act');\n}\nfunction renderDemoItems(){\n  document.getElementById('di-list').innerHTML=g('demos').map((d,i)=>`\n    <div class=\"di\">\n      <div class=\"di-g\">\n        <div><label>Titlu Melodie<\/label><input id=\"dt-${i}\" value=\"${d.title||''}\"><\/div>\n        <div><label>Ocazie<\/label><input id=\"do-${i}\" value=\"${d.occ||''}\"><\/div>\n        <div><label>Gen Muzical<\/label><input id=\"dg-${i}\" value=\"${d.genre||''}\"><\/div>\n        <div><label>Progres bar\u0103 (%)<\/label><input type=\"number\" id=\"dp-${i}\" value=\"${d.pct||50}\" min=\"5\" max=\"95\"><\/div>\n      <\/div>\n      <label>\ud83d\udd17 Link Audio<\/label>\n      <div class=\"urow\" style=\"margin-top:6px;\">\n        <input id=\"du-${i}\" type=\"url\" value=\"${d.url||''}\" placeholder=\"https:\/\/...\">\n        <button class=\"del-btn\" onclick=\"delDemo(${i})\">\u2715<\/button>\n      <\/div>\n    <\/div>`).join('');\n}\nfunction addDemo(){const demos=g('demos');demos.push({title:'Melodie Nou\u0103',occ:'Ocazie',genre:'Pop',pct:50,url:''});const c=lc();c.demos=demos;sc(c);renderDemoItems();}\nfunction delDemo(i){const demos=g('demos');demos.splice(i,1);const c=lc();c.demos=demos;sc(c);renderDemoItems();}\nfunction renderRevItems(){\n  document.getElementById('ri-list').innerHTML=g('reviews').map((r,i)=>`\n    <div class=\"ri\">\n      <div class=\"ri-g\">\n        <div><label>Nume<\/label><input id=\"rn-${i}\" value=\"${r.name||''}\"><\/div>\n        <div><label>Ora\u0219<\/label><input id=\"rc-${i}\" value=\"${r.city||''}\"><\/div>\n      <\/div>\n      <label>Text Recenzie<\/label>\n      <textarea id=\"rt-${i}\" style=\"margin-top:6px;\">${r.text||''}<\/textarea>\n      <button class=\"del-btn\" style=\"margin-top:8px;\" onclick=\"delRev(${i})\">\u2715 \u0218terge<\/button>\n    <\/div>`).join('');\n}\nfunction addRev(){const revs=g('reviews');revs.push({name:'Nume',city:'Ora\u0219',text:'Recenzie...'});const c=lc();c.reviews=revs;sc(c);renderRevItems();}\nfunction delRev(i){const revs=g('reviews');revs.splice(i,1);const c=lc();c.reviews=revs;sc(c);renderRevItems();}\nfunction saveAll(){\n  const c={};\n  c.promo=document.getElementById('c-promo').value;c.title=document.getElementById('c-title').value;\n  c.sub=document.getElementById('c-sub').value;c.btn=document.getElementById('c-btn').value;\n  c.rating=document.getElementById('c-rating').value;c.del=document.getElementById('c-del').value;\n  c.var=document.getElementById('c-var').value;c.sat=document.getElementById('c-sat').value;\n  c.email=document.getElementById('c-email').value;c.phone=document.getElementById('c-phone').value;\n  c.price=document.getElementById('c-price').value;c.priceOld=document.getElementById('c-price-old').value;\n  c.curr=document.getElementById('c-curr').value;c.badge=document.getElementById('c-badge').value;\n  const od=g('demos');\n  c.demos=od.map((d,i)=>({title:document.getElementById('dt-'+i)?.value||d.title,occ:document.getElementById('do-'+i)?.value||d.occ,genre:document.getElementById('dg-'+i)?.value||d.genre,pct:parseInt(document.getElementById('dp-'+i)?.value)||d.pct,url:document.getElementById('du-'+i)?.value||d.url}));\n  const or=g('reviews');\n  c.reviews=or.map((r,i)=>({name:document.getElementById('rn-'+i)?.value||r.name,city:document.getElementById('rc-'+i)?.value||r.city,text:document.getElementById('rt-'+i)?.value||r.text}));\n  sc(c);applyPage();\n  const fab=document.getElementById('save-fab');fab.textContent='\u2705 Salvat!';fab.classList.add('ok');\n  setTimeout(()=>{fab.textContent='\ud83d\udcbe Salveaz\u0103 Modific\u0103rile';fab.classList.remove('ok');},2500);\n}\nconst OCC=[{id:'zi-nastere',i:'\ud83c\udf82',l:'Zi de Na\u0219tere'},{id:'dragoste',i:'\u2764\ufe0f',l:'Dragoste'},{id:'nunta',i:'\ud83d\udc8d',l:'Nunt\u0103'},{id:'aniversare',i:'\ud83e\udd42',l:'Aniversare'},{id:'familie',i:'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67',l:'Familie'},{id:'absolvire',i:'\ud83c\udf93',l:'Absolvire'},{id:'mama',i:'\ud83c\udf38',l:'8 Martie'},{id:'prietenie',i:'\ud83e\udd1d',l:'Prietenie'},{id:'altele',i:'\u2728',l:'Altele'}];\nconst GEN=[{id:'pop',i:'\ud83c\udfa4',l:'Pop'},{id:'romantic',i:'\ud83c\udf39',l:'Romantic'},{id:'populara',i:'\ud83e\ude97',l:'Muzic\u0103 Popular\u0103'},{id:'manea',i:'\ud83c\udfb5',l:'Manea'},{id:'raggaeton',i:'\ud83d\udd25',l:'Reggaeton'},{id:'altul',i:'\ud83c\udfb8',l:'Alt Gen'}];\nlet step=1,fd={occ:'',name:'',rel:'',story:'',genre:'',extra:'',email:'',sender:''};\nfunction openModal(){step=1;fd={occ:'',name:'',rel:'',story:'',genre:'',extra:'',email:'',sender:''};document.getElementById('overlay').classList.add('on');document.body.style.overflow='hidden';renderStep();}\nfunction closeModal(){document.getElementById('overlay').classList.remove('on');document.body.style.overflow='';}\nfunction setP(p){document.getElementById('prog').style.width=p+'%';}\nfunction nextStep(){\n  if(step===1&&!fd.occ){showErr('Selecta\u021bi o ocazie.');return;}\n  if(step===2){\n    fd.name=document.querySelector('#inp-name')?.value||fd.name;\n    fd.story=document.querySelector('#inp-story')?.value||fd.story;\n    fd.rel=document.querySelector('#inp-rel')?.value||fd.rel;\n    fd.sender=document.querySelector('#inp-sender')?.value||fd.sender;\n    if(!fd.name.trim()){showErr('Introduce\u021bi numele persoanei.');return;}\n    if(fd.story.trim().length<20){showErr('Descrie\u021bi mai pe larg (min. 20 caractere).');return;}\n  }\n  if(step===3){fd.extra=document.querySelector('#inp-extra')?.value||fd.extra;if(!fd.genre){showErr('Selecta\u021bi un gen muzical.');return;}}\n  if(step===4){fd.email=document.querySelector('#inp-email')?.value||fd.email;if(!fd.email.includes('@')){showErr('Email invalid.');return;}doGen();return;}\n  step++;renderStep();\n}\nfunction prevStep(){if(step>1){step--;renderStep();}}\nfunction showErr(m){document.querySelector('.err-box')?.remove();const el=document.createElement('div');el.className='err-box';el.textContent='\u26a0 '+m;document.getElementById('mbody').insertBefore(el,document.getElementById('mbody').firstChild);setTimeout(()=>el.remove(),3000);}\nfunction renderStep(){\n  [25,50,75,90].forEach((v,i)=>{if(step===i+1)setP(v);});\n  document.getElementById('bbk').style.display=step>1?'block':'none';\n  document.getElementById('bnx').style.display='block';document.getElementById('bnx').disabled=false;\n  document.getElementById('mfoot').style.display='flex';\n  document.getElementById('bnx').textContent=step===4?'\ud83c\udfb5 Genereaz\u0103 Melodia':'Continu\u0103 \u2192';\n  const b=document.getElementById('mbody');\n  if(step===1)b.innerHTML=`<div class=\"slbl\">Pasul 1 din 4<\/div><div class=\"sh\">Ce ocazie celebr\u0103m?<\/div><p class=\"ssub\">Alege ocazia pentru care cre\u0103m melodia<\/p><div class=\"opts\">${OCC.map(o=>`<div class=\"opt${fd.occ===o.id?' sel':''}\" onclick=\"so('${o.id}',this)\"><span class=\"opt-i\">${o.i}<\/span><span class=\"opt-l\">${o.l}<\/span><\/div>`).join('')}<\/div>`;\n  if(step===2)b.innerHTML=`<div class=\"slbl\">Pasul 2 din 4<\/div><div class=\"sh\">Spune-ne Povestea<\/div><p class=\"ssub\">Cu c\u00e2t mai multe detalii, cu at\u00e2t melodia va fi mai special\u0103<\/p><div class=\"fg\"><label class=\"fl\">Numele persoanei dragi *<\/label><input class=\"fi\" id=\"inp-name\" type=\"text\" placeholder=\"ex. Maria, Andrei, Mama\u2026\" value=\"${fd.name}\"><\/div><div class=\"fg\"><label class=\"fl\">Rela\u021bia voastr\u0103<\/label><input class=\"fi\" id=\"inp-rel\" type=\"text\" placeholder=\"ex. so\u021bie, mam\u0103, prieten\u2026\" value=\"${fd.rel}\"><\/div><div class=\"fg\"><label class=\"fl\">Poveste \u2014 momente speciale, calit\u0103\u021bi, amintiri *<\/label><textarea class=\"ft\" id=\"inp-story\" maxlength=\"500\" placeholder=\"Descrie ce face aceast\u0103 persoan\u0103 special\u0103\u2026\" oninput=\"document.getElementById('cc').textContent=this.value.length+'\/500'\">${fd.story}<\/textarea><div class=\"cc\" id=\"cc\">${fd.story.length}\/500<\/div><\/div><div class=\"fg\"><label class=\"fl\">Numele t\u0103u<\/label><input class=\"fi\" id=\"inp-sender\" type=\"text\" placeholder=\"ex. Alexandru\u2026\" value=\"${fd.sender}\"><\/div>`;\n  if(step===3)b.innerHTML=`<div class=\"slbl\">Pasul 3 din 4<\/div><div class=\"sh\">Stilul Muzical<\/div><p class=\"ssub\">Alege genul muzical preferat<\/p><div class=\"opts\">${GEN.map(x=>`<div class=\"opt${fd.genre===x.id?' sel':''}\" onclick=\"sg('${x.id}',this)\"><span class=\"opt-i\">${x.i}<\/span><span class=\"opt-l\">${x.l}<\/span><\/div>`).join('')}<\/div><div class=\"fg\"><label class=\"fl\">Instruc\u021biuni suplimentare (op\u021bional)<\/label><input class=\"fi\" id=\"inp-extra\" type=\"text\" placeholder=\"ex. voce feminin\u0103, tempo lent\u2026\" value=\"${fd.extra}\"><\/div>`;\n  if(step===4){const p=g('price'),cu=g('curr'),oL=OCC.find(o=>o.id===fd.occ)?.l||fd.occ,gL=GEN.find(x=>x.id===fd.genre)?.l||fd.genre;b.innerHTML=`<div class=\"slbl\">Pasul 4 din 4<\/div><div class=\"sh\">Ultimul Pas!<\/div><p class=\"ssub\">Email-ul unde trimitem melodia finalizat\u0103<\/p><div class=\"fg\"><label class=\"fl\">Adresa de email *<\/label><input class=\"fi\" id=\"inp-email\" type=\"email\" placeholder=\"email@exemplu.ro\" value=\"${fd.email}\"><\/div><div class=\"sum-box\"><div style=\"font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px;\">Rezumat comand\u0103<\/div><div class=\"sum-row\"><span>Ocazie:<\/span><span>${oL}<\/span><\/div><div class=\"sum-row\"><span>Persoana:<\/span><span>${fd.name||'-'}<\/span><\/div><div class=\"sum-row\"><span>Gen:<\/span><span>${gL}<\/span><\/div><div class=\"sum-row\"><span>Total:<\/span><span style=\"color:var(--gold);font-weight:700;\">${p} ${cu}<\/span><\/div><\/div>`;}\n}\nfunction so(id,el){fd.occ=id;document.querySelectorAll('.opt').forEach(b=>b.classList.remove('sel'));el.classList.add('sel');}\nfunction sg(id,el){fd.genre=id;document.querySelectorAll('.opt').forEach(b=>b.classList.remove('sel'));el.classList.add('sel');}\n\nasync function doGen(){\n  const b=document.getElementById('mbody');\n  document.getElementById('mfoot').style.display='none';setP(100);\n  const oL=OCC.find(o=>o.id===fd.occ)?.l||fd.occ;\n  const gL=GEN.find(x=>x.id===fd.genre)?.l||fd.genre;\n  b.innerHTML=`<div class=\"load-wrap\"><div class=\"spin\"><\/div><div class=\"load-h\">Cre\u0103m melodia ta\u2026<\/div><p class=\"load-s\">Personalizat pentru <strong>${fd.name||'persoana drag\u0103'}<\/strong><\/p><ul class=\"load-steps\"><li class=\"act\">Gener\u0103m versurile personalizate<\/li><li>Trimitem la studio muzical AI<\/li><li>Compunem melodia (~1-2 minute)<\/li><li>Finaliz\u0103m \u0219i preg\u0103tim desc\u0103rcarea<\/li><\/ul><\/div>`;\n  const setStep=n=>document.querySelectorAll('.load-steps li').forEach((li,i)=>{li.className=i<n?'done':i===n?'act':'';});\n  try{\n    \/\/ Tot procesul se face \u00een PHP \u2014 trimitem datele formularului\n    const res=await fetch(PROXY,{\n      method:'POST',\n      headers:{'Content-Type':'application\/json'},\n      body:JSON.stringify({\n        ocazie:oL, persoana:fd.name, relatie:fd.rel,\n        poveste:fd.story, gen:gL, extra:fd.extra, ofertant:fd.sender\n      })\n    });\n\n    setStep(1);\n\n    const data=await res.json();\n\n    if(data.error==='claude_missing')throw new Error('Cheia Claude API lipse\u0219te. Deschide Admin \u2192 tab \"Configurare API\".');\n    if(data.error==='suno_missing')throw new Error('Cheia SunoAPI lipse\u0219te. Deschide Admin \u2192 tab \"Configurare API\".');\n    if(data.error==='claude_invalid')throw new Error('Cheia Claude API este invalid\u0103. Verific\u0103 la console.anthropic.com');\n    if(data.error==='suno_invalid')throw new Error('Cheia SunoAPI este invalid\u0103. Verific\u0103 la sunoapi.org\/api-key');\n    if(!res.ok||!data.succes)throw new Error(data.mesaj||data.error||'A ap\u0103rut o eroare. \u00cencearc\u0103 din nou.');\n\n    setStep(3);\n    showResult(data.versuri, data.melodii);\n\n  }catch(e){\n    b.innerHTML=`<div style=\"text-align:center;padding:44px 0;\"><div style=\"font-size:42px;margin-bottom:12px;\">\u26a0\ufe0f<\/div><div class=\"load-h\">A ap\u0103rut o problem\u0103<\/div><p class=\"load-s\" style=\"margin:12px 0 20px;\">${e.message}<\/p><button class=\"btn\" onclick=\"closeModal()\">\u00cenchide<\/button><\/div>`;\n  }\n}\n\nfunction showResult(versuri, melodii){\n  const b=document.getElementById('mbody');\n  b.innerHTML=`\n    <div style=\"text-align:center;margin-bottom:20px;\">\n      <div style=\"font-size:48px;margin-bottom:10px;\">\ud83c\udf89<\/div>\n      <div class=\"load-h\">Melodia ta este gata!<\/div>\n      <p class=\"load-s\">Creat\u0103 special pentru <strong style=\"color:var(--text)\">${fd.name}<\/strong><\/p>\n    <\/div>\n    <div style=\"margin-bottom:16px;\">\n      <div style=\"font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--gold);margin-bottom:8px;\">Versuri Generate<\/div>\n      <div class=\"lyr-box\">${versuri}<\/div>\n    <\/div>\n    <div>\n      <div style=\"font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--gold);margin-bottom:8px;\">Melodii Generate<\/div>\n      ${melodii.map((m,i)=>`\n        <div class=\"song-card\">\n          <div class=\"song-card-h\">\n            <span class=\"song-card-title\">${m.titlu||'Melodie pentru '+fd.name}<\/span>\n            <span class=\"song-var\">Varianta ${i+1}<\/span>\n          <\/div>\n          ${m.url\n            ? `<audio controls style=\"width:100%;margin-bottom:8px;\" src=\"${m.url}\"><\/audio>\n               <a href=\"${m.url}\" download class=\"song-dl\">\u2b07 Descarc\u0103 varianta ${i+1}<\/a>`\n            : `<p style=\"font-size:12px;color:var(--muted);\">\u23f3 Se proceseaz\u0103\u2026<\/p>`}\n        <\/div>`).join('')}\n    <\/div>\n    <p style=\"font-size:12px;color:var(--muted);text-align:center;margin-top:14px;\">\n      O copie va fi trimis\u0103 la <strong style=\"color:var(--text)\">${fd.email}<\/strong>\n    <\/p>`;\n  document.getElementById('mfoot').innerHTML='<button class=\"btn\" style=\"width:100%;padding:14px;font-size:15px;\" onclick=\"closeModal()\">\u2713 Minunat, mul\u021bumesc!<\/button>';\n  document.getElementById('mfoot').style.display='flex';\n}\n\ndocument.addEventListener('DOMContentLoaded',applyPage);\n<\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-4e754a5 elementor-section-boxed elementor-section-height-default elementor-section-height-default exad-glass-effect-no exad-sticky-section-no\" data-id=\"4e754a5\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-464ed3a exad-glass-effect-no exad-sticky-section-no\" data-id=\"464ed3a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-44bcbe9 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-spacer\" data-id=\"44bcbe9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Melodii Personalizate | FujeStudio.ro FujeStudio Demo Cum Func\u021bioneaz\u0103 Recenzii Pre\u021buri Creeaz\u0103 Melodia \u2728 Melodii Personalizate cu AI Transform\u0103 Emo\u021biile \u00een Melodii Unice Creeaz\u0103 o melodie personalizat\u0103 cu versuri unice, compuse special pentru persoana drag\u0103. Cadoul perfect care va r\u0103m\u00e2ne \u00een suflet pentru totdeauna. Creeaz\u0103 Melodia \u25b6 Ascult\u0103 Demo 4.9\/5Rating ~3 minLivrare 2Varia\u021bii 99%Satisfac\u021bie Exemple Reale [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"ocean_post_layout":"full-screen","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"on","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","footnotes":""},"class_list":["post-1516","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/fujestudio.ro\/ro\/wp-json\/wp\/v2\/pages\/1516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fujestudio.ro\/ro\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fujestudio.ro\/ro\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fujestudio.ro\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fujestudio.ro\/ro\/wp-json\/wp\/v2\/comments?post=1516"}],"version-history":[{"count":34,"href":"https:\/\/fujestudio.ro\/ro\/wp-json\/wp\/v2\/pages\/1516\/revisions"}],"predecessor-version":[{"id":1556,"href":"https:\/\/fujestudio.ro\/ro\/wp-json\/wp\/v2\/pages\/1516\/revisions\/1556"}],"wp:attachment":[{"href":"https:\/\/fujestudio.ro\/ro\/wp-json\/wp\/v2\/media?parent=1516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}