:root{--acid: #8fff00;--acid-soft: #b8ff5c;--acid-wash: rgba(143, 255, 0, .16);--on-acid: #14140f;--bg: #14140f;--surface: #1c1b15;--surface-2: #24231b;--line: #333226;--ink: #f0eee4;--ink-soft: #aba795;--ink-faint: #8a8574;--stage: #0f0e0a;--happy-accident: #e8834a;--caution: #e0a93b;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 10px 30px rgba(0, 0, 0, .4);--r-sm: 8px;--r-md: 12px;--r-lg: 18px;--font-sans: Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Segoe UI", "Noto Sans KR", sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, monospace;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}.app{height:100%;display:flex;flex-direction:column;max-width:1100px;margin:0 auto;padding:16px clamp(12px,3vw,28px) 20px;gap:14px}.topbar{display:flex;align-items:center;justify-content:space-between}.brand{display:flex;flex-direction:column;gap:2px}.brand h1{display:flex;align-items:center;gap:10px;margin:0;font-size:1.15rem;font-weight:700;letter-spacing:-.015em}.logo{width:14px;height:14px;border-radius:50%;flex:none;background:var(--acid)}.brand p{margin:0;font-size:.82rem;color:var(--ink-faint)}.credit{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;color:var(--ink-faint);opacity:.65;white-space:nowrap;transition:opacity .2s ease-out}.credit:hover{opacity:1}.controls{display:flex;flex-direction:column;gap:11px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px}.controls-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.spacer{flex:1 1 auto}.btn{font:inherit;font-weight:650;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);padding:9px 20px;border-radius:var(--r-sm);cursor:pointer;transition:background .2s ease-out,border-color .2s ease-out}.btn:hover{border-color:var(--ink-faint)}.btn.primary{background:var(--acid);color:var(--on-acid);border-color:transparent;font-weight:700}.btn.primary:hover{background:var(--acid-soft)}.btn.danger{background:transparent;color:var(--happy-accident);border-color:color-mix(in srgb,var(--happy-accident) 40%,var(--line))}.btn.danger:hover{border-color:var(--happy-accident)}.ctl{display:flex;align-items:center;gap:7px}.ctl-label{font-size:.78rem;color:var(--ink-faint)}.ctl-val{font-variant-numeric:tabular-nums;min-width:2ch;text-align:center;font-size:.85rem}.step{font:inherit;width:26px;height:26px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2);color:var(--ink);cursor:pointer;line-height:1}.step:hover{border-color:var(--ink-faint)}.ctl input[type=range]{accent-color:var(--ink-soft);width:90px}.ctl.toggle{gap:5px;font-size:.82rem;color:var(--ink-soft);cursor:pointer}.ctl.toggle input{accent-color:var(--ink-soft)}.engines,.modes{padding-top:2px;border-top:1px dashed var(--line);font-size:.85rem}.chip-radio{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid var(--line);border-radius:999px;color:var(--ink-soft);cursor:pointer;font-size:.82rem;transition:border-color .2s ease-out,background .2s ease-out}.chip-radio:hover{border-color:var(--ink-faint)}.chip-radio.on{border-color:var(--ink-faint);color:var(--ink);background:var(--surface-2)}.chip-radio input{accent-color:var(--ink-soft)}.status{display:inline-flex;align-items:center;gap:7px;font-size:.85rem;color:var(--ink-soft)}.status-dot{width:9px;height:9px;border-radius:50%;background:var(--ink-faint);flex:none}.status.listening .status-dot{background:var(--acid)}.status.loading .status-dot{background:var(--caution)}.status.lost{color:var(--happy-accident)}.status.lost .status-dot{background:var(--happy-accident)}.banner{padding:11px 15px;border-radius:var(--r-md);font-size:.88rem;line-height:1.55}.banner.error{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--happy-accident);color:var(--ink-soft)}.stage{flex:1 1 auto;min-height:0;display:flex}.editor{flex:1;display:flex;flex-direction:column;gap:8px;min-height:0}.editor-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.editor-head label{font-size:.9rem;font-weight:600}.editor-meta{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}.editor-meta .dot{opacity:.5}.link-btn{font:inherit;font-size:.8rem;background:none;border:none;color:var(--ink-soft);cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line)}.link-btn:hover{color:var(--ink)}.editor textarea{flex:1;resize:none;width:100%;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--ink);font:inherit;font-size:1.02rem;line-height:1.75;padding:18px 20px;word-break:keep-all}.editor textarea::placeholder{color:var(--ink-faint)}.editor textarea:focus{outline:2px solid var(--acid);outline-offset:-1px;border-color:transparent}.prompter-wrap{position:relative;flex:1;min-height:0;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--stage)}.reading-guide{position:absolute;left:0;right:0;top:var(--reading);height:0;border-top:1px solid color-mix(in srgb,var(--ink-faint) 30%,transparent);z-index:3;pointer-events:none}.reading-guide:before{content:"";position:absolute;left:10px;top:-4px;border:4px solid transparent;border-left-color:color-mix(in srgb,var(--ink-faint) 60%,transparent)}.edge-fade{position:absolute;left:0;right:0;height:22%;z-index:2;pointer-events:none}.edge-fade.top{top:0;background:linear-gradient(var(--stage),transparent)}.edge-fade.bottom{bottom:0;background:linear-gradient(transparent,var(--stage))}.prompter{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;scrollbar-width:none;padding:0 clamp(18px,5vw,64px)}.prompter::-webkit-scrollbar{display:none}.prompter.mirror{transform:scaleX(-1)}.prompter-content{padding-top:50vh;font-weight:600;line-height:1.5;letter-spacing:-.015em;color:var(--ink-soft);word-break:keep-all}.tail-space{height:60vh}.tok{cursor:pointer;border-radius:5px;transition:color .18s ease-out}.tok:hover{color:var(--ink)}.tok.is-current{color:var(--acid)}.engine-note{margin:0;padding-top:2px;font-size:.8rem;line-height:1.65;color:var(--ink-faint);max-width:74ch}.engine-note b{color:var(--ink-soft)}.engine-note .warn{color:var(--caution);font-weight:600}.engine-note .easy{color:var(--ink-soft);font-style:italic}button:focus-visible,input:focus-visible,.tok:focus-visible,.link-btn:focus-visible{outline:2px solid var(--acid);outline-offset:2px}
