:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}:root{color-scheme:dark}html,body{height:100%;width:100%;margin:0;overflow:hidden}#root{height:100%;width:100%;overflow:hidden}.ralphApp{min-height:100vh;width:100vw;display:flex;align-items:stretch;justify-content:stretch;padding:0;position:relative;overflow:hidden;background:#c46a62}.ralphApp:before{content:"";position:absolute;inset:0;pointer-events:none;background:#ffffff14;opacity:0;transition:opacity .22s ease}@keyframes bgPulse{0%{opacity:0}50%{opacity:.12}to{opacity:0}}.ralphApp.idle:before{animation:bgPulse 10s ease-in-out infinite}body{background:#c46a62}.ralphFrame{width:100%;min-height:100vh;display:grid;grid-template-rows:1fr;gap:0;padding:0}.ralphTopBar{display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";color:#ffffffeb}.ralphChip{display:inline-flex;align-items:center;gap:10px;padding:10px 14px;border-radius:999px;background:linear-gradient(180deg,#ffffff29,#ffffff0f);border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 10px 30px #0003,inset 0 1px #ffffff40}.dot{width:10px;height:10px;border-radius:999px;background:#ffffffc7;box-shadow:0 0 0 7px #ffffff0f,0 0 18px #ffffff2e}.dot.idle{background:#ffffffa6}.dot.recording{background:#ff453af2;box-shadow:0 0 0 7px #ff453a1f}.dot.thinking{background:#ffd60ae6;box-shadow:0 0 0 7px #ffd60a1f}.dot.speaking{background:#30d158e6;box-shadow:0 0 0 7px #30d1581f}.ralphFaceWrap{display:grid;place-items:stretch}.ralphFace{width:100%;height:100%;border-radius:0;background:#00000014;border:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:none;position:relative;overflow:hidden}.ralphOverlayTopLeft{position:absolute;top:16px;left:16px;z-index:10}.ralphOverlayBottom{position:absolute;left:0;right:0;bottom:18px;display:flex;justify-content:center;z-index:10;pointer-events:none}.controlsPill{pointer-events:auto;width:min(980px,calc(100% - 32px));display:flex;gap:12px;align-items:center;justify-content:center;padding:0;border-radius:0;background:transparent;border:0;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}@keyframes breathe{0%{transform:scale(1)}50%{transform:scale(1.012)}to{transform:scale(1)}}@keyframes lookAround{0%{transform:translate(0) translateY(0)}15%{transform:translate(-10px) translateY(3px)}35%{transform:translate(12px) translateY(-2px)}55%{transform:translate(6px) translateY(6px)}75%{transform:translate(-8px) translateY(-3px)}to{transform:translate(0) translateY(0)}}@keyframes idleBlink{0%,92%{transform:scaleY(1)}95%{transform:scaleY(.12)}to{transform:scaleY(1)}}.ralphFace.idle{animation:breathe 7s ease-in-out infinite}.ralphFace.idle .ralphFaceGrid{animation:lookAround 12s ease-in-out infinite}.ralphFace.idle .eye{animation:idleBlink 5.7s ease-in-out infinite}@keyframes wake{0%{transform:translateY(0) scale(1)}18%{transform:translateY(-4px) rotate(-.8deg)}38%{transform:translateY(2px) rotate(.8deg)}58%{transform:translateY(-2px) rotate(-.4deg)}to{transform:translateY(0) scale(1)}}.ralphFace.wake .ralphFaceGrid{animation:wake .65s cubic-bezier(.2,.9,.2,1) 1}.ralphFaceGrid{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;place-items:center;padding:14%}.eye{width:clamp(48px,6.5vw,90px);height:clamp(64px,8.5vw,120px);border-radius:12px;background:#000000d6;transform:translateY(calc(var(--lvl, 0) * 6px)) rotate(calc(var(--lvl, 0) * -1deg));transition:transform 90ms ease-out}.mouth{grid-column:1 / span 2;width:clamp(34px,4.2vw,68px);height:clamp(14px,1.8vw,26px);border-radius:10px;background:#000000d6;transform-origin:center;transform:scaleX(calc(1 + var(--mouthLvl, 0) * .7)) scaleY(calc(1 + var(--mouthLvl, 0) * 1.4));transition:transform 90ms ease-out}.ralphFace.recording .ralphFaceGrid{transform:translateY(calc(var(--lvl, 0) * 6px)) rotate(calc(var(--lvl, 0) * -1.2deg));transition:transform 90ms ease-out}.ralphFace.recording .eye{transform:translateY(calc(var(--lvl, 0) * 6px)) rotate(calc(var(--lvl, 0) * -1deg)) scaleY(1.05)}@keyframes thinkBlink{0%{transform:scaleY(1)}92%{transform:scaleY(1)}96%{transform:scaleY(.15)}to{transform:scaleY(1)}}.ralphFace.thinking .eye{animation:thinkBlink 4.2s ease-in-out infinite}@keyframes speak{0%{transform:scaleX(calc(1 + var(--mouthLvl, 0) * .25)) scaleY(calc(1 + var(--mouthLvl, 0) * .25))}45%{transform:scaleX(calc(1 + var(--mouthLvl, 0) * 1.15)) scaleY(calc(1 + var(--mouthLvl, 0) * 2.25))}to{transform:scaleX(calc(1 + var(--mouthLvl, 0) * .25)) scaleY(calc(1 + var(--mouthLvl, 0) * .25))}}@keyframes speakEyes{0%{transform:translateY(calc(var(--lvl, 0) * 3px)) scaleY(1)}50%{transform:translateY(calc(var(--lvl, 0) * 3px)) scaleY(1.03)}to{transform:translateY(calc(var(--lvl, 0) * 3px)) scaleY(1)}}.ralphFace.speaking .mouth{animation:speak .26s ease-in-out infinite}.ralphFace.speaking .eye{animation:speakEyes .52s ease-in-out infinite}.pttButton{appearance:none;border:0;cursor:pointer;padding:14px 18px;min-width:240px;border-radius:999px;font-weight:850;letter-spacing:.2px;color:#fffffff5;background:linear-gradient(180deg,#00000057,#00000038);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:transform .16s cubic-bezier(.2,.8,.2,1),box-shadow .16s ease,filter .16s ease;box-shadow:0 14px 38px #00000038,inset 0 1px #ffffff24}.pttButton:hover{transform:translateY(-2px);filter:brightness(1.05)}.pttButton:active{transform:translateY(0) scale(.992)}.pttButton:disabled{opacity:.55;cursor:not-allowed}.smallButton{appearance:none;border:0;cursor:pointer;padding:12px 14px;border-radius:999px;font-weight:700;color:#ffffffeb;background:linear-gradient(180deg,#ffffff1a,#ffffff0a);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:transform .16s cubic-bezier(.2,.8,.2,1),filter .16s ease;box-shadow:0 10px 30px #0000002e,inset 0 1px #ffffff24}.smallButton:hover{transform:translateY(-2px);filter:brightness(1.06)}.smallButton:active{transform:translateY(0) scale(.992)}.panel{background:#00000052;border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:14px;color:#ffffffeb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial}.panel pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.panelTitle{font-size:13px;opacity:.85;margin-bottom:10px;letter-spacing:.3px;text-transform:uppercase}.errorPanel{position:relative}.autoplayPanel{position:relative;background:#00000052;border-color:#ffffff1f}.errorDismiss{appearance:none;border:0;cursor:pointer;width:32px;height:32px;display:inline-grid;place-items:center;padding:0;border-radius:999px;font-weight:900;font-size:18px;line-height:1;color:#ffffffeb;background:linear-gradient(180deg,#ffffff1a,#ffffff0a);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:transform .16s cubic-bezier(.2,.8,.2,1),filter .16s ease;position:absolute;top:10px;right:10px}.errorDismiss:hover{transform:translateY(-1px);filter:brightness(1.06)}.errorDismiss:active{transform:translateY(0) scale(.992)}.split{display:grid;gap:12px;grid-template-columns:1fr}@media(min-width:860px){.split{grid-template-columns:1fr 1fr}}.overlayStack{position:absolute;left:16px;right:16px;bottom:92px;z-index:12;display:flex;flex-direction:column;gap:12px}.panel.sheet{position:relative;max-height:min(46vh,520px);overflow:auto;box-shadow:0 18px 60px #0006}
