/* Standalone prototype: scoped styles, no navigation registration. */
.routes-app{position:relative;z-index:3;width:min(96vw,3200px);max-width:none;margin:0 auto;padding:24px 0 16px;color:#e7e8df;font-family:Inter,Arial,sans-serif}.routes-app *,.routes-preview *{box-sizing:border-box}.routes-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 22px}.routes-title{display:flex;align-items:center;gap:28px}.routes-title>img{width:clamp(150px,11vw,245px);height:auto;filter:drop-shadow(0 5px 16px #58c6e126)}.routes-eyebrow{color:#c2aa6c;letter-spacing:.16em;text-transform:uppercase;font-size:10px;font-weight:800;margin:0 0 7px}.routes-heading h1{font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(27px,2.1vw,43px);line-height:1.1;color:#efdfad;margin:0 0 5px}.routes-heading p:not(.routes-eyebrow){font-size:13px;color:#a6b8b5;margin:0}.routes-prototype{border:1px solid #82693d5c;background:#161e1ccd;border-radius:20px;color:#d8c396;padding:9px 14px;font-size:11px;white-space:nowrap}.routes-workspace{display:grid;grid-template-columns:minmax(0,1fr) clamp(300px,24vw,420px);gap:18px;align-items:start}.routes-dungeons,.routes-plan,.routes-map-panel{background:linear-gradient(145deg,#15201ff2,#080e11f2);border:1px solid #9d8a5747;border-radius:16px;box-shadow:0 10px 40px #0004;overflow:hidden}.routes-section-title{padding:20px 18px 16px}.routes-app h2{font-family:'Cormorant Garamond',Georgia,serif;font-size:25px;line-height:1.15;color:#efdfad;margin:0}.routes-dungeon-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0 12px}.routes-dungeon{position:relative;min-width:0;border:1px solid #51615c76;border-radius:11px;padding:0;overflow:hidden;background:#090f12;cursor:pointer;text-align:left;transition:border-color .18s,box-shadow .18s,transform .18s;aspect-ratio:1/.88}.routes-dungeon img{width:100%;height:100%;object-fit:cover;opacity:.7;position:absolute;inset:0}.routes-dungeon:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#050c10 0%,#050c1033 72%)}.routes-dungeon span{position:absolute;z-index:1;bottom:9px;left:9px;right:6px;color:#f5e6bc;font-family:'Cormorant Garamond',Georgia,serif;font-size:17px;line-height:1.05;font-weight:700;text-shadow:0 2px 4px #000}.routes-dungeon[aria-pressed=true]{border-color:#8ecfd6;box-shadow:0 0 0 1px #84d9e947,0 0 22px #3bd2ff24}.routes-dungeon[aria-pressed=true] img,.routes-dungeon:hover img{opacity:1}.routes-dungeon:hover{border-color:#b6a772;transform:translateY(-2px)}.routes-selection-note{font-size:11px;line-height:1.7;color:#93a39e;margin:17px 18px 20px}.routes-map-header{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:17px 22px;border-bottom:1px solid #82724550}.routes-floor-label{font-size:11px;color:#a8b8b0;display:flex;align-items:center;gap:8px}.routes-app select{background:#0a1416;color:#e8d8a8;border:1px solid #5b695a;border-radius:8px;font:inherit;padding:9px;max-width:160px}.routes-stage{height:clamp(440px,calc(100dvh - 230px),1400px);position:relative;overflow:hidden;background:radial-gradient(ellipse at center,#26322e,#080e12 75%);touch-action:none;cursor:grab;outline-offset:-3px;isolation:isolate}.routes-stage.is-dragging{cursor:grabbing}.routes-world{width:840px;height:560px;position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.routes-world canvas{display:block;width:840px;height:560px}.routes-markers{position:absolute;inset:0;pointer-events:none}.routes-marker{position:absolute;transform:translate(-50%,-50%) scale(var(--marker-scale-x,var(--marker-scale,1)),var(--marker-scale,1));pointer-events:auto;width:32px;height:32px;border:2px solid #f7d48c;border-radius:50%;background:#152b37;box-shadow:0 0 0 4px #071019a8,0 0 17px #61c4ea88;color:#fff0cb;font:800 13px Inter,sans-serif;cursor:pointer}.routes-marker.is-note{border-color:#bd95ee;background:#281e44;border-radius:9px;color:#e6d5ff}.routes-marker:hover,.routes-marker:focus-visible{box-shadow:0 0 0 5px #ebc9615c,0 0 26px #f5ce98;outline:none}.routes-map-status{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);padding:14px 22px;border:1px solid #7f794e;border-radius:9px;background:#081216eb;max-width:80%;font-size:13px;text-align:center;line-height:1.6}.routes-map-tools{position:absolute;bottom:14px;right:14px;display:flex;align-items:center;gap:4px;background:#071114ed;border:1px solid #777a57;border-radius:10px;padding:5px;z-index:2}.routes-app button:not(.routes-dungeon):not(.routes-marker),.routes-preview button{font:600 11px Inter,Arial,sans-serif;color:#e2d4af;border:1px solid #6c765553;background:#152224;border-radius:7px;padding:9px 12px;cursor:pointer}.routes-app button:hover:not(.routes-dungeon):not(.routes-marker){border-color:#c7b87b;background:#283b36}.routes-map-tools output{font-size:11px;min-width:43px;text-align:center;color:#bfcac3}.routes-map-tools button:first-child,.routes-map-tools button:nth-of-type(2){font-size:17px!important;padding:4px 10px!important}.routes-map-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;font-size:10px;color:#97aaa3}.routes-demo-banner{position:absolute;top:12px;left:12px;padding:9px 12px;border:1px solid #87715e;background:#2b211ddd;color:#e0c9a4;border-radius:8px;font-size:10px;pointer-events:none}.routes-empty{padding:12px 22px 24px}.routes-empty-number{display:block;color:#b7a263;font-family:'Cormorant Garamond',Georgia,serif;font-size:60px;opacity:.6}.routes-empty h3{font-family:'Cormorant Garamond',Georgia,serif;font-size:28px;line-height:1.1;margin:8px 0 18px;color:#d9e4db}.routes-empty p,.routes-next p{color:#a8b5b1;font-size:12px;line-height:1.8;margin:12px 0}.routes-next{margin:25px 0;padding:20px 0;border-top:1px solid #68695070;border-bottom:1px solid #68695070}.routes-next strong{font-family:'Cormorant Garamond',Georgia,serif;color:#dec991;font-size:22px}.routes-muted{font-size:10px!important;line-height:1.7;color:#879992!important}.routes-attribution{font-size:10px;color:#80988b;text-align:center;margin:16px 0 0}.routes-attribution a{color:#bca972}.routes-pull-item,.routes-route-item{display:block;width:calc(100% - 32px);text-align:left;margin:0 16px 10px;padding:13px!important}.routes-pull-item strong{display:block;color:#f4dfaa;margin-bottom:4px}.routes-pull-item span{color:#9fb3a9;font-size:10px}.routes-preview{position:fixed;z-index:15000;width:min(400px,calc(100vw - 24px));padding:18px;border:1px solid #b39e668a;border-radius:14px;background:linear-gradient(135deg,#16252afc,#0a0e16fc);box-shadow:0 18px 65px #000b,0 0 26px #66bdd925;pointer-events:none;font-family:Inter,Arial,sans-serif;color:#d8e2dc}.routes-preview.is-pinned{pointer-events:auto}.routes-preview-heading{display:flex;align-items:center;justify-content:space-between}.routes-preview-heading button{visibility:hidden;padding:4px 9px}.routes-preview.is-pinned .routes-preview-heading button{visibility:visible}.routes-preview h3{font-family:'Cormorant Garamond',Georgia,serif;color:#f2dfac;font-size:28px;margin:5px 0 14px}.routes-preview video{width:100%;aspect-ratio:16/9;background:#000;border-radius:8px}.routes-preview-empty{padding:35px 15px;border:1px dashed #6485786b;background:radial-gradient(ellipse at center,#31443d5c,#10191a);border-radius:8px;text-align:center;color:#c8dbd3;font-family:'Cormorant Garamond',Georgia,serif;font-size:24px}.routes-preview-empty span{display:block;font:11px Inter,sans-serif;color:#8caba2;margin-top:10px}.routes-preview>p{font-size:12px;line-height:1.75;margin:13px 0 0}.routes-app [hidden],.routes-preview[hidden],.routes-preview [hidden]{display:none!important}.routes-app :focus-visible{outline:2px solid #8bccdd;outline-offset:3px}
@media(min-width:2400px) and (min-aspect-ratio:2/1){.routes-app{padding-top:28px}.routes-workspace{grid-template-columns:minmax(0,1fr) 440px;gap:24px}.routes-dungeon{aspect-ratio:1/.83}.routes-dungeon span{font-size:22px}.routes-heading h1{font-size:46px}.routes-map-header h2{font-size:33px}.routes-stage{height:clamp(580px,calc(100dvh - 230px),1500px)}}
@media(max-width:1200px){.routes-workspace{grid-template-columns:minmax(0,1fr) 300px}.routes-plan{grid-column:auto}.routes-empty{display:grid;grid-template-columns:60px 1fr 1fr;gap:20px;align-items:center}.routes-empty h3{font-size:23px}.routes-next{margin:0;border:0;padding:0}.routes-empty>p:last-child{grid-column:2/-1}.routes-stage{height:clamp(410px,calc(100dvh - 350px),720px)}.routes-prototype{white-space:normal;text-align:right}}
@media(max-width:760px){.routes-app{width:94vw;padding-top:18px}.routes-heading{align-items:start;gap:12px}.routes-title{display:block}.routes-title>img{width:150px;margin-bottom:8px}.routes-heading h1{font-size:28px}.routes-heading p:not(.routes-eyebrow){font-size:11px}.routes-prototype{font-size:9px;max-width:125px}.routes-workspace{display:flex;flex-direction:column;gap:14px}.routes-dungeons,.routes-map-panel,.routes-plan{width:100%}.routes-dungeon-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:0 9px 10px}.routes-dungeon span{font-size:13px;left:5px;bottom:6px}.routes-section-title{padding:15px}.routes-selection-note{display:none}.routes-map-header{padding:14px}.routes-map-header h2{font-size:24px}.routes-floor-label{display:none}.routes-stage{height:clamp(340px,60dvh,620px)}.routes-map-footer{align-items:start}.routes-map-footer>span{max-width:40%;line-height:1.6}.routes-empty{display:block;padding:0 20px 20px}.routes-empty-number{font-size:40px}.routes-next{margin:20px 0}.routes-preview{padding:14px}.routes-attribution{line-height:1.8}.routes-demo-banner{max-width:75%}}
@media(prefers-reduced-motion:reduce){.routes-dungeon{transition:none}.routes-dungeon:hover{transform:none}}

