*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body{font-family:var(--font-primary, "Inter", "Noto Sans KR", sans-serif);background-color:var(--app-bg, #0f0f14);color:var(--app-text, #e2e2e8);line-height:1.6;min-height:100vh;overflow-x:hidden}:root{--app-bg: #0f0f14;--app-bg-secondary: #1a1a24;--app-bg-tertiary: #24243a;--app-text: #e2e2e8;--app-text-secondary: #9e9eb8;--app-text-muted: #6b6b80;--app-accent: rgba(255, 255, 255, .1);--app-accent-hover: rgba(255, 255, 255, .16);--app-accent-subtle: rgba(255, 255, 255, .06);--app-border: rgba(255, 255, 255, .08);--app-border-hover: rgba(255, 255, 255, .15);--app-success: #34d399;--app-warning: #fbbf24;--app-error: #f87171;--app-info: #60a5fa;--sidebar-width: 340px;--toolbar-height: 56px;--font-primary: "Inter", "Noto Sans KR", sans-serif;--font-title: "Inter", "Noto Sans KR", sans-serif;--font-mono: "JetBrains Mono", "Consolas", monospace;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--transition-fast: all .15s ease-out;--transition-smooth: all .25s ease-in-out;--transition-spring: all .4s cubic-bezier(.34, 1.56, .64, 1)}h1,h2,h3,h4,h5,h6{font-family:var(--font-title);font-weight:700;line-height:1.2}code,pre{font-family:var(--font-mono)}a{color:var(--app-accent);text-decoration:none;transition:var(--transition-fast)}a:hover{color:var(--app-accent-hover)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--app-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--app-border-hover)}#app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-layout{display:flex;flex:1;overflow:hidden}.app-sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--app-bg-secondary);border-right:1px solid var(--app-border);display:flex;flex-direction:column;overflow-y:auto;transition:var(--transition-smooth)}.app-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.app-toolbar{height:var(--toolbar-height);min-height:var(--toolbar-height);background:var(--app-bg-secondary);border-bottom:1px solid var(--app-border);display:flex;align-items:center;padding:0 20px;gap:12px}.app-content{flex:1;overflow:auto;position:relative}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:600;font-family:inherit;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--app-accent);color:#fff;border-color:var(--app-border-hover);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.btn-primary:hover:not(:disabled){background:var(--app-accent-hover);border-color:#ffffff4d;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.btn-secondary{background:transparent;color:var(--app-text-secondary);border-color:var(--app-border)}.btn-secondary:hover:not(:disabled){background:var(--app-accent-subtle);color:var(--app-text);border-color:var(--app-border-hover)}.btn-ghost{background:transparent;color:var(--app-text-secondary);border:none;padding:8px}.btn-ghost:hover:not(:disabled){background:var(--app-accent-subtle);color:var(--app-text)}.btn-sm{padding:6px 14px;font-size:12px}.btn-icon{padding:8px;width:36px;height:36px}.db-btn-primary{background:var(--theme-button-primary-bg, var(--app-accent));color:var(--theme-button-primary-text, #ffffff);border:1px solid var(--theme-button-primary-border, transparent);transition:var(--transition-fast)}.db-btn-primary:hover{background:var(--theme-button-primary-hover, var(--app-accent-hover))}.db-btn-secondary{background:var(--theme-button-secondary-bg, transparent);color:var(--theme-button-secondary-text, var(--theme-text-primary, #333));border:1px solid var(--theme-button-secondary-border, var(--theme-border-medium, #ccc));transition:var(--transition-fast)}.db-btn-secondary:hover{background:var(--theme-button-secondary-hover, var(--theme-border-subtle, rgba(0, 0, 0, .05)))}.db-btn-danger{background:var(--theme-badge-error-bg);color:var(--theme-badge-error-text);border:1px solid var(--theme-badge-error-text);transition:var(--transition-fast)}.db-btn-danger:hover{background:var(--theme-badge-error-text);color:var(--theme-badge-error-bg)}.input{width:100%;padding:10px 14px;font-size:14px;font-family:inherit;color:var(--app-text);background:var(--app-bg-tertiary);border:1px solid var(--app-border);border-radius:var(--radius-md);outline:none;transition:var(--transition-fast)}.input:focus{border-color:var(--app-accent);box-shadow:0 0 0 3px var(--app-accent-subtle)}.input::placeholder{color:var(--app-text-muted)}textarea.input{resize:vertical;min-height:100px;line-height:1.5}.lang-toggle{display:flex;align-items:center;background:var(--app-bg-tertiary);border:1px solid var(--app-border);border-radius:var(--radius-full);padding:2px;gap:0}.lang-toggle-btn{padding:4px 12px;font-size:12px;font-weight:600;font-family:inherit;color:var(--app-text-muted);background:transparent;border:none;border-radius:var(--radius-full);cursor:pointer;transition:var(--transition-fast)}.lang-toggle-btn.active{background:var(--app-accent);color:#fff;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.toast-container{position:fixed;bottom:24px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:8px}.toast{padding:12px 20px;font-size:13px;color:#fff;border-radius:var(--radius-md);box-shadow:0 8px 24px #0000004d;animation:toast-in .3s ease-out;max-width:360px}.toast-success{background:var(--app-success);color:#0f0f14}.toast-error{background:var(--app-error)}.toast-warning{background:var(--app-warning);color:#0f0f14}.toast-info{background:var(--app-info);color:#0f0f14}@keyframes toast-in{0%{opacity:0;transform:translateY(12px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-12px) scale(.95)}}.spinner{width:24px;height:24px;border:3px solid var(--app-border);border-top-color:var(--app-accent);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fade-in .3s ease-out}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.preview-frame{background:#fff;border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 4px 24px #0003;transition:var(--transition-smooth)}.preview-frame.device-desktop{max-width:100%}.preview-frame.device-tablet{max-width:768px;margin:20px auto}.preview-frame.device-mobile{max-width:390px;margin:20px auto}.code-block{background:#1e1e2e;color:#cdd6f4;padding:20px;border-radius:var(--radius-md);font-family:var(--font-mono);font-size:13px;line-height:1.6;overflow-x:auto;white-space:pre;-moz-tab-size:2;tab-size:2}.api-key-screen{display:flex;align-items:center;justify-content:center;height:100vh;background:url(/login.webp) center/cover no-repeat;position:relative;z-index:1}.api-key-screen:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#0f0f1480;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);z-index:-1}.api-key-card{max-width:480px;width:100%;padding:48px;text-align:center;background:#14141e80;backdrop-filter:blur(32px);-webkit-backdrop-filter:blur(32px);border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-xl);box-shadow:0 32px 64px #0009,inset 0 1px #ffffff1a}.api-key-card h1{font-size:28px;color:var(--app-text);margin-bottom:8px}.api-key-card p{color:var(--app-text-secondary);margin-bottom:24px;line-height:1.6;white-space:pre-line}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.text-center{text-align:center}.text-sm{font-size:13px}.text-xs{font-size:11px}.text-muted{color:var(--app-text-muted)}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mb-2{margin-bottom:8px}.mb-4{margin-bottom:16px}.gap-2{gap:8px}.gap-3{gap:12px}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.flex-1{flex:1}.w-full{width:100%}.hidden{display:none}
