@import "https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500&display=swap";
:root{--bg-primary:#0a0a0f;--bg-secondary:#111118;--bg-tertiary:#1a1a24;--bg-card:#15151f;--bg-card-hover:#1c1c28;--bg-glass:#141423d9;--border:#ffffff0f;--border-active:#6366f166;--text-primary:#f0f0f5;--text-secondary:#a0a0b5;--text-muted:#6b6b80;--accent:#6366f1;--accent-light:#818cf8;--accent-dark:#4f46e5;--accent-gradient:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7);--success:#22c55e;--warning:#f59e0b;--danger:#ef4444;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 4px 20px #0006;--shadow-lg:0 8px 40px #00000080;--shadow-glow:0 0 30px #6366f126}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Noto Sans KR,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.7}.app-header{z-index:100;background:var(--bg-glass);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);padding:0 20px;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;max-width:1200px;height:64px;margin:0 auto;display:flex}.header-brand{align-items:center;gap:12px;display:flex}.brand-icon{filter:drop-shadow(0 0 10px #6366f166);font-size:28px}.brand-title{background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:18px;font-weight:700}.brand-subtitle{color:var(--text-muted);font-size:11px;font-weight:400}.header-actions{gap:8px;display:flex}.btn-ghost{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;background:0 0;align-items:center;gap:6px;padding:8px 14px;font-family:inherit;font-size:13px;transition:all .2s;display:flex}.btn-ghost:hover{background:var(--bg-tertiary);border-color:var(--border-active);color:var(--text-primary)}.key-icon{font-size:14px}.main-container{flex-direction:column;gap:32px;max-width:1200px;margin:0 auto;padding:24px 20px 60px;display:flex}.section-header{margin-bottom:20px}.section-title{align-items:center;gap:8px;font-size:20px;font-weight:700;display:flex}.section-icon{font-size:22px}.section-desc{color:var(--text-muted);margin-top:4px;font-size:13px}.pattern-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;display:grid}.pattern-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;text-align:left;color:var(--text-primary);padding:20px;font-family:inherit;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.pattern-card:before{content:"";background:var(--accent-gradient);opacity:0;height:3px;transition:opacity .3s;position:absolute;top:0;left:0;right:0}.pattern-card:hover{background:var(--bg-card-hover);box-shadow:var(--shadow-lg),var(--shadow-glow);border-color:var(--border-active);transform:translateY(-3px)}.pattern-card:hover:before,.pattern-card.active:before{opacity:1}.pattern-card.active{border-color:var(--accent);box-shadow:var(--shadow-lg),0 0 40px #6366f133;background:var(--bg-card-hover)}.pattern-card-icon{filter:drop-shadow(0 0 8px #ffffff1a);margin-bottom:10px;font-size:36px}.pattern-card-title{margin-bottom:6px;font-size:17px;font-weight:700}.pattern-card-desc{color:var(--text-secondary);margin-bottom:12px;font-size:13px;line-height:1.6}.pattern-structure{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.structure-step{color:var(--text-muted);padding:2px 0;font-size:11px}.structure-more{color:var(--accent-light);font-size:11px;font-weight:500}.pattern-keywords{flex-wrap:wrap;gap:6px;display:flex}.keyword-tag{color:var(--accent-light);background:#6366f11a;border:1px solid #6366f133;border-radius:20px;padding:3px 8px;font-size:11px}.generator-section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);padding:28px}.mode-toggle{background:var(--bg-secondary);border-radius:var(--radius-md);gap:4px;margin-bottom:20px;padding:4px;display:flex}.mode-btn{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex:1;padding:10px 16px;font-family:inherit;font-size:14px;font-weight:500;transition:all .25s}.mode-btn:hover:not(.active):not(:disabled){color:var(--text-secondary);background:#ffffff08}.mode-btn.active{background:var(--accent-gradient);color:#fff;box-shadow:var(--shadow-sm)}.mode-btn:disabled{opacity:.5;cursor:not-allowed}.auto-mode-info{border-radius:var(--radius-md);background:#6366f10f;border:1px solid #6366f126;align-items:flex-start;gap:14px;margin-bottom:4px;padding:16px;display:flex}.auto-mode-icon{flex-shrink:0;font-size:28px}.auto-mode-title{color:var(--text-primary);margin-bottom:4px;font-size:14px;font-weight:600}.auto-mode-desc{color:var(--text-secondary);font-size:13px;line-height:1.6}.generator-form{flex-direction:column;gap:20px;display:flex}.form-group{flex-direction:column;gap:8px;display:flex}.form-label{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:10px;font-size:14px;font-weight:600;display:flex}.pattern-badge{background:var(--accent-gradient);color:#fff;border-radius:20px;padding:3px 10px;font-size:11px;font-weight:500}.form-textarea{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);resize:vertical;padding:14px 16px;font-family:inherit;font-size:15px;line-height:1.6;transition:border-color .2s}.form-textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #6366f11a}.form-textarea::placeholder{color:var(--text-muted)}.slider-container{padding:0 4px}.form-slider{appearance:none;background:var(--bg-tertiary);cursor:pointer;border-radius:3px;outline:none;width:100%;height:6px}.form-slider::-webkit-slider-thumb{appearance:none;background:var(--accent-gradient);cursor:pointer;border-radius:50%;width:22px;height:22px;transition:transform .2s;box-shadow:0 0 10px #6366f166}.form-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.slider-labels{color:var(--text-muted);justify-content:space-between;margin-top:6px;font-size:11px;display:flex}.btn-generate{background:var(--accent-gradient);border-radius:var(--radius-md);color:#fff;cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;padding:16px 32px;font-family:inherit;font-size:16px;font-weight:700;transition:all .3s;display:flex}.btn-generate:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 30px #6366f166}.btn-generate:disabled{opacity:.5;cursor:not-allowed}.generating-text{align-items:center;gap:8px;display:flex}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.progress-section{margin-top:20px}.progress-bar-container{background:var(--bg-tertiary);border-radius:3px;width:100%;height:6px;overflow:hidden}.progress-bar-fill{background:var(--accent-gradient);border-radius:3px;height:100%;transition:width .5s}.progress-message{color:var(--text-secondary);margin-top:8px;font-size:13px}.progress-message.error{color:var(--danger)}.live-preview{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);margin-top:24px;overflow:hidden}.preview-header{border-bottom:1px solid var(--border);background:var(--bg-tertiary);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.preview-header h3{align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.preview-dot{background:var(--success);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;display:inline-block}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.char-counter{color:var(--accent-light);font-family:JetBrains Mono,monospace;font-size:13px;font-weight:500}.preview-content{white-space:pre-wrap;word-break:keep-all;max-height:500px;color:var(--text-secondary);padding:20px;font-size:14px;line-height:1.9;overflow-y:auto}.preview-content::-webkit-scrollbar{width:6px}.preview-content::-webkit-scrollbar-track{background:0 0}.preview-content::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:3px}.preview-actions{border-top:1px solid var(--border);background:var(--bg-tertiary);gap:8px;padding:14px 20px;display:flex}.btn-action{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;align-items:center;gap:6px;padding:8px 16px;font-family:inherit;font-size:13px;transition:all .2s;display:flex}.btn-action:hover{background:var(--bg-card-hover);border-color:var(--border-active)}.history-list{flex-direction:column;gap:12px;display:flex}.history-item{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;transition:all .2s}.history-item:hover{border-color:var(--border-active);box-shadow:var(--shadow-sm)}.history-item-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.history-item-meta{align-items:center;gap:10px;display:flex}.history-pattern-badge{color:var(--accent-light);background:#6366f11a;border:1px solid #6366f133;border-radius:20px;padding:3px 10px;font-size:11px}.history-chars{color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:12px}.history-date{color:var(--text-muted);font-size:12px}.history-title{margin-bottom:6px;font-size:15px;font-weight:600}.history-preview{color:var(--text-muted);margin-bottom:12px;font-size:13px;line-height:1.7}.history-actions{flex-wrap:wrap;gap:6px;display:flex}.btn-sm{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;padding:5px 12px;font-family:inherit;font-size:12px;transition:all .2s}.btn-sm:hover{background:var(--bg-card-hover);border-color:var(--border-active);color:var(--text-primary)}.btn-sm.btn-danger:hover{color:var(--danger);background:#ef44441a;border-color:#ef44444d}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);width:100%;max-width:460px;box-shadow:var(--shadow-lg);padding:36px}.modal-icon{text-align:center;margin-bottom:16px;font-size:42px}.modal-content h2{text-align:center;margin-bottom:8px;font-size:22px;font-weight:700}.modal-desc{text-align:center;color:var(--text-secondary);margin-bottom:24px;font-size:14px}.input-group{margin-bottom:20px}.api-input{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);padding:14px 16px;font-family:JetBrains Mono,monospace;font-size:14px;transition:border-color .2s}.api-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #6366f11a}.api-input::placeholder{color:var(--text-muted)}.btn-primary{background:var(--accent-gradient);border-radius:var(--radius-md);color:#fff;cursor:pointer;border:none;width:100%;padding:14px;font-family:inherit;font-size:15px;font-weight:700;transition:all .3s}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 30px #6366f166}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.modal-note{text-align:center;color:var(--text-muted);margin-top:16px;font-size:11px}.modal-buttons{flex-direction:column;gap:10px;display:flex}.btn-skip{border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-muted);cursor:pointer;background:0 0;padding:12px;font-family:inherit;font-size:14px;transition:all .2s}.btn-skip:hover{background:var(--bg-tertiary);border-color:var(--border-active);color:var(--text-secondary)}@media (max-width:768px){.header-inner{height:56px}.brand-title{font-size:15px}.brand-subtitle,.btn-text{display:none}.main-container{gap:24px;padding:16px 12px 40px}.pattern-grid{grid-template-columns:1fr 1fr;gap:10px}.pattern-card{padding:14px}.pattern-card-icon{font-size:28px}.pattern-card-title{font-size:14px}.pattern-card-desc{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;display:-webkit-box;overflow:hidden}.pattern-structure{display:none}.generator-section{border-radius:var(--radius-lg);padding:18px}.section-title{font-size:17px}.form-textarea{font-size:14px}.btn-generate{padding:14px 24px;font-size:15px}.preview-content{max-height:400px;padding:16px;font-size:13px}.history-actions{flex-wrap:wrap}}@media (max-width:480px){.pattern-grid{grid-template-columns:1fr}.pattern-card-desc{-webkit-line-clamp:3}.pattern-structure{display:flex}.header-inner{height:52px}.brand-icon{font-size:24px}}.disclaimer-overlay{z-index:9999;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.disclaimer-backdrop{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#000000d9;position:absolute;inset:0}.disclaimer-modal{background:#0c0c0e;border:1px solid #ef44444d;border-radius:16px;width:100%;max-width:520px;animation:.3s ease-out disclaimerSlideIn;position:relative;overflow:hidden;box-shadow:0 25px 50px #ef44441a}@keyframes disclaimerSlideIn{0%{opacity:0;transform:scale(.92)translateY(16px)}to{opacity:1;transform:scale(1)translateY(0)}}.disclaimer-header{background:linear-gradient(#ef444414,#0000);padding:24px 24px 16px}.disclaimer-header-row{align-items:center;gap:12px;display:flex}.disclaimer-icon-box{background:linear-gradient(135deg,#ef4444,#ea580c);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex;box-shadow:0 4px 12px #ef44444d}.disclaimer-title{color:#fff;margin:0;font-size:18px;font-weight:700}.disclaimer-subtitle{color:#f87171cc;margin:2px 0 0;font-size:12px}.disclaimer-scroll{scrollbar-width:thin;scrollbar-color:#ef4444 #1a1a1a;max-height:50vh;padding:0 24px;overflow-y:auto}.disclaimer-scroll::-webkit-scrollbar{width:6px}.disclaimer-scroll::-webkit-scrollbar-track{background:#1a1a1a}.disclaimer-scroll::-webkit-scrollbar-thumb{background:#ef4444;border-radius:3px}.disclaimer-sections{flex-direction:column;gap:18px;padding-bottom:16px;display:flex}.disclaimer-section-item{flex-direction:column;gap:8px;display:flex}.disclaimer-section-header{align-items:center;gap:8px;display:flex}.disclaimer-section-header h3{margin:0;font-size:13px;font-weight:700}.disclaimer-section-body{color:#d4d4d8;padding-left:24px;font-size:12px;line-height:1.7}.disclaimer-section-body p{margin:0}.disclaimer-list{flex-direction:column;gap:5px;margin:8px 0 0;padding:0;list-style:none;display:flex}.disclaimer-list li{align-items:flex-start;gap:8px;font-size:12px;display:flex}.disclaimer-scroll-hint{background:linear-gradient(#0000,#0c0c0e);padding:8px 0 4px;position:sticky;bottom:0}.disclaimer-scroll-hint p{text-align:center;color:#f8717180;margin:0;font-size:10px;animation:2s infinite pulse}.disclaimer-footer{border-top:1px solid #3f3f4680;flex-direction:column;gap:16px;padding:20px 24px;display:flex}.disclaimer-checkbox-label{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:12px;transition:opacity .2s;display:flex}.disclaimer-checkbox-label.disabled{opacity:.3;pointer-events:none}.disclaimer-checkbox-label span{color:#d4d4d8;font-size:12px;line-height:1.6}.disclaimer-checkbox{accent-color:#ef4444;cursor:pointer;flex-shrink:0;width:16px;height:16px;margin-top:2px}.disclaimer-accept-btn{cursor:pointer;color:#52525b;background:#27272a;border:none;border-radius:12px;width:100%;padding:14px;font-family:inherit;font-size:14px;font-weight:700;transition:all .2s}.disclaimer-accept-btn:disabled{cursor:not-allowed}.disclaimer-accept-btn.active{color:#fff;background:linear-gradient(135deg,#ef4444,#ea580c);box-shadow:0 4px 12px #ef444433}.disclaimer-accept-btn.active:hover{background:linear-gradient(135deg,#dc2626,#c2410c)}.disclaimer-accept-btn.active:active{transform:scale(.98)}
.cross-app-nav{z-index:9999;position:fixed;top:0;left:0}.cross-nav-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(135deg,#8b5cf6e6,#7c3aede6);border:1px solid #8b5cf64d;border-radius:0 0 12px;justify-content:center;align-items:center;width:44px;height:44px;transition:all .2s;display:flex}.cross-nav-btn:hover{background:linear-gradient(135deg,#7c3aed,#6d28d9);transform:scale(1.05)}.cross-nav-hamburger{font-size:20px;line-height:1}.cross-nav-dropdown{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0f0f14fa;border:1px solid #ffffff1a;border-radius:0 12px 12px 0;width:300px;max-height:80vh;animation:.2s crossNavSlideDown;position:absolute;top:100%;left:0;overflow-y:auto;box-shadow:0 20px 60px #00000080}.cross-nav-dropdown::-webkit-scrollbar{width:4px}.cross-nav-dropdown::-webkit-scrollbar-track{background:0 0}.cross-nav-dropdown::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}@keyframes crossNavSlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.cross-nav-header{color:#fff;background:linear-gradient(135deg,#8b5cf626,#7c3aed0d);border-bottom:1px solid #ffffff14;align-items:center;gap:8px;padding:14px 16px;font-size:14px;font-weight:700;display:flex}.cross-nav-group{border-bottom:1px solid #ffffff0f;padding:6px 0}.cross-nav-group:last-child{border-bottom:none}.cross-nav-group-title{color:#ffffff59;text-transform:uppercase;letter-spacing:1px;padding:8px 16px 4px;font-size:10px;font-weight:700}.cross-nav-item{text-align:left;cursor:pointer;color:#ffffffbf;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:9px 16px;transition:all .15s;display:flex}.cross-nav-item:hover{color:#fff;background:#8b5cf61f}.cross-nav-item.active{color:#fff;background:#8b5cf633;border-left:2px solid #8b5cf6}.cross-nav-icon{text-align:center;flex-shrink:0;width:22px;font-size:16px}.cross-nav-name{flex:1;font-size:13px;font-weight:500}.cross-nav-badge{letter-spacing:.3px;border-radius:4px;flex-shrink:0;padding:2px 6px;font-size:9px;font-weight:700}.cross-nav-badge.free{color:#34d399;background:#10b98133;border:1px solid #10b9814d}.cross-nav-badge.paid{color:#fb923c;background:#f9731626;border:1px solid #f9731640}@media (max-width:640px){.cross-nav-dropdown{width:calc(100vw - 16px);max-width:320px}.cross-nav-btn{width:40px;height:40px}.cross-nav-hamburger{font-size:18px}}
