:root{--color-primary:#16a34a;--color-primary-dark:#15803d;--color-primary-light:#22c55e;--color-primary-subtle:#f0fdf4;--color-accent:#f97316;--color-accent-dark:#ea580c;--color-blue:#0284c7;--color-danger:#ef4444;--color-success:#10b981;--color-bg:#f8fafc;--color-panel:#fff;--color-border:#e2e8f0;--color-text:#0f172a;--color-muted:#64748b;--radius:14px;--radius-sm:10px;--radius-lg:18px;--touch-min:44px;color:var(--color-text);background:var(--color-bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{touch-action:manipulation;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button{font:inherit;min-height:var(--touch-min);min-width:var(--touch-min);border-radius:var(--radius);cursor:pointer;background:var(--color-panel);color:var(--color-text);border:none}button:disabled{opacity:.45;cursor:not-allowed}input{font:inherit}.loading{height:100%;color:var(--color-muted);justify-content:center;align-items:center;font-size:1.2rem;display:flex}.save-status{color:var(--color-muted);white-space:nowrap;font-size:.85rem}.save-status.error{color:var(--color-danger)}.speech-bubble{color:var(--color-text);border:3px solid var(--color-text);white-space:nowrap;text-overflow:ellipsis;background:#fff;border-radius:16px;max-width:260px;padding:6px 12px;font-size:1.05rem;font-weight:700;position:relative;overflow:hidden}.speech-bubble:after{content:"";border:8px solid #0000;border-top-color:var(--color-text);position:absolute;bottom:-12px;left:50%;transform:translate(-50%)}.run-btn{color:#fff;background:linear-gradient(135deg,#10b981 0%,#059669 100%);border-radius:9999px;align-items:center;gap:8px;min-height:48px;padding:0 24px;font-size:1.15rem;font-weight:800;transition:all .15s;display:inline-flex;box-shadow:0 4px 14px #10b98166,0 2px #047857}.run-btn:hover{background:linear-gradient(135deg,#34d399 0%,#059669 100%);transform:translateY(-1px);box-shadow:0 6px 18px #10b98180,0 2px #047857}.run-btn.stop{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);box-shadow:0 4px 14px #ef444466,0 2px #b91c1c}.run-btn:active{transform:translateY(2px);box-shadow:0 1px 4px #10b98140}.crash-screen{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:24px;display:flex}.crash-emoji{margin:0;font-size:4rem}.crash-actions{gap:12px;margin-top:12px;display:flex}.crash-actions button{border:2px solid var(--color-border);padding:0 20px;font-weight:600}.crash-actions button.primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}canvas,.block-workspace{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}button{justify-content:center;align-items:center;gap:6px;display:inline-flex}.projects-header h1{align-items:center;gap:10px;display:flex}.project-card{border-radius:var(--radius,14px);background:#fff;border:1px solid #e2e8f0;flex-direction:column;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex;overflow:hidden;box-shadow:0 1px 3px #0000000a}.project-card:hover{border-color:#cbd5e1;transform:translateY(-3px);box-shadow:0 10px 25px -4px #0f172a14,0 4px 10px -2px #0f172a0a}.project-open{text-align:left;background:0 0;border-radius:0;flex-direction:column;align-items:stretch;width:100%;padding:0;display:flex;position:relative}.project-open img,.project-placeholder{aspect-ratio:16/10;object-fit:cover;width:100%;transition:transform .25s}.project-card:hover .project-open img{transform:scale(1.02)}.project-placeholder{color:#10b981;background:linear-gradient(135deg,#f0fdf4 0%,#ecfdf5 50%,#e0f2fe 100%);justify-content:center;align-items:center;display:flex}.project-badge{z-index:2;-webkit-backdrop-filter:blur(8px);border-radius:9999px;padding:3px 8px;font-size:.72rem;font-weight:700;position:absolute;top:10px;left:10px}.project-badge.badge-pending{color:#fff;background:#f59e0be6}.project-badge.badge-conflict{color:#fff;background:#ef4444e6}.project-badge.badge-too-large{color:#fff;background:#64748be6}.project-title{color:#0f172a;text-overflow:ellipsis;white-space:nowrap;padding:12px 14px 2px;font-size:1.02rem;font-weight:700;display:block;overflow:hidden}.project-date{color:var(--color-muted);padding:0 14px 12px;font-size:.8rem;font-weight:500}.project-actions{background:#fafafa;border-top:1px solid #f1f5f9;justify-content:space-around;align-items:center;padding:4px 6px;display:flex}.project-actions button{color:#64748b;background:0 0;border-radius:8px;flex:1;justify-content:center;align-items:center;height:38px;min-height:38px;transition:all .15s;display:flex}.project-actions button:hover{color:#16a34a;background:#f0fdf4}.project-actions button.danger:hover{color:#ef4444;background:#fef2f2}.projects-page{background:var(--color-bg);height:100%;padding:0 0 48px;overflow-y:auto}.projects-header{z-index:50;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);background:#fffffff0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:12px 28px;display:flex;position:sticky;top:0;box-shadow:0 1px 3px #00000008}.brand-header-left{-webkit-user-select:none;user-select:none;align-items:center;gap:12px;display:flex}.brand-logo-icon{object-fit:contain;filter:drop-shadow(0 2px 4px #16a34a33);border-radius:10px;width:42px;height:42px}.brand-text{flex-direction:column;display:flex}.brand-title-row{align-items:center;gap:6px;line-height:1.1;display:flex}.brand-name{letter-spacing:-.5px;color:#0f172a;font-size:1.35rem;font-weight:900}.brand-spaces-badge{color:#fff;letter-spacing:.3px;background:linear-gradient(135deg,#16a34a 0%,#059669 100%);border-radius:9999px;padding:2px 8px;font-size:.8rem;font-weight:800;box-shadow:0 2px 6px #16a34a40}.brand-tagline{color:var(--color-muted);letter-spacing:.2px;margin-top:2px;font-size:.72rem;font-weight:600}.projects-header-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.projects-content{max-width:1400px;margin:0 auto;padding:24px 28px}.btn-primary,.btn-secondary{border-radius:var(--radius-sm,10px);cursor:pointer;white-space:nowrap;align-items:center;gap:8px;height:42px;min-height:42px;padding:0 18px;font-size:.95rem;font-weight:700;transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-flex}.btn-primary{color:#fff;background:linear-gradient(135deg,#16a34a 0%,#15803d 100%);border:1px solid #ffffff26;box-shadow:0 2px 8px #16a34a4d,0 1px 2px #0000000d}.btn-primary:hover{background:linear-gradient(135deg,#22c55e 0%,#16a34a 100%);transform:translateY(-1px);box-shadow:0 4px 14px #16a34a66}.btn-primary:active{transform:translateY(1px);box-shadow:0 1px 3px #16a34a4d}.btn-secondary{color:#1e293b;background:#fff;border:1px solid #cbd5e1;box-shadow:0 1px 2px #0000000a}.btn-secondary:hover{color:#0f172a;background:#f8fafc;border-color:#94a3b8;transform:translateY(-1px);box-shadow:0 2px 6px #0000000f}.btn-secondary:active{transform:translateY(1px)}.projects-section-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.projects-section-title{align-items:center;gap:10px;display:flex}.projects-section-title h1,.projects-section-title h2{color:#0f172a;margin:0;font-size:1.35rem;font-weight:800}.projects-count-pill{color:#475569;background:#e2e8f0;border-radius:9999px;padding:2px 10px;font-size:.8rem;font-weight:700}.project-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;display:grid}.samples-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);background:#0f172a73;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.samples-dialog{background:var(--color-panel,#fff);border-radius:var(--radius-lg,18px);flex-direction:column;gap:16px;width:100%;max-width:580px;max-height:90vh;padding:24px;display:flex;overflow-y:auto;box-shadow:0 20px 40px -8px #0f172a33,0 0 0 1px #0000000d}.samples-header{justify-content:space-between;align-items:center;display:flex}.samples-header h2{color:var(--color-text,#0f172a);align-items:center;gap:8px;margin:0;font-size:1.35rem;font-weight:800;display:flex}.samples-header .btn-icon{cursor:pointer;color:var(--color-muted,#64748b);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:6px;transition:all .15s;display:flex}.samples-header .btn-icon:hover{color:var(--color-text,#0f172a);background:#f1f5f9}.samples-intro{color:var(--color-muted,#64748b);margin:0;font-size:.95rem;line-height:1.5}.samples-grid{flex-direction:column;gap:12px;display:flex}.sample-card{border:1px solid var(--color-border,#e2e8f0);border-radius:var(--radius,14px);background:#f8fafc;align-items:center;gap:16px;padding:14px 16px;transition:all .2s;display:flex}.sample-card:hover{background:#fff;border-color:#cbd5e1;transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.sample-icon{border:1px solid var(--color-border,#e2e8f0);background:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;display:flex;box-shadow:0 2px 6px #0000000a}.sample-info{flex:1;min-width:0}.sample-title{color:var(--color-text,#0f172a);margin:0 0 4px;font-size:1.05rem;font-weight:700}.sample-desc{color:var(--color-muted,#64748b);margin:0;font-size:.85rem}.sample-open-btn{white-space:nowrap;border-radius:var(--radius-sm,10px);flex-shrink:0;padding:8px 18px;font-size:.95rem;font-weight:700}.account-menu-container{align-items:center;display:flex}.account-member-info{background:var(--color-panel,#fff);border:1px solid var(--color-border,#e2e8f0);border-radius:var(--radius,14px);align-items:center;gap:10px;padding:4px 12px 4px 6px;transition:all .2s;display:flex;box-shadow:0 1px 3px #0000000d}.account-member-info:hover{border-color:#cbd5e1;box-shadow:0 2px 6px #00000014}.account-avatar{object-fit:cover;border:1.5px solid var(--color-primary,#16a34a);border-radius:50%;width:32px;height:32px}.account-avatar-placeholder{width:32px;height:32px;color:var(--color-primary,#16a34a);border:1.5px solid var(--color-primary,#16a34a);background:#f0fdf4;border-radius:50%;justify-content:center;align-items:center;font-size:.95rem;font-weight:700;display:flex}.account-name{color:var(--color-text,#0f172a);text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:.95rem;font-weight:700;overflow:hidden}.btn-logout{border-radius:var(--radius-sm,10px);height:32px;min-height:32px;color:var(--color-muted,#64748b);background:#f1f5f9;border:1px solid #0000;padding:0 12px;font-size:.85rem;font-weight:600;transition:all .15s}.btn-logout:hover{color:#dc2626;background:#fee2e2;border-color:#fca5a5}.standalone-sso-group{align-items:center;gap:10px;font-size:.9rem;display:flex}.migrate-dialog{max-width:520px}.migrate-select-all{border-bottom:1px solid var(--color-border);padding-bottom:8px}.migrate-checkbox-label{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;width:100%;display:flex}.migrate-list{flex-direction:column;gap:8px;max-height:280px;padding:4px 0;display:flex;overflow-y:auto}.migrate-item{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);align-items:center;padding:8px 12px;transition:background .15s;display:flex}.migrate-item:hover{background:var(--color-panel)}.migrate-item.is-done{opacity:.6;background:#f9f9f9}.migrate-thumb{object-fit:cover;border:1px solid var(--color-border);border-radius:4px;width:44px;height:32px}.migrate-thumb.placeholder{background:#eee;justify-content:center;align-items:center;font-size:1.1rem;display:flex}.migrate-item-info{flex-direction:column;flex:1;min-width:0;display:flex}.migrate-item-name{text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:600;overflow:hidden}.migrate-done-badge{color:#27ae60;font-size:.75rem;font-weight:500}.migrate-error-msg{color:#e74c3c;margin-top:2px;font-size:.8rem}.migrate-actions{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding-top:12px;display:flex}.migrate-sub-actions{gap:8px;display:flex}.share-dialog-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1200;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.share-dialog{background:var(--color-bg,#1e1e24);color:var(--color-text,#f0f0f5);border:1px solid var(--color-border,#33333d);border-radius:16px;flex-direction:column;gap:16px;width:100%;max-width:440px;padding:24px;display:flex;box-shadow:0 16px 40px #0006}.share-dialog-header{justify-content:space-between;align-items:center;display:flex}.share-dialog-header h3{margin:0;font-size:18px;font-weight:600}.share-close-btn{color:var(--color-text-muted,#888);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:6px;display:flex}.share-close-btn:hover{background:var(--color-bg-hover,#2c2c36);color:var(--color-text,#fff)}.share-qr-box{justify-content:center;padding:12px 0;display:flex}.share-url-row{align-items:center;gap:8px;display:flex}.share-url-input{background:var(--color-input-bg,#141418);border:1px solid var(--color-border,#33333d);color:var(--color-text,#fff);border-radius:8px;outline:none;flex:1;padding:10px 14px;font-size:14px}.share-url-input:focus{border-color:var(--color-primary,#6366f1)}.share-btn{background:var(--color-primary,#6366f1);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;align-items:center;gap:6px;padding:10px 16px;font-size:14px;font-weight:500;display:flex}.share-btn:hover:not(:disabled){filter:brightness(1.1)}.share-btn:disabled{opacity:.6;cursor:not-allowed}.share-btn.secondary{background:var(--color-bg-secondary,#2a2a35);color:var(--color-text,#f0f0f5);border:1px solid var(--color-border,#3e3e4d)}.share-btn.secondary:hover:not(:disabled){background:var(--color-bg-hover,#353544)}.share-btn.danger{background:#e11d48}.share-note{color:var(--color-text-muted,#94a3b8);margin:0;font-size:13px;line-height:1.5}.share-error-box{color:#fb7185;background:#e11d4826;border:1px solid #e11d4866;border-radius:8px;padding:12px;font-size:14px;line-height:1.4}.share-list{flex-direction:column;gap:12px;max-height:320px;display:flex;overflow-y:auto}.share-item{background:var(--color-input-bg,#141418);border:1px solid var(--color-border,#33333d);border-radius:8px;flex-direction:column;gap:6px;padding:12px;display:flex}.share-item-header{justify-content:space-between;align-items:center;font-size:13px;display:flex}.share-item-actions{gap:8px;margin-top:4px;display:flex}.share-badge-hidden{color:#fb7185;font-size:12px;font-weight:500}.notice{border-radius:var(--radius-sm,10px);color:#92400e;background:#fffbeb;border:1px solid #fde68a;align-items:center;gap:10px;margin-bottom:20px;padding:12px 16px;font-size:.95rem;font-weight:500;display:flex}.notice.error{color:#991b1b;background:#fef2f2;border-color:#fecaca}.notice.warning{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.notice button{color:inherit;background:0 0;min-width:auto;min-height:auto;margin-left:auto;padding:4px}.notice .link-btn{color:var(--color-primary);padding:0 4px;font-weight:700;text-decoration:underline}.empty-state-box{text-align:center;border-radius:var(--radius-lg,18px);background:#fff;border:2px dashed #cbd5e1;flex-direction:column;justify-content:center;align-items:center;margin-top:12px;padding:60px 24px;display:flex}.empty-icon-wrap{width:72px;height:72px;color:var(--color-primary);background:#f0fdf4;border-radius:20px;justify-content:center;align-items:center;margin-bottom:16px;display:flex;box-shadow:0 4px 12px #16a34a26}.empty-title{color:#0f172a;margin:0 0 8px;font-size:1.25rem;font-weight:800}.empty-desc{color:var(--color-muted);max-width:420px;margin:0 0 24px;font-size:.95rem;line-height:1.5}.empty-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}
