.app[data-v-7a7a37b1]{display:flex;flex-direction:column;min-height:100vh}.topbar[data-v-7a7a37b1]{display:flex;align-items:center;justify-content:space-between;gap:var(--space3);padding:var(--space3) var(--space5);border-bottom:1px solid var(--color-border)}.topbar-auth[data-v-7a7a37b1]{display:flex;align-items:center;gap:var(--space2)}.body[data-v-7a7a37b1]{display:flex;flex:1;min-height:0}.viewer[data-v-7a7a37b1]{flex:7;display:flex;flex-direction:column;min-width:0;background:var(--color-surface)}.viewer-area[data-v-7a7a37b1]{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:var(--space5);overflow:auto;background-color:var(--color-surface);background-image:linear-gradient(var(--color-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--color-grid-line) 1px,transparent 1px);background-size:28px 28px}.viewer-img[data-v-7a7a37b1]{display:block;max-width:100%;max-height:100%;border-radius:var(--radius-xs)}.result-info[data-v-7a7a37b1]{display:flex;flex-direction:column;gap:var(--space3);padding:var(--space4) var(--space5);border-top:1px solid var(--color-border);flex-shrink:0}.empty-state[data-v-7a7a37b1]{display:flex;flex-direction:column;align-items:center;gap:var(--space2);-webkit-user-select:none;user-select:none}.empty-icon[data-v-7a7a37b1]{width:48px;height:48px;color:var(--color-border-hi)}.empty-title[data-v-7a7a37b1]{font-size:15px;font-weight:600;color:var(--color-text-dim)}.empty-sub[data-v-7a7a37b1]{font-size:12.5px}.loading-overlay[data-v-7a7a37b1]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:var(--color-overlay);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:10}.loading-text[data-v-7a7a37b1]{font-size:13px;font-weight:500;color:var(--color-text-dim);letter-spacing:.2px}.spinner-lg[data-v-7a7a37b1]{width:34px;height:34px;border:2.5px solid var(--color-primary-dim);border-top-color:var(--color-primary);border-radius:var(--radius-pill);animation:spin-7a7a37b1 .65s linear infinite}@keyframes spin-7a7a37b1{to{transform:rotate(360deg)}}.params-pane[data-v-7a7a37b1]{flex:3;min-width:300px;display:flex;flex-direction:column;border-left:1px solid var(--color-border);background:var(--color-surface);overflow-y:auto}.params-header[data-v-7a7a37b1]{display:flex;flex-direction:column;gap:var(--space2);padding:var(--space5) var(--space5) var(--space4);border-bottom:1px solid var(--color-border)}.params-header h1[data-v-7a7a37b1]{font-family:var(--font-display);font-size:1.3rem}.params-body[data-v-7a7a37b1]{display:flex;flex-direction:column;gap:var(--space4);padding:var(--space5)}.form-grid[data-v-7a7a37b1]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space4);align-items:end}.field--resolution[data-v-7a7a37b1]{min-width:0}.resolution-row[data-v-7a7a37b1]{display:flex;align-items:center;gap:var(--space2)}.resolution-row .field__control[data-v-7a7a37b1]{min-width:0}.field--color .field__control--color[data-v-7a7a37b1]{padding:4px;height:42px;cursor:pointer;flex-shrink:0;width:42px}.color-row[data-v-7a7a37b1]{display:flex;align-items:center;gap:var(--space2)}.alpha-slider[data-v-7a7a37b1]{flex:1;min-width:0;accent-color:var(--color-primary)}.alpha-value[data-v-7a7a37b1]{font-size:var(--fs-sm);min-width:3.2em;text-align:right;font-variant-numeric:tabular-nums}.field--full[data-v-7a7a37b1]{grid-column:1 / -1}.custom-labels summary[data-v-7a7a37b1]{cursor:pointer;color:var(--color-text-mid);font-size:var(--fs-sm)}.custom-labels__grid[data-v-7a7a37b1]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space4);margin-top:var(--space3)}.custom-labels__grid .field__label[data-v-7a7a37b1]{text-transform:capitalize}.bg-image-row[data-v-7a7a37b1]{display:flex;align-items:center;gap:var(--space3);flex-wrap:wrap}.bg-image-thumb[data-v-7a7a37b1]{width:42px;height:42px;object-fit:contain;border:1px solid var(--color-border);border-radius:var(--radius-xs);background:var(--color-lift)}.bg-image-name[data-v-7a7a37b1]{font-size:var(--fs-sm);overflow-wrap:anywhere}.error-msg[data-v-7a7a37b1]{color:var(--color-danger);font-size:var(--fs-sm)}:root{--font-display: "Anta", "Montserrat", sans-serif;--font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SFMono-Regular", "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;--fs-xs: 11px;--fs-sm: 13px;--fs-base: 15px;--fs-md: 17px;--space-1: .5rem;--space-2: 1rem;--space-3: 1.5rem;--space-4: 2rem;--space-5: 3rem;--space-6: 4rem;--space-7: 6rem;--space-8: 8rem;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-pill: 999px;--t-fast: .15s ease;--t-base: .25s ease;--t-slow: .35s ease;--color-black: #000000;--color-white: #ffffff}:root,html[data-theme=dark]{color-scheme:dark;--color-bg: #0c0c0e;--color-surface: #111115;--color-lift: #18181e;--color-border: #222228;--color-border-hi: #2e2e38;--color-text: #f0f0f8;--color-text-mid: #d0d0e0;--color-text-muted: #a8b0c8;--color-text-dim: #9098b2;--color-primary: #7c6bf7;--color-primary-hi: #7b2ff7;--color-primary-dim: rgba(155, 31, 232, .12);--color-primary-glow: rgba(124, 107, 247, .25);--color-primary-10: rgba(124, 107, 247, .1);--color-primary-20: rgba(124, 107, 247, .2);--color-primary-text: #c4b5fd;--color-secondary: #c4146e;--color-success: #22c55e;--color-warning: #f59e0b;--color-danger: #e05060;--color-grad: linear-gradient(90deg, var(--color-primary), var(--color-primary-hi), var(--color-secondary));--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 12px rgba(0, 0, 0, .5);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .6);--color-overlay: rgba(12, 12, 14, .85);--color-grid-line: rgba(255, 255, 255, .025)}html[data-theme=light]{color-scheme:light;--color-bg: #f6f7fb;--color-surface: #ffffff;--color-lift: #eef1f8;--color-border: #dbe1ee;--color-border-hi: #c2ccdf;--color-text: #0f1a2f;--color-text-mid: #354260;--color-text-muted: #52607a;--color-text-dim: #6a7588;--color-primary: #2b63ff;--color-primary-hi: #00a3ff;--color-primary-dim: rgba(43, 99, 255, .1);--color-primary-glow: rgba(43, 99, 255, .2);--color-primary-10: rgba(43, 99, 255, .1);--color-primary-20: rgba(43, 99, 255, .2);--color-primary-text: #1f4ed8;--color-secondary: #ff4d7a;--color-success: #16a34a;--color-warning: #d97706;--color-danger: #dc2626;--color-grad: linear-gradient(90deg, var(--color-primary), var(--color-primary-hi), var(--color-secondary));--shadow-sm: 0 1px 2px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .14);--color-overlay: rgba(246, 247, 251, .88);--color-grid-line: rgba(0, 0, 0, .06)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--fs-base);line-height:1.6}.dyno-logo{font-family:var(--font-display);font-size:1.375rem;font-weight:800;letter-spacing:.02em;color:var(--color-text);text-decoration:none}.dyno-logo-dot{color:var(--color-primary)}.dyno-logo-sub{font-weight:400}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 22px;font-family:var(--font-body);font-size:var(--fs-sm);font-weight:700;line-height:1;border:none;border-radius:var(--radius-sm);cursor:pointer;text-decoration:none;transition:opacity var(--t-base),transform var(--t-base),box-shadow var(--t-base);white-space:nowrap;-webkit-user-select:none;user-select:none}.btn-primary{background:var(--color-grad);color:#fff;box-shadow:0 0 24px var(--color-primary-glow)}.btn-primary:hover:not(:disabled){opacity:.88;transform:translateY(-1px);box-shadow:0 0 36px var(--color-primary-glow)}.btn-primary:active:not(:disabled){transform:translateY(0);opacity:1}.btn-ghost{background:transparent;color:var(--color-text-mid);border:1.5px solid var(--color-border-hi)}.btn-ghost:hover:not(:disabled){border-color:var(--color-text-muted);color:var(--color-text)}.btn-sm{padding:7px 14px;font-size:var(--fs-xs);border-radius:var(--radius-xs)}.btn-lg{padding:14px 32px;font-size:var(--fs-base)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}:root{--bg0: var(--color-bg);--bg1: var(--color-surface);--text0: var(--color-text);--text1: var(--color-text-mid);--text2: var(--color-text-muted);--border0: var(--color-border);--border1: var(--color-border-hi);--radius0: var(--radius-md);--radius1: var(--radius-lg);--space1: 6px;--space2: 10px;--space3: 14px;--space4: 18px;--space5: 24px;--space6: 32px;--history-bar-height: 56px;--history-row-height: 148px;--history-dock-height: calc(var(--history-bar-height) + var(--history-row-height))}html,body{margin:0;min-height:100%}#app{min-height:100%}.muted{color:var(--color-text-muted)}.isHidden{display:none!important}.isDisabled{pointer-events:none;opacity:.55}.badge{font-size:11px;font-weight:600;border:1px solid var(--color-border-hi);border-radius:var(--radius-pill);padding:4px 10px;color:var(--color-text-dim);background:var(--color-lift);white-space:nowrap}.badge--ok{color:var(--color-success);background:#22c55e1a;border-color:#22c55e40}.badge--admin{color:#a78bfa;background:#7c3aed1a;border-color:#7c3aed40}.badge--logout{cursor:pointer}.badge--logout:hover{opacity:.75}.field{display:flex;flex-direction:column;gap:6px}.field__label{font-size:12px;font-weight:650;color:var(--color-text-mid)}.field__control{width:100%;padding:10px 12px;border-radius:var(--radius-md);border:1px solid var(--color-border-hi);background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--fs-base);outline:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border-radius:var(--radius-sm);border:1.5px solid var(--color-border-hi);background:var(--color-lift);color:var(--color-text-mid);font-family:var(--font-body);font-size:var(--fs-sm);font-weight:600;text-decoration:none;cursor:pointer;white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn--primary{background:var(--color-grad);border:none;color:#fff;font-weight:800;box-shadow:0 2px 12px var(--color-primary-glow)}.btn--ghost{background:transparent;color:var(--color-text-mid)}.btn--ghost:hover{border-color:var(--color-text-muted);color:var(--color-text)}.statusLine{font-size:13px;color:var(--color-text-muted)}.statusLine--ok{color:var(--color-success);font-weight:600}.statusLine--error{color:var(--color-danger);font-weight:600}.copyRow{display:flex;gap:var(--space2);align-items:stretch}.urlBar{display:flex;align-items:center;flex:1;min-width:0;border:1px solid var(--color-border-hi);border-radius:var(--radius-md);background:var(--color-bg)}.urlBar .urlBar__input{flex:1;min-width:0;border:none;background:transparent;padding:10px 8px 10px 12px;cursor:pointer}.urlBar__copy{background:none;border:none;padding:8px 10px;cursor:pointer;color:var(--color-text-muted)}.copyRow>.btn{flex-shrink:0;width:42px;padding:0}.history-panel{flex-shrink:0;min-height:var(--history-dock-height);display:flex;flex-direction:column;background:var(--color-bg);border-top:1px solid var(--color-border)}.history-slot{min-height:var(--history-row-height);flex-shrink:0}.history-slot .genLog{padding:0 var(--space5) var(--space5)}.history-slot .genLog__list{gap:var(--space2)}.genLog{display:flex;flex-direction:column;gap:var(--space3)}.genLog__hint{margin:0;font-size:13px;line-height:1.45}.genLog__list{display:flex;flex-direction:column;gap:var(--space2);min-height:0}.genLog__footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space3)}.genLogRow{display:flex;flex-direction:column;gap:var(--space2);padding:var(--space3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.genLogRow__caption{font-size:12px;line-height:1.4;word-break:break-word}.genLogRow__expiry{display:block;margin-top:3px;color:var(--color-warning);font-size:var(--fs-xs);font-weight:500}.genLogRow__expiry--expired{color:var(--color-danger)}.genLogRow__body{display:grid;grid-template-columns:minmax(140px,220px) minmax(0,1fr);gap:var(--space4);align-items:start}.genLogRow__preview{border-radius:var(--radius1);border:1px solid var(--color-border);background:var(--color-lift);aspect-ratio:16 / 9;overflow:hidden;display:grid;place-items:center;min-height:72px;position:relative}.genLogRow__preview img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;display:block}.genLogRow__previewEmpty{color:var(--color-text-muted);font-size:12px;padding:var(--space2);text-align:center}.genLogRow__metaCol{min-width:0;display:flex;flex-direction:column;gap:var(--space3)}.genLogWlList{display:flex;flex-direction:column;gap:var(--space2)}.genLogWlLine{font-size:13px;word-break:break-word}.genLogWlLine a{color:var(--color-primary);font-weight:500}.genLogWlStatus{font-weight:400}.history-card{padding:0;overflow:hidden}.history-summary{display:flex;align-items:center;gap:var(--space2);height:var(--history-bar-height);min-height:var(--history-bar-height);padding:0 var(--space5);margin:0;cursor:pointer;font-weight:650;color:var(--color-text-mid);-webkit-user-select:none;user-select:none;background:var(--color-bg);border:none;width:100%;text-align:left;font-family:inherit;font-size:inherit;box-sizing:border-box;flex-shrink:0}.history-summary>span:first-child{flex:1}.history-count{font-size:11px;font-weight:700;padding:2px 8px;border-radius:var(--radius-pill);background:var(--color-primary-dim);color:var(--color-primary-text);border:1px solid var(--color-primary-20)}.history-chevron{font-size:18px;color:var(--color-text-dim);flex-shrink:0;transition:transform var(--t-base)}.history-panel.is-open .history-chevron{transform:rotate(180deg)}@media (max-width: 860px){.genLogRow__body{grid-template-columns:1fr}}.confirmModal{border:1px solid var(--border0);border-radius:var(--radius1);padding:var(--space5);min-width:280px;max-width:420px;background:var(--bg1);color:var(--text0);margin:auto}.confirmModal::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0006}.confirmModal__message{margin:0 0 var(--space5)}.confirmModal__actions{display:flex;gap:var(--space2);justify-content:flex-end}
