.cm-toast-enter-active[data-v-0e33a6bc],.cm-toast-leave-active[data-v-0e33a6bc]{transition:all .25s}.cm-toast-enter-from[data-v-0e33a6bc],.cm-toast-leave-to[data-v-0e33a6bc]{opacity:0;transform:translate(20px)}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--brand-50:#eff6ff;--brand-100:#dbeafe;--brand-200:#bfdbfe;--brand-300:#93c5fd;--brand-400:#60a5fa;--brand-500:#3b82f6;--brand-600:#2563eb;--brand-700:#1d4ed8;--brand-800:#1e40af;--brand-900:#172554;--white:#fff;--slate-50:#f8fafc;--slate-100:#f1f5f9;--slate-200:#e2e8f0;--slate-300:#cbd5e1;--slate-400:#94a3b8;--slate-500:#64748b;--slate-600:#475569;--slate-700:#334155;--slate-900:#0f172a;--bg:#f5f8fc;--bg-tint:#eef4fd;--splash-bg:#f7f8fd;--surface:var(--white);--surface-2:var(--slate-50);--surface-hover:var(--brand-50);--border:#e6ebf3;--border-strong:#d7dfeb;--text:var(--slate-900);--text-2:var(--slate-600);--muted-foreground:var(--slate-500);--card:var(--surface);--accent:var(--brand-600);--accent-hover:var(--brand-700);--accent-soft:var(--brand-50);--success:#059669;--success-bg:#ecfdf5;--success-bd:#a7f3d0;--warning:#b45309;--warning-bg:#fffbeb;--warning-bd:#fde68a;--danger:#dc2626;--danger-bg:#fef2f2;--danger-bd:#fecaca;--info:var(--brand-600);--info-bg:var(--brand-50);--info-bd:var(--brand-200);--r-xs:6px;--r-sm:8px;--r:10px;--r-md:12px;--r-lg:16px;--r-xl:20px;--r-full:999px;--sh-xs:0 1px 2px #0f172a0a;--sh-sm:0 1px 3px #0f172a0f, 0 1px 2px #0f172a0a;--sh-md:0 4px 14px -2px #0f172a14, 0 2px 6px -2px #0f172a0d;--sh-lg:0 14px 34px -10px #0f172a2e, 0 4px 12px -4px #0f172a14;--sh-xl:0 28px 60px -18px #0f172a42;--sh-brand:0 6px 18px -6px #2563eb73;--ring:0 0 0 3px #2563eb2e;--ring-danger:0 0 0 3px #dc262629;--t-fast:.13s;--t:.22s;--t-slow:.38s;--ease:cubic-bezier(.4, 0, .2, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.4, .64, 1);--sidebar-w:252px;--sidebar-rail:76px;--header-h:64px;--cm-bg:var(--bg);--cm-surface:var(--surface);--cm-border:var(--border);--cm-primary:var(--brand-600);--cm-primary-hover:var(--brand-700);--cm-accent:var(--brand-600);--cm-text:var(--text);--cm-muted:var(--muted-foreground);--cm-success:var(--success);--cm-success-bg:var(--success-bg);--cm-warning:var(--warning);--cm-warning-bg:var(--warning-bg);--cm-danger:var(--danger);--cm-danger-bg:var(--danger-bg);--cm-radius:var(--r);--cm-shadow:var(--sh-sm)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade-down{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}@keyframes scale-in{0%{opacity:0;transform:scale(.96)translateY(8px)}to{opacity:1;transform:none}}@keyframes slide-left{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:none}}@keyframes row-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{transform:translate(100%)}}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.82)}}@keyframes pulse-ring{0%{box-shadow:0 0 #2563eb59}70%{box-shadow:0 0 0 8px #2563eb00}to{box-shadow:0 0 #2563eb00}}@keyframes bar-stripes{to{background-position:28px 0}}@keyframes sheen{0%{transform:translate(-120%)skew(-18deg)}to{transform:translate(240%)skew(-18deg)}}*,:before,:after{box-sizing:border-box}html,body,#app{height:100%}body{background:radial-gradient(1200px 520px at 12% -8%, var(--bg-tint) 0%, transparent 62%), var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-variant-ligatures:contextual;background-attachment:fixed;margin:0;font-family:Inter Variable,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.55}::selection{background:var(--brand-200);color:var(--brand-900)}h1,h2,h3,h4{color:var(--text);letter-spacing:-.018em;font-weight:700}h1{margin:0;font-size:25px;line-height:1.25}h2{margin:0 0 10px;font-size:19px;line-height:1.3}h3{margin:0 0 10px;font-size:15.5px;line-height:1.35}h4{margin:0 0 8px;font-size:14px}p{margin:0 0 10px}a{color:var(--accent)}hr{border:none;border-top:1px solid var(--border);margin:18px 0}code,.mono,.var,.var-chip{font-feature-settings:"liga" 0;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace}code,.var{background:var(--brand-50);color:var(--brand-700);border:1px solid var(--brand-100);border-radius:var(--r-xs);white-space:nowrap;padding:2px 6px;font-size:12px}.var-chip{background:var(--brand-50);color:var(--brand-700);border:1px solid var(--brand-100);border-radius:var(--r-xs);transition:background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);margin-right:4px;padding:2px 7px;font-size:11px;display:inline-block}.var-chip:hover{background:var(--brand-100);transform:translateY(-1px)}.mono{font-size:12.5px;line-height:1.6}:focus-visible{box-shadow:var(--ring);border-radius:var(--r-xs);outline:none}*{scrollbar-width:thin;scrollbar-color:var(--slate-300) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--slate-300);border-radius:var(--r-full);background-clip:content-box;border:3px solid #0000}::-webkit-scrollbar-thumb:hover{background:var(--slate-400);background-clip:content-box}.btn,.cm-btn{font:inherit;border-radius:var(--r);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);box-shadow:var(--sh-xs);cursor:pointer;white-space:nowrap;transition:background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), box-shadow var(--t) var(--ease), transform var(--t) var(--ease-spring);justify-content:center;align-items:center;gap:7px;padding:9px 16px;font-size:14px;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn:hover:not(:disabled),.cm-btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--slate-300);box-shadow:var(--sh-sm);transform:translateY(-1px)}.btn:active:not(:disabled),.cm-btn:active:not(:disabled){transition-duration:70ms;transform:translateY(0)scale(.978)}.btn:disabled,.cm-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn:focus-visible,.cm-btn:focus-visible{box-shadow:var(--ring)}.btn.primary:after,.btn.danger-solid:after,.cm-btn-primary:after,.cm-btn-accent:after,.cm-btn-danger:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#ffffff47,#0000);width:40%;position:absolute;inset:0 auto 0 0;transform:translate(-120%)skew(-18deg)}.btn.primary:hover:not(:disabled):after,.btn.danger-solid:hover:not(:disabled):after,.cm-btn-primary:hover:not(:disabled):after,.cm-btn-accent:hover:not(:disabled):after,.cm-btn-danger:hover:not(:disabled):after{animation:sheen .72s var(--ease-out)}.btn.primary,.btn-primary,.cm-btn-primary,.cm-btn-accent{background:linear-gradient(180deg, var(--brand-500), var(--brand-600));color:#fff;border-color:var(--brand-600);box-shadow:var(--sh-brand)}.btn.primary:hover:not(:disabled),.btn-primary:hover:not(:disabled),.cm-btn-primary:hover:not(:disabled),.cm-btn-accent:hover:not(:disabled){background:linear-gradient(180deg, var(--brand-600), var(--brand-700));border-color:var(--brand-700);box-shadow:0 10px 24px -8px #2563eb8c}.cm-btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn.primary-outline{background:var(--brand-50);color:var(--brand-700);border-color:var(--brand-200);box-shadow:none}.btn.primary-outline:hover:not(:disabled){background:var(--brand-100);border-color:var(--brand-300)}.btn.ghost,.cm-btn-ghost{color:var(--text-2);box-shadow:none;background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled),.cm-btn-ghost:hover:not(:disabled){background:var(--slate-100);color:var(--text);box-shadow:none;border-color:#0000}.btn.danger{color:var(--danger);box-shadow:none;background:0 0;border-color:#0000}.btn.danger:hover:not(:disabled){background:var(--danger-bg);border-color:var(--danger-bd);color:var(--danger)}.btn.danger:focus-visible{box-shadow:var(--ring-danger)}.btn.danger-solid,.cm-btn-danger{background:linear-gradient(180deg, #ef4444, var(--danger));color:#fff;border-color:var(--danger);box-shadow:0 6px 18px -6px #dc262673}.btn.danger-solid:hover:not(:disabled),.cm-btn-danger:hover:not(:disabled){background:linear-gradient(180deg, var(--danger), #b91c1c);border-color:#b91c1c}.btn.sm,.cm-btn-sm{border-radius:var(--r-sm);gap:5px;padding:6px 12px;font-size:12.5px}.btn.lg{padding:12px 22px;font-size:15px}.cm-btn-block,.btn.block{width:100%}.field,.cm-field{margin-bottom:16px;display:block}.field>span,.cm-label{letter-spacing:-.005em;color:var(--text-2);margin-bottom:6px;font-size:12.5px;font-weight:600;display:block}.input,.cm-input,.cm-select,.sel{width:100%;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r);box-shadow:var(--sh-xs);transition:border-color var(--t-fast) var(--ease), box-shadow var(--t) var(--ease), background var(--t-fast) var(--ease);outline:none;padding:9px 12px;font-size:14px}.input::placeholder,.cm-input::placeholder{color:var(--slate-400)}.input:hover:not(:focus):not(:disabled),.cm-input:hover:not(:focus):not(:disabled),.cm-select:hover:not(:focus):not(:disabled){border-color:var(--slate-300)}.input:focus,.cm-input:focus,.cm-select:focus,.sel:focus{border-color:var(--brand-500);box-shadow:var(--ring);background:var(--surface)}.input:disabled,.cm-input:disabled{background:var(--slate-100);color:var(--slate-400);cursor:not-allowed}textarea.input,textarea.cm-input{resize:vertical;min-height:88px;font-family:inherit;line-height:1.6}textarea.input.mono,textarea.cm-input.mono{font-family:JetBrains Mono,ui-monospace,monospace}select.input,.cm-select,.sel{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 11px center;background-repeat:no-repeat;padding-right:34px}input[type=checkbox],input[type=radio]{accent-color:var(--brand-600);cursor:pointer;width:15px;height:15px}.cm-input-error,.input.error{border-color:var(--danger)}.cm-input-error:focus,.input.error:focus{box-shadow:var(--ring-danger)}.cm-error-msg,.field>span.cm-error-msg{color:var(--danger);margin-top:5px;font-size:12px;font-weight:500;display:block}.cm-hint{color:var(--muted-foreground);margin-top:5px;font-size:12px}.radio,.switch-label{color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13.5px;display:inline-flex}.switch-label{font-size:13px}.switch-label:hover,.radio:hover{color:var(--text)}.card,.cm-card,.form-card,.add-panel,.editor-card,.preview-card,.versions,.launch-card,.info-card,.stat,.stat-card,.cm-card-pad{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm)}.card,.cm-card,.form-card,.add-panel,.editor-card,.preview-card,.versions,.launch-card,.info-card{transition:box-shadow var(--t) var(--ease), border-color var(--t) var(--ease)}.cm-card-pad{padding:22px 24px}.card,.form-card,.add-panel,.editor-card,.preview-card,.versions,.launch-card,.info-card{padding:20px}.card>h3:first-child,.form-card>h3:first-child,.add-panel>h3:first-child,.editor-card>h3:first-child,.preview-card>h3:first-child,.versions>h3:first-child{margin-top:0}.cm-card-title{letter-spacing:-.015em;margin:0 0 4px;font-size:15px;font-weight:700}.cm-card-sub{color:var(--muted-foreground);margin:0;font-size:13px}.stat-card,.stat{transition:transform var(--t) var(--ease-spring), box-shadow var(--t) var(--ease), border-color var(--t) var(--ease);padding:16px 20px;position:relative;overflow:hidden}.stat-card:before,.stat:before{content:"";background:linear-gradient(90deg, var(--brand-500), var(--brand-300));transform-origin:0;height:3px;transition:transform var(--t-slow) var(--ease-out);position:absolute;inset:0 0 auto;transform:scaleX(0)}.stat-card:hover,.stat:hover{box-shadow:var(--sh-md);border-color:var(--brand-200);transform:translateY(-2px)}.stat-card:hover:before,.stat:hover:before{transform:scaleX(1)}.stat-label,.stat .lbl,.stat-card .lbl{color:var(--muted-foreground);letter-spacing:.01em;font-size:12px;font-weight:500}.stat-value,.stat .val,.stat-card .val{letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text);font-size:26px;font-weight:700;line-height:1.2}.stat-card .val{font-size:22px}.stat-action{margin-top:12px}.stat-grid,.cards,.stats{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin-bottom:24px;display:grid}.stats{margin:16px 0}.cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}.stat-grid>*,.cards>*,.stats>*{animation:fade-up var(--t-slow) var(--ease-out) backwards}.stat-grid>:first-child,.cards>:first-child,.stats>:first-child{animation-delay:30ms}.stat-grid>:nth-child(2),.cards>:nth-child(2),.stats>:nth-child(2){animation-delay:80ms}.stat-grid>:nth-child(3),.cards>:nth-child(3),.stats>:nth-child(3){animation-delay:.13s}.stat-grid>:nth-child(4),.cards>:nth-child(4),.stats>:nth-child(4){animation-delay:.18s}.stat-grid>:nth-child(5),.cards>:nth-child(5),.stats>:nth-child(5){animation-delay:.23s}.stat-grid>:nth-child(n+6),.cards>:nth-child(n+6),.stats>:nth-child(n+6){animation-delay:.28s}.badge,.cm-badge{border-radius:var(--r-full);letter-spacing:.005em;white-space:nowrap;transition:background var(--t-fast) var(--ease);border:1px solid #0000;align-items:center;gap:5px;padding:3px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.badge.ok,.cm-badge-green{background:var(--success-bg);color:var(--success);border-color:var(--success-bd)}.badge.err,.cm-badge-red{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-bd)}.badge.prog,.cm-badge-orange{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-bd)}.badge.draft,.badge.arch,.badge.no,.cm-badge-gray{background:var(--slate-100);color:var(--muted-foreground);border-color:var(--slate-200)}.badge.ready,.badge.sending{background:var(--info-bg);color:var(--brand-700);border-color:var(--info-bd)}.badge.sending:before{content:"";background:var(--brand-600);width:6px;height:6px;animation:pulse-dot 1.15s var(--ease) infinite;border-radius:50%}.table-wrap{border-radius:var(--r-lg);overflow-x:auto}.table,.cm-table{border-collapse:separate;border-spacing:0;width:100%;font-size:14px}.table th,.cm-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-foreground);background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap;padding:11px 16px;font-size:11.5px;font-weight:600}.table th:first-child,.cm-table th:first-child{border-top-left-radius:var(--r-lg)}.table th:last-child,.cm-table th:last-child{border-top-right-radius:var(--r-lg)}.table td,.cm-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:13px 16px}.table tbody tr:last-child td,.cm-table tbody tr:last-child td{border-bottom:none}.table tbody tr,.cm-table tbody tr{transition:background var(--t-fast) var(--ease);animation:row-in .34s var(--ease-out) backwards}.table tbody tr:hover,.cm-table tbody tr:hover{background:var(--surface-hover)}.table tbody tr:first-child,.cm-table tbody tr:first-child{animation-delay:20ms}.table tbody tr:nth-child(2),.cm-table tbody tr:nth-child(2){animation-delay:45ms}.table tbody tr:nth-child(3),.cm-table tbody tr:nth-child(3){animation-delay:70ms}.table tbody tr:nth-child(4),.cm-table tbody tr:nth-child(4){animation-delay:95ms}.table tbody tr:nth-child(5),.cm-table tbody tr:nth-child(5){animation-delay:.12s}.table tbody tr:nth-child(6),.cm-table tbody tr:nth-child(6){animation-delay:.145s}.table tbody tr:nth-child(7),.cm-table tbody tr:nth-child(7){animation-delay:.17s}.table tbody tr:nth-child(8),.cm-table tbody tr:nth-child(8){animation-delay:.195s}.table tbody tr:nth-child(9),.cm-table tbody tr:nth-child(9){animation-delay:.22s}.table tbody tr:nth-child(n+10),.cm-table tbody tr:nth-child(n+10){animation-delay:.245s}.table th.actions,.cm-table th.actions,.table th.num,.cm-table th.num{text-align:right}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.actions{text-align:right;white-space:nowrap}.actions .btn+.btn{margin-left:4px}.subject{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.desc{color:var(--muted-foreground);margin-top:2px;font-size:12px}.err-note{color:var(--danger);margin-top:3px;font-size:11px}.link{color:var(--accent);cursor:pointer;background-image:linear-gradient(var(--brand-300), var(--brand-300));transition:background-size var(--t) var(--ease), color var(--t-fast) var(--ease);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1.5px;font-weight:600;text-decoration:none}.link:hover{color:var(--brand-700);background-size:100% 1.5px}.alert,.cm-form-error,.warn-box,.warn{border-radius:var(--r);animation:fade-down var(--t) var(--ease-out);border:1px solid #0000;margin-bottom:14px;padding:11px 14px;font-size:13.5px}.alert.error,.cm-form-error{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-bd)}.alert.success{background:var(--success-bg);color:var(--success);border-color:var(--success-bd)}.warn-box,.warn{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-bd);margin-top:10px}.empty,.cm-empty{text-align:center;color:var(--muted-foreground);border-radius:var(--r-lg);animation:fade-up var(--t-slow) var(--ease-out);padding:52px 24px}.empty{border:1px dashed var(--border-strong);background:radial-gradient(420px 160px at 50% 0%, var(--brand-50) 0%, transparent 70%), var(--surface)}.empty p:first-child,.cm-empty p:first-child{color:var(--text);font-size:15px;font-weight:600}.empty p,.cm-empty p{margin:0 0 8px}.empty .btn,.cm-empty .cm-btn{margin-top:8px}.cm-spinner,.spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;flex:none;width:15px;height:15px;animation:.65s linear infinite spin;display:inline-block}.cm-spinner-dark{border-color:var(--brand-100);border-top-color:var(--brand-600)}.pad,.pad-sm{color:var(--muted-foreground);align-items:center;gap:10px;display:flex}.pad{padding:28px 4px}.pad-sm{padding:12px 4px}.pad:before,.pad-sm:before{content:"";border:2px solid var(--brand-100);border-top-color:var(--brand-600);border-radius:50%;flex:none;width:15px;height:15px;animation:.65s linear infinite spin}.skeleton{background:var(--slate-100);border-radius:var(--r-xs);position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffffbf,#0000);animation:1.35s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}.bar{background:var(--slate-100);border-radius:var(--r-full);height:9px;margin:12px 0 6px;overflow:hidden;box-shadow:inset 0 1px 2px #0f172a0f}.bar-fill{border-radius:var(--r-full);background:linear-gradient(90deg, var(--brand-500), var(--brand-400)), repeating-linear-gradient(45deg, #ffffff2e 0 7px, transparent 7px 14px);background-blend-mode:overlay;height:100%;transition:width .6s var(--ease-out);background-size:100% 100%,28px 28px;animation:.9s linear infinite bar-stripes}.modal-backdrop{-webkit-backdrop-filter:blur(4px);z-index:50;animation:fade-in var(--t) var(--ease);background:#0f172a6b;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--sh-xl);width:440px;max-width:100%;max-height:90vh;animation:scale-in .26s var(--ease-out);padding:24px;overflow-y:auto}.modal.wide{width:900px}.modal h3{margin-top:0;font-size:17px}.modal-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.modal-head h3{margin:0}.modal-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.mode-tabs,.device-toggle{gap:8px;margin-bottom:16px;display:flex}.device-toggle{margin-bottom:0}.tab,.device-btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text-2);border-radius:var(--r);cursor:pointer;font:inherit;transition:all var(--t-fast) var(--ease);flex:1;padding:10px 14px;font-size:13.5px;font-weight:500}.device-btn{border-radius:var(--r-sm);flex:none;padding:6px 13px;font-size:12px}.tab:hover,.device-btn:hover{border-color:var(--brand-300);color:var(--text);background:var(--brand-50)}.tab.active,.device-btn.active{border-color:var(--brand-400);background:var(--brand-50);color:var(--brand-700);box-shadow:inset 0 0 0 1px var(--brand-200);font-weight:600}.page{animation:fade-up .3s var(--ease-out)}.page.narrow{max-width:720px}.page-head,.cm-row{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.cm-row{align-items:center}.page-head h1,.cm-row h1{margin:0}.page-head .muted,.cm-row .cm-muted{margin:4px 0 0}.muted,.cm-muted{color:var(--muted-foreground);font-size:14px}.small{font-size:12px}.center{text-align:center}.grow{flex:1;min-width:0}.wide{width:100%}.toolbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-xs);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;padding:12px 14px;display:flex}.toolbar .input,.toolbar .cm-input,.toolbar .cm-select{box-shadow:none}.search{width:280px;max-width:100%}.sel{width:190px}.back{color:var(--muted-foreground);cursor:pointer;transition:color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);background:0 0;border:0;align-items:center;gap:5px;margin-bottom:6px;padding:0;font-size:13px;font-weight:500;display:inline-flex}.back:before{content:"←";transition:transform var(--t-fast) var(--ease);font-size:14px}.back:hover{color:var(--accent)}.back:hover:before{transform:translate(-3px)}.meta-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.actions-top{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row{gap:10px;margin-bottom:12px;display:flex}.mapping-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.cancel-row,.test-row{gap:8px;display:flex}.test-block{margin-top:16px}.test-block h4{margin:0 0 8px}.test-results{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.launch-opts{flex-direction:column;gap:10px;display:flex}.info-grid{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}.editor-head,.preview-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.editor-head h3,.preview-head h3{margin:0}.editor-actions{justify-content:flex-end;gap:10px;margin-top:12px;display:flex}.editor{resize:vertical;min-height:280px}.name-input{width:360px;max-width:100%;font-size:17px;font-weight:700}.vars-note{color:var(--muted-foreground);margin-bottom:14px;font-size:13px}dl{grid-template-columns:118px 1fr;gap:8px 12px;margin:0;font-size:13.5px;display:grid}dt{color:var(--muted-foreground)}dd{overflow-wrap:anywhere;margin:0}.pick-list{border:1px solid var(--border);border-radius:var(--r);background:var(--surface);max-height:280px;overflow-y:auto}.pick{border-bottom:1px solid var(--border);cursor:pointer;transition:background var(--t-fast) var(--ease);align-items:center;gap:10px;padding:10px 13px;font-size:14px;display:flex}.pick:last-child{border-bottom:none}.pick:hover{background:var(--surface-hover)}.pick .muted{margin-left:auto}.iframe-shell,.preview-frame-wrap{border:1px solid var(--border);border-radius:var(--r-md);background:var(--slate-100);transition:all var(--t) var(--ease);overflow:hidden}.iframe-shell{justify-content:center;padding:18px;display:flex}.preview-frame{border-radius:var(--r-xs);background:#fff;border:0}.iframe-shell .preview-frame{height:460px;box-shadow:var(--sh-md)}.iframe-shell.desktop .preview-frame{width:600px;max-width:100%}.iframe-shell.mobile .preview-frame{width:375px;max-width:100%}.preview-frame-wrap .preview-frame{width:100%;height:430px}.app-shell{min-height:100vh;display:flex}.app-sidebar{width:var(--sidebar-w);z-index:40;background:var(--surface);border-right:1px solid var(--border);transition:width var(--t) var(--ease), transform var(--t-slow) var(--ease-out);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.app-sidebar .logo{height:var(--header-h);letter-spacing:-.03em;color:var(--text);border-bottom:1px solid var(--border);white-space:nowrap;transition:opacity var(--t-fast) var(--ease);align-items:center;gap:9px;padding:0 18px;font-size:17px;font-weight:700;text-decoration:none;display:flex;overflow:hidden}.app-sidebar .logo:hover{opacity:.78}.app-sidebar .logo:focus-visible{box-shadow:none;outline:2px solid var(--brand-400);outline-offset:-3px}.logo-mark-img{flex:none;width:auto;height:25px}.logo-word-img{flex:none;width:auto;height:18px}.app-nav{flex:1;padding:14px 12px;overflow:hidden auto}.app-nav a{border-radius:var(--r);color:var(--text-2);white-space:nowrap;transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);align-items:center;gap:11px;margin-bottom:2px;padding:9px 12px;font-size:13.5px;font-weight:500;text-decoration:none;display:flex;position:relative}.app-nav a svg{width:17px;height:17px;transition:transform var(--t) var(--ease-spring);flex:none}.app-nav a:hover{background:var(--slate-100);color:var(--text)}.app-nav a:hover svg{transform:scale(1.12)}.app-nav a.router-link-active{background:var(--brand-50);color:var(--brand-700);font-weight:600}.app-nav a.router-link-active:before{content:"";border-radius:0 var(--r-full) var(--r-full) 0;background:var(--brand-600);width:3px;height:20px;animation:nav-mark var(--t) var(--ease-spring) forwards;position:absolute;top:50%;left:-12px;transform:translateY(-50%)scaleY(0)}@keyframes nav-mark{to{transform:translateY(-50%)scaleY(1)}}.app-nav .nav-group{text-transform:uppercase;letter-spacing:.08em;color:var(--slate-400);white-space:nowrap;padding:18px 12px 6px;font-size:10.5px;font-weight:700}.sidebar-foot{border-top:1px solid var(--border);padding:12px}.app-shell.is-collapsed .app-sidebar{width:var(--sidebar-rail)}.app-shell.is-collapsed .app-main{margin-left:var(--sidebar-rail)}.app-shell.is-collapsed .app-sidebar .logo{justify-content:center;padding:0}.app-shell.is-collapsed .app-sidebar .logo .logo-text,.app-shell.is-collapsed .app-nav a .nav-label,.app-shell.is-collapsed .app-nav .nav-group{display:none}.app-shell.is-collapsed .app-nav a{justify-content:center;padding:10px}.app-shell.is-collapsed .app-nav a:after{content:attr(data-label);background:var(--slate-900);color:#fff;border-radius:var(--r-xs);box-shadow:var(--sh-md);opacity:0;pointer-events:none;transition:opacity var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);z-index:60;padding:5px 9px;font-size:12px;position:absolute;left:calc(100% + 10px);transform:translate(-4px)}.app-shell.is-collapsed .app-nav a:hover:after{opacity:1;transform:none}.app-main{min-width:0;margin-left:var(--sidebar-w);min-height:100vh;transition:margin-left var(--t) var(--ease);flex-direction:column;flex:1;display:flex}.app-header{z-index:30;height:var(--header-h);-webkit-backdrop-filter:saturate(180%)blur(12px);border-bottom:1px solid var(--border);background:#ffffffc7;justify-content:space-between;align-items:center;gap:16px;padding:0 24px;display:flex;position:sticky;top:0}.header-left,.header-right{align-items:center;gap:12px;display:flex}.icon-btn{border-radius:var(--r-sm);width:34px;height:34px;color:var(--text-2);cursor:pointer;transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), transform var(--t) var(--ease-spring);background:0 0;border:1px solid #0000;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--slate-100);color:var(--text)}.icon-btn:active{transform:scale(.92)}.icon-btn svg{width:18px;height:18px}.org-chip{border-radius:var(--r-full);background:var(--brand-50);border:1px solid var(--brand-100);color:var(--brand-700);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:7px;max-width:320px;padding:5px 12px;font-size:12.5px;font-weight:600;display:inline-flex;overflow:hidden}.user-name{font-size:13.5px;font-weight:600}.avatar{background:linear-gradient(140deg, var(--brand-500), var(--brand-700));color:#fff;letter-spacing:.02em;width:33px;height:33px;box-shadow:var(--sh-brand);transition:transform var(--t) var(--ease-spring);border-radius:50%;place-items:center;font-size:12.5px;font-weight:700;display:inline-grid}.avatar:hover{transform:scale(1.06)}.app-content{flex:1;width:100%;max-width:1240px;padding:28px}.sidebar-scrim{-webkit-backdrop-filter:blur(3px);z-index:39;animation:fade-in var(--t) var(--ease);background:#0f172a6b;position:fixed;inset:0}.disabled-link{color:var(--slate-400);opacity:.6;pointer-events:none;align-items:center;gap:11px;margin-bottom:2px;padding:9px 12px;font-size:13.5px;font-weight:500;text-decoration:none;display:flex}.page-enter-active{transition:opacity .24s var(--ease-out), transform .24s var(--ease-out)}.page-leave-active{transition:opacity .12s var(--ease), transform .12s var(--ease);width:100%;position:absolute}.page-enter-from{opacity:0;transform:translateY(8px)}.page-leave-to{opacity:0;transform:translateY(-4px)}.auth-wrap{background:radial-gradient(900px 460px at 50% -12%, var(--brand-100) 0%, transparent 62%), radial-gradient(700px 380px at 92% 108%, var(--brand-50) 0%, transparent 60%), var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex;position:relative;overflow:hidden}.auth-wrap:before{content:"";background-image:linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);opacity:.55;pointer-events:none;background-size:44px 44px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(680px 420px at 50% 42%,#000 0%,#0000 78%);mask-image:radial-gradient(680px 420px at 50% 42%,#000 0%,#0000 78%)}.auth-card{width:100%;max-width:430px;animation:scale-in .42s var(--ease-out);position:relative}.auth-card .cm-card{border-radius:var(--r-xl);box-shadow:var(--sh-lg)}.auth-logo{flex-direction:column;align-items:center;gap:12px;margin-bottom:14px;display:flex}.auth-logo-mark{width:auto;height:58px}.auth-logo-word{width:auto;height:33px}.auth-baseline{letter-spacing:.13em;text-transform:uppercase;color:var(--slate-600);text-align:center;text-wrap:balance;padding-top:13px;font-size:10px;font-weight:700;position:relative}.auth-baseline:before{content:"";border-radius:var(--r-full);background:var(--brand-400);transform-origin:50%;width:116px;height:2px;animation:rule-in .62s var(--ease-out) .18s forwards;position:absolute;top:0;left:50%;transform:translate(-50%)scaleX(0)}.auth-baseline b{color:var(--brand-600);font-weight:700}@keyframes rule-in{to{transform:translate(-50%)scaleX(1)}}.auth-tag{text-align:center;color:var(--muted-foreground);margin-bottom:24px;font-size:13.5px}.auth-footer{text-align:center;color:var(--muted-foreground);margin-top:18px;font-size:13.5px}.auth-footer a{color:var(--accent);font-weight:600;text-decoration:none}.auth-footer a:hover{text-decoration:underline}.cm-toasts{z-index:100;pointer-events:none;flex-direction:column;gap:10px;display:flex;position:fixed;top:18px;right:18px}.cm-toast{border-radius:var(--r-md);color:#fff;min-width:260px;max-width:400px;box-shadow:var(--sh-lg);pointer-events:auto;align-items:center;gap:9px;padding:12px 16px;font-size:13.5px;font-weight:500;display:flex}.cm-toast:before{content:"";width:7px;height:7px;animation:pulse-dot 1.4s var(--ease) infinite;background:#ffffffe6;border-radius:50%;flex:none}.cm-toast-success{background:linear-gradient(135deg,#059669,#047857)}.cm-toast-error{background:linear-gradient(135deg,#ef4444,#b91c1c)}@media (width<=1180px){.app-content{padding:24px 20px}.info-grid{grid-template-columns:1fr}}@media (width<=1024px){:root{--sidebar-w:216px}.name-input,.modal.wide{width:100%}}@media (width<=900px){.app-sidebar{box-shadow:none;width:264px;transform:translate(-100%)}.app-shell.is-open .app-sidebar{box-shadow:var(--sh-xl);transform:none}.app-main,.app-shell.is-collapsed .app-main{margin-left:0}.app-header{padding:0 16px}.app-content{padding:20px 16px}.org-chip{display:none}.info-grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}}@media (width<=640px){h1{font-size:21px}.page-head,.cm-row{flex-direction:column;align-items:stretch}.page-head>div:last-child:not(:first-child),.cm-row>div:last-child:not(:first-child){gap:8px;display:flex}.page-head .btn,.page-head .cm-btn,.cm-row .cm-btn{flex:1;justify-content:center}.toolbar{flex-direction:column;align-items:stretch}.search,.sel,.toolbar .input,.toolbar .cm-input,.toolbar .cm-select{width:100%;max-width:100%}.stats,.stat-grid,.cards{grid-template-columns:1fr}.user-name{display:none}.table th,.cm-table th,.table td,.cm-table td{padding:11px 12px}.actions{text-align:left}dl{grid-template-columns:1fr;gap:2px 0}dt{margin-top:8px;font-size:12px}.row,.cancel-row,.test-row,.mapping-row,.modal-actions,.editor-actions{flex-direction:column}.modal-actions .btn,.modal-actions .cm-btn{width:100%}.modal-backdrop{align-items:flex-end;padding:0}.modal{border-radius:var(--r-xl) var(--r-xl) 0 0;width:100%;max-height:92vh;animation:sheet-up .3s var(--ease-out)}.cm-toasts{inset:auto 16px 16px}.cm-toast{min-width:0;max-width:none}}@keyframes sheet-up{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.btn:hover,.cm-btn:hover,.stat-card:hover,.stat:hover,.avatar:hover{transform:none!important}}@media print{.app-sidebar,.app-header,.cm-toasts,.toolbar,.actions{display:none!important}.app-main{margin-left:0!important}.card,.cm-card{box-shadow:none;border-color:#ccc}}.card.table-wrap{padding:0}.card.table-wrap>h3{margin:0;padding:18px 20px 4px}.card.table-wrap>.table:first-child th:first-child{border-top-left-radius:var(--r-lg)}.card.table-wrap>.table:first-child th:last-child{border-top-right-radius:var(--r-lg)}.app-content{margin-inline:auto}.load-more{text-align:center;border-top:1px solid var(--border);padding:14px}.hstack{align-items:center;gap:10px;display:flex}.hstack-top{align-items:flex-start;gap:10px;display:flex}.hstack-wrap{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.container-sm{max-width:580px}.container-md{max-width:680px}.container-lg{max-width:780px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.m-0{margin:0}.text-right{text-align:right}.fw-600{font-weight:600}.consent-box{border:1px solid var(--brand-100);background:var(--brand-50);border-radius:var(--r);padding:13px 15px}.consent-box label{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.consent-box input[type=checkbox]{flex:none;margin-top:3px}@media (width<=640px){.grid-2{grid-template-columns:1fr}.hstack,.hstack-top{flex-wrap:wrap}}.auth-title{margin:0 0 4px;font-size:19px}.section-gap{margin:22px 0 14px}.block{display:block}.consent-inline{align-items:flex-end;display:flex}.consent-check{cursor:pointer;color:var(--text-2);align-items:center;gap:8px;padding-bottom:10px;font-size:13px;display:flex}.consent-check:hover{color:var(--text)}.splash{z-index:200;background:var(--splash-bg);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.splash-video{aspect-ratio:600/338;width:min(440px,76vw);height:auto;display:block;-webkit-mask-image:radial-gradient(#000 50%,#0000 86%);mask-image:radial-gradient(#000 50%,#0000 86%)}.splash-static{animation:fade-in var(--t) var(--ease);flex-direction:column;align-items:center;gap:14px;display:flex}.splash-mark{width:auto;height:62px}.splash-word{width:auto;height:34px}.splash-leave-active{transition:opacity .42s var(--ease)}.splash-leave-to{opacity:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
