.part-preview-popover{position:fixed;inset:auto;margin:0;padding:0;width:min(320px,calc(100vw - 16px));max-height:calc(100dvh - 16px);overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);box-shadow:0 8px 32px #0003}.part-preview-popover header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--line)}.part-preview-popover header small{display:block;color:var(--muted);margin-top:3px;font-size:10px}.part-preview-scene{position:relative;height:min(210px,38dvh);touch-action:none}.part-preview-scene .three-view{position:absolute;top:0;right:0;bottom:0;left:0}.part-preview-info{padding:10px 12px;font-size:12px}.part-preview-info strong,.part-preview-info small{display:block}.part-preview-info small,.part-preview-info p{color:var(--muted);font-size:10px;margin:4px 0 0}.part-preview-scene .asset-viewer{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;overflow:hidden;touch-action:none}.part-preview-scene .asset-viewer canvas{display:block;width:100%;height:100%}.parts-browser{position:absolute;z-index:3;bottom:18px;left:50%;transform:translate(-50%);width:min(1080px,calc(100% - 330px));padding:0 12px 10px;display:flex;flex-direction:column;max-height:55%}.dock-bottom:not(.dock-collapsed) .parts-browser{height:290px}.dock-bottom .parts-list{flex:1}.palette-header{display:flex;align-items:center;gap:16px;min-height:46px;border-bottom:1px solid var(--line);flex-shrink:0}.palette-choices{display:flex;align-items:center;gap:4px}.palette-choices button{white-space:nowrap;padding:6px 10px;border-radius:6px;font-size:12px;min-height:32px}.palette-choices button:hover{background:var(--tint)}.palette-choices button[aria-pressed=true]{color:var(--accent);background:var(--tint);font-weight:700}.palette-domains{flex-shrink:0;gap:4px}.palette-domains button{padding:6px 16px;border-radius:18px}.palette-domains button[aria-pressed=true]{background:var(--accent);color:#fff}.palette-search{display:flex;align-items:center;gap:7px;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:0 8px;height:30px;margin-left:auto;width:min(280px,40%)}.palette-search input{border:0;background:transparent;color:var(--text);min-width:0;width:100%;font-size:12px;outline-offset:4px}.palette-search button{display:grid;place-items:center}.palette-tools{display:flex;margin-left:auto;gap:2px}.palette-tools .icon-button{width:30px;height:30px}.palette-filters{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid var(--line);flex-shrink:0}.palette-track-count,.palette-types{display:flex;align-items:center;gap:8px;min-width:0}.palette-track-count{border-right:1px solid var(--line);padding-right:12px;flex-shrink:0}.palette-caption{color:var(--muted);font-size:10px;white-space:nowrap}.palette-types .palette-choices{flex-wrap:wrap}.palette-results-header{display:flex;justify-content:space-between;align-items:center;height:28px;flex-shrink:0;color:var(--muted);font-size:10px}.palette-results-header>div{display:flex;gap:4px}.palette-results-header button{width:28px;height:26px;display:grid;place-items:center;border:1px solid var(--line);border-radius:5px}.palette-results-header button:disabled{opacity:.3}.parts-list{display:flex;gap:16px;overflow:auto;min-height:0;overscroll-behavior:contain;scrollbar-width:thin;padding:0 0 6px}.palette-result-group{flex:0 0 auto;min-width:0}.palette-result-group+.palette-result-group{border-left:1px solid var(--line);padding-left:16px}.palette-result-group h3{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:11px;font-weight:600}.palette-result-group h3 span{color:var(--muted);font-weight:400;font-size:10px}.palette-group-cards{display:flex;gap:8px}.part-choice{flex:0 0 126px;width:126px;background:var(--bg);border:1px solid var(--line);border-radius:8px;overflow:hidden}.part-choice:has(.part-item.active){border-color:var(--accent);background:var(--tint)}.part-item{width:100%;display:flex;flex-direction:column;align-items:stretch;padding:6px 8px 4px;text-align:left}.part-item:hover{background:var(--tint)}.part-item:focus-visible,.part-preview-trigger:focus-visible,.palette-choices button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.part-card-visual{height:32px;display:flex;align-items:center;justify-content:center;color:var(--muted)}.part-card-visual svg{width:100%;height:32px}.part-card-name{font-size:11px;font-weight:600;height:30px;line-height:15px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.part-card-code{font-size:10px;color:var(--muted);line-height:16px}.part-card-footer{display:flex;align-items:center;justify-content:space-between;padding:0 6px;border-top:1px solid var(--line);height:28px;color:var(--muted)}.part-card-detail{font-size:10px}.part-preview-trigger{display:flex;align-items:center;justify-content:center;gap:3px;font-size:10px;min-height:26px;min-width:40px;border-radius:4px;color:var(--muted)}.part-preview-trigger:hover,.part-preview-trigger[aria-expanded=true]{background:var(--tint);color:var(--accent)}.catalog-empty{padding:20px;font-size:12px;color:var(--muted)}.app.dock-bottom .canvas-area{bottom:calc(var(--palette-height, 250px) + 64px)}.app.dock-bottom .status-bar{bottom:calc(var(--palette-height, 250px) + 30px)}.app.dock-bottom .selection-bar{bottom:calc(var(--palette-height, 250px) + 62px)}.app.dock-left .parts-browser{top:0;bottom:0;left:0;transform:none;width:264px;max-height:100%;padding:0 12px;border-radius:0}.dock-left .palette-header{flex-wrap:wrap;gap:8px;padding:10px 0}.dock-left .palette-domains button{padding:6px 12px}.dock-left .palette-search{order:3;width:100%;margin:0}.dock-left .palette-filters{align-items:stretch;flex-direction:column;gap:8px}.dock-left .palette-track-count{border:0;padding:0}.dock-left .palette-types{align-items:flex-start}.dock-left .palette-types .palette-caption{padding-top:9px}.dock-left .palette-types .palette-choices{flex:1}.dock-left .palette-choices button{padding:6px 9px}.dock-left .parts-list{flex:1;flex-direction:column;overflow-x:hidden}.dock-left .palette-result-group+.palette-result-group{border-left:0;border-top:1px solid var(--line);padding:12px 0 0}.dock-left .palette-group-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.dock-left .part-choice{width:auto;min-width:0}.app.dock-left .canvas-area{left:calc(var(--palette-width, 264px) + 12px);bottom:88px}.app.dock-left .tools{left:calc(var(--palette-width, 264px) + 12px);max-width:calc(100% - var(--palette-width, 264px) - 24px)}.app.dock-left .status-bar{left:calc(var(--palette-width, 264px) + 12px);bottom:27px}.app.dock-left .selection-bar{left:calc(var(--palette-width, 264px) + 12px);transform:none;bottom:80px}.app.dock-left.dock-collapsed .parts-browser{width:64px;padding:8px}.dock-left.dock-collapsed .palette-header{border:0;flex-direction:column}.dock-left.dock-collapsed .palette-domains{flex-direction:column}.dock-left.dock-collapsed .palette-domains button{padding:6px 2px;font-size:10px}.dock-left.dock-collapsed .palette-tools{flex-direction:column;margin:0}.dock-bottom.dock-collapsed .parts-browser{padding-bottom:0}.dock-bottom.dock-collapsed .palette-header{border:0}@media(max-width:1100px){.dock-bottom:not(.dock-collapsed) .parts-browser{height:340px}.app.dock-bottom .parts-browser{width:calc(100% - 36px)}.app.dock-bottom .view-controls{bottom:calc(var(--palette-height, 250px) + 30px)}}@media(max-width:640px){.dock-bottom:not(.dock-collapsed) .parts-browser{height:390px}.parts-browser{max-height:48%}.palette-header{gap:8px;flex-wrap:wrap;padding:6px 0}.palette-search{order:3;width:100%;margin:0}.palette-filters{align-items:flex-start;flex-wrap:wrap;gap:6px}.palette-types{align-items:flex-start}.palette-caption{display:none}.app.dock-left .parts-browser{width:210px}.dock-left .palette-group-cards{grid-template-columns:1fr}}@media(pointer:coarse){.dock-bottom:not(.dock-collapsed) .parts-browser{height:390px}.palette-choices button,.palette-tools .icon-button,.palette-results-header button,.part-preview-trigger{min-height:44px;min-width:44px}.palette-search{min-height:44px}.palette-search input{font-size:16px}.part-card-footer{height:44px}.palette-results-header{height:46px}}.part-choice{position:relative}.part-favorite{position:absolute;z-index:1;top:2px;right:2px;width:28px;height:28px;display:grid;place-items:center;border-radius:5px;color:var(--muted);background:var(--surface)}.part-favorite[aria-pressed=true]{color:var(--accent)}.part-favorite:hover{background:var(--tint)}.part-favorite:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.part-card-visual{padding-right:20px}.palette-sort{max-width:100px;height:26px;border:1px solid var(--line);border-radius:5px;background:var(--surface);color:var(--text);font:inherit}.palette-domains button:has(svg){display:grid;place-items:center;padding-inline:12px}@media(pointer:coarse){.part-favorite{width:44px;height:44px}.palette-sort{min-height:44px}.part-card-visual{padding-right:36px}}.test-run.workspace{position:relative}.run-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.run-controls{position:absolute;left:18px;bottom:20px;width:350px;padding:14px 16px;border-radius:18px;max-height:70%;overflow-y:auto}.run-control-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}.run-control-row:first-child strong{flex:1}.run-control-row label{display:flex;align-items:center;gap:12px;flex:1;min-width:0;white-space:nowrap}.run-control-row label select{flex:1;width:0}.run-controls select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:5px;min-width:0}.run-control-row input[type=range]{width:105px;accent-color:var(--accent)}.run-control-row output{margin-left:auto;font-variant-numeric:tabular-nums;min-width:46px;text-align:right}.run-control-row small{display:block;color:var(--muted);font-size:10px}.run-controls p{font-size:12px;margin:7px 0;line-height:1.6}.run-controls details{color:var(--muted);font-size:11px}.run-controls summary{cursor:pointer}.run-warning{color:var(--warning)}.run-switches{display:grid;gap:7px;margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.run-switches label{display:flex;justify-content:space-between;align-items:center;font-size:12px}.run-view-controls{position:absolute;bottom:22px;right:20px;display:flex;border-radius:12px;padding:4px}.test-run .mini-view{right:20px}.run-power-mode{display:flex;align-items:center;gap:6px;font-size:12px;margin:8px 0}.run-power-packs>div{display:flex;align-items:center;gap:6px;margin:10px 0}.run-power-packs label{display:flex;align-items:center;flex:1;gap:6px;font-size:12px}.run-power-packs input{width:100px;accent-color:var(--accent)}.run-power-packs output{font-size:12px;min-width:30px}.run-panel-heading{display:flex;align-items:center;gap:10px;margin-bottom:4px}.run-panel-heading span{color:var(--muted);font-size:12px;flex:1}.run-controls{max-width:calc(100% - 36px);overscroll-behavior:contain}@media(max-width:600px){.run-controls{left:10px;bottom:74px;max-width:calc(100% - 20px);max-height:48%;padding:8px 12px}.run-control-row{flex-wrap:wrap}.run-view-controls{bottom:14px;right:10px}}@media(any-pointer:coarse){.run-controls input[type=range]{min-height:44px;touch-action:pan-y}.run-controls select{min-height:44px}}.power-editor h3{font-size:14px;margin:20px 0 9px}.power-plan{width:100%;height:210px;background:var(--bg);border:1px solid var(--line);border-radius:10px;margin-top:12px}.power-plan [role=button]{cursor:pointer}.power-plan [role=button]:focus-visible{outline:none}.power-plan [role=button]:focus-visible circle{stroke:var(--text);stroke-width:3px}.power-legend{font-size:11px;color:var(--muted)}.power-row>.power-dot{flex:none;width:9px;height:9px;border-radius:50%}.power-bill small{display:block;color:var(--muted)}.power-summary{display:flex;align-items:center;gap:20px;padding:12px;border-radius:10px;background:var(--tint)}.power-check{display:flex;gap:8px;font-size:12px;margin-top:10px}.power-row{display:flex;align-items:center;gap:9px;margin:8px 0}.power-row>span{flex:1;font-size:12px}.power-row>input{flex:1;min-width:80px}.power-row small{color:var(--muted)}.power-row label{display:flex;gap:3px;align-items:center;font-size:12px}.power-editor input:not([type=checkbox]),.power-editor select{background:var(--surface);color:var(--text);font:inherit;border:1px solid var(--line);border-radius:7px;padding:5px 7px;min-width:0}.power-new{display:flex;flex-wrap:wrap;gap:8px;padding:10px;border:1px solid var(--line);border-radius:10px}.power-new button,.power-add{background:var(--tint);color:var(--accent);border-radius:7px;padding:6px 9px;display:inline-flex;align-items:center;gap:6px}.power-editor details{margin-top:16px;color:var(--muted);font-size:12px;line-height:1.6}.power-editor summary{cursor:pointer}.power-error{color:var(--warning)}.power-bill{width:100%;border-collapse:collapse;font-size:12px}.power-bill td,.power-bill th{padding:8px 5px;border-bottom:1px solid var(--line);text-align:left}.power-bill td:last-child,.power-bill th:last-child{text-align:right}.app.account-screen{min-height:0;overflow:auto}.account-spacer{flex:1}.account-screen .app-header{position:sticky;top:0}.library-content{max-width:1200px;margin:auto;padding:42px 32px}.library-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:30px}.library-heading h1{font-size:24px;margin:0 0 10px}.library-heading .primary{display:flex;align-items:center;gap:8px}.library-actions,.library-actions>button,.template-back,.template-size,.template-size label,.template-categories,.template-card .layout-card-meta>span{display:flex;align-items:center;gap:8px}.library-actions,.template-size,.template-categories{flex-wrap:wrap}.template-back{margin-bottom:18px;color:var(--accent)}.template-filters{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}.template-categories button{border-radius:20px;padding:8px 14px;border:1px solid var(--line)}.template-categories button.active{background:var(--accent);color:var(--surface)}.template-size input{width:106px;padding:10px;border:1px solid var(--line);border-radius:8px;color:var(--text);background:var(--surface)}.template-size-note{font-size:12px;line-height:1.7}.template-card{display:flex;flex-direction:column}.template-card .layout-card-details{flex:1}.template-card .layout-card-cover{height:180px}.template-card .muted{font-size:13px;line-height:1.6}.template-dimensions{font-size:18px;font-variant-numeric:tabular-nums}.template-card details{font-size:12px;color:var(--muted);line-height:1.7}.template-card summary{cursor:pointer;padding:5px 0}.template-card ul{padding-left:18px}.layout-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:22px}.layout-card{padding:0;text-align:left;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--surface)}.layout-card:hover{border-color:var(--accent)}.layout-card-open{display:block;width:100%;padding:0;text-align:left;border-radius:0}.layout-card-copy{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:44px;border-top:1px solid var(--line);border-radius:0;color:var(--accent)}.layout-card-cover img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;padding:14px}.layout-card-cover{position:relative;overflow:hidden;height:145px;display:grid;place-items:center;color:var(--accent);background:var(--tint)}.layout-card-details{padding:20px;display:flex;flex-direction:column;gap:10px}.layout-card-details strong{overflow-wrap:anywhere}.layout-card-meta{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.library-empty{padding:90px 20px;text-align:center;color:var(--muted)}.library-error{padding:16px;margin-bottom:20px;border:1px solid var(--warning);border-radius:12px;color:var(--warning)}.library-error button{margin-left:16px;text-decoration:underline}.login-card{max-width:460px;margin:12vh auto;padding:36px;background:var(--surface);border:1px solid var(--line);border-radius:24px;text-align:center}.login-card>svg{color:var(--accent)}.login-card h1{font-size:32px}.login-card p{line-height:1.8}.login-link{display:block;text-decoration:none;margin:28px 0}.allowlist-form{display:flex;gap:12px;max-width:600px}.allowlist-form input{flex:1;min-width:0;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text)}.allowlist{list-style:none;padding:0;max-width:600px}.allowlist li{display:flex;justify-content:space-between;gap:12px;padding:18px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.layout-name-field select{padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);font:inherit}@media(max-width:600px){.library-content{padding:28px 18px}.account-name{display:none}.login-card{margin:8vh 16px;padding:24px}.account-screen .app-header{gap:8px}.library-heading h1{font-size:20px}}@media(max-width:600px){.library-heading{align-items:flex-start;flex-direction:column;gap:14px}.allowlist-form{flex-wrap:wrap}.allowlist-form input{flex-basis:100%;font-size:16px}.allowlist li{align-items:center}.template-size input{font-size:16px}}.layout-card-actions{display:flex;border-top:1px solid var(--line)}.layout-card-actions button{display:flex;align-items:center;justify-content:center;gap:6px;flex:1;min-height:44px;border-radius:0}.layout-card-actions button+button{border-left:1px solid var(--line)}.layout-management{width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:26px;border:1px solid var(--line);border-radius:18px;background:var(--surface);color:var(--text);box-shadow:0 20px 80px #0004}.layout-management::backdrop{background:#091a2b88}.layout-management h2{font-size:20px;margin:0 0 24px}.layout-management p{line-height:1.7;font-size:14px}.layout-management label{display:grid;gap:8px;margin:18px 0;font-size:14px}.layout-management input,.layout-management select{width:100%;padding:12px;border:1px solid var(--line);border-radius:8px;color:var(--text);background:var(--surface);font:inherit}.layout-management-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.layout-management-actions button{min-height:44px;padding:10px 16px}.layout-management .danger{background:#bd3344;color:#fff}.layout-delete-name{overflow-wrap:anywhere;font-weight:600}.library-notice{padding:12px 16px;border-radius:10px;background:var(--tint);color:var(--text)}.template-elevation{color:var(--accent);font-size:12px;font-weight:600}.template-filters>.modes{position:static;inset:auto;transform:none;flex:0 0 auto}.template-filters>.template-categories{flex-basis:100%;order:-1}:root{font-family:Noto Sans JP,Yu Gothic UI,sans-serif;font-synthesis:none;font-size:14px}*{box-sizing:border-box}body{margin:0;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{cursor:pointer;color:inherit;border:0;background:none}button:disabled{opacity:.3;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #f7a833;outline-offset:3px}a{color:inherit}svg{flex-shrink:0}.app{--surface: #fff;--canvas: #fcfdff;--grid: #eaf0f5;--text: #1c3047;--muted: #718294;--line: #e7ecf1;--accent: #00869a;--tint: #e3f5f8;--bed: #c9ced0;--bed-edge: #a3adb4;--sleeper: #707579;--rail: #303d48;--shadow: 0 2px 10px #172a3d0c;--warning: #ba7400;background:var(--canvas);color:var(--text);height:100dvh;min-height:440px;overflow:hidden}.app.dark{--surface: #222d38;--canvas: #171f28;--grid: #26303b;--text: #e0e9f0;--muted: #9aacbb;--line: #384552;--accent: #32b5c5;--tint: #163e48;--bed: #5d6873;--bed-edge: #74818e;--sleeper: #9fa9b4;--rail: #e2e7eb;--shadow: 0 3px 14px #0002;--warning: #ffbf4c;color-scheme:dark}.app-header{height:58px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 22px;gap:12px;position:relative;z-index:5}.brand{font-size:25px;font-weight:700;letter-spacing:-.9px;text-decoration:none;white-space:nowrap}.header-divider{height:24px;border-left:1px solid var(--line);margin:0 4px}.project-name{width:220px;background:transparent;border:0;color:var(--text);font-weight:500;padding:5px 0}.modes{position:absolute;left:50%;transform:translate(-50%);display:flex;background:var(--canvas);border:1px solid var(--line);border-radius:30px;padding:3px}.modes button{height:32px;width:80px;border-radius:24px;font-weight:500}.modes button.active{background:var(--accent);color:var(--surface)}.header-actions{margin-left:auto;display:flex;align-items:center;gap:5px}.test-mode-button{border:1px solid var(--accent);color:var(--accent);border-radius:9px;padding:7px 11px;white-space:nowrap;font-size:12px}.test-mode-button.active{background:var(--accent);color:var(--surface)}.prototype-label{font-size:11px;color:var(--muted);margin-right:12px}.save-status{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:11px;white-space:nowrap}.save-status.save-error{color:var(--warning)}.layout-name-field{display:grid;gap:8px}.layout-name-field input{width:100%;padding:10px;border:1px solid var(--line);border-radius:6px;color:var(--text);background:var(--canvas)}@media(max-width:800px){.save-status span{display:none}}.icon-button{width:38px;height:38px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.icon-button:hover:not(:disabled){background:var(--tint);color:var(--accent)}.icon-button.active{background:var(--tint);color:var(--accent)}.workspace{height:calc(100% - 58px);position:relative;background-color:var(--canvas)}.grid-setting select{color:var(--text);background:var(--surface);border:0;font:inherit;max-width:82px;padding:6px 2px}.snap-guide circle{fill:var(--tint);fill-opacity:.65;stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke}.snap-guide text{fill:var(--accent);paint-order:stroke;stroke:var(--canvas);stroke-width:4px;stroke-linejoin:round}.floating{background:var(--surface);border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow)}.canvas-area{position:absolute;left:28px;right:28px;top:110px;bottom:220px}.plan{height:100%;width:100%;display:block;touch-action:none;-webkit-user-select:none;user-select:none}.plan.placing{cursor:crosshair}.plan.panning{cursor:grab}.plan.pan-active{cursor:grabbing}.selection-marquee{fill:#008c9b1a;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:5 3;vector-effect:non-scaling-stroke}.roadbed-surface{fill:var(--bed);stroke:var(--bed-edge);stroke-width:1;stroke-linejoin:round}.sleepers{fill:none;stroke:var(--sleeper);stroke-width:2.5}.rail{fill:none;stroke:var(--rail);stroke-width:1.5}.joint{fill:none;stroke:var(--canvas);stroke-width:2}.hit-area{fill:none;stroke:transparent;stroke-width:32;cursor:move}.selected .roadbed-surface{stroke:var(--accent);stroke-width:2;fill:var(--tint)}.selected .rail,.selected .sleepers{stroke:var(--accent)}.selection-end{fill:var(--surface);stroke:var(--accent);stroke-width:3}.open-port{fill:var(--surface);stroke:#efaa26;stroke-width:4;pointer-events:none}.rotation-hit{fill:transparent;pointer-events:all;cursor:grab}.rotation-handle,.rotation-pin{fill:var(--surface);stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke}.rotation-pin{fill:var(--accent)}.dimensions path{stroke:var(--muted);stroke-width:1.3;fill:none}.dimensions text{fill:var(--text);font-family:inherit;font-size:var(--dimension-font, 21px);font-weight:500;paint-order:stroke;stroke:var(--canvas);stroke-width:10px;stroke-linejoin:round}.tools{position:absolute;left:20px;top:18px;padding:6px;display:flex;gap:5px;z-index:2}.tools .icon-button:first-child.active{background:var(--accent);color:var(--surface)}.tool-divider{border-left:1px solid var(--line);height:24px;align-self:center;margin:0 4px}.mini-view{position:absolute;right:20px;top:16px;width:224px;height:146px;overflow:hidden}.three-view{width:100%;height:100%;position:relative}.three-view canvas{display:block;width:100%;height:100%;touch-action:none}.mini-swap{position:absolute;bottom:5px;right:6px;display:flex;align-items:center;gap:9px;padding:5px 8px;background:var(--surface);border-radius:5px;font-size:12px}.mini-plan{pointer-events:none}.selection-bar{position:absolute;bottom:223px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:13px;padding:3px 7px 3px 13px;font-size:13px}.selection-bar small{color:var(--muted);font-size:11px}.placement-hint{position:absolute;top:74px;left:20px;max-width:calc(100% - 40px);display:flex;flex-wrap:wrap;white-space:nowrap;gap:12px;align-items:center;padding:1px 5px 1px 14px;color:var(--accent);z-index:4}.placement-hint span{font-size:12px;color:var(--muted)}.status-bar{position:absolute;bottom:189px;left:23px;display:flex;align-items:center;gap:20px;font-size:12px;max-width:90%;white-space:nowrap}.status-bar button{display:flex;align-items:center;gap:7px;padding:6px 0}.status-bar .good{color:var(--accent)}.status-bar .warning{color:var(--warning)}.status-bar .danger,.collision-notice{color:#df354b}.collision-overlay polygon{fill:#f03548;stroke:#f03548;stroke-width:1}.collision-notice{position:absolute;top:72px;left:50%;transform:translate(-50%);padding:9px 14px;font-size:12px;pointer-events:none}.autoconnect-panel{position:absolute;z-index:6;top:88px;left:20px;width:280px;max-height:calc(100% - 120px);overflow:auto;padding:14px;font-size:12px}.autoconnect-panel header{display:flex;align-items:center;gap:8px}.autoconnect-panel header button{margin-left:auto}.autoconnect-panel p{line-height:1.6}.connect-options{display:flex;gap:12px;margin:10px 0}.connect-options label{display:grid;gap:4px}.connect-options select{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:5px;padding:5px}.connect-difficult{display:flex;align-items:center;gap:5px}.connect-candidates{display:grid;gap:6px}.connect-candidates button{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px;display:grid;grid-template-columns:36px 1fr;text-align:left;gap:4px}.connect-candidates button[aria-pressed=true]{border-color:var(--accent);background:var(--tint)}.connect-candidates small{grid-column:1 / -1;color:var(--muted)}.connect-bom{padding:0;list-style:none}.connect-bom li{display:flex;justify-content:space-between;padding:3px 0}.open-port.connect-port{pointer-events:all;cursor:crosshair;stroke:var(--accent);stroke-width:2;fill:var(--surface)}.open-port.chosen-port{fill:var(--accent)}.availability-mark svg{width:13px;height:13px}.availability-mark{display:inline-flex;gap:3px}.availability-available{color:var(--accent)}.availability-limited{color:var(--warning)}.availability-discontinued{color:#df354b}.dimension-note{font-size:11px;color:var(--muted)}.height-control{display:inline-flex;align-items:center;gap:5px;font-size:12px;white-space:nowrap}.height-control select,.height-control input{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:5px}.height-control input{width:78px}.height-control input:invalid{border-color:#d45b57}.length-settings{display:block;color:var(--muted);font-size:11px}.track .structure-deck{fill:var(--structure-color, #bcc2c5);stroke:var(--track-edge, #788590);stroke-width:.7}.track .structure-wall{fill:var(--structure-color, #929ea6)}.dark .track .structure-deck{fill:var(--structure-color, #53616e)}.dark .track .structure-wall{fill:var(--structure-color, #8796a4)}.track.selected .structure-deck{stroke:var(--accent);stroke-width:2}.support-map{width:100%;height:170px;margin:10px 0;background:var(--bg);border:1px solid var(--line)}.support-footprints polygon{fill:var(--muted);fill-opacity:.45;stroke:var(--muted);stroke-width:1}.support-map [role=button]{cursor:pointer}.support-map [role=button]:focus circle{stroke:var(--text);stroke-width:5px}.support-form fieldset{border:0;padding:0;min-width:0}.support-form label{display:flex;gap:8px;align-items:center;margin:8px 0}.support-form input,.support-form select,[aria-label=調整する橋脚]{color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:6px}.support-offsets{display:flex;flex-wrap:wrap;gap:8px}.support-offsets label{flex-direction:column;align-items:start;font-size:12px}.support-offsets input{width:110px}.support-actions{display:flex;gap:12px;margin:16px 0}.support-actions button{padding:8px 14px;border:1px solid var(--accent);border-radius:6px}.support-error{color:#df354b;border-left:3px solid currentColor;padding:8px}.view-controls{position:absolute;bottom:28px;right:20px;z-index:2}.zoom-controls{display:flex;align-items:center;padding:2px}.zoom-controls .icon-button{width:30px;height:32px}.zoom-controls>span{width:42px;text-align:center;font-size:11px}.empty-state,.loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;color:var(--muted)}.empty-state h2{font-size:19px;color:var(--text);font-weight:500}.empty-state p{font-size:12px}dialog{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:14px;width:min(560px,calc(100vw - 30px));max-height:80dvh;padding:24px;box-shadow:0 20px 70px #0003}dialog::backdrop{background:#13243855}dialog>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}dialog h2{margin:0;font-size:19px;font-weight:600}dialog p,dialog li{font-size:14px;line-height:1.9}dialog ul{padding-left:20px}.muted{color:var(--muted);font-size:13px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:13px 5px;border-bottom:1px solid var(--line)}th{font-weight:500;color:var(--muted)}td:last-child,th:last-child{text-align:right}td a{text-underline-offset:3px;color:var(--accent)}dialog footer{font-size:12px;color:var(--muted);margin-top:22px}.primary{background:var(--accent);color:var(--surface);border-radius:8px;padding:11px 18px}.endpoint-list{max-height:35vh;overflow:auto}.endpoint-list button{display:flex;align-items:center;width:100%;gap:12px;border-bottom:1px solid var(--line);padding:12px;color:var(--warning)}.endpoint-list small{color:var(--muted);margin-left:auto}@media(max-width:1150px){.project-name{width:140px}.prototype-label{display:none}.view-controls{right:14px}.mini-view{width:185px;height:125px}.dimension-note{display:none}}@media(max-width:800px){.app-header{padding:0 12px;gap:4px}.brand{font-size:20px}.header-divider,.project-name{display:none}.header-actions .icon-button{width:30px}.modes button{width:52px}.tools{left:12px;top:12px;gap:1px;padding:4px}.tools .icon-button{width:32px;height:34px}.tools .tool-divider{margin:0}.mini-view{width:145px;height:105px;right:12px;top:65px}.canvas-area{left:4px;right:4px;top:170px;bottom:231px}.view-controls{bottom:181px;right:12px}.status-bar{bottom:214px;left:14px;gap:14px;font-size:11px}.selection-bar{bottom:270px;left:50%}}@media(max-width:480px){.header-actions [data-action=export]{display:none}.brand{font-size:18px}.app-header>.icon-button{width:27px}.modes{left:53%}.modes button{width:42px;font-size:12px}.header-actions{gap:0}.header-actions .icon-button{width:28px}.tools .icon-button{width:30px}.mini-view{top:68px}.selection-bar small{display:none}}.structure-slab{fill:var(--slab);stroke:var(--bed-edge);stroke-width:.35}.selected .structure-slab{fill:var(--tint);stroke:var(--accent)}.track[data-track-style]{--bed: var(--finish-bed);--sleeper: var(--finish-sleeper);--slab: var(--finish-slab)}.dark .track[data-track-style]{--bed: var(--finish-bed-dark);--sleeper: var(--finish-sleeper-dark);--slab: var(--finish-slab-dark)}.track .structure-buffer-base{fill:#96999b}.track .structure-buffer-concrete{fill:#b1b2ad;stroke:#727674;stroke-width:.7}.track .structure-buffer-ballast{fill:#88857c}.track .structure-buffer-steel{fill:#4d5050;stroke:#8b9295;stroke-width:.5}.track .structure-buffer-marker{fill:#292b2b;stroke:#dbcfad;stroke-width:.7}.track .structure-buffer-marker.lit{fill:#ffcf6b}.track.selected [class*=structure-buffer]{stroke:var(--accent);stroke-width:1}@media(any-pointer:coarse),(max-width:800px){.app .icon-button,.app .tools .icon-button{width:44px;height:44px;min-width:44px}.app button,.app select,.app summary{min-height:44px}.app input:not([type=checkbox]):not([type=radio]){min-height:44px;font-size:16px}.app select{font-size:16px}.app .tools{max-width:calc(100% - 290px);flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain}.app .placement-hint{top:84px}.app .selection-bar{max-width:calc(100% - 28px);overflow-x:auto;white-space:nowrap}.app .status-bar{gap:8px}.app dialog{max-height:calc(100dvh - 24px);overflow-y:auto}}@media(max-width:800px){.app .modes{position:static;transform:none}.app .tools{left:12px;max-width:calc(100% - 24px);gap:2px}.app .mini-view{top:76px}.app .selection-bar{left:50%;max-width:calc(100% - 24px)}.app .app-header{overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.app .app-header>*{flex-shrink:0}.app .placement-hint{left:12px;max-width:calc(100% - 24px)}}@media(max-height:600px)and (max-width:1000px){.app{min-height:320px}.app .mini-view{width:110px;height:76px;top:84px}}.shortcut-list{display:grid;gap:12px;margin:20px 0}.shortcut-list>div{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line);padding-bottom:8px}.shortcut-list strong{font-size:13px;font-weight:500}.shortcut-list button{border:1px solid var(--line);border-radius:6px;padding:8px;margin:2px}.shortcut-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.shortcut-form label{display:flex;flex-direction:column;gap:5px;font-size:13px}.shortcut-form select{max-width:100%;padding:9px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:6px}.link-notice{position:absolute;right:20px;top:58px;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:10px;font-size:12px;z-index:10}.scenery-coordinates{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.scenery-coordinates input{width:100%;display:block}.scenery-run-status{position:absolute;left:20px;bottom:20px;padding:7px 12px;z-index:8;font-size:12px;display:flex;gap:12px;pointer-events:none}.scenery-controls{gap:6px}.part-context-name{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scenery-controls .icon-button{flex-shrink:0}@media(max-width:640px){.scenery-controls .part-context-name{max-width:100px}}.sync-comparison{display:grid;grid-template-columns:90px 1fr;gap:12px;padding:16px;background:var(--bg);border-radius:8px}.sync-comparison dd{margin:0}.sync-comparison small,.recovery-choice small{display:block;color:var(--muted);margin-top:5px}.sync-actions{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.sync-actions button{border:1px solid var(--line);border-radius:6px;padding:10px 12px}.sync-actions button:first-child{background:var(--accent);color:#fff}.recovery-choice{display:flex;gap:12px;align-items:center;margin:12px 0}.sync-dialog{max-width:min(560px,95vw)}
