*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}:root{--bg: #0d1117;--bg-card: #161b22;--bg-elevated: #1c2230;--bg-input: #0d1117;--green: #00e676;--green-dim: rgba(0,230,118,.12);--green-glow: rgba(0,230,118,.25);--amber: #ffb300;--amber-dim: rgba(255,179,0,.12);--red: #ff3d3d;--red-dim: rgba(255,61,61,.12);--blue: #4fc3f7;--blue-dim: rgba(79,195,247,.1);--text: #e6edf3;--text-2: #8b949e;--text-3: #484f58;--border: rgba(255,255,255,.07);--border-hi: rgba(255,255,255,.14);--font: "Noto Sans KR", sans-serif;--mono: "IBM Plex Mono", monospace;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--nav-h: 64px;--header-h: 56px}html{font-size:16px;-webkit-font-smoothing:antialiased;overscroll-behavior:none}body{background:var(--bg);color:var(--text);font-family:var(--font);min-height:100dvh;overflow-x:hidden;overscroll-behavior:none}#root{min-height:100dvh;display:flex;flex-direction:column;max-width:480px;margin:0 auto;position:relative}.mono{font-family:var(--mono)}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-thumb{background:var(--text-3);border-radius:2px}::selection{background:var(--green-dim);color:var(--green)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes ping{0%{transform:scale(1);opacity:.8}to{transform:scale(2.5);opacity:0}}@keyframes slide-up{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes needle-sweep{0%{stroke-dashoffset:var(--dash-from)}to{stroke-dashoffset:var(--dash-to)}}@keyframes bar-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.animate-in{animation:slide-up .35s ease both}.page{flex:1;padding-top:calc(var(--header-h) + var(--safe-top));padding-bottom:calc(var(--nav-h) + var(--safe-bottom) + 8px);overflow-y:auto;-webkit-overflow-scrolling:touch}.header{position:fixed;top:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;height:calc(var(--header-h) + var(--safe-top));padding-top:var(--safe-top);background:#0d1117eb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);display:flex;align-items:center;padding-left:20px;padding-right:20px;z-index:100;gap:12px}.header__title{font-size:15px;font-weight:700;letter-spacing:.04em;color:var(--text);flex:1}.header__badge{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--green);background:var(--green-dim);border:1px solid rgba(0,230,118,.3);border-radius:4px;padding:2px 7px;letter-spacing:.08em}.nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;height:calc(var(--nav-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:#0d1117f2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(4,1fr);align-items:center;z-index:100}.nav__item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 0;cursor:pointer;color:var(--text-3);font-size:11px;font-weight:500;letter-spacing:.02em;text-decoration:none;border:none;background:none;transition:color .15s;-webkit-tap-highlight-color:transparent;user-select:none}.nav__item svg{width:22px;height:22px;stroke-width:1.8}.nav__item.active{color:var(--green)}.nav__item.active svg{stroke:var(--green)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:18px}.card--highlight{border-color:#00e67633;background:linear-gradient(145deg,var(--bg-card),rgba(0,230,118,.04))}.big-num{font-family:var(--mono);font-size:clamp(64px,22vw,88px);font-weight:600;line-height:1;letter-spacing:-.02em;color:var(--text);transition:color .3s ease}.big-num.level-safe{color:var(--green)}.big-num.level-warn{color:var(--amber)}.big-num.level-danger{color:var(--red);text-shadow:0 0 30px rgba(255,61,61,.4)}.btn{display:flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:14px;font-family:var(--font);font-weight:700;font-size:16px;cursor:pointer;transition:transform .1s,opacity .15s;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.btn:active{transform:scale(.96)}.btn--start{width:100%;height:64px;background:var(--green);color:#0d1117;font-size:18px;border-radius:18px;box-shadow:0 0 32px var(--green-glow);letter-spacing:.04em}.btn--stop{width:100%;height:64px;background:var(--red-dim);color:var(--red);border:1.5px solid rgba(255,61,61,.3);font-size:18px;border-radius:18px;letter-spacing:.04em}.btn--secondary{height:48px;background:var(--bg-elevated);color:var(--text-2);border:1px solid var(--border-hi);border-radius:12px;font-size:14px;padding:0 20px}.btn--premium{width:100%;height:56px;background:linear-gradient(135deg,#f59e0b,#d97706);color:#0d1117;font-size:16px;border-radius:16px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--text-3);position:relative;flex-shrink:0}.status-dot.active{background:var(--green)}.status-dot.active:after{content:"";position:absolute;inset:-4px;border-radius:50%;background:var(--green);animation:ping 1.5s ease-out infinite;opacity:0}.level-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.1em;padding:4px 10px;border-radius:6px}.level-badge.safe{color:var(--green);background:var(--green-dim);border:1px solid rgba(0,230,118,.25)}.level-badge.warn{color:var(--amber);background:var(--amber-dim);border:1px solid rgba(255,179,0,.25)}.level-badge.danger{color:var(--red);background:var(--red-dim);border:1px solid rgba(255,61,61,.25)}.section-label{font-size:11px;font-weight:500;letter-spacing:.1em;color:var(--text-3);text-transform:uppercase;margin-bottom:10px}.divider{height:1px;background:var(--border);margin:16px 0}.list-item{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--border);cursor:pointer}.list-item:last-child{border-bottom:none}.waveform{width:100%;border-radius:8px;display:block}.permission-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;padding:32px 24px;text-align:center;gap:24px}
