:root{--bg:#f6f2f5;--bg-grad-1:#fdeef5;--bg-grad-2:#f1ecfb;--surface:#fff;--surface-blur:#ffffffb8;--field:#f1eef3;--ink:#2c2230;--ink-soft:#8a8194;--accent:#ff5fa2;--accent-ink:#fff;--line:#eceaf0;--radius:20px;--radius-sm:14px;--shadow:0 10px 30px #966e8c29;--shadow-sm:0 4px 14px #966e8c1f;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);color:var(--ink);-webkit-tap-highlight-color:transparent;font-family:Pretendard,-apple-system,"M PLUS Rounded 1c",Quicksand,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100dvh;margin:0;padding:0}body{background:linear-gradient(170deg, var(--bg-grad-1), var(--bg-grad-2)) fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior:none}button{cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent;background:0 0;border:none;font-family:inherit}input{font-family:inherit}.btn-primary{background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:14px 26px;font-size:16px;font-weight:700;transition:transform 80ms,opacity .15s;box-shadow:0 6px 18px #ff5fa259}.btn-primary:active{transform:scale(.96)}.btn-primary:disabled{opacity:.7}.btn-ghost{color:var(--ink);background:var(--field);border-radius:999px;padding:10px 16px;font-weight:600;transition:transform 80ms}.btn-ghost:active{transform:scale(.96)}.icon-btn{background:var(--surface);width:38px;height:38px;box-shadow:var(--shadow-sm);color:var(--ink);border-radius:50%;justify-content:center;align-items:center;font-size:19px;transition:transform 80ms,opacity .15s;display:inline-flex}.icon-btn:active{transform:scale(.92)}.icon-btn:disabled{opacity:.35;box-shadow:none}.icon-btn-sm{background:var(--field);width:26px;height:26px;color:var(--ink-soft);border-radius:50%;justify-content:center;align-items:center;font-size:13px;display:inline-flex}.segmented{background:var(--field);border-radius:14px;gap:3px;padding:4px;display:flex}.segmented-item{color:var(--ink-soft);border-radius:11px;flex:1;padding:9px 6px;font-size:13px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s}.segmented-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.field{background:var(--field);color:var(--ink);border:none;border-radius:12px;outline:none;padding:10px 14px;font-size:15px}.field::placeholder{color:var(--ink-soft)}.app-shell{max-width:520px;min-height:100dvh;padding-top:var(--safe-top);flex-direction:column;margin:0 auto;display:flex}.topbar{z-index:20;background:0 0;align-items:center;gap:8px;padding:12px 14px 8px;display:flex;position:sticky;top:0}.pill-group{background:var(--surface-blur);-webkit-backdrop-filter:saturate(180%)blur(20px);box-shadow:var(--shadow-sm);border-radius:999px;align-items:center;gap:2px;padding:4px;display:flex}.pill-group .icon-btn{box-shadow:none;background:0 0;width:34px;height:34px}.tabbar{padding:6px 14px calc(10px + var(--safe-bottom));background:0 0;justify-content:center;display:flex}.dock{background:var(--surface-blur);-webkit-backdrop-filter:saturate(180%)blur(22px);border:1px solid #fff9;border-radius:26px;gap:4px;width:100%;max-width:440px;padding:8px 10px;display:flex;box-shadow:0 12px 34px #966e8c38}.tab{color:var(--ink-soft);border-radius:18px;flex-direction:column;flex:1;align-items:center;gap:3px;padding:8px 4px;transition:background .15s,color .15s,transform 80ms;display:flex}.tab:active{transform:scale(.94)}.tab-active{color:var(--accent);background:#ff5fa21f}.sel-panel{border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow);flex-direction:column;gap:8px;margin:0 14px 10px;padding:12px 14px;animation:.16s panelIn;display:flex}@keyframes panelIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.toast{bottom:calc(120px + var(--safe-bottom));color:#fff;z-index:70;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#2c2230eb;border-radius:999px;padding:10px 18px;font-size:13px;position:fixed;left:50%;transform:translate(-50%)}input[type=range]{accent-color:var(--accent)}input[type=number]{background:var(--field)}
