:root{--bg: #1b1830;--bg-2: #241f3d;--panel: #2b2547;--panel-2: #342c56;--line: #4a4173;--text: #eceaf6;--muted: #a49dc4;--accent: #a78bfa;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Hiragino Kaku Gothic ProN,Noto Sans JP,Meiryo,sans-serif;font-size:15px;line-height:1.6;-webkit-text-size-adjust:100%}button,input{font:inherit;color:inherit}.muted{color:var(--muted)}.small{font-size:.85em}.app{display:flex;flex-direction:column;height:100%}.app-header{display:flex;align-items:center;gap:16px;padding:10px 16px;background:var(--bg-2);border-bottom:1px solid var(--line);flex:none}.app-header h1{font-size:16px;margin:0;white-space:nowrap}.app-header h1 span{color:var(--accent)}.app-tabs{display:flex;flex:none;gap:6px;margin-left:auto}.app-tabs button{color:var(--muted);background:none;padding:5px 16px;border-radius:999px;border:1px solid transparent;white-space:nowrap;cursor:pointer}.app-tabs button.is-active{color:var(--text);border-color:var(--line);background:var(--panel)}.app-main{flex:1;min-height:0;overflow:hidden}.app-footer{flex:none;display:flex;flex-wrap:wrap;gap:4px 16px;padding:8px 16px;font-size:12px;color:#ffd166;background:var(--bg-2);border-top:1px solid var(--line)}.tree-page{display:flex;height:100%;min-height:0}.tree-area{position:relative;flex:1;min-width:0;display:flex;flex-direction:column}.tree-controls{position:absolute;z-index:3;top:10px;left:10px;right:10px;display:flex;flex-wrap:wrap;gap:8px;pointer-events:none}.tree-controls>*{pointer-events:auto}.search-box{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:7px 12px;min-width:190px}.cat-filter{display:flex;flex-wrap:wrap;gap:6px}.cat-filter button{background:#1b1830d9;border:1px solid var(--line);border-radius:999px;padding:5px 13px;cursor:pointer}.cat-filter button.is-active{font-weight:700}.search-hits{position:absolute;z-index:3;top:92px;left:10px;display:flex;flex-wrap:wrap;gap:6px;max-width:min(560px,calc(100% - 20px));background:#1b1830eb;border:1px solid var(--line);border-radius:10px;padding:8px}.search-hits button{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:3px 10px;cursor:pointer}.tree-view{flex:1;min-height:0;position:relative;overflow:hidden;touch-action:none;cursor:grab;background:radial-gradient(1200px 800px at 50% 45%,#262046 0%,var(--bg) 70%)}.tree-view:active{cursor:grabbing}.tree-svg{width:100%;height:100%;display:block;-webkit-user-select:none;user-select:none}.edge{stroke:#6b5fa8;stroke-width:2.5}.edge.is-dim{stroke:#3b345c}.tree-view.is-plan .edge{stroke:#3f3866}.tree-view.is-plan .edge.is-active{stroke:#9d8bf0;stroke-width:3}.node{cursor:pointer;outline:none}.node.is-dim{opacity:.25}.node.is-untaken{opacity:.45}.root-box{fill:#3a3163;stroke:#8b7ddb;stroke-width:2.5}.root-label{fill:#ded8f7;font-size:15px;font-weight:700;text-anchor:middle}.dice-box{fill:none;stroke-width:3}.node:hover .dice-box,.node:focus-visible .dice-box{stroke-width:5}.dice-label{fill:#ded8f7;font-size:15px;font-weight:700;text-anchor:middle;paint-order:stroke;stroke:#17142a;stroke-width:4}.blank-dot{fill:#2f2850;stroke-width:3;stroke-opacity:.55}.supporter-hex{fill:none;stroke:#d9a8ff;stroke-width:2.5}.node:hover .supporter-hex,.node:focus-visible .supporter-hex{stroke-width:4}.supporter-label{fill:#e6d5f7;font-size:12px;font-weight:700;text-anchor:middle;paint-order:stroke;stroke:#17142a;stroke-width:4}.node.is-taken .dice-box{stroke-width:5}.node.is-taken .supporter-hex{stroke:#f0d5ff;stroke-width:4}.rank-badge{fill:#1b1830;font-size:11px;font-weight:700;text-anchor:middle;pointer-events:none}.hold-ring{fill:none;stroke:var(--accent);stroke-width:3;opacity:.9;animation:hold-grow .35s linear;pointer-events:none}@keyframes hold-grow{0%{stroke-dasharray:0 999}to{stroke-dasharray:999 0}}.select-ring{fill:none;stroke:#fff;stroke-width:3}.hit-ring{fill:none;stroke:#ffd166;stroke-width:3;stroke-dasharray:5 4}.tree-zoom{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:6px;z-index:3}.tree-zoom button{width:42px;height:36px;background:#1b1830e6;border:1px solid var(--line);border-radius:8px;cursor:pointer}.detail-pane{position:relative;flex:none;width:380px;border-left:1px solid var(--line);background:var(--bg-2);display:flex;flex-direction:column}.detail-scroll{overflow-y:auto;padding:16px;-webkit-overflow-scrolling:touch}.detail-pane .dice-head{padding-right:44px}.detail-close{position:absolute;top:6px;right:8px;z-index:2;width:32px;height:32px;border-radius:8px;background:var(--panel);border:1px solid var(--line);cursor:pointer;font-size:18px;line-height:1}.dice-head{border-left:4px solid var(--line);padding-left:12px;margin-bottom:14px;display:flex;align-items:flex-start;gap:12px;min-height:34px}.dice-icon{flex:none;width:52px;height:52px}.dice-head h2{margin:0 0 6px;font-size:19px}.cat-badge{display:inline-block;padding:1px 10px;border-radius:999px;font-size:12px;font-weight:700;color:#1b1830}.cat-badge.neutral{background:var(--panel-2);color:var(--text)}.block+.block{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.block h3{font-size:12px;letter-spacing:.08em;margin:0 0 8px;color:var(--muted)}.desc .line{display:block}.desc{margin:0 0 10px}.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.stat{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:7px 10px}.stat dt{font-size:11px;color:var(--muted)}.stat dd{margin:0;font-size:17px;font-weight:700}.effect-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.effect-list li{display:grid;grid-template-columns:22px 1fr;gap:4px 8px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:9px 11px}.effect-index{width:22px;height:22px;border-radius:50%;background:var(--panel-2);text-align:center;font-size:12px;line-height:22px}.effect-text .line{display:block}.effect-level{grid-column:2;font-size:11px;color:var(--muted)}.tag-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag-chip-wrap{position:relative}.tag-chip{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:2px 9px;font-size:12px;cursor:pointer}.tag-chip.is-open{border-color:var(--accent);color:var(--accent)}.tag-popover{position:absolute;z-index:5;left:0;top:calc(100% + 6px);min-width:220px;max-width:300px;background:var(--panel);border:1px solid var(--accent);border-radius:8px;padding:9px 11px;font-size:13px;white-space:pre-line;box-shadow:0 8px 24px #00000073}.help-button{flex:none;width:30px;height:30px;padding:0;border-radius:50%;background:#1b1830d9;border:1px solid var(--line);color:var(--muted);cursor:pointer}.help-button:hover{border-color:var(--accent);color:var(--text)}.cost-caution{margin:0;background:#1b1830d9;border:1px solid var(--line);border-radius:8px;padding:5px 12px;color:#ffd166}.cost-pane{width:340px}.cost-collapse{display:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:16px;background:#0a081499}.modal{position:relative;width:min(430px,100%);max-height:100%;overflow-y:auto;background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:18px 20px;box-shadow:0 20px 50px #00000080}.modal h2{margin:0 0 14px;padding-right:36px;font-size:17px}.help-list{margin:0;display:flex;flex-direction:column;gap:8px}.help-list>div{display:grid;grid-template-columns:84px 1fr;gap:10px;align-items:baseline;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 11px}.help-list dt{font-weight:700;font-size:13px}.help-list dd{margin:0;font-size:13px}.cost-total{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.cost-total-main{display:flex;gap:18px}.cost-total-main>div{min-width:0}.cost-total-label{display:block;font-size:11px;color:var(--muted)}.cost-total-main strong{font-size:22px;line-height:1.25;font-variant-numeric:tabular-nums}.cost-total p{margin:6px 0 0}.cost-node-head{display:flex;align-items:center;gap:10px;border-left:4px solid var(--line);padding-left:10px;margin-bottom:10px}.rank-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rank-now{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.rank-buttons{display:flex;gap:5px;margin-left:auto}.rank-buttons button{min-width:38px;background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:4px 9px;cursor:pointer}.rank-buttons button:disabled{opacity:.35;cursor:default}.rank-slider{width:100%;margin:10px 0 4px;accent-color:var(--accent)}.price-table{margin-top:8px;border:1px solid var(--line);border-radius:8px;overflow:hidden}.price-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:baseline;padding:6px 11px;background:var(--panel);font-variant-numeric:tabular-nums}.price-row+.price-row{border-top:1px solid var(--line)}.price-label{color:var(--muted);font-size:12px}.price-gold{font-weight:700}.price-core{font-size:12px;color:var(--muted);min-width:74px;text-align:right}.unlock-note{margin:8px 0 0;color:#ffd166}.cost-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.cost-table th,.cost-table td{padding:4px 6px;text-align:right;font-weight:400}.cost-table thead th{font-size:11px;color:var(--muted);border-bottom:1px solid var(--line)}.cost-table tbody th{display:flex;align-items:center;gap:6px;text-align:left}.cost-table .dot{width:9px;height:9px;border-radius:50%;flex:none}.preset-buttons{display:flex;flex-wrap:wrap;gap:6px}.preset-buttons button{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px 12px;cursor:pointer}.preset-buttons button:hover{border-color:var(--accent)}.toast{position:fixed;left:50%;bottom:54px;transform:translate(-50%);z-index:19;max-width:min(460px,calc(100% - 24px));background:#1b1830f5;border:1px solid var(--accent);border-radius:10px;padding:8px 14px;box-shadow:0 10px 30px #00000080;font-size:.9em;pointer-events:none;animation:toast-in .16s ease-out,toast-out .28s ease-in forwards}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes toast-out{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,8px)}}.plan-notice-text{margin:10px 0 0;padding:8px 12px;border:1px solid var(--accent);border-radius:8px;background:var(--panel)}.slot-share{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.slot-share p{margin:0;flex:1 1 160px}.slot-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.slot{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.slot.is-empty{display:flex;align-items:center;justify-content:space-between;gap:8px;background:transparent;border-style:dashed}.slot-head{display:flex;align-items:center;gap:8px}.slot-name{flex:1;min-width:0;background:var(--bg-2);border:1px solid var(--line);border-radius:6px;padding:3px 8px}.slot-name:focus{outline:none;border-color:var(--accent)}.slot-version{flex:none;font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 8px}.slot-summary{margin:6px 0 0;display:flex;flex-wrap:wrap;gap:4px 10px}.slot-date{color:var(--muted)}.slot-buttons{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.slot.is-empty .slot-buttons{margin-top:0}.slot-buttons button,.slot-share button,.share-actions button{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:4px 12px;cursor:pointer}.slot-buttons button:hover,.slot-share button:hover,.share-actions button:hover{border-color:var(--accent)}.slot-delete{color:var(--muted)}.share-url{width:100%;margin-top:12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13px}.share-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px}.share-actions .is-primary{border-color:var(--accent);background:var(--accent);color:#1b1830}.dice-page{position:relative;height:100%;overflow-y:auto;padding:16px;-webkit-overflow-scrolling:touch}.toc{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:14px 16px}.toc h2{font-size:15px;margin:0 0 10px}.toc-cat+.toc-cat{margin-top:12px}.toc-cat h3{font-size:13px;margin:0 0 6px;padding-left:8px;border-left:3px solid}.toc-cat ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.toc-cat button{display:flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:4px 11px 4px 6px;cursor:pointer}.toc-cat button:hover{border-color:var(--accent)}.cat-section{margin-top:26px}.cat-head{display:flex;align-items:baseline;gap:10px;font-size:18px;margin:0 0 12px;padding-left:10px;border-left:4px solid}.dice-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px;align-items:start}.dice-card{background:var(--panel);border:1px solid var(--line);border-left-width:4px;border-radius:12px;padding:14px 16px;scroll-margin-top:12px}.dice-card .dice-head{border-left:none;padding-left:0}.to-top{position:sticky;bottom:12px;float:right;margin-top:20px;background:#1b1830eb;border:1px solid var(--line);border-radius:999px;padding:7px 16px;cursor:pointer}@media (max-width: 780px){.app-header{gap:10px;padding:8px 12px}.app-header h1{min-width:0;font-size:15px;overflow:hidden;text-overflow:ellipsis}.app-tabs button{padding:5px 12px}.tree-page{flex-direction:column}.detail-pane{position:absolute;left:0;right:0;bottom:0;width:auto;max-height:62%;border-left:none;border-top:1px solid var(--line);border-radius:14px 14px 0 0;box-shadow:0 -10px 30px #00000080;z-index:4}.app-main{position:relative}.tree-controls{top:8px;left:8px;right:8px}.search-box{flex:1;min-width:0}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cost-pane{width:auto;max-height:54%}.cost-collapse{display:block;position:absolute;top:6px;right:8px;z-index:2;width:34px;height:30px;border-radius:8px;background:var(--panel);border:1px solid var(--line);cursor:pointer;line-height:1}.cost-page.is-collapsed .cost-pane{max-height:128px}.cost-page.is-collapsed .detail-scroll{overflow:hidden}.cost-pane .detail-scroll{padding-top:32px}}@media (max-width: 560px){.app-header h1 span{display:none}}
