:root{--canvas:#ffffff;--canvas-soft:#f6f7f9;--surface:#ffffff;--surface-raised:#fbfcfe;--ink:#17181c;--ink-muted:#6e7480;--ink-faint:#9aa1ad;--line-soft:#edf0f4;--hairline:#dfe4ea;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-soft:#eff5ff;--primary-ring:#93b4ff;--ai:#6d5dfc;--ai-soft:#f2f0ff;--starlight:#c7ccd8;--radius:10px}@font-face{font-family:BookkMyungjoLayout;src:url(/fonts/layout/bookk-myungjo-bold.ttf) format("truetype");font-display:swap;font-style:normal;font-weight:700 900}@font-face{font-family:A2ZLayout;src:url(/fonts/layout/a2z-bold.ttf) format("truetype");font-display:swap;font-style:normal;font-weight:700}@font-face{font-family:SBAggroLayout;src:url(/fonts/layout/sb-aggro-bold.ttf) format("truetype");font-display:swap;font-style:normal;font-weight:700 900}@font-face{font-family:ChungjuKimSaengLayout;src:url(/fonts/layout/chungju-kimsaeng.ttf) format("truetype");font-display:swap;font-style:normal;font-weight:400 900}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--canvas-soft);color:var(--ink);font-family:Pretendard,SUIT,Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}.app-shell{display:flex;gap:16px;min-height:100vh;padding:24px}.app-shell:has(.effects-workspace){height:100dvh;min-height:100dvh;overflow:hidden}.service-rail{position:-webkit-sticky;position:sticky;top:24px;display:flex;width:220px;min-height:calc(100vh - 48px);max-height:calc(100vh - 48px);flex:0 0 220px;flex-direction:column;gap:16px;padding:16px;border:1px solid var(--line-soft);border-radius:18px;background:var(--surface);box-shadow:0 18px 50px rgba(25,31,44,.06)}.service-rail-brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:760;text-decoration:none}.service-account{display:grid;grid-template-columns:auto minmax(0,1fr);grid-gap:8px;gap:8px;align-items:center;padding:10px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface-raised);color:var(--ink-muted);font-size:12px}.service-account .rail-auth-button{grid-column:1/-1}.service-account span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rail-auth-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface);color:var(--ink);font-size:12px;font-weight:760}.rail-auth-button:disabled{color:var(--ink-faint)}.credit-stack{display:grid;grid-gap:8px;gap:8px}.credit-line{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-gap:8px;gap:8px;align-items:center;min-height:38px;padding:0 10px;border:1px solid var(--line-soft);border-radius:10px;background:#fff;color:var(--ink-muted);font-size:12px}.credit-line strong{color:var(--ink);font-size:13px;transition:color .16s ease,transform .16s ease}.service-nav{display:grid;grid-gap:6px;gap:6px;margin-top:auto}.service-nav a{display:flex;align-items:center;gap:8px;min-height:38px;padding:0 10px;border-radius:10px;color:var(--ink);font-size:13px;font-weight:700;text-decoration:none}.service-nav a:hover{background:var(--primary-soft);color:var(--primary)}.workflow-frame{display:flex;min-height:calc(100vh - 48px);max-height:calc(100vh - 48px);min-width:0;flex:1 1 auto;overflow:hidden;flex-direction:column;border:1px solid var(--line-soft);border-radius:18px;background:var(--canvas);box-shadow:0 24px 80px rgba(25,31,44,.08)}.topbar{justify-content:flex-start;gap:24px;flex-wrap:wrap;padding:18px 24px;border-bottom:1px solid var(--line-soft)}.account-control,.topbar{display:flex;align-items:center}.account-control{gap:10px;flex:0 0 auto}.account-state{max-width:180px;overflow:hidden;color:var(--ink-faint);font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.account-state.ready{color:var(--primary)}.brand{display:flex;align-items:center;min-width:210px;gap:10px;font-weight:720}.brand-kicker{display:block;margin-bottom:2px;color:var(--ink-faint);font-size:12px;font-weight:650}.brand-mark{display:grid;width:28px;height:28px;place-items:center;flex:0 0 auto;border:1px solid var(--hairline);border-radius:8px;background:var(--surface-raised);color:var(--primary)}.stepper{display:flex;flex:1 1;flex-wrap:wrap;gap:8px;overflow:visible;color:var(--ink-faint);font-size:13px;white-space:normal}.step,.stepper{align-items:center}.step{display:inline-flex;flex:0 0 auto;gap:6px;padding:6px 8px;border:0;border-radius:999px;background:transparent;color:inherit}.step-dot{display:grid;width:16px;height:16px;place-items:center;border:1px solid;border-radius:999px}.step.active{background:var(--primary-soft);color:var(--primary);font-weight:700}.step.done{color:var(--ink-muted)}.mobile-step-summary{display:none;align-items:center;gap:8px;padding:7px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:13px;font-weight:760}.mobile-step-summary span{display:inline-grid;min-width:38px;height:22px;place-items:center;border-radius:999px;background:#fff}.workspace{display:grid;flex:1 1;grid-template-columns:minmax(0,1fr);grid-gap:24px;gap:24px;min-height:0;overflow:auto;padding:32px}.main-panel{min-width:0}.effects-main-panel,.effects-workspace{height:100%;min-height:0;overflow:hidden}.effects-main-panel{display:flex;flex-direction:column}.effects-main-panel>.eyebrow{margin-bottom:6px}.effects-main-panel>.page-title{max-width:none;font-size:clamp(24px,2.4vw,32px);line-height:1.08}.effects-main-panel>.lead{margin-top:8px;max-width:none;font-size:13px;line-height:1.45}.side-panel{align-self:start;padding:20px;border:1px solid var(--line-soft);border-radius:14px;background:var(--surface-raised)}.eyebrow{margin:0 0 10px;color:var(--primary);font-size:13px;font-weight:700}.page-title{margin:0;max-width:760px;font-size:36px;font-weight:720;line-height:1.16}.lead{margin:12px 0 0;max-width:680px;color:var(--ink-muted);font-size:16px;line-height:1.6}.genre-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px;margin-top:28px}.candidate-card,.genre-card{min-width:0;padding:14px;border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-align:left}.genre-card{min-height:180px}.candidate-card.selected,.genre-card.selected{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.candidate-specimen,.specimen{display:grid;min-height:102px;place-items:center;border-radius:8px;background:linear-gradient(135deg,rgba(244,247,251,.9),rgba(255,255,255,.9)),var(--surface-raised);color:var(--ink);font-size:24px;font-weight:820}.genre-preview{display:block;aspect-ratio:2/1;min-height:112px;background-position:50%;background-repeat:no-repeat;background-size:cover;box-shadow:inset 0 0 0 1px rgba(223,228,234,.7)}.genre-preview-romance{background-image:url(/visuals/genre-romance.png)}.genre-preview-modern{background-image:url(/visuals/genre-modern.png)}.genre-preview-fantasy{background-image:url(/visuals/genre-fantasy.png)}.genre-preview-wuxia{background-image:url(/visuals/genre-wuxia.png)}.genre-preview-healing{background-image:url(/visuals/genre-healing.png)}.candidate-card span,.candidate-card strong,.genre-desc,.genre-name{display:block}.candidate-card strong,.genre-name{margin:12px 0 4px;font-weight:740}.candidate-card span,.genre-desc{color:var(--ink-muted);font-size:13px}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:12px;font-weight:700}.ai-chip{background:var(--ai-soft);color:var(--ai)}.side-title{display:flex;align-items:center;justify-content:space-between;margin:0 0 16px;font-size:17px;font-weight:720}.inspector-list{display:grid;grid-gap:12px;gap:12px}.inspector-row{min-width:0;padding:12px;border:1px solid var(--line-soft);border-radius:9px;background:var(--surface)}.inspector-label{margin:0 0 4px;color:var(--ink-faint);font-size:12px}.inspector-value{overflow:hidden;margin:0;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.privacy-note{margin:16px 0 0;color:var(--ink-muted);font-size:13px;line-height:1.5}.remote-card{display:grid;grid-gap:12px;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line-soft)}.remote-actions,.remote-title{display:flex;align-items:center;gap:8px}.remote-title{justify-content:space-between;font-size:13px;font-weight:740}.remote-state{overflow:hidden;max-width:160px;color:var(--ink-faint);font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.remote-state.ready{color:var(--primary)}.job-id,.remote-copy,.remote-error{margin:0;font-size:12px;line-height:1.5}.job-id,.remote-copy{color:var(--ink-muted)}.remote-error{color:#b42318}.remote-actions{flex-wrap:wrap}.candidate-grid,.cover-grid,.generation-stage,.layout-stage{display:grid;grid-gap:16px;gap:16px;margin-top:28px}.cover-grid,.layout-stage{grid-template-columns:minmax(0,1fr) 280px}.upload-zone{display:grid;min-height:360px;place-items:center;align-content:center;grid-gap:10px;gap:10px;border:1px dashed var(--hairline);border-radius:14px;background:var(--surface-raised);color:var(--ink-muted);text-align:center}.upload-zone strong{color:var(--ink)}.file-input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.cover-preview{position:relative;display:grid;aspect-ratio:2/1;min-height:0;place-items:center;overflow:hidden;border:1px solid var(--line-soft);border-radius:14px;background:var(--surface)}.cover-preview img{width:100%;height:100%;object-fit:cover}.cover-preview p{position:absolute;right:12px;bottom:12px;left:12px;overflow:hidden;margin:0;padding:8px 10px;border:1px solid var(--line-soft);border-radius:8px;background:rgba(255,255,255,.9);color:var(--ink-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.empty-cover{display:grid;width:100%;height:100%;place-items:center;border-radius:10px;background:#ffffff;color:var(--ink-muted);text-align:center}.empty-cover-visual{display:block;width:100%;height:100%;overflow:hidden;background:url(/visuals/cover-placeholder-wide.png) 50%/cover no-repeat}.icon-button{position:absolute;top:12px;right:12px;display:grid;width:34px;height:34px;place-items:center;border:1px solid var(--line-soft);border-radius:999px;background:rgba(255,255,255,.94);color:var(--ink)}.input-stage,.style-stage{max-width:760px;margin-top:28px}.field-label{display:block;margin-bottom:8px;color:var(--ink-muted);font-size:13px;font-weight:700}.style-input,.title-input{width:100%;border:1px solid var(--hairline);border-radius:12px;background:var(--surface);color:var(--ink);outline:none}.style-input:focus,.title-input:focus{border-color:var(--primary-ring);box-shadow:0 0 0 3px var(--primary-soft)}.title-input{height:64px;padding:0 18px;font-size:22px;font-weight:700}.field-help{margin:10px 0 0;color:var(--ink-muted);font-size:13px}.proof-board{position:relative;display:grid;aspect-ratio:2/1;container-type:size;min-height:0;place-items:center;overflow:hidden;border:1px solid var(--line-soft);border-radius:16px;background:linear-gradient(90deg,rgba(223,228,234,.38) 1px,transparent 0),linear-gradient(180deg,rgba(223,228,234,.38) 1px,transparent 0),#ffffff;background-size:40px 40px}.layout-word,.proof-board{-moz-user-select:none;user-select:none;-webkit-user-select:none}.layout-word{position:absolute;padding:0;border:0;background:transparent;color:#101114;font-family:var(--layout-font-family,"BookkMyungjoLayout",serif);font-size:54px;font-weight:860;line-height:1}.layout-font-fantasy,.layout-font-romance-fantasy{--layout-font-family:"BookkMyungjoLayout",serif}.layout-font-modern{--layout-font-family:"SBAggroLayout",sans-serif}.layout-font-martial-arts{--layout-font-family:"ChungjuKimSaengLayout",serif}.layout-font-healing{--layout-font-family:"A2ZLayout",sans-serif}.generated-word{display:grid;place-items:center;overflow:visible;white-space:nowrap;touch-action:none;cursor:-webkit-grab;cursor:grab;transform-origin:50% 50%}.generated-word:active{cursor:-webkit-grabbing;cursor:grabbing}.generated-word.selected{z-index:20;color:#000000;filter:drop-shadow(0 0 0 var(--primary))}.generated-word.selected:after{position:absolute;inset:-8px;border:1px solid var(--primary-ring);border-radius:8px;content:"";pointer-events:none}.transform-handle{position:absolute;z-index:40;width:22px;height:22px;border:2px solid #ffffff;border-radius:50%;background:var(--primary);box-shadow:0 4px 12px rgba(13,23,38,.18)}.resize-handle{right:-20px;bottom:-20px;cursor:nwse-resize}.rotate-handle{top:-44px;left:50%;transform:translateX(-50%);cursor:-webkit-grab;cursor:grab}.rotate-handle:before{position:absolute;top:20px;left:50%;width:1px;height:26px;background:var(--primary-ring);content:""}.generated-word:not(.selected)>.transform-handle{display:none}.layout-loading{position:relative;z-index:1;display:grid;min-width:min(320px,calc(100% - 40px));grid-gap:10px;gap:10px;place-items:center;padding:24px 28px;border:1px solid var(--line-soft);border-radius:8px;background:rgba(255,255,255,.94);box-shadow:0 16px 48px rgba(15,23,42,.08);color:var(--ink-muted);font-size:13px;text-align:center}.layout-loading strong{color:var(--ink);font-size:15px}.layout-loading span{max-width:260px;line-height:1.5}.word-1{transform:translate(-46px,-54px) rotate(-4deg)}.word-2{transform:translate(34px,4px) rotate(2deg)}.word-3{transform:translate(-22px,64px) rotate(-1deg)}.selection-box{position:absolute;width:230px;height:150px;border:1px solid var(--primary-ring);border-radius:10px}.selection-box:after,.selection-box:before{position:absolute;width:9px;height:9px;border:1px solid var(--primary);border-radius:999px;background:white;content:""}.selection-box:before{top:-5px;right:-5px}.selection-box:after{right:-5px;bottom:-5px}.compact-controls{display:grid;align-self:start;grid-gap:10px;gap:10px}.inline-controls{margin-top:14px}.control-row{display:flex;align-items:center;justify-content:space-between;padding:14px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface-raised);color:var(--ink-muted)}.control-row strong{color:var(--ink)}.layout-edit-controls{display:grid;grid-gap:10px;gap:10px;padding-top:4px}.style-input{min-height:180px;resize:vertical;padding:16px;line-height:1.6}.resolved-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.result-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px;margin-top:16px}.empty-state,.prompt-preview,.result-list{min-width:0;padding:14px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface-raised)}.empty-state strong,.prompt-preview strong,.result-list strong{display:block;margin-bottom:8px;font-size:13px}.empty-state span,.prompt-preview p,.result-list p{margin:0;color:var(--ink-muted);font-size:13px;line-height:1.5}.prompt-preview{margin-top:12px}.generation-stage{grid-template-columns:repeat(3,minmax(0,1fr))}.generation-toolbar{display:grid;grid-template-columns:auto minmax(240px,1fr) minmax(180px,auto);align-items:center;grid-column:1/-1;grid-gap:14px;gap:14px;padding:14px;border:1px solid var(--line-soft);border-radius:12px;background:var(--surface)}.generation-status{display:grid;grid-gap:4px;gap:4px;text-align:right}.generation-batch-strip{display:flex;flex-wrap:wrap;grid-column:1/-1;gap:8px}.generation-batch-tab{display:grid;min-width:148px;grid-gap:3px;gap:3px;padding:9px 11px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface);color:var(--ink-muted);text-align:left}.generation-batch-tab strong{color:var(--ink);font-size:13px}.generation-batch-tab span{font-size:12px}.generation-batch-tab.selected{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.generation-batch-tab.selected strong{color:var(--primary)}.charge-card{display:grid;grid-gap:3px;gap:3px;min-height:48px;align-content:center;padding:10px 12px;border:1px solid rgba(37,99,235,.18);border-radius:10px;background:#f8fbff;color:var(--ink-muted);font-size:12px}.charge-card strong{color:var(--ink);font-size:13px}.charge-card.paid{border-color:rgba(109,93,252,.22);background:#faf9ff}.charge-card.blocked{border-color:rgba(180,35,24,.2);background:#fff8f7}.generation-slot{position:relative;display:grid;min-height:236px;place-items:center;align-content:center;grid-gap:10px;gap:10px;border:1px solid var(--line-soft);border-radius:14px;background:var(--surface-raised);color:var(--ink);text-align:center}.generation-slot.status-waiting{opacity:.76}.generation-slot.status-image_downloaded,.generation-slot.status-postprocessing,.generation-slot.status-queued,.generation-slot.status-running,.generation-slot.status-submitted_to_comfy,.generation-slot.status-uploading_input{border-color:rgba(37,99,235,.28);background:linear-gradient(180deg,rgba(37,99,235,.045),rgba(255,255,255,0)),var(--surface-raised)}.generation-slot.selected,.generation-slot:not(:disabled):hover{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.candidate-media,.slot-preview{position:relative;display:grid;width:100%;aspect-ratio:2/1;place-items:center;overflow:hidden;isolation:isolate;border-radius:8px;background:white}.slot-preview{min-height:0}.candidate-media img,.slot-preview img{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:contain}.preview-watermark{position:absolute;z-index:30;inset:0;pointer-events:none}.preview-watermark.tiled{opacity:1}.preview-watermark.tiled:before{position:absolute;inset:-20%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='150' viewBox='0 0 320 150'%3E%3Ctext x='160' y='82' text-anchor='middle' fill='%23c7cdd6' fill-opacity='0.68' font-family='Arial,sans-serif' font-size='24' font-weight='800' letter-spacing='2'%3EFONTASY PREVIEW%3C/text%3E%3C/svg%3E");background-position:50%;background-repeat:repeat;background-size:320px 150px;content:"";transform:rotate(-24deg)}.watermarked-preview .typo-effector-frame{z-index:1}.preview-watermark.prominent{inset:18px;border:1px solid rgba(37,99,235,.13)}.preview-watermark.prominent:before{position:absolute;inset:-32%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='360' height='170' viewBox='0 0 360 170'%3E%3Ctext x='180' y='92' text-anchor='middle' fill='%23d7dce5' fill-opacity='0.42' font-family='Arial,sans-serif' font-size='24' font-weight='800' letter-spacing='1.5'%3Efontasy.ai.kr%3C/text%3E%3C/svg%3E");background-position:50%;background-repeat:repeat;background-size:360px 170px;content:"";transform:rotate(-24deg)}.slot-index{display:grid;width:30px;height:30px;place-items:center;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-weight:800}.slot-loader{color:var(--starlight)}.slot-state-preview{position:absolute;inset:0;z-index:1;display:grid;place-items:center;align-content:center;grid-gap:12px;gap:12px;border:1px solid var(--line-soft);border-radius:8px;background:linear-gradient(90deg,rgba(37,99,235,.05) 1px,transparent 0),linear-gradient(180deg,rgba(37,99,235,.05) 1px,transparent 0),#fbfdff;background-size:28px 28px}.slot-state-loading:before{width:42px;height:42px;border:2px solid rgba(37,99,235,.16);border-top:2px solid var(--primary);border-radius:999px;content:"";animation:spin .9s linear infinite}.slot-state-bar{display:block;height:10px;border-radius:999px;background:linear-gradient(90deg,#e6eefc,#f8fbff 45%,#dce8fb 72%,#e6eefc);background-size:220% 100%;animation:globalSkeletonPulse 1.15s ease-in-out infinite}.slot-state-failed .slot-state-bar,.slot-state-idle .slot-state-bar{background:#e6eefc;animation:none}.slot-state-bar.long{width:min(58%,260px)}.slot-state-bar.medium{width:min(42%,190px)}.slot-state-bar.short{width:min(28%,130px)}.slot-state-dot{border:1px solid rgba(37,99,235,.16);background:#eef5ff}.slot-state-cross,.slot-state-dot{width:36px;height:36px;border-radius:999px}.slot-state-cross{position:relative;background:#fff1f0}.slot-state-cross:after,.slot-state-cross:before{position:absolute;top:17px;left:9px;width:18px;height:2px;border-radius:999px;background:#b42318;content:""}.slot-state-cross:before{transform:rotate(45deg)}.slot-state-cross:after{transform:rotate(-45deg)}.spin{animation:spin .9s linear infinite}.candidate-asset-id,.slot-error{display:block;max-width:100%;overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.candidate-asset-id{color:var(--ink-faint)}.slot-error{color:#b42318}.generation-note{grid-column:1/-1;margin:0;color:var(--ink-muted);font-size:13px}.candidate-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.candidate-card{min-height:260px}.candidate-media{min-height:0}.candidate-specimen{display:grid;min-height:170px;place-items:center;padding:20px;color:var(--ink);text-align:center}.empty-state{display:grid;grid-gap:4px;gap:4px;max-width:620px;margin-top:28px}.effects-stage,.export-stage{display:grid;grid-gap:16px;gap:16px;margin-top:28px;align-items:start}.effects-stage{flex:1 1;grid-template-columns:minmax(480px,1fr) clamp(340px,28vw,460px);grid-template-rows:minmax(0,1fr);width:100%;min-height:0;min-width:0;align-items:stretch;overflow:hidden}.export-stage{grid-template-columns:minmax(520px,1fr) minmax(320px,360px)}.export-stage,.export-stage>.export-preview{width:100%;min-width:0}.export-stage>.compact-controls{position:relative;z-index:4;width:100%;min-width:320px;max-width:360px;overflow-wrap:anywhere}.effect-side-panel{position:relative;z-index:3;display:grid;grid-template-rows:minmax(150px,1fr);min-width:0;min-height:0;height:100%;align-self:stretch;grid-gap:12px;gap:12px;overflow:hidden;padding-right:2px}.effect-side-panel:has(.effect-panel-section-controls){grid-template-rows:minmax(150px,1fr) minmax(250px,.82fr)}.effect-panel-section{display:grid;min-height:0;grid-gap:10px;gap:10px;overflow:hidden;padding:12px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface-raised)}.effect-panel-section-controls{align-self:stretch}.effect-panel-section-presets{grid-template-rows:auto minmax(0,1fr) auto auto}.effect-panel-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.effect-panel-heading strong{color:var(--ink);font-size:13px}.effect-panel-heading span{min-width:0;overflow:hidden;color:var(--ink-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.effect-edit-controls{display:grid;grid-gap:12px;gap:12px;min-height:0;max-height:none;overflow:auto;padding-right:2px}.light-angle-control{display:grid;justify-items:center;grid-gap:10px;gap:10px;padding:8px 0 4px}.light-angle-control-head{display:flex;align-items:center;justify-content:space-between;gap:12px;width:min(100%,220px);color:var(--ink-muted);font-size:12px;font-weight:800}.light-angle-control-head strong{color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.light-angle-dial{position:relative;width:clamp(92px,13dvh,120px);aspect-ratio:1;border:1px solid var(--line-soft);border-radius:999px;background:radial-gradient(circle at center,var(--surface) 0 37%,transparent 38%),conic-gradient(from -90deg,rgba(37,99,235,.18),rgba(37,99,235,.02),rgba(37,99,235,.18));box-shadow:inset 0 0 0 10px rgba(37,99,235,.06);cursor:pointer;touch-action:none}.light-angle-dial:focus-visible{outline:3px solid var(--primary-soft);outline-offset:3px}.light-angle-dial-axis,.light-angle-dial-handle,.light-angle-dial-ray{position:absolute;pointer-events:none}.light-angle-dial-axis{left:50%;top:50%;background:rgba(148,163,184,.42);transform:translate(-50%,-50%)}.light-angle-dial-axis.horizontal{width:72%;height:1px}.light-angle-dial-axis.vertical{width:1px;height:72%}.light-angle-dial-ray{left:50%;top:50%;width:42%;height:3px;border-radius:999px;background:var(--primary);transform-origin:left center}.light-angle-dial-handle{width:16px;height:16px;border:3px solid #ffffff;border-radius:999px;background:var(--primary);box-shadow:0 5px 14px rgba(37,99,235,.32);transform:translate(-50%,-50%)}.effect-control-field{display:grid;grid-template-columns:1fr auto;grid-gap:8px 12px;gap:8px 12px;align-items:center;color:var(--ink-muted);font-size:12px;font-weight:800}.effect-control-field input[type=range]{grid-column:1/-1;width:100%}.effect-control-field strong{color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.effect-color-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px}.effect-color-field{display:grid;grid-gap:6px;gap:6px;color:var(--ink-muted);font-size:12px;font-weight:800}.effect-color-field input{width:100%;height:34px;padding:2px;background:var(--surface)}.advanced-panel,.effect-color-field input{border:1px solid var(--line-soft);border-radius:8px}.advanced-panel{background:var(--surface-raised)}.package-controls{padding-top:12px}.advanced-panel[open],.package-controls{display:grid;grid-gap:10px;gap:10px}.advanced-panel summary{cursor:pointer;padding:12px;color:var(--ink);font-size:13px;font-weight:760}.angle-control{display:flex;align-items:center;gap:12px;padding:0 12px 12px}.angle-dial{position:relative;width:72px;height:72px;border:1px solid var(--line-soft);border-radius:50%;background:radial-gradient(circle,#ffffff 0 46%,transparent 47%),conic-gradient(from -90deg,var(--primary-soft),var(--primary),var(--primary-soft));cursor:-webkit-grab;cursor:grab}.angle-dial span{position:absolute;top:50%;left:50%;width:28px;height:2px;background:var(--primary);transform:rotate(var(--angle)) translateX(8px);transform-origin:left center}.advanced-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px;max-height:420px;overflow:auto;padding:0 12px 12px}.color-control-grid{max-height:none}.effect-field{display:grid;grid-gap:6px;gap:6px;color:var(--ink-muted);font-size:12px}.effect-field input[type=color],.effect-field input[type=range]{width:100%}.effect-field input[type=color]{min-height:34px}.toggle-field{grid-template-columns:1fr auto;align-items:center}.effect-preview,.export-preview{position:relative;display:grid;aspect-ratio:2/1;min-width:0;min-height:420px;place-items:center;overflow:hidden;isolation:isolate;border:1px solid var(--line-soft);border-radius:8px;background:#ffffff}.effects-stage .effect-preview{aspect-ratio:auto;height:100%;min-height:0}.effect-preview:before{position:absolute;inset:0;background:linear-gradient(90deg,rgba(223,228,234,.34) 1px,transparent 0),linear-gradient(180deg,rgba(223,228,234,.34) 1px,transparent 0);background-size:40px 40px;content:""}.effect-canvas-frame,.typo-effector-frame{position:relative;z-index:2;display:grid;width:100%;height:100%;min-height:inherit;place-items:center;overflow:hidden;isolation:isolate;-moz-user-select:none;user-select:none;-webkit-user-select:none}.effect-canvas-frame canvas,.typo-effect-canvas{display:block;width:100%;height:100%;object-fit:contain;cursor:-webkit-grab;cursor:grab}.effect-canvas-frame canvas:active,.typo-effect-canvas:active{cursor:-webkit-grabbing;cursor:grabbing}.render-error{position:absolute;right:14px;bottom:14px;z-index:3;max-width:min(420px,calc(100% - 28px));padding:8px 10px;border:1px solid rgba(220,38,38,.3);border-radius:8px;background:rgba(255,255,255,.92);color:#b91c1c;font-size:12px}.effect-package-preview-page{display:grid;grid-gap:18px;gap:18px;padding:24px}.effect-package-preview-controls{display:grid;grid-template-columns:repeat(5,minmax(160px,1fr));grid-gap:12px;gap:12px;padding:14px;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface-raised)}.effect-package-preview-controls label{display:grid;grid-gap:6px;gap:6px;color:var(--ink-muted);font-size:12px}.effect-package-preview-status{display:flex;flex-wrap:wrap;gap:8px}.effect-package-preview-status span{padding:7px 10px;border:1px solid var(--line-soft);border-radius:999px;background:#ffffff;color:var(--ink-muted);font-size:12px}.effect-package-zip-status{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line-soft);border-radius:8px;background:#ffffff}.effect-package-zip-status span{color:var(--ink-muted);font-size:12px}.effect-package-zip-status strong{font-size:13px}.effect-package-preview-groups{display:grid;grid-gap:24px;gap:24px}.effect-package-preview-group{display:grid;grid-gap:12px;gap:12px}.effect-package-preview-group h2{margin:0;font-size:18px}.effect-package-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));grid-gap:14px;gap:14px}.effect-package-preview-card{display:grid;grid-gap:8px;gap:8px;padding:10px;border:1px solid var(--line-soft);border-radius:8px;background:#ffffff}.effect-package-preview-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.effect-package-preview-card-head span{color:var(--ink-muted);font-size:11px}.effect-package-preview-canvas{display:grid;aspect-ratio:2/1;min-height:190px;overflow:hidden;border:1px solid var(--line-soft);border-radius:8px;background:linear-gradient(90deg,rgba(223,228,234,.5) 1px,transparent 0),linear-gradient(180deg,rgba(223,228,234,.5) 1px,transparent 0),#ffffff;background-size:28px 28px}.effect-package-preview-canvas.cover{aspect-ratio:2/3;min-height:360px;max-height:520px;justify-self:center;width:min(100%,360px)}.typo-effector-frame.editable{cursor:-webkit-grab;cursor:grab;touch-action:none}.typo-effector-frame.editable:active{cursor:-webkit-grabbing;cursor:grabbing}.typo-effector-stage{position:relative;z-index:1;display:grid;width:min(92%,860px);place-items:center;transform-origin:center;will-change:transform}.typo-effector-stage canvas{display:block;width:auto;max-width:100%;height:auto;max-height:520px;object-fit:contain}.effects-stage .typo-effector-frame{width:100%;height:100%;min-height:0}.effects-stage .typo-effector-stage{width:min(96%,1200px);height:100%;max-height:100%}.effects-stage .typo-effector-stage canvas{max-width:100%;max-height:100%}.typo-effector-status{z-index:5;padding:8px 12px;background:rgba(255,255,255,.82);font-size:13px}.typo-effector-status,.viewport-controls{position:absolute;border:1px solid var(--line-soft);border-radius:999px;color:var(--ink-muted)}.viewport-controls{z-index:6;top:12px;right:12px;display:inline-flex;align-items:center;gap:4px;padding:4px;background:rgba(255,255,255,.88);box-shadow:0 12px 32px rgba(25,31,44,.08);cursor:default}.viewport-controls button{display:grid;width:28px;height:28px;place-items:center;border:0;border-radius:999px;background:transparent;color:var(--ink)}.viewport-controls button:hover{background:var(--primary-soft);color:var(--primary)}.viewport-controls strong{min-width:44px;color:var(--ink);font-size:12px;text-align:center}.effect-transform-box{position:absolute;z-index:2;border:1px solid var(--primary-ring);border-radius:8px;cursor:move;transform-origin:50% 50%;touch-action:none}.effect-transform-box .resize-handle{right:-8px;bottom:-8px}.effect-presets{display:grid;grid-auto-rows:max-content;align-content:start;min-height:0;max-height:100%;align-self:start;grid-gap:8px;gap:8px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 4px 4px 0}.effect-preset-group{display:grid;grid-gap:6px;gap:6px;min-height:0}.effect-preset-group-toggle{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;grid-gap:8px;gap:8px;width:100%;min-height:52px;padding:6px 9px;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface);color:var(--ink-muted);font-size:13px;font-weight:800;text-align:left}.effect-preset-group-toggle.selected{border-color:var(--primary-ring);background:var(--primary-soft);color:var(--ink)}.effect-group-preview{width:42px;height:34px;border:1px solid rgba(255,255,255,.7);border-radius:7px;box-shadow:inset 0 0 0 1px rgba(21,29,48,.08)}.effect-group-copy{display:grid;grid-gap:2px;gap:2px;min-width:0}.effect-group-copy small,.effect-group-copy strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.effect-group-copy strong{color:var(--ink);font-size:13px}.effect-group-copy small{color:var(--primary);font-size:11px;font-weight:800}.effect-preset-group-toggle:hover{border-color:var(--primary-ring);color:var(--ink)}.effect-preset-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px}.effect-preset{display:grid;grid-template-columns:28px minmax(0,1fr);grid-gap:8px;gap:8px;align-items:center;min-height:40px;padding:7px;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface);color:var(--ink);text-align:left}.effect-preset.selected{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.effect-swatch{position:relative;width:28px;height:28px;border-radius:6px;overflow:hidden}.effect-auto-swatch{display:grid;place-items:center;background:radial-gradient(circle at 24% 20%,rgba(255,255,255,.92),transparent 18%),linear-gradient(135deg,#10b981,#6366f1 52%,#e11d48)}.effect-auto-diamond{width:12px;height:12px;border:1px solid rgba(255,255,255,.95);background:rgba(255,255,255,.9);box-shadow:0 2px 8px rgba(15,23,42,.22);transform:rotate(45deg)}.effect-preset span:not(.effect-swatch),.effect-preset strong{display:block}.effect-preset strong{min-width:0;align-self:center;overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.effect-preset span:not(.effect-swatch){color:var(--ink-muted);font-size:12px}.export-preview img{display:block;width:100%;height:100%;object-fit:contain}.specimen-2{font-size:22px;text-shadow:0 8px 18px rgba(23,24,28,.14)}.specimen-3{font-size:20px;font-weight:760}.footerbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 24px;border-top:1px solid var(--line-soft);background:rgba(255,255,255,.92)}.button-row{display:flex;gap:10px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;gap:8px;padding:0 18px;border:1px solid transparent;border-radius:999px;font-weight:700}.button.primary{background:var(--primary);color:white}.button.primary:hover:not(:disabled){background:var(--primary-hover)}.button.secondary{border-color:var(--line-soft);background:white;color:var(--ink)}.button.ai-recommend{min-height:42px;border-color:rgba(109,93,252,.18);background:var(--ai-soft);color:var(--ai);border-radius:10px}.button.ai-recommend.spending{box-shadow:0 0 0 3px rgba(109,93,252,.12)}.license-callout{display:grid;grid-gap:5px;gap:5px;padding:13px 14px;border:1px solid rgba(37,99,235,.16);border-radius:10px;background:#f8fbff;color:var(--ink-muted);font-size:12px;line-height:1.5}.license-callout strong{color:var(--ink);font-size:13px}.license-callout.paid{border-color:rgba(109,93,252,.2);background:#faf9ff}.paid-download-box{position:relative;display:grid;grid-gap:10px;gap:10px;overflow:hidden;padding:14px;border:1px solid rgba(79,70,229,.18);border-radius:12px;background:linear-gradient(135deg,rgba(255,255,255,.88),rgba(246,248,255,.72)),rgba(255,255,255,.9);box-shadow:inset 0 1px 0 rgba(255,255,255,.82)}.paid-download-box:before{position:absolute;inset:-40px;z-index:0;background:radial-gradient(circle at 18% 12%,rgba(79,70,229,.18),transparent 34%),radial-gradient(circle at 86% 88%,rgba(14,165,233,.13),transparent 30%);content:"";filter:blur(16px);opacity:.65}.paid-download-box.unlocked{border-color:rgba(22,163,74,.28);background:linear-gradient(135deg,rgba(255,255,255,.92),rgba(240,253,244,.68)),rgba(255,255,255,.94)}.paid-download-box.unlocked:before{background:radial-gradient(circle at 18% 12%,rgba(34,197,94,.18),transparent 34%),radial-gradient(circle at 86% 88%,rgba(79,70,229,.1),transparent 30%)}.paid-download-box>*{position:relative;z-index:1}.paid-download-box-head{display:grid;grid-gap:3px;gap:3px}.paid-download-box-head strong{color:var(--ink);font-size:13px}.paid-download-box-head span{color:var(--ink-muted);font-size:12px;line-height:1.45}.button.compact{min-height:34px;padding:0 12px;font-size:12px}.button.ai-action{width:100%;min-height:38px;padding:0 12px;border-radius:10px}.note{color:var(--ink-muted);font-size:13px}.note.error{color:#b42318}.utility-page{min-height:100vh;padding:24px;background:var(--canvas-soft)}.utility-shell{display:grid;grid-gap:24px;gap:24px;min-height:calc(100vh - 48px);padding:28px;border:1px solid var(--line-soft);border-radius:18px;background:var(--canvas);box-shadow:0 24px 80px rgba(25,31,44,.08)}.utility-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.utility-header>div{min-width:0;flex:1 1}.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px;align-content:start}.empty-work-list,.settings-panel,.work-card{border:1px solid var(--line-soft);border-radius:12px;background:var(--surface)}.settings-panel{display:grid;align-content:start;grid-gap:16px;gap:16px;padding:18px}.settings-panel.wide{grid-column:1/-1}.settings-panel-title{display:flex;align-items:center;gap:8px}.settings-panel-title h2{margin:0;font-size:16px}.settings-copy{margin:0;color:var(--ink-muted);font-size:14px;line-height:1.65}.info-trigger{position:relative;display:inline-grid;width:22px;height:22px;place-items:center;border-radius:999px;color:var(--ink-faint);cursor:help}.info-popover{position:absolute;z-index:10;top:calc(100% + 8px);left:50%;display:none;width:min(280px,70vw);padding:12px;border:1px solid var(--line-soft);border-radius:10px;background:white;box-shadow:0 18px 44px rgba(25,31,44,.14);color:var(--ink-muted);font-size:12px;line-height:1.55;transform:translateX(-50%)}.info-trigger:focus .info-popover,.info-trigger:focus-within .info-popover,.info-trigger:hover .info-popover{display:block}.terms-stack{display:grid;grid-gap:14px;gap:14px;max-width:980px}.info-list{display:grid;grid-gap:10px;gap:10px;margin:0}.info-list div{display:grid;grid-template-columns:minmax(110px,.4fr) minmax(0,1fr);grid-gap:12px;gap:12px;align-items:baseline}.info-list dt{color:var(--ink-muted);font-size:13px}.info-list dd{min-width:0;margin:0;color:var(--ink);font-weight:700}.work-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px;align-content:start}.work-card{display:grid;grid-gap:10px;gap:10px;min-height:150px;padding:18px;color:var(--ink);text-decoration:none}.work-card:hover{border-color:var(--primary-ring);box-shadow:0 0 0 3px var(--primary-soft)}.work-card strong{font-size:18px}.work-card span:not(.status-pill),.work-card time{color:var(--ink-muted);font-size:13px}.status-pill{display:inline-flex;width:-moz-fit-content;width:fit-content;align-items:center;gap:6px;padding:5px 8px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:12px;font-weight:760}.status-pill.completed{background:var(--ai-soft);color:var(--ai)}.status-pill.generating{background:#eefaf7;color:#0f766e}.empty-work-list{display:grid;min-height:240px;place-items:center;align-content:center;grid-gap:14px;gap:14px;color:var(--ink-muted)}.admin-grid{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(360px,1.2fr);grid-gap:14px;gap:14px;align-content:start}.admin-form,.admin-inline-form{display:grid;grid-gap:10px;gap:10px}.admin-inline-form{grid-template-columns:minmax(0,1fr) auto}.admin-form label{display:grid;grid-gap:6px;gap:6px;color:var(--ink-muted);font-size:12px;font-weight:650}.admin-form input,.admin-form select,.admin-form textarea,.admin-inline-form input{width:100%;min-height:40px;border:1px solid var(--hairline);border-radius:10px;background:#fff;color:var(--ink);padding:0 12px}.admin-form textarea{min-height:84px;padding:10px 12px;resize:vertical}.admin-table{display:grid;grid-gap:8px;gap:8px}.admin-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-gap:12px;gap:12px;align-items:center;width:100%;min-height:48px;padding:10px 12px;border:1px solid var(--line-soft);border-radius:10px;background:#fff;color:var(--ink);text-align:left}.admin-row.selected{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.admin-row.static{cursor:default}.admin-empty,.admin-row span{overflow:hidden;color:var(--ink-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.admin-row span:first-child{color:var(--ink);font-size:13px;font-weight:720}.admin-row strong{font-size:13px}.admin-visual-row{display:grid;grid-template-columns:96px minmax(180px,1fr) 96px 96px minmax(260px,auto);grid-gap:12px;gap:12px;align-items:center;padding:12px;border:1px solid var(--line-soft);border-radius:10px;background:#fff}.admin-visual-thumb{width:96px;aspect-ratio:16/9;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface-soft);object-fit:cover}.admin-visual-main{display:grid;grid-gap:4px;gap:4px;min-width:0}.admin-visual-main strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.admin-visual-main span,.admin-visual-row label{color:var(--ink-muted);font-size:12px;font-weight:650}.admin-visual-row label{display:grid;grid-gap:5px;gap:5px}.admin-visual-row input{width:100%;min-height:36px;border:1px solid var(--hairline);border-radius:9px;background:#fff;color:var(--ink);padding:0 10px}.admin-visual-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.effect-studio-page{display:grid;grid-template-rows:auto minmax(0,1fr);height:100vh;min-height:100vh;overflow:hidden;padding:24px;background:#eef1f5;color:var(--ink)}.effect-studio-header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-gap:18px;gap:18px;align-items:center;margin:0 auto 18px;max-width:1800px}.effect-studio-header h1{margin:2px 0 0;font-size:28px}.effect-studio-actions,.icon-button-row,.studio-card-title-row,.studio-layer-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.effect-studio-layout{display:grid;grid-template-columns:minmax(280px,360px) minmax(480px,1fr) minmax(280px,360px);grid-gap:16px;gap:16px;align-items:start;min-height:0;overflow:hidden;max-width:1800px;width:100%;margin:0 auto}.effect-studio-panel{display:grid;align-content:start;grid-gap:14px;gap:14px;max-height:100%;min-height:0;overflow-y:auto;padding-right:4px}.studio-card{display:grid;grid-gap:12px;gap:12px;padding:14px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface)}.studio-card h2{margin:0;font-size:15px}.studio-card-title-row{justify-content:space-between}.studio-card label,.studio-control-grid label{display:grid;grid-gap:6px;gap:6px;color:var(--ink-muted);font-size:12px;font-weight:700}.studio-card input:not([type=range]):not([type=color]),.studio-card select,.studio-json-output{width:100%;min-width:0;border:1px solid var(--line-soft);border-radius:8px;background:#fff;color:var(--ink);font:inherit}.studio-card input:not([type=range]):not([type=color]),.studio-card select{height:38px;padding:0 10px}.studio-card input[type=color]{width:100%;height:38px;padding:3px;border:1px solid var(--line-soft);border-radius:8px;background:#fff}.studio-color-swatches{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:5px;gap:5px}.studio-color-swatches button{height:20px;min-height:20px;padding:0;border:1px solid var(--line-soft);border-radius:6px;cursor:pointer}.studio-card input[type=range]{width:100%}.studio-check{grid-template-columns:auto 1fr;align-items:center}.studio-check input{width:16px;height:16px}.studio-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px;max-height:420px;overflow:auto;padding-right:4px}.studio-control-grid label span{display:flex;justify-content:space-between;gap:8px}.studio-editor-stack{display:grid;grid-gap:12px;gap:12px}.studio-tool-section{border:1px solid var(--line-soft);border-radius:8px;background:#fff}.studio-tool-section>summary{display:flex;align-items:center;min-height:42px;padding:9px 10px;cursor:pointer;color:var(--ink);font-size:13px;font-weight:900;list-style:none}.studio-tool-section>summary::-webkit-details-marker{display:none}.studio-tool-section>summary:after{margin-left:auto;color:var(--ink-muted);content:"펼치기";font-size:11px;font-weight:800}.studio-tool-section[open]>summary:after{content:"접기"}.studio-tool-section-body{display:grid;grid-gap:10px;gap:10px;padding:0 10px 10px}.studio-tool-section .studio-effect-section{background:#f8fafc}.studio-effect-section{border:1px solid var(--line-soft);border-radius:8px;background:#fff}.studio-effect-section summary{display:flex;align-items:center;min-height:40px;padding:8px 10px;cursor:pointer;font-size:13px;font-weight:800;list-style:none}.studio-effect-section summary::-webkit-details-marker{display:none}.studio-effect-section summary:after{margin-left:auto;color:var(--ink-muted);content:"펼치기";font-size:11px}.studio-effect-section[open] summary:after{content:"접기"}.studio-effect-section>.studio-control-grid{max-height:none;padding:0 10px 10px}.studio-stroke-list{display:grid;grid-gap:10px;gap:10px;padding:0 10px 10px}.studio-stroke-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(90px,.8fr) minmax(120px,1fr) auto;grid-gap:8px;gap:8px;align-items:end;padding:10px;border:1px solid var(--line-soft);border-radius:8px;background:#fff}.studio-stroke-row button{min-height:34px}.preset-select-list,.studio-specimen-list{display:grid;grid-gap:8px;gap:8px}.studio-specimen-row{display:grid;grid-template-columns:minmax(0,1fr) 34px;grid-gap:8px;gap:8px;align-items:stretch}.studio-specimen-row>button:first-child{display:grid;grid-template-columns:58px minmax(0,1fr) auto;grid-gap:10px;gap:10px;align-items:center;min-height:58px;padding:7px;border:1px solid var(--line-soft);border-radius:8px;background:#fff;color:var(--ink);cursor:-webkit-grab;cursor:grab;text-align:left}.studio-layer-row:active{cursor:-webkit-grabbing;cursor:grabbing}.studio-specimen-row.selected>button:first-child{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.studio-specimen-thumb{display:grid;place-items:center;width:58px;height:42px;overflow:hidden;border:1px solid var(--line-soft);border-radius:6px;background:#f8fafc;background-position:50%;background-repeat:no-repeat;background-size:contain}.studio-specimen-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.studio-specimen-row small{color:var(--ink-muted);font-size:11px}.studio-specimen-delete{display:grid;place-items:center;min-height:58px;border:1px solid var(--line-soft);border-radius:8px;background:#fff;color:var(--ink-muted)}.effect-studio-preview{display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-gap:12px;gap:12px;min-height:0;min-width:0;overflow:hidden}.studio-preview-toolbar{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface)}.studio-preview-toolbar span{color:var(--ink-muted)}.studio-preview-surface{display:grid;place-items:center;min-height:0;overflow:hidden;padding:18px;border:1px solid var(--line-soft);border-radius:10px;background:linear-gradient(45deg,rgba(148,163,184,.18) 25%,transparent 0),linear-gradient(-45deg,rgba(148,163,184,.18) 25%,transparent 0),linear-gradient(45deg,transparent 75%,rgba(148,163,184,.18) 0),linear-gradient(-45deg,transparent 75%,rgba(148,163,184,.18) 0),#f8fafc;background-position:0 0,0 12px,12px -12px,-12px 0;background-size:24px 24px}.studio-preview-surface canvas{display:block;width:min(100%,980px);height:auto;max-height:680px;object-fit:contain}.studio-canvas-wrap{position:relative;display:inline-block;max-width:100%;outline:none}.studio-canvas-wrap:before{position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(90deg,transparent calc(50% - .5px),rgba(37,99,235,.42) calc(50% - .5px),rgba(37,99,235,.42) calc(50% + .5px),transparent calc(50% + .5px)),linear-gradient(0deg,transparent calc(50% - .5px),rgba(37,99,235,.42) calc(50% - .5px),rgba(37,99,235,.42) calc(50% + .5px),transparent calc(50% + .5px)),repeating-linear-gradient(90deg,rgba(15,23,42,.06) 0 1px,transparent 1px 48px),repeating-linear-gradient(0deg,rgba(15,23,42,.06) 0 1px,transparent 1px 48px);content:""}.studio-canvas-wrap canvas{pointer-events:none}.studio-canvas-wrap:focus-visible{box-shadow:0 0 0 4px var(--primary-soft)}.studio-transform-box{position:absolute;z-index:3;border:1px solid #2563eb;box-shadow:0 0 0 1px rgba(255,255,255,.85),0 0 0 4px rgba(37,99,235,.12);transform-origin:center;touch-action:none}.studio-transform-move{position:absolute;inset:0;cursor:move}.studio-transform-handle,.studio-transform-rotate{position:absolute;z-index:4;width:12px;height:12px;border:2px solid #2563eb;border-radius:999px;background:#fff;box-shadow:0 1px 6px rgba(15,23,42,.22);touch-action:none}.studio-transform-handle.nw{top:-7px;left:-7px;cursor:nwse-resize}.studio-transform-handle.ne{top:-7px;right:-7px;cursor:nesw-resize}.studio-transform-handle.se{right:-7px;bottom:-7px;cursor:nwse-resize}.studio-transform-handle.sw{bottom:-7px;left:-7px;cursor:nesw-resize}.studio-transform-rotate{top:-42px;left:50%;transform:translateX(-50%);cursor:-webkit-grab;cursor:grab}.studio-transform-rotate:before{position:absolute;left:50%;top:10px;width:1px;height:30px;background:#2563eb;content:""}.studio-json-output{min-height:180px;padding:12px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.5}.studio-json-panel{border:1px solid var(--line-soft);border-radius:10px;background:var(--surface)}.studio-json-panel summary{min-height:42px;padding:11px 14px;cursor:pointer;color:var(--ink-muted);font-size:13px;font-weight:800;list-style:none}.studio-json-panel summary::-webkit-details-marker{display:none}.studio-json-panel summary:after{float:right;content:"펼치기";font-size:11px}.studio-json-panel[open] summary:after{content:"접기"}.studio-json-panel .studio-json-output{border-width:1px 0 0;border-radius:0 0 10px 10px}.studio-layer-add{align-items:stretch}.icon-button-row button,.studio-layer-add button{min-height:32px;border:1px solid var(--line-soft);border-radius:8px;background:#fff;color:var(--ink)}.studio-layer-add button{display:inline-flex;flex:1 1 120px;align-items:center;justify-content:center;gap:5px;padding:7px 8px;font-weight:800}.icon-button-row button{display:inline-grid;place-items:center;width:32px}.studio-layer-list{display:grid;grid-gap:8px;gap:8px}.studio-layer-row{position:relative;display:grid;grid-template-columns:20px minmax(0,1fr) auto;grid-gap:8px;gap:8px;align-items:center;min-height:44px;padding:8px;border:1px solid var(--line-soft);border-radius:8px;background:#fff;color:var(--ink);text-align:left}.studio-layer-row.selected{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.studio-layer-row.smart{background:#f8fafc}.studio-layer-row.smart span{color:var(--ink-muted)}.studio-layer-row.clipped{margin-left:22px;padding-left:18px;border-style:dashed}.studio-layer-row.clipped:before{position:absolute;left:-16px;top:50%;color:var(--ink-muted);content:"↳";font-weight:900;transform:translateY(-50%)}.studio-layer-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.studio-layer-row small,.studio-muted{color:var(--ink-muted);font-size:12px}.full-width{width:100%;justify-content:center}.control-error,.control-note{margin:0;font-size:12px;line-height:1.5}.control-note{color:var(--ink-muted)}.control-error{color:#b42318}.skeleton-card{pointer-events:none}.skeleton-line,.skeleton-pill{display:block;border-radius:999px;background:linear-gradient(90deg,#eef2f7,#f8fafc 42%,#e7edf5 72%,#eef2f7);background-size:220% 100%;animation:globalSkeletonPulse 1.2s ease-in-out infinite}.skeleton-pill{width:88px;height:24px}.skeleton-line{height:14px}.skeleton-line.wide{width:72%;height:20px}.skeleton-line.medium{width:46%}.skeleton-line.short{width:34%}.workflow-loading-state{display:grid;min-height:360px;place-items:center;align-content:center;grid-gap:10px;gap:10px;border:1px solid var(--line-soft);border-radius:14px;background:var(--surface-raised);color:var(--ink-muted);text-align:center}.workflow-loading-state strong{color:var(--ink);font-size:16px}.workflow-loading-state.compact{width:100%;min-height:260px;background:rgba(255,255,255,.86)}@keyframes globalSkeletonPulse{0%{background-position:120% 0}to{background-position:-120% 0}}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:1080px){.app-shell:has(.effects-workspace){height:auto;min-height:100vh;overflow:visible}.workflow-frame{max-height:none}.admin-grid,.cover-grid,.effects-stage,.export-stage,.layout-stage,.settings-grid,.work-list,.workspace{grid-template-columns:1fr}.side-panel{align-self:stretch}.effects-main-panel,.effects-stage,.effects-workspace{height:auto;overflow:visible}.effects-stage{min-height:0}.effects-stage .effect-preview{min-height:min(70dvh,620px)}.effect-side-panel{grid-template-rows:none;height:auto;min-width:0;max-height:none;overflow:visible}.effect-edit-controls{max-height:none}.export-stage>.compact-controls{min-width:0;max-width:none}.effect-presets{display:flex;flex:0 0 auto;overflow-x:auto;overflow-y:visible;padding-bottom:4px}.effect-preset-group{flex:0 0 min(76vw,280px)}.admin-visual-row{grid-template-columns:96px minmax(180px,1fr) repeat(2,minmax(80px,96px))}.admin-visual-actions{grid-column:1/-1;justify-content:flex-start}.effect-studio-header,.effect-studio-layout{grid-template-columns:1fr}.effect-studio-actions{align-items:stretch}.effect-studio-actions button{flex:1 1 180px}.studio-control-grid{max-height:none}}@media (max-width:780px){.app-shell{flex-direction:column}.app-shell,.utility-page{padding:12px}.utility-shell{min-height:calc(100vh - 24px);padding:20px 16px;border-radius:14px}.utility-header{flex-direction:column}.admin-inline-form,.admin-row,.admin-visual-row{grid-template-columns:1fr}.admin-visual-thumb{width:100%}.service-rail{position:static;top:auto;width:100%;min-height:0;max-height:none;flex:0 0 auto;gap:10px;padding:12px;border-radius:14px}.service-account{grid-template-columns:auto minmax(0,1fr) auto}.service-account .rail-auth-button{grid-column:auto;min-width:84px}.credit-stack{grid-template-columns:repeat(2,minmax(0,1fr))}.service-nav{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:0}.service-nav a{justify-content:center;min-height:40px}.workflow-frame{min-height:calc(100vh - 24px);border-radius:14px}.footerbar,.topbar{align-items:flex-start;flex-direction:column}.account-control{width:100%;justify-content:space-between}.stepper{display:flex;width:100%}.mobile-step-summary{display:none}.workspace{padding:24px 16px}.page-title{font-size:30px}.candidate-grid,.generation-stage,.generation-toolbar,.genre-grid,.result-columns{grid-template-columns:1fr}.generation-toolbar{align-items:stretch}.generation-status{text-align:left}.effects-stage,.export-stage{grid-template-columns:1fr}.effects-main-panel,.effects-stage,.effects-workspace{height:auto;overflow:visible}.effect-preview,.export-preview{min-height:0}.effects-stage .effect-preview{min-height:min(72dvh,560px)}.effect-side-panel{order:2;height:auto;max-height:none;overflow:visible}.effect-edit-controls{max-height:none}.effect-presets{display:flex;flex:0 0 auto;overflow-x:auto;overflow-y:visible;padding-bottom:4px}.effect-preset-group{flex:0 0 min(82vw,280px)}.advanced-grid{grid-template-columns:1fr;max-height:none}.button-row{width:100%}.button{flex:1 1}.info-list div{grid-template-columns:1fr;gap:4px}.effect-studio-page{padding:16px}.studio-control-grid{grid-template-columns:1fr}.studio-preview-surface{min-height:320px;padding:10px}}