:root{--ui-scale: 1;--ui-base-scale: 1.5;--fs-9: calc(9px * var(--ui-base-scale) * var(--ui-scale));--fs-10: calc(10px * var(--ui-base-scale) * var(--ui-scale));--fs-11: calc(11px * var(--ui-base-scale) * var(--ui-scale));--fs-12: calc(12px * var(--ui-base-scale) * var(--ui-scale));--fs-13: calc(13px * var(--ui-base-scale) * var(--ui-scale));--fs-14: calc(14px * var(--ui-base-scale) * var(--ui-scale));--fs-15: calc(15px * var(--ui-base-scale) * var(--ui-scale));--fs-16: calc(16px * var(--ui-base-scale) * var(--ui-scale))}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden}body{background:#f4f1ea;color:#2a2620;font-family:Courier New,Courier,monospace;font-size:var(--fs-13)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#e5e0d3}::-webkit-scrollbar-thumb{background:#b9b0a0;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#8a3a3a}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:Courier New,Courier,monospace}.app{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden;background:#f4f1ea;color:#2a2620}.app-body{display:grid;grid-template-columns:clamp(160px,calc(180px * var(--ui-base-scale) * var(--ui-scale)),32vw) 1fr clamp(170px,calc(200px * var(--ui-base-scale) * var(--ui-scale)),34vw);flex:1;overflow:hidden;min-height:0}.level-tabs{display:flex;align-items:stretch;gap:0;padding:0 8px;background:#ece6d6;border-bottom:1px solid #c2bbab;flex-shrink:0;overflow-x:auto;scrollbar-width:thin}.level-tab{display:flex;align-items:center;padding:4px 14px;font-size:var(--fs-12);font-weight:500;color:#6a6258;background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background .12s,color .12s,border-color .12s;position:relative}.level-tab:hover{background:#f4f1ea;color:#2a2620}.level-tab--active{color:#8a3a3a;border-bottom-color:#8a3a3a;background:#f4f1ea;font-weight:600}.level-tab--dragging{opacity:.4}.level-tab--drop-target{border-left:2px solid #8a3a3a}.level-tab--add{color:#8a3a3a;font-size:var(--fs-15);font-weight:700;padding:4px 10px;border-bottom:none}.level-tab--add:hover{background:#ddd8c8}.level-tab__label{max-width:120px;overflow:hidden;text-overflow:ellipsis}.level-tab__link-badge{font-size:.6rem;opacity:.7;margin-left:3px;flex-shrink:0}.level-tab__rename-input{width:100px;font-size:var(--fs-12);border:1px solid #8a7f66;border-radius:2px;padding:1px 4px;background:#fff;color:#2a2620;outline:none}.level-tab__menu{position:fixed;z-index:1000;background:#fff;border:1px solid #c2bbab;border-radius:4px;box-shadow:0 2px 8px #00000026;padding:4px 0;min-width:100px}.level-tab__menu button{display:block;width:100%;text-align:left;padding:6px 14px;font-size:var(--fs-12);border:none;background:transparent;color:#2a2620;cursor:pointer}.level-tab__menu button:hover{background:#ece6d6}.map-header{display:flex;align-items:center;gap:10px;padding:6px 12px;background:#fff;border-bottom:2px solid #8a7f66;flex-shrink:0;flex-wrap:wrap}.header-left{display:flex;align-items:center;gap:10px;flex:1;min-width:220px}.header-center,.header-right{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.header-overflow-wrap{position:relative}.header-overflow-menu{position:absolute;top:100%;right:0;margin-top:4px;background:#f4f1ea;border:1px solid #c2bbab;border-radius:4px;box-shadow:0 4px 16px #0000002e;z-index:50;min-width:160px;padding:4px 0;display:flex;flex-direction:column}.header-overflow-menu button{display:block;width:100%;text-align:left;background:none;border:none;color:#2a2620;font-size:var(--fs-13);padding:6px 14px;cursor:pointer;white-space:nowrap;font-family:inherit}.header-overflow-menu button:hover{background:#ece6d6;color:#8a3a3a}.header-overflow-menu button.danger{color:#8a3a3a}.header-overflow-menu button.danger:hover{background:#f5e6e6}.header-overflow-sep{border:none;border-top:1px solid #d4cfc0;margin:4px 0}.app-title{color:#8a3a3a;font-weight:700;font-size:var(--fs-15);letter-spacing:2px;white-space:nowrap}.map-name-input{background:#fff;border:1px solid #c2bbab;color:#2a2620;padding:4px 8px;font-size:var(--fs-13);min-width:140px;outline:none}.map-name-input:focus{border-color:#8a3a3a}.header-label{color:#6a6258;font-size:var(--fs-11);text-transform:uppercase}.grid-select{background:#fff;border:1px solid #c2bbab;color:#2a2620;padding:3px 6px;font-size:var(--fs-12);outline:none}.grid-select:focus{border-color:#8a3a3a}.header-btn{background:#fff;border:1px solid #c2bbab;color:#2a2620;padding:4px 10px;font-size:var(--fs-12);transition:background .15s,border-color .15s;white-space:nowrap}.header-btn:hover{background:#ece6d6;border-color:#8a7f66;color:#2a2620}.header-btn.active{background:#8a3a3a;border-color:#8a3a3a;color:#fff}.header-btn.active:hover{background:#6e2e2e;border-color:#6e2e2e;color:#fff}.header-btn.danger:hover{background:#f5dada;border-color:#8a3a3a;color:#8a3a3a}.app-body>nav>.nav-rail-container{flex:1;min-height:0}.nav-rail-container{display:flex;flex-direction:row;height:100%;background:#fff;border-right:2px solid #8a7f66;overflow:hidden}.nav-rail{display:flex;flex-direction:column;gap:0;background:#ece6d6;border-right:1px solid #c2bbab;flex-shrink:0;width:52px;padding-top:2px}.nav-rail-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:10px 4px 8px;font-size:var(--fs-10);font-weight:500;color:#6a6258;background:transparent;border:none;border-left:3px solid transparent;cursor:pointer;transition:background .12s,color .12s,border-color .12s}.nav-rail-btn:hover{background:#f4f1ea;color:#2a2620}.nav-rail-btn.active{color:#8a3a3a;border-left-color:#8a3a3a;background:#fff;font-weight:600}.nav-rail-icon{font-size:1.25em;line-height:1}.nav-rail-label{font-size:var(--fs-9);letter-spacing:.5px;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.nav-rail-sep{border:none;border-top:1px solid #c2bbab;margin:4px 8px;width:calc(100% - 16px)}.nav-rail-panel{display:flex;flex-direction:column;gap:8px;padding:8px 6px;overflow-y:auto;flex:1;min-height:0}.app-body>nav{display:flex;flex-direction:column;min-height:0;overflow:hidden}.app-body>nav>.toolbar{flex:1;min-height:0}.toolbar{display:flex;flex-direction:column;background:#fff;border-right:2px solid #8a7f66;overflow:hidden;gap:0}.toolbar-tabs{display:flex;gap:0;background:#ece6d6;border-bottom:1px solid #c2bbab;flex-shrink:0}.toolbar-tab-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 4px 5px;font-size:var(--fs-10);font-weight:500;color:#6a6258;background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:background .12s,color .12s,border-color .12s}.toolbar-tab-btn:hover{background:#f4f1ea;color:#2a2620}.toolbar-tab-btn.active{color:#8a3a3a;border-bottom-color:#8a3a3a;background:#fff;font-weight:600}.toolbar-tab-panel{display:flex;flex-direction:column;gap:8px;padding:8px 6px;overflow-y:auto;flex:1;min-height:0}.toolbar-section{display:flex;flex-direction:column;gap:3px}.toolbar-label{font-size:var(--fs-10);letter-spacing:2px;color:#8a3a3a;padding:2px 4px;border-bottom:1px solid #c2bbab;margin-bottom:4px}.toolbar-sub-label{font-size:var(--fs-9);opacity:.7;margin:4px 0 2px;letter-spacing:.5px}.toolbar-value-display{font-size:var(--fs-9);min-width:20px;text-align:center}.tool-btn{display:flex;align-items:center;gap:6px;background:#f4f1ea;border:1px solid #c2bbab;color:#2a2620;padding:5px 8px;font-size:var(--fs-12);text-align:left;transition:background .15s,border-color .15s;width:100%;min-width:0;overflow:hidden}.tool-btn:hover{background:#ece6d6;border-color:#8a7f66}.tool-btn.active{background:#ece6d6;border-color:#8a3a3a;color:#8a3a3a}.tool-icon{font-size:var(--fs-14);flex-shrink:0}.tool-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-shortcut{color:#8a7f66;font-size:var(--fs-10);flex-shrink:0}.tool-btn .grid-select{min-width:0;flex:1 1 auto;max-width:100%}.tile-preview{flex-shrink:0}.tile-palette{display:flex;flex-direction:column;gap:2px}.tile-btn{display:flex;align-items:center;gap:6px;background:#f4f1ea;border:1px solid #c2bbab;color:#2a2620;padding:4px 6px;font-size:var(--fs-11);text-align:left;width:100%;min-width:0;overflow:hidden;transition:background .12s,border-color .12s}.tile-btn:hover{background:#ece6d6;border-color:#8a7f66}.tile-btn.active{background:#ece6d6;border-color:#8a3a3a;color:#8a3a3a}.tile-btn-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stamp-tools,.stamp-category-tabs{display:flex;flex-wrap:wrap;gap:2px;margin-bottom:6px}.stamp-category-tab{background:#f4f1ea;border:1px solid #c2bbab;color:#2a2620;padding:2px 6px;font-size:var(--fs-10, 10px);cursor:pointer;transition:background .12s,border-color .12s}.stamp-category-tab:hover{background:#ece6d6;border-color:#8a7f66}.stamp-category-tab.active{background:#ece6d6;border-color:#8a3a3a;color:#8a3a3a;font-weight:600}.stamp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:3px;max-height:240px;overflow-y:auto;padding:2px}.stamp-grid-item{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f4f1ea;border:1px solid #c2bbab;color:#4a4535;padding:4px 2px 2px;cursor:pointer;transition:background .12s,border-color .12s}.stamp-grid-item:hover{background:#ece6d6;border-color:#8a7f66}.stamp-grid-item.active{background:#ece6d6;border-color:#8a3a3a;color:#8a3a3a;box-shadow:inset 0 0 0 1px #8a3a3a}.stamp-grid-item svg{width:28px;height:28px;flex-shrink:0}.stamp-grid-item-label{font-size:var(--fs-9);line-height:1.1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin-top:1px}.stamp-transform-controls{background:#eae5d8;border:1px solid #c4b99a;border-radius:4px;padding:4px 6px;margin:4px 0}.stamp-transform-controls .toolbar-label{display:flex;align-items:center}.stamp-transform-row{display:flex;align-items:center;gap:4px;margin:2px 0;min-height:26px}.stamp-transform-label{font-size:var(--fs-10);color:#4a4a4a;min-width:42px;flex-shrink:0}.stamp-transform-value{font-size:var(--fs-9);color:#666;min-width:30px;text-align:right;flex-shrink:0}.tool-btn.compact{padding:2px 6px;font-size:var(--fs-11);min-width:28px;min-height:26px}.stamp-slider{flex:1;min-width:60px;height:16px;cursor:pointer}.selection-inspector{display:flex;flex-direction:column;padding:8px;font-size:var(--fs-10);overflow-y:auto;min-height:0}.selection-inspector.empty-state{opacity:.85}.inspector-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.inspector-type-badge{font-size:var(--fs-10);font-weight:600;color:#4a4a4a;background:#eae5d8;padding:2px 8px;border-radius:4px;white-space:nowrap}.inspector-title{font-size:var(--fs-11);font-weight:700;color:#1a1a2e;margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid #c4b99a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inspector-section{margin-bottom:6px}.inspector-section-label{font-size:var(--fs-9);font-weight:700;color:#8a7f66;letter-spacing:.05em;margin-bottom:2px}.inspector-row{display:flex;align-items:center;gap:4px;min-height:24px;margin:1px 0}.inspector-field-label{font-size:var(--fs-9);color:#4a4a4a;min-width:56px;flex-shrink:0}.inspector-field-value{font-size:var(--fs-9);color:#1a1a2e;font-weight:500}.inspector-slider{flex:1;min-width:50px;height:16px;cursor:pointer}.inspector-text-input{width:100%;padding:3px 6px;font-size:var(--fs-10);border:1px solid #c4b99a;border-radius:3px;background:#fff;color:#1a1a2e;box-sizing:border-box}.inspector-textarea{width:100%;padding:3px 6px;font-size:var(--fs-10);border:1px solid #c4b99a;border-radius:3px;background:#fff;color:#1a1a2e;resize:vertical;box-sizing:border-box;font-family:inherit}.canvas-area{background:#e5e0d3;overflow:hidden;display:flex;align-items:stretch;position:relative}.canvas-wrapper{position:relative;width:100%;height:100%;display:flex;flex-direction:column}.canvas-viewport{flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;position:relative}.canvas-transform-container{transition:none}.canvas-transform-container canvas{box-shadow:0 2px 12px #281e1440;background:#fff}.zoom-controls{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:6px;background:#fffe;border-top:1px solid #8a7f66;padding:4px 12px;z-index:10}.zoom-controls button{background:#f4f1ea;border:1px solid #c2bbab;color:#2a2620;min-width:24px;height:24px;font-size:var(--fs-16);line-height:1;display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s}.zoom-controls button:hover{background:#ece6d6;color:#8a3a3a}.zoom-controls span{color:#2a2620;font-size:var(--fs-12);min-width:40px;text-align:center}.zoom-hint{color:#6a6258;font-size:var(--fs-10);letter-spacing:.5px;white-space:nowrap}.right-panel{display:flex;flex-direction:column;background:#fff;border-left:2px solid #8a7f66;overflow:hidden;min-height:0}.right-panel>.notes-panel{border-left:none;flex:1;min-height:0}.initiative-panel{display:flex;flex-direction:column;flex-shrink:0;max-height:40%;border-bottom:1px solid #8a7f66;background:#fff;min-height:0}.initiative-header{display:flex;align-items:center;justify-content:space-between;padding:8px 8px 6px;border-bottom:1px solid #c2bbab;flex-shrink:0}.initiative-clear-btn{background:#ece6d6;border:1px solid #8a3a3a;color:#8a3a3a;padding:3px 8px;font-size:var(--fs-11);transition:background .15s,color .15s}.initiative-clear-btn:hover{background:#8a3a3a;color:#fff}.initiative-empty{color:#6a6258;font-size:var(--fs-11);padding:12px;text-align:center;line-height:1.5}.initiative-list{flex:1;overflow-y:auto;padding:4px}.initiative-item{display:flex;align-items:center;gap:6px;padding:4px 6px;margin-bottom:3px;border:1px solid #c2bbab;background:#f4f1ea;cursor:pointer;transition:border-color .12s,background .12s;-webkit-user-select:none;user-select:none}.initiative-item:hover{border-color:#8a7f66}.initiative-item.selected{border-color:#8a3a3a;background:#f5e8e8}.initiative-item.drag-over{border-color:#2a6f97;background:#e6f1f7}.initiative-order{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;background:#2a2620;color:#fff;font-size:var(--fs-10);font-weight:700;border-radius:50%;padding:0 4px;flex-shrink:0}.initiative-swatch{display:inline-block;width:14px;height:14px;border-radius:50%;border:1px solid #2d3561;flex-shrink:0}.initiative-name{flex:1;font-size:var(--fs-12);color:#2a2620;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.initiative-input{flex:1;font-size:var(--fs-12);padding:1px 4px;border:1px solid #8a7f66;background:#fff;min-width:0}.initiative-edit-btn{background:#fff;border:1px solid #c2bbab;color:#6a6258;width:18px;height:18px;font-size:var(--fs-11);display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;transition:background .12s,color .12s}.initiative-edit-btn:hover{background:#ece6d6;color:#2a2620}.notes-panel{display:flex;flex-direction:column;background:#fff;border-left:2px solid #8a7f66;overflow:hidden}.notes-header{display:flex;align-items:center;justify-content:space-between;padding:8px 8px 6px;border-bottom:1px solid #c2bbab;flex-shrink:0}.add-note-btn{background:#ece6d6;border:1px solid #8a3a3a;color:#8a3a3a;padding:3px 8px;font-size:var(--fs-11);transition:background .15s,color .15s}.add-note-btn:hover{background:#8a3a3a;color:#fff}.notes-empty{color:#6a6258;font-size:var(--fs-11);padding:12px;text-align:center;line-height:1.7}.notes-list{flex:1;overflow-y:auto;padding:4px}.note-item{border:1px solid #c2bbab;margin-bottom:4px;cursor:pointer;transition:border-color .15s,background .15s;background:#f4f1ea}.note-item:hover{border-color:#8a7f66}.note-item.selected{border-color:#8a3a3a;background:#f5e8e8}.note-view{padding:6px}.note-header-row{display:flex;align-items:center;gap:6px;margin-bottom:2px}.note-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;background:#2a2620;color:#fff;font-size:var(--fs-10);font-weight:700;border-radius:50%;flex-shrink:0}.note-label{font-size:var(--fs-12);font-weight:700;color:#2a2620;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.note-actions{display:flex;gap:3px}.note-edit-btn,.note-delete-btn{background:#fff;border:1px solid #c2bbab;color:#6a6258;width:18px;height:18px;font-size:var(--fs-11);display:flex;align-items:center;justify-content:center;padding:0;transition:background .12s,color .12s}.note-edit-btn:hover{background:#ece6d6;color:#2a2620}.note-delete-btn:hover{background:#f5dada;color:#8a3a3a;border-color:#8a3a3a}.note-coords{font-size:var(--fs-10);color:#6a6258}.note-desc{font-size:var(--fs-11);color:#4a4438;margin-top:3px;line-height:1.4;word-break:break-word}.note-edit{padding:6px;display:flex;flex-direction:column;gap:4px}.note-input{background:#fff;border:1px solid #c2bbab;color:#2a2620;padding:3px 6px;font-size:var(--fs-12);width:100%;outline:none}.note-input:focus{border-color:#8a3a3a}.note-textarea{background:#fff;border:1px solid #c2bbab;color:#2a2620;padding:3px 6px;font-size:var(--fs-11);width:100%;resize:vertical;outline:none;min-height:50px}.note-textarea:focus{border-color:#8a3a3a}.note-edit-actions{display:flex;gap:4px}.note-save-btn{flex:1;background:#ece6d6;border:1px solid #8a3a3a;color:#8a3a3a;padding:3px 0;font-size:var(--fs-11)}.note-save-btn:hover{background:#8a3a3a;color:#fff}.note-cancel-btn{background:#fff;border:1px solid #c2bbab;color:#6a6258;padding:3px 8px;font-size:var(--fs-11)}.note-cancel-btn:hover{background:#ece6d6;color:#2a2620}.canvas-hud{position:absolute;bottom:44px;left:8px;display:flex;align-items:center;gap:8px;background:#ffffffeb;color:#2a2620;font-family:Courier New,monospace;font-size:var(--fs-11);padding:3px 8px;border:1px solid #8a7f66;border-radius:3px;pointer-events:none;z-index:11}.hud-zoom{font-weight:600}.hud-coords{opacity:.75}.minimap-canvas{position:absolute;bottom:44px;right:8px;border:1px solid #8a7f66;cursor:pointer;z-index:10;background:#fff;image-rendering:pixelated}.header-btn:disabled{opacity:.4;cursor:not-allowed}.header-btn:disabled:hover{background:#fff;border-color:#c2bbab;color:#2a2620}.modal-overlay{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100}.modal-panel{background:#1a1f3d;color:#e0e0ff;border:1px solid #3a4570;border-radius:6px;padding:16px 18px;width:min(480px,94vw);max-height:90vh;overflow:auto;box-shadow:0 10px 40px #0009;font-size:var(--fs-12)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:600;font-size:var(--fs-13);margin-bottom:12px}.modal-close-btn{background:transparent;border:none;color:#e0e0ff;cursor:pointer;padding:2px 6px;border-radius:3px;font-size:var(--fs-13);opacity:.7}.modal-close-btn:hover{opacity:1;background:#ffffff1a}.modal-section{margin-bottom:12px}.modal-section-label{font-size:var(--fs-10);font-weight:600;text-transform:uppercase;letter-spacing:.04em;opacity:.6;margin-bottom:6px}.modal-input{background:#ffffff14;border:1px solid rgba(255,255,255,.18);border-radius:3px;color:#e0e0ff;padding:3px 6px;font-size:var(--fs-11);outline:none}.modal-input:focus{border-color:#6c8cff}.generate-dialog-backdrop{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100}.generate-dialog{--gen-dialog-scale: 1;background:#1a1f3d;color:#e0e0ff;border:1px solid #3a4570;border-radius:6px;padding:18px 20px;width:min(calc(560px * var(--gen-dialog-scale)),94vw);max-height:90vh;overflow:auto;box-shadow:0 10px 40px #0009;font-size:calc(15px * var(--gen-dialog-scale))}.generate-dialog-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 8px}.generate-dialog-title{margin:0;font-size:calc(19px * var(--gen-dialog-scale))}.generate-dialog-scale{display:inline-flex;align-items:center;gap:4px}.generate-dialog-scale button{background:#2d3561;color:#e0e0ff;border:1px solid #3a4570;border-radius:3px;padding:2px 8px;cursor:pointer;font:inherit;line-height:1.2}.generate-dialog-scale button:hover:not(:disabled){filter:brightness(1.15)}.generate-dialog-scale button:disabled{opacity:.45;cursor:not-allowed}.generate-dialog-scale-label{color:#8a93b8;font-size:.8em;min-width:3ch;text-align:center}.generate-dialog-help{margin:0 0 12px;color:#b0b8d8;font-size:.9em}.generate-dialog-row{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.generate-dialog-row>span{color:#b0b8d8;font-size:.9em}.generate-dialog-row input[type=text],.generate-dialog-row input[type=number],.generate-dialog-row select{background:#0f1330;color:#e0e0ff;border:1px solid #3a4570;border-radius:3px;padding:4px 6px;font:inherit;width:100%;box-sizing:border-box}.generate-dialog-row input[type=range]{width:100%}.generate-dialog-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.generate-dialog-grid-2 label{display:flex;flex-direction:column;gap:4px}.generate-dialog-grid-2 label>span{color:#b0b8d8;font-size:.9em}.generate-dialog-description{margin:-4px 0 12px;color:#8a93b8;font-size:.85em}.generate-dialog-seed-row{display:flex;gap:6px}.generate-dialog-seed-row input{flex:1}.generate-dialog-seed-row button{background:#2d3561;color:#e0e0ff;border:1px solid #3a4570;border-radius:3px;padding:4px 10px;cursor:pointer;font:inherit}.generate-dialog-warning{background:#3a2530;border:1px solid #7a3a4a;color:#ffd0d0;border-radius:3px;padding:6px 8px;margin-bottom:10px;font-size:.9em}.generate-dialog-info{background:#1f2d3a;border:1px solid #3a5570;color:#cfe5ff;border-radius:3px;padding:6px 8px;margin-bottom:10px;font-size:.9em}.generate-dialog-checkbox{flex-direction:row!important;align-items:center;gap:8px}.generate-dialog-checkbox>span{font-size:.9em;color:#c0c8e0}.generate-dialog-checkbox input[type=checkbox]:disabled+span,.generate-dialog-checkbox input[type=checkbox]:disabled{opacity:.55;cursor:not-allowed}.generate-dialog-buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}.generate-dialog-mix{border:1px solid #3a4570;border-radius:4px;padding:4px 12px;margin:0 0 12px;min-width:0}.generate-dialog-mix[open]{padding:4px 12px}.generate-dialog-mix>summary{color:#b0b8d8;font-size:.9em;padding:4px 0;cursor:pointer;list-style:revert;display:flex;align-items:center;gap:8px}.generate-dialog-mix>summary:hover{color:#d0d8f0}.generate-dialog-mix-reset{background:#2d3561;color:#e0e0ff;border:1px solid #3a4570;border-radius:3px;padding:1px 8px;cursor:pointer;font:inherit;font-size:.85em}.generate-dialog-mix-reset:hover{filter:brightness(1.15)}.generate-dialog-mix-hint{color:#8a93b8!important;font-size:.8em!important;margin-top:-2px}.generate-dialog-buttons button{background:#2d3561;color:#e0e0ff;border:1px solid #3a4570;border-radius:3px;padding:6px 14px;cursor:pointer;font:inherit}.generate-dialog-buttons button.primary{background:#4a5599;border-color:#6a75c0}.generate-dialog-buttons button:hover{filter:brightness(1.15)}.generate-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.generate-dialog-btn{background:#2d3561;color:#e0e0ff;border:1px solid #3a4570;border-radius:3px;padding:6px 14px;cursor:pointer;font:inherit}.generate-dialog-btn.primary{background:#4a5599;border-color:#6a75c0}.generate-dialog-btn:hover{filter:brightness(1.15)}.custom-theme-dialog{width:min(980px,94vw)}.custom-theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.custom-theme-column h3,.custom-theme-section-title h3{margin:0 0 8px;color:#e0e0ff;font-size:1em}.custom-theme-section-title{display:flex;justify-content:space-between;align-items:center;gap:8px}.custom-theme-tile-list,.custom-theme-custom-list{display:grid;gap:8px;max-height:45vh;overflow:auto;padding-right:4px}.custom-theme-tile-row{display:grid;grid-template-columns:minmax(90px,.8fr) minmax(120px,1fr) 42px;align-items:center;gap:6px;color:#b0b8d8;font-size:.85em}.custom-theme-tile-row input,.custom-theme-custom-tile input,.custom-theme-custom-tile select,.generate-dialog-row input{background:#0f1330;color:#e0e0ff;border:1px solid #3a4570;border-radius:3px;padding:4px 6px;font:inherit;box-sizing:border-box}.custom-theme-tile-row input[type=color],.custom-theme-custom-tile input[type=color]{padding:0;width:42px;height:28px}.custom-theme-custom-tile{display:grid;gap:8px;border:1px solid #3a4570;border-radius:4px;padding:8px;background:#141936}.custom-theme-custom-tile label{display:grid;gap:4px;color:#b0b8d8;font-size:.85em}@media(max-width:760px){.custom-theme-grid{grid-template-columns:1fr}}.premade-dialog{width:min(860px,94vw)}.premade-dialog-layout{display:grid;grid-template-columns:minmax(260px,1fr) minmax(260px,.9fr);gap:12px;margin:8px 0 12px}.premade-list{max-height:420px;overflow:auto;border:1px solid #3a4570;border-radius:4px;background:#0f1330;padding:6px}.premade-list-item{display:flex;flex-direction:column;align-items:stretch;gap:3px;width:100%;margin:0 0 6px;padding:8px 10px;text-align:left;background:#1a1f3d;color:#e0e0ff;border:1px solid #2d3561;border-radius:4px;cursor:pointer;font:inherit}.premade-list-item:last-child{margin-bottom:0}.premade-list-item:hover,.premade-list-item.active{border-color:#6a75c0;background:#242b55}.premade-list-title{font-weight:700}.premade-list-meta{color:#9aa6d0;font-size:.82em}.premade-details{border:1px solid #3a4570;border-radius:4px;background:#121735;padding:12px;min-height:220px}.premade-details-theme{color:#93c5fd;font-size:.82em;text-transform:uppercase;letter-spacing:.06em}.premade-details h3{margin:4px 0 8px}.premade-details p{margin:0 0 12px;color:#c0c8e0}.premade-details dl{display:grid;grid-template-columns:1fr;gap:8px;margin:0}.premade-details dt{color:#8a93b8;font-size:.8em}.premade-details dd{margin:2px 0 0}@media(max-width:760px){.premade-dialog-layout{grid-template-columns:1fr}}.generate-hub{width:min(880px,94vw)}.generate-hub-tabs{display:flex;gap:0;margin:0 0 12px;border-bottom:2px solid #3a4570}.generate-hub-tab{flex:1;padding:8px 16px;border:none;background:transparent;color:#9aa6d0;font:inherit;font-weight:600;font-size:1em;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s;min-height:44px}.generate-hub-tab:hover{color:#e0e0ff}.generate-hub-tab.active{color:#93c5fd;border-bottom-color:#93c5fd}.generate-hub-filters{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:540px){.generate-hub-filters{grid-template-columns:1fr}}.premade-list-empty{padding:16px;text-align:center;color:#8a93b8;font-style:italic}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-40px;left:8px;background:#8a3a3a;color:#fff;padding:6px 12px;font-size:var(--fs-13);text-decoration:none;border:2px solid #ffffff;z-index:1000;transition:top .15s}.skip-link:focus{top:8px;outline:2px solid #ffffff;outline-offset:2px}.header-btn:focus-visible,.tool-btn:focus-visible,.tile-btn:focus-visible,.toolbar-tab-btn:focus-visible,.nav-rail-btn:focus-visible,.level-tab:focus-visible,.panel-toggle:focus-visible,.header-overflow-menu button:focus-visible,.mobile-toolbar-btn:focus-visible,.mobile-flyout-tool-btn:focus-visible,.mobile-flyout-handle:focus-visible,.mobile-options-btn:focus-visible,.mobile-options-color-btn:focus-visible,.mobile-options-swatch:focus-within,.mobile-fab-btn:focus-visible,.mobile-fab-menu-btn:focus-visible,.grid-select:focus-visible,.zoom-controls button:focus-visible,.minimap-canvas:focus-visible,.note-edit-btn:focus-visible,.note-delete-btn:focus-visible,.note-save-btn:focus-visible,.note-cancel-btn:focus-visible,.add-note-btn:focus-visible,.initiative-edit-btn:focus-visible,.initiative-clear-btn:focus-visible,.note-item:focus-visible,.initiative-item:focus-visible,.map-name-input:focus-visible{outline:2px solid #8a3a3a;outline-offset:2px}.note-input:focus-visible,.note-textarea:focus-visible,.initiative-input:focus-visible{outline:2px solid #8a3a3a;outline-offset:1px}.canvas-transform-container canvas:focus-visible{outline:none;box-shadow:0 2px 12px #281e1440,0 0 0 3px #8a3a3a}.shortcuts-help-body{display:flex;flex-direction:column;gap:12px;max-height:70vh;overflow-y:auto}.shortcuts-help-section{border-top:1px solid #c2bbab;padding-top:8px}.shortcuts-help-section:first-of-type{border-top:none;padding-top:0}.shortcuts-help-heading{margin:0 0 4px;font-size:var(--fs-13);letter-spacing:1px;color:#8a3a3a;text-transform:uppercase}.shortcuts-help-table{width:100%;border-collapse:collapse;font-size:var(--fs-12)}.shortcuts-help-table th,.shortcuts-help-table td{text-align:left;padding:3px 8px;vertical-align:top}.shortcuts-help-table th{width:32%;font-weight:400}.shortcuts-help-table kbd{display:inline-block;padding:2px 6px;background:#f4f1ea;border:1px solid #8a7f66;border-radius:3px;font-family:Courier New,monospace;font-size:var(--fs-11);color:#2a2620;white-space:nowrap}.shortcuts-help-note{font-size:var(--fs-11);color:#6a6258;margin:4px 0 0;font-style:italic}.panel-toggle{background:#ece6d6;border:1px solid #c2bbab;color:#6a6258;font-size:var(--fs-14);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;z-index:12;flex-shrink:0}.panel-toggle:hover{background:#d9d2c2;color:#2a2620}.toolbar-toggle{width:100%;height:28px;border-left:none;border-right:none;border-top:none;border-bottom:1px solid #c2bbab}.right-panel-toggle{position:absolute;right:0;top:50%;transform:translateY(-50%);width:20px;height:48px;border-radius:4px 0 0 4px;border-right:none;z-index:12}@media(min-width:1025px){.toolbar-toggle,.right-panel-toggle{display:none}.right-panel-drawer{display:flex!important}}.nav-collapsed{width:auto!important;min-width:0!important}.nav-collapsed>.toolbar{display:none}.nav-collapsed>.nav-rail-container{display:none}.right-panel-drawer{transition:transform .2s ease-in-out}@media(max-width:1024px){.app-body{grid-template-columns:clamp(140px,calc(160px * var(--ui-base-scale) * var(--ui-scale)),28vw) 1fr}.app-body.toolbar-collapsed{grid-template-columns:32px 1fr}.right-panel-drawer{position:fixed;top:0;right:0;width:clamp(220px,40vw,360px);height:100vh;z-index:50;box-shadow:-4px 0 16px #0003;transform:translate(100%)}.right-panel-drawer.open{transform:translate(0)}.toolbar-toggle,.right-panel-toggle{display:flex}.nav-rail-label{display:none}.nav-rail{width:40px}.nav-rail-btn{padding:10px 2px 8px}.header-center .header-label{display:none}.app-title{font-size:var(--fs-13);letter-spacing:1px}.header-left{min-width:160px}.toolbar-tab-btn span:last-child{display:none}.toolbar-tab-btn{padding:6px 2px 5px}}@media(max-width:768px){.app-body{grid-template-columns:1fr}.app-body>nav{position:fixed;bottom:0;left:0;right:0;z-index:40;max-height:50vh;background:#fff;border-top:2px solid #8a7f66;box-shadow:0 -4px 12px #00000026}.app-body>nav>.toolbar{border-right:none}.app-body>nav.nav-collapsed{max-height:32px}.app-body>nav.nav-collapsed>.toolbar-toggle{border-bottom:none}.toolbar-toggle{border-bottom:none;border-top:none;height:32px}.right-panel-drawer{width:clamp(260px,55vw,400px)}.map-header{padding:4px 8px;gap:6px}.header-left{min-width:120px;flex:1 1 100%;order:1}.header-center{order:3;flex:1 1 100%;justify-content:center}.header-right{order:2;flex:1 1 auto;justify-content:flex-end}.header-right .header-btn:nth-child(n+6){display:none}.header-overflow-wrap{display:flex}}@media(max-width:480px){.app-title{font-size:var(--fs-11);letter-spacing:0}.map-name-input{min-width:80px;font-size:var(--fs-11)}.header-center{font-size:var(--fs-10)}.right-panel-drawer{width:85vw}.header-center{display:none}.header-right .header-btn:nth-child(n+3){display:none}.header-overflow-wrap{display:flex}.level-tab{padding:3px 8px;font-size:var(--fs-10)}.zoom-controls{padding:2px 6px;gap:4px}.zoom-hint{display:none}}.mobile-toolbar-root{position:fixed;bottom:0;left:0;right:0;z-index:900;pointer-events:none;font-family:Courier New,Courier,monospace}.mobile-toolbar-root *{pointer-events:auto}.mobile-options-bar{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#fff;border-top:1px solid #c2bbab;overflow-x:auto;-webkit-overflow-scrolling:touch;transition:transform .2s ease,opacity .2s ease}.mobile-options-bar.mobile-options-hidden{transform:translateY(100%);opacity:0;pointer-events:none;position:absolute;bottom:100%;left:0;right:0}.mobile-options-bar.mobile-options-visible{transform:translateY(0);opacity:1}.mobile-options-label{font-size:11px;color:#6a6258;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;flex-shrink:0}.mobile-options-tile-badge{font-size:12px;color:#2a2620;background:#ece6d6;border:1px solid #c2bbab;border-radius:4px;padding:2px 8px;white-space:nowrap}.mobile-options-swatch{width:28px;height:28px;border-radius:6px;border:2px solid #c2bbab;cursor:pointer;flex-shrink:0;padding:0;position:relative;overflow:hidden}.mobile-options-swatch input[type=color]{position:absolute;inset:-4px;width:calc(100% + 8px);height:calc(100% + 8px);border:none;cursor:pointer;opacity:0}.mobile-options-slider{flex:1;min-width:80px;max-width:160px;accent-color:#8a3a3a}.mobile-options-btn{font-size:11px;font-family:inherit;padding:4px 10px;border:1px solid #c2bbab;border-radius:4px;background:#f4f1ea;color:#2a2620;cursor:pointer;white-space:nowrap;flex-shrink:0}.mobile-options-btn:active{background:#ece6d6}.mobile-options-btn.mobile-options-btn--active{background:#8a3a3a;color:#fff;border-color:#8a3a3a}.mobile-options-color-btn{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;flex-shrink:0}.mobile-options-color-btn.mobile-options-color-btn--active{border-color:#2a2620;box-shadow:0 0 0 2px #fff,0 0 0 4px #2a2620}.mobile-options-size-label{font-size:11px;color:#6a6258;min-width:24px;text-align:center;flex-shrink:0}.mobile-toolbar-bar{display:flex;align-items:stretch;justify-content:space-around;background:#fff;border-top:1px solid #c2bbab;padding:2px 0 max(2px,env(safe-area-inset-bottom))}.mobile-toolbar-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-width:44px;min-height:44px;padding:4px 2px 2px;border:none;background:transparent;color:#6a6258;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color .15s,background .15s;position:relative}.mobile-toolbar-btn:after{content:"";position:absolute;top:0;left:25%;right:25%;height:3px;border-radius:0 0 3px 3px;background:transparent;transition:background .15s}.mobile-toolbar-btn--active{color:#8a3a3a}.mobile-toolbar-btn--active:after{background:#8a3a3a}.mobile-toolbar-btn:active{background:#ece6d6}.mobile-toolbar-btn-icon{font-size:20px;line-height:1}.mobile-toolbar-btn-label{font-size:9px;margin-top:1px;text-transform:uppercase;letter-spacing:.3px}.mobile-flyout-backdrop{position:fixed;inset:0;background:#00000059;z-index:910;animation:mobile-flyout-fade-in .2s ease}@keyframes mobile-flyout-fade-in{0%{opacity:0}to{opacity:1}}.mobile-flyout-panel{position:fixed;bottom:0;left:0;right:0;max-height:60vh;background:#fff;border-top-left-radius:14px;border-top-right-radius:14px;z-index:920;display:flex;flex-direction:column;animation:mobile-flyout-slide-up .25s ease;padding-bottom:max(8px,env(safe-area-inset-bottom))}@keyframes mobile-flyout-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.mobile-flyout-handle{display:flex;justify-content:center;padding:10px 0 4px;cursor:pointer;flex-shrink:0}.mobile-flyout-handle-bar{width:36px;height:4px;border-radius:2px;background:#c2bbab}.mobile-flyout-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 12px 8px}.mobile-flyout-category{margin-bottom:12px}.mobile-flyout-category-label{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:#8a3a3a;border-bottom:1px solid #ece6d6;padding-bottom:3px;margin-bottom:8px}.mobile-flyout-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:6px}.mobile-flyout-tool-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:48px;min-height:48px;padding:6px 2px;border:1px solid #ece6d6;border-radius:8px;background:#f4f1ea;color:#2a2620;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .15s,background .15s}.mobile-flyout-tool-btn:active{background:#ece6d6}.mobile-flyout-tool-btn--active{border-color:#8a3a3a;background:#fff;color:#8a3a3a;box-shadow:0 0 0 1px #8a3a3a}.mobile-flyout-tool-icon{font-size:20px;line-height:1}.mobile-flyout-tool-label{font-size:9px;margin-top:2px;text-transform:uppercase;letter-spacing:.2px;text-align:center;line-height:1.1}.mobile-fab-container{position:fixed;right:16px;z-index:905;display:flex;flex-direction:column;align-items:center}.mobile-fab-btn{width:56px;height:56px;border-radius:50%;border:none;background:#8a3a3a;color:#fff;font-size:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 8px #00000040;-webkit-tap-highlight-color:transparent;transition:background .15s,transform .15s;position:relative;touch-action:none}.mobile-fab-btn:active{transform:scale(.93)}.mobile-fab-btn--disabled{background:#c2bbab}.mobile-fab-menu{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:10px;animation:mobile-fab-pop .2s ease}@keyframes mobile-fab-pop{0%{opacity:0;transform:translateY(16px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}.mobile-fab-menu-btn{width:44px;height:44px;border-radius:50%;border:1px solid #c2bbab;background:#fff;color:#2a2620;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #00000026;-webkit-tap-highlight-color:transparent;position:relative}.mobile-fab-menu-btn:active{background:#ece6d6}.mobile-fab-menu-btn--disabled{opacity:.4;pointer-events:none}.mobile-fab-menu-tooltip{position:absolute;right:54px;white-space:nowrap;font-size:11px;font-family:Courier New,Courier,monospace;background:#2a2620;color:#fff;padding:2px 8px;border-radius:4px;pointer-events:none}.mobile-fab-backdrop{position:fixed;inset:0;z-index:904}.app-body--mobile{grid-template-columns:1fr!important;padding-bottom:56px}.app-body--mobile>nav{display:none}.app-body--mobile .canvas-area{margin-bottom:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media(forced-colors:active){.tool-btn,.toolbar-tab-btn,.level-tab,.zoom-controls button{border:1px solid ButtonText}.tool-btn.active,.toolbar-tab-btn.active,.level-tab.active{border:2px solid Highlight;outline:1px solid Highlight}.generate-dialog-backdrop{background:#000c}.generate-dialog{border:2px solid ButtonText}canvas{border:1px solid ButtonText}:focus-visible{outline:2px solid Highlight!important;outline-offset:2px!important}}.tool-btn,.toolbar-tab-btn{min-height:44px}.zoom-controls button{min-height:44px;min-width:44px}.level-tab{min-height:44px}.tool-btn.compact{min-height:36px;min-width:36px}.command-palette-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:flex-start;justify-content:center;padding-top:min(20vh,140px);z-index:200}.command-palette{background:#1a1f3d;color:#e0e0ff;border:1px solid #3a4570;border-radius:8px;width:min(520px,94vw);max-height:60vh;display:flex;flex-direction:column;box-shadow:0 12px 48px #0009;overflow:hidden}.command-palette-input{width:100%;border:none;border-bottom:1px solid #3a4570;background:#141830;color:#e0e0ff;font-size:1rem;padding:12px 16px;outline:none;font-family:inherit}.command-palette-input::placeholder{color:#7a7f9a}.command-palette-list{overflow-y:auto;flex:1;padding:4px 0}.command-palette-item{display:flex;align-items:center;gap:8px;padding:7px 14px;cursor:pointer;font-size:.85rem;transition:background .08s}.command-palette-item.selected{background:#6478f040}.command-palette-item:hover{background:#6478f026}.command-palette-category{background:#6478f033;color:#8a9dff;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.6px;padding:2px 6px;border-radius:3px;white-space:nowrap;flex-shrink:0}.command-palette-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.command-palette-shortcut{color:#7a7f9a;font-size:.7rem;font-family:Courier New,monospace;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:3px;padding:1px 5px;white-space:nowrap;flex-shrink:0}.command-palette-empty{padding:14px 16px;color:#7a7f9a;font-size:.85rem;text-align:center}.toolbar{box-shadow:2px 0 8px #2a262014;z-index:1}.app-body>aside{box-shadow:-2px 0 8px #2a26200f;z-index:1}.level-tabs{box-shadow:0 1px 4px #2a26200f;z-index:2}.toolbar-tab-btn:active,.tool-btn:active,.tile-btn:active,.stamp-btn:active,.level-tab:active{transform:scale(.96);transition:transform .06s ease-out}.tool-btn:hover,.tile-btn:hover,.stamp-btn:hover{transform:translateY(-1px);box-shadow:0 2px 4px #2a26201a}.tool-btn.active,.tile-btn.active{box-shadow:0 0 0 2px #8a3a3a33}.toolbar-section{position:relative}.toolbar-section:before{content:"";position:absolute;top:0;left:10%;right:10%;height:1px;background:linear-gradient(90deg,transparent,#c2bbab,transparent)}.toolbar-section:first-child:before{display:none}@media(prefers-reduced-motion:reduce){.tool-btn:hover,.tile-btn:hover,.stamp-btn:hover,.toolbar-tab-btn:active,.tool-btn:active,.tile-btn:active,.stamp-btn:active,.level-tab:active{transform:none}}
