.login-page{height:100%;display:grid;place-items:center;background:radial-gradient(900px 500px at 50% -10%,rgba(139,92,246,.1),transparent 60%),var(--bg-app)}.auth-bare{width:300px;display:flex;flex-direction:column;gap:18px}.login-page__brand{display:flex;align-items:center;gap:9px}.auth-sub{margin:2px 0 0;color:var(--text-muted);font-size:12px}.login-screen{display:flex;flex-direction:column;gap:14px}.login-screen__field{display:flex;flex-direction:column;gap:6px}.login-screen__error{margin:0;color:var(--danger);font-size:12px}.login-screen__sent{margin:0;color:var(--success);font-size:12px}.auth-hint{margin:2px 0 0;color:var(--text-faint);font-size:11px;line-height:1.55}.dashboard{height:100%;padding:18px;display:flex;flex-direction:column;gap:14px;overflow:auto}.dashboard__head{display:flex;align-items:center;justify-content:space-between}.dashboard__empty{color:var(--text-faint);font-size:13px;padding:18px 4px}.song-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.song-item{background:var(--bg-panel);border:1px solid var(--border);border-radius:11px;overflow:hidden}.song-item--open{border-color:var(--border-strong)}.song-row{width:100%;display:flex;align-items:center;gap:12px;padding:13px 16px;background:transparent;border:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}.song-row:hover{background:#ffffff05}.song-row:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--focus-ring)}.song-caret{color:var(--text-muted);width:12px;font-size:10px}.song-name{font-weight:600}.song-meta{color:var(--text-muted);font-size:12px}.chart-nest{padding:4px 16px 14px 38px;display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--border)}.chart-nest__empty{color:var(--text-faint);font-size:12px;margin:8px 0 4px}.chart-line-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.chart-line{display:flex;align-items:center;gap:12px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:9px 13px}.chart-line__name{font-weight:600;display:flex;align-items:center}.chart-line__actions{margin-left:auto;display:flex;gap:6px}.chart-create{display:flex;gap:6px;align-items:center;margin-top:4px}.chart-create .ui-input,.chart-create .ui-select{height:30px}.song-delete{display:flex;gap:6px;align-items:center;margin-top:6px;padding-top:8px;border-top:1px dashed var(--border)}.ui-input--lv{max-width:80px}.song-create{display:flex;gap:8px;align-items:center;padding:12px 14px;background:var(--bg-panel);border:1px solid var(--border);border-radius:11px}.song-create .ui-input{height:32px}.ui-input--bpm{max-width:100px}.badge{margin-left:8px;padding:1px 8px;border-radius:99px;font-size:11px;font-weight:600;background:#8b5cf629;color:var(--accent-hover)}.btn-danger{color:var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.app-header{display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--bg-panel);border-bottom:1px solid var(--border)}.app-dot{width:10px;height:10px;border-radius:50%;background:var(--accent)}.app-name{margin:0;font-size:14px;font-weight:600}.app-file,.app-meta{color:var(--text-muted)}.app-sep{color:var(--text-faint)}.app-spacer{flex:1}.app-meta{font-size:12px}.status-bar{display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--bg-toolbar);border-top:1px solid var(--border);color:var(--text-faint);font-size:11px}.status-bar .ok{color:var(--success)}.status-bar .spacer{flex:1}.field-preview{position:relative;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border);background:#101218}.fp-title{position:absolute;top:12px;left:16px}.fp-canvas{display:block;border-radius:8px}.properties-panel{padding:14px 16px;display:flex;flex-direction:column;gap:12px}.properties-panel .row{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}.properties-panel .ui-label{display:flex;flex-direction:column;gap:4px;min-width:0}.properties-panel .ui-input,.properties-panel .ui-select{width:100%;box-sizing:border-box}.properties-panel .prop-value{font-family:var(--font-mono);font-size:13px;color:var(--text);text-transform:none}.transport-bar{display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--bg-toolbar);border-top:1px solid var(--border)}.transport-group{display:inline-flex;align-items:center;gap:8px;margin:0;padding:0;border:0;min-inline-size:0}.tbtn{height:30px;min-width:34px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center}.tbtn-play{height:34px;min-width:46px;font-size:14px}.transport-time{font-family:var(--font-mono);font-size:12px;white-space:nowrap}.transport-time .t-cur{color:var(--text)}.transport-time .t-sep,.transport-time .t-total{color:var(--text-faint)}.transport-seek{flex:1;min-width:80px;display:flex;align-items:center}.seek-range{width:100%;height:6px;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--bg-input);border:1px solid var(--border);border-radius:3px;cursor:pointer}.seek-range:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring)}.seek-range::-webkit-slider-thumb{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent-hover);border:none;cursor:pointer}.seek-range::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent-hover);border:none;cursor:pointer}:root{--bg-app: #0e1014;--bg-toolbar: #14171d;--bg-panel: #181b22;--bg-input: #20242d;--border: #2c313c;--border-strong: #3a4150;--text: #e7e9ee;--text-muted: #9aa1ad;--text-faint: #5c6470;--accent: #8b5cf6;--accent-hover: #a78bfa;--accent-press: #7c4dff;--accent-on: #ffffff;--focus-ring: rgba(139, 92, 246, .35);--success: #22c55e;--danger: #ef4444;--font-sans: system-ui, -apple-system, "Hiragino Sans", "Noto Sans JP", sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace}.btn{height:28px;padding:0 12px;background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:6px;font:inherit;cursor:pointer}.btn:hover{border-color:var(--border-strong)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring);border-color:var(--accent)}.btn-accent{background:var(--accent);color:var(--accent-on);border-color:var(--accent)}.btn-accent:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn[aria-pressed=true]{background:var(--accent);color:var(--accent-on);border-color:var(--accent)}.btn:disabled{opacity:.4;cursor:default}.btn-block{width:100%;height:38px}.btn-sm{height:24px;padding:0 9px;font-size:12px;border-radius:5px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.tool-group{display:inline-flex;gap:4px;background:var(--bg-input);border:1px solid var(--border);border-radius:7px;padding:3px}.tool-group .btn{border:none;background:transparent;height:24px}.tool-group .btn[aria-pressed=true]{background:var(--accent);color:var(--accent-on)}.ui-select{height:28px;padding:0 8px;background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:6px;font:inherit}.ui-input{height:28px;padding:0 9px;background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:6px;font-family:var(--font-mono)}.ui-input:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring);border-color:var(--accent)}.ui-check{accent-color:var(--accent)}.ui-label,.panel-title{color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}html,body,#root{height:100%;margin:0}body{background:var(--bg-app);color:var(--text);font-family:var(--font-sans);font-size:13px}.editor-toolbar{display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--bg-toolbar);border-bottom:1px solid var(--border)}.editor-layout{display:grid;grid-template-rows:46px 42px 1fr 56px 26px;height:100%}.editor-body{display:grid;grid-template-columns:1fr 400px;min-height:0}.editor-body>main{min-height:0;overflow:hidden;position:relative}.editor-sidebar{display:grid;grid-template-rows:360px 1fr;background:var(--bg-panel);border-left:1px solid var(--border);min-height:0}.editor-sidebar>.properties{overflow:auto}
