:root{--font-ui: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Meiryo", system-ui, sans-serif;--font-num: "SF Mono", "Menlo", "Consolas", monospace;--bg: #f6f6f4;--surface: #ffffff;--surface-sunken: #ecece8;--line: #d8d8d2;--line-strong: #b4b4ac;--text: #1c1c1a;--text-muted: #6b6b64;--text-faint: #96968e;--status-considering: #8a8a82;--status-candidate: #2f6fb5;--status-confirmed: #2f7d4f;--status-onhold: #b5762f;--status-rejected: #b5453f;--fixture-fill: rgba(47, 111, 181, .1);--fixture-line: #4a78a8;--fixture-locked: #8a8a82;--warn: #b5453f;--radius: 3px;--shadow: 0 1px 2px rgba(0, 0, 0, .1), 0 4px 12px rgba(0, 0, 0, .06)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-ui);font-size:13px;line-height:1.6;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}button,input,select,textarea{font:inherit;color:inherit}button{background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);padding:4px 10px;cursor:pointer}button:hover{background:var(--surface-sunken)}button[disabled]{opacity:.45;cursor:default}a{color:var(--status-candidate)}.app-shell{display:flex;flex-direction:column;height:100%}.app-header{display:flex;align-items:center;gap:16px;height:40px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--line)}.app-nav{display:flex;gap:2px}.app-nav a{padding:3px 10px;border-radius:var(--radius);color:var(--text-muted);text-decoration:none}.app-nav a[aria-current=page]{background:var(--surface-sunken);color:var(--text)}.app-main{flex:1;min-height:0;overflow:auto}.plan-warning{background:#fdf3e3;border-bottom:1px solid #e3cfa6;color:#7a5518;padding:4px 12px}.placeholder{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-faint)}.mode-layout{display:flex;flex-direction:column;height:100%;min-height:0}.mode-body{flex:1;display:flex;min-height:0}.toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:4px 8px;background:var(--surface);border-bottom:1px solid var(--line)}.toolbar label{display:flex;align-items:center;gap:4px;color:var(--text-muted)}.toolbar button{padding:2px 8px}.toolbar-sep{width:1px;height:18px;background:var(--line);margin:0 4px}.banner{display:flex;align-items:center;gap:10px;padding:4px 12px;background:#fdf3e3;border-bottom:1px solid #e3cfa6;color:#7a5518}.panel{width:240px;flex:none;overflow:auto;padding:8px 10px;background:var(--surface-sunken);border-right:1px solid var(--line)}.panel.properties,.panel.summary{border-right:none;border-left:1px solid var(--line);width:280px}.panel-title{display:flex;align-items:baseline;justify-content:space-between;gap:6px;margin:0 0 8px;font-size:13px}.panel h3{margin:12px 0 4px;font-size:12px;color:var(--text-muted);font-weight:600}.panel input[type=number],.panel input[type=search],.panel input[type=text],.panel textarea,.panel select{width:100%;padding:2px 4px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface)}.panel textarea{min-height:54px;resize:vertical}.hint{color:var(--text-faint);font-size:12px}.checkbox{display:flex;align-items:center;gap:4px}.checkbox input{width:auto}.field-row{display:flex;gap:6px}.field-row label{flex:1;display:flex;flex-direction:column;font-size:11px;color:var(--text-muted)}.linklike{background:none;border:none;padding:0;text-align:left;color:var(--status-candidate)}.danger{color:var(--warn);border-color:var(--warn)}.catalog-kind{margin:10px 0 2px}.catalog-list,.check-list,.tray-list,.slot-list,.slot-assets,.context-menu{list-style:none;margin:0;padding:0}.catalog-list button{display:flex;justify-content:space-between;gap:8px;width:100%;margin-bottom:2px;text-align:left;cursor:grab}.slot-list>li{padding:3px 0;border-bottom:1px solid var(--line)}.slot-code{display:inline-block;min-width:60px}.badge-modified{margin-left:4px;padding:0 4px;border:1px solid var(--line-strong);border-radius:var(--radius);font-size:11px;color:var(--text-muted)}.badge-missing{margin-left:6px;color:var(--status-onhold);font-size:11px}.conflict-note{padding:4px 6px;background:#fdf3e3;border:1px solid #e3cfa6;margin-bottom:6px}.grid{width:100%;border-collapse:collapse}.grid th,.grid td{border-bottom:1px solid var(--line);padding:2px 4px;text-align:left;font-weight:400}.grid th{color:var(--text-muted);font-size:11px}.grid .num,.grid td.num{text-align:right}.viewport{position:relative;flex:1;min-width:0;overflow:hidden;background:#e8e8e4;contain:strict}.viewport-stage{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.viewport-image{display:block;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.viewport-layer{position:absolute;top:0;left:0;overflow:visible}.viewport-banner{position:absolute;z-index:2;top:6px;left:6px;padding:3px 8px;background:#fdf3e3;border:1px solid #e3cfa6;color:#7a5518;border-radius:var(--radius)}.viewport-status{position:absolute;z-index:2;right:6px;bottom:6px;display:flex;gap:10px;padding:2px 8px;background:#ffffffe6;border:1px solid var(--line);border-radius:var(--radius);color:var(--text-muted);pointer-events:none}.viewport-axis{color:var(--text-faint)}.drag-readout{position:fixed;z-index:40;padding:2px 6px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);pointer-events:none}.fixture polygon,.fixture circle{fill:var(--fixture-fill);stroke:var(--fixture-line);vector-effect:non-scaling-stroke}.fixture text{fill:var(--text-muted);-webkit-user-select:none;user-select:none}.fixture .fixture-size{fill:var(--text-faint)}.fixture.is-locked polygon,.fixture.is-locked circle{stroke:var(--fixture-locked);fill:#0000000a}.fixture.is-selected polygon,.fixture.is-selected circle{stroke:var(--status-confirmed);fill:#2f7d4f24}.fixture.is-highlight polygon,.fixture.is-highlight circle{stroke:var(--status-onhold);fill:#b5762f29}.fixture-layer.is-faint{opacity:.4;pointer-events:none}.rubber-band{fill:#2f6fb51a;stroke:var(--status-candidate)}.pin{cursor:pointer}.pin path{vector-effect:non-scaling-stroke}.pin-halo{fill:none;stroke:var(--text);stroke-width:1;opacity:.5}.pin.is-selected .pin-halo{stroke:var(--status-candidate);stroke-width:1.5;opacity:1}.pin-badge{fill:var(--text);font-family:var(--font-ui)}.map-center{position:relative;flex:1;display:flex;flex-direction:column;min-width:0}.legend{position:absolute;z-index:2;left:6px;bottom:128px;padding:4px 8px;background:#fffffff0;border:1px solid var(--line);border-radius:var(--radius)}.legend-toggle{border:none;background:none;padding:0;color:var(--text-muted)}.legend-body{display:flex;gap:16px;margin-top:4px}.legend-body ul{list-style:none;margin:0;padding:0}.legend-body li{display:flex;align-items:center;gap:4px}.legend-badge{margin-left:2px;color:var(--text-muted)}.tray{flex:none;height:112px;overflow:auto;padding:4px 8px;background:var(--surface-sunken);border-top:1px solid var(--line)}.tray-head{display:flex;gap:10px;align-items:baseline;margin-bottom:4px}.tray-list{display:flex;flex-wrap:wrap;gap:4px}.tray-list button{cursor:grab;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inline-create{position:fixed;z-index:50}.inline-create input{padding:3px 6px;border:1px solid var(--status-candidate);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.context-menu{position:fixed;z-index:50;min-width:180px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow);padding:3px}.context-menu button{display:block;width:100%;text-align:left;border:none;background:none}.context-menu button:hover{background:var(--surface-sunken)}.modal-backdrop{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;background:#1c1c1a47}.modal{width:420px;padding:14px 16px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow)}.modal h2{margin:0 0 8px;font-size:14px}.modal label{display:flex;flex-direction:column;font-size:11px;color:var(--text-muted);margin-bottom:6px}.modal input,.modal select{padding:2px 4px;border:1px solid var(--line-strong);border-radius:var(--radius)}.modal .field-row{gap:8px}.modal-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:12px}.drawer{display:flex;flex-direction:column;min-height:0;background:var(--surface);border-left:1px solid var(--line)}.drawer.pane{height:100%;border-left:none}.drawer.drawer-side{width:420px;flex:none;height:100%;box-shadow:var(--shadow)}.drawer-head{padding:8px 12px;border-bottom:1px solid var(--line)}.drawer-head-top{display:flex;align-items:center;gap:8px}.drawer-code{color:var(--text-muted)}.drawer-title-input{flex:1;min-width:0;font-size:15px;font-weight:600;border:1px solid transparent;border-radius:var(--radius);background:transparent;padding:2px 6px}.drawer-title-input:hover{border-color:var(--line)}.drawer-title-input:focus{border-color:var(--line-strong);background:var(--surface);outline:none}.drawer-nav{display:flex;align-items:center;gap:4px}.drawer-counter{color:var(--text-muted);white-space:nowrap}.drawer-note{color:var(--warn);padding-top:4px}.drawer-tabs{display:flex;gap:2px;padding:6px 12px 0;border-bottom:1px solid var(--line)}.drawer-tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;color:var(--text-muted);padding:4px 10px}.drawer-tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--status-candidate)}.drawer-body{flex:1;min-height:0;overflow:auto;padding:12px}.field{margin-bottom:12px}.field-head{display:flex;align-items:center;gap:6px;margin-bottom:2px;min-height:18px}.field-label{color:var(--text-muted)}.badge-unset{color:var(--text-faint);border:1px solid var(--line);border-radius:var(--radius);padding:0 4px;font-size:11px}.save-state{color:var(--text-faint);font-size:11px}.save-state.saved{color:var(--status-confirmed)}.save-state.failed{color:var(--warn)}.save-state.failed button{margin-left:6px;padding:0 6px}.input{width:100%;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:4px 6px}.input:focus{border-color:var(--line-strong);outline:none}.input.invalid{border-color:var(--warn);background:#fdf5f4}.input[readonly]{background:var(--surface-sunken);color:var(--text-muted)}.input.num{font-family:var(--font-num);text-align:right}.num-wrap{display:flex;align-items:center;gap:4px}.num-wrap .unit{color:var(--text-faint)}.field-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.field-row.two{grid-template-columns:repeat(2,1fr)}.combo{position:relative}.combo-list{position:absolute;z-index:20;left:0;right:0;margin:2px 0 0;padding:2px;list-style:none;max-height:220px;overflow:auto;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow)}.combo-option{display:flex;justify-content:space-between;gap:8px;width:100%;border:none;background:none;text-align:left;padding:3px 6px}.combo-option.active{background:var(--surface-sunken)}.combo-option.muted{color:var(--text-faint)}.combo-option.disabled{color:var(--text-faint);cursor:not-allowed}.combo-reason{color:var(--warn);font-size:11px}.combo-empty{color:var(--text-faint);padding:3px 6px}.conflict{border:1px solid #e3cfa6;background:#fdf3e3;border-radius:var(--radius);padding:6px 8px;margin-top:4px;width:100%}.conflict-head{margin:0 0 4px;color:#7a5518}.conflict-cols{display:grid;grid-template-columns:1fr 1fr;gap:8px}.conflict-label{color:var(--text-muted);font-size:11px}.conflict-value{margin:2px 0 4px;word-break:break-word}.section{border-top:1px solid var(--line);padding-top:10px;margin-top:14px}.section>h3{font-size:12px;margin:0 0 8px;color:var(--text-muted);font-weight:600}.section-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.section-head h3{flex:1;font-size:12px;margin:0;color:var(--text-muted);font-weight:600}.empty{color:var(--text-faint);padding:6px 0}.row-list{list-style:none;margin:0;padding:0}.row-list>li{border:1px solid var(--line);border-radius:var(--radius);padding:6px 8px;margin-bottom:6px}.row-head{display:flex;align-items:baseline;gap:8px}.row-head .grow{flex:1;min-width:0}.meta{color:var(--text-faint);font-size:11px}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.status-検討中{background:var(--status-considering)}.status-候補{background:var(--status-candidate)}.status-確定{background:var(--status-confirmed)}.status-保留{background:var(--status-onhold)}.status-不採用{background:var(--status-rejected)}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.media-cell{border:1px solid var(--line);border-radius:var(--radius);padding:4px;background:var(--surface)}.media-cell.primary{border-color:var(--status-candidate)}.media-thumb{width:100%;aspect-ratio:4 / 3;object-fit:cover;background:var(--surface-sunken);border-radius:var(--radius);display:block}.media-actions{display:flex;gap:2px;margin-top:4px}.media-actions button{padding:0 4px;font-size:11px}.badge-compressed{font-size:11px;color:var(--text-muted);border:1px solid var(--line);border-radius:var(--radius);padding:0 3px}.dropzone{border:1px dashed var(--line-strong);border-radius:var(--radius);padding:14px;text-align:center;color:var(--text-muted);margin-bottom:10px}.dropzone.over{border-color:var(--status-candidate);background:#eef4fb}.upload-plan{border:1px solid var(--line);border-radius:var(--radius);padding:8px;margin-bottom:8px}.upload-plan p{margin:0 0 6px}.progress{color:var(--text-muted)}.content-mode{display:flex;height:100%;min-height:0}.content-list{width:280px;flex:none;border-right:1px solid var(--line);display:flex;flex-direction:column;background:var(--surface)}.content-list-head{padding:6px 8px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:6px}.content-list ul{list-style:none;margin:0;padding:0;overflow:auto;flex:1}.content-list li button{display:flex;gap:6px;align-items:center;width:100%;border:none;border-bottom:1px solid var(--line);border-radius:0;background:none;text-align:left;padding:5px 8px}.content-list li button[aria-current=true]{background:var(--surface-sunken)}.list-thumb{width:32px;height:24px;object-fit:cover;background:var(--surface-sunken);border-radius:2px;flex:none}.list-main{flex:1;min-width:0}.list-title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content-center{flex:1;min-width:0}.minimap{width:240px;flex:none;border-left:1px solid var(--line);background:var(--surface);padding:8px}.minimap.collapsed{width:36px;padding:8px 4px}.minimap-figure{position:relative;margin-top:8px}.minimap-figure img{width:100%;display:block;border:1px solid var(--line)}.minimap-dot{position:absolute;width:9px;height:9px;margin:-5px 0 0 -5px;border-radius:50%;background:var(--status-candidate);border:2px solid #fff}.grow{flex:1;min-width:0}.table-page{display:flex;flex-direction:column;height:100%;min-height:0}.table-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 12px;background:var(--surface);border-bottom:1px solid var(--line)}.table-bar .grow{flex:1}.preset-group{display:flex;gap:2px}.preset-group button[aria-pressed=true]{background:var(--surface-sunken);border-color:var(--line-strong)}.col-toggles{display:flex;gap:8px;flex-wrap:wrap;color:var(--text-muted)}.col-toggles label{display:inline-flex;gap:3px;align-items:center}.table-scroll{flex:1;min-height:0;overflow:auto;background:var(--surface)}table.grid{border-collapse:collapse;width:100%}table.grid th,table.grid td{border-bottom:1px solid var(--line);padding:4px 8px;text-align:left;white-space:nowrap;max-width:360px;overflow:hidden;text-overflow:ellipsis}table.grid th{position:sticky;top:0;background:var(--surface-sunken);border-bottom:1px solid var(--line-strong);font-weight:600;cursor:pointer;z-index:1}table.grid tbody tr:hover{background:var(--surface-sunken)}table.grid td.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;text-align:right}table.grid td.wrap{white-space:normal}.row-link{border:none;background:none;padding:0;color:var(--status-candidate);text-align:left}.form-panel{padding:12px;max-width:960px}.form-panel h2{font-size:14px;margin:0 0 8px}.form-panel .section{margin-top:18px}.form-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-bottom:8px}.form-row label{display:flex;flex-direction:column;gap:2px;color:var(--text-muted)}.form-row input,.form-row select{border:1px solid var(--line);border-radius:var(--radius);padding:4px 6px;background:var(--surface)}.invite-url{display:flex;gap:6px;align-items:center;margin-top:6px}.invite-url input{flex:1;font-family:var(--font-num)}.notice{background:#eef4fb;border:1px solid #c9dcf0;border-radius:var(--radius);padding:6px 8px;margin-bottom:8px}.error{color:var(--warn)}.calib-stage{position:relative;display:inline-block;max-width:100%;border:1px solid var(--line)}.calib-stage img{display:block;max-width:100%}.calib-point{position:absolute;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;border:2px solid #fff}.calib-point.ref{background:var(--status-candidate)}.calib-point.check{background:var(--status-onhold)}.import-panel{max-width:none}.import-panel .table-scroll{overflow-x:auto;max-height:60vh}table.import-grid{table-layout:fixed;width:100%;min-width:900px}table.import-grid col.col-check{width:72px}table.import-grid col.col-rowno{width:56px}table.import-grid col.col-action{width:160px}table.import-grid col.col-title{width:26%}table.import-grid col.col-vocab{width:130px}table.import-grid td,table.import-grid th{max-width:none}table.import-grid td .input{width:100%;box-sizing:border-box}
