<style>
#pc-music-builder {
--pc-bg:#050816; --pc-card:rgba(15,20,45,.82); --pc-border:rgba(160,120,255,.24);
--pc-text:#f6f4ff; --pc-muted:#aeb3cf; --pc-purple:#a855f7; --pc-blue:#38bdf8; --pc-pink:#ec4899;
font-family: Inter, Arial, sans-serif; color:var(--pc-text);
background: radial-gradient(circle at top left, rgba(168,85,247,.24), transparent 32%), radial-gradient(circle at bottom right, rgba(56,189,248,.15), transparent 34%), linear-gradient(135deg,#040716 0%,#080d22 45%,#0c0620 100%);
border:1px solid rgba(255,255,255,.08); border-radius:28px; padding:28px; box-sizing:border-box; overflow:hidden;
}
#pc-music-builder *{box-sizing:border-box}
#pc-music-builder .pc-top{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:22px}
#pc-music-builder .pc-brand{display:flex;gap:14px;align-items:center}
#pc-music-builder .pc-logo{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,rgba(168,85,247,.25),rgba(56,189,248,.18));border:1px solid rgba(255,255,255,.12);box-shadow:0 0 35px rgba(168,85,247,.25);font-size:25px}
#pc-music-builder h2{margin:0;font-size:22px;line-height:1.05;letter-spacing:.5px}
#pc-music-builder .pc-brand p{margin:4px 0 0;color:var(--pc-muted);font-size:12px;letter-spacing:1.8px;text-transform:uppercase}
#pc-music-builder .pc-reset{border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);color:var(--pc-text);border-radius:14px;padding:12px 16px;cursor:pointer;font-weight:800}
#pc-music-builder .pc-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:22px}
#pc-music-builder .pc-step-pill{border:1px solid rgba(255,255,255,.10);color:var(--pc-muted);background:rgba(255,255,255,.035);border-radius:999px;padding:10px 12px;font-size:12px;text-align:center;white-space:nowrap}
#pc-music-builder .pc-step-pill.active{color:white;border-color:rgba(56,189,248,.55);background:linear-gradient(135deg,rgba(56,189,248,.25),rgba(168,85,247,.25));box-shadow:0 0 24px rgba(56,189,248,.18)}
#pc-music-builder .pc-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:18px}
#pc-music-builder .pc-panel{background:linear-gradient(180deg,rgba(12,17,38,.88),rgba(9,12,30,.84));border:1px solid var(--pc-border);border-radius:22px;padding:26px;min-height:640px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02),0 25px 80px rgba(0,0,0,.22)}
#pc-music-builder .pc-live{position:sticky;top:20px}
#pc-music-builder .pc-kicker{color:#c084fc;font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:1.1px;margin-bottom:10px}
#pc-music-builder .pc-title{margin:0 0 10px;font-size:clamp(28px,4vw,42px);line-height:1.05;color:white}
#pc-music-builder .pc-desc{color:var(--pc-muted);margin:0 0 24px;line-height:1.55;max-width:780px}
#pc-music-builder .pc-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}
#pc-music-builder .pc-option{position:relative;border:1px solid rgba(255,255,255,.10);background:rgba(255,255,255,.045);border-radius:18px;padding:18px;cursor:pointer;min-height:126px;transition:.22s ease;overflow:hidden}
#pc-music-builder .pc-option:hover{transform:translateY(-2px);border-color:rgba(168,85,247,.45);background:rgba(255,255,255,.065)}
#pc-music-builder .pc-option.selected{border-color:rgba(170,95,255,.8);box-shadow:0 0 0 1px rgba(168,85,247,.35),0 0 32px rgba(168,85,247,.20)}
#pc-music-builder .pc-icon{font-size:28px;margin-bottom:14px}
#pc-music-builder .pc-option h4{margin:0 0 8px;font-size:17px;color:white}
#pc-music-builder .pc-option p{margin:0;color:var(--pc-muted);font-size:13px;line-height:1.45}
#pc-music-builder .pc-check{display:none;position:absolute;top:14px;right:14px;background:linear-gradient(135deg,var(--pc-blue),var(--pc-purple));width:25px;height:25px;border-radius:50%;place-items:center;font-weight:900}
#pc-music-builder .pc-option.selected .pc-check{display:grid}
#pc-music-builder .pc-actions{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:26px;padding-top:22px;border-top:1px solid rgba(255,255,255,.08)}
#pc-music-builder button.pc-btn{border:0;border-radius:15px;padding:14px 22px;font-weight:900;cursor:pointer;color:white;transition:.25s ease;letter-spacing:.3px}
#pc-music-builder .pc-next{background:linear-gradient(135deg,var(--pc-purple),#6d5dfc);box-shadow:0 12px 35px rgba(168,85,247,.24)}
#pc-music-builder .pc-back{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12)!important}
#pc-music-builder button.pc-btn:hover{transform:translateY(-2px);filter:brightness(1.08)}
#pc-music-builder button.pc-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
#pc-music-builder .pc-form{display:grid;gap:14px;margin-top:20px}
#pc-music-builder .pc-field label{display:block;margin-bottom:8px;color:#d8d4ff;font-weight:900;font-size:13px}
#pc-music-builder .pc-input,#pc-music-builder .pc-textarea,#pc-music-builder .pc-select{width:100%;background:rgba(0,0,0,.24);border:1px solid rgba(255,255,255,.13);color:white;border-radius:14px;padding:14px;outline:none}
#pc-music-builder .pc-textarea{min-height:132px;resize:vertical}
#pc-music-builder .pc-input:focus,#pc-music-builder .pc-textarea:focus,#pc-music-builder .pc-select:focus{border-color:rgba(170,95,255,.8);box-shadow:0 0 0 3px rgba(168,85,247,.16)}
#pc-music-builder .pc-small-note{color:var(--pc-muted);font-size:12px;line-height:1.45;margin-top:10px}
#pc-music-builder .pc-style-tools{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#pc-music-builder .pc-style-results{max-height:330px;overflow:auto;border:1px solid rgba(255,255,255,.10);border-radius:16px;margin-top:12px;padding:10px;background:rgba(0,0,0,.16)}
#pc-music-builder .pc-style-item{display:flex;justify-content:space-between;gap:12px;padding:11px 12px;border-radius:12px;cursor:pointer;color:#eeeaff}
#pc-music-builder .pc-style-item:hover,#pc-music-builder .pc-style-item.selected{background:rgba(168,85,247,.18)}
#pc-music-builder .pc-style-item small{color:var(--pc-muted)}
#pc-music-builder .pc-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}
#pc-music-builder .pc-tag{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.10);color:#efe9ff;padding:8px 10px;border-radius:10px;font-size:12px}
#pc-music-builder .pc-live h3{margin:0 0 16px;color:#c084fc;font-size:16px;text-transform:uppercase;letter-spacing:.7px}
#pc-music-builder .pc-live-section{border-top:1px solid rgba(255,255,255,.09);padding-top:16px;margin-top:16px}
#pc-music-builder .pc-live-label{color:#b983ff;font-weight:900;font-size:12px;text-transform:uppercase;margin-bottom:10px}
#pc-music-builder .pc-output{background:rgba(0,0,0,.20);border:1px solid rgba(255,255,255,.10);border-radius:14px;padding:14px;color:#e9e7ff;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-word}
#pc-music-builder .pc-copy-row{display:flex;justify-content:flex-end;margin-top:8px}
#pc-music-builder .pc-copy{border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.05);color:white;border-radius:10px;padding:8px 10px;font-size:12px;cursor:pointer}
#pc-music-builder .pc-send{display:flex;align-items:center;justify-content:space-between;gap:14px;text-decoration:none;color:white;background:linear-gradient(135deg,rgba(236,72,153,.65),rgba(124,58,237,.9));border:1px solid rgba(255,255,255,.16);padding:18px;border-radius:16px;margin-top:18px;transition:.25s ease}
#pc-music-builder .pc-send:hover{color:white;transform:translateY(-2px);box-shadow:0 16px 40px rgba(168,85,247,.25)}
#pc-music-builder .pc-send strong{display:block;margin-bottom:4px}
#pc-music-builder .pc-send span{color:rgba(255,255,255,.75);font-size:13px}
#pc-music-builder .pc-warning{display:none;margin-top:12px;color:#fecaca;background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.2);border-radius:12px;padding:10px 12px;font-size:13px}
#pc-music-builder .pc-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px}
#pc-music-builder .pc-mini-card{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.10);border-radius:16px;padding:14px}
#pc-music-builder .pc-mini-card strong{display:block;margin-bottom:6px}
#pc-music-builder .pc-mini-card span{color:var(--pc-muted);font-size:12px;line-height:1.4}
@media(max-width:960px){#pc-music-builder{padding:18px}#pc-music-builder .pc-top{align-items:flex-start;flex-direction:column}#pc-music-builder .pc-steps{overflow-x:auto;grid-template-columns:repeat(5,minmax(160px,1fr));padding-bottom:4px}#pc-music-builder .pc-grid{grid-template-columns:1fr}#pc-music-builder .pc-panel{min-height:auto;padding:20px}#pc-music-builder .pc-live{position:relative;top:auto}#pc-music-builder .pc-options{grid-template-columns:1fr}#pc-music-builder .pc-mini{grid-template-columns:1fr}#pc-music-builder .pc-actions{flex-direction:column;align-items:stretch}#pc-music-builder button.pc-btn{width:100%}#pc-music-builder .pc-style-tools{grid-template-columns:1fr}}
</style>
<div id="pc-music-builder">
<div class="pc-top">
<div class="pc-brand"><div class="pc-logo">🎧</div><div><h2>PIXEL & CAT</h2><p>AI Music Brief Builder</p></div></div>
<button class="pc-reset" type="button" id="pcReset">↻ Zacznij od nowa</button>
</div>
<div class="pc-steps" id="pcSteps"><div class="pc-step-pill active">1. Cel</div><div class="pc-step-pill">2. Klimat</div><div class="pc-step-pill">3. Style Suno</div><div class="pc-step-pill">4. Struktura</div><div class="pc-step-pill">5. Wynik</div></div>
<div class="pc-grid">
<div class="pc-panel"><div id="pcStepContent"></div><div class="pc-warning" id="pcWarning"></div><div class="pc-actions"><button class="pc-btn pc-back" id="pcBack" type="button">← Wstecz</button><button class="pc-btn pc-next" id="pcNext" type="button">Dalej →</button></div></div>
<div class="pc-panel pc-live"><h3>Twój brief na żywo</h3><div class="pc-tags" id="pcTags"></div><div class="pc-live-section"><div class="pc-live-label">Koncepcja</div><div id="pcConcept" style="color:#d7d5ee;line-height:1.55;"></div></div><div class="pc-live-section"><div class="pc-live-label">Prompt do AI / Suno</div><div class="pc-output" id="pcPrompt"></div><div class="pc-copy-row"><button class="pc-copy" type="button" data-copy="prompt">Kopiuj prompt</button></div></div><div class="pc-live-section"><div class="pc-live-label">Struktura utworu</div><div class="pc-output" id="pcStructure"></div><div class="pc-copy-row"><button class="pc-copy" type="button" data-copy="structure">Kopiuj strukturę</button></div></div><a class="pc-send" id="pcMailto" href="#"><div><strong>Wyślij brief do Pixel & Cat</strong><span>Zapytaj o produkcję utworu, intro lub oprawę audio.</span></div><div style="font-size:26px;">➜</div></a></div>
</div>
<div class="pc-mini"><div class="pc-mini-card"><strong>952 style Suno</strong><span>Pełna lista stylów jest w kodzie jako baza wyszukiwania.</span></div><div class="pc-mini-card"><strong>Realny wpływ</strong><span>Użytkownik wybiera cel, klimat, styl, dodatki i strukturę.</span></div><div class="pc-mini-card"><strong>Lead generator</strong><span>Gotowy brief można wysłać jako zapytanie.</span></div></div>
</div>
<script>
(function(){
const root=document.getElementById("pc-music-builder"); if(!root)return;
const contactEmail="kontakt@sebansky.pl";
const sunoStyles = [
"acoustic chicago blues cape verdean",
"afro-jazz",
"ambient house 16-bit",
"arabic reggae",
"saxophone afro house",
"portuguese breakbeat",
"korean pacific reggae",
"hypnagogic pacific reggae",
"koto gnawa",
"new orleans grunge",
"instrumental bluegrass",
"cajun griot",
"choral celtic",
"dakar afro-cuban jazz",
"dark goa trance",
"prog avant-garde jazz",
"reggaetonwave",
"sertanejo southern rock",
"soulful bubblegum dance",
"symphonic disco",
"dreamy swing",
"garage tango",
"grunge cumbia",
"classical cumbia",
"hindi jungle",
"acoustic chicago blues algorave",
"afro-funk",
"ambient dub techno",
"arabic pop",
"saxophone drum and bass",
"portuguese barbershop",
"russian dembow",
"hypnagogic goa trance",
"koto g-funk",
"new orleans dembow",
"bluegrass",
"cajun algorave",
"choral big band",
"cumbia metal",
"dark electropop",
"prog ambient noise wall",
"reggae dirty south",
"sertanejo emo",
"soulful boogie",
"symphonic cloud rap",
"dreamy soul",
"garage",
"grunge bedroom pop",
"choral afro-jazz",
"hindi dream pop",
"acoustic chicago blues",
"afro-cuban jazz griot",
"ambient dub boogie",
"arabic mariachi",
"saxophone tuareg",
"portuguese acoustic rock",
"urdu rumba",
"hypnagogic garage",
"koto drill and bass",
"new orleans cloud rap",
"big band new jack swing",
"cajun afrikaner folk",
"choral bedroom pop",
"cumbia acoustic blues",
"dark drum and bass",
"prog afrobeat",
"reggae",
"sertanejo chillstep",
"soulful acoustic texas blues",
"symphonic city pop",
"dreamy shoegaze",
"electro-chanson",
"grunge americana",
"bubblegum bass symphonic metal",
"hindi doo-wop",
"acoustic carnatic",
"afro-cuban jazz doo-wop",
"ambient dub bedroom pop",
"arabic egyptian",
"slushwave roots reggae",
"portuguese 16-bit",
"urdu jazzwave",
"hypnagogic electropop",
"koto dembow",
"new orleans chillwave",
"swing",
"big band grunge",
"cajun acid rock",
"choral ambient techno",
"cumbia",
"dark dance",
"prog afro-jazz",
"reggae cumbia",
"saxophone shoegaze",
"soulful acid trance",
"symphonic boom bap",
"dreamy pacific reggae",
"electro-bossa nova",
"grunge american primitivism",
"ambient dub bachata",
"hindi chanson",
"acoustic blues slushwave",
"afro-cuban jazz crunk",
"alternative rock",
"arabic classical",
"mandarin trance",
"urdu house",
"hypnagogic ambient trance",
"koto coptic",
"new orleans carnatic",
"tuareg synthwave",
"big band cumbia",
"cajun",
"choral ambient noise wall",
"crunk swamp blues",
"dark coptic",
"prog afro-funk",
"rap dirty south",
"saxophone opera",
"soulful acid house",
"symphonic bluegrass",
"dreamy house",
"electro-alternative r&b",
"grunge afro-cuban jazz",
"drumstep soul",
"hindi carnatic",
"tuareg motown",
"acoustic blues mariachi",
"afro-cuban jazz",
"alternative r&b griot",
"arabic ambient techno",
"mandarin math rock",
"urdu electropop",
"hypnagogic algorave",
"koto boom bap",
"new orleans cajun",
"big band boogie",
"cabaretwave",
"choral alt-country",
"crunk punk",
"dark chillstep",
"prog acoustic texas blues",
"rap bedroom pop",
"saxophone gnawa",
"soul dembow",
"symphonic algorave",
"dreamy grime",
"electro-acid house",
"grunge african folk",
"delta blues house",
"hindi bubblegum dance",
"t",
"rap k-pop",
"acoustic blues glitch hop",
"afro t",
"rap r&b",
"alternative r&b dembow",
"arabic afrobeat",
"mandarin house",
"urdu drill",
"hyphy egyptian",
"koto alt-pop",
"new orleans alternative r&b",
"big band ambient house",
"cabaret rock",
"choral 16-bit",
"crunk goa trance",
"dark blues",
"popcore",
"rap",
"saxophone g-funk",
"soul",
"symphonic afro-cuban jazz",
"dreamy fife and drum blues",
"egyptian swing",
"grunge",
"liquid drum and bass house",
"hindi ambient house",
"t",
"rap g-funk",
"acoustic ambient trance",
"afro t",
"rap algorave",
"alternative r&b",
"arabic acid house",
"mandarin hawaiian",
"urdu coptic",
"hyphy bluegrass",
"klezmer pop",
"new jack swing big band",
"big band alt-country",
"cabaret americana",
"chillwavewave",
"crunk calypso",
"dark alternative rock",
"pop synthpop",
"raga jazz",
"saxophone edm",
"slushwave new jack swing",
"swing synthpop",
"dreamy drum and bass",
"egyptian flamenco",
"griot shoegaze",
"arabic african folk",
"hindi alt-country",
"t",
"rap",
"acoustic afro",
"piano",
"afro t",
"rap",
"alt-pop afro",
"piano",
"arabic 16-bit",
"mandarin drum and bass",
"urdu acid jazz",
"hyphy alternative r&b",
"klezmer",
"new jack swing",
"bengali swamp blues",
"cabaret",
"chillwave swing",
"country jazz",
"dark alt-pop",
"pop g-funk",
"raga egyptian",
"saxophone bossa nova",
"slushwave dancehall",
"swing sertanejo",
"dreamy dembow",
"egyptian",
"griot reggaeliverpool big band",
"hindi afrobeat",
"trance",
"acoustic acid rock",
"afro house rock",
"alt-country surf rock",
"appalachian folk flamenco",
"mandarin disco",
"spanish samba",
"hyphy",
"kawaii future bass polka",
"motown",
"bengali surf rock",
"bubblegum dance chanson",
"chillwave samba",
"country afro-cuban jazz",
"dark acid jazz",
"pop bossa nova",
"raga edm",
"saxophone barbershop",
"slushwave chillstep",
"swing samba",
"dreamy chillwave",
"edm swamp blues",
"griot indie",
"dance drill",
"hindi african folk",
"tokyo southern rockacid trance",
"afro house drill and bass",
"alt-country dubstep",
"appalachian folk cloud rap",
"mandarin delta blues",
"spanish pop",
"hyper-southern rock",
"kawaii future bass afro",
"piano",
"metal grunge",
"bengali surf",
"bubblegum dance",
"chillwave caribbean",
"country dancehall",
"dark acid house",
"pop",
"raga algorave",
"saxophone alt-country",
"slushwave acid house",
"swing roots reggae",
"dreamy bubblegum dance",
"edm jungle",
"griot",
"illbient egyptian",
"hindi acoustic rock",
"tokyo sambaacid techno psybient",
"afro house dembow",
"alt-country disco",
"appalachian folk anti-folk",
"mandarin cumbia",
"spanish merengue",
"hyper-motown",
"kawaii future bass afro-cuban jazz",
"merengue",
"bengali psybient",
"bubblegum bass grime",
"chillwave egyptian",
"coptic grunge",
"dance",
"pop breakbeat",
"polka emo",
"raga acid breaks",
"saxophone 2-step",
"ska liquid drum and bass",
"swing grime",
"dreamy boom bap",
"edm grime",
"grime tango",
"dubstep rock",
"hindi acid rock",
"tokyo norteñoacid techno avant-garde jazz",
"afro house acoustic blues",
"alt-country 2-step",
"anti-folkwave",
"mandarin american primitivism",
"spanish mariachi",
"hyper-jungle",
"kawaii future bass",
"math rock ambient noise wall",
"bengali math rock",
"breakstep synthwave",
"chillwave bubblegum bass",
"coptic flamenco",
"dance",
"pop",
"polka",
"raga",
"samba soul",
"ska coptic",
"swing bedroom pop",
"dreamy afro-jazz",
"edm g-funk",
"grime synthpop",
"tuareg",
"harpischord symphonic metal",
"tokyo liquid drum and bassacid techno",
"afro house",
"algorave psybient",
"anti-folk drumstep",
"tokyo grunge",
"mandarin afrobeat",
"spanish funk",
"hyper-indie",
"k-pop acoustic texas blues",
"math rock",
"bengali grunge",
"bubblegum bass",
"chillsynth mento",
"coptic afro-rock",
"dancehall synthwave",
"piano klezmer",
"r&b gospel",
"samba dirty south",
"ska",
"swamp blues r&b",
"dreamy acoustic rock",
"edm disco",
"grime surf rock",
"electro-classical",
"harpischord gospelacid rock p-funk",
"afrikaner folk tango",
"algorave hawaiian",
"anti-folk big band",
"tokyo drumstep",
"mandarin acid trance",
"spanish ambient trance",
"hyper-grime",
"k-pop",
"mariachi",
"bengali electropop",
"breakstep samba",
"chillsynth",
"coptic",
"dancehall new wave",
"piano country",
"punk polka",
"samba country",
"sitar southern rock",
"swamp blues boogie",
"dreamy acid house",
"edm breakbeat",
"grime reggaeton",
"urdu shoegaze",
"future egyptianacid rock city pop",
"afrikaner folk pacific reggae",
"algorave garage",
"anti-folk",
"tokyo city pop",
"korean fife and drum blues",
"spanish acoustic rock",
"hyper-egyptian",
"jungle ambient noise wall",
"lo-fi t",
"rap",
"bengali egyptian",
"breakbeatwave",
"chillstep chillwave",
"cloud rap symphonic metal",
"dancehall flamenco",
"piano chillstep",
"punk electropop",
"samba boom bap",
"sitar sertanejo",
"swamp blues",
"dream pop g-funk",
"edm anti-folk",
"grime reggae",
"havana glitch hop",
"future chillwaveacid jazz crunk",
"afrikaner folk drill",
"algorave acid jazz",
"americana soul",
"tokyo afro-jazz",
"korean opera",
"russian techno",
"hyper-dance",
"jungle afrobeat",
"lo-fi synthpop",
"bengali drill",
"breakbeat trance",
"chillstep",
"cloud rap slushwave",
"dancehall country",
"piano cape verdean",
"punk acid trance",
"samba bachata",
"sitar rumba",
"surfwave",
"dream pop appalachian folk",
"edm",
"grime norteño",
"havana funk",
"french skaacid house boom bap",
"afrikaner folk",
"algorave",
"americana jungle",
"tokyo afro-funk",
"korean drumstep",
"russian samba",
"hyper-crunk",
"jungle",
"lo-fi roots reggae",
"bengali cape verdean",
"breakbeat coptic",
"chanson soul",
"cloud rap",
"dancehall city pop",
"piano caribbean",
"psychedelic swing",
"samba afro",
"piano",
"sitar goa trance",
"surf slushwave",
"dream pop",
"dubstepcore",
"grime calypso",
"havana electropop",
"french shoegazeacid house",
"african folk math rock",
"afro",
"swing new wave",
"american primitivism illbient",
"tokyo acid trance",
"korean cabaret",
"russian salsa",
"hyper-blues rock",
"jazz soul",
"lo-fi pacific reggae",
"bengali barbershop",
"breakbeat balkan brass band",
"chanson funk",
"classicalwave",
"dancehall acoustic texas blues",
"piano afro",
"swing",
"psychedelic psybient",
"samba",
"sitar glitch hop",
"surf rock boogie",
"doo-wop pop",
"dubstep samba",
"grime avant-garde jazz",
"havana chillstep",
"french sambaacid breaks alt-country",
"african folk drill",
"afro",
"swing k-pop",
"american primitivism bedroom pop",
"tokyo acid breaks",
"korean americana",
"russian roots reggaehyper-afrobeat",
"jazz sertanejo",
"lo-fi cloud rap",
"bengali american primitivism",
"bossa nova merengue",
"chanson alt-pop",
"classical surf",
"dancehall",
"piano afro-rock",
"psychedelic motown",
"salsa polka",
"sitar fife and drum blues",
"surf rock",
"doo-wop drumstep",
"dubstep kawaii future bass",
"grime 2-step",
"havana cajun",
"french psybient",
"accordion tango",
"african folk",
"afro",
"swing",
"american primitivism 2-step",
"techno norteño",
"korean algorave",
"russian k-pop",
"hyper-acid house",
"jazz future bass",
"lo-fi bubblegum bass",
"bengali afro",
"swing",
"bossa nova",
"chanson",
"classical grime",
"dancecore",
"piano african folk",
"psychedelic house",
"salsa",
"sitar drum and bass",
"surf raga",
"doo-wop classical",
"dubstep",
"grime",
"havana bubblegum bass",
"french grunge",
"accordion rap",
"acoustic texas blues chillstep",
"afro",
"piano blues rock",
"ambient trance mento",
"techno bossa nova",
"korean afrobeat",
"russian grunge",
"hyper-2-step",
"jazz",
"lo-fi ambient dub",
"bengali acoustic chicago blues",
"boom bap p-funk",
"celtic tango",
"classical folk",
"dance southern rock",
"pacific reggae ska",
"psychedelic hawaiian",
"rumbawave",
"sitar delta blues",
"surf grunge",
"disco cloud rap",
"drumstep chillsynth",
"gospelwave",
"havana bedroom pop",
"french glitch hop",
"accordion jungle",
"acoustic texas blues afrobeat",
"afro",
"piano",
"ambient trance jungle",
"techno big band",
"korean afro-funk",
"russian grime",
"house symphonic metal",
"j-pop chillsynth",
"lo-fi afro-cuban jazz",
"bedroom pop ska",
"boom bap celtic",
"celtic cloud rap",
"classical dirty south",
"dance illbient",
"pacific reggae samba",
"psychedelic dream pop",
"rumba cape verdean",
"sitar cumbia",
"surf flamenco",
"disco classical",
"drum and bass swing",
"gospel shoegaze",
"havana 2-step",
"french dubstep",
"accordion hawaiian",
"acoustic texas blues",
"afrobeat swing",
"ambient trance folk",
"techno balkan brass band",
"korean acid trance",
"russian glitch hop",
"house reggae",
"j-pop blues",
"lo-fi afro house",
"bedroom pop samba",
"boogie celtic",
"celtic",
"classical caribbean",
"dance",
"pacific reggae afrobeat",
"psychedelic cabaret",
"rumba",
"sitar cape verdean",
"surf classical",
"disco chillsynth",
"drum and bass goa trance",
"gospel dream pop",
"havana american primitivism",
"french dembow",
"accordion drill",
"acoustic slushwave",
"afrobeat rockabilly",
"ambient trance chanson",
"techno afrobeat",
"japanese swing",
"russian flamenco",
"hip hop dubstep",
"j-pop acid jazz",
"liquid drum and bass slushwave",
"bedroom pop new jack swing",
"boogie caribbean",
"carnatic glitch hop",
"classical boom bap",
"dakar raga",
"p-funk samba",
"psychedelic acid trance",
"roots reggae house",
"sitar bubblegum dance",
"surf acoustic blues",
"disco chillstep",
"drum and bass acoustic rock",
"gospel disco",
"harpischord klezmer",
"french big band",
"synthwave trance",
"accordion delta blues",
"acoustic rockabilly",
"afrobeat new jack swing",
"ambient trance alternative rock",
"tango trance",
"japanese surf rock",
"russian dubstep",
"hip hop techno",
"j-pop acid breaks",
"liquid drum and bass rockabilly",
"bedroom pop",
"boogie",
"carnatic acid trance",
"classical",
"dakar new wave",
"synthwave chillsynth",
"synthwave cumbia",
"p-funk mariachipsybient new wave",
"roots reggae flamenco",
"sitar bubblegum bass",
"surf",
"synthwave",
"tango reggae",
"disco alternative r&b",
"drill sertanejo",
"gospel acid breaks",
"harpischord hip hop",
"french afro-rock",
"tabla bedroom pop",
"accordion ambient techno",
"acoustic rock chillsynth",
"afrobeat griot",
"ambient techno mento",
"synthwave country",
"japanese surf",
"russian celtic",
"hip hop",
"indie grunge",
"liquid drum and bass new jack swing",
"p-funk jazz",
"tango boogie",
"barbershop breakbeat",
"blues rock american primitivism",
"carnatic",
"city pop symphonic metal",
"dakar math rock",
"tangopsybient griot",
"roots reggae avant-garde jazz",
"sitar bossa nova",
"southern rock ska",
"synthpop trance",
"dirty south boom bap",
"drill raga",
"goa trance afro-cuban jazz",
"harpischord g-funk",
"fife and drum blues p-funk",
"accordion afro t",
"rap",
"acoustic rock afro-jazz",
"afrobeat garage",
"ambient techno hyphy",
"tabla dream pop",
"japanese shoegaze",
"russian cumbia",
"hawaiian r&b",
"indie g-funk",
"liquid drum and bass blues",
"p-funk cloud rap",
"synthwave dancehall",
"barbershop balkan brass band",
"blues rock afro",
"piano",
"caribbean",
"city pop psybient",
"dakar j-pop",
"tabla jazz",
"tango slushwave",
"prog swamp blues",
"rockabilly tango",
"sitar blues",
"southern rock calypso",
"synthpop hawaiian",
"tabla breakbeat",
"dirty south balkan brass band",
"drill chillwave",
"goa trance",
"harpischord drill",
"flamenco hip hop",
"japanese merengue",
"accordion african folk",
"acoustic rock",
"afrobeat disco",
"ambient techno chanson",
"balkan brass band raga",
"russian appalachian folk",
"hawaiian merengue",
"indie",
"liquid drum and bass bluegrass",
"p-funk",
"lo-fi swing",
"blues rock",
"cape verdean acoustic rock",
"city pop classical",
"dakar house",
"dirty south",
"tabla hawaiian",
"mariachi indie",
"prog shoegaze",
"rockabilly raga",
"sitar alternative r&b",
"southern rock",
"synthpop coptic",
"new orleans afrobeat",
"drill cajun",
"gnawawave",
"harpischord drill and bass",
"fife and drum blues acid breaks",
"japanese jungle",
"hyper-house",
"accordion 16-bit",
"acoustic raga",
"afrobeat",
"ambient techno afro",
"swing",
"balkan brass band classical",
"russian ambient techno",
"hawaiian electropop",
"illbientwave",
"liquid drum and bass",
"norteñowave",
"tabla kawaii future bass",
"tabla new jack swing",
"house surf",
"blues folk",
"cape verdean",
"city pop breakbeat",
"dakar gospel",
"dembow punk",
"pacific reggae",
"hyper-roots reggae",
"prog rockabilly",
"rockabilly country",
"sitar afro-jazz",
"soulful soul",
"synthpop",
"new wave delta blues",
"house",
"drill bubblegum dance",
"gnawa funk",
"harpischord doo-wop",
"electropop grunge",
"japanese dancehall",
"2-step surf",
"acoustic grime",
"afro-rock bachata",
"ambient techno",
"bachata",
"hyphy balkan brass band",
"russian afrikaner folk",
"havana t",
"rap",
"illbient cumbia",
"koto tuareg",
"norteño pop",
"hyper-afrikaner folk",
"blues cumbia",
"calypso surf",
"choral reggae",
"dakar future bass",
"dembow balkan brass band",
"piano acid techno",
"prog dubstep",
"rockabilly",
"sitar afro-funk",
"soulful ska",
"symphonic opera",
"house roots reggae",
"hip hop roots reggae",
"drill breakbeat",
"gnawa bubblegum bass",
"harpischord boogie",
"electronic math rock",
"japanese chanson",
"2-step country",
"acoustic funk",
"afro-rock ambient dub",
"ambient noise wall chanson",
"avant-garde jazz rap",
"portuguese surf rock",
"havana techno",
"illbient alternative rock",
"koto t",
"rap",
"new wave acid trance",
"blues afro house",
"calypso opera",
"choral folk",
"dakar flamenco",
"dembow",
"piano coptic",
"prog drum and bass",
"rock liquid drum and bass",
"shoegaze psybient",
"soulful reggaeton",
"symphonic metal",
"drill and bass gnawa",
"gnawa afrobeat",
"harpischord anti-folk",
"electronic grunge",
"japanese boogie",
"2-step",
"acoustic electropop",
"afro-rock",
"ambient house p-funk",
"avant-garde jazz illbient",
"portuguese southern rock",
"havana synthwave",
"illbient afrikaner folk",
"koto swing",
"new wave",
"bluegrass rock",
"calypso bachata",
"choral drill and bass",
"dakar drumstep",
"dark salsa",
"prog dance",
"pop",
"prog dream pop",
"rock dance",
"shoegaze cumbia",
"soulful folk",
"symphonic merengue",
"drill and bass balkan brass band",
"gnawa",
"harpischord ambient house",
"electronic disco",
"japanese americana",
"16-bit roots reggae",
"acoustic classical",
"afro-jazz drill",
"ambient house electropop",
"avant-garde jazz griot",
"portuguese dancehall",
"havana grime",
"illbient",
"koto surf",
"new orleans trance",
"bluegrass punk",
"calypso afro",
"swing",
"choral country",
"dakar boom bap",
"dark reggaeton",
"prog southern rock",
"prog disco",
"rock balkan brass band",
"shoegaze boom bap",
"soulful city pop",
"symphonic mento",
"drill",
"glitch hop swing",
"harpischord acid jazz",
"electro-techno",
"japanese ambient house",
"16-bit celtic",
"acoustic chicago blues reggaeton",
"afro-jazz carnatic",
"ambient house cajun",
"avant-garde jazz",
"portuguese chillsynth",
"french acoustic chicago blues",
"hypnagogic swamp blues",
"koto polka",
"new orleans samba",
"bluegrass k-pop",
"cajun synthpop",
"choral chillsynth",
"dakar ambient dub",
"dark merengue",
"psychedelic tango",
"prog breakbeat",
"rock americana",
"shoegaze afro-funk",
"soulful chillsynth",
"symphonic mariachi",
"dreamy trance",
"glitch hop acoustic texas blues",
"grunge new jack swing",
"electro-new wave",
"japanese algorave",
"16-bit",
"acoustic chicago blues motown",
"afro-jazz blues rock",
"ambient house breakstep",
"avant-garde jazz disco",
"portuguese chillstep",
"funk bedroom pop",
"hypnagogic shoegaze",
"koto house",
"new orleans house",
"bluegrass bubblegum bass",
"cajun new wave",
"choral chanson",
"dakar afrobeat",
"dark jazz",
"reggae k-pop",
"prog big band",
"rock",
"shoegaze afro-cuban jazz",
"soulful cabaret",
"symphonic doo-wop",
"dreamy tango",
"glitch hop 2-step",
"grunge funk",
"electro-jungle",
"hindi southern rock"
];
const state={step:0,purpose:"",moods:[],mainStyle:"",extras:[],start:"",development:"",length:"",vocal:"",brand:"",description:""};
const purposes=[
{id:"Klubowy opener",icon:"🪩",title:"Klubowy opener",desc:"Mocne wejście, build-up, drop i energia sceniczna.",prompt:"cinematic club opener, mainstage club atmosphere"},
{id:"Intro marki",icon:"🔺",title:"Intro marki",desc:"Profesjonalne wejście dla marki, firmy lub projektu.",prompt:"brand intro, premium sonic identity, memorable opening"},
{id:"Reklama / spot",icon:"📣",title:"Reklama / spot",desc:"Dynamiczna muzyka do reklamy, promo lub kampanii.",prompt:"advertising music, memorable hook, polished commercial sound"},
{id:"YouTube / social media",icon:"▶️",title:"YouTube / social media",desc:"Utwór dopasowany do filmów i treści online.",prompt:"social media ready, catchy intro, modern online video sound"},
{id:"Event / pokaz",icon:"🎟️",title:"Event / pokaz",desc:"Muzyka na event, pokaz, prezentację lub otwarcie.",prompt:"event opening music, elegant build, presentation energy"},
{id:"Tło do filmu",icon:"🎬",title:"Tło do filmu",desc:"Klimatyczna muzyka do filmu, trailera lub wizualizacji.",prompt:"cinematic background score, visual storytelling atmosphere"},
{id:"Pełny utwór",icon:"🎚️",title:"Pełny utwór",desc:"Kompletny utwór muzyczny gotowy do dalszej produkcji.",prompt:"full song structure, radio ready arrangement"},
{id:"Logo animation",icon:"💠",title:"Logo animation",desc:"Krótkie brzmienie do logo, animacji lub identyfikacji.",prompt:"short sonic logo, logo animation sound, premium impact"}
];
const moods=[["Mroczny","dark atmosphere"],["Futurystyczny","futuristic sound design"],["Elegancki","elegant premium production"],["Emocjonalny","emotional melodic tension"],["Hipnotyczny","hypnotic groove"],["Energetyczny","high energy"],["Kosmiczny","cosmic atmosphere"],["Luksusowy","luxury club feeling"],["Ciepły","warm organic texture"],["Agresywny","aggressive drive"]];
const productionExtras=[["Female AI Voice","female AI spoken intro"],["Robotic voice","robotic voice intro"],["Countdown","countdown build-up"],["Epic choir","epic choir textures"],["Deep bass","deep rolling bassline"],["Punchy kick","punchy kick"],["Acid synth","subtle acid synth elements"],["Vocal chops","female vocal chops"],["Wide pads","wide stereo pads"],["Massive drop","powerful festival drop"],["Dark club energy","dark club energy"],["Cinematic intro","cinematic intro"],["Luxury sound","premium polished production"],["Hypnotic groove","hypnotic rhythm"],["Emotional lead","emotional synth lead"]];
const starts=[["Szept / głos AI","spoken whisper intro, AI voice opening"],["Odliczanie","countdown intro"],["Ambientowe intro","ambient intro, atmospheric opening"],["Od razu beat","instant beat start"],["Chór / cinematic","cinematic choir opening"],["Piano / emocja","emotional piano intro"],["Basowy puls","deep sub pulse intro"]];
const developments=[["Spokojnie","slow emotional development"],["Narastająco","progressive build-up"],["Mocny drop","massive tension build and powerful drop"]];
const lengths=[["15 s — sound logo","short sonic logo, 15 seconds"],["30 s — reklama/social","30 second promo edit"],["60–90 s — intro/event","60 to 90 second event intro"],["2–3 min — krótki utwór","short full track, 2 to 3 minutes"],["3–5 min — club version","extended club version, 3 to 5 minutes"]];
const vocals=[["Bez wokalu","instrumental"],["Kobiecy wokal","female vocal"],["Męski wokal","male vocal"],["Głos AI","AI spoken voice"],["Vocal chops","vocal chops"],["Chór","choir textures"]];
const styleFilters={
"Wszystkie style":[],
"Club / electronic":["house","techno","trance","edm","drum","bass","breakbeat","dance","synthwave","chillstep","garage","2-step","jungle","dubstep"],
"World / organic":["afro","arabic","koto","gnawa","cajun","celtic","tuareg","mandarin","bengali","cape verdean","raga","klezmer","flamenco","sitar","samba","reggae","cumbia","dakar","havana","japanese","korean","russian","spanish"],
"Urban / beat":["rap","trap","drill","boom bap","g-funk","r&b","dirty south","cloud rap","hip hop","new jack"],
"Experimental":["algorave","hypnagogic","slushwave","noise","illbient","glitch","psy","ambient","avant-garde","hyper"],
"Live / retro":["blues","jazz","swing","bluegrass","big band","rock","soul","funk","bossa","chanson","classical","disco","grunge","shoegaze"]
};
const stepTitles=[{kicker:"Krok 1 / 5",title:"Do czego ma być utwór?",desc:"Wybierz zastosowanie. To nie jest styl Suno, tylko funkcja utworu."},{kicker:"Krok 2 / 5",title:"Jaki ma mieć klimat?",desc:"Wybierz maksymalnie 3 emocje. Mniej znaczy lepiej."},{kicker:"Krok 3 / 5",title:"Wybierz prawdziwy styl z listy Suno",desc:"Tutaj działa pełna baza 952 stylów z Twojej wklejki. Wyszukaj lub filtruj kategorią."},{kicker:"Krok 4 / 5",title:"Zaprojektuj strukturę",desc:"Określ początek, rozwój, długość i typ wokalu."},{kicker:"Krok 5 / 5",title:"Twój brief jest gotowy",desc:"Skopiuj prompt, strukturę albo wyślij brief do Pixel & Cat."}];
const content=root.querySelector("#pcStepContent"),warning=root.querySelector("#pcWarning"),nextBtn=root.querySelector("#pcNext"),backBtn=root.querySelector("#pcBack"),resetBtn=root.querySelector("#pcReset");
function esc(s){return String(s).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""");}
function optionCard(item,selected,type){return `<div class="pc-option ${selected?"selected":""}" data-value="${esc(item.id||item[0]||item.title)}" data-type="${type}"><div class="pc-check">✓</div><div class="pc-icon">${item.icon||"✦"}</div><h4>${esc(item.title||item[0])}</h4><p>${esc(item.desc||item[1])}</p></div>`;}
function renderStep(){
const meta=stepTitles[state.step]; root.querySelectorAll(".pc-step-pill").forEach((el,i)=>el.classList.toggle("active",i===state.step)); warning.style.display="none"; warning.textContent="";
let html=`<div class="pc-kicker">${meta.kicker}</div><h1 class="pc-title">${meta.title}</h1><p class="pc-desc">${meta.desc}</p>`;
if(state.step===0)html+=`<div class="pc-options">${purposes.map(p=>optionCard(p,state.purpose===p.id,"purpose")).join("")}</div>`;
if(state.step===1)html+=`<div class="pc-options">${moods.map(m=>optionCard(m,state.moods.includes(m[0]),"mood")).join("")}</div><p class="pc-small-note">Możesz wybrać maksymalnie 3 klimaty.</p>`;
if(state.step===2)html+=`<div class="pc-form"><div class="pc-style-tools"><div class="pc-field"><label>Filtr kategorii</label><select class="pc-select" id="pcCategory">${Object.keys(styleFilters).map(k=>`<option value="${esc(k)}">${esc(k)}</option>`).join("")}</select></div><div class="pc-field"><label>Wyszukaj w 952 stylach</label><input class="pc-input" id="pcStyleSearch" placeholder="np. afro house, techno, koto, blues, drum..." /></div></div><div class="pc-small-note">Wybrany styl główny: <strong>${state.mainStyle?esc(state.mainStyle):"jeszcze brak"}</strong></div><div class="pc-style-results" id="pcStyleResults"></div><div class="pc-field"><label>Dodatki produkcyjne — maksymalnie 4</label><div class="pc-options">${productionExtras.map(e=>optionCard(e,state.extras.includes(e[0]),"extra")).join("")}</div></div></div>`;
if(state.step===3)html+=`<div class="pc-form"><div class="pc-field"><label>Jak ma się zaczynać?</label><div class="pc-options">${starts.map(s=>optionCard(s,state.start===s[0],"start")).join("")}</div></div><div class="pc-field"><label>Jak ma się rozwijać?</label><div class="pc-options">${developments.map(d=>optionCard(d,state.development===d[0],"development")).join("")}</div></div><div class="pc-field"><label>Długość / format</label><div class="pc-options">${lengths.map(l=>optionCard(l,state.length===l[0],"length")).join("")}</div></div><div class="pc-field"><label>Wokal</label><div class="pc-options">${vocals.map(v=>optionCard(v,state.vocal===v[0],"vocal")).join("")}</div></div></div>`;
if(state.step===4)html+=`<div class="pc-form"><div class="pc-field"><label>Nazwa marki / projektu</label><input class="pc-input" id="pcBrand" value="${esc(state.brand)}" placeholder="np. SEBANSKY, Pixel & Cat, Glow Club..." /></div><div class="pc-field"><label>Krótki opis projektu</label><textarea class="pc-textarea" id="pcDescription" placeholder="Opisz jednym lub dwoma zdaniami, co chcesz osiągnąć.">${esc(state.description)}</textarea></div><div class="pc-live-section"><div class="pc-live-label">Gotowy brief</div><div class="pc-output" id="pcFinalBrief">${esc(buildFullBrief())}</div><div class="pc-copy-row"><button class="pc-copy" type="button" data-copy="brief">Kopiuj cały brief</button></div></div></div>`;
content.innerHTML=html;
if(state.step===2){renderStyleResults();root.querySelector("#pcCategory").addEventListener("change",renderStyleResults);root.querySelector("#pcStyleSearch").addEventListener("input",renderStyleResults);}
if(state.step===4){root.querySelector("#pcBrand").addEventListener("input",e=>{state.brand=e.target.value;updateLiveAndFinal();});root.querySelector("#pcDescription").addEventListener("input",e=>{state.description=e.target.value;updateLiveAndFinal();});}
bindOptionClicks();bindCopyButtons();backBtn.disabled=state.step===0;nextBtn.textContent=state.step===4?"Odśwież wynik":"Dalej →";updateLive();
}
function filteredStyles(){const cat=root.querySelector("#pcCategory")?.value||"Wszystkie style";const q=(root.querySelector("#pcStyleSearch")?.value||"").toLowerCase().trim();const words=styleFilters[cat]||[];return sunoStyles.filter(s=>{const low=s.toLowerCase();const catOk=!words.length||words.some(w=>low.includes(w));const qOk=!q||low.includes(q);return catOk&&qOk;}).slice(0,180);}
function renderStyleResults(){const box=root.querySelector("#pcStyleResults");if(!box)return;const list=filteredStyles();if(!list.length){box.innerHTML=`<div style="color:#aeb3cf;padding:12px;">Brak wyników. Spróbuj innego słowa.</div>`;return;}box.innerHTML=list.map((style)=>`<div class="pc-style-item ${state.mainStyle===style?"selected":""}" data-style="${esc(style)}"><span>${esc(style)}</span><small>${state.mainStyle===style?"wybrany":"wybierz"}</small></div>`).join("");box.querySelectorAll(".pc-style-item").forEach(item=>item.addEventListener("click",()=>{state.mainStyle=item.dataset.style;renderStep();}));}
function bindOptionClicks(){root.querySelectorAll(".pc-option").forEach(card=>card.addEventListener("click",()=>{const type=card.dataset.type,value=card.dataset.value;if(type==="purpose")state.purpose=value;if(type==="mood"){if(state.moods.includes(value))state.moods=state.moods.filter(x=>x!==value);else if(state.moods.length<3)state.moods.push(value);else return showWarning("Wybierz maksymalnie 3 klimaty.");}if(type==="extra"){if(state.extras.includes(value))state.extras=state.extras.filter(x=>x!==value);else if(state.extras.length<4)state.extras.push(value);else return showWarning("Wybierz maksymalnie 4 dodatki produkcyjne.");}if(type==="start")state.start=value;if(type==="development")state.development=value;if(type==="length")state.length=value;if(type==="vocal")state.vocal=value;renderStep();}));}
function showWarning(msg){warning.textContent=msg;warning.style.display="block";}
function validateStep(){if(state.step===0&&!state.purpose)return"Wybierz zastosowanie utworu.";if(state.step===1&&!state.moods.length)return"Wybierz przynajmniej jeden klimat.";if(state.step===2&&!state.mainStyle)return"Wybierz główny styl muzyczny z listy Suno.";if(state.step===3&&(!state.start||!state.development||!state.length||!state.vocal))return"Uzupełnij początek, rozwój, długość i wokal.";return"";}
function val(list,label){const f=list.find(x=>x[0]===label);return f?f[1]:"";}
function getPurposePrompt(){const p=purposes.find(x=>x.id===state.purpose);return p?p.prompt:"";}
function buildPrompt(){const parts=[state.mainStyle,getPurposePrompt(),...state.moods.map(m=>val(moods,m)),val(starts,state.start),val(developments,state.development),val(lengths,state.length),val(vocals,state.vocal),...state.extras.map(e=>val(productionExtras,e)),"modern production","clean mix","wide stereo image"].filter(Boolean);if(state.brand.trim())parts.push("branded intro for "+state.brand.trim());return Array.from(new Set(parts)).join(", ");}
function buildStructure(){const chunks=["[Intro]"];if(state.start)chunks.push("["+state.start+"]");if(state.vocal&&state.vocal!=="Bez wokalu")chunks.push("["+state.vocal+"]");chunks.push("[Atmosphere Rising]");if(state.development)chunks.push("["+state.development+"]");if(state.extras.includes("Countdown"))chunks.push("[Countdown]");chunks.push("[Build]","[Drop]","[Break]","[Final Drop]","[Outro]");return chunks.join("
");}
function buildConcept(){let text=`${state.purpose||"Utwór"} w stylu ${state.mainStyle||"wybrany styl Suno"}, z klimatem: ${state.moods.length?state.moods.join(", ").toLowerCase():"dopasowany klimat"}. `;text+=`Start: ${state.start||"do wyboru"}, rozwój: ${state.development||"do wyboru"}, wokal: ${state.vocal||"do wyboru"}.`;if(state.brand.trim())text+=` Branding: ${state.brand.trim()}.`;if(state.description.trim())text+=` Opis: ${state.description.trim()}`;return text;}
function buildIntroText(){const brand=state.brand.trim()||"your sound";const isAI=state.vocal==="Głos AI"||state.start==="Szept / głos AI"||state.extras.includes("Female AI Voice")||state.extras.includes("Robotic voice");if(isAI)return`Attention...
System online...
Signal detected...
Welcome to ${brand}...
The journey begins...`;if(state.purpose==="Logo animation")return`${brand}...
Sound in motion.
Light in memory.`;return`This is the signal.
This is the sign.
Follow the sound.
Welcome to ${brand}.`;}
function buildFullBrief(){return`KONCEPCJA:
${buildConcept()}
PROMPT DO AI / SUNO:
${buildPrompt()}
STRUKTURA:
${buildStructure()}
PROPOZYCJA INTRO:
${buildIntroText()}`;}
function updateLive(){const tags=[state.purpose,...state.moods,state.mainStyle,...state.extras,state.start,state.development,state.length,state.vocal,state.brand?"Brand: "+state.brand:""].filter(Boolean);root.querySelector("#pcTags").innerHTML=tags.length?tags.map(t=>`<span class="pc-tag">${esc(t)}</span>`).join(""):`<span class="pc-tag">Wybierz pierwszą opcję</span>`;root.querySelector("#pcConcept").textContent=buildConcept();root.querySelector("#pcPrompt").textContent=buildPrompt()||"Tu pojawi się gotowy prompt.";root.querySelector("#pcStructure").textContent=buildStructure();const mailSubject=encodeURIComponent("Brief muzyczny Pixel & Cat");const mailBody=encodeURIComponent(buildFullBrief());root.querySelector("#pcMailto").setAttribute("href",`mailto:${contactEmail}?subject=${mailSubject}&body=${mailBody}`);}
function updateLiveAndFinal(){updateLive();const final=root.querySelector("#pcFinalBrief");if(final)final.textContent=buildFullBrief();}
function bindCopyButtons(){root.querySelectorAll(".pc-copy").forEach(btn=>{btn.onclick=async()=>{let text="";if(btn.dataset.copy==="prompt")text=buildPrompt();if(btn.dataset.copy==="structure")text=buildStructure();if(btn.dataset.copy==="brief")text=buildFullBrief();try{await navigator.clipboard.writeText(text);const old=btn.textContent;btn.textContent="Skopiowano ✓";setTimeout(()=>btn.textContent=old,1200);}catch(e){alert("Nie udało się skopiować automatycznie. Zaznacz tekst ręcznie.");}};});}
nextBtn.addEventListener("click",()=>{const err=validateStep();if(err)return showWarning(err);if(state.step<4){state.step++;renderStep();root.scrollIntoView({behavior:"smooth",block:"start"});}else updateLiveAndFinal();});
backBtn.addEventListener("click",()=>{if(state.step>0){state.step--;renderStep();root.scrollIntoView({behavior:"smooth",block:"start"});}});
resetBtn.addEventListener("click",()=>{state.step=0;state.purpose="";state.moods=[];state.mainStyle="";state.extras=[];state.start="";state.development="";state.length="";state.vocal="";state.brand="";state.description="";renderStep();});
renderStep();
})();
</script>
Create your first navigation menu here and add it to the "Main menu" location.