:root{--background:#111317;--foreground:#e4e7eb;--panel:#1c1f24;--border:#343941;--muted:#8c949f;--accent:#e59a3a;--accent-2:#f2b45e}
*{box-sizing:border-box}
html,body{background:var(--background);min-width:320px;height:100%;color:var(--foreground);font-family:"Geist",Arial,sans-serif;margin:0;overflow:hidden}
button,input{font:inherit}.viewer-shell{background:var(--background);grid-template-rows:52px minmax(0,1fr) 28px;height:100vh;height:100dvh;display:grid}
.app-header{border-bottom:1px solid var(--border);background:#191c21;justify-content:space-between;align-items:center;padding:0 12px;display:flex;position:relative;z-index:20}.brand{letter-spacing:.01em;align-items:center;gap:9px;display:flex}.brand-mark{background:var(--accent);color:#181a1e;border-radius:5px;place-items:center;width:30px;height:30px;font-size:22px;display:grid}.brand strong{font-size:13px;font-weight:650;display:block}.brand small{color:var(--muted);font:9px "Geist Mono",monospace;letter-spacing:.08em;margin-top:1px;display:block}.header-actions{gap:6px;display:flex}
.tool-button{color:#d9dde2;cursor:pointer;background:#252a31;border:1px solid #3a4048;border-radius:4px;align-items:center;gap:6px;height:30px;padding:0 10px;font-size:11px;display:inline-flex}.tool-button:hover{background:#30363e;border-color:#505864}.tool-button.primary{background:var(--accent);border-color:var(--accent);color:#1c1c1c;font-weight:650}.tool-button.primary:hover{background:var(--accent-2)}.tool-button.large{height:34px;padding:0 14px}.tool-button:disabled{opacity:.42;cursor:not-allowed}.mode-switch{background:#111419;border:1px solid #3a4048;border-radius:4px;display:grid;grid-template-columns:1fr 1fr;padding:2px}.mode-switch button{color:#8f98a3;cursor:pointer;background:transparent;border:0;border-radius:2px;height:24px;padding:0 9px;font-size:10px;white-space:nowrap}.mode-switch button.active{color:#17191d;background:var(--accent);font-weight:650}.mode-switch button:not(.active):hover{color:#d5dae0;background:#282d34}
.workspace{grid-template-columns:230px minmax(0,1fr) 260px;min-height:0;display:grid}.workspace.left-closed{grid-template-columns:minmax(0,1fr) 260px}.workspace.right-closed{grid-template-columns:230px minmax(0,1fr)}.workspace.left-closed.right-closed{grid-template-columns:minmax(0,1fr)}.workspace.left-closed .left-panel,.workspace.right-closed .right-panel{display:none}
.panel{background:var(--panel);scrollbar-width:thin;scrollbar-color:#4a515a #1b1e23;min-height:0;font-size:11px;overflow:auto}.left-panel{border-right:1px solid var(--border)}.right-panel{border-left:1px solid var(--border);padding-bottom:16px}.panel-title{color:#b8bec6;min-height:32px;font:600 9px "Geist Mono",monospace;letter-spacing:.13em;border-bottom:1px solid var(--border);background:#20242a;border-top:1px solid #292e35;align-items:center;gap:6px;padding:0 12px;display:flex}.count-badge{color:#858d97;letter-spacing:0;background:#15181c;border-radius:8px;margin-left:auto;padding:2px 5px}.panel-divider{background:var(--border);height:1px;margin:14px 0 0}.empty-note{color:#717985;padding:3px 12px;line-height:1.5}.panel h3{color:#dadddf;margin:14px 12px 9px;font-size:11px}.panel h3 small{float:right;color:#6f7781;font:8px "Geist Mono",monospace;letter-spacing:.08em}
.check-row{color:#b9c0c7;align-items:center;gap:7px;height:25px;padding:0 12px;display:flex}.check-row:hover{background:#22262c}.check-row input{accent-color:var(--accent)}
.viewport{background:#17191d;min-width:0;position:relative;overflow:hidden}.view-grid{width:100%;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:1fr}.view-pane{background:#17191d;min-width:0;min-height:0;position:relative;overflow:hidden;display:none}.view-pane.perspective-pane{display:block}.view-grid.multi-view{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:1px;background:var(--border)}.view-grid.multi-view .view-pane{display:block}.view-grid.multi-view [data-view="top"]{grid-column:1;grid-row:1}.view-grid.multi-view [data-view="perspective"]{grid-column:2;grid-row:1}.view-grid.multi-view [data-view="front"]{grid-column:1;grid-row:2}.view-grid.multi-view [data-view="right"]{grid-column:2;grid-row:2}.view-pane canvas{width:100%;height:100%;position:absolute;inset:0}.pane-label{color:#9ba2ab;font:9px "Geist Mono",monospace;letter-spacing:.1em;z-index:2;background:#11151acc;border:1px solid #353b43;border-radius:3px;padding:3px 6px;position:absolute;top:8px;left:8px;pointer-events:none}.viewport.is-dragging:after{content:"3Dファイルをドロップして開く";border:1px solid var(--accent);color:#ffd399;font:600 13px "Geist Mono",monospace;z-index:8;background:#e59a3a15;place-items:center;display:grid;position:absolute;inset:10px}.drop-prompt,.loading-card,.error-card{z-index:6;text-align:center;flex-direction:column;align-items:center;display:flex;position:absolute;top:48%;left:50%;transform:translate(-50%,-50%)}.drop-prompt[hidden],.loading-card[hidden],.error-card[hidden]{display:none}.prompt-icon{width:58px;height:58px;color:var(--accent);background:#20242a;border:1px solid #4a515b;border-radius:8px;place-items:center;font-size:36px;display:grid;box-shadow:0 18px 50px #0008}.drop-prompt h1{margin:14px 0 4px;font-size:18px}.drop-prompt p{color:#a6adb5;margin:0;font-size:12px}.or-label{color:#616873;font:8px "Geist Mono",monospace;letter-spacing:.16em;margin:10px}.format-badges{gap:5px;margin-top:10px;display:flex}.format-badges span{color:#929aa4;font:8px "Geist Mono",monospace;letter-spacing:.08em;background:#1b1e23;border:1px solid #3d444d;border-radius:3px;padding:3px 6px}.drop-prompt .max-note{color:#747c86;margin-top:10px;font-size:9px}.drop-prompt small{color:#777f89;align-items:center;gap:5px;margin-top:9px;font-size:9px;display:flex}
.loading-card{border:1px solid var(--border);background:#1d2025e8;gap:8px;width:220px;padding:18px 24px;box-shadow:0 16px 40px #0008}.loading-card small{color:var(--muted);max-width:190px;text-overflow:ellipsis;overflow:hidden}.spinner{border:2px solid #434953;border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}.error-card{color:#e7b49e;text-align:left;background:#281e1ce8;border:1px solid #70402f;align-items:flex-start;width:min(360px,80%);padding:18px;box-shadow:0 16px 40px #0009}.error-card button{color:#a78678;cursor:pointer;background:transparent;border:0;position:absolute;top:8px;right:8px}.error-card strong{color:#f0d0c3;margin:10px 0 4px}.error-card p{color:#bda69d;margin:0;line-height:1.5}.control-hint{color:#5f6670;font:8px "Geist Mono",monospace;z-index:5;gap:12px;display:flex;position:absolute;bottom:10px;right:10px}.toast{color:#f4d1a1;background:#22262deF;border:1px solid #664c2e;border-radius:4px;z-index:12;padding:8px 12px;font-size:10px;box-shadow:0 8px 24px #0008;position:absolute;bottom:34px;left:50%;transform:translateX(-50%)}.toast[hidden]{display:none}
.tree-wrap{padding:4px 0 10px}.tree-row{color:#aeb5bd;cursor:pointer;white-space:nowrap;align-items:center;gap:5px;height:25px;padding-right:8px;display:flex;overflow:hidden}.tree-row:hover,.tree-row.selected,.list-row.selected{color:#f0f2f4;background:#31363d}.tree-row.selected{box-shadow:inset 2px 0 var(--accent)}.tree-row .tree-icon{color:#7e8690;flex:0 0 18px;text-align:center}.tree-row .tree-name{text-overflow:ellipsis;overflow:hidden}.tree-children{border-left:1px solid #30353c;margin-left:13px}.list-wrap{padding:4px 0 10px}.list-row{color:#abb2ba;text-align:left;cursor:pointer;background:transparent;border:0;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:7px;width:100%;height:27px;padding:0 10px 0 13px;display:grid}.list-row span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.list-row small,.texture-row small{color:#666e78;font:8px "Geist Mono",monospace}.material-dot{background:#76542b;border:1px solid #c89756;border-radius:50%;width:7px;height:7px}.texture-row{flex-direction:column;gap:2px;padding:5px 12px;display:flex;overflow:hidden}.texture-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.selection-name{border-bottom:1px solid var(--border);background:#191c21;flex-direction:column;gap:3px;padding:12px;display:flex}.selection-name small{color:#737b85;font:8px "Geist Mono",monospace;letter-spacing:.1em}.selection-name strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.property-list{margin:0 12px}.property-list>span{color:#848c96;border-bottom:1px solid #292e34;justify-content:space-between;align-items:center;gap:10px;min-height:25px;display:flex}.property-list b{text-overflow:ellipsis;color:#c2c7cd;white-space:nowrap;max-width:62%;font-weight:500;overflow:hidden}.background-options{grid-template-columns:1fr 1fr;gap:4px;margin:0 12px;display:grid}.background-options button{color:#989fa8;cursor:pointer;background:#20242a;border:1px solid #343a42;border-radius:3px;align-items:center;gap:6px;height:27px;padding:0 7px;font-size:9px;display:flex}.background-options button.active{border-color:var(--accent);color:#e2e5e8}.background-options button span{border:1px solid #707780;border-radius:2px;width:11px;height:11px}.size-grid{grid-template-columns:repeat(3,1fr);gap:4px;margin:0 12px;display:grid}.size-grid span{color:#737b85;font:8px "Geist Mono",monospace;background:#15181c;border:1px solid #30353c;flex-direction:column;gap:3px;padding:6px;display:flex}.size-grid b{color:#b4bbc3;font-weight:500}
.edit-mode,.edit-tools,.mesh-tools,.model-rotate-grid{display:grid;gap:4px;margin:0 12px 6px}.edit-mode{grid-template-columns:repeat(3,1fr)}.edit-tools{grid-template-columns:repeat(3,1fr)}.edit-tools:nth-of-type(3),.mesh-tools{grid-template-columns:1fr 1fr}.model-rotate-grid{grid-template-columns:repeat(2,1fr)}.tool-label{color:#858d97;margin:8px 12px 5px;font-size:9px}.edit-mode button,.edit-tools button,.mesh-tools button,.model-rotate-grid button,.extrude-row button{color:#aeb5bd;cursor:pointer;background:#22262c;border:1px solid #373d45;border-radius:3px;min-height:27px;padding:3px 5px;font-size:9px}.edit-mode button.active,.edit-tools button.active{color:#1b1c1f;background:var(--accent);border-color:var(--accent);font-weight:600}.edit-mode button:disabled,.edit-tools button:disabled,.mesh-tools button:disabled,.model-rotate-grid button:disabled,.extrude-row button:disabled{opacity:.38;cursor:not-allowed}.extrude-row{grid-template-columns:auto 52px 1fr;align-items:center;gap:5px;margin:0 12px}.extrude-row label{color:#858d97;font-size:9px}.extrude-row input{color:#c8cdd2;background:#15181c;border:1px solid #353b42;border-radius:3px;width:52px;height:27px;padding:0 5px;font:9px "Geist Mono",monospace}.edit-note{color:#666e78;margin:8px 12px 0;font-size:9px;line-height:1.5}.mode-status{color:#aeb6c0;background:#15181c;border:1px solid #343a42;border-left:2px solid #6e7782;margin:0 12px 8px;padding:7px 8px;font-size:9px;line-height:1.4}.viewer-shell.editing-enabled .mode-status{color:#e7bd82;border-left-color:var(--accent);background:#2a2117}.viewer-shell.view-only .edit-mode,.viewer-shell.view-only .edit-tools,.viewer-shell.view-only .mesh-tools,.viewer-shell.view-only .model-rotate-grid,.viewer-shell.view-only .tool-label,.viewer-shell.view-only .extrude-row,.viewer-shell.view-only .edit-note{opacity:.45}.export-wrap{position:relative}.export-menu{background:#20242a;border:1px solid #444b54;border-radius:5px;width:210px;padding:6px;position:fixed;top:46px;right:12px;z-index:1000;box-shadow:0 14px 36px #000b}.export-menu[hidden]{display:none}.export-menu>strong{color:#89919b;font:8px "Geist Mono",monospace;letter-spacing:.1em;padding:5px 7px;display:block}.export-menu button{color:#c4c9cf;text-align:left;cursor:pointer;background:transparent;border:0;border-radius:3px;width:100%;padding:7px;display:flex;justify-content:space-between}.export-menu button:hover{background:#30363e}.export-menu small{color:#747d87;font-size:8px}.status-bar{border-top:1px solid var(--border);color:#858d97;font:9px "Geist Mono",monospace;background:#181b20;grid-template-columns:minmax(100px,1fr) auto minmax(100px,1fr);align-items:center;gap:12px;padding:0 10px;display:grid}.status-bar>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status-bar div{gap:16px;display:flex}.status-bar b{color:#b5bbc3;font-weight:500}.privacy{color:#8e986f;justify-self:end;align-items:center;gap:4px;display:flex}.panel-toggle{color:#bec4cb;cursor:pointer;background:#252a31;border:1px solid #3a4048;border-radius:4px;place-items:center;width:30px;height:30px;display:none}
@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:1320px){.workspace{grid-template-columns:200px minmax(0,1fr) 230px}.workspace.left-closed{grid-template-columns:minmax(0,1fr) 230px}.workspace.right-closed{grid-template-columns:200px minmax(0,1fr)}.workspace.left-closed.right-closed{grid-template-columns:minmax(0,1fr)}.panel-toggle{display:grid}.status-bar div{gap:9px}.status-bar div span:nth-child(5),.status-bar div span:nth-child(6){display:none}.tool-button{padding:0 7px}.mode-switch button{padding:0 6px;font-size:9px}}
@media(max-width:760px){.brand small,.tool-button:not(.primary) span{display:none}.workspace{grid-template-columns:minmax(0,1fr)}.left-panel,.right-panel{display:none!important}.status-bar{grid-template-columns:minmax(80px,1fr) auto}.status-bar div span:nth-child(n+4),.privacy{display:none}.control-hint{display:none}.drop-prompt{width:90%}}

/* Task-based right panel */
.right-panel{padding-bottom:0;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr)}
.panel-tabs{border-bottom:1px solid var(--border);background:#171a1f;display:flex;overflow-x:auto;scrollbar-width:thin}
.panel-tabs button{color:#7f8791;cursor:pointer;background:transparent;border:0;border-bottom:2px solid transparent;flex:1 0 auto;min-width:58px;height:38px;padding:0 8px;font-size:9px;white-space:nowrap}
.panel-tabs button:hover{color:#d1d5da;background:#22262c}.panel-tabs button.active{color:#f0c58b;border-bottom-color:var(--accent);background:#20242a;font-weight:600}
.panel-content{min-height:0;padding-bottom:18px;overflow:auto}.panel-content[hidden]{display:none}.panel-content.active{display:block}
.file-summary{margin:0 12px;border:1px solid #30353c;background:#171a1e}.file-summary span{color:#7f8791;border-bottom:1px solid #2b3036;display:flex;justify-content:space-between;gap:10px;padding:8px;font-size:9px}.file-summary span:last-child{border-bottom:0}.file-summary b{color:#c3c9d0;text-overflow:ellipsis;white-space:nowrap;max-width:65%;overflow:hidden;font-weight:500}
.panel-actions{grid-template-columns:1fr 1fr;gap:5px;margin:0 12px;display:grid}.panel-actions.vertical{grid-template-columns:1fr;margin-top:10px}.panel-actions button,.edit-lock-message button{color:#b7bec6;cursor:pointer;background:#242930;border:1px solid #3a414a;border-radius:3px;min-height:30px;padding:5px 8px;font-size:9px}.panel-actions button.primary{color:#1b1c1f;background:var(--accent);border-color:var(--accent);font-weight:650}.panel-actions button:disabled,.edit-lock-message button:disabled{opacity:.4;cursor:not-allowed}.panel-note{color:#717985;margin:10px 12px 0;font-size:9px;line-height:1.6}
.edit-lock-message{color:#9aa2ac;background:#171a1e;border:1px solid #343a42;border-left:2px solid #6d7580;margin:0 12px 10px;padding:9px;display:grid;gap:8px;font-size:9px;line-height:1.5}.edit-lock-message[hidden]{display:none}.edit-lock-message button{color:#e8bd82;border-color:#6b4b28;background:#2b2117}.viewer-shell.view-only .edit-controls{opacity:.45;pointer-events:none}.viewer-shell.editing-enabled .edit-controls{opacity:1;pointer-events:auto}

/* Import orientation step */
.orientation-bar{z-index:11;background:#1b1f25f2;border:1px solid #5b4933;border-left:3px solid var(--accent);border-radius:5px;grid-template-columns:minmax(180px,1fr) auto auto;align-items:center;gap:14px;padding:10px 12px;position:absolute;top:12px;left:12px;right:12px;box-shadow:0 12px 34px #0009;backdrop-filter:blur(8px)}
.orientation-bar[hidden]{display:none}.orientation-copy{align-items:center;gap:9px;min-width:0;display:flex}.orientation-copy strong{font-size:11px;display:block}.orientation-copy small{color:#8f98a3;margin-top:2px;font-size:8px;line-height:1.4;display:block}.step-badge{color:#1b1c1f;background:var(--accent);border-radius:3px;padding:4px 6px;font:600 8px "Geist Mono",monospace;white-space:nowrap}
.orientation-rotate-grid{grid-template-columns:auto 54px 54px;align-items:center;gap:4px;display:grid}.orientation-rotate-grid span{color:#9199a3;font:8px "Geist Mono",monospace;text-align:right;padding-right:2px}.orientation-rotate-grid button,.orientation-actions button{color:#c4cad1;cursor:pointer;background:#252a31;border:1px solid #3e454e;border-radius:3px;min-height:26px;padding:3px 7px;font-size:9px;white-space:nowrap}.orientation-rotate-grid button:hover,.orientation-actions button:hover{background:#313740;border-color:#59616c}.orientation-actions{grid-template-columns:1fr 1fr;gap:5px;display:grid}.orientation-actions .primary{color:#1b1c1f;background:var(--accent);border-color:var(--accent);font-weight:650}.orientation-actions button:disabled{opacity:.4;cursor:not-allowed}.orientation-actions button[hidden]{display:none}
.viewer-shell.orientation-adjusting .mode-switch{opacity:.45}.viewer-shell.orientation-adjusting .view-pane canvas{cursor:grab}

@media(max-width:1100px){.orientation-bar{grid-template-columns:minmax(0,1fr) auto}.orientation-copy{grid-column:1/-1}.orientation-actions{align-self:stretch}.orientation-actions .primary{grid-column:1/-1}.orientation-actions button{min-height:28px}}
@media(max-width:760px){.workspace{position:relative}.workspace.mobile-left-open .left-panel,.workspace.mobile-right-open .right-panel{display:grid!important;position:absolute;top:0;bottom:0;z-index:18;width:min(280px,86vw);box-shadow:0 18px 42px #000b}.workspace.mobile-left-open .left-panel{left:0;display:block!important}.workspace.mobile-right-open .right-panel{right:0}.panel-tabs button{min-width:64px}.orientation-bar{top:8px;left:8px;right:8px;grid-template-columns:1fr;padding:9px;gap:8px}.orientation-copy small{display:none}.orientation-rotate-grid{grid-template-columns:auto repeat(2,minmax(58px,1fr))}.orientation-actions{grid-template-columns:1fr 1fr}.orientation-actions .primary{grid-column:auto}.toast{max-width:86%;white-space:normal;text-align:center}}

/* Quiet ownership link in the status bar */
.status-meta{justify-self:end;align-items:center;gap:10px!important;min-width:0;display:flex}.copyright{color:#737b85;text-decoration:none;white-space:nowrap;transition:color .15s ease}.copyright:hover,.copyright:focus-visible{color:#d9a55f;text-decoration:underline;text-underline-offset:2px}.copyright:focus-visible{outline:1px solid var(--accent);outline-offset:2px;border-radius:2px}
@media(max-width:760px){.status-bar>div:nth-child(2){display:none}.status-meta{display:flex!important;gap:0!important}.status-meta .privacy{display:none}.copyright{font-size:8px}}

/* Slightly brighter muted text for improved readability */
:root{--muted:#9aa3ae}
.control-hint,.panel h3 small,.list-row small,.texture-row small,.edit-note{color:#828b96}
.empty-note,.panel-note,.selection-name small,.size-grid span,.copyright{color:#89929d}
.panel-tabs button,.file-summary span,.property-list>span,.tool-label,.status-bar,.tree-row .tree-icon,.export-menu>strong,.export-menu small,.or-label,.drop-prompt small{color:#949daa}
.orientation-copy small{color:#9da6b1}
