.confirm-dialog{width:min(420px,calc(100vw - 32px));padding:var(--sp-5);border:none;border-radius:var(--r-lg);background:var(--surface-card);color:var(--text-primary);box-shadow:0 16px 48px #0000003d}.confirm-dialog::backdrop{background:#00000052;backdrop-filter:blur(2px)}.confirm-title{margin:0 0 var(--sp-2);font-size:var(--fs-lg);font-weight:600;color:var(--text-primary)}.confirm-message{margin:0 0 var(--sp-4);font-size:var(--fs-md);color:var(--text-secondary)}.confirm-footer{display:flex;justify-content:flex-end;gap:var(--sp-2)}.toast-host{position:fixed;bottom:var(--sp-4);right:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2);pointer-events:none;z-index:9999}.toast{pointer-events:auto;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);color:var(--text-primary);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-md);box-shadow:var(--shadow-md);animation:toast-in var(--t-fast) var(--ease)}.toast-success{border-left:3px solid var(--accent-green)}.toast-info{border-left:3px solid var(--accent-blue)}.toast-error{border-left:3px solid var(--danger)}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}@media (prefers-reduced-motion: reduce){.toast{animation:none}}.breadcrumb{display:flex;align-items:center;height:100%}.breadcrumb-list{display:flex;align-items:center;flex-wrap:wrap;gap:0;list-style:none;margin:0;padding:0}.breadcrumb-item{display:inline-flex;align-items:center}.breadcrumb-link{font-size:var(--fs-md);color:var(--text-secondary);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.breadcrumb-link:hover{color:var(--text-primary);background:var(--surface-hover)}.breadcrumb-current{font-size:var(--fs-md);font-weight:600;color:var(--text-primary);padding:var(--sp-1) var(--sp-2)}.breadcrumb-separator{color:var(--text-muted);margin:0 var(--sp-1);user-select:none}.add-field-dialog{width:min(420px,92vw);padding:var(--sp-5);background:var(--surface-card);color:var(--text-primary);border:1px solid var(--border-subtle);border-radius:var(--r-lg);box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:var(--sp-4)}.add-field-dialog::backdrop{background:#0006}.add-field-header{border-bottom:1px solid var(--border-subtle);padding-bottom:var(--sp-3)}.add-field-title{margin:0;font-size:var(--fs-lg);font-weight:600}.add-field-body{display:flex;flex-direction:column;gap:var(--sp-3)}.add-field-row{display:flex;flex-direction:column;gap:var(--sp-1)}.add-field-label{font-size:var(--fs-sm);font-weight:500;color:var(--text-secondary)}.add-field-error{margin:0;font-size:var(--fs-sm);color:var(--danger)}.add-field-footer{display:flex;justify-content:flex-end;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--border-subtle)}.data-table{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.data-table-row{display:flex;align-items:stretch;background:var(--surface-card);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;transition:border-color var(--transition)}.data-table-row-clickable{cursor:pointer}.data-table-row-clickable:hover{border-color:var(--accent-blue)}.data-table-row-dragging{opacity:.4}.data-table-row-drop-target{border-color:var(--accent-blue);border-style:dashed}.data-table-handle{display:flex;align-items:center;justify-content:center;width:1.75rem;flex-shrink:0;color:var(--text-muted);cursor:grab;user-select:none;font-size:var(--fs-sm);letter-spacing:-.15em;border-right:1px solid var(--border)}.data-table-handle:active{cursor:grabbing}.data-table-leading{display:flex;align-items:center;padding:0 var(--sp-2);flex-shrink:0;color:var(--text-muted);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;border-right:1px solid var(--border)}.data-table-body{flex:1;min-width:0;padding:var(--sp-2) var(--sp-3);display:flex;align-items:center}.data-table-row-clickable .data-table-body{cursor:pointer}.data-table-delete{display:flex;align-items:center;justify-content:center;width:2.25rem;flex-shrink:0;background:transparent;border:0;border-left:1px solid var(--border);color:var(--text-muted);font-size:var(--fs-lg);cursor:pointer;transition:background var(--transition),color var(--transition)}.data-table-delete:hover{background:var(--danger-soft);color:var(--danger)}.data-table-delete:focus-visible{outline:none;box-shadow:var(--ring-focus);z-index:1}.field-label{display:flex;flex-direction:column;gap:var(--sp-1);margin-bottom:var(--sp-2)}.field-label-text{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-base);font-weight:500;color:var(--text-primary)}.field-label-required{color:var(--accent-green);font-size:8px;line-height:1}.field-label-description{margin:0;font-size:var(--fs-sm);color:var(--text-muted)}.field-label-error{margin:var(--sp-1) 0 0 0;font-size:var(--fs-sm);color:var(--danger)}.input{width:100%;padding:var(--sp-2) var(--sp-3);font-family:var(--font-sans);font-size:var(--fs-md);color:var(--text-primary);background:var(--surface-inset);border:1px solid transparent;border-radius:var(--r-md);transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.input::placeholder{color:var(--text-muted)}.input:hover{border-color:var(--border-default)}.input:focus{outline:none;border-color:var(--accent-blue);background:var(--surface-card);box-shadow:0 0 0 3px var(--accent-blue-soft)}.input-textarea{resize:vertical;min-height:80px;line-height:1.5}.input-mono{font-family:var(--font-mono);font-size:var(--fs-sm)}.input-color-row{display:flex;gap:var(--sp-2);align-items:center}.input-color-swatch{width:40px;height:32px;padding:0;border:1px solid var(--border-default);border-radius:var(--r-md);background:var(--surface-inset);cursor:pointer}.input-image-row{display:flex;flex-direction:column;gap:var(--sp-2)}.input-image-preview{max-width:100%;max-height:200px;object-fit:contain;border-radius:var(--r-md);background:var(--surface-inset);border:1px solid var(--border-subtle)}.toggle{position:relative;width:36px;height:20px;border-radius:var(--r-pill);background:var(--border-default);transition:background var(--t-base) var(--ease);flex-shrink:0}.toggle:hover{background:var(--border-strong)}.toggle-on{background:var(--accent-green)}.toggle-on:hover{background:var(--accent-green-hover)}.toggle-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--surface-card);border-radius:50%;transition:transform var(--t-base) var(--ease);box-shadow:var(--shadow-sm)}.toggle-on .toggle-thumb{transform:translate(16px)}select.input{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3e%3cpath fill='%238a94a3' d='M6 8.5L2 4.5h8z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}.editor{width:100%;max-width:720px;margin:0 auto;padding:var(--sp-6) var(--sp-6) var(--sp-12)}.editor-header{margin-bottom:var(--sp-5)}.editor-title{margin:0;font-size:var(--fs-2xl);font-weight:600;letter-spacing:-.01em;color:var(--text-primary)}.editor-description{margin:0;font-size:var(--fs-md);color:var(--text-secondary)}.editor-body,.object-fields{display:flex;flex-direction:column;gap:var(--sp-3)}.leaf-field{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-4)}.empty-hint{margin:0;padding:var(--sp-6);font-size:var(--fs-md);color:var(--text-muted);text-align:center;background:var(--surface-card);border:1px dashed var(--border-default);border-radius:var(--r-lg)}.zoom-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-4);text-align:left;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);cursor:pointer;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.zoom-row:hover{border-color:var(--border-default);background:var(--surface-hover)}.zoom-row:active{transform:translateY(1px)}.zoom-row-main{display:flex;flex-direction:column;gap:var(--sp-1);flex:1 1 auto;min-width:0}.zoom-row-label{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-md);font-weight:500;color:var(--text-primary)}.zoom-row-description{font-size:var(--fs-sm);color:var(--text-muted)}.zoom-row-preview{font-size:var(--fs-sm);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zoom-row-chevron{font-size:20px;color:var(--text-muted);flex-shrink:0}.array-list{display:flex;flex-direction:column;gap:var(--sp-2)}.array-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.array-row-container{position:relative;display:flex;align-items:stretch;gap:var(--sp-2)}.array-row{display:flex;align-items:center;gap:var(--sp-3);flex:1;padding:var(--sp-3) var(--sp-4);text-align:left;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);cursor:pointer;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.array-row:hover{border-color:var(--border-default);background:var(--surface-hover)}.array-row-main{display:flex;align-items:center;gap:var(--sp-3);flex:1;min-width:0}.array-row-index{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:var(--fs-xs);font-weight:500;color:var(--text-muted);background:var(--surface-inset);border-radius:var(--r-sm);flex-shrink:0}.array-row-content{display:flex;flex-direction:column;gap:2px;min-width:0}.array-row-summary{font-size:var(--fs-md);color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.array-row-tag{font-size:var(--fs-xs);color:var(--accent-blue);font-weight:500;text-transform:uppercase;letter-spacing:.04em}.array-row-delete{width:32px;font-size:20px;color:var(--text-muted);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.array-row-delete:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.array-add{width:100%;padding:var(--sp-3);font-size:var(--fs-md);font-weight:500;color:var(--text-secondary);background:transparent;border:1px dashed var(--border-default);border-radius:var(--r-lg);cursor:pointer;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.array-add:hover{color:var(--accent-blue);border-color:var(--accent-blue);background:var(--accent-blue-soft)}.array-hint{margin:var(--sp-1) 0 0;font-size:var(--fs-sm);color:var(--danger)}.scalar-array{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.scalar-array-item{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-md)}.scalar-array-index{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:var(--fs-xs);font-weight:500;color:var(--text-muted);background:var(--surface-inset);border-radius:var(--r-sm);flex-shrink:0}.scalar-array-editor{flex:1;min-width:0}.oneof-active{display:flex;flex-direction:column;gap:var(--sp-4)}.oneof-switcher{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg)}.oneof-switcher-label{font-size:var(--fs-sm);font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.oneof-switcher .input{flex:1}.editor-unsupported{padding:var(--sp-4);background:var(--danger-soft);border:1px solid var(--danger);border-radius:var(--r-lg);color:var(--text-primary)}.editor-unsupported p{margin:var(--sp-2) 0 0;font-size:var(--fs-sm)}.field-row-with-delete{display:flex;align-items:stretch;gap:var(--sp-2)}.field-row-content{flex:1;min-width:0}.field-row-delete{align-self:flex-start;width:28px;height:28px;margin-top:2px;font-size:18px;color:var(--text-muted);background:transparent;border:1px solid var(--border-subtle);border-radius:var(--r-sm);cursor:pointer;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.field-row-delete:hover{color:var(--danger);background:var(--danger-soft);border-color:var(--danger)}.inline-expand{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--border-subtle);border-radius:var(--r-md);background:var(--surface-inset)}.inline-expand-header{display:flex;flex-direction:column;gap:var(--sp-1)}.inline-expand-label{display:inline-flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-sm);font-weight:500;color:var(--text-primary)}.inline-expand-description{margin:0;font-size:var(--fs-xs);color:var(--text-muted)}.inline-expand-body{padding-left:var(--sp-2);border-left:2px solid var(--border-subtle)}.inline-expand-body .object-fields{gap:var(--sp-2)}.select-sibling-list{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-md)}.select-sibling-item{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);font-size:var(--fs-sm);border-radius:var(--r-sm);cursor:pointer;user-select:none}.select-sibling-item:hover{background:var(--surface-inset)}.select-sibling-item input{margin:0;cursor:pointer}.inline-expand-title-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.inline-expand-actions{display:flex;gap:var(--sp-1)}.inline-expand-action{padding:2px var(--sp-2);font-size:var(--fs-xs);color:var(--text-secondary);background:transparent;border:1px solid var(--border-subtle);border-radius:var(--r-sm);cursor:pointer;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.inline-expand-action:hover{color:var(--text-primary);background:var(--surface-card)}.inline-expand-action-danger:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.inline-expand-rename-input{width:200px;font-size:var(--fs-xs)}.oneof-static-type{display:inline-flex;align-items:center;padding:2px var(--sp-2);font-size:var(--fs-sm);color:var(--text-primary);background:var(--surface-inset);border:1px solid var(--border-subtle);border-radius:var(--r-sm);cursor:default}.array-row-reorder{display:flex;flex-direction:column;gap:1px;align-self:stretch;padding:var(--sp-1)}.array-row-move{width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:9px;line-height:1;color:var(--text-muted);background:transparent;border:1px solid transparent;border-radius:var(--r-sm);cursor:pointer;padding:0}.array-row-move:hover:not(:disabled){color:var(--text-primary);background:var(--surface-inset)}.array-row-move:disabled{opacity:.3;cursor:default}.inline-expand-action:disabled{opacity:.3;cursor:default}.inline-expand-action:disabled:hover{color:var(--text-secondary);background:transparent}.editor-nav-row{margin-bottom:var(--sp-2)}.editor-back{display:inline-flex;align-items:center;gap:var(--sp-1);background:transparent;border:none;padding:4px 8px;margin-left:-8px;border-radius:var(--r-sm);color:var(--text-secondary);font-size:var(--fs-sm);cursor:pointer;transition:background var(--transition)}.editor-back:hover{background:var(--surface-hover);color:var(--text-primary)}.editor-back-label{font-weight:500}.scalar-array-oneof{display:flex;align-items:stretch;gap:var(--sp-2);flex:1;min-width:0}.scalar-array-oneof-type{flex:0 0 auto;width:auto;min-width:100px;font-size:var(--fs-xs)}.scalar-array-oneof-body{flex:1;min-width:0}.editor-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-1)}.editor-draft-actions{display:flex;gap:var(--sp-2);flex-shrink:0}.zoom-row-content{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-width:0}.zoom-row-summary{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zoom-row-tag{flex-shrink:0;padding:1px var(--sp-2);background:var(--accent-blue-soft);color:var(--accent-blue);border-radius:var(--r-sm);font-size:var(--fs-xs);font-weight:500}.zoom-row-index{font-variant-numeric:tabular-nums}.addl-row-key{font-weight:500;color:var(--text-primary);font-variant-numeric:tabular-nums}.field-group{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);overflow:hidden}.field-group-summary{list-style:none;cursor:pointer;padding:var(--sp-3) var(--sp-4);display:flex;align-items:center;gap:var(--sp-3);font-weight:600;color:var(--text-primary);user-select:none;background:var(--surface-inset);transition:background 80ms ease}.field-group-summary::-webkit-details-marker{display:none}.field-group-summary:before{content:"";width:0;height:0;border-left:5px solid var(--text-secondary);border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .12s ease;flex-shrink:0}.field-group[open]>.field-group-summary:before{transform:rotate(90deg)}.field-group-summary:hover{background:var(--surface-hover)}.field-group-title{flex:1;font-size:14px}.field-group-count{font-size:12px;font-weight:500;color:var(--text-muted);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:999px;padding:1px 8px;min-width:20px;text-align:center;font-variant-numeric:tabular-nums}.field-group-description{margin:0;padding:var(--sp-3) var(--sp-4) var(--sp-2);font-size:13px;line-height:1.55;color:var(--text-secondary);background:var(--surface-card);border-bottom:1px solid var(--border-subtle)}.field-group-description code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,monospace;font-size:12px;background:var(--surface-inset);padding:1px 4px;border-radius:var(--r-sm);border:1px solid var(--border-subtle)}.field-group-body{padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3)}.variant-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--sp-3);padding:var(--sp-2) 0}.variant-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-4);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-lg);cursor:pointer;text-align:left;font:inherit;color:var(--text-primary);transition:border-color .12s ease,background .12s ease,transform 80ms ease;min-height:120px}.variant-card:hover{border-color:var(--accent-blue);background:var(--accent-blue-soft)}.variant-card:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}.variant-card:active{transform:translateY(1px)}.variant-card.is-active{border-color:var(--accent-blue);background:var(--accent-blue-soft);box-shadow:0 0 0 2px var(--accent-blue)}.variant-card-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--r-md);background:var(--surface-inset);color:var(--text-primary);margin-bottom:var(--sp-1)}.variant-card.is-active .variant-card-icon{background:var(--surface-card);color:var(--accent-blue)}.variant-card-title{font-size:15px;font-weight:600;line-height:1.2}.variant-card-description{font-size:12px;line-height:1.45;color:var(--text-secondary)}.app-shell{display:grid;grid-template-rows:auto 1fr auto;height:100vh;background:var(--surface-canvas)}.app-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-5);background:var(--surface-card);border-bottom:1px solid var(--border-subtle);box-shadow:var(--shadow-sm)}.app-bar-left{display:flex;align-items:center;gap:var(--sp-3);min-width:0}.app-bar-center{display:flex;justify-content:center;min-width:0}.app-bar-right{display:flex;align-items:center;gap:var(--sp-3);justify-self:end}.app-logo{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--accent-blue);color:var(--text-inverse);border-radius:var(--r-md);flex-shrink:0}.app-logo-button{padding:0;border:none;cursor:pointer;transition:background var(--t-fast) var(--ease)}.app-logo-button:hover{background:var(--accent-blue-hover)}.app-project{display:flex;flex-direction:column;line-height:1.25;min-width:0}.app-project-name{font-size:var(--fs-md);font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-project-status{font-size:var(--fs-xs);color:var(--text-muted)}.app-issue-badge{display:inline-flex;align-items:center;padding:2px var(--sp-2);font-size:var(--fs-xs);font-weight:500;color:var(--danger);background:var(--danger-soft);border-radius:var(--r-pill)}.app-save-button{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3) var(--sp-2) var(--sp-4);font-size:var(--fs-md);font-weight:500;color:var(--text-secondary);background:var(--surface-inset);border:1px solid var(--border-subtle);border-radius:var(--r-md);cursor:pointer;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.app-save-button-primary{color:var(--text-inverse);background:var(--accent-blue);border-color:var(--accent-blue)}.app-save-button-primary:hover{background:var(--accent-blue-hover);border-color:var(--accent-blue-hover)}.app-save-button-primary kbd{color:#ffffffd9;background:#ffffff2e;border-color:transparent}.app-save-button-disabled{cursor:not-allowed;opacity:.55}.app-icon-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--text-secondary);background:transparent;border:1px solid transparent;border-radius:var(--r-md);cursor:pointer;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.app-icon-button:hover{color:var(--text-primary);border-color:var(--border-default);background:var(--surface-hover)}.app-mode-button{padding:var(--sp-1) var(--sp-3);font-size:var(--fs-sm);font-weight:500;color:var(--text-secondary);background:transparent;border:1px solid var(--border-default);border-radius:var(--r-md);cursor:pointer;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.app-mode-button:hover{color:var(--text-primary);background:var(--surface-hover);border-color:var(--border-strong)}.app-main{overflow-y:auto;outline:none}.app-hints{display:flex;gap:var(--sp-5);justify-content:center;padding:var(--sp-2) var(--sp-4);font-size:var(--fs-xs);color:var(--text-muted);background:var(--surface-card);border-top:1px solid var(--border-subtle)}@media (max-width: 760px){.app-bar{grid-template-columns:1fr auto}.app-bar-center{grid-column:1 / -1;grid-row:2;justify-content:flex-start;overflow-x:auto}}.app-mode-button{display:inline-flex;align-items:center;gap:var(--sp-2)}.app-mode-kbd{font-family:var(--font-mono);font-size:11px;padding:1px var(--sp-1);color:var(--text-muted);background:var(--surface-inset);border:1px solid var(--border-subtle);border-radius:var(--r-sm)}.app-shell-tone-content .app-bar{border-bottom:2px solid var(--accent-blue)}.app-shell-tone-schema .app-bar{background:var(--accent-purple-soft);border-bottom:2px solid var(--accent-purple)}.app-shell-tone-schema .app-main{border-left:3px solid var(--accent-purple)}.app-mode-tag{display:inline-flex;align-items:center;margin-left:var(--sp-2);padding:1px var(--sp-2);font-size:var(--fs-xs);font-weight:500;text-transform:uppercase;letter-spacing:.04em;border-radius:var(--r-sm);vertical-align:middle}.app-mode-tag-content{color:var(--accent-blue);background:var(--accent-blue-soft);border:1px solid var(--accent-blue)}.app-mode-tag-schema{color:var(--accent-purple);background:var(--accent-purple-soft);border:1px solid var(--accent-purple)}.landing{max-width:640px;margin:0 auto;padding:var(--sp-16) var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-10)}.landing-header{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center}.landing-logo{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--accent-blue);color:var(--text-inverse);border-radius:var(--r-lg)}.landing-title{margin:0;font-size:var(--fs-2xl);font-weight:600;letter-spacing:-.02em;color:var(--text-primary)}.landing-subtitle{margin:0;max-width:480px;font-size:var(--fs-md);color:var(--text-secondary)}.landing-section{display:flex;flex-direction:column;gap:var(--sp-3)}.landing-section-title{margin:0;font-size:var(--fs-lg);font-weight:600;color:var(--text-primary)}.landing-card{display:flex;flex-direction:column;gap:var(--sp-5);padding:var(--sp-6);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg)}.landing-field{display:flex;flex-direction:column;gap:var(--sp-2)}.landing-label{display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--fs-base);font-weight:500;color:var(--text-primary)}.landing-label-hint{font-size:var(--fs-sm);font-weight:400;color:var(--text-muted)}.landing-file-row{display:flex;gap:var(--sp-2)}.landing-button-secondary{padding:var(--sp-3) var(--sp-4);font-size:var(--fs-md);font-weight:500;color:var(--text-primary);background:var(--surface-inset);border:1px dashed var(--border-default);border-radius:var(--r-md);cursor:pointer;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.landing-button-secondary:hover{border-color:var(--accent-blue);background:var(--accent-blue-soft);color:var(--accent-blue)}.landing-error{margin:0;padding:var(--sp-3);font-size:var(--fs-sm);color:var(--danger);background:var(--danger-soft);border-radius:var(--r-md)}.landing-actions{display:flex;gap:var(--sp-3);align-items:center;padding-top:var(--sp-2);border-top:1px solid var(--border-subtle)}.landing-button-primary{padding:var(--sp-3) var(--sp-5);font-size:var(--fs-md);font-weight:500;color:var(--text-inverse);background:var(--accent-blue);border:1px solid var(--accent-blue);border-radius:var(--r-md);cursor:pointer;transition:background var(--t-fast) var(--ease)}.landing-button-primary:hover:not(:disabled){background:var(--accent-blue-hover);border-color:var(--accent-blue-hover)}.landing-button-primary:disabled{opacity:.5;cursor:not-allowed}.landing-button-text{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-md);color:var(--text-secondary);background:transparent;cursor:pointer}.landing-button-text:hover{color:var(--accent-blue)}.landing-projects{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.landing-project-item{display:flex;align-items:stretch;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);overflow:visible;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.landing-project-item:hover{border-color:var(--border-default)}.landing-project-item:focus-within{border-color:var(--accent-blue)}.landing-project-open{flex:1;padding:var(--sp-3) var(--sp-4);text-align:left;background:transparent;border:none;border-radius:var(--r-lg) 0 0 var(--r-lg);cursor:pointer;transition:background var(--t-fast) var(--ease)}.landing-project-open:hover{background:var(--surface-hover)}.landing-project-name{font-size:var(--fs-md);font-weight:500;color:var(--text-primary)}.landing-project-meta{font-size:var(--fs-sm);color:var(--text-muted);margin-top:2px}.landing-project-menu{position:relative;border-left:1px solid var(--border-subtle)}.landing-project-menu-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:100%;font-size:18px;line-height:1;color:var(--text-muted);background:transparent;border-radius:0 var(--r-lg) var(--r-lg) 0;cursor:pointer;list-style:none;user-select:none;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.landing-project-menu-toggle::-webkit-details-marker{display:none}.landing-project-menu-toggle:hover{color:var(--text-primary);background:var(--surface-hover)}.landing-project-menu[open]>.landing-project-menu-toggle{color:var(--text-primary);background:var(--surface-hover)}.landing-project-menu-popover{position:absolute;top:calc(100% + 4px);right:0;min-width:200px;display:flex;flex-direction:column;padding:var(--sp-1);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-md);box-shadow:0 8px 24px #0000001f;z-index:10}.landing-project-menu-item{padding:var(--sp-2) var(--sp-3);text-align:left;font-size:var(--fs-sm);color:var(--text-primary);background:transparent;border:none;border-radius:var(--r-sm);cursor:pointer;white-space:nowrap}.landing-project-menu-item:hover{background:var(--surface-hover)}.landing-project-menu-item-danger{color:var(--danger)}.landing-project-menu-item-danger:hover{background:var(--danger-soft)}.landing-start-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-4)}.landing-start-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-4);text-align:left;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--r-md);cursor:pointer;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.landing-start-card:hover{border-color:var(--accent-blue);background:var(--accent-blue-soft);transform:translateY(-1px)}.landing-start-card:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}.landing-start-card-title{font-size:var(--fs-md);font-weight:600;color:var(--text-primary)}.landing-start-card-hint{font-size:var(--fs-sm);color:var(--text-secondary)}.landing-success{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);color:var(--accent-green);background:var(--accent-green-soft);border-radius:var(--r-sm)}.landing-project-item-demo{box-shadow:inset 3px 0 0 0 var(--accent-purple)}.landing-project-tag{display:inline-flex;align-items:center;margin-left:var(--sp-2);padding:1px var(--sp-2);font-size:var(--fs-xs);font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--accent-purple);background:var(--accent-purple-soft);border-radius:var(--r-sm);vertical-align:middle}.landing-label-required{color:var(--danger);margin-left:4px;font-weight:600}.project-settings-dialog{padding:0;max-width:520px;width:90vw;border:1px solid var(--border-subtle);border-radius:var(--r-lg);background:var(--surface-card);color:var(--text-primary);box-shadow:var(--shadow-lg)}.project-settings-dialog::backdrop{background:#0f172a66;backdrop-filter:blur(2px)}.project-settings-form{display:flex;flex-direction:column;gap:var(--sp-5);padding:var(--sp-6);margin:0}.project-settings-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.project-settings-title{margin:0;font-size:var(--fs-lg);font-weight:600;color:var(--text-primary)}.project-settings-close{width:32px;height:32px;font-size:20px;color:var(--text-muted);border-radius:var(--r-md);transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.project-settings-close:hover{color:var(--text-primary);background:var(--surface-hover)}.project-settings-fieldset{border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3);margin:0}.project-settings-note{margin:0;padding:var(--sp-3);font-size:var(--fs-sm);color:var(--text-secondary);background:var(--surface-inset);border-radius:var(--r-md)}.project-settings-error{margin:0;padding:var(--sp-3);font-size:var(--fs-sm);color:var(--danger);background:var(--danger-soft);border-radius:var(--r-md)}.project-settings-footer{display:flex;justify-content:flex-end;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--border-subtle)}.migration-preview{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);background:var(--surface-inset);border:1px solid var(--border-subtle);border-radius:var(--r-lg)}.migration-preview-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.migration-preview-title{margin:0;font-size:var(--fs-base);font-weight:600;color:var(--text-primary)}.migration-preview-summary{display:flex;gap:var(--sp-2)}.migration-pill{display:inline-flex;align-items:center;padding:2px var(--sp-2);font-size:var(--fs-xs);font-weight:500;border-radius:var(--r-pill)}.migration-pill-clean{color:var(--accent-green);background:var(--accent-green-soft)}.migration-pill-drop{color:var(--danger);background:var(--danger-soft)}.migration-pill-default{color:var(--accent-blue);background:var(--accent-blue-soft)}.migration-details{font-size:var(--fs-sm);color:var(--text-secondary)}.migration-details-summary{cursor:pointer;color:var(--accent-blue);padding:var(--sp-1) 0}.migration-changes{list-style:none;margin:var(--sp-2) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1);max-height:200px;overflow-y:auto}.migration-change{display:flex;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);background:var(--surface-card)}.migration-change-path{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);flex-shrink:0}.migration-change-message{color:var(--text-secondary)}.migration-change-overflow{font-size:var(--fs-xs);color:var(--text-muted);text-align:center;padding:var(--sp-1)}.migration-preview-note{margin:0;font-size:var(--fs-xs);color:var(--text-muted)}.migration-impact{display:flex;flex-direction:column;gap:var(--sp-2)}.migration-impact-summary{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.migration-impact-pill{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-3);font-size:var(--fs-xs);font-weight:500;border-radius:var(--r-pill)}.migration-impact-pill-clean{color:var(--accent-green);background:var(--accent-green-soft)}.migration-impact-pill-drop{color:var(--danger);background:var(--danger-soft)}.migration-impact-pill-default{color:var(--accent-blue);background:var(--accent-blue-soft)}.migration-impact-details{font-size:var(--fs-sm);color:var(--text-secondary);max-height:240px;overflow-y:auto;padding:var(--sp-2);background:var(--surface-inset);border:1px solid var(--border-subtle);border-radius:var(--r-md)}.migration-impact-details>summary{cursor:pointer;color:var(--accent-blue);padding:var(--sp-1)}.migration-impact-changes{list-style:none;margin:var(--sp-2) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.migration-impact-change{display:flex;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);background:var(--surface-card)}.migration-impact-change-drop{border-left:3px solid var(--danger)}.migration-impact-change-default{border-left:3px solid var(--accent-blue)}.migration-impact-change-kept{border-left:3px solid var(--accent-green)}.migration-impact-path{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);flex-shrink:0}.migration-impact-message{color:var(--text-secondary)}.migration-impact-overflow{font-size:var(--fs-xs);color:var(--text-muted);text-align:center;padding:var(--sp-1)}.schema-save-dialog{width:min(640px,92vw);max-height:80vh;padding:var(--sp-5);background:var(--surface-card);color:var(--text-primary);border:1px solid var(--border-subtle);border-radius:var(--r-lg);box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:var(--sp-4)}.schema-save-dialog::backdrop{background:#0006}.schema-save-header{display:flex;flex-direction:column;gap:var(--sp-1)}.schema-save-title{margin:0;font-size:var(--fs-lg);font-weight:600}.schema-save-subtitle{margin:0;font-size:var(--fs-sm);color:var(--text-secondary)}.schema-save-summary{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.schema-save-pill{display:inline-flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-3);font-size:var(--fs-sm);border-radius:var(--r-pill)}.schema-save-pill-drop{color:var(--danger);background:var(--danger-soft)}.schema-save-pill-default{color:var(--accent-blue);background:var(--accent-blue-soft)}.schema-save-details{font-size:var(--fs-sm);color:var(--text-secondary);overflow:auto;max-height:300px;padding:var(--sp-2);background:var(--surface-inset);border:1px solid var(--border-subtle);border-radius:var(--r-md)}.schema-save-details>summary{cursor:pointer;color:var(--accent-blue);padding:var(--sp-1)}.schema-save-changes{list-style:none;margin:var(--sp-2) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.schema-save-change{display:flex;gap:var(--sp-2);padding:var(--sp-2);border-radius:var(--r-sm);background:var(--surface-card)}.schema-save-change-drop{border-left:3px solid var(--danger)}.schema-save-change-default{border-left:3px solid var(--accent-blue)}.schema-save-change-kept{border-left:3px solid var(--accent-green)}.schema-save-path{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);flex-shrink:0}.schema-save-message{color:var(--text-secondary)}.schema-save-ack{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-3);background:var(--danger-soft);border:1px solid var(--danger);border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--text-primary)}.schema-save-footer{display:flex;justify-content:flex-end;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--border-subtle)}.btn-danger{padding:var(--sp-2) var(--sp-4);font-size:var(--fs-md);font-weight:500;color:var(--text-inverse);background:var(--danger);border:1px solid var(--danger);border-radius:var(--r-md);cursor:pointer;transition:background var(--t-fast) var(--ease)}.btn-danger:hover:not(:disabled){filter:brightness(.92)}.btn-danger:disabled{opacity:.5;cursor:not-allowed}:root{--surface-canvas: #f3f5f8;--surface-card: #ffffff;--surface-inset: #f6f8fb;--surface-hover: #eef1f6;--border-subtle: #e5e9ef;--border-default: #d8dee6;--border-strong: #c1c8d2;--text-primary: #1a2233;--text-secondary: #5b6472;--text-muted: #8a94a3;--text-inverse: #ffffff;--accent-blue: #3b6fe0;--accent-blue-hover: #2f5dc9;--accent-blue-soft: #e4eaf9;--accent-green: #4caf6a;--accent-green-hover: #3e9258;--accent-green-soft: #e1f1e6;--accent-purple: #8b5cf6;--accent-purple-soft: #ede9fe;--danger: #d6452a;--danger-soft: #fbe6e1;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Roboto Mono", monospace;--fs-xs: 11px;--fs-sm: 12px;--fs-base: 13px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 20px;--fs-2xl: 24px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--r-sm: 4px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--r-pill: 999px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 2px 8px rgba(15, 23, 42, .06);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .08);--t-fast: .12s;--t-base: .18s;--t-slow: .26s;--ease: cubic-bezier(.2, .6, .2, 1);--ring-focus: 0 0 0 2px var(--surface-card), 0 0 0 4px var(--accent-blue)}@media (prefers-color-scheme: dark){:root{--surface-canvas: #0f1218;--surface-card: #171a21;--surface-inset: #13161d;--surface-hover: #1e222b;--border-subtle: #242936;--border-default: #2e3443;--border-strong: #3a4152;--text-primary: #e7ecf3;--text-secondary: #9aa3b0;--text-muted: #6c7482;--accent-blue: #6990ec;--accent-blue-hover: #7ea1f0;--accent-blue-soft: #1e2840;--accent-green: #58c07a;--accent-green-hover: #6acc8a;--accent-green-soft: #1a2d22;--accent-purple: #a78bfa;--accent-purple-soft: #2a1f3d;--danger: #e46a51;--danger-soft: #2e1c18;--ring-focus: 0 0 0 2px var(--surface-card), 0 0 0 4px var(--accent-blue)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-md);line-height:1.5;color:var(--text-primary);background:var(--surface-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}:focus{outline:none}:focus-visible{box-shadow:var(--ring-focus);border-radius:var(--r-sm)}input:-webkit-autofill,textarea:-webkit-autofill{-webkit-text-fill-color:var(--text-primary);-webkit-box-shadow:0 0 0 1000px var(--surface-card) inset}button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}a{color:var(--accent-blue);text-decoration:none}a:hover{text-decoration:underline}kbd{font-family:var(--font-mono);font-size:11px;padding:1px 6px;border-radius:var(--r-sm);background:var(--surface-inset);border:1px solid var(--border-default);color:var(--text-secondary);line-height:1;display:inline-block}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.schema-consistency-banner{padding:var(--sp-3) var(--sp-4);background:var(--danger-soft);border-bottom:1px solid var(--border-default);font-size:var(--fs-sm);color:var(--text-primary)}.schema-consistency-list{list-style:none;margin:var(--sp-2) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1);color:var(--text-secondary)}.schema-consistency-list code{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);margin-right:var(--sp-2)}.btn-primary,.btn-secondary,.btn-danger{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);font-weight:500;line-height:1;border-radius:var(--r-sm);border:1px solid transparent;cursor:pointer;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.btn-primary{color:var(--bg);background:var(--accent-blue);border-color:var(--accent-blue)}.btn-primary:hover{background:var(--accent-blue-strong, var(--accent-blue));filter:brightness(1.05)}.btn-primary:disabled{opacity:.5;cursor:default;filter:none}.btn-secondary{color:var(--text-primary);background:transparent;border-color:var(--border-default)}.btn-secondary:hover{background:var(--surface-hover)}.btn-secondary:disabled{opacity:.5;cursor:default}.btn-danger{color:var(--bg);background:var(--danger);border-color:var(--danger)}.btn-danger:hover{filter:brightness(1.05)}.btn-danger:disabled{opacity:.5;cursor:default;filter:none}
