:root{
  --glass: rgba(24,34,28,.28);
  --glass-strong: rgba(24,34,28,.45);
  --line: rgba(255,255,255,.28);
  --ink: #fff;
  --muted: rgba(255,255,255,.72);
  --font: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --ui: ui-sans-serif, -apple-system, "SF Pro Text", "Segoe UI", Roboto, sans-serif;
}
*{box-sizing:border-box;margin:0}
[hidden]{display:none!important}
html,body{height:100%;overflow:hidden;background:#1b2a22;color:var(--ink);font-family:var(--ui);-webkit-font-smoothing:antialiased}
canvas#c{position:fixed;inset:0;width:100vw;height:100dvh;display:block;touch-action:none;cursor:grab}
canvas#c.grabbing{cursor:grabbing}
canvas#c.over{cursor:pointer}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
button:focus-visible,label:focus-within{outline:2px solid #fff;outline-offset:3px}

#boot{position:fixed;inset:0;display:grid;place-content:center;justify-items:center;gap:14px;background:radial-gradient(ellipse at 50% 40%,#2e4637,#141f19);z-index:20;transition:opacity .8s ease}
#boot.gone{opacity:0;pointer-events:none}
#boot p{font-family:var(--font);font-size:20px;color:var(--muted)}
.boot-dot{width:46px;height:46px;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.9),rgba(255,255,255,.08) 38%,rgba(170,120,255,.25) 62%,rgba(90,220,255,.35) 80%,rgba(255,255,255,.15));box-shadow:inset 0 0 12px rgba(255,255,255,.35);animation:bob 1.6s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-8px) scale(1.05)}}

.top{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:calc(14px + env(safe-area-inset-top)) calc(18px + env(safe-area-inset-right)) 0 calc(18px + env(safe-area-inset-left));z-index:5;pointer-events:none}
.brand{font-family:var(--font);font-size:26px;letter-spacing:-.02em;text-shadow:0 1px 12px rgba(0,0,0,.35)}
.top-actions{display:flex;gap:8px;pointer-events:auto}
.chip{min-height:44px;padding:0 16px;border-radius:999px;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4);font-size:14px}
.chip:hover{background:var(--glass-strong)}

.panel{position:fixed;top:calc(70px + env(safe-area-inset-top));right:calc(18px + env(safe-area-inset-right));width:min(340px,calc(100vw - 36px));padding:14px;border-radius:20px;background:rgba(20,30,25,.55);border:1px solid var(--line);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);z-index:6}
.panel-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;font-weight:600}
.muted{color:var(--muted);font-weight:400;font-size:13px}
.small{font-size:12px;margin-top:8px}
.bg-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.bg-item{position:relative;aspect-ratio:2/1;border-radius:12px;overflow:hidden;border:2px solid transparent;background:#000 center/cover}
.bg-item[aria-pressed="true"]{border-color:#fff}
.bg-item span{position:absolute;left:6px;bottom:4px;font-size:11px;text-shadow:0 1px 4px #000}
.add-bg{display:flex;align-items:center;justify-content:center;min-height:44px;margin-top:10px;border-radius:12px;border:1px dashed var(--line);cursor:pointer;font-size:14px}
.add-bg:hover{background:var(--glass)}

.hint{position:fixed;left:50%;bottom:calc(132px + env(safe-area-inset-bottom));transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);text-align:center;font-size:14px;color:#fff;padding:8px 14px;border-radius:999px;background:rgba(20,30,25,.38);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:opacity 1s ease;pointer-events:none;z-index:4}
.hint.gone{opacity:0}

.dock{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 calc(22px + env(safe-area-inset-right)) calc(22px + env(safe-area-inset-bottom)) calc(22px + env(safe-area-inset-left));z-index:5;pointer-events:none}
.dock>*{pointer-events:auto}
.spacer{pointer-events:none}

.blow{position:relative;width:96px;height:96px;border-radius:50%;display:grid;place-items:center;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(14px) saturate(1.5);-webkit-backdrop-filter:blur(14px) saturate(1.5);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;transition:transform .15s ease,background .2s}
.blow .txt{font-size:12px;line-height:1.1;width:60px;text-align:center}
.blow .ring{position:absolute;inset:6px;border-radius:50%;border:2px solid rgba(255,255,255,.55);transition:transform .2s ease}
.blow.active{transform:scale(.94);background:var(--glass-strong)}
.blow.active .ring{animation:breathe 1s ease-in-out infinite}
@keyframes breathe{50%{transform:scale(1.12);opacity:.5}}

.mic-group{justify-self:start;display:flex;flex-direction:column-reverse;align-items:flex-start;gap:8px}
.sens{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);font-size:12px}
.sens input{width:96px;accent-color:#fff}
.mic{position:relative;display:flex;align-items:center;gap:8px;min-height:52px;padding:0 16px 0 12px;border-radius:999px;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.mic svg{width:22px;height:22px;fill:currentColor}
.mic .label{font-size:14px}
.mic .meter{display:none;width:44px;height:6px;border-radius:3px;background:rgba(255,255,255,.2);overflow:hidden}
.mic .meter span{display:block;height:100%;width:0;background:linear-gradient(90deg,#9ef,#c9f,#fca);transition:width .06s linear}
.mic[aria-pressed="true"]{background:var(--glass-strong)}
.mic[aria-pressed="true"] .meter{display:block}

.drop{position:fixed;inset:12px;border:2px dashed #fff;border-radius:24px;display:grid;place-items:center;background:rgba(0,0,0,.35);z-index:30;font-family:var(--font);font-size:28px}
.toast{position:fixed;left:50%;top:calc(76px + env(safe-area-inset-top));transform:translate(-50%,-8px);padding:10px 16px;border-radius:999px;background:rgba(20,30,25,.7);border:1px solid var(--line);font-size:14px;opacity:0;transition:opacity .3s,transform .3s;pointer-events:none;z-index:31;max-width:calc(100vw - 32px)}
.toast.on{opacity:1;transform:translate(-50%,0)}

@media (max-width:560px){
  .brand{font-size:22px}
  .mic .label{display:none}
  .blow{width:88px;height:88px}
  .hint{font-size:13px;bottom:calc(122px + env(safe-area-inset-bottom))}
}
@media (prefers-reduced-motion:reduce){
  .boot-dot,.blow.active .ring{animation:none}
}
