:root{color-scheme:dark;font-family:Inter,Microsoft YaHei UI,sans-serif;line-height:1.5;font-weight:400;color:#edf2ff;background:#0b1020}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at top left,rgba(78,108,255,.22),transparent 32%),radial-gradient(circle at right bottom,rgba(0,220,170,.16),transparent 28%),#0b1020}button,input,select,textarea{font:inherit}button{cursor:pointer}input,select,textarea{width:100%;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:#0f172ab8;color:#f8fafc;padding:10px 12px}textarea{resize:vertical}#root,.auth-shell,.page-shell,.editor-shell,.editor-loading{min-height:100vh}.auth-shell{display:grid;place-items:center;padding:32px}.auth-card,.panel,.scene-card{border:1px solid rgba(255,255,255,.08);background:#0a1020d1;box-shadow:0 20px 50px #00000052;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.auth-card{width:100%;max-width:460px;border-radius:24px;padding:28px}.bridge-status-card,.bridge-status-banner{border-radius:16px;border:1px solid rgba(148,163,184,.2);background:#0f172a85}.bridge-status-card{margin:0 0 16px;padding:14px 16px}.bridge-status-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px;padding:14px 16px}.bridge-status-card-online,.bridge-status-banner-online{border-color:#34d3992e;background:#0596691a}.bridge-status-card-offline,.bridge-status-banner-offline{border-color:#f871712e;background:#7f1d1d2e}.bridge-status-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.bridge-status-body,.bridge-status-banner p{margin:0;color:#cbd5e1;font-size:14px;line-height:1.6}.bridge-status-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.compact-button{padding:6px 12px;font-size:12px;white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:#6366f12e;color:#c7d2fe;font-size:12px}.auth-card h1,.topbar h1,.editor-scene-name,.toolbar h2,.panel h3{margin:12px 0 8px}.auth-subtitle,.auth-helper-text,.panel-subtitle,.toolbar p,.editor-scene-subtitle,.scene-card-meta,.scene-card-description,.empty-inline{color:#94a3b8}.auth-form,.form-stack,.catalog-list,.release-list{display:grid;gap:14px}.auth-action-row{display:grid;grid-template-columns:1fr auto;gap:12px}.auth-form label,.form-stack label{display:grid;gap:8px;font-size:14px}.primary-button,.ghost-button,.catalog-item,.scene-card{border-radius:14px;border:1px solid transparent;transition:transform .16s ease,border-color .16s ease,background .16s ease}.primary-button,.ghost-button{padding:10px 16px}.primary-button{background:linear-gradient(135deg,#6366f1,#0ea5e9);color:#fff}.ghost-button{background:#ffffff0d;color:#e2e8f0;border-color:#ffffff14}.primary-button:hover,.ghost-button:hover,.catalog-item:hover,.scene-card:hover{transform:translateY(-1px);border-color:#818cf880}.primary-button:disabled,.ghost-button:disabled{opacity:.6;cursor:default}.error-banner,.success-banner,.info-banner{margin:0 24px 16px;padding:12px 14px;border-radius:14px}.error-banner{background:#7f1d1d52;border:1px solid rgba(248,113,113,.24);color:#fecaca}.success-banner{background:#0596693d;border:1px solid rgba(52,211,153,.24);color:#a7f3d0}.info-banner{background:#1e40af3d;border:1px solid rgba(96,165,250,.24);color:#bfdbfe}.sync-feedback-banner{display:flex;align-items:center;justify-content:space-between;gap:16px}.sync-feedback-banner small{color:inherit;opacity:.8}.floating-toast{position:fixed;right:24px;bottom:24px;z-index:30;max-width:min(420px,calc(100vw - 32px));padding:12px 14px;border-radius:14px;border:1px solid rgba(52,211,153,.24);background:#059669eb;color:#ecfdf5;box-shadow:0 20px 50px #00000052}.page-shell{padding:24px}.topbar,.toolbar,.editor-topbar,.canvas-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.topbar,.toolbar{margin-bottom:20px}.topbar-actions,.editor-topbar-left,.editor-topbar-right{display:flex;align-items:center;gap:12px}.user-pill,.status-pill,.canvas-stats{display:grid;gap:2px;padding:10px 12px;border-radius:14px;background:#ffffff0d}.scene-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}.scene-query-panel{display:grid;gap:16px;margin-bottom:20px}.scene-query-form{display:grid;grid-template-columns:minmax(240px,1.4fr) minmax(180px,.8fr) auto;gap:14px;align-items:end}.scene-query-field{display:grid;gap:8px;font-size:14px}.scene-query-actions{display:flex;align-items:center;gap:12px}.scene-query-summary,.scene-pagination,.scene-highlight-banner{display:flex;align-items:center;justify-content:space-between;gap:16px}.scene-pagination{margin-top:20px;justify-content:center}.scene-pagination-text{color:#cbd5e1}.scene-card{display:grid;grid-template-columns:72px 1fr;gap:14px;padding:16px;text-align:left;background:#0f172ad1}.scene-card.is-highlighted{border-color:#34d399e6;box-shadow:0 0 0 3px #34d39933,0 20px 50px #00000052}.scene-preview{display:grid;place-items:center;border-radius:18px;background:linear-gradient(135deg,#6366f166,#38bdf857);font-size:28px;font-weight:700}.scene-card-body{display:grid;gap:6px}.scene-card-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.scene-card-title{font-weight:700;font-size:16px}.empty-state,.editor-loading{display:grid;place-items:center;gap:12px;color:#94a3b8;text-align:center}.editor-shell{display:grid;grid-template-rows:auto auto auto auto 1fr;min-height:100vh}.editor-topbar{padding:18px 24px;border-bottom:1px solid rgba(255,255,255,.08);background:#080d1ce0}.editor-content{position:relative;overflow:auto;min-height:0;padding:0 0 24px;display:flex;flex-direction:column}.editor-canvas-full{width:100%;min-width:0;padding:0}.floating-panel{position:absolute;top:0;bottom:0;z-index:15;display:flex;flex-direction:column;border-radius:18px;border:1px solid rgba(255,255,255,.1);background:#0e162af2;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 8px 32px #00000073,0 0 0 1px #818cf81a;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease;transform:translate(0);opacity:1}.floating-panel-left{left:24px;width:280px}.floating-panel-right{right:24px;width:320px}.floating-panel.is-collapsed{transform:translate(-120%);opacity:0;pointer-events:none}.floating-panel-left.is-collapsed{transform:translate(-120%)}.floating-panel-right.is-collapsed{transform:translate(120%)}.floating-panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 12px;border-bottom:1px solid rgba(255,255,255,.06);font-weight:600;font-size:14px;color:#e2e8f0;flex-shrink:0}.floating-panel-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 18px 18px;display:flex;flex-direction:column;gap:16px}.floating-panel-body .panel{padding:0}.floating-panel-body .panel h3{font-size:13px;color:#94a3b8;margin:0 0 10px}.panel-close-btn{display:flex;align-items:center;justify-content:center;height:24px;padding:0 10px;border:none;border-radius:6px;background:#ffffff0f;color:#94a3b8;font-size:12px;cursor:pointer;white-space:nowrap;transition:background .2s,color .2s}.panel-close-btn:hover{background:#ef444433;color:#fca5a5}.panel-edge-tab{position:absolute;top:50%;transform:translateY(-50%);z-index:14;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;text-orientation:mixed;padding:16px 8px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#0e162ae6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#94a3b8;font-size:12px;font-weight:600;cursor:pointer;letter-spacing:2px;transition:opacity .3s ease,background .2s,color .2s;opacity:0;pointer-events:none}.panel-edge-tab.is-visible{opacity:1;pointer-events:auto}.panel-edge-tab:hover{background:#6366f140;color:#c7d2fe;border-color:#818cf859}.panel-edge-tab-left{left:0}.panel-edge-tab-right{right:0}.floating-action-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 24px 14px;padding:10px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:#0a1020c7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0;z-index:20}.floating-action-bar-actions{display:flex;align-items:center;gap:10px}.panel-toggle-btn{display:flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:#94a3b8;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;transition:background .2s,color .2s,border-color .2s}.panel-toggle-btn:hover{background:#818cf82e;color:#e2e8f0;border-color:#818cf866}.panel-toggle-btn.is-collapsed{background:#6366f133;color:#c7d2fe;border-color:#818cf859}.panel{border-radius:20px;padding:18px}.catalog-item{display:grid;gap:4px;padding:14px;text-align:left;background:#ffffff08;color:inherit}.catalog-category-tag{display:inline-block;margin-left:8px;padding:1px 8px;font-size:11px;font-weight:400;border-radius:10px;background:#6366f126;color:#a5b4fc;vertical-align:middle}.widget-actions{display:grid;gap:12px;padding:14px;border-radius:14px;background:#ffffff0a}.widget-action-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.widget-layer-text{color:#cbd5e1;font-size:13px}.danger-button{border-color:#f871713d;color:#fecaca}.pet-package-panel{display:grid;gap:12px;padding:14px;border-radius:14px;border:1px solid rgba(96,165,250,.18);background:#1e293b52}.pet-package-panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.pet-package-panel-meta{display:grid;gap:8px;color:#cbd5e1;font-size:13px}.pet-package-panel-actions{display:grid;gap:10px}.pet-package-upload{display:grid;gap:10px;margin-top:8px;padding:12px;border-radius:12px;border:1px solid rgba(148,163,184,.14);background:#0f172a47}.pet-package-upload-pet-id{margin:0}.pet-package-upload-file-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.pet-package-upload-file-row input[type=file]{padding:8px;font-size:13px}.canvas-panel{padding:0;border-radius:0}.scene-canvas{position:relative;aspect-ratio:16 / 9;width:100%;overflow:hidden}.canvas-widget{position:absolute;display:grid;align-content:start;gap:10px;padding:14px;border-radius:18px;background:#0f172ad6;border:1px solid rgba(255,255,255,.12);box-shadow:0 14px 30px #0f172a47;-webkit-user-select:none;user-select:none}.canvas-widget.is-selected{border-color:#60a5fae6;box-shadow:0 0 0 3px #60a5fa2e}.canvas-widget.is-hidden{opacity:.5}.widget-chip{display:inline-flex;width:fit-content;padding:4px 8px;border-radius:999px;font-size:12px;background:#6366f12e;color:#c7d2fe}.widget-title{font-weight:700}.widget-preview-text,.widget-preview-clock,.widget-preview-list,.widget-preview-server-memo,.widget-preview-server-lines{color:#e2e8f0}.widget-preview-pet{display:grid;gap:10px}.widget-preview-pet-stage{position:relative;min-height:120px;border-radius:14px;overflow:hidden;background:linear-gradient(180deg,#0f172a33,#0f172a94);border:1px solid rgba(148,163,184,.16)}.widget-preview-pet-home,.widget-preview-pet-bowl{position:absolute;bottom:14px;padding:6px 10px;border-radius:999px;font-size:12px;background:#0f172ab8;border:1px solid rgba(148,163,184,.18)}.widget-preview-pet-home{right:18px}.widget-preview-pet-bowl{left:18px}.widget-preview-pet-cat{position:absolute;left:50%;bottom:24px;transform:translate(-50%);display:grid;justify-items:center;gap:6px}.widget-preview-pet-cat-body{width:72px;height:44px;border-radius:999px;box-shadow:22px -12px 0 -8px currentColor;color:#ffffff5c}.widget-preview-pet-cat-label,.widget-preview-pet-meta{color:#e2e8f0;font-size:12px}.widget-preview-pet-meta{display:flex;justify-content:space-between;gap:12px}.widget-preview-clock{font-size:24px;font-weight:700}.widget-preview-list{margin:0;padding-left:18px}.widget-preview-server-memo{display:grid;gap:10px;padding:12px;border-radius:14px;background:linear-gradient(180deg,#fff8dc29,#facc150f);border:1px solid rgba(250,204,21,.18)}.widget-preview-server-status{font-weight:700;color:#fef3c7}.widget-preview-server-lines{margin:0;padding-left:18px;color:#e5e7eb}.checkbox-row{display:flex!important;align-items:center;gap:10px}.checkbox-row input{width:auto}.scene-fieldset{border:1px solid rgba(148,163,184,.18);border-radius:12px;padding:16px;margin:0}.scene-fieldset legend.scene-legend{font-size:14px;font-weight:600;color:#cbd5e1;padding:0 8px}.radio-row{display:flex;gap:20px;margin-bottom:14px}.radio-label{display:flex!important;flex-direction:row!important;align-items:center;gap:6px;cursor:pointer;font-size:13px;color:#e2e8f0}.radio-label input[type=radio]{width:auto;margin:0;cursor:pointer;accent-color:#3b82f6}.radio-label input[type=radio]:disabled+span{color:#64748b;cursor:not-allowed}.release-panel-header,.release-modal-header,.release-modal-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.release-item{display:grid;gap:4px;width:100%;padding:12px;border-radius:14px;background:#ffffff0a;border:1px solid transparent;color:inherit;text-align:left}.publish-job-item{gap:6px}.publish-job-item.is-queued{border-color:#facc152e}.publish-job-item.is-progress{border-color:#60a5fa33}.publish-job-item.is-success{border-color:#34d3992e}.publish-job-item.is-danger{border-color:#f871712e}.publish-job-item.is-muted{border-color:#94a3b82e}.release-item.is-selected{border-color:#60a5fab3;box-shadow:0 0 0 2px #60a5fa24}.status-badge{display:inline-flex;align-items:center;width:fit-content;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid transparent}.status-badge.is-queued{background:#facc151f;border-color:#facc1538;color:#fde68a}.status-badge.is-progress{background:#3b82f624;border-color:#60a5fa3d;color:#bfdbfe}.status-badge.is-success{background:#05966929;border-color:#34d3993d;color:#a7f3d0}.status-badge.is-danger{background:#7f1d1d47;border-color:#f8717138;color:#fecaca}.status-badge.is-muted{background:#64748b29;border-color:#94a3b838;color:#cbd5e1}.publish-job-action-row{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:18px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:#020617b8}.release-modal{width:min(720px,100%);border-radius:24px;border:1px solid rgba(255,255,255,.08);background:#0a1020f5;box-shadow:0 20px 50px #0006;padding:20px}.release-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0}.release-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.release-detail-item{display:grid;gap:6px;padding:14px;border-radius:16px;background:#ffffff0a}.release-detail-item span{color:#94a3b8;font-size:13px}.release-detail-item small{color:#94a3b8;font-size:12px;line-height:1.5}@media (max-width: 1180px){.floating-action-bar{margin:0 24px 14px}.floating-panel-left{width:240px;left:16px}.floating-panel-right{width:280px;right:16px}}@media (max-width: 900px){.topbar,.toolbar,.editor-topbar,.canvas-header,.release-panel-header,.release-modal-header,.release-modal-actions,.scene-query-summary,.scene-highlight-banner{flex-direction:column;align-items:stretch}.topbar-actions,.editor-topbar-left,.editor-topbar-right,.scene-query-actions{flex-wrap:wrap}.scene-query-form,.auth-action-row,.release-detail-grid,.widget-action-row{grid-template-columns:1fr}.page-shell,.editor-topbar,.auth-shell,.editor-content{padding-left:16px;padding-right:16px}.floating-action-bar{margin:0 16px 14px;flex-wrap:wrap}.modal-overlay{padding:16px}}@media (max-width: 640px){.scene-grid{grid-template-columns:1fr}.scene-card{grid-template-columns:56px 1fr}.scene-preview{font-size:22px}.scene-card-actions{flex-direction:column}.editor-topbar-right .ghost-button,.editor-topbar-right .primary-button,.scene-query-actions .ghost-button{width:100%}.floating-action-bar{margin:0 12px 10px;padding:8px 10px;flex-wrap:wrap;justify-content:center;gap:8px}.floating-action-bar-actions{flex-wrap:wrap;justify-content:center}.bridge-status-banner,.bridge-status-head,.bridge-status-actions,.sync-feedback-banner{flex-direction:column;align-items:stretch}.floating-toast{left:16px;right:16px;bottom:16px}}