/* Routes second pass: readable map art, MDT enemy layer, curated route selector. */
.routes-dungeon img{opacity:1;filter:none}.routes-dungeon:after{background:linear-gradient(0deg,#050c10e0 0%,#050c101a 48%,transparent 80%)}.routes-dungeon[aria-pressed=true] img,.routes-dungeon:hover img{filter:none}.routes-world canvas{filter:none;opacity:1}.routes-stage{background:radial-gradient(ellipse at center,#495547,#142123 85%)}
.routes-enemies{position:absolute;inset:0;pointer-events:none}.routes-enemy{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;padding:0!important;border-radius:50%!important;border:1px solid #e6e6ce!important;background:#47605b!important;box-shadow:0 1px 3px #000c;cursor:pointer;isolation:isolate}.routes-enemy img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;pointer-events:none;background:#354a45;filter:none}.routes-enemy.is-boss{border:2px solid #ffe491!important;box-shadow:0 0 0 2px #55451bab,0 2px 6px #000d;z-index:2}.routes-enemy.is-patrol{border-color:#75ddff!important}.routes-enemy:hover,.routes-enemy:focus-visible,.routes-enemy.is-pack-active{z-index:4;outline:2px solid #d9b4ff;outline-offset:1px;box-shadow:0 0 9px #cf94ffaa}.routes-enemy-forces{position:absolute;left:50%;bottom:-5px;transform:translateX(-50%);font:700 7px Inter,Arial,sans-serif;line-height:1;background:#111b16;border:1px solid #a09c6e;color:#f3e8bc;border-radius:2px;min-width:9px;padding:1px 2px;pointer-events:none}.routes-enemy-initial{font:700 8px Inter,sans-serif;color:#eee5ca;display:grid;place-items:center;width:100%;height:100%}.routes-app button.routes-enemy:hover{background:#47605b!important}.routes-preview-copy,#routes-preview-copy{white-space:pre-line}
.routes-route-menu{margin:0 14px 20px;border:1px solid #b3a1666b;border-radius:12px;background:linear-gradient(135deg,#23342ce8,#111d25f2);overflow:hidden;box-shadow:0 4px 18px #0003}.routes-route-menu summary{display:flex;align-items:center;gap:12px;padding:13px 12px;cursor:pointer;list-style:none;position:relative}.routes-route-menu summary::-webkit-details-marker{display:none}.routes-route-menu summary>img{width:52px;height:52px;border:1px solid #bda66c;border-radius:9px;object-fit:cover;filter:none}.routes-route-menu summary>span:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.routes-route-menu .routes-eyebrow{font-size:8px;margin:0;letter-spacing:.1em;color:#d5bf83}.routes-route-menu strong{color:#f2e3b9;font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;line-height:1.05}.routes-route-menu #routes-selected-caption{font-size:10px;line-height:1.5;color:#aebfb0}.routes-selector-chevron{font-size:21px;color:#d5bf83;transition:transform .18s}.routes-route-menu[open] .routes-selector-chevron{transform:rotate(180deg)}.routes-route-options{padding:8px;border-top:1px solid #af996b50;background:#0914148c}.routes-app button.routes-route-item{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 8px;padding:10px!important;border-radius:10px;background:linear-gradient(135deg,#263829,#162429);border:1px solid #6b806a85;text-align:left}.routes-route-item>img{width:48px;height:48px;border-radius:8px;object-fit:cover}.routes-route-item>span{display:flex;flex-direction:column;gap:6px;min-width:0}.routes-route-item strong{font-size:21px}.routes-route-item small{color:#aebda8;font-size:10px}.routes-app button.routes-route-item[aria-pressed=true]{border-color:#d8bc77;box-shadow:inset 0 0 15px #ceb15619,0 0 12px #ceb15612}.routes-no-options{padding:16px 9px 13px}.routes-no-options strong{font-size:22px;color:#d4ddc8}.routes-no-options p{font-size:11px;line-height:1.8;color:#aebfae;margin:12px 0 0}.routes-plan .routes-empty{padding-top:0}.routes-plan .routes-empty-number{font-size:40px}

.routes-enemies{z-index:1}.routes-markers{z-index:2}

.routes-enemy-face{position:absolute;inset:0;border-radius:50%;overflow:hidden;pointer-events:none}.routes-enemy-face img{transform:scale(2.4);transform-origin:center}

/* Solid surfaces throughout the routes workspace. */
.routes-dungeons,.routes-plan,.routes-map-panel{background:linear-gradient(145deg,#182725,#0c161a);opacity:1}.routes-stage{background:#293b36;opacity:1}.routes-world,.routes-world canvas,.routes-dungeon,.routes-dungeon img{opacity:1}.routes-world canvas{filter:none}.routes-dungeon:after{background:none}.routes-dungeon span{background:#10211d;border-radius:5px;padding:5px;bottom:5px;left:5px;right:5px}.routes-route-menu{background:linear-gradient(135deg,#293d30,#14232b)}.routes-route-options{background:#101e1e}.routes-map-header,.routes-map-footer{background:#14231f}.routes-route-item,.routes-no-options{opacity:1}.routes-preview{background:linear-gradient(135deg,#1a2b30,#101720)}
.routes-route-actions{display:flex;flex-wrap:wrap;gap:7px;padding:0 14px}.routes-route-actions button{flex:1;min-width:90px}.routes-app button:disabled{opacity:.45;cursor:default}.routes-editor-status{font-size:10px;line-height:1.7;color:#b9caaa;padding:0 16px}.routes-editor-controls{padding:16px;margin:12px;border:1px solid #938858;border-radius:12px;background:#162a25}.routes-editor-controls label{display:flex;flex-direction:column;gap:6px;font-size:10px;color:#d8c794;margin-bottom:12px}.routes-editor-controls input,.routes-editor-controls textarea,.routes-editor-controls select{width:100%;max-width:none;min-width:0;padding:9px;border:1px solid #7e8b6b;border-radius:6px;background:#0c1919;color:#ece9d7;font:12px Inter,Arial,sans-serif}.routes-editor-buttons{display:flex;gap:6px;flex-wrap:wrap}.routes-editor-buttons button{flex:1}.routes-forces{margin:12px 16px;padding:12px;border:1px solid #808b5e;background:#1c3027;color:#e4d596;font-size:12px;border-radius:8px}.routes-pull-item.is-current{border-color:#d3b374!important}.routes-enemy.is-assigned{outline:2px solid var(--pull-color,#69d3ee);outline-offset:1px}.routes-enemy.is-current-pull{box-shadow:0 0 0 2px #f5eadc,0 0 12px var(--pull-color,#69d3ee);z-index:3}.routes-stage.is-editing{cursor:crosshair}.routes-marker{background:var(--pull-color,#152b37)}.routes-local-label{font:600 9px Inter,sans-serif;color:#c9d9b8;margin:5px 3px 8px;letter-spacing:.05em}.routes-note-delete{float:right}.routes-preview-abilities{max-height:none;overflow:visible;display:grid;gap:12px;border-top:1px solid #938863;padding-top:12px;margin-top:14px}.routes-ability{display:flex;align-items:start;gap:9px;margin:0 0 13px}.routes-ability img{width:30px;height:30px;flex-shrink:0;border:1px solid #988d61;border-radius:5px}.routes-ability strong{display:block;font-size:12px;color:#ecdca9;margin-bottom:5px}.routes-ability p{font-size:10px;line-height:1.65;color:#c1cec5;margin:0}.routes-ability em{color:#99dece;font-size:9px;font-style:normal}.routes-preview.is-pinned{max-height:none;overflow:visible}.routes-export-dialog{width:min(650px,94vw);background:#14241f;color:#e6e4d1;border:1px solid #b7a36a;border-radius:16px;padding:26px;font:13px Inter,Arial,sans-serif}.routes-export-dialog::backdrop{background:#0009}.routes-export-dialog h2{color:#ead8a5;font:700 34px 'Cormorant Garamond',Georgia,serif;margin:0 0 12px}.routes-export-dialog textarea{display:block;width:100%;resize:vertical;margin:9px 0 18px;padding:12px;background:#081314;color:#cbdccf;border:1px solid #8c966a;border-radius:8px;font:11px monospace;overflow-wrap:anywhere}.routes-export-dialog button{padding:11px 16px;border:1px solid #9b8e59;border-radius:7px;background:#293e2e;color:#efddb4;cursor:pointer}.routes-export-dialog p{line-height:1.7}.routes-export-dialog label{font-size:11px;color:#d0bd87}

.routes-stage.is-placing-note{cursor:crosshair}.routes-preview{max-height:none;overflow:visible}.routes-preview-abilities h4{color:#f1deac;margin:12px 0 8px;font-size:13px}.routes-editor-status.is-error{color:#ffb5a5}.routes-export-dialog{box-sizing:border-box}.routes-note-delete{float:none;display:block;margin:0 16px 10px}.routes-map-status,.routes-map-tools,.routes-demo-banner,.routes-prototype{background:#102023}

/* Compact mechanics, fully visible: no scrolling inside a mob preview. */
.routes-preview.is-enemy{width:min(440px,calc(100vw - 24px))}.routes-preview.has-many-abilities{width:min(740px,calc(100vw - 24px))}.routes-preview.has-dense-abilities{width:min(940px,calc(100vw - 24px))}.routes-preview.has-many-abilities .routes-preview-abilities{grid-template-columns:repeat(2,minmax(0,1fr))}.routes-preview.has-dense-abilities .routes-preview-abilities{grid-template-columns:repeat(3,minmax(0,1fr))}.routes-ability{margin:0;gap:8px}.routes-ability strong{font-size:12px;margin-bottom:3px}.routes-ability p{font-size:11px;line-height:1.5}.routes-ability em{display:block;margin-bottom:3px}.routes-preview-abilities{padding-top:12px;margin-top:12px}.routes-pull-outlines{position:absolute;inset:0;width:840px;height:560px;pointer-events:none;z-index:0;overflow:visible}.routes-pull-outlines polygon{fill:none;stroke-width:1.5;stroke-linejoin:round;stroke-dasharray:5 3;vector-effect:non-scaling-stroke}.routes-pull-outlines polygon.is-selected{stroke-width:3;stroke-dasharray:none}.routes-enemy.is-selected-pull{box-shadow:0 0 0 1px #f5eadc}.routes-pull-item.is-selected{background:#2a3938!important}.routes-selection-box{position:absolute;border:2px solid #94cefb;background:#6ebeff20;pointer-events:none;z-index:5}.routes-stage.is-box-selecting{cursor:crosshair}.routes-drag-preview{position:fixed;z-index:15001;pointer-events:none;background:#172c28;color:#f1dcaa;border:1px solid #d5bd7c;border-radius:8px;padding:10px 13px;font:12px Inter,Arial,sans-serif;box-shadow:0 5px 20px #0008}.routes-drag-preview[hidden]{display:none!important}.routes-editor-buttons{margin-bottom:9px}
@media(max-width:760px){.routes-preview.has-dense-abilities .routes-preview-abilities{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.routes-preview.has-many-abilities .routes-preview-abilities,.routes-preview.has-dense-abilities .routes-preview-abilities{grid-template-columns:1fr}}

.routes-stage,.routes-marker,.routes-pull-item{user-select:none;-webkit-user-select:none}

#routes-pull-list{max-height:clamp(260px,calc(100dvh - 540px),650px);overflow-y:auto;overscroll-behavior:contain}#routes-pull-list:empty{display:none}

/* Dungeon banner and a pull builder that is ready from the first click. */
.routes-dungeons{display:flex;align-items:center;gap:18px;padding:12px 16px;margin-bottom:18px}.routes-dungeons .routes-section-title{padding:0;flex:0 0 150px}.routes-dungeons h2{font-size:22px}.routes-dungeons .routes-dungeon-list{flex:1;min-width:0;grid-template-columns:repeat(8,minmax(0,1fr));padding:0;gap:10px}.routes-dungeons .routes-dungeon{aspect-ratio:auto;height:78px}.routes-dungeons .routes-dungeon span{font-size:15px}.routes-plan .routes-section-title{padding-bottom:13px}.routes-builder-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 16px;padding:13px;border:1px solid #ab945c;border-radius:10px;background:#253a30}.routes-builder-bar .routes-eyebrow{display:block;font-size:8px;margin-bottom:5px}.routes-builder-bar strong{font:700 28px 'Cormorant Garamond',Georgia,serif;color:#f5e2af}.routes-app #routes-add-pull{background:#c4a663;color:#12221b;font-size:12px;padding:13px 16px;border-color:#e1cc8d}.routes-app #routes-add-pull:hover{background:#e3c880}.routes-builder-hint{font-size:11px;line-height:1.7;color:#b6c8ba;margin:12px 17px}.routes-quick-tools{display:flex;gap:6px;margin:0 16px 12px}.routes-quick-tools #routes-export{margin-left:auto}.routes-collection-heading{padding:20px 17px 10px}.routes-plan .routes-empty{display:block;padding:0 17px 15px}.routes-plan .routes-empty p{font-size:10px;margin:0}.routes-editor-controls{padding:0}.routes-editor-controls>summary{cursor:pointer;padding:13px;color:#e8d6a3;font-size:11px;font-weight:600}.routes-settings-body{padding:4px 13px 13px}.routes-shortcuts{margin:12px 0;font-size:10px;color:#c4d3bd}.routes-shortcuts summary{cursor:pointer}.routes-pull-roster{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 8px}.routes-roster-mob{display:flex;align-items:center;gap:3px}.routes-roster-face{display:block;width:32px;height:32px;border-radius:50%;overflow:hidden;background:#233b32;border:1px solid #98ab87}.routes-roster-face img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(2.4);transform-origin:center;pointer-events:none}.routes-pull-item .routes-roster-count{font-size:10px;color:#ebddb9}.routes-pull-item .routes-pull-percent{display:block;color:#d3be82;font-size:10px}.routes-pull-item.is-current{box-shadow:inset 0 0 18px #d3b37412}.routes-pull-item.is-current>strong:after{content:' · Selecting';font:600 9px Inter,Arial,sans-serif;color:#bfcfac}.routes-stage.is-editing{cursor:grab}
@media(min-width:2400px) and (min-aspect-ratio:2/1){.routes-dungeons{padding:14px 20px}.routes-dungeons .routes-section-title{flex-basis:180px}.routes-dungeons .routes-dungeon{height:92px}.routes-dungeons .routes-dungeon span{font-size:20px}.routes-roster-face{width:38px;height:38px}}
@media(max-width:1400px){.routes-dungeons{display:block}.routes-dungeons .routes-section-title{display:flex;align-items:center;gap:14px;margin-bottom:10px}.routes-dungeons .routes-eyebrow{margin:0}.routes-dungeons .routes-dungeon span{font-size:13px}}
@media(max-width:760px){.routes-dungeons{padding:12px;margin-bottom:14px}.routes-dungeons .routes-section-title{display:block}.routes-dungeons .routes-eyebrow{margin-bottom:5px}.routes-dungeons .routes-dungeon-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.routes-dungeons .routes-dungeon{height:72px}.routes-dungeons .routes-dungeon span{font-size:13px}.routes-plan{grid-column:auto}#routes-pull-list{max-height:420px}.routes-builder-bar strong{font-size:26px}}

/* A mob's portrait is larger than its hit frame, as in MDT. Decorative labels never intercept clicks. */
.routes-map-options{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px}.routes-map-options .routes-floor-label{white-space:nowrap}.routes-map-options select{font-size:10px;padding:7px}.routes-app button.routes-enemy,.routes-app button.routes-enemy:hover,.routes-enemy.is-boss,.routes-enemy.is-assigned,.routes-enemy.is-selected-pull,.routes-enemy.is-current-pull,.routes-enemy.is-pack-active{border:0!important;background:transparent!important;box-shadow:none!important;outline:none;overflow:visible}.routes-enemy-visual{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:var(--enemy-visual-size);height:var(--enemy-visual-size);border:1px solid #e6e6ce;border-radius:50%;background:#47605b;box-shadow:0 1px 3px #000c;pointer-events:none}.routes-enemy.is-boss .routes-enemy-visual{border:2px solid #ffe491}.routes-enemy.is-patrol .routes-enemy-visual{border-color:#75ddff}.routes-enemy.is-assigned .routes-enemy-visual{outline:2px solid var(--pull-color);outline-offset:1px}.routes-enemy.is-current-pull .routes-enemy-visual{box-shadow:0 0 0 2px #f5eadc,0 0 12px var(--pull-color)}.routes-enemy.is-pack-active .routes-enemy-visual,.routes-enemy:focus-visible .routes-enemy-visual{outline:2px solid #d9b4ff;outline-offset:2px;box-shadow:0 0 10px #cf94ffaa}.routes-enemy-label{position:absolute;top:100%;left:50%;transform:translateX(-50%);white-space:nowrap;pointer-events:none;font:700 7px Inter,Arial,sans-serif;line-height:1.2;border:1px solid #919773;border-radius:3px;background:#101c19;color:#f4e6bf;padding:1px 2px}.routes-pack-preview,.routes-patrols{position:absolute;inset:0;width:840px;height:560px;pointer-events:none;z-index:0;overflow:visible}.routes-pack-preview polygon{fill:#a778e018;stroke:#d8afff;stroke-width:2;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.routes-patrols polyline{fill:none;stroke:#7de1ff;stroke-width:2.5;stroke-dasharray:6 3;vector-effect:non-scaling-stroke}
@media(max-width:1200px){.routes-map-header{align-items:start}.routes-map-options{gap:7px;max-width:55%}}
@media(max-width:760px){.routes-map-header{flex-wrap:wrap}.routes-map-options{max-width:none;width:100%;justify-content:flex-start}.routes-map-options .routes-floor-label{display:flex}.routes-map-options .routes-floor-label:last-child{display:none}}

/* Permanent entrance/finale landmarks. Artwork and labels never intercept mob selection. */
.routes-landmarks{position:absolute;inset:0;pointer-events:none;z-index:3}
.routes-landmark{position:absolute;width:40px;height:40px;pointer-events:none;transform:translate(-50%,-50%) scale(var(--marker-scale-x,var(--marker-scale,1)),var(--marker-scale,1));transform-origin:center;filter:drop-shadow(0 2px 3px #000)}
.routes-landmark>img{display:block;width:40px;height:40px;filter:drop-shadow(0 0 6px #389dffb3)}
.routes-landmark-label{position:absolute;left:50%;top:38px;transform:translateX(-50%);padding:1px 8px 3px;border-radius:7px;background:#07152bd9;color:#bceeff;font:700 21px/1.05 'Marcellus SC','Cormorant Garamond',Georgia,serif;white-space:nowrap;text-shadow:0 0 7px #298dff,0 2px 2px #000;border:1px solid #5caeff55}
.routes-landmark.is-above .routes-landmark-label{top:auto;bottom:38px}
.routes-landmark.is-finale>img{transform:translateX(50px)}
.routes-landmark.is-finale .routes-landmark-label{margin-left:50px}
.routes-landmark.is-finale::before{content:'';position:absolute;top:19px;left:22px;width:28px;border-top:2px dotted #72ccff;filter:drop-shadow(0 0 3px #001532)}
.routes-landmark.is-finale.is-left>img{transform:translateX(-50px)}
.routes-landmark.is-finale.is-left .routes-landmark-label{margin-left:-50px}
.routes-landmark.is-finale.is-left::before{left:auto;right:22px}

/* Keep entrance artwork inside the left edge and the rooftop finale below the top edge. */
.routes-landmark.is-edge-start>img{transform:translateX(26px)}
.routes-landmark.is-edge-start .routes-landmark-label{margin-left:26px}
.routes-landmark.is-edge-start::before{content:'';position:absolute;top:19px;left:20px;width:6px;border-top:2px dotted #72ccff}
.routes-landmark.is-finale.is-low>img{transform:translate(50px,24px)}
.routes-landmark.is-finale.is-low.is-left>img{transform:translate(-50px,24px)}
.routes-landmark.is-low .routes-landmark-label{top:62px}
.routes-landmark.is-low::before{transform:rotate(26deg);transform-origin:left}

/* Always-on, full-pack force totals; colored connectors identify crowded neighboring packs. */
.routes-pack-labels{position:absolute;inset:0;z-index:2;pointer-events:none}
.routes-pack-total{position:absolute;display:block;height:18px;transform:scale(var(--marker-scale-x,var(--marker-scale,1)),var(--marker-scale,1));transform-origin:top left;pointer-events:none;white-space:nowrap;text-align:center;color:var(--pack-color);font:500 11px/16px Inter,Arial,sans-serif;letter-spacing:.02em;background:#071318ed;border:1px solid color-mix(in srgb,var(--pack-color) 50%,transparent);border-radius:4px;text-shadow:0 1px 2px #000;padding:0 4px}
.routes-pack-label-lines{position:absolute;inset:0;width:840px;height:560px;overflow:visible;z-index:0;pointer-events:none}
.routes-pack-label-lines line{stroke-width:1;stroke-opacity:.85;vector-effect:non-scaling-stroke}
.routes-enemy-label{color:var(--pack-color,#f4e6bf);border-color:var(--pack-color,#919773)}

/* A clean starting map; optional pack detail controls stay fixed in the top-left corner. */
.routes-label-tools{position:absolute;left:12px;top:12px;z-index:6;display:flex;flex-wrap:wrap;gap:5px;padding:5px;background:#0b171e;border:1px solid #758270;border-radius:9px;max-width:calc(100% - 24px)}
.routes-app .routes-label-tools button{font-size:10px!important;padding:6px 9px!important;color:#b7c6c2}
.routes-app .routes-label-tools button[aria-pressed=true]{color:#c5f2ff;border-color:#71bbd1;background:#203e49}
.routes-demo-banner{top:66px}
.routes-areas,.routes-pull-totals{position:absolute;inset:0;pointer-events:none}
.routes-areas{z-index:0}.routes-pull-totals{z-index:2}
.routes-area{position:absolute;pointer-events:none;transform:scale(var(--marker-scale-x,var(--marker-scale,1)),var(--marker-scale,1));transform-origin:top left;text-align:center;padding:3px 7px;color:#fff0c9;text-shadow:0 1px 3px #000,0 0 6px #000;font-family:'Cormorant Garamond',Georgia,serif;background:#121910c9;border-radius:7px;border-top:1px solid #f1dfa56b}
.routes-area strong{display:block;font-size:19px;line-height:20px;letter-spacing:.04em}
.routes-area span{display:block;font:500 11px/13px Inter,Arial,sans-serif;margin-top:3px;max-height:26px;overflow:hidden;color:#dfd6b9}
.routes-pull-total{position:absolute;pointer-events:none;transform:scale(var(--marker-scale-x,var(--marker-scale,1)),var(--marker-scale,1));transform-origin:top left;height:23px;padding:2px 6px;border:1px dashed var(--pull-color);border-radius:5px;color:var(--pull-color);font:600 12px/17px Inter,Arial,sans-serif;white-space:nowrap;text-align:center;background:#061318f2;text-shadow:0 1px 2px #000}

/* Compact MDT-style roster: row color follows the pull, right column is the running total. */
.routes-plan .routes-section-title{padding:15px 16px 10px}
.routes-builder-bar{padding:8px 10px;background:#20362b}
.routes-builder-bar strong{font-size:23px}
.routes-builder-bar .routes-eyebrow{margin-bottom:2px}
.routes-app #routes-add-pull{padding:9px 12px}
.routes-builder-hint{font-size:10px;line-height:1.5;margin:8px 17px}
.routes-quick-tools{margin-bottom:8px}
.routes-forces{padding:9px 10px;margin:9px 16px;color:#d3f7a9;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;background:#1b3527;border-color:#6e8d54}
#routes-pull-list>.routes-selection-note{margin:9px 16px 7px;line-height:1.3;font-size:11px;color:#e8d8ab}
.routes-pull-columns{display:flex;justify-content:space-between;margin:0 16px 5px;padding:0 7px;font:600 9px Inter,Arial,sans-serif;color:#a6b8ad;letter-spacing:.04em}
.routes-app button.routes-pull-item:not(.is-note){display:grid;grid-template-columns:20px minmax(0,1fr) 58px;align-items:center;gap:5px;min-height:38px;margin:0 16px 3px;padding:5px 7px!important;border:1px solid #617565;border-left:3px solid var(--pull-color,#55bddd);border-radius:4px;background:color-mix(in srgb,var(--pull-color,#55bddd) 34%,#14231e)!important;text-shadow:0 1px 2px #000}
.routes-app button.routes-pull-item:not(.is-note):hover{background:color-mix(in srgb,var(--pull-color,#55bddd) 48%,#14231e)!important;border-color:#c4c9a5}
.routes-app button.routes-pull-item:not(.is-note).is-selected{background:color-mix(in srgb,var(--pull-color,#55bddd) 48%,#14231e)!important;box-shadow:inset 0 0 0 1px #f0e6c789}
.routes-app button.routes-pull-item:not(.is-note).is-current{border-color:#f2daa3!important}
.routes-pull-item .routes-pull-number{margin:0;color:#f9dda2;font-size:12px;line-height:1}
.routes-pull-item.is-current>.routes-pull-number:after{content:none}
.routes-pull-item .routes-pull-roster{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:3px;margin:0}
.routes-pull-item .routes-roster-mob{position:relative;display:block;flex-shrink:0;width:27px;height:27px}
.routes-pull-item .routes-roster-face{width:27px;height:27px;border:1px solid #d5ddc6;box-shadow:0 1px 2px #0009}
.routes-pull-item .routes-roster-count{position:absolute;right:-1px;bottom:-2px;padding:0 1px;background:#07100de6;border-radius:3px;color:#fff2d2;font:700 9px/1.15 Inter,Arial,sans-serif}
.routes-pull-item .routes-pull-percent{text-align:right;color:#fff2d2;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;line-height:1.2}
.routes-pull-item .routes-pull-empty{font-size:10px;color:#c8d4c6}
@media(max-width:760px){.routes-app button.routes-pull-item:not(.is-note){min-height:44px}.routes-pull-item .routes-roster-mob,.routes-pull-item .routes-roster-face{width:29px;height:29px}}

/* Give compact pulls the sidebar space freed by the smaller controls. */
#routes-pull-list{max-height:clamp(260px,calc(100dvh - 390px),850px)}
@media(max-width:760px){#routes-pull-list{max-height:420px}}

/* The next pull belongs directly beneath the roster, where the player is looking. */
.routes-app button.routes-add-pull-bottom{display:flex;justify-content:center;align-items:center;gap:9px;width:calc(100% - 32px);min-height:48px;margin:8px 16px 0;padding:8px 12px;background:#30462c;border:1px solid #bca16b;color:#f4dfac;font-size:14px;box-shadow:inset 0 0 16px #c5af5012}
.routes-app button.routes-add-pull-bottom>span{font-size:28px;line-height:1;font-weight:400}
.routes-app button.routes-add-pull-bottom:hover{background:#425938;border-color:#e7d19a}
/* Fit the ultrawide frame to a gently wider floor; keep 16:9 and mobile layouts intact. */
@media(min-width:1400px) and (min-aspect-ratio:2/1){
 .routes-app{--routes-floor-ratio:1.68;--routes-floor-max-height:clamp(360px,calc(100dvh - 260px),1500px);--routes-sidebar-width:clamp(330px,15vw,440px);width:min(96vw,calc(var(--routes-floor-max-height)*var(--routes-floor-ratio) + var(--routes-sidebar-width) + 26px))}
 .routes-workspace{grid-template-columns:minmax(0,1fr) var(--routes-sidebar-width);gap:24px}
 .routes-app .routes-stage{height:auto;aspect-ratio:var(--routes-floor-ratio)}
 .routes-enemy-visual{transform:translate(-50%,-50%) scaleX(var(--map-unstretch-x,1))}
}
@media(min-width:1400px) and (min-aspect-ratio:3/1){.routes-app{--routes-floor-ratio:1.77}}

/* Keep selection and deletion as separate buttons; reveal the red corner control on intent. */
.routes-pull-row{position:relative;width:calc(100% - 32px);margin:0 16px 3px}
.routes-app .routes-pull-row>button.routes-pull-item:not(.is-note){width:100%;margin:0;padding-right:37px!important}
.routes-app button.routes-pull-remove{position:absolute;z-index:1;top:4px;right:4px;display:flex;align-items:center;justify-content:center;width:26px;height:29px;padding:0;background:#511c25;color:#ffc3c3;border:1px solid #e86570;border-radius:4px;font:700 21px/1 Arial,sans-serif;opacity:0;pointer-events:none;transition:opacity .12s,background .12s}
.routes-pull-row:hover>.routes-pull-remove,.routes-pull-row:focus-within>.routes-pull-remove{opacity:1;pointer-events:auto}
.routes-app button.routes-pull-remove:hover,.routes-app button.routes-pull-remove:focus-visible{background:#8a2638;border-color:#ffadb5;color:#fff}
@media(hover:none),(pointer:coarse){.routes-app button.routes-pull-remove{opacity:1;pointer-events:auto;width:32px;height:34px;top:5px}.routes-app .routes-pull-row>button.routes-pull-item:not(.is-note){min-height:44px;padding-right:43px!important}}
@media(prefers-reduced-motion:reduce){.routes-app button.routes-pull-remove{transition:none}}

/* Per-creature viewing windows: the model keeps its proportions and the popup keeps its footprint. */
.routes-portrait-frame{position:relative;width:min(100%,324px);aspect-ratio:54/25;margin-inline:auto;overflow:hidden;box-sizing:border-box;background:radial-gradient(ellipse at center,#7b8d7540,#101c20);border:1px solid #8e946d59;border-radius:8px}.routes-preview-portrait{position:absolute;display:block;max-width:none;margin:0;border:0;border-radius:0;pointer-events:none}.routes-portrait-unavailable{position:absolute;inset:0;display:grid;place-items:center;color:#aabbb5;font:11px Inter,Arial,sans-serif}

/* Routes-only scenic dungeon cards: artwork and caption occupy separate rows. */
.routes-dungeons .routes-dungeon{display:grid;grid-template-rows:minmax(0,1fr) auto;height:90px;border-color:#776f4b;border-radius:9px;background:#111c1b;overflow:hidden}
.routes-dungeons .routes-dungeon img{position:static;display:block;width:100%;height:100%;min-height:0;object-fit:cover;object-position:center 42%;opacity:1;filter:none}
.routes-dungeons .routes-dungeon:after{display:none}
.routes-dungeons .routes-dungeon span{position:static;display:block;min-width:0;padding:4px 7px;background:#172522;color:#f2e0b2;border-radius:0;line-height:1.1;text-shadow:0 1px 2px #000}
.routes-dungeons .routes-dungeon[aria-pressed=true]{border-color:#dfc27d;box-shadow:0 0 0 1px #d7b56566,0 0 15px #d7b56524}
.routes-dungeons .routes-dungeon[aria-pressed=true] span{background:#28352a;color:#ffe9af}
.routes-dungeons .routes-dungeon:hover{border-color:#efd490}
@media(min-width:2400px) and (min-aspect-ratio:2/1){.routes-dungeons .routes-dungeon{height:108px}}
@media(max-width:1400px){.routes-dungeons .routes-dungeon{height:88px}}
@media(max-width:760px){.routes-dungeons .routes-dungeon{height:84px}.routes-dungeons .routes-dungeon span{padding:4px 5px;min-height:32px;display:flex;align-items:center}}

/* One continuous atlas: the map is the workspace, with compact controls around it. */
.routes-sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.routes-app .routes-dungeons,.routes-app .routes-map-panel,.routes-app .routes-plan{border:0;border-radius:0;box-shadow:none;background:transparent;overflow:visible}
.routes-app .routes-map-header,.routes-app .routes-map-footer{background:transparent;border:0}
.routes-app .routes-stage{background:transparent;border:0;border-radius:0}
.routes-app .routes-area{background:#202015b8;border:0;border-radius:3px;box-shadow:none}
.routes-app .routes-label-tools{background:#102023e6;border:0;border-radius:4px;padding:3px}
.routes-app .routes-map-tools{border:0;border-radius:4px}
@media(min-width:761px){
 .routes-page>.site-footer{display:none}
 .routes-app{--routes-sidebar-width:clamp(300px,19vw,380px);width:100%;height:calc(100dvh - var(--routes-header-height,60px));min-height:540px;margin:0;padding:0;max-width:none;background:radial-gradient(ellipse at 45% 50%,#79623130,transparent 72%)}
 .routes-heading{position:absolute;left:20px;top:8px;width:136px;height:76px;margin:0;display:flex;flex-direction:column;justify-content:center;gap:2px;z-index:8}
 .routes-title{display:block}.routes-title>img{width:136px;height:50px;object-fit:contain}
 .routes-prototype{font-size:9px;padding:0;border:0;border-radius:0;background:transparent!important;color:#d7c79d}
 .routes-app .routes-dungeons{position:absolute;left:180px;right:calc(var(--routes-sidebar-width) + 22px);top:10px;height:74px;padding:0;margin:0;display:block;z-index:8}
 .routes-dungeons>.routes-section-title{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%)}
 .routes-app .routes-dungeon-list{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));height:100%;gap:8px;padding:0}
 .routes-app .routes-dungeons .routes-dungeon{height:74px;aspect-ratio:auto;border-radius:4px;border:1px solid #a69b6866;grid-template-rows:minmax(0,1fr) 22px;background:#111c1b}
 .routes-app .routes-dungeons .routes-dungeon span{padding:3px 5px;font-size:clamp(12px,.7vw,17px);background:#16201d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .routes-app .routes-dungeons .routes-dungeon[aria-pressed=true]{border-color:#e2c781;box-shadow:0 0 14px #e4c87733}
 .routes-app .routes-workspace{position:absolute;inset:92px 0 18px;display:grid;grid-template-columns:minmax(0,1fr) var(--routes-sidebar-width);gap:0;align-items:stretch}
 .routes-map-panel{position:relative;min-width:0;height:100%}
 .routes-map-header{position:absolute;inset:0 16px auto 20px;height:42px;padding:0;z-index:7}
 .routes-map-header h2{font-size:24px;text-shadow:0 2px 8px #000}
 .routes-map-options{gap:9px}.routes-map-options select{padding:5px;font-size:10px;border-radius:4px;background:#102023e6}
 .routes-map-options .routes-floor-label{display:flex;font-size:10px;color:#dbd3b5}
 .routes-app .routes-stage{position:absolute;inset:44px 0 28px;height:auto;aspect-ratio:auto}
 .routes-map-footer{position:absolute;inset:auto 16px 0 20px;min-height:26px;padding:0;font-size:9px}
 .routes-map-footer button{padding:5px 8px!important;font-size:9px!important}
 .routes-app .routes-plan{position:relative;min-height:0;height:calc(100% + 82px);margin-top:-82px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b59a5c55 transparent;padding:0 10px 16px;background:linear-gradient(90deg,transparent,#0e191bf2 12%,#0e191bf2 95%,transparent)}
 .routes-plan>.routes-section-title{padding-top:13px}.routes-plan h2{font-size:25px}
 .routes-plan .routes-builder-bar{border:0;border-radius:3px;background:#294039}
 .routes-plan .routes-builder-hint{line-height:1.6}
 .routes-plan #routes-pull-list{max-height:none;overflow:visible}
 .routes-plan .routes-forces{border:0;border-radius:3px}
 .routes-plan .routes-route-menu{border:0;border-radius:4px;box-shadow:none}
 .routes-plan .routes-editor-controls{border:0;border-radius:4px;background:#142522}
 .routes-plan .routes-pull-row{margin-bottom:4px}
 .routes-app .routes-attribution{position:absolute;bottom:1px;left:20px;margin:0;font-size:8px;text-align:left;z-index:7;color:#b4ac91}
 .routes-attribution a{color:#d4c38d}
}
@media(min-width:1400px) and (min-aspect-ratio:2/1){
 .routes-app{--routes-sidebar-width:clamp(330px,13vw,440px);width:100%}
 .routes-app .routes-dungeons{left:max(180px,calc((100vw - var(--routes-sidebar-width) - (100dvh - 190px)*1.68)/2));right:calc(var(--routes-sidebar-width) + 28px)}
 .routes-app .routes-dungeon-list{max-width:1800px;margin:0 auto}
 .routes-app .routes-workspace{gap:0;grid-template-columns:minmax(0,1fr) var(--routes-sidebar-width)}
 .routes-app .routes-stage{height:auto;aspect-ratio:auto}
}
@media(min-width:761px) and (max-width:1100px){
 .routes-app{--routes-sidebar-width:280px}
 .routes-app .routes-dungeons{left:140px;right:294px}
 .routes-heading{left:8px;width:118px}.routes-title>img{width:118px}
 .routes-app .routes-dungeon-list{gap:4px}.routes-app .routes-dungeons .routes-dungeon span{font-size:10px}
 .routes-map-options .routes-floor-label{font-size:0;gap:0}.routes-map-options{gap:4px}
}
@media(max-width:760px){
 .routes-app{width:100%;padding:10px 0 18px}
 .routes-heading{margin:0 12px 12px;align-items:center}.routes-title>img{width:120px;margin:0}
 .routes-prototype{font-size:9px;padding:5px 8px}
 .routes-dungeons{padding:0 10px!important;margin-bottom:10px!important}
 .routes-dungeons>.routes-section-title{padding:0 0 8px}.routes-dungeons .routes-section-title h2{font-size:20px}
 .routes-app .routes-dungeons .routes-dungeon{border-radius:4px;height:70px}
 .routes-dungeons .routes-dungeon span{font-size:11px!important}
 .routes-map-header{padding:10px 12px}.routes-map-header h2{font-size:22px}
 .routes-app .routes-stage{height:62dvh;min-height:330px;aspect-ratio:auto}
 .routes-workspace{gap:10px}.routes-map-footer{padding:7px 12px}
 .routes-plan{padding-bottom:12px;background:linear-gradient(transparent,#102023cc)!important}
 .routes-map-options .routes-floor-label:last-child{display:flex}.routes-map-options{gap:4px}
 .routes-map-options select{max-width:120px;padding:5px}
 .routes-label-tools{left:8px;top:8px}.routes-label-tools button{font-size:9px!important;padding:5px!important}
 .routes-attribution{padding:0 12px}
}

/* The surrounding parchment joins the floor instead of leaving an isolated rectangle.
   The mask cuts out the actual map, so its 75% alpha is never doubled. */
.routes-app{isolation:isolate}
.routes-app::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:url('/assets/routes/parchment.webp') repeat;background-size:640px 400px;opacity:.75;mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-size:100% 100%,var(--atlas-width,0px) var(--atlas-height,0px);mask-position:0 0,var(--atlas-left,0px) var(--atlas-top,0px);mask-repeat:no-repeat;mask-composite:exclude}
@media(max-width:760px){.routes-app::before{opacity:.75}.routes-app .routes-dungeons .routes-dungeon-list{padding:0;gap:6px}.routes-plan{background:linear-gradient(#102023eb,#102023eb)!important}.routes-prototype{background:#14231feb!important}}

/* Blend the old burnt paper perimeter into the atlas; markers are separate opaque layers. */
.routes-world canvas{mask-image:linear-gradient(to right,transparent,#000 3%,#000 97%,transparent),linear-gradient(to bottom,transparent,#000 5%,#000 95%,transparent);mask-composite:intersect}

@media(max-width:760px){.routes-app .routes-stage{height:clamp(260px,72vw,480px);min-height:0}.routes-map-options{flex-wrap:wrap;justify-content:flex-start}.routes-map-header{flex-wrap:wrap}.routes-map-footer>span{max-width:55%}}

.routes-app::before{mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0),linear-gradient(to right,transparent,#000 3%,#000 97%,transparent),linear-gradient(to bottom,transparent,#000 5%,#000 95%,transparent);mask-size:100% 100%,var(--atlas-clip-width,0px) var(--atlas-clip-height,0px),var(--atlas-width,0px) var(--atlas-height,0px),var(--atlas-width,0px) var(--atlas-height,0px);mask-position:0 0,var(--atlas-clip-left,0px) var(--atlas-clip-top,0px),var(--atlas-left,0px) var(--atlas-top,0px),var(--atlas-left,0px) var(--atlas-top,0px);mask-composite:exclude,intersect,intersect}

/* Mark the individual mob under the cursor above its linked-pack highlight. */
.routes-enemy:hover, .routes-enemy:focus-visible { z-index:6; }
.routes-enemy:hover .routes-enemy-visual::after,
.routes-enemy:focus-visible .routes-enemy-visual::after {
  content:"";
  position:absolute;
  inset:-3px;
  border:2px solid #ce86ff;
  border-radius:50%;
  box-shadow:0 0 0 1px #7929bd, 0 0 8px 3px #ae4cffb3;
  pointer-events:none;
}

/* Pull numbers are visual guides: every pointer passes through to the map. */
.routes-marker.is-pull-number{pointer-events:none;display:grid;place-items:center;cursor:default;box-sizing:border-box}
.routes-transfer-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.routes-app .routes-plan .routes-transfer-tiles button{min-height:74px;padding:14px 8px;border-radius:7px;font-size:15px;font-weight:800;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:1px solid #d8bb76;color:#fff1c6;background:linear-gradient(145deg,#66532b,#372b18);box-shadow:inset 0 1px 0 #ffe6a329,0 3px 12px #0003}
.routes-app .routes-plan .routes-transfer-tiles #routes-import{border-color:#77bfcf;color:#d2f9ff;background:linear-gradient(145deg,#285669,#152e3d)}
.routes-app .routes-plan .routes-transfer-tiles button>span{font-size:22px;line-height:1}
.routes-app .routes-plan .routes-transfer-tiles button:hover:not(:disabled){filter:brightness(1.18);box-shadow:0 0 16px #d9ba6533}
.routes-app .routes-plan .routes-transfer-tiles button:disabled{opacity:.48;cursor:not-allowed}
.routes-collection-heading{display:flex;align-items:center;justify-content:space-between;gap:6px}
.routes-collection-heading p{margin:8px 0}
.routes-plan #routes-rename{padding:6px 9px;border:1px solid #9c83b0;color:#e7d0ff;background:#352b45;border-radius:4px;white-space:nowrap}
.routes-plan #routes-rename[hidden]{display:none}
.routes-export-dialog input{box-sizing:border-box;width:100%;padding:12px;margin:8px 0 16px;border:1px solid #a99463;border-radius:5px;background:#102024;color:#f7e8be;font:inherit}
.routes-export-dialog::backdrop{background:#050d12aa;backdrop-filter:blur(3px)}
@media(min-width:761px){
 .routes-heading{width:272px;height:94px;top:0}
 .routes-title>img{width:272px;height:100px}
 .routes-app .routes-dungeons{left:316px;top:14px}
 .routes-app .routes-workspace{top:104px}
 .routes-app .routes-plan{height:calc(100% + 94px);margin-top:-94px}
}
@media(min-width:1400px) and (min-aspect-ratio:2/1){.routes-app .routes-dungeons{left:max(316px,calc((100vw - var(--routes-sidebar-width) - (100dvh - 190px)*1.68)/2))}}
@media(min-width:761px) and (max-width:1100px){
 .routes-heading{width:236px;left:8px}.routes-title>img{width:236px}
 .routes-app .routes-dungeons{left:264px;right:294px}
 .routes-app .routes-dungeon-list{display:flex;overflow-x:auto}
 .routes-app .routes-dungeons .routes-dungeon{flex:0 0 96px}
}
@media(max-width:760px){.routes-title>img{width:240px}.routes-transfer-tiles{margin:12px}.routes-collection-heading{padding:0 8px}}

/* Breathing room for the Routes artwork and its launch status. */
.routes-heading .routes-title{display:flex;align-items:center;gap:18px}
.routes-heading p.routes-coming-soon{font-family:'Cormorant Garamond',Georgia,serif;font-size:21px;font-weight:700;line-height:1.05;color:#f2dfad;text-shadow:0 2px 5px #000;white-space:nowrap}
.routes-coming-soon span{display:block;font:600 11px Inter,Arial,sans-serif;letter-spacing:.04em;margin-top:7px;color:#e1d6b8}
.routes-about{margin:16px 16px 0;font-size:11px;color:#d5dfd2;line-height:1.7}
.routes-about summary{cursor:pointer;color:#f0dca6;font-weight:700}
.routes-about p{margin:12px 0}
@media(min-width:761px){
 .routes-heading{left:32px;top:20px;width:450px;height:100px}
 .routes-title>img{height:auto;width:272px}
 .routes-app .routes-dungeons{left:510px;top:24px}
 .routes-app .routes-workspace{top:120px}
 .routes-app .routes-plan{height:calc(100% + 100px);margin-top:-100px}
 .routes-map-header{left:32px}
}
@media(min-width:1400px) and (min-aspect-ratio:2/1){.routes-app .routes-dungeons{left:max(510px,calc((100vw - var(--routes-sidebar-width) - (100dvh - 190px)*1.68)/2))}}
@media(min-width:761px) and (max-width:1500px){
 .routes-heading{left:24px;width:415px}.routes-title>img{width:236px}
 .routes-app .routes-dungeons{left:460px}
 .routes-app .routes-dungeon-list{display:flex;overflow-x:auto}
 .routes-app .routes-dungeons .routes-dungeon{flex:0 0 100px}
}
@media(max-width:760px){
 .routes-heading{margin:12px 20px 18px}
 .routes-heading .routes-title{width:100%;justify-content:space-between;gap:12px}
 .routes-title>img{width:clamp(155px,48vw,240px)}
 .routes-heading p.routes-coming-soon{font-size:18px}
 .routes-coming-soon span{font-size:10px}
}

/* Keep the dungeon title and visibility controls centered beneath the wordmark. */
.routes-brand{display:flex;flex-direction:column;align-items:center;gap:10px;flex:0 0 auto;width:272px;text-align:center}
.routes-brand>img{display:block;width:100%;height:auto;filter:drop-shadow(0 5px 16px #58c6e126)}
.routes-brand #routes-map-title{font-size:25px;line-height:1.15;text-shadow:0 2px 5px #000}
.routes-app .routes-brand .routes-label-tools{position:static;inset:auto;max-width:100%;justify-content:center;margin:0}
.routes-heading .routes-title{align-items:flex-start;gap:26px}
.routes-heading p.routes-coming-soon{font-size:34px;line-height:1.05;margin-top:28px;color:#ffe6a6;text-shadow:0 2px 5px #000,0 0 16px #efbd6040}
.routes-coming-soon span{font-size:18px;font-weight:700;letter-spacing:.06em;margin-top:10px;color:#f1dfb6}
@media(min-width:761px){
 .routes-heading{display:block;left:32px;top:20px;width:500px;height:auto}
 .routes-app .routes-dungeons{left:558px}
}
@media(min-width:1400px) and (min-aspect-ratio:2/1){.routes-app .routes-dungeons{left:max(558px,calc((100vw - var(--routes-sidebar-width) - (100dvh - 190px)*1.68)/2))}}
@media(min-width:761px) and (max-width:1500px){
 .routes-heading{left:24px;width:446px}.routes-brand{width:236px}
 .routes-heading .routes-title{gap:20px}.routes-heading p.routes-coming-soon{font-size:30px}
 .routes-app .routes-dungeons{left:496px}
}
@media(max-width:760px){
 .routes-brand{width:clamp(145px,48vw,240px);gap:8px}
 .routes-brand #routes-map-title{font-size:22px}
 .routes-heading .routes-title{gap:12px}
 .routes-heading p.routes-coming-soon{font-size:25px;margin-top:14px;white-space:normal}
 .routes-coming-soon span{font-size:14px;line-height:1.25;margin-top:8px}
}
