:root{color-scheme:light;font-family:Avenir Next,Segoe UI,Helvetica Neue,Arial,sans-serif;color:#162033;background:#eef3f9;--bg: #eef3f9;--bg-elevated: #f7f9fc;--panel: rgba(255, 255, 255, .92);--panel-strong: #ffffff;--border: #d6dfeb;--border-strong: #c4d0e0;--text: #162033;--muted: #5e6b82;--muted-strong: #40506a;--accent: #1d5fd0;--accent-soft: #e9f1ff;--success: #12724d;--success-soft: #ebfaf3;--warning: #9a6414;--warning-soft: #fff7e7;--error: #b14534;--error-soft: #fff0ec;--shadow-sm: 0 8px 20px rgba(27, 53, 95, .08);--shadow-md: 0 18px 44px rgba(20, 43, 82, .1);--radius-lg: 22px;--radius-md: 16px;--radius-sm: 12px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;height:100%}body{min-height:100vh;overflow:hidden;background:radial-gradient(circle at top left,rgba(52,120,214,.12),transparent 34%),linear-gradient(180deg,#f4f7fb,#eef3f9)}button,textarea,input,select{font:inherit}button{border:0}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid rgba(29,95,208,.22);outline-offset:2px}.app-shell{height:100vh;display:flex;background:transparent;position:relative;overflow:hidden}.sidebar-frame{position:relative;flex:0 0 auto;width:calc(clamp(360px,30vw,430px) + 20px);height:100%}.landing-shell{min-height:100vh;display:grid;place-items:center;padding:32px}.landing-card{width:min(760px,100%);padding:32px;border-radius:28px;border:1px solid rgba(214,223,235,.9);background:linear-gradient(180deg,#fffffffa,#f8fafdf5);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.landing-card h1{margin:0 0 10px;font-size:clamp(2.15rem,5vw,3.6rem);line-height:.95;letter-spacing:-.05em}.landing-lede{margin:0 0 24px;max-width:54ch;color:var(--muted);font-size:1rem;line-height:1.6}.dropzone{min-height:320px;display:grid;align-content:center;justify-items:center;gap:20px;padding:36px 28px;text-align:center;border-radius:24px;border:1.5px dashed rgba(29,95,208,.26);background:linear-gradient(180deg,#fffffff5,#edf4fceb);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease}.dropzone.active{transform:translateY(-2px);border-color:#1d5fd094;box-shadow:0 22px 48px #1d5fd024;background:linear-gradient(180deg,#fffffffa,#e7f0fcf5)}.dropzone-copy{display:grid;gap:8px;max-width:28rem}.dropzone-copy strong{font-size:1.35rem;letter-spacing:-.03em}.dropzone-copy span{color:var(--muted);line-height:1.55}.landing-actions,.actions,.inline-action-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.button-primary,.button-secondary,.button-ghost,.landing-actions button,.actions button{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 14px;border-radius:999px;font-size:.84rem;font-weight:600;letter-spacing:.01em;cursor:pointer;transition:transform .14s ease,background-color .14s ease,border-color .14s ease,box-shadow .14s ease,color .14s ease}.button-primary,.landing-actions .button-primary,.actions .button-primary{background:var(--accent);color:#fff;box-shadow:0 10px 24px #1d5fd038}.button-secondary,.landing-actions .button-secondary,.actions .button-secondary{background:#ffffffe0;color:var(--muted-strong);border:1px solid var(--border)}.button-ghost{background:transparent;color:var(--muted-strong);border:1px solid var(--border)}.button-primary:hover,.button-secondary:hover,.button-ghost:hover,.landing-actions button:hover,.actions button:hover,.viewport-actions button:hover{transform:translateY(-1px)}.button-primary:hover{background:#174eac}.button-secondary:hover,.button-ghost:hover{border-color:var(--border-strong);background:#fffffffa}.sr-only-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.workspace-drop-overlay{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:24px;background:#eef3f9ad;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none}.workspace-drop-card{width:min(440px,100%);display:grid;gap:8px;text-align:center;padding:26px;border-radius:24px;border:1.5px dashed rgba(29,95,208,.35);background:#fffffff5;box-shadow:var(--shadow-md)}.workspace-drop-card strong{font-size:1.08rem;letter-spacing:-.02em}.workspace-drop-card span{color:var(--muted);line-height:1.5}.sidebar{display:flex;flex-direction:column;width:calc(100% - 20px);height:100%;padding:18px;overflow:auto;min-height:0;border-right:1px solid rgba(196,208,224,.75);background:linear-gradient(180deg,#f7fafdf5,#f1f6fbfa)}.sidebar-scroll{display:flex;flex-direction:column;gap:14px;min-width:0}.hero-card,.editor-card,.json-panel{padding:18px;border-radius:var(--radius-md);border:1px solid rgba(214,223,235,.92);background:var(--panel);box-shadow:var(--shadow-sm)}.hero{display:grid;gap:2px}.hero h1,.viewport-header h2{margin:0;color:var(--text)}.hero h1{font-size:1.12rem;line-height:1.1;letter-spacing:-.04em}.sidebar-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.eyebrow,.summary-label,.vector3-title,.field span,.control-row span,.control-stack span,.vector3-label{color:var(--muted);font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.lede{margin:0;color:var(--muted);font-size:.92rem;line-height:1.55}.summary-strip{margin-top:16px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.summary-card{display:grid;gap:6px;padding:14px;border-radius:14px;border:1px solid rgba(214,223,235,.95);background:#f9fbfef2}.summary-card.status-ok{border-color:#12724d38;background:linear-gradient(180deg,#ecfaf3fa,#e5f7eef0)}.summary-card.status-ok strong{color:var(--success)}.summary-card.status-loading{border-color:#1d5fd02e;background:linear-gradient(180deg,#edf4fffa,#e9f1fff0)}.summary-card.status-loading strong{color:var(--accent)}.summary-card.status-warning{border-color:#9a641438;background:linear-gradient(180deg,#fff9ebfa,#fff4dff0)}.summary-card.status-warning strong{color:var(--warning)}.summary-card.source-card{background:linear-gradient(180deg,#f4f7fdfa,#eef3faf0)}.summary-card.board-card{background:linear-gradient(180deg,#f3f8fffa,#ecf3fcf0)}.summary-card strong{font-size:.98rem;font-weight:700;color:var(--text)}.summary-card p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.45;overflow-wrap:anywhere}.summary-card.compact{gap:4px;padding:10px 12px;border-radius:12px}.summary-card.compact strong{font-size:.88rem}.summary-card.compact p{font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-pill{display:inline-flex;align-items:center;width:fit-content;min-height:28px;padding:0 10px;border-radius:999px;border:1px solid transparent;font-size:.78rem;font-weight:700}.status-pill.ok{background:var(--success-soft);border-color:#12724d29;color:var(--success)}.status-pill.loading{background:var(--accent-soft);border-color:#1d5fd029;color:var(--accent)}.status-pill.warning{background:var(--warning-soft);border-color:#9a641429;color:var(--warning)}.status-pill.error{background:var(--error-soft);border-color:#b1453429;color:var(--error)}.hero-actions{margin-top:8px;padding-top:12px;border-top:1px solid rgba(214,223,235,.88)}.editor-card-header{display:grid;gap:4px}.editor-card-header p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.45}.collapsible-section summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:1rem;font-weight:700;color:var(--text);letter-spacing:-.02em}.collapsible-section summary::-webkit-details-marker{display:none}.collapsible-section summary:after{content:"−";color:var(--muted);font-size:1rem;line-height:1}.collapsible-section:not([open]) summary:after{content:"+"}.collapsible-section .editor-card-header,.collapsible-section .editor-grid{margin-top:14px}.editor-grid{display:grid;gap:14px}.control-row,.control-stack,.vector3-block,.field{display:grid;gap:8px}.vector3-field{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.field span,.control-row span,.control-stack span{line-height:1.2}.control-row input,.control-row select,.control-stack input,.vector3-field input,.field textarea{width:100%;border-radius:12px;border:1px solid var(--border);background:var(--panel-strong);color:var(--text);padding:11px 12px;font-size:.92rem;line-height:1.35;transition:border-color .14s ease,box-shadow .14s ease,background-color .14s ease}.control-row input,.control-row select,.control-stack input,.vector3-field input{min-height:44px}.control-row input,.vector3-field input,.field textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,monospace}.control-row select{appearance:none;padding-right:38px;background-image:linear-gradient(45deg,transparent 50%,#6b7a92 50%),linear-gradient(135deg,#6b7a92 50%,transparent 50%);background-position:calc(100% - 18px) calc(50% - 2px),calc(100% - 12px) calc(50% - 2px);background-size:6px 6px,6px 6px;background-repeat:no-repeat}.control-row input:focus,.control-row select:focus,.control-stack input:focus,.vector3-field input:focus,.field textarea:focus{border-color:#1d5fd08c;box-shadow:0 0 0 4px #1d5fd014}.control-stack input::placeholder,.field textarea::placeholder{color:#8a97aa}.field textarea{resize:vertical;min-height:180px}.file-picker input[type=file]{padding:10px;font-family:inherit;background:linear-gradient(180deg,#f0f6fff5,#e8f0fbf0);border-color:#1d5fd033}.file-picker input[type=file]::file-selector-button{margin-right:10px;padding:8px 12px;border:1px solid rgba(29,95,208,.2);border-radius:999px;background:linear-gradient(180deg,#2d6fda,#1d5fd0);color:#fff;font:inherit;font-size:.82rem;font-weight:600;cursor:pointer}.checkbox-row{display:inline-flex;align-items:center;gap:10px;padding:10px 12px;min-height:44px;border-radius:12px;border:1px solid var(--border);background:var(--panel-strong);color:var(--muted-strong);font-size:.92rem;font-weight:600}.checkbox-row input{width:16px;height:16px;accent-color:var(--accent);margin:0}.inline-action-row{justify-content:space-between}.file-chip{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:999px;background:linear-gradient(180deg,#e9f2fffa,#e1edfcf2);color:#1d4f9f;font-size:.8rem;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.json-panel[open]{background:#fffffff0}.json-panel summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;font-size:.96rem;font-weight:700;color:var(--text)}.json-panel summary::-webkit-details-marker{display:none}.json-panel summary:after{content:"+";color:var(--muted);font-size:1.1rem;line-height:1}.json-panel[open] summary:after{content:"−"}.json-panel>:not(summary){margin-top:14px}.json-help{margin:0;color:var(--muted);font-size:.84rem;line-height:1.55}.import-textarea{min-height:180px}.json-output{min-height:240px}.viewer-panel{flex:1 1 auto;min-width:0;min-height:0;height:100vh;padding:18px 18px 18px 0;overflow:hidden}.viewport{height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden;border-radius:24px;border:1px solid rgba(214,223,235,.92);background:#fffffff5;box-shadow:var(--shadow-md)}.viewport-loading{height:100%}.viewport-loading-body{flex:1;display:grid;place-items:center;padding:32px;background:radial-gradient(circle at top,rgba(64,119,203,.12),transparent 42%),linear-gradient(180deg,#f8fbff,#f1f6fb)}.viewport-loading-card{width:min(360px,100%);display:grid;gap:8px;padding:24px;text-align:center;border-radius:20px;border:1px solid rgba(214,223,235,.95);background:#fffffff5;box-shadow:var(--shadow-sm)}.viewport-loading-card strong{font-size:1rem;letter-spacing:-.02em}.viewport-loading-card span{color:var(--muted);font-size:.92rem;line-height:1.45}.loading-progress{height:8px;overflow:hidden;border-radius:999px;border:1px solid rgba(214,223,235,.95);background:#edf4ffeb}.loading-progress div{height:100%;border-radius:inherit;background:var(--accent);transition:width .16s ease}.viewport-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 14px;border-bottom:1px solid rgba(214,223,235,.9);background:linear-gradient(180deg,#fcfdfff5,#f7fafdeb)}.viewport-header h2{font-size:1.02rem;letter-spacing:-.02em}.viewport-header p{margin:6px 0 0;color:var(--muted);font-size:.84rem;line-height:1.5;max-width:48ch}.viewport-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.viewport-actions button{min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--border);background:#fffffff0;color:var(--muted-strong);font-size:.8rem;font-weight:700;cursor:pointer;transition:transform .14s ease,background-color .14s ease,border-color .14s ease,box-shadow .14s ease,color .14s ease}.viewport-actions button.is-active{border-color:#1d5fd052;background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px #1d5fd014}.viewport-actions .projection-toggle{background:#edf3fb}.viewport-body{position:relative;flex:1;min-height:0;background:radial-gradient(circle at top,rgba(62,111,194,.08),transparent 36%),linear-gradient(180deg,#fcfdff,#f3f7fc)}.viewport canvas{width:100%;height:100%;display:block;min-height:20rem}.axis-compass{position:absolute;top:14px;right:14px;z-index:4;width:92px;height:92px;pointer-events:none}.axis-compass button{position:absolute;display:inline-grid;place-items:center;width:24px;height:24px;padding:0;border-radius:999px;border:1px solid rgba(255,255,255,.86);color:#fff;font-size:.58rem;font-weight:800;line-height:1;box-shadow:0 5px 12px #16203324,inset 0 0 0 1px #fff3;cursor:pointer;pointer-events:auto;transition:filter .14s ease,box-shadow .14s ease}.axis-compass button:hover{filter:saturate(1.12) brightness(1.04)}.axis-compass button.is-active{box-shadow:0 7px 16px #16203333,0 0 0 2px #ffffffeb,0 0 0 4px #1d5fd03d}.axis-compass .axis-x-plus,.axis-compass .axis-x-minus{background:#c93345}.axis-compass .axis-y-plus,.axis-compass .axis-y-minus{background:#16834d}.axis-compass .axis-z-plus,.axis-compass .axis-z-minus{background:#2568d8}.axis-compass .axis-center{top:38px;left:38px;width:16px;height:16px;background:#f8fbfff0;border-color:#c4d0e0f2}.axis-compass .axis-center:before{content:"";width:5px;height:5px;border-radius:999px;background:var(--muted-strong)}.hover-label{position:absolute;transform:translate(-50%,-100%);pointer-events:none;padding:8px 10px;border-radius:12px;border:1px solid rgba(214,223,235,.95);background:#fffffff7;box-shadow:var(--shadow-sm);color:var(--text);font-size:.76rem;line-height:1.4;white-space:nowrap}@media(max-width:1080px){body{overflow:auto}.app-shell{flex-direction:column;height:auto}.sidebar-frame{width:100%;height:auto}.sidebar{width:100%;border-right:0;border-bottom:1px solid rgba(196,208,224,.75);transform:none}.summary-strip{grid-template-columns:1fr}.viewer-panel{min-height:560px;height:auto;padding:0 18px 18px}.viewport{min-height:560px}}@media(max-width:720px){.landing-shell,.sidebar,.viewer-panel,.landing-card,.hero-card,.editor-card,.json-panel{padding:16px}.landing-card{border-radius:24px}.viewport{min-height:500px;border-radius:20px}.viewport-header{padding:16px}.viewport-actions{justify-content:flex-start}.sidebar-toolbar{align-items:stretch;flex-direction:column}.vector3-field{gap:6px}.inline-action-row{align-items:stretch}.file-chip{width:100%}}
