:root{--sp-xs:4px;--sp-sm:8px;--sp-md:12px;--sp-lg:16px;--sp-xl:24px;--sp-2xl:32px;--sp-3xl:48px;--fs-xs:11px;--fs-sm:12px;--fs-base:13px;--fs-md:14px;--fs-lg:16px;--fs-xl:20px;--fs-2xl:26px;--r-sm:4px;--r-md:6px;--r-lg:10px;--r-xl:14px;--brand-from:#f23c22;--brand-to:#ff7849;--brand-solid:#e8503a;--app-bg:#f2f3f5;--panel-bg:#fff;--panel-bg-alt:#f7f8fa;--input-bg:#fff;--canvas-bg:#eceef1;--text:#18181b;--text-muted:#6b7280;--text-faint:#9aa1ab;--border:#e3e6ea;--border-strong:#cfd4da;--accent:var(--brand-solid);--accent-soft:#e8503a1a;--danger:#dc2626;--success:#16a34a;--warning:#d97706;--shadow-sm:0 1px 2px #10141c0f;--shadow-md:0 4px 16px #10141c1a;--shadow-lg:0 12px 40px #10141c29;--font-ui:"Inter", "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif}html[data-theme=dark]{--app-bg:#101014;--panel-bg:#18181d;--panel-bg-alt:#202028;--input-bg:#202028;--canvas-bg:#0b0b0e;--text:#f4f4f5;--text-muted:#a1a1aa;--text-faint:#71717a;--border:#2b2b33;--border-strong:#3d3d47;--accent:#ff7849;--accent-soft:#ff784924;--danger:#f87171;--success:#4ade80;--warning:#fbbf24;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 16px #00000073;--shadow-lg:0 12px 40px #0000008c}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--app-bg);color:var(--text);font-family:var(--font-ui);font-size:var(--fs-base);-webkit-font-smoothing:antialiased;overflow:hidden}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:content-box;border:3px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:content-box}.app-shell{grid-template-rows:auto 1fr;height:100%;min-height:0;display:grid}.app-body{grid-template-columns:300px 1fr 320px;min-height:0;display:grid;overflow:hidden}@media (max-width:1180px){.app-body{grid-template-columns:260px 1fr}}.topbar{align-items:center;gap:var(--sp-md);height:52px;padding:0 var(--sp-lg);background:var(--panel-bg);border-bottom:1px solid var(--border);display:flex}.topbar-brand{align-items:center;gap:var(--sp-sm);font-weight:650;font-size:var(--fs-md);letter-spacing:.01em;white-space:nowrap;display:flex}.brand-mark{border-radius:var(--r-md);background:linear-gradient(135deg, var(--brand-from), var(--brand-to));color:#fff;width:24px;height:24px;font-size:var(--fs-sm);place-items:center;font-weight:700;display:grid}.topbar-title{flex:1;min-width:0}.topbar-title input{width:100%;max-width:420px;padding:var(--sp-xs) var(--sp-sm);border-radius:var(--r-md);color:var(--text);font:inherit;font-size:var(--fs-md);background:0 0;border:1px solid #0000;outline:none;font-weight:550;transition:background .14s,border-color .14s}.topbar-title input:hover{background:var(--panel-bg-alt)}.topbar-title input:focus{background:var(--input-bg);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.topbar-actions{align-items:center;gap:var(--sp-sm);display:flex}.btn{justify-content:center;align-items:center;gap:var(--sp-xs);height:30px;padding:0 var(--sp-md);border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel-bg);color:var(--text);font:inherit;font-size:var(--fs-sm);cursor:pointer;white-space:nowrap;font-weight:500;transition:background .14s,border-color .14s,color .14s,transform 80ms;display:inline-flex}.btn:hover:not(:disabled){background:var(--panel-bg-alt);border-color:var(--border-strong)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg, var(--brand-from), var(--brand-to));color:#fff;border-color:#0000;font-weight:600}.btn-primary:hover:not(:disabled){filter:brightness(1.06);border-color:#0000}.btn-ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--panel-bg-alt);color:var(--text);border-color:#0000}.btn-sm{height:24px;padding:0 var(--sp-sm);font-size:var(--fs-xs)}.btn-icon{width:30px;padding:0}.panel{background:var(--panel-bg);flex-direction:column;min-height:0;display:flex;overflow:hidden}.panel-left{border-right:1px solid var(--border)}.panel-right{border-left:1px solid var(--border)}.panel-head{justify-content:space-between;align-items:center;gap:var(--sp-sm);height:38px;padding:0 var(--sp-md);border-bottom:1px solid var(--border);flex:none;display:flex}.panel-title{font-size:var(--fs-sm);letter-spacing:.04em;color:var(--text-muted);text-transform:uppercase;font-weight:650}.panel-scroll{overscroll-behavior:contain;flex:1;min-height:0;overflow-y:auto}.panel-section{padding:var(--sp-md);border-bottom:1px solid var(--border)}.panel-section:last-child{border-bottom:none}.section-label{margin-bottom:var(--sp-sm);font-size:var(--fs-xs);letter-spacing:.04em;color:var(--text-faint);text-transform:uppercase;justify-content:space-between;align-items:center;font-weight:650;display:flex}.theme-cats{gap:var(--sp-xs);padding:var(--sp-md);border-bottom:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.theme-cats::-webkit-scrollbar{display:none}.theme-cats .cat-chip{text-align:center;text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.cat-chip{padding:var(--sp-xs) var(--sp-md);border:1px solid var(--border);border-radius:var(--r-full);background:var(--panel-bg);color:var(--text-muted);font:inherit;font-size:var(--fs-xs);cursor:pointer;white-space:nowrap;font-weight:550;transition:all .14s}.cat-chip:hover{border-color:var(--border-strong);color:var(--text)}.cat-chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.theme-grid{gap:var(--sp-md);padding:var(--sp-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.theme-card{gap:var(--sp-sm);padding:var(--sp-sm);border:1.5px solid var(--border);border-radius:var(--r-lg);background:var(--panel-bg);cursor:pointer;text-align:left;font:inherit;color:inherit;flex-direction:column;transition:border-color .16s,box-shadow .16s,transform .12s;display:flex}.theme-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.theme-card[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.theme-thumb{border-radius:var(--r-md);border:1px solid var(--border);height:104px;position:relative;overflow:hidden}.art-preview-inner{padding:var(--sp-md);font-size:9px;line-height:1.6}.art-preview-inner h1,.art-preview-inner h2,.art-preview-inner h3{background:0 0!important;border:none!important;margin:0 0 4px!important;padding:0!important;font-size:11px!important;line-height:1.25!important;display:block!important;transform:none!important}.art-preview-inner p{text-indent:0!important;margin:0 0 4px!important;font-size:8px!important;line-height:1.5!important}.art-preview-inner .art-mini-quote{border-radius:3px!important;margin:5px 0!important;padding:4px 6px!important;font-size:7.5px!important}.art-preview-inner .art-mini-div{opacity:.35;height:0;border-top:1px solid!important;margin:5px 0!important}.theme-meta{padding:0 var(--sp-xs) var(--sp-xs);flex-direction:column;gap:2px;display:flex}.theme-name{font-size:var(--fs-sm);color:var(--text);font-weight:600}.theme-tagline{font-size:var(--fs-xs);color:var(--text-faint);line-height:1.45}.canvas-wrap{background:var(--canvas-bg);background-image:radial-gradient(color-mix(in srgb, var(--border-strong) 60%, transparent) 1px, transparent 1px);background-size:22px 22px;min-height:0;position:relative;overflow:auto}.canvas-inner{padding:var(--sp-2xl) var(--sp-xl) 96px;justify-content:center;display:flex}.art-paper{border-radius:var(--r-xl);width:100%;max-width:720px;min-height:520px;box-shadow:var(--shadow-lg);padding:40px 44px 72px;position:relative;overflow:hidden}.art-body{position:relative}.art-block{border-radius:var(--r-md);transition:box-shadow .14s,background .14s;position:relative}.art-block:after{content:"";border-radius:var(--r-md);pointer-events:none;border:1.5px solid #0000;transition:border-color .14s,background .14s;position:absolute;inset:-3px}.art-block:hover:after{border-color:color-mix(in srgb, var(--accent) 40%, transparent);background:color-mix(in srgb, var(--accent) 4%, transparent)}.art-block[data-selected=true]:after{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, transparent)}.block-actions{border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel-bg);box-shadow:var(--shadow-md);z-index:5;gap:2px;padding:2px;display:flex;position:absolute;top:-30px;right:0}.block-action{border-radius:var(--r-sm);width:24px;height:22px;color:var(--text-muted);font-size:var(--fs-xs);cursor:pointer;background:0 0;border:none;place-items:center;transition:background .12s,color .12s;display:grid}.block-action:hover{background:var(--panel-bg-alt);color:var(--text)}.block-action[data-danger=true]:hover{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger)}.art-editable{border-radius:var(--r-sm);outline:none;min-height:1em}.art-editable:empty:before{content:attr(data-placeholder);color:var(--text-faint);pointer-events:none}.art-editable:focus{box-shadow:0 0 0 2px var(--accent-soft)}.insert-marker{height:0;position:relative}.insert-marker:before{content:"";border-radius:var(--r-sm);background:color-mix(in srgb, var(--accent) 10%, transparent);border:1px dashed color-mix(in srgb, var(--accent) 45%, transparent);opacity:0;pointer-events:none;height:18px;transition:opacity .14s;position:absolute;top:-9px;left:0;right:0}.insert-marker:hover:before,.insert-marker[data-active=true]:before{opacity:1}.insert-marker-btn{align-items:center;gap:var(--sp-xs);height:22px;padding:0 var(--sp-sm);border:1px solid var(--accent);border-radius:var(--r-full);background:var(--panel-bg);color:var(--accent);font:inherit;font-size:var(--fs-xs);cursor:pointer;box-shadow:var(--shadow-sm);z-index:6;font-weight:600;display:none;position:absolute;top:-11px;left:50%;transform:translate(-50%)}.insert-marker:hover .insert-marker-btn,.insert-marker[data-active=true] .insert-marker-btn{display:inline-flex}.field{gap:var(--sp-xs);margin-bottom:var(--sp-md);flex-direction:column;display:flex}.field:last-child{margin-bottom:0}.field-label{font-size:var(--fs-xs);color:var(--text-muted);font-weight:600}.field-hint{font-size:var(--fs-xs);color:var(--text-faint);line-height:1.5}.input,.select,.textarea{width:100%;padding:var(--sp-xs) var(--sp-sm);border:1px solid var(--border);border-radius:var(--r-md);background:var(--input-bg);color:var(--text);font:inherit;font-size:var(--fs-sm);outline:none;transition:border-color .14s,box-shadow .14s}.input:hover,.select:hover,.textarea:hover{border-color:var(--border-strong)}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.textarea{resize:vertical;min-height:84px;line-height:1.6}.select{cursor:pointer;appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-muted) 50%), linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);padding-right:var(--sp-xl);background-position:calc(100% - 14px) 13px,calc(100% - 9px) 13px;background-repeat:no-repeat;background-size:5px 5px}.seg{border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel-bg-alt);gap:2px;padding:2px;display:inline-flex}.seg-btn{padding:var(--sp-xs) var(--sp-sm);border-radius:var(--r-sm);color:var(--text-muted);font:inherit;font-size:var(--fs-xs);cursor:pointer;background:0 0;border:none;font-weight:550;transition:background .12s,color .12s}.seg-btn:hover{color:var(--text)}.seg-btn[aria-pressed=true]{background:var(--panel-bg);color:var(--text);box-shadow:var(--shadow-sm)}.empty-hint{padding:var(--sp-xl) var(--sp-md);text-align:center;color:var(--text-faint);font-size:var(--fs-sm);line-height:1.7}.empty-hint strong{margin-bottom:var(--sp-xs);color:var(--text-muted);font-size:var(--fs-base);font-weight:600;display:block}.ai-panel{flex-direction:column;min-height:0;display:flex}.ai-input{width:100%;min-height:76px;padding:var(--sp-sm);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--input-bg);color:var(--text);font:inherit;font-size:var(--fs-sm);resize:vertical;outline:none;line-height:1.65;transition:border-color .14s,box-shadow .14s}.ai-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.ai-starts{gap:var(--sp-xs);flex-wrap:wrap;display:flex}.ai-start{padding:var(--sp-xs) var(--sp-sm);border:1px solid var(--border);border-radius:var(--r-full);background:var(--panel-bg);color:var(--text-muted);font:inherit;font-size:var(--fs-xs);cursor:pointer;text-align:left;transition:all .14s}.ai-start:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.ai-status{align-items:flex-start;gap:var(--sp-sm);padding:var(--sp-sm) var(--sp-md);border-radius:var(--r-md);font-size:var(--fs-xs);line-height:1.6;display:flex}.ai-status[data-tone=info]{background:var(--panel-bg-alt);color:var(--text-muted)}.ai-status[data-tone=error]{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.ai-status[data-tone=demo]{background:color-mix(in srgb, var(--warning) 14%, transparent);color:var(--warning)}.ai-stream{max-height:120px;padding:var(--sp-sm);border-radius:var(--r-md);background:var(--panel-bg-alt);font-family:SF Mono,Consolas,monospace;font-size:var(--fs-xs);color:var(--text-muted);white-space:pre-wrap;word-break:break-all;line-height:1.6;overflow-y:auto}.ai-preview{border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:var(--sp-md);overflow:hidden}.ai-preview-head{align-items:center;gap:var(--sp-sm);padding:var(--sp-sm) var(--sp-md);background:var(--panel-bg-alt);border-bottom:1px solid var(--border);font-size:var(--fs-xs);color:var(--text-muted);font-weight:600;display:flex}.ai-preview-body{max-height:260px;padding:var(--sp-md);background:var(--panel-bg);overflow-y:auto}.ai-preview-actions{gap:var(--sp-sm);padding:var(--sp-sm) var(--sp-md);border-top:1px solid var(--border);background:var(--panel-bg-alt);display:flex}.task-strip{align-items:center;gap:var(--sp-sm);padding:var(--sp-xs) var(--sp-lg);background:var(--panel-bg);border-bottom:1px solid var(--border);font-size:var(--fs-xs);color:var(--text-muted);flex:none;display:flex}.task-strip[data-tone=error]{color:var(--danger);background:color-mix(in srgb, var(--danger) 8%, var(--panel-bg))}.task-strip[data-tone=ok]{color:var(--success);background:color-mix(in srgb, var(--success) 8%, var(--panel-bg))}.task-dot{background:currentColor;border-radius:50%;flex:none;width:7px;height:7px}.task-dot[data-running=true]{animation:1.1s ease-in-out infinite task-pulse}@keyframes task-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.75)}}.modal-mask{z-index:60;padding:var(--sp-xl);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0c0e128c;place-items:center;display:grid;position:fixed;inset:0}.modal{border:1px solid var(--border);border-radius:var(--r-xl);background:var(--panel-bg);width:100%;max-width:520px;max-height:86vh;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow:hidden}.modal-head{padding:var(--sp-lg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.modal-head h2{font-size:var(--fs-lg);margin:0;font-weight:650}.modal-body{min-height:0;padding:var(--sp-lg);flex:1;overflow-y:auto}.modal-foot{justify-content:flex-end;gap:var(--sp-sm);padding:var(--sp-md) var(--sp-lg);border-top:1px solid var(--border);background:var(--panel-bg-alt);display:flex}.toast-wrap{left:50%;bottom:var(--sp-xl);z-index:80;gap:var(--sp-sm);pointer-events:none;flex-direction:column;display:flex;position:fixed;transform:translate(-50%)}.toast{padding:var(--sp-sm) var(--sp-lg);border:1px solid var(--border);border-radius:var(--r-full);background:var(--panel-bg);box-shadow:var(--shadow-md);font-size:var(--fs-sm);color:var(--text);animation:.2s ease-out toast-in}.toast[data-tone=error]{border-color:color-mix(in srgb, var(--danger) 45%, transparent);color:var(--danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:1180px){.app-body{grid-template-columns:1fr}.panel-left,.panel-right{z-index:40;width:300px;box-shadow:var(--shadow-lg);position:fixed;top:52px;bottom:0}.panel-left{left:0}.panel-right{right:0}.panel-left[data-hidden=true],.panel-right[data-hidden=true]{display:none}}
