:root{--bg:#0b0e1a;--surface:#121526;--card:#181c30;--card-hover:#1e2238;--card-active:#212540;--accent:#e8a838;--accent-dim:#c8881e;--accent-glow:#e8a83838;--accent-sub:#e8a83814;--accent-border:#e8a83873;--violet:#7c6fcd;--violet-glow:#7c6fcd2e;--text:#e2e6f6;--text-2:#8892b4;--text-3:#4a5278;--border:#22273e;--border-light:#2c3250;--success:#4caf82;--danger:#e05c5c;--r-sm:6px;--r-md:10px;--r-lg:16px;--r-xl:22px;--shadow-sm:0 2px 8px #00000059;--shadow-md:0 4px 20px #00000080;--shadow-lg:0 8px 40px #000000a6;--shadow-glow:0 0 24px var(--accent-glow);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,sans-serif;font-size:15px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}button{cursor:pointer;font:inherit;background:0 0;border:none}input{font:inherit}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes chordIn{0%{opacity:0;transform:scale(.78)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes sectionIn{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 var(--accent-glow)}60%{box-shadow:0 0 0 8px #0000}to{box-shadow:0 0 #0000}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes stepReveal{0%{opacity:0;transform:translateY(26px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes stepGlow{0%{box-shadow:0 0 0 1px var(--accent), 0 0 30px var(--accent-glow)}to{box-shadow:0 0 #0000,0 0 #0000}}@keyframes badgePop{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes sumRowIn{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}body{min-height:100dvh}.jh-wrap{flex-direction:column;min-height:100dvh;display:flex}.jh-header{border-bottom:1px solid var(--border);text-align:center;background:linear-gradient(#0e1122 0%,#0000 100%);padding:28px 32px 24px;position:relative}.jh-header:before{content:"";background:radial-gradient(ellipse 60% 80% at 50% -10%, var(--accent-glow), transparent);pointer-events:none;position:absolute;inset:0}.jh-logo{letter-spacing:-.5px;color:var(--text);align-items:center;gap:10px;font-size:26px;font-weight:700;display:inline-flex}.logo-note{color:var(--accent);filter:drop-shadow(0 0 8px var(--accent-glow));font-size:30px;line-height:1}.jh-tagline{color:var(--text-2);letter-spacing:.6px;text-transform:uppercase;margin-top:6px;font-size:13px;font-weight:400}.jh-progress{flex-direction:column;align-items:center;gap:6px;max-width:320px;margin:14px auto 0;display:flex;position:relative}.jh-progress-track{background:var(--surface);border:1px solid var(--border);border-radius:99px;width:100%;height:4px;overflow:hidden}.jh-progress-fill{background:linear-gradient(90deg, var(--accent-dim), var(--accent));width:0;height:100%;box-shadow:0 0 10px var(--accent-glow);border-radius:99px;transition:width .5s cubic-bezier(.2,.75,.3,1)}.jh-progress-label{letter-spacing:.5px;color:var(--text-3);font-family:JetBrains Mono,monospace;font-size:10px}.jh-main{flex:1;grid-template-columns:1fr 1fr;align-items:start;gap:0;display:grid}@media (width<=900px){.jh-main{grid-template-columns:1fr}}.config-col{border-right:1px solid var(--border);flex-direction:column;gap:6px;padding:28px 24px 40px;display:flex}@media (width<=900px){.config-col{border-right:none;border-bottom:1px solid var(--border)}}.step-section{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px 20px 22px;display:none}.step-section.revealed{display:block}.step-section.just-revealed{animation:.5s cubic-bezier(.2,.75,.3,1) both stepReveal,1.4s .15s both stepGlow}.step-section.completed{border-color:var(--border-light)}.step-hd{align-items:flex-start;gap:14px;margin-bottom:16px;display:flex}.step-hd-text{flex:1;min-width:0}.step-n{color:var(--accent);background:var(--accent-sub);border:1px solid var(--accent-border);letter-spacing:.5px;border-radius:5px;flex-shrink:0;margin-top:2px;padding:3px 7px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;transition:background .25s,color .25s,border-color .25s}.step-section.completed .step-n{color:var(--success);background:#4caf821f;border-color:#4caf8273}.step-title{color:var(--text);font-size:15px;font-weight:600;line-height:1.3}.step-sub{color:var(--text-2);margin-top:2px;font-size:12px;line-height:1.4}.step-value{text-overflow:ellipsis;white-space:nowrap;max-width:45%;color:var(--accent);background:var(--accent-sub);border:1px solid var(--accent-border);border-radius:20px;flex-shrink:0;align-self:center;margin-left:auto;padding:4px 11px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;animation:.35s cubic-bezier(.34,1.56,.64,1) both badgePop;overflow:hidden}.step-value:empty{display:none}.note-grid{grid-template-columns:repeat(12,1fr);gap:5px;display:grid}@media (width<=640px){.note-grid{grid-template-columns:repeat(6,1fr)}}.note-btn{border-radius:var(--r-sm);border:1px solid var(--border-light);background:var(--card-hover);flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:52px;padding:8px 4px 7px;transition:border-color .15s,background .15s,box-shadow .15s,transform .12s;display:flex;position:relative}.note-btn:hover{background:var(--card-active);border-color:var(--text-3);transform:translateY(-1px)}.note-btn.accidental{background:var(--surface)}.nb-main{color:var(--text);font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;line-height:1}.nb-alt{color:var(--text-3);font-size:9px;font-weight:400;line-height:1}.note-btn.selected{background:var(--accent-sub);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), var(--shadow-glow)}.note-btn.selected .nb-main{color:var(--accent)}.notation-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;display:none}.notation-row.revealed{animation:.4s cubic-bezier(.2,.75,.3,1) both stepReveal;display:flex}.notation-label{text-transform:uppercase;letter-spacing:.8px;color:var(--text-2);font-size:11px;font-weight:700}.notation-toggle{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);gap:2px;padding:3px;display:inline-flex}.notation-btn{color:var(--text-2);border-radius:7px;padding:6px 13px;font-size:12px;font-weight:600;transition:background .15s,color .15s}.notation-btn:hover{color:var(--text);background:var(--card-hover)}.notation-btn.selected{background:var(--accent);color:#0b0e1a}.notation-hint{color:var(--text-3);font-size:11px}@media (width<=480px){.notation-hint{display:none}}.scale-tabs{flex-wrap:wrap;gap:4px;margin-bottom:12px;display:flex}.scale-tab{color:var(--text-2);background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:5px 13px;font-size:12px;font-weight:500;transition:all .15s}.scale-tab:hover{border-color:var(--text-3);color:var(--text)}.scale-tab.active{color:var(--accent);border-color:var(--accent-border);background:var(--accent-sub)}.scale-grid{grid-template-columns:repeat(2,1fr);gap:6px;display:grid}.scale-btn{text-align:left;background:var(--card-hover);border:1px solid var(--border-light);border-radius:var(--r-md);padding:10px 12px;transition:all .15s}.scale-btn:hover{background:var(--card-active);border-color:var(--text-3)}.scale-btn.selected{background:var(--accent-sub);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.scale-btn.selected .sc-name{color:var(--accent)}.sc-name{color:var(--text);margin-bottom:2px;font-size:13px;font-weight:600;display:block}.sc-desc{color:var(--text-2);font-size:11px;line-height:1.35;display:block}.form-presets{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.form-chip{color:var(--text-2);background:var(--card-hover);border:1px solid var(--border-light);border-radius:var(--r-md);flex-direction:column;align-items:flex-start;gap:1px;padding:7px 14px;font-size:12px;font-weight:500;transition:all .15s;display:flex}.form-chip:hover{background:var(--card-active);border-color:var(--text-3)}.form-chip.selected{color:var(--accent);background:var(--accent-sub);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.form-chip-label{color:inherit;font-size:13px;font-weight:600}.form-chip-value{color:var(--text-3);letter-spacing:.5px;font-family:JetBrains Mono,monospace;font-size:10px}.form-chip.selected .form-chip-value{color:var(--accent-dim)}.form-custom-wrap{margin-top:4px;display:none}.form-custom-wrap.visible{display:block}.form-custom-label{color:var(--text-2);margin-bottom:6px;font-size:11px;font-weight:500;display:block}.form-custom-input{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--r-sm);width:100%;color:var(--text);letter-spacing:1px;outline:none;padding:9px 12px;font-family:JetBrains Mono,monospace;font-size:13px;transition:border-color .15s,box-shadow .15s}.form-custom-input:focus{border-color:var(--accent-border);box-shadow:0 0 0 2px var(--accent-glow)}.form-custom-hint{color:var(--text-3);margin-top:5px;font-size:11px}.style-grid{grid-template-columns:1fr 1fr;gap:7px;display:grid}.style-card{background:var(--card-hover);border:1px solid var(--border-light);border-radius:var(--r-md);text-align:left;padding:13px 14px;transition:all .18s;position:relative;overflow:hidden}.style-card:before{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);opacity:0;height:2px;transition:opacity .18s;position:absolute;top:0;left:0;right:0}.style-card:hover{background:var(--card-active);border-color:var(--text-3)}.style-card:hover:before{opacity:.4}.style-card.selected{background:var(--accent-sub);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), var(--shadow-glow)}.style-card.selected:before{opacity:1}.style-card.selected .sc-title{color:var(--accent)}.sc-icon{color:var(--text-2);margin-bottom:7px;font-family:JetBrains Mono,monospace;font-size:18px;display:block}.style-card.selected .sc-icon{color:var(--accent)}.sc-title{color:var(--text);margin-bottom:4px;font-size:13px;font-weight:600;display:block}.sc-detail{color:var(--text-2);font-size:11px;line-height:1.45}.seg-control{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);grid-template-columns:repeat(4,1fr);gap:2px;padding:3px;display:grid}.seg-btn{color:var(--text-2);text-align:center;border-radius:7px;flex-direction:column;align-items:center;gap:2px;padding:9px 6px 8px;font-size:12px;font-weight:500;transition:all .15s;display:flex}.seg-btn:hover{color:var(--text);background:var(--card-hover)}.seg-btn.selected{background:var(--accent);color:#000;font-weight:600}.seg-label{font-size:11px;font-weight:inherit}.seg-sub{color:inherit;opacity:.7;font-family:JetBrains Mono,monospace;font-size:10px}.seg-btn.selected .seg-sub{opacity:.6}.generate-area{margin-top:10px;padding:8px 0 4px;display:none}.generate-area.revealed{display:block}.generate-area.just-revealed{animation:.5s cubic-bezier(.2,.75,.3,1) both stepReveal}.generate-btn{background:linear-gradient(135deg, var(--accent) 0%, var(--accent-dim) 100%);color:#0b0e1a;letter-spacing:.3px;border-radius:var(--r-lg);cursor:pointer;border:none;justify-content:center;align-items:center;gap:10px;width:100%;padding:17px 32px;font-size:15px;font-weight:700;transition:transform .15s,box-shadow .2s,opacity .15s;display:flex;position:relative;overflow:hidden}.generate-btn:after{content:"";background:linear-gradient(90deg,#0000 0%,#ffffff26 50%,#0000 100%) 0 0/200% 100%;animation:2.4s infinite shimmer;position:absolute;inset:0}.generate-btn:hover{transform:translateY(-2px);box-shadow:0 6px 28px #e8a83873}.generate-btn:active{transform:translateY(0)}.generate-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.generate-icon{font-size:18px;line-height:1}.generate-btn.loading .generate-icon{animation:.8s linear infinite spin;display:inline-block}.generate-hint{text-align:center;color:var(--text-3);letter-spacing:.3px;margin-top:8px;font-size:11px}.output-col{scrollbar-width:thin;scrollbar-color:var(--border) transparent;align-self:start;max-height:100dvh;padding:28px 24px 40px;position:sticky;top:0;overflow-y:auto}@media (width<=900px){.output-col{max-height:none;position:static}}.output-placeholder{background:var(--card);border:1px dashed var(--border-light);border-radius:var(--r-xl);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:340px;padding:40px 24px;display:flex}.ph-icon{color:var(--text-3);filter:drop-shadow(0 0 12px #ffffff0d);font-size:48px;line-height:1}.ph-title{color:var(--text-2);font-size:16px;font-weight:600}.ph-sub{color:var(--text-3);max-width:260px;font-size:13px;line-height:1.5;transition:color .3s}.setup-summary{flex-direction:column;gap:6px;width:100%;max-width:320px;display:flex}.setup-summary:empty{display:none}.sum-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);justify-content:space-between;align-items:center;gap:12px;padding:9px 13px;animation:.35s cubic-bezier(.2,.75,.3,1) both sumRowIn;display:flex}.sum-key{letter-spacing:.8px;text-transform:uppercase;color:var(--text-2);font-size:11px;font-weight:600}.sum-val{color:var(--accent);text-align:right;text-overflow:ellipsis;white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:600;overflow:hidden}.output-content{animation:.4s both fadeSlideUp}.output-banner{background:linear-gradient(135deg, var(--card) 0%, var(--card-active) 100%);border:1px solid var(--border-light);border-radius:var(--r-lg) var(--r-lg) 0 0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px 14px;display:flex}.banner-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.banner-note{color:var(--accent);font-size:18px;line-height:1}.banner-key{color:var(--text);letter-spacing:.5px;font-family:JetBrains Mono,monospace;font-size:14px;font-weight:600}.banner-sep{color:var(--text-3);font-size:12px}.banner-form{color:var(--accent);background:var(--accent-sub);border:1px solid var(--accent-border);letter-spacing:1px;border-radius:4px;padding:2px 7px;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:500}.banner-style{color:var(--text-2);font-size:12px}.banner-actions{gap:6px;display:flex}.btn-act{color:var(--text-2);background:var(--card-hover);border:1px solid var(--border-light);border-radius:var(--r-sm);cursor:pointer;padding:6px 12px;font-size:12px;font-weight:500;transition:all .15s}.btn-act:hover{color:var(--text);border-color:var(--text-3)}.btn-act.primary{color:var(--accent);border-color:var(--accent-border);background:var(--accent-sub)}.btn-act.primary:hover{box-shadow:0 0 0 1px var(--accent);background:#e8a83826}.section-cards{flex-direction:column;display:flex}.section-card{background:var(--card);border:1px solid var(--border);border-top:none;padding:14px 16px 16px;animation:.35s both sectionIn}.section-card:last-child{border-radius:0 0 var(--r-lg) var(--r-lg)}.section-card:first-child{animation-delay:50ms}.section-card:nth-child(2){animation-delay:.12s}.section-card:nth-child(3){animation-delay:.19s}.section-card:nth-child(4){animation-delay:.26s}.section-card:nth-child(5){animation-delay:.33s}.sec-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.sec-name{color:var(--accent);letter-spacing:1.5px;text-transform:uppercase;font-size:11px;font-weight:700}.sec-bars{color:var(--text-3);font-family:JetBrains Mono,monospace;font-size:10px}.chord-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);flex-wrap:wrap;align-items:stretch;gap:0;padding:2px;display:flex;overflow:hidden}.chord-chip{opacity:0;cursor:default;border-radius:6px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;min-width:52px;padding:10px 6px 8px;transition:background .12s;animation:.32s forwards chordIn;display:flex}.chord-chip:hover{background:var(--card-hover)}.chord-root{color:var(--text);letter-spacing:-.3px;font-family:JetBrains Mono,monospace;font-size:17px;font-weight:600;line-height:1}.chord-quality{color:var(--accent);min-height:12px;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:500;line-height:1}.chord-sep{background:var(--border);flex-shrink:0;align-self:stretch;width:1px;margin:4px 0}.seed-info{background:var(--card);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-3);align-items:center;gap:8px;margin-top:12px;padding:8px 12px;font-size:11px;display:flex}.seed-label{flex-shrink:0}.seed-value{color:var(--text-2);flex:1;font-family:JetBrains Mono,monospace}.toast{background:var(--success);color:#0b0e1a;box-shadow:var(--shadow-md);z-index:1000;pointer-events:none;white-space:nowrap;border-radius:40px;padding:10px 20px;font-size:13px;font-weight:600;transition:transform .3s cubic-bezier(.34,1.56,.64,1);position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(80px)}.toast.show{transform:translate(-50%)translateY(0)}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:99px}.lang-toggle{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);z-index:10;gap:2px;padding:2px;display:inline-flex;position:absolute;top:16px;right:20px}.lang-btn{letter-spacing:.5px;color:var(--text-2);border-radius:7px;padding:5px 9px;font-size:11px;font-weight:700;transition:background .15s,color .15s}.lang-btn:hover{color:var(--text);background:var(--card-hover)}.lang-btn.active{background:var(--accent);color:#0b0e1a}
