:root{--ink: #23231f;--bg: #f1efe8;--panel: #fbfaf5;--accent-ink: #f4f2ea;--text: #3a382f;--muted: #8f8c83;--soft: #6a6860;--divider: #ddd7c9;--shadow-soft: #c9c5b8;--danger: #b3543f}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:Plus Jakarta Sans,system-ui,-apple-system,Apple SD Gothic Neo,Malgun Gothic,sans-serif;-webkit-font-smoothing:antialiased}.app{max-width:1080px;margin:0 auto;padding:40px 22px 60px}.masthead{border-bottom:2px solid var(--ink);padding-bottom:22px;margin-bottom:28px}.masthead-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.authbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.auth-btn{background:var(--panel);color:var(--ink);border:2px solid var(--ink);border-radius:10px;font-family:Space Mono,monospace;font-size:12px;padding:8px 14px;cursor:pointer}.auth-btn:hover{box-shadow:2px 2px 0 var(--ink)}.auth-btn.primary{background:var(--ink);color:var(--accent-ink)}.member-chip{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text);border:2px solid var(--divider);border-radius:10px;padding:6px 10px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tier-tag{font-family:Space Mono,monospace;font-size:9px;letter-spacing:.08em;background:var(--ink);color:var(--accent-ink);padding:2px 6px;border-radius:5px}.chip.locked{opacity:.55}.wordmark{font-size:clamp(36px,7.5vw,70px);font-weight:800;letter-spacing:-.03em;line-height:.95;color:var(--ink)}.tagline{margin:14px 0 0;font-family:Space Mono,monospace;font-size:12px;letter-spacing:.04em;background:var(--ink);color:var(--accent-ink);display:inline-block;padding:5px 10px;border-radius:8px}.tabs{display:flex;gap:8px;margin-bottom:24px}.tab{background:var(--panel);color:var(--ink);border:2px solid var(--ink);border-radius:12px;font-family:inherit;font-weight:700;font-size:14px;padding:10px 16px;cursor:pointer}.tab:hover{box-shadow:2px 2px 0 var(--ink)}.tab.on{background:var(--ink);color:var(--accent-ink);box-shadow:2px 2px 0 var(--ink)}.tab .badge{margin-left:6px}.tab.on .badge{background:var(--accent-ink);color:var(--ink)}.grid{display:grid;grid-template-columns:360px 1fr;gap:22px;align-items:start}@media (max-width: 760px){.grid{grid-template-columns:1fr}.app{padding:28px 16px 48px}}.panel{background:var(--panel);border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);border-radius:18px;padding:22px}.field{display:block;margin-bottom:20px}.field:last-child{margin-bottom:0}.field-label{display:block;font-family:Space Mono,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--soft);margin-bottom:9px}.muted{color:var(--muted);text-transform:none;letter-spacing:0}.hint{display:block;margin-top:7px;font-size:11.5px;color:var(--muted)}.theme-input,.text-input,.select{width:100%;background:var(--panel);border:2px solid var(--ink);border-radius:11px;color:var(--ink);font-family:inherit;font-size:14px;padding:11px 13px;resize:vertical}.theme-input::placeholder,.text-input::placeholder{color:#b1ad9f}.theme-input:focus,.text-input:focus,.select:focus{outline:none;box-shadow:3px 3px 0 var(--ink)}.text-input{margin-top:10px}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.bpm-key{display:flex;gap:8px}.bpm-key .text-input,.bpm-key .select{margin-top:0}.bpm-input{flex:0 0 38%}.key-select{flex:1 1 auto}.mix-slider{margin-top:12px}.mix-head{display:flex;justify-content:space-between;font-family:Space Mono,monospace;font-size:12px;color:var(--ink);margin-bottom:8px}.range{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:6px;border-radius:999px;background:var(--divider);border:2px solid var(--ink);cursor:pointer;padding:0}.range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--ink);border:2px solid var(--ink);cursor:pointer;margin-top:-1px}.range::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--ink);border:2px solid var(--ink);cursor:pointer}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{position:relative;background:var(--panel);border:2px solid var(--ink);border-radius:12px;color:var(--ink);font-family:inherit;font-weight:500;font-size:13px;padding:8px 14px;cursor:pointer;transition:box-shadow .1s,transform .1s}.chip:hover{box-shadow:2px 2px 0 var(--ink)}.chip.on{background:var(--ink);color:var(--accent-ink);box-shadow:2px 2px 0 var(--ink);font-weight:700}.badge{margin-left:6px;font-family:Space Mono,monospace;font-size:9px;letter-spacing:.08em;vertical-align:middle;padding:2px 6px;border-radius:5px;background:var(--ink);color:var(--accent-ink)}.chip.on .badge{background:var(--accent-ink);color:var(--ink)}.generate{width:100%;margin-top:4px;background:var(--ink);color:var(--accent-ink);border:2px solid var(--ink);border-radius:13px;font-family:inherit;font-size:15px;font-weight:800;letter-spacing:.01em;padding:15px;cursor:pointer;box-shadow:4px 4px 0 var(--shadow-soft);transition:transform .1s,box-shadow .1s}.generate:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--shadow-soft)}.generate:disabled{background:var(--panel);color:var(--soft);box-shadow:none;cursor:progress}.coming-soon{margin-top:22px;padding-top:18px;border-top:2px solid var(--divider)}.cs-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--soft);padding:7px 0}.output{min-height:360px}.empty{color:var(--soft);padding:40px 6px}.empty p{margin:0 0 10px;line-height:1.6}.empty strong{color:var(--ink)}.error{background:#b3543f14;border:2px solid var(--danger);color:var(--danger);border-radius:11px;padding:12px 14px;font-size:13.5px;margin-bottom:16px}.stages{display:flex;flex-direction:column;gap:8px}.stage-row{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:12px;padding:16px 14px;border:2px solid var(--divider);border-radius:12px;color:var(--soft)}.stage-row.active{border-color:var(--ink);color:var(--ink);box-shadow:3px 3px 0 var(--ink)}.stage-row.done{color:var(--text);border-color:var(--ink)}.stage-num{font-family:Space Mono,monospace;font-size:18px;color:var(--ink)}.stage-row:not(.active):not(.done) .stage-num{color:var(--muted)}.stage-name{font-size:14px}.stage-state{font-family:Space Mono,monospace;font-size:11px;letter-spacing:.06em}.result-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.result-label{font-family:Space Mono,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.12em;background:var(--ink);color:var(--accent-ink);padding:5px 10px;border-radius:8px}.copy{background:var(--panel);border:2px solid var(--ink);color:var(--ink);border-radius:10px;font-family:Space Mono,monospace;font-size:11px;letter-spacing:.06em;padding:6px 12px;cursor:pointer}.copy:hover{box-shadow:2px 2px 0 var(--ink)}.sheet{background:var(--panel);border:2px solid var(--ink);border-left:8px solid var(--ink);border-radius:13px;color:var(--ink);font-family:Space Mono,Apple SD Gothic Neo,monospace;font-size:13.5px;line-height:1.9;white-space:pre-wrap;word-break:break-word;padding:20px 22px;margin:0}.sheet.dim{color:var(--text);border-left-color:var(--divider)}.sheet.notes{line-height:1.75}.toggle-work{margin-top:16px;width:100%;background:var(--panel);border:2px dashed var(--ink);color:var(--soft);border-radius:12px;font-family:Space Mono,monospace;font-size:12px;letter-spacing:.04em;padding:12px;cursor:pointer}.toggle-work:hover{color:var(--ink)}.work{margin-top:14px;display:flex;flex-direction:column;gap:16px}.work-label{display:block;font-family:Space Mono,monospace;font-size:11px;letter-spacing:.1em;color:var(--soft);margin-bottom:8px}.foot{margin-top:32px;padding-top:20px;border-top:2px solid var(--divider);font-family:Space Mono,monospace;font-size:11px;letter-spacing:.04em;color:var(--soft);text-align:center}.foot em{color:var(--ink);font-style:normal}@media (prefers-reduced-motion: reduce){*{transition:none!important}}
