@import url("https://fonts.googleapis.com/css2?family=Zalando+Sans+SemiExpanded:wght@700&display=swap");@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Thin.woff2) format("woff2");font-weight:100;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-ExtraLight.woff2) format("woff2");font-weight:200;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Light.woff2) format("woff2");font-weight:300;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Medium.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-SemiBold.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Bold.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-ExtraBold.woff2) format("woff2");font-weight:800;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Black.woff2) format("woff2");font-weight:900;font-display:swap}:root{--bg:#111;--surface:#1a1a1a;--surface2:#222;--border:#2e2e2e;--accent:#eefd41;--accent2:#b8c930;--text:#e8e4dc;--muted:#6b6760;--danger:#e05252;--success:#52b788}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Pretendard,sans-serif;min-height:100vh;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.035'/%3E%3C/svg%3E");pointer-events:none;z-index:9999;opacity:.4}header{padding:2rem 3rem;border-bottom:1px solid var(--border);display:flex;align-items:baseline;gap:1rem}header h1{font-size:1.4rem;font-weight:700;letter-spacing:.04em;color:var(--accent)}header h1,header span{font-family:Pretendard,sans-serif}header span{font-weight:300;font-size:.78rem;color:var(--muted);letter-spacing:.2em}.container{max-width:1100px;margin:0 auto;padding:3rem 2rem;display:grid;grid-gap:2.5rem;gap:2.5rem}.api-row{display:flex;gap:1rem;align-items:center}.api-row label{font-weight:500;font-size:.75rem;letter-spacing:.12em;color:var(--muted);white-space:nowrap}.api-row input,.api-row label{font-family:Pretendard,sans-serif}.api-row input{flex:1 1;background:var(--surface);border:1px solid var(--border);color:var(--text);padding:.7rem 1rem;font-size:.85rem;outline:none;transition:border-color .2s}.api-row input:focus{border-color:var(--accent2)}.main-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:2rem;gap:2rem;align-items:start}.upload-zone{border:1px dashed var(--border);aspect-ratio:3/4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;cursor:pointer;transition:border-color .2s,background .2s;position:relative;overflow:hidden;background:var(--surface)}.upload-zone:hover{border-color:var(--accent2);background:var(--surface2)}.upload-zone:hover .upload-hint{color:var(--accent)}.upload-zone:hover .upload-icon{background:var(--accent);color:#111}.upload-zone.dragover{border-color:var(--accent);background:#1e2000}.upload-zone input{position:absolute;inset:0;opacity:0;cursor:pointer}.upload-zone img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.upload-zone .upload-hint{font-family:Pretendard,sans-serif;font-weight:300;font-size:.78rem;letter-spacing:.08em;color:var(--muted);text-align:center;line-height:2;z-index:1}.upload-zone .upload-icon{z-index:1;width:3rem;height:3rem;background:var(--border);border-radius:50%;font-size:1.8rem;color:var(--surface);font-weight:700;line-height:1;padding-bottom:.05rem;transition:background .2s,color .2s}.upload-overlay,.upload-zone .upload-icon{display:flex;align-items:center;justify-content:center}.upload-overlay{position:absolute;inset:0;background:rgba(10,10,11,.6);z-index:2}.upload-overlay span{font-family:Pretendard,sans-serif;font-weight:500;font-size:.75rem;letter-spacing:.15em;color:var(--accent);border:1px solid var(--accent2);padding:.4rem .8rem}.expr-panel{display:flex;flex-direction:column;gap:1.2rem}.expr-section-label{font-family:Pretendard,sans-serif;font-weight:500;font-size:.76rem;letter-spacing:.18em;color:var(--muted);border-bottom:1px solid var(--border);padding-bottom:.5rem}.expr-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:.5rem;gap:.5rem}.expr-btn{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:.65rem .8rem;font-family:Pretendard,sans-serif;font-weight:400;font-size:.9rem;cursor:pointer;text-align:left;transition:all .15s;line-height:1.4}.expr-btn.selected,.expr-btn:hover{background:var(--accent);border-color:var(--accent);color:#111}.expr-btn.selected{font-weight:600}.expr-btn .en{font-weight:300;font-size:.72rem;color:inherit;opacity:.7;display:block;margin-top:.2rem}.expr-btn .en,.generate-btn{font-family:Pretendard,sans-serif}.generate-btn{width:100%;padding:.9rem 1rem;background:transparent;border:1px solid var(--accent);color:var(--accent);font-weight:600;font-size:.92rem;letter-spacing:.12em;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.generate-btn:hover:not(:disabled){background:var(--accent);color:#111}.generate-btn:disabled{border-color:var(--border);color:var(--muted);cursor:not-allowed}.status-bar{font-family:Pretendard,sans-serif;font-weight:400;font-size:.78rem;font-size:.84rem;letter-spacing:.05em;padding:.9rem 1rem;border:1px solid var(--border);background:var(--surface);display:none;margin-top:.6rem}.status-bar.visible{display:block}.status-bar.error{border-color:var(--danger);color:var(--danger)}.status-bar.success{border-color:var(--success);color:var(--success)}.progress-wrap{display:none;margin-top:.3rem}.progress-wrap.visible{display:block}.progress-track{background:var(--surface2);border-radius:2px;overflow:hidden;height:4px;position:relative}.progress-bar{height:100%;width:0;background:var(--accent);transition:width .5s ease;border-radius:2px}.progress-bar.indeterminate{width:40%;animation:indeterminate 1.4s ease-in-out infinite}@keyframes indeterminate{0%{transform:translateX(-100%)}to{transform:translateX(300%)}}.progress-info{display:flex;justify-content:space-between;align-items:center;margin-top:.3rem}.progress-pct{font-family:Pretendard,sans-serif;font-weight:700;font-size:1.1rem;color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:.02em;transition:all .3s}.progress-pct.indeterminate-pct{color:var(--muted);font-size:.8rem}.progress-steps{display:none;margin-top:.35rem;font-size:.76rem;letter-spacing:.06em;color:var(--muted);font-family:Pretendard,sans-serif}.progress-steps.visible{display:flex;gap:.4rem;align-items:center}.progress-steps .step{opacity:.35}.progress-steps .step.done{opacity:.6}.progress-steps .step.active{opacity:1;color:var(--accent)}.progress-steps .sep{opacity:.25}.elapsed{margin-left:auto;opacity:.5;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:.76rem}.results{display:none;gap:1.5rem;margin-top:1.2rem}.results.visible{display:grid;grid-template-columns:1fr 1fr}.result-card{background:var(--surface);border:1px solid var(--border)}.result-card img{width:100%;display:block}.result-label{padding:.6rem .8rem;letter-spacing:.12em;color:var(--muted);border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.download-btn,.result-label{font-family:Pretendard,sans-serif;font-weight:500;font-size:.78rem}.download-btn{background:none;border:none;color:var(--accent2);cursor:pointer;letter-spacing:.08em;transition:color .15s}.download-btn:hover{color:var(--accent)}@keyframes spin{to{transform:rotate(1turn)}}.spinner{display:inline-block;width:10px;height:10px;border:1px solid var(--muted);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin-right:.5rem;vertical-align:middle}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border)}.tab-btn{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--muted);font-family:Pretendard,sans-serif;font-weight:500;font-size:.92rem;letter-spacing:.08em;padding:.7rem 1.4rem;cursor:pointer;transition:all .15s;margin-bottom:-1px}.tab-btn:hover{color:var(--text)}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:700}.tab-panel{display:none}.tab-panel.active{display:block}.angle-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:.5rem;gap:.5rem}.angle-btn{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:.7rem .5rem;font-family:Pretendard,sans-serif;font-weight:400;font-size:.9rem;cursor:pointer;text-align:center;transition:all .15s;line-height:1.4}.angle-btn.selected,.angle-btn:hover{background:var(--accent);border-color:var(--accent);color:#111}.angle-btn.selected{font-weight:600}.angle-btn .en{font-weight:300;font-size:.63rem;opacity:.7;display:block;margin-top:.2rem}.angle-btn .en,.coming-soon{font-family:Pretendard,sans-serif}.coming-soon{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.8rem;height:100%;min-height:200px;color:var(--muted);border:1px dashed var(--border)}.coming-soon span{font-size:.75rem;letter-spacing:.15em}.upload-zone-mirror{aspect-ratio:3/4;background:var(--surface);border:1px dashed var(--border);position:relative;overflow:hidden;cursor:pointer;transition:border-color .2s,background .2s;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem}.upload-zone-mirror:hover{border-color:var(--accent2);background:var(--surface2)}.upload-zone-mirror:hover .upload-hint{color:var(--accent)}.upload-zone-mirror:hover .upload-icon{background:var(--accent);color:#111}.upload-zone-mirror.dragover{border-color:var(--accent);background:#1e2000}.upload-zone-mirror img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.upload-zone-mirror .upload-hint{font-family:Pretendard,sans-serif;font-weight:300;font-size:.78rem;letter-spacing:.08em;color:var(--muted);text-align:center;line-height:2;z-index:1}.upload-zone-mirror .upload-icon{z-index:1;width:3rem;height:3rem;background:var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.8rem;color:var(--surface);font-weight:700;line-height:1;padding-bottom:.05rem;transition:background .2s,color .2s}@media (max-width:700px){.main-grid,.results.visible{grid-template-columns:1fr}header{padding:1.5rem}.container{padding:1.5rem 1rem}}