:root{--bg:#0e1726;--card:#16223a;--card-on:#1c2b48;--chip:#22345a;--text:#eaf1ff;--dim:#93a4c4;--primary:#3b82f6;--datar:#4aa3ff;--naik:#3ddc97;--turun:#ff9f45;--gelombang:#c77dff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}h1{margin:0;font-size:1.4rem;line-height:1.2}h2{margin:0;font-size:1.05rem}button,select,input{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline-offset:2px;outline:2px solid #8ab8ff}.shell{flex-direction:column;gap:14px;max-width:520px;margin:0 auto;padding:28px 16px 40px;display:flex}.app{flex-direction:column;gap:12px;max-width:1200px;margin:0 auto;padding:14px 14px 28px;display:flex}.lead{color:var(--dim);margin:0;font-size:.92rem;line-height:1.5}.hint{color:var(--dim);margin:0;font-size:.8rem}.privacy{color:var(--dim);text-align:center;margin:4px 0 0;font-size:.82rem}.foot{margin-top:6px}.sec{color:var(--dim);text-transform:uppercase;letter-spacing:.04em;margin:4px 2px 0;font-size:.85rem}button.primary,a.primary,button.secondary{border:0;border-radius:12px;justify-content:center;align-items:center;min-height:44px;padding:0 18px;font-weight:600;text-decoration:none;display:inline-flex}.primary{background:var(--primary);color:#fff}.primary:disabled{opacity:.5;cursor:not-allowed}.secondary{background:var(--chip);color:var(--text)}.secondary.small{white-space:nowrap;min-height:44px;padding:0 14px;font-size:.85rem}.uploader{flex-direction:column;gap:12px;display:flex}.drop{text-align:center;background:var(--card);cursor:pointer;border:2px dashed #34496f;border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:32px 16px;display:flex}.drop.drag,.drop:hover{border-color:var(--primary);background:var(--card-on)}.drop span{color:var(--dim);font-size:.9rem}.drop small{color:var(--dim)}.busy{background:var(--card);border-radius:14px;flex-direction:column;align-items:center;gap:10px;padding:24px;display:flex}.spinner{border:3px solid var(--chip);border-top-color:var(--primary);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.progress{background:var(--chip);border-radius:13px;width:100%;height:26px;position:relative;overflow:hidden}.progress>div{background:var(--primary);transition:width .15s;position:absolute;inset:0 auto 0 0}.progress>span{text-align:center;font-size:.8rem;line-height:26px;display:block;position:relative}.msg{border-radius:12px;margin:0;padding:12px 14px;font-size:.9rem;line-height:1.45}.msg p{margin:0 0 10px}.msg.err{color:#ffd6df;background:#3a1d28;border:1px solid #7a3347}.msg.warn{color:#ffeaa6;background:#3a3119;border:1px solid #7a6a2c}.head{flex-direction:column;gap:8px;display:flex}.head-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.meta{color:var(--dim);flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:.85rem;display:flex}.meta .file{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.tonic{align-items:center;gap:8px;display:inline-flex}.tonic select{background:var(--card);border:1px solid #34496f;border-radius:10px;min-height:44px;padding:0 10px}.stack,.col-l,.col-r{flex-direction:column;gap:12px;min-width:0;display:flex}.legend{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.legend-item{background:var(--card);min-height:62px;color:var(--dim);text-align:center;border:2px solid #0000;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:6px 2px;font-size:.74rem;font-weight:600;display:flex}.legend-item.on{background:var(--card-on);color:var(--text)}.note-card{background:var(--card);border-radius:14px;grid-template-columns:1fr 1fr;gap:10px;padding:14px 16px;display:grid}.note-card.on{background:var(--card-on)}.syl{min-height:1em;font-size:4.2rem;font-weight:800;line-height:1}.syl.small{font-size:2.4rem}.syl.dim{color:var(--dim)}.sub{color:var(--dim);margin-top:6px;font-size:.9rem}.next{border-left:1px solid #93a4c440;min-width:0;padding-left:14px}.next-h{color:var(--dim);flex-wrap:wrap;align-items:center;gap:4px 8px;margin-bottom:6px;font-size:.85rem;font-weight:600;display:flex}.next-h span{align-items:center;gap:2px;font-weight:700;display:inline-flex}.canvas-wrap{background:var(--card);touch-action:manipulation;border-radius:14px;height:clamp(240px,45vh,340px);overflow:hidden}.canvas-wrap canvas{width:100%;height:100%;display:block}.controls{background:var(--card);border-radius:14px;flex-direction:column;gap:10px;padding:12px;display:flex}.row{align-items:center;gap:12px;display:flex}.row.chips{flex-wrap:wrap;gap:8px}.play{background:var(--primary);color:#fff;border:0;border-radius:50%;flex:none;place-items:center;width:52px;height:52px;display:grid}.seek{min-width:0;height:44px;accent-color:var(--primary);flex:1}.time{font-variant-numeric:tabular-nums;color:var(--dim);flex:none;font-size:.85rem}.chip{background:var(--chip);min-width:44px;min-height:44px;color:var(--dim);border:1px solid #0000;border-radius:22px;padding:0 14px;font-size:.85rem;font-weight:600}.chip.on{background:var(--primary);color:#fff}.sep{flex:8px}.kbd{display:none}.phrases{flex-direction:column;gap:8px;display:flex;position:relative}.phrase{text-align:left;background:var(--card);border:2px solid #0000;border-radius:12px;width:100%;padding:12px 14px;display:block}.phrase.on{border-color:var(--primary);background:var(--card-on)}.phrase-h{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.shape{align-items:center;gap:6px;font-weight:700;display:inline-flex}.badge{color:var(--gelombang);background:#c77dff2e;border-radius:10px;padding:2px 8px;font-size:.72rem;font-weight:600}.phrase-t{color:var(--dim);margin:2px 0 6px;font-size:.8rem}.spark{width:100%;height:46px;display:block}.phrase-n{margin-top:6px;font-size:.88rem;line-height:1.4}.export{background:var(--card);border-radius:14px;flex-direction:column;gap:12px;padding:14px;display:flex}.export-body{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.preview{background:var(--bg);border-radius:10px;flex:none;width:135px;height:240px}.export-side{flex-direction:column;flex:220px;gap:10px;min-width:0;display:flex}.field{color:var(--dim);flex-direction:column;gap:6px;font-size:.85rem;display:flex}.field input{background:var(--bg);min-height:44px;color:var(--text);border:1px solid #34496f;border-radius:10px;padding:0 12px}.as-link{width:100%}@media (width>=768px){.syl{font-size:5rem}}@media (width>=1024px){.app{padding:20px 20px 28px}.cols{grid-template-columns:minmax(0,1fr) 400px;align-items:start;gap:16px;display:grid}.col-r{max-height:calc(100vh - 32px);position:sticky;top:16px}.col-r .phrases{flex:1;min-height:120px;padding-right:4px;overflow-y:auto}.canvas-wrap{height:clamp(420px,60vh,640px)}.kbd{display:block}.preview{width:180px;height:320px}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}.fx{background:var(--card);border-radius:14px}.fx>summary{cursor:pointer;justify-content:space-between;align-items:center;min-height:52px;padding:0 16px;font-weight:700;list-style:none;display:flex}.fx>summary::-webkit-details-marker{display:none}.fx>summary:after{content:"▾";color:var(--dim);margin-left:10px}.fx[open]>summary:after{content:"▴"}.fx-state{color:var(--dim);margin-left:auto;font-size:.8rem;font-weight:500}.fx-body{flex-direction:column;gap:10px;padding:0 14px 16px;display:flex}.fx-body h3{color:var(--dim);text-transform:uppercase;letter-spacing:.04em;margin:8px 0 0;font-size:.8rem}.slider{flex-direction:column;gap:2px;font-size:.88rem;display:flex}.slider.off{opacity:.45}.slider-h{justify-content:space-between;display:flex}.slider-h b{color:var(--dim);font-variant-numeric:tabular-nums;font-weight:600}.slider input{width:100%;height:44px;accent-color:var(--primary)}.busy-dot{color:var(--primary);text-transform:none;letter-spacing:0;font-weight:500}.lang{gap:6px;margin-left:auto;display:inline-flex}.lang .chip{min-width:44px;padding:0 10px}.shell .lang{align-self:flex-end;margin:0}.head-top .lang{margin-left:auto}.preview[data-fmt="16:9"]{aspect-ratio:16/9;width:min(100%,320px);height:auto}@media (width>=1024px){.preview[data-fmt="16:9"]{width:min(100%,360px)}}.brand{align-items:center;gap:12px;min-width:0;display:flex}.logo{border-radius:10px;flex:none}
