*{margin:0;padding:0;box-sizing:border-box}button{background:none;border:none;color:inherit;font:inherit;cursor:pointer;-webkit-appearance:none;appearance:none}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden;-webkit-user-select:none;user-select:none;width:100vw;height:100vh}#root{width:100vw;height:100vh}@keyframes loading{0%{transform:translate(-100%)}50%{transform:translate(150%)}to{transform:translate(400%)}}@keyframes typingBounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-5px);opacity:1}}.typing-dots span{display:inline-block;width:6px;height:6px;background:currentColor;border-radius:50%;animation:typingBounce 1.2s infinite}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}.terminal-content{padding:14px 16px;font-family:SF Mono,Fira Code,Menlo,monospace;font-size:12px;line-height:1.8;color:#f0f0f599;height:100%;overflow:auto;background:#0a0c1866}.terminal-content .terminal-line{opacity:0;animation:terminalType .3s forwards}.terminal-content .terminal-line:nth-child(1){animation-delay:.2s}.terminal-content .terminal-line:nth-child(2){animation-delay:.6s}.terminal-content .terminal-line:nth-child(3){animation-delay:1s}.terminal-content .terminal-line:nth-child(4){animation-delay:1.4s}.terminal-content .terminal-line:nth-child(5){animation-delay:1.8s}@keyframes terminalType{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.terminal-content .t-prompt{color:#00d4aa}.terminal-content .t-cmd{color:#f0f0f5}.terminal-content .t-output{color:#f0f0f559}.terminal-content .t-success{color:#28c840}.terminal-content .cursor-blink{display:inline-block;width:7px;height:14px;background:#00d4aa;margin-left:2px;animation:blink 1s step-end infinite;vertical-align:middle}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.terminal-content .terminal-input-line{opacity:1;animation:none;display:flex;align-items:center}.terminal-content .terminal-input{flex:1;background:transparent;border:none;outline:none;color:#f0f0f5;font:inherit;padding:0;caret-color:#00d4aa}.services-list{padding:12px;display:flex;flex-direction:column;gap:4px;height:100%;overflow:auto}.services-list .service-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:8px;cursor:pointer;transition:all .2s;border:1px solid transparent}.services-list .service-item:hover{background:#ffffff0f}.services-list .service-item.active{background:#00d4aa1a;border-color:#00d4aa26}.services-list .service-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.services-list .service-g1{background:linear-gradient(135deg,#00d4aa,#08c)}.services-list .service-g2{background:linear-gradient(135deg,#667eea,#764ba2)}.services-list .service-g3{background:linear-gradient(135deg,#f093fb,#f5576c)}.services-list .service-g7{background:linear-gradient(135deg,#fccb90,#d57eeb)}.services-list .service-info h4{font-size:13px;font-weight:600;margin-bottom:2px;color:#f0f0f5}.services-list .service-info{flex:1;min-width:0}.services-list .service-info p{font-size:11px;color:#f0f0f559;font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.services-list .status-active,.services-list .status-idle,.services-list .status-dim{font-size:10px;padding:3px 8px;border-radius:10px;font-weight:500;flex-shrink:0}.services-list .status-active{color:#00d4aa;background:#00d4aa26}.services-list .status-idle{color:#f0f0f580;background:#ffffff0f}.services-list .status-dim{color:#f0f0f54d;background:#ffffff0a}.services-empty .empty-msg{color:#f0f0f559;font-size:12px;text-align:center;padding:24px 12px}.stats-grid{padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:12px;height:100%;overflow:auto}.stats-grid .stat-card{padding:14px;background:#ffffff08;border-radius:8px;border:1px solid rgba(255,255,255,.04)}.stats-grid .stat-value{font-size:22px;font-weight:700;color:#00d4aa;margin-bottom:4px}.stats-grid .stat-label{font-size:10px;color:#f0f0f559;text-transform:uppercase;letter-spacing:1px;font-weight:500}.stats-grid .stat-bar{margin-top:8px;height:3px;background:#ffffff0f;border-radius:2px;overflow:hidden}.stats-grid .stat-bar-fill{height:100%;border-radius:2px;background:linear-gradient(90deg,#00d4aa,#00a5ff);transform-origin:left;transform:scaleX(0);animation:statBarFill 1.5s .8s cubic-bezier(.16,1,.3,1) forwards}@keyframes statBarFill{to{transform:scaleX(1)}}.mac-notification{position:fixed;top:52px;right:16px;width:320px;background:#1e1e32d9;backdrop-filter:blur(30px) saturate(1.5);-webkit-backdrop-filter:blur(30px) saturate(1.5);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:14px 16px;display:flex;align-items:flex-start;gap:12px;z-index:2000;box-shadow:0 12px 40px #0006;animation:notifSlide .4s .8s cubic-bezier(.16,1,.3,1) both;font-family:Outfit,Noto Sans KR,-apple-system,sans-serif}@keyframes notifSlide{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.mac-notification .notif-icon{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#00d4aa,#08c);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.mac-notification .notif-content{flex:1;min-width:0}.mac-notification .notif-content h5{font-size:13px;font-weight:600;margin:0 0 3px;color:#f0f0f5}.mac-notification .notif-content p{font-size:12px;color:#f0f0f599;font-weight:300;line-height:1.4;margin:0}.mac-notification .notif-time{font-size:10px;color:#f0f0f559;flex-shrink:0}.mac-notification .notif-close{position:absolute;top:6px;right:8px;width:18px;height:18px;border-radius:50%;border:none;background:#ffffff14;color:#f0f0f5b3;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;opacity:0;transition:opacity .15s,background .15s}.mac-notification:hover .notif-close{opacity:1}.mac-notification .notif-close:hover{background:#ff5f57cc;color:#fff}.intro-screen{position:fixed;inset:0;background:#000;display:flex;align-items:center;justify-content:center;z-index:99999;transition:opacity .6s ease}.intro-screen--fading{opacity:0;pointer-events:none}.intro-letters{display:flex;z-index:10;position:relative;align-items:flex-end;gap:clamp(-5px,-.5vw,-8px)}.intro-lt{opacity:0;position:relative;display:block}.intro-lt svg{display:block;height:100%;width:auto}.intro-lt-fe{height:clamp(140px,28vw,380px);aspect-ratio:172/190;opacity:1;position:relative}.intro-lt-fe svg{position:absolute;inset:0;width:100%;height:100%;fill:#00d4aa}.intro-lt-fe .intro-f-svg{opacity:0;animation:introFIn .6s .3s forwards}.intro-lt-fe .intro-e-svg{opacity:0;animation:introEDrop 1.1s 1.1s forwards}.intro-lt-d{height:clamp(120px,24vw,320px);animation:introLtCascade .6s 2.1s forwards}.intro-lt-d svg{fill:#4facfe}.intro-lt-a{height:clamp(85px,17vw,230px);animation:introLtCascade .6s 2.4s forwards}.intro-lt-a svg{fill:#764ba2}.intro-lt:after{content:"";position:absolute;bottom:calc(-1*clamp(80px,10vw,130px));left:0;right:0;height:3px;transform:scaleX(0);animation:introUnderline .4s forwards}.intro-lt-fe:after{background:#00d4aa;animation-delay:1.1s}.intro-lt-d:after{background:#4facfe;animation-delay:2.1s}.intro-lt-a:after{background:#764ba2;animation-delay:2.4s}@keyframes introLtCascade{0%{opacity:0;transform:translateY(-80px) scaleY(2)}60%{transform:translateY(5px) scaleY(.95)}to{opacity:1;transform:none}}@keyframes introFIn{to{opacity:1}}@keyframes introEDrop{0%{opacity:0;transform:translate(20px,-320px) scale(1.2)}55%{opacity:1;transform:translateY(6px) scale(.97);filter:drop-shadow(0 0 26px rgba(0,212,170,.8))}80%{transform:translateY(-2px) scale(1.01);filter:drop-shadow(0 0 14px rgba(0,212,170,.45))}to{opacity:1;transform:none;filter:drop-shadow(0 0 4px rgba(0,212,170,.2))}}@keyframes introUnderline{to{transform:scaleX(1)}}.intro-trail{position:absolute;width:100%;height:3px;background:linear-gradient(90deg,#00d4aa,#4facfe,#764ba2);bottom:calc(50% - clamp(80px,15vw,200px));opacity:0;animation:introTrailIn .5s 3s forwards,introTrailOut .5s 3.5s forwards;box-shadow:0 0 10px #00d4aa66}@keyframes introTrailIn{to{opacity:1}}@keyframes introTrailOut{to{opacity:0}}.intro-sub{position:absolute;bottom:calc(50% - clamp(125px,18vw,245px));font-size:clamp(20px,2.6vw,34px);letter-spacing:clamp(8px,1.2vw,16px);color:#00d4aa8c;text-transform:uppercase;opacity:0;z-index:10;animation:introSubIn 1s 3.5s forwards;font-family:sans-serif;font-weight:500}@keyframes introSubIn{to{opacity:1}}
